想自学一种编程语言,各种编程语言都有什么区别?

 

C:1973年的贝尔实验室中,Ken Thompson和Dennis Ritchie在做UNIX系统内核移植开发时,感觉使用汇编语言很难实现,于是使用BCPL开发,并对其改进推出了B语言,但B语言开发的UNIX内核无法达到预期要求,而后又在此之上开发了C语言,并用C语言重新编写了UNIX内核。此外,Linux和Windows内核也是用C语言编写的。
  • 应用领域:操作系统、编译器、嵌入式硬件、网络服务器;
  • 优势:接近底层,跨平台和可移植性良好;简洁小巧,灵活可靠,运行效率高;几乎所有编程语言都脱胎于C,直接或间接借鉴了C的概念,掌握C语言有助于了解其他语言;
  • 弊端:开发效率低,周期长;
C++:1979年4月,Bjarne Stroustrup在贝尔实验室开始分析UNIX内核,设法将其分布到由局域网连接的计算机网络上。由于缺少现有工具,为了便于描述内核的模块化和通信模式,Bjarne Stroustrup开始设计一门新语言,设计目标是既能保持Simula的程序组织功能,又能兼顾C语言的效率和灵活性。1979年10月,一个名为Cpre的预处理程序诞生,它是一个带类的C (C with Classes)。1983年,C with Classes改名为C++,并开始引入虚函数、重载、引用等新特性。1998年,C++标准委员会发布了C++的首个国际标准——ISO/IEC 14882:1998,简称C++98。C++仍处于不断发展中,特性越来越复杂,至今经历了C++11/14/17等标准,C++20也即将到来,C++11及其之后的标准被称为Modern C++。
  • 应用领域:操作系统、虚拟机、浏览器、数据库、编译器、桌面应用、图像处理、流媒体、高频交易、区块链、军工软件、搜索系统、游戏引擎、服务器、虚拟现实、其他语言的库;
  • 优势:C++几乎可以使用C的所有特性,并提供了大量新特性;C++保留了C的优点,灵活可靠,运行效率高,又有比C更高的开发效率;掌握C++能更深入地了解Java、Python的内存管理机制,并能快速上手其他编程语言;
  • 弊端:规模庞大,蕴含多种编程范式,学习曲线陡峭;C++几乎提供了解决一切问题的组件,但几乎没有人能完全掌握,而只需要选用一部分子集;C++尝试适用所有场景,反而导致对大部分场景的支持都不够突出;必须兼容旧标准,历史包袱重;
  • 如果大家对C/C++感兴趣的话,可以加一下我们的学习交流Q群:637  935  295,免费领取一套学习资料和视频课程哟~
C#:1995年,Sun发布Java,Java良好的跨平台性使其逐渐成为企业开发的首选。为了对抗Java,微软公司的首席架构师Anders Hejlsberg着手研发了一种名为Cool (C-like Object Oriented Language)的编程语言,并于2000年在PDC (微软专业开发者会议)上以C# (C Sharp)的名称公布。
  • 应用领域:桌面应用、游戏客户端;
  • 优势:全面集成.Net库,文档丰富,易于上手;
  • 弊端:捆绑微软,国内不如Java应用范围广泛;
Objective-C:1983年,Stepstone公司的Brad Cox和Tom Love发明了Objective-C,它遵循ANSI C的标准,基于Smalltalk改进,在C的基础上加入了面向对象特性。1985年,被赶出苹果的Steve Jobs创办了NeXT公司,NeXT获得了使用Objective-C来开发NeXTSTEP Toolkit的授权,这个工具包就是Cocoa的前身。1996年,苹果收购NeXT,Steve Jobs重回苹果,并使用Objective-C重新设计了Mac OS。2007,iPhone问世,3G/4G通信技术日趋成熟,2011年正式进入移动互联网时代,Objective-C火爆一时。
  • 应用领域:iOS、Mac OS开发;
  • 优势:开发苹果程序的首选;能与C/C++/Swift混合编程;
  • 弊端:使用范围有限,只能用于开发苹果的程序;2014年WWDC(苹果全球开发者大会)上,苹果发布了新的编程语言Swift,Objective-C未来可能被Swift取代;
