程序员应该选择java还是c#

程序员应该选择java还是c#,第1张

java还是c#?其实这不应该是我们真正的主题,而且入了行的也很少会java还是c#这么比,但初学的,java和c#往往就代表了两大流派,java代替了j2ee,c#代替了net,ok,没有关系,这么作为title,不影响我们说事。如果从语言的角度上来讲,c#毫无疑问胜出,易用、门槛低、优雅、较为简洁。但java和c#的语言特性是相似的。在很多类的命名上,它们都如出一辙:

//javaSystemoutprintln("java比C#强!j-a-v-a!");

//C#SystemWriteLine("你没看到#是4个+吗,我比c++还强2个+,你就歇菜吧!");

c#出现的时间比java晚,所以自然吸收、借鉴,同时又有它的创新,比如很早就支持lamda表达式、比如event和委托,比如var,比如linq。但如果从面向接口来讲,java同样可以做到event和listener,只不过对象引用的传递比较直接。而Net的类库和jdk则各有千秋。

如果从应用的角度来看,javaee和Net体系几乎都涵盖了主流的开发方向:桌面、Web、服务端、数据库、网络、移动端、中间件。哪个方向,哪个更强?这个留给读者自己体会吧。

微软给Net一个宇宙最强的IDE,也给了各个方向统一而平滑的编程体验,不得不说,微软的上手要容易的多。

而java则一开始就和开源分不开,多如牛毛的框架、引擎、包,blabla,用java开发,程序员要懂得东西更多一些。应为你大部分情况下得自己整合。但整合的好了就是很强大的,比如SSH。

在近几年很热的大数据和云计算领域,hadoop、spark、tez、leveldb、mongodb、mariadb、hive、hbase,还有oracle,都各自在自己不同的层面发力,大部分的这些都对java是极为友好的。

很多java程序员,都觉得搞net开发的,就是拖拖控件而已,其实我可以告诉你,说出这种话的java程序员一般都还比较小白,如果你是搞net的,你也可以说搞java的都是拷贝别人的开源软件的代码,然后改改而已。

当然改改没什么问题,谁都不喜欢重复造轮子,比如,google里面也并非全部是创新,经常”拿“别人的东西自己改吧改吧,淘宝就很不用说了,招了一些能改c、会点编译的程序员,经常拿各种开源框架开刀,然后表明是自己的东西。比如双11的那个问题。

当然不是说淘宝找的人有问题,而是这个企业的文化就是销售和广告文化,后来的google也如此。

回到正题,wpf和silverlight(虽然已经EOL)中最大的创新莫过于xaml技术,如果你认为wpf只是winform的简单升级,或者说你只会在wpf中拖控件,说明你还是一个非常初级的net程序员,不管你工资上w没有,或者你已经是项目经理了。

xaml天生就是为mvvm模型而生,这一点,搞前端的同学,应该熟悉,即使你不懂wpf,js和html怎么做mvvm,你也应该体会过它的好处。

wpf中在xaml中布局控件,并支持INotifyPropertyChanged接口,可以非常容易的实现界面和数据分离,做出一个mvvm模型出来。

说到标记性语言,我们看看jsp的jstl、struts2的tags,还有aspnetmvc3之后的razor引擎:

jstl和aspx的标签类似,自由、强大,可以很容易的穿插交织到html标记中;

struts的标签就是个另类,我个人反感这种既不遵循主流标准也不简洁的东西,虽然好多人会说好用,那是个习惯问题,我这么说,不是说这东西难学难掌握,只是比较一下和razor引擎中的标签语法,弱爆了。

razor,强大、简洁、优雅。

你肯定觉得我是微软net的粉丝,其实我想告诉你的是,最强的标签语言只有两种,html和xml,穿插动态语句到服务端页面上,然后刷出html,从来都不是好的做法,因为不只你一个人写代码,后面可能会有其他人维护这个页面,本来这是需要由webdesigner来做的事情,但是有了语句,他的维护成本就很高。

规范的页面开发,程序员是不会染指一个css、style的,动态语言在aspx、view、jsp上面应该尽量少用。否则你不如使用php和asp。这一点,你会在工作中会深有体会的。

青春的你,怎么选择?

看看现在的招聘吧,动不动就是

