您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2013年01月14日 11:03

原创 学习什么开发语言比较好

1503 次浏览 读完需要≈ 15 分钟

内容目录

首先必须声明的是,这是一个“仁者见仁,智者见智”的问题,可能每个人都有自己不同的见解,而且我们还不能完全地判定谁对谁错。笔者认为,这个问题并没有所谓“百分之百正确”的答案,但是对于大多数初学者来说,在选择学习哪种开发语言时却常常有这样的疑惑:“我学习哪种开发语言比较好”、“什么开发语言适合做游戏应用”、“什么开发语言适合做网站”、“什么开发语言适合做手机软件”、“什么开发语言最热门”、“Java、PHP、C#哪个好”。在许多技术网站和问答网站上,也有许多类似的讨论,其中一个有趣的现象就是:多数开发人员都会潜意识地认为自己所使用的开发语言是相对而言更优秀的,这正应验了中国的那句古话“情人眼里出西施”。

既然许多初学者有这样的疑惑,作为一个以“编程开发技术分享”为核心的网站自然也应该对此稍作解析。不过必须指出的是:受笔者个人阅历、技术水平等因素所限,笔者在本文中所说的内容并不一定完全正确,也并不完全适用于所有人,在此抛砖引玉仅仅是给各位初学者提供一个参考。

在中国,目前相对主流的开发语言主要有Java、PHP、C#、C、C++。

俗话说的好,“学以致用”,我们学习的最终目的就是拿来使用,那么,上述编程开发语言主要用来做什么呢?

Java

Java是一种跨平台的开源的程序设计语言,其编写的程序几乎无需任何更改就可以在Windows、Linux、Mac等多种操作系统平台上运行。

Java具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人电脑、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

Java可以用来开发Web应用程序(即我们通常所说的“网站”)。其成熟性、稳定性、安全性、可维护性已久经考验,因此比较适合大型网站的开发。国内许多著名的大型网站均是使用Java开发的,例如:淘宝网、支付宝、腾讯网、中国建设银行、中国移动等。

Java也可以用于开发手机软件,由于其在移动领域仍然具备一定的跨平台优势,因此使用Java开发手机应用或手机游戏比较普遍。手机上许多常见的软件几乎都有对应的Java版本,例如:UC浏览器、移动手机阅读、手机QQ浏览器、中国移动飞信、手机QQ、新浪微博、酷狗叮咚等。

更重要的是,自2005年Google收购Android,并于2008年10月推出第一部Android智能手机以来,由于其自由开放的特性,预装Android系统的智能手机和平板电脑如雨后春笋般层出不穷。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。众所周知的是,在Android系统上开发手机应用使用的就是Java,这无疑给Java的移动应用开发领域注入了强大的生命力。

当然,Java也可以用来开发电脑软件,不过由于使用Java开发的电脑软件必须安装Java虚拟机才能运行,使得其在个人用户市场方面显得比较弱势,因此,使用Java开发软件主要是面向企业用户或个人用户中的特定群体。

使用Java开发的电脑软件有:EIOffice(永中Office)、JNode操作系统、合金战士Chrome(纯Java 3D游戏)、Eclipse、PL/SQL Developer、NetBeans、Jbuilder等。

综上所述,Java主要用于Web应用和手机应用的开发。

PHP

PHP是一种跨平台的开源的脚本语言,主要用于开发网站。它是一种简单灵活的编程语言,因此程序开发快,运行快,技术本身学习快。相对于其他语言,PHP编辑简单,实用性强,更适合希望从事网站开发的初学者。

在笔者看来,PHP是一种专为网站开发而生的编程语言(虽然它也包含了命令行运行接口,或者产生图形用户界面的程序)。基于其跨平台、运行快、学习相对简单、开发灵活便捷的特性,PHP在世界范围内的互联网上非常流行,根据W3Techs在2013年1月15日发布的《全球www网站技术报告》(英文:Usage of server-side programming languages for websites),全世界排名(Alexa排名)前100万名的网站中,PHP占据的市场份额为78.8%,排名全球第一。

PHP在全球范围内非常受到个人网站站长和中小型企业的青睐,在国内也不例外。由于PHP开源免费,资源占用低,而且与其密切相关的数据库MySQL、服务器软件Apache或nginx等也都是开源免费的,这使得架设一个PHP网站的成本非常低。许多互联网服务提供商(ISP)纷纷推出了非常廉价的PHP虚拟主机解决方案,用户只需要花费几十元到几千元不等即可打造一个属于自己的网站,甚至有些ISP还推出了有部分条件限制的完全免费的PHP虚拟主机。这进一步促使许多希望从事网站开发的初学者将PHP作为自己的入门首选编程语言。