Java:1991年,Sun公司为了开拓消费类电子产品市场,开始启动由James Gosling领导的Green项目。James Gosling在研发过程中发现,消费类电子产品要求高可靠、费用低、标准化、使用简单,用户不关心CPU型号,也不欣赏昂贵的RISC处理器。为了使整个系统与平台无关,项目从改写C编译器开始着手。在此期间,小组发现C语言经常被开发者错误使用,C缺少垃圾回收、多线程、移植安全性、分布程序设计等特性。最终Sun的创始人Bill Joy决定开发一种集C和Mesa搭成的新语言,提议在C的基础上开发一种面向对象的环境。起初James Gosling尝试修改和拓展C的功能,并称为C--,后来他注意到办公室窗外的一棵橡树 (oak),于是决定将新语言命名为Oak。James Gosling的设计中,编译后产生的代码运行在操作系统的虚拟机解释器上,从而实现平台无关性和可移植性。项目起初用于机顶盒领域,但由于市场不成熟,初战告败。1994年,团队决定将技术用于万维网,正好赶上了互联网时代的浪潮。由于Oak的商标已经被注册过了,在命名征集会上,排名第一的名字Silk被James Gosling强烈反对,排名第二和第三的仍有商标问题,最终排名第四的Java得以采用。Java是印度尼西亚爪哇岛的英文名称,爪哇岛盛产咖啡,因此Java中的许多类库与咖啡豆有关,如JavaBeans、NetBeans、ObjectBeans,Java的logo就是一杯冒着热气的咖啡。1995年5月23日,Java正式发布。1996年1月,JDK1.0诞生。2010年10月24日,Oracle以74亿美元收购了Sun Microsystems。ASF (Apache软件基金会)呼吁JCP (制定Java规范的组织)反对Oracle提出的Java 7和Java 8路线图,除了Google无人响应。ASF和Google反对的理由与技术无关,而是与Oracle的应用范围和许可授权限制有关。2010年11月,ASF退出了JCP。
  • 应用领域:Android、Web应用、服务器、大数据、企业应用;
  • 优势:易于学习,开发效率高,市场需求旺盛;垃圾回收机制安全可靠,不容易出现问题;依赖于JVM,跨平台性良好;库丰富,并在不断发展,社区资料完善;
  • 弊端:灵活性差,不能随心所欲地控制内存;依赖于JVM,运行效率受其影响;除了语言本身外需要学习过多框架;
JavaScript:互联网开始流行时,网页变得越来越复杂,然而大部分因特网用户还只能通过 28.8 kbit/s 的调制解调器连接到网络。用户填完一个表单,点击提交按钮,等待了30秒的服务器处理后,看到的可能只是某个地方填错了的提示。为了解决这个问题,Netspace公司计划开发一种能在客户端完成基本验证的技术,当时Brendan Eich正着手为将于1995年发行的Netscape Navigator 2.0开发一个名为LiveScript的脚本语言,为了赶在发布日期前完成,Netscape与Sun成立了一个开发联盟。此时Java正被媒体热炒,Netscape为了蹭Java的热度,临时将LiveScript改名为了JavaScript。随着Node.js和React的出现,JavaScript的应用领域也越来越广泛。
  • 应用领域:Web前端、后端、移动应用、内嵌脚本语言;
  • 优势:解释型语言,反应快速,可立即运行;依赖于浏览器,与操作系统环境无关;
  • 弊端:代码在用户计算机上执行,可能被恶意活动利用,存在安全性问题;在不同浏览器上解释方式不同,可预测性差;
PHP:PHP继承自一个名为PHP/FI的老工程,PHP/FI由Rasmus Lerdorf于1995年创建,最初只是一套用来跟踪访问他主页的人们的信息的Perl脚本,这套脚本名为Personal Home Page Tools。随着更多功能需求的增加,Rasmus写了一个更大的C语言的实现,它可以访问数据库,可以让用户开发简单的动态Web程序,并发布了源代码,以便每个人都可以使用并改进。最初PHP指的是Personal Home Page,如今PHP的含义是PHP: Hypertext Preprocessor。
  • 应用领域:Web后端、移动应用后端;
  • 优势:易上手且功能丰富,开发效率高;开源,社区庞大活跃,解决方案充足;跨平台性良好;与各类数据库、文件系统协作顺畅;
  • 弊端:学习门槛低,存在大量经验不足的开发者的开源代码;大量古老的开源代码仍被使用;命名规范混乱;
Python:1989年圣诞节期间,在荷兰首都Amsterdam的Guido von Rossum为了打发时间,决定开发一个新的脚本解释程序,做为ABC语言的一种继承。Guido是喜剧团体Monty Python的爱好者,因此将电视剧 《Monty Python's Flying Circus》名字中的Python作为了新语言的名字。1991年,第一个Python编译器诞生,它由C语言实现,并能调用C的库文件。由于大量深度学习框架被封装为Python库,伴随人工智能的兴起,加上自身简单易学的特点,Python成为了当下最受欢迎的语言之一。
  • 应用领域:Web、科学计算、机器学习、爬虫、数据分析、量化交易、云计算、运维;
  • 优势:抽象度高,简单易学,开发快速;开源,强大丰富的库;代码强制要求缩进,整洁规范;
  • 弊端:解释型语言,运行效率差;代码不能加密;缩进过多导致可读性下降;
Ruby:松本行弘认为编程应该专注于人而非计算机,要让程序员感到编程是一件快乐的事,于是在1995年开发了一种更人性化的编程语言。最初的目标只是想实现Perl所具备的功能,因此松本行弘从Perl借鉴了很多内容,也因为受Perl的影响,他决定用一种宝石来命名新语言,最终使用了一位同事的生肖石——代表七月的Ruby(Pearl代表六月)。Rails框架的出现使得Web的开发更为简单快速,因此Ruby on Rails常被作为初创公司的技术选型。
  • 应用领域:Web;
  • 优势:语法糖丰富,易于上手,开发快速;
  • 弊端:解释型语言,运行效率差;小众,常用于初创公司;
Lua:Lua是一个简洁、轻量、可扩展的程序设计语言,由巴西里约热内卢天主教大学的Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo所组成的研究小组于1993年开发而成,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行,它还有一个同时进行的JIT项目,提供在特定平台上的即时编译功能,但Lua并没有提供强大的库,所以不适合作为开发独立应用程序的语言使用。
  • 应用领域:游戏、插件、配置文件;
  • 优势:小巧简洁;支持协程;
  • 弊端:应用领域局限;
Go:程序员常常要在开发效率和性能中做出选择,C/C++性能高但开发周期漫长,Python和Ruby适合快速开发但性能不足,谷歌首席软件工程师Rob Pike说:“我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。”2007年,包括开发过C语言的Ken Thompson在内的一批Google工程师,开始将本职工作外时间的20%投入于Go项目。2008年5月,Google发现了Go的巨大潜力,开始全力支持这个项目,让员工全身心投入Go的开发。2009年11月,首个Go版本以开源方式向全球发布。2012年3月28日,首个正式版本Go 1发布。Go在开发效率和性能之间架起了桥梁,它可以在不损失应用程序性能的情况下降低代码的复杂性,编译后Go代码的运行速度与C语言非常接近,而且编译速度非常快。
  • 应用领域:云计算、大数据、分布式系统、Web后端、区块链;
  • 优势:Google支持且开源;简单易学;编译快且运行快;支持并发;
  • 弊端:诞生时间晚,市场仍处于实验阶段;
Kotlin:Kotlin基于JVM,由JetBrains开发,于2010年首次推出,次年开源。2016年2月,Kotlin 1.0正式版发布。2017年5月18日,Google I/O全球开发者大会上,Google宣布Kotlin正式成为Android开发的官方支持语言。
  • 应用领域:Android;
  • 优势:兼容Java,且更加简洁现代;
  • 弊端:诞生时间晚,市场仍处于实验阶段。
发布了174 篇原创文章 · 获赞 22 · 访问量 7146

猜你喜欢

转载自blog.csdn.net/weixin_45820912/article/details/103894403