精通j2ee,精通struts、springmvc、hibernate或者mybatis,对mysql、oracle有深入理解,精通webservice、精通多线程,能处理高并发,有的还得懂jvm,最好有hadoop等开发经验。最后再来个211以上。

net方面呢?

精通Net,精通mvc3-5、精通wpf、wcf、多线程,mssql等等等等。

我现在处于离职状态,所以每天收到猎聘上的一些推荐,都很郁闷,因为没有一项是我精通的。

但是不妨碍我在2012年实习中,就拿到了13K的月薪,比一些正式员工可能还要高。

而且,仔细想想,代码中经常讲到要容易维护、这个设计模式、那个AOP,这个大并发,那个高性能,我个人没有见到容易维护的代码。学习一个新公司的一套模式,一套老产品,比学习一门新技术需要的时间长得多,你会发现,99%的情况下,你最需要的,不是什么代码,模式,而是对产品的理解、对业务的理解,很多情况下,除非太菜太小白,大家的代码都差不多,谁有时间重构代码?程序员又为何加班?

这是行情,一个项目接一个项目,公司需要挣钱的,这是大部分公司的现状。

一些疑问

访问数据库,随便找个高效的connector或者driver就行了,一般提供数据的厂家,谁不提供connector?ORM是很必要,但是追求性能和反框架泛滥的公司不在乎ORM带来的那点便利性,用一个jdbc+sql照样写稳定高效的数据访问。

做web前端,真的需要自己写一个框架出来?真正需要这种开发的项目有几个呢?jQuery和d3,原生的javascript就够了,你写的也许不叫框架,最多就是个wrapper。

数据库的唯一性索引、聚合索引、辅助索引都没搞清楚,就开始搞hadoop、spark、hbase、mongodb,用人单位也一再这么要求的,你的项目中真的有那么大的数据量?在传统的rdbms下解决不了?

你开始知道轮子的概念了,并且知道不要重复造轮子。可是你快不是程序员了,而是框架员了。

所以,回到java还是c#,这个问题,要比我遇到的技术分裂要简单的多。

我的意见是,忘记java或者c#的对立,如果要做一个开心、有自我追求、同时满足就业的程序员,你需要重视以下方面:

1函数调用栈,这个很多高级程序员只知其然不知其所以然。你可以不懂的汇编、函数入口、返回地址、寄存器,但你需要调试,你得深刻理解函数调用栈,无论是在dev模式调试struts开发的jsp页面,还是debug模式调试aspx页面,你得看懂调用栈的信息;

2基本的数据结构和算法,数据库中索引的组织方式,是B+树还是Hash,还是堆,你的公司有Web、桌面、移动用户,有社区,有产品,你可能要做个推荐什么的,或者研究个社交图谱什么的,这门技术可以帮助你。

3一门动态语言。lua、python、javascript,都可以,你需要随时和系统进行交互,或者实现一个原型,或者用程序的方式来画点界面、数据图什么,它们够轻量、够快捷

4一门重量级语言。比如java或者c#。你靠它们吃饭。

5理解跨平台的含义。掌握一些基本的跨平台技术,比如xml、c、html、json。

6重视网络编程的练习和理解,在你使用URLConnection或者MySqlConnection或者WebRequest的时候,你是否理解它们的生命周期和底层实现,用什么语言无所谓,你要记住tcp/ip协议和>

7找一个顺手的IDE,我个人不是CLI控,虽然不得不CLI,一个顺手的IDE真的可以提高生产效率。搞Net推荐vs+resharper,搞java推荐intellijIDEA

8关注一些热门而经典的领域,比如机器学习、图像处理、数据挖掘,即使已经有了mahout,不代表你不需要了解这些领域,你可能永远不会在工作中使用它们,但它们的思想值得你拥有,因为你选择了做程序员,而不是哪个公司的程序员。

剩下的,就是你的解决问题的思路和你实现的硬功夫(编码能力),我相信,很多看这篇文章的人,不能够轻易写出一个ftp服务器,不能够不参考、不联网查询资料写出一个简单的快速排序,也不能够轻易写出一段通用分页SQL,但他们依然可以正常工作。

所以外面的功夫容易忘记,有网络就能拾起,内功才是入骨的东西