此外,基于PHP开发的网站内容管理系统(CMS)和论坛系统也层出不穷。网站内容管理系统和论坛系统,顾名思义,即使用户不懂PHP,只需要简单的安装配置,或者设计一些特定的模板样式就可以完成一个网站或论坛的制作,并且具备的功能也非常强大。在所有的网站内容管理系统或论坛系统中,基于PHP开发的产品数量远远高于基于其他语言开发的。并且诞生了许多成熟稳定、高效安全、功能强大的知名产品,例如:

【Discuz!】(非常强大的论坛系统,大多数论坛都使用这个,支持搭建集成论坛(BBS)、社交网络(SNS)、门户(Portal)、群组(Group)、开放平台(Open Platform)应用于一体的Discuz!X一站式服务平台。)
【phpwind】(又一个非常知名的论坛系统,功能强大)
【WordPress】(全球最流行的博客型网站内容管理系统,功能非常强大,现在也支持搭建简单的门户信息型网站,并且有许多开发人员专为其开发插件,插件众多,使用方便。笔者的这个网站就是使用WordPress构建。)
【Joomla! CMS】
【KESION CMS(科汛)】
【Empire CMS(帝国)】
【verycms】
【DEDECMS(织梦)】
【phpcms】
【SuperSite】(可将论坛资源自动转换为门户网站)
【齐博 CMS】
【ShopEx】(国内市场占有率最高的网店系统)
【Zen Cart】(开源网店系统)
【ECShop】(开源网店系统)
【OSCOMMERCE】(开源网店系统)
……

在大型网站应用方面,PHP也有自己的用武之地,尤其是PHP4和PHP5完善了对“面向对象”的支持以来,PHP也逐渐成为一种新的趋势。诸如百度、新浪、腾讯、淘宝、Facebook、Twitter、WikiPedia(维基百科)等也纷纷采用PHP来构建自己的大型网站应用。再随着一系列的PHP开发框架的不断完善和成熟,标志着从个人网站到大型分布式应用系统的基于PHP开发的解决方案业已成熟。

综上所述,PHP主要用于Web应用的开发。

C#

提到C#(英文发音:C Sharp),就不得不提.NET Framework。.NET Framework(简称.NET或dotNet)是微软开发的一个运行于Windows操作系统的软件开发平台。它是一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,从而支持C#、VB、C++、Python等多种语言的开发。微软致力于将.NET打造为一个集敏捷软件开发、快速应用开发、平台无关性和网络透明化于一体的软件开发平台。而在微软的.NET战略中,最具代表性的核心开发语言非C#莫属。

C#是微软于2000年推出的一种基于.NET框架的、面向对象的高级编程语言,由Anders Hejlsberg(安德斯·海尔斯伯格,也是著名的“Delphi之父”)主持研发。

C#语言本身深受Java、C、C++的影响,因此它们在语法等方面具有很大的相似性;此外,C#在诞生之初就被考虑用来对抗甚至取代Sun公司的Java,语法等方面的相似性可以方便那些熟悉Java、C、C++等类似语言的开发人员快速转向C#。 C#吸收了Java、C、C++等语言许多优秀的特性或机制,又摒弃了这些语言中一些不够优雅的特性。

C#可用于开发软件应用以及Web应用。对于许多开发人员来说,一提到C#,可能就会自然而然地联想到“拖拽控件”。没错,“拖拽控件+事件驱动模型”是C#的一个令人印象深刻的标签。使用C#,再结合微软提供的可视化开发工具 (Visual Studio),你可以非常快速高效地开发一个软件或者网站。

由于其开发快速高效的特点,C#极大地降低了企业的人力资源和时间成本,因此C#在中小型企业中非常流行。但是,这并不代表C#不适用于开发大型软件应用或大型网站,在大型应用开发方面,也有诸如微软、新蛋中国、京东、凡客、中国移动(飞信)等许多企业选择C#,只不过在大型应用开发或高性能应用开发中,很少采用“拖拽控件”这种方式,而是采用和其他语言一样的自行编码方式。

简单的说,C#和其他语言一样可以自行编码开发,除此之外,它还可以借助于Visual Studio等可视化工具采用“拖拽控件+事件驱动模型”的方式进行更快速高效的程序开发(其实, 其他语言也可以实现这种开发方式,但一般都是第三方的开发工具实现,官方支持较少,开发工具不够统一,也不像C#这样具备先天优势,使用流行程度自然也没有C#这样风靡)。

在移动终端领域,C#也保持了其开发快速简单的特点,结合微软推出的基于DirectX的游戏开发环境XNA。配合微软的开发工具XNA Game Studio,C#可以非常方便快捷地开发出适用于Windows Mobile、Windows Phone、Xbox等平台的软件应用或游戏应用(第三方的Mono也有对应的工具可以将C#程序移植到iOS或Android系统上运行)。而且,众所周知的是,微软最近正在卖力地推广它的Windows Phone。

