开通博客后,一直都是转点别的朋友写的有意思的博文,今天我来写我在博客园的第一篇文章,说的不对的地方请你指正。希望本文能为一些准备学习编程的朋友有一点帮助。
开发桌面程序一直都是c语言,c++的天下,因为他们直接编译为机器码,直接在进程中加载运行,速度会很快,c++既有面向过程,也有面向对象,功能强大,但是很臃肿,很杂乱,了解java的朋友看了c++的代码可能会觉得恶心,c语言是面向过程最优秀的语言,简洁,高效,紧凑,比较适合开发底层的东西。
说说.net吧,其实执行效率和java几乎是没有区别的,本来希望c#是一个面向对象的c语言,可是他不是,他也像c++一样的庞大和臃肿,新的特性在不断增加,有些特性像玩具一样,这也是我为c#担心的一点,很多人说Java比c#难,c#门槛低,说这些话的人,我觉得他不仅不了解c#,他连java都不了解,稍微有点开发经验的人,请告诉我,一个软件项目可能通过拖拽的方式开发出来吗,就算一个最小的企业网站,也是美工设计,写html,客户端js交互,服务端的代码也得一行一行的写,其实根据我的经验,.net其实要比java难学一点儿,因为.NET的架构相当庞大,java相对来说更紧凑,当然语法上的区别是很小的,因为c#的设计参照了java。如果你要学.NET的话,我分享点儿我的经验,在asp.net这一块儿不要陷的太深,对一些像玩具一样的登录控件,AJAX控件,数据源等等这些东西你可以不理他,对于迭代控件的话掌握Repeater就好,然后对他的执行原理有个基本的掌握,因为你可能会遇到一个变态的非得使用ASP.NET的上司,或者需要维护一个ASP.NET的项目,要是新开发一个项目的话,一定要使用ASP.NET MVC。他拥有web最纯正的血统,而且开发效率很高。你会发现MVC方式比那些所谓的为了提高开发效率的控件效率更高。这就是微软做什么事都把排场,大,牛x看的比较重导致的。
再说说java,在j2me方面已经死掉了,在j2se桌面应用方面从速度,性能来考虑的话也不是c++的对手,其实java和.NET的原理是一样的,都是编译为中间语言,然后在虚拟机上即时编译执行,在速度方面是没有区别的,在ui方面因为.NET有windows,所以要优于java,但是两位还是慢。java是面向对象里边最优秀的语言,并不是说他比c#好,而是他是全世界第一个创造出来这么优雅的语言,当然语言再优雅,思想上的错误也会导致他的失败,比如web方面,java在web方面其实最底层的东西很简单,很紧凑,很好。但是j2ee的思想不是很好,还有ejb的失败,导致出了很多用java程序员来说很优秀的框架,框架很多,我承认,但是是否优秀,我觉得得打个问号了。很多框架臃肿,庞杂,我不知道这是为了让java显得更加复杂,更加高深莫测呢,还是这些人比较脑残,希望你用四根筷子吃饭。比如淘宝为什么没用任何开源框架,因为太臃肿,比较死,难于扩展和维护,所以他们选择了自己开发,java的复杂其实是人为造成的。我最讨厌java中经常提到的企业级这三个字,我到现在都不明白这三个字的意思。当然j2ee新的架构进步了很多。Android的出现迎来了java语言一个新的高潮。虽然说他只是使用了java语言,但是对我们来说,他还是java。
最后是php,php是一种简单高效的解释型脚本语言,语法功能相对简单,高并发安全性方面相对比较弱,主要用于开发web项目,当然你说他也可以开发桌面,不好意思,我还没见过,你要非得开发一个,那么我祝福你。
总结一下吧,.net,java,php大多用来开发web项目,当然.net和java也可开发桌面程序,尤其.net的wpf的出现,让.net在桌面方面增色不少。语言只是一个工具而已,主要还是看你自己的喜好,和适应的场景,说白了,不管是.net,java,php,无非就是运行那么一霎那,然后输出一段html,你要是希望开发效率比较高,开发环境比较舒服,语法上更先进,那么你选择.NET,比如定义一个线程,你可以在当前的类中添加一个方法,方法中是线程要执行的代码,用java的话你要写一个类,实现个借口或继承个父类才能完成,如果你比较喜欢原始一点儿的方式,淳朴一点的编码方式,而且你也乐意多写点儿代码,愿意使用那种相比vs来说相对简陋的开发环境,那你选择java吧,还是那句话,语言只是个工具,主要看你自己的喜好,最主要的区别是windows是收费的,sqlserver是收费的,java可以使用免费的linux和免费的jboss和免费的mysql,但是你需要的是一个相对高性能的数据存储环境的话,那么oracle的价格所谓天价,而且那些收费的java容器价格也很高。php的话,只要你开发的不是一个对数据处理的安全有很高要求的比如银行或金融系统的项目,那么php是个很好的选择,他可以用完全免费的工具跑起来。