Java属于面向对象编程语言,不但拥有C语言的各种优势,还去其C语言中不易理解的继承、指针等概念,所以Java语言具有强大和简单易用两大特性。北大青鸟认为Java语言作为静态面向对象语言,很好的实现了面向对象的理论,程序员在使用过程中能够以简单的思维编写出复杂的编程。

很多人都有一个疑惑,学习Java编程就只能做Java程序员吗?其实不然,学习Java编程的就业方法是非常广阔的,昌平java培训认为最好提前做好准备,做好自己的职业规划。

做Java程序员的就业方向

Java编程语言的应用范围是非常广的,比如一些大型系统方面,还有在web方面和游戏方面的使用。B/S系统方面也是应用广泛,主要使用在浏览器的访问上。

作为新手,首先从初级程序员开始,然后在工作中不断的提升自己,让自己达到一个中级程序员的水平,最重要的是能够独立完成项目,这样想要成为高级程序员就指日可待了。在学习过程中,技术不仅仅局限于Java编程,还需要掌握其他编程语言和数据库的使用等,这样才能成为真正的高级工程师。

方向一:项目管理和分析

很多人在学习Java编程之后都想从软件开发方面发展,但是在开发方面的工作并不是很多,昌平北京IT培训建议可以从项目管理、需求分析方面进行发展。随着自己技术水平的不断提升,能够发展成为专业的系统架构师,一般情况下能做系统架构师都是非常厉害的人,不仅需要掌握技术,还需要具备数据库和逻辑思维等知识。

方向二:产品经理

其实很多初级Java程序员都可以考虑转为产品经验,产品经理不仅需要掌握专业的技术,还需要掌握产品的策划和规划,深入了解项目管理知识,最重要的是还需要具备较强的沟通能力。

除了这些方面,还可以从运维、营销、技术等方面进行发展,这些方向的需求量也是非常多的,如果觉得自己不适合长期做软件开发工作,那么电脑培训建议可以从这些方向进行发展,这些岗位的发展也是非常不错的。

随着互联网的不断发展,java开发成为了众多开发工程师使用的主流编程开发语言。今天,java课程培训机构就一起来了解一下,在java程序员面试过程中,有哪些比较常见的技术面试问题需要我们了解。

1、什么是线程

线程是 *** 作系统能够进行运算调度的小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。

2、线程和进程有什么区别

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存用来存储本地数据。

3、如何在Java中实现线程

两种方式:javalangThread类的实例就是一个线程但是它需要调用javalangRunnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承javalangThread类或者直接调用Runnable接口来重写run()方法实现线程。

4、有哪些不同的线程生命周期

当我们在Java程序中新建一个线程时,它的状态是New。当我们调用线程的start()方法时,状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CPU时间并且讲它们的状态改变为Running。其他的线程状态还有Waiting,Blocked和Dead。

5、你对线程优先级的理解是什么

每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和 *** 作系统相关的(OSdependent)。我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表低优先级,10代表高优先级。

6、什么是死锁(Deadlock)如何分析和避免死锁

死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的资源。

分析死锁,我们需要查看Java应用程序的线程转储。我们需要找出那些状态为BLOCKED的线程和他们等待的资源。每个资源都有一个唯一的id,用这个id我们可以找出哪些线程已经拥有了它的对象锁。

要成为JAVA方面工作的最低要求就要了解一些方法

java 学习步骤-_-

J2EE又包括许多组件,如JSP,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。

那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。然后你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?还好,SUN提供了Javabean可以把你的JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看JavaMail了。

好了,对Java和J2EE有了一些基本概念之后,你就应该编一些程序了,千万不要纸上谈兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用劳您老大架再亲自把它 再输一遍吧,再说直接复制还不用怕出错,何乐而不为呢!还有就是要经常上一些好的Java编程文章,有好的文章要Cut下来,有问题尽管问,只要问题不是太傻,一般高手都会回答你的。下面介绍几个好的Java方面的编程网站:

CSDN论坛 >

做android的有些年,个人感觉JAVA确实年青人玩的东西。里面的东西丰富,但不深傲。很多都是类似新产品新东西。只要学会,会用,有点技巧就可以了。对于经验的要求不高。而C、C++就不一样。就那点东西,却需要很深的功底经验,若是年青人,基本都是瞎折腾,碰运气的来解决问题。没有思想,概念,架构。然后下次出现BUG,再有问题,只要能解决,无所不用及其。后期带来的麻烦根本就不会思考太多,代码质量更是不用说。当然,中国目前的老板也是这样,有东西就好。粗技烂造吧。有个东西就行了。却不懂得系统化,理念化。目的是能留在自己职位,拿自己想要的工资。不会有做为一个技术员该有的工匠精神。

自学Java开发并不是一件容易的事情,但是如果你很好的简历自己对Java的兴趣并且持之以恒的坚持下去,制定正确的Java学习路线,自学Java开发也不是十分困难的事情,我们必须有规划有计划的一步一步的执行。

其实我有过一段自学java开发的经历,我一开始看了一个星期左右的书,然后我把书扔在了一边,看不进去啊!我自认为自己的脑袋瓜还算可以,但是我看不进去。这也是初学者的通病,有好多读者也跟我说:武哥,我书也看了,可是感觉还是不会。事实上,我也是这么过来的。

所以就开始看视频,找一个好的Java学习视频从头看一遍并做好笔记,做好笔记很重要,原因主要是:

第一:想法只是昙花,文字才是永恒。

第二:IT人需要有个自己的品牌。

人都有惰性,如果你做一件事情,一直看不到明显的效果,你就会慢慢懈怠,慢慢怀疑自己到底对不对,适不适合。编程也一样,为什么我不建议初学者上来就抱着别人跟你推荐的所谓的经典书籍去啃什么《ThinkinginJava》、《EffectiveJava》等等,你啃的了吗你啃不了是对的,否则你就是神了。你啃不了,你就会放弃。我就很讨厌那些贴吧论坛里一上来就给一些初学者推荐很多经典书籍的人,显得自己很博学很牛逼的样子,其实没什么用。

包括Java并发、SSH、SSM框架、组件等等,我全部看的视频。当然,一些源码我是自己啃的。当你有了基础,上路了,你再去看书,不仅仅就是看懂看不懂的问题了,那是真正的提升。

但是这些还不够,你学了这些东西不能派上用场。必须要项目实战,网上有很多免费的实战视频,但是我觉得不好,因为那时候我已经有基础了,我知道如何去选择我的学习资源了,我在这还是要强调一点,不要吝啬给自己投资,我当时也买了好几个项目实战视频跟着学习,提升很多实战经验。我在前面一篇文章:同样是程序员,为什么别人比你更优秀中第一点就提到了这个。

当然了,昌平北大青鸟官网也有一些Java免费培训的视频,不用像我当初那样去花钱了,我那时候自学,就没有遇到像我这样懂得分享的人。所以缺视频资源的读者,可以昌平北大青鸟Java培训官网去找一找。

自学Java开发一门技术,首先要会用,要先建立兴趣,再想着去提升,去内化,否则,你坚持不下去。

自学Java开发一门技术,要有规划,最起码要知道你接下来要学哪些东西,不能走一步看一步。有了规划就得有计划,有了计划,就得有执行。

学习的过程中,永远不要吝啬投资自己,该花钱就花钱,现在是知识付费时代,像很多教学网站上,里面一些课程还是挺不错的。花钱提升自己,本来就没毛病。

做任何事,离开了坚持二字,那都是扯淡。如果随随便便就能成功的,就能做好的事情,是个人都可以的话,那你也没有什么竞争力。有句话说的好:小聪明不如傻坚持。

不懂就要多问,不管我们是什么样的人,不管问谁,不管别人比自己牛逼或者弱,都得放低自己的姿态,虚心一点。如果哪天我们有点影响力了,那么尽量以一个低姿态去多帮助那些初学者,帮助更多的人,因为我们也是那样过来的,比自己牛逼的人,满大街都是。人,不要膨胀,要懂得韬光养晦。

零基础自学Java开发中途遇到一些困难也不要轻易的放弃可能是方法或者方向错了,如果你确实想要学习Java开发可以选择报班,报班学习是一种比较高效的学习策略,或者你也可以填写下面的表单获得Java培训班免费试听课程,可以求助昌平北大青鸟Java培训讲师为你制定一下Java学习路线,可能对于你学习Java开发会有所帮助。

以上就是关于程序员应该选择java还是c#全部的内容,包括:程序员应该选择java还是c#、你了解Java编程吗、java课程培训机构分享java编程程序员技术面试常见面试等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9307635.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存