如果抛开一切非技术方面的因素,C# 可能是这个星球上有史以来最好的编程语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、LINQ、LAMBDA、版本控制、代码安全管理……你不可能在另外的一种语言中找到所有这些特性,而且微软给了Anders Hejlsberg的开发团队足够的自由,所以我们还能不断看到一些令人振奋的新特性被添加到C#中。但现实的情况是,非技术的因素往往更能决定一个产品的未来,尤其在计算机软件的历史上,技术卓越的产品,如OS/2、Mac OS、UNIX等,都败在了Windows那漂亮的外观下(这里仅指大众消费群体方面)。

就目前的状况而言,C#和Java一样,都必须运行在自己特定的运行环境上:Java依赖于Java虚拟机,C#依赖于.NET Framework。要运行Java或C#程序就必须先安装对应的运行环境,这既是它们的优点,也是它们的缺点。无论如何,这限制了它们在个人用户市场的充分发展,毕竟“为了使用一个几十KB或几MB的小程序就不得不先安装一个几十MB或几百MB的运行环境”并不怎么受用户欢迎。

此外,C#并不是一门开放源代码的语言,并且还只能运行在微软自己的Windows操作系统上;在移动终端领域也是如此,都是运行在自家的系统平台上(通过第三方的编译程序,例如Mono C#,可以让C#程序在Linux、Mac OS X等平台上运行)。当然,这是微软出于商业利益等多方面考虑的决定,不过,这或多或少限制了C#的发展。因此,在C#的活动场所,很少看到IBM、Oracle、谷歌、苹果等互联网或计算机技术巨头的身影,毕竟它们不会傻到为自己的竞争对手做嫁衣。而且,我们惊奇地发现,或许是由于添加了许多新特性的缘故,.NET Framework的不同版本之间并不完全兼容。举个例子,在默认情况下,基于.NET 2.0 的C#程序在.NET 4.0的运行平台上无法直接运行。微软的新策略是强烈建议程序在开发时使用的运行时版本下运行,这样可以保证最大的兼容性。这就使得用户想要运行基于不同.NET版本的C#程序,还得“家中常备”多个版本的.NET Framework。

不管怎么说,微软仍然在尽量地解决上述不足。我们也看到,除了Windows XP及更早的操作系统之外,微软开始在Windows操作系统中以功能组件的形式内置.NET Framework。比如:

Windows Server 2003 预装.NET 1.1
Windows Server 2003 R2 预装.NET 2.0
Windows Vista 预装.NET 3.0(包含.NET 2.0)
Windows Server 2008 预装.NET 3.0(包含.NET 2.0)
Windows 7 预装 .NET 3.5(包含.NET 2.0和 3.0)
Windows 8 预装 .NET 4.5和.NET 3.5(包含.NET 2.0和3.0)
Windows Server 2012 预装 .NET 4.5和.NET 3.5(包含.NET 2.0和3.0)
(注意,以上只是一般情况,并不排除家庭版、OEM版、专业版、企业版、旗舰版以及“破解版”、“纯净绿色版”之间存在差异。)

从上面的.NET预装情况,我们可以看出,为了解决.NET版本之间的兼容问题,微软在预装新版本的.NET时,都会包含进.NET 3.0或.NET 2.0等旧版本。不过,略显遗憾的是,微软预装的.NET Framework在默认情况下并没有启用(或没有完全启用)。

在C#发行之初,微软就已经向ECMA申请将C#作为一种标准。2001年12月,ECMA发布了ECMA-334 C#语言规范。但是正如微软.Net 框架部的产品经理Tony Goodhew说:“有些政府组织认可ISO认证的软件,而不承认 ECMA的认证软件。” 例如澳大利亚就规定,符合ISO规范可以自动符合澳大利亚本国规范。基于此,微软向ISO(国际标准化组织)提交了申请,并于2003年成为一个ISO标准(ISO/IEC 23270)。这使得C#更容易被一些国家或企业接受。

综上所述,无论是开发软件应用、Web应用还是手机应用,C#都是一支优秀的生力军。不过到目前为止,它仍然在很大程度上被约束在微软自己的平台上。从预装.NET、提交ISO标准等行为来看,微软正在尝试尽量解除对C#的部分束缚。 如果微软能够最终解决上面我们提到(或未提到)的这些不足,使C#更加开放,尤其是在所有的Windows操作系统中内置.NET Framework并且默认启用,那么我们就可以非常明确地说:C#的春天到了。

(未完待续)

  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论