一种计算机r语言语法的语法“优雅”到底是什么意思

中国领先的IT技术网站
51CTO旗下网站
为什么会有这么多种程序设计语言?
传说人类建造通天塔触怒上帝,上帝施法使人类语言混乱彼此之间无法交流。这就是说各种各样的语言其实就是祸乱之源――只会导致交流的不便。可是看看如今的程 序设计语言的数量,你会怀疑人类是否又在造“通天塔”了?真的有这么多语言的必要吗?我到底要学习多少种程序设计语言才够用呢?
作者:来源:博客园| 15:08
传说人类建造通天塔触怒上帝,上帝施法使人类语言混乱彼此之间无法交流。这就是说各种各样的语言其实就是祸乱之源&&只会导致交流的不便。可是看看如今的程 序设计语言的数量,你会怀疑人类是否又在造&通天塔&了?真的有这么多语言的必要吗?我到底要学习多少种程序设计语言才够用呢?
根据维基的资料,可以称得上相对&主流&(有人用、有文档)的程序设计语言至少有600种, 还有大量的商业化失败、实用性不高、语言小众(这里的&语言&指的是编码的语言,一般的程序设计语言都习惯用拉丁字母集合或其超集来作为源码的字符集,也 有用日文、俄文编程、汉语编程的,比如易语言)就难以统计了(保守估计可以上万种),尽管已经有了这么多种程序设计语言,仍然有大量的人投入了大量的时间 来研发新的语言,这难道不是重复通天塔的故事吗?
为了解释&为什么会有这么多种程序设计语言&这个问题,想让我们来看一份较新的最流行编程语言流行榜:
排行榜上排名前十的依次是:C、Java、Object-C、C++、C#、PHP、Python、JavaScript、Perl和VB。下面我会根据这份排行榜来回答我们的问题。首先阐述一个基本观点:程序设计语言被创造的目的主要有三个&&实用目的、学术目的、商业及特殊应用需要。且听一一分解:
一、实用目的
可以看见在排行榜中,C,Java,C++这样的语言几乎是年年稳居前五。这些语言的实用性都是非常高的。让我们回顾一下C语言的历史:1973年AT&T的Ken Thompson因为研发和维护操作系统的需要,要求一种高效简洁的程序设计语言,于是在BCPL语言的基础上创造了C语言。Java、C++等语言也都是在有着类似的高要求的任务下临时创造出来,然后再不断发布标准进行改进的(C语言是为了操作系统,Java是为了嵌入式应用和网络开发&&) 如果现有的轮子不够好,那么就去自己造一个轮子,也正是因为这个特殊的原因,所有这些以实用为目的的语言都很高效,语法构造方法、编程逻辑和配套的编译技术都很成功,所以能够切切实实地解决工程上的问题。另外,这些实用目的语言的语法都很自由(Python因为&明确&、&简单&的哲学所以算个例外),正好符合了不同性格的程序员的需要。另外非常重要的一点是:&决定一种程序设计语言是否强大的是这个语言的库(标准程序库、类库、包、组件、单元、模块&&每种语言都有自己的叫法)而不是程序设计语言本身&;这可能会让很多人不高兴:说实话,C语言在语言的优雅性和友好性上(比如==和=)完全和Ada、Pascal比不了(Ada是军方人员设计的,Pascal是数学家设计的),但是C语言依然非常流行,这是因为你想要写一个含有系统调用的程序,用C语言是最佳选择,Ada和Pascal这样的语言想要直接和内核交流是很麻烦的。同理也可以解释C++、Java、Perl等语言的流行,你想要写多线程的程序用C++的多线程库和Java的包就行了,你想写正则表达式相关的程序用Perl或者C++ boost库就好了&&懂得不要重复造轮子是很重要的,遇到不能解决的问题,先去查查资料看有没有人已经写好了类似的程序,直接把他的函数抄过来就是了&&这恐怕是很多人都会做的吧?这些实用性的语言,在长期使用的广泛的使用过程中积累了大量优秀的库(C++的STL、BOOST和有些编译器自带的库,Object-C专门针对Mac OS X的库,Fortran的便于科学计算的函数等等),而且还有越来越多的程序员在不断增加更好的库,这些都使这些&语言&越来越强大。
这些程序设计语言在发展过程中既有一些公共的库(比如文件的I/O),也有一些特有的库(比如线程库、RE库), 这些特有的库往往是某一语言的最大优势,可以说正是这些各自独立的库把不同的语言区别开来,长此以往,解决某些特定问题时程序员就倾向使用某一特定语言。 这并不是说这些特有的库无法移植到其它的语言上,只是由于代码量巨大,移植是在是个不小的工程(况且,在某种语言中表述很方便的语言在另一种中就会难以表 示,比如C语言有很多语言都没有的显示指针,在Lazarus项目中,程序员开发了一个程序用以把C头文件自动转换成Pascal单元,即使这样,实现代码的量依旧很大,这种源到源的语言翻译的介绍可以参见龙书的引论部分,不学编译原理的请略过)。因为有如此多的专用库,这些实用目的语言越来越多也就不稀奇了。
二、学术目的
不管什么程序设计语言,在本质上都不过是机器级别的0或1。所谓的高级语言不过是机器眼中的胡言乱语(这也正是编译技术存在的价值)。
然而,人不是机器,也不可能也没必要成为机器。创造程序设计语言的目的是为程序员服务的,应该说,一个程序员所用的语言很大程度上决定了他的思维方式&&程序设计语言本身就是一种严谨的数学模型、一种高效的思维方式。为了说明这个道理我以一个物理题为例来解释:一辆汽车做匀速直线运动,以2m/s的速度经过了6m,问汽车用了多少时间?显然t=s/v=6/2=3(s),这也可以列方程来解决:设运动用时t s,则 tv=s,即 2t=6,解得t=3,这好像多此一举。如果把问题稍微&复杂&一下:一辆汽车以1m/s的初速度做加速为2m/s2的匀加速直线运动,经过了6m,问汽车用时多少时间?根据运动学公式列方程 V0*t+1/2*a*t2=s,即 1*t+0.5*2*t2=6,解得 t=2,也就是要用2s。又或者可以这样做:由速度与时间的关系可以得到 v(t)=v0+a*t,而
解这个等式同样也可以求出t。这个时候使用方程就很自然了,用定积分却显得多余。从中我们知道什么?人的思维能力是有限的,面对复杂的新问题,要么用就用原来老方法麻烦地进行计算,要么提出新的高效的模型来解决问题。不管是算术、方程还是微积分、傅立叶变换或是其它高级的数学方法、模型都只是一个简化问题的抽象层(数学家看到了我说这句话恐怕会很生气的,但这就是事实),作为类比,程序设计语言就好比这里的数学模型,越是复杂的问题、越是大的规模(指问题规模),才越能体现出高级语言的价值(有人用过几十多种语言写&hello world&,这有什么意义呢?我用机器语言都能写hello world)。知道了语言模型对于思维方式的影响,我们就能解释这么多语言的学术上(或者说是研究上)的目的了:机器语言/汇编语言意味着程序员专注的是寄存器、内存地址、状态、位的打开或关闭,因此思维重在每一条实际的指令;而C、Pascal这样的命令式语言注重每一个&计算过程&,因此思维重在将计算方法、算法、数学模型表达出来;而Java、C++这样的面向对象的程序设计语言,试图用对象、类、属性、方法这些概念来统一的描述算法和数据结构,OO语言的思维因此能够重在算法和数据;还有像Lisp、Haskell、Erlang、Prolog这样的函数式、逻辑式语言,强调的是数学的推演、函数的运算、逻辑的证明,我认为它们才是最接近人的思维的语言;而像SQL这样的语言,强调是&高产出&,它们是对常用的指令进行了简化、&宏化&(Macronize,本人自己造的一个词),它们的思维是&要做什么&而不是&怎么做&;最后,是像HTML这类Markup语言(有人说HTML不是程序设计语言&&)个人认为是一种glue(胶水语言,最有名的glue算是Lua了),它对文本(比如网页)的格式进行描述,同时又把JavaScript、Applet等等扩展&连接&在一起,它们的思维是&组合&,是怎样才能协调各个组件、把组件的功能发挥到极致(说起排版不得不提提TeX了,它和HTML的 思维类似,各种开发好的宏集就是它的&组件&)。最后我还想再谈一谈&学术风味&很浓的函数式语言,函数式语言历史悠久,但多年以来一直在学术界活跃,少 有能够成功商业化的,多年来一直处于不温不火的的状态。但随着今年来编译技术的发展,函数式语言的执行效率已经很高了,加上大数据时代对于大量数据处理的 需求、机器深度学习的成熟、现代架构计算机的发展,仅仅依靠程序执行的单线程性能提升已经不能够满足实际需求了,只有并发和并发才能满足这样的高负荷计算 要求,纯函数语言处理起多线程来十分方便,能够&榨干&处理器的运算潜力,这也是近年来Erlang之类的语言大放异彩的重要原因。在现代计算机结构和工艺发展难度大的情况下,这些函数式语言可能会成为推动计算力的重要动力,这一点可以参见本人的论文《AACOS:基于编译器和操作系统内核的算法设计与实现》(由于版权的问题,我暂时不能把论文贴出来:-))。
三、商业及特殊应用需要
(以下言论仅仅是本人个人观点,没有任何指责的意思)
开发一种编程语言是可以赚钱的,你信吗?
实际上开发一种新的语言意味着建立自己的&统一标准&(说起标准就不得不谈高通了,高通从&标准&上捞了多少银子?),一方面可以方便维护自己的产品,另一方面可以借助市场地位强迫程序员学习某种语言进而达到自己(至少在某一领域)的霸主地位。为什么这么多年以来微软对BASIC情有独钟?在DOS时代,QBASIC&&一种BASIC的变种,是每台PC上必装应用,也是当时很多人必学的一种语言,QBASIC无论是从程序执行效率还是语言的思维性上都不好,但是因为是预装的,本着&不够好但够用&的原则,许多用户居然凑合下来了(惭愧本人就是从QBASIC开始接触编程的)!这恐怕和IE用户如此众多的原因是异曲同工的吧?就这样QBASIC居然一时成为了最受欢迎的入门编程语言工具。到后来,微软推出Visual Basic实际上是为了和Borland(现已被收购)的Delphi竞争入门级编程工具市场(在相当长的一段时间内VB都不是Delphi的对手,可以参见本人的另一片随笔《Borland和Microsoft的对话》,这直接导致了C#的诞生&&C#&&一种C++、Java、Object Pascal杂交的到的混血儿),凭借自己在BASIC用户上的积累,在RAD领域混得不错了,微软又趁热打铁的推出了VBS/VBE、VBA等等脚本语言,目的就是拉拢自己的VB用户,使这种糟糕的语言能够勉勉强强适应系统GUI编程、办公套件编程、数据库编程,好了现在形成了一个有机的整体。一个程序员要么学多种语言来完成不同的任务,要么学一种不够好但够用的语言&&然后,一招鲜,吃遍天&&学习一种语言的成本是很高的(要时间和电费),所以有很多程序员会选择微软指定的这一标准。还有近几年大红的Object-C、Swift、Go,虽然名义上是开源的,但是谁知道他们的真正目的?除此之外,还有很多DSL(Domain-Specific Language,专业领域语言),比如sed和awk是为了处理文本,PHP是为了处理Web开发、Emacs Lisp和Vim脚本是为了扩展编辑器功能,PostScript是为了排版,batch和各种shell script是为了shell编程等等。这里介绍一个典型:Adobe的ActionScript,它的作用就是为了支持Adobe自己的Flash,主要用于Flash动画和应用程序,不论ActionScript语言自身发展的多好不过是一个扩展罢了。
好 了,已经介绍完了实用目的、学术目的、商业及特殊需要,相信各位对&为什么会有这么多种程序设计语言&这个问题有了更深刻的理解,也可能有了更多的疑惑。 如果你有任何疑惑或者愿意和我交流,欢迎留言。对了,除了我说的三个目的之外还有没有别的创造新语言的原因?有,我自己设计了一种名为Grove的语言,用&树&来完成过程编程和lambda表达式,改天把解释器的源码发出来交流一下。我的目的呢?Just for fun&
不要想你能为世界做什么,想想你该为世界做什么!
&【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条热点热点
24H热文一周话题本月最赞
讲师:12571人学习过
讲师:15445人学习过
讲师:16222人学习过
精选博文论坛热帖下载排行
在我的第一本书――《3D游戏开发大全》中,我们曾经对3D游戏开发完成了一次犹如探索原始丛林般的旅程:首先,我们对3D游戏产业进行了初步了...
订阅51CTO邮刊相关文章推荐
Java Learning Path(三)过程篇
每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习...
在web上实现关键字实时语法高亮效果
如果你从来没有使用面向对象的编程语言之前,你需要学习一些基本的概念,然后你就可以开始编写任何代码。 这节课将向你介绍对象,类,继承,接口,和包。 每个讨论集中于如何将这些概念与现实世界中,同时介绍了J...
使用分词算法,和观察者模式等技术,即时遍历DOM结构树,实现关键字的即时语法高亮效果...
本文是从 Most Pressed Keys and Programming Syntaxes 这篇文章翻译而来。我研究过很多编程语言;我经常的好奇于在面对这些不同的语法时,编程过程会有哪些不同,一种...
一.语法1.标识符标识符的要求:
- 大小写敏感
- 标识符的组成:以字母,数字,下划线以及美元符号,unicode符号开头,可以包含数字,但不能已数字开头
- 不能使用保留字以及关键字
一.Node语句1.条件语句1.if
2.if …else
3.if …else ifvar age = 10;
if(age>=100){
console.log("明明你个老不...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Python能够超越Java成全球最流行编程语言吗?_创事记_新浪科技_新浪网
Python能够超越Java成全球最流行编程语言吗?
  欢迎关注“创事记”的微信订阅号:sinachuangshiji
  文/水哥
  这些年,编程语言的发展进程很快,在商业公司、开源社区两股力量的共同推动下,涌现出诸如Go、Swift这类后起之秀,其中最为耀眼的是Python。
  知名开发者网站Stackoverflow撰文指出,从年编程语言Python成为开发者使用增长最快的主流编程语言,其中2017年增长率达到了27%,一举超过包括Java、C#、PHP、C++在内的所有同类。另据高盛集团发布的一份《2017调查报告》针对全球数千名高校实习生的调查中,当问到你认为“哪个语言在未来会更重要”时,被调查的80、90后优秀年轻开发者中72%选了Python。
  语言的使用者是一直被誉为业界上游“源头活水”的开发者,其重要程度从各大科技巨头公司每年例行召开的开发者大会上可见一斑。对于开发者群体而言最重要的事物有两个,一是平台,二就是编程语言。编程语言Python为什么能够获得全球众多开发者的青睐?它的崛起给开发者世界带来了什么变化?
  成功的一半源于好的开始
  在主流编程语言当中,Python并不是一个“新人”,它的历史超过25年,但真正风靡之时却是最近几年,所以“后起之秀”的称呼实至名归。Python的起源是1989年,其发明者荷兰人程序员吉多o范罗苏姆受ABC语言的启发计划开发一个新的脚本解释器,由此迈出了Python项目的起点。
  Python能够真正风靡的原因之一是有一个好的起点。它的起步很稳,避开了版权纠纷,且搭上了开源运动的顺风车。在那个年代,商业版权一直是热门事件,业界史上第一个软件领域重大官司AT&T和伯克利BSD的Unix版权案打得天昏地暗,该案的结局直接促成了BSD的开源分支、Linux的诞生以及震惊世界的自由软件运动。
  Python最初的版权归属是CWI(阿姆斯特丹的国家数学与计算机科研学会),这与吉多早年在该机构工作有关,后来吉多受雇于CNRI(维吉尼亚州的国家创新研究公司),Python权属转移至此。那时自由软件运动已经开始,在CNRI期间发布的1.6至2.1多个版本的Python许可证是一种与GPL并不兼容且类似于BSD的开源许可,CNRI因受到自由软件基金会的压力释放了Python的原许可证,吉多由此掌握了主导权并起草了新的许可证。他改变了原许可证与GPL的不兼容,此举获得了自由软件基金会颁发的自由软件进步奖。再后来吉多和他的团队成立了Python软件基金会,将版权与许可证置于其下。
  创始人吉多o范罗苏姆的心思缜密与灵活处事为Python最初的发展营造了良好的环境,包括几次权属的转移、起草新的许可证、机智地与自由软件阵营斡旋,最后安全融入开源的大潮。这一切为Python此后十多年里逐渐成长为主流编程语言赢得了契机。
  “人生苦短,我用Python”并非一句戏言
  Python崛起的原因之二与其本身特点有关,或者说,其长期维护演进形成的独特风格迎合了大多数开发者的口味。在开发者社群流行着一句玩笑“人生苦短,我用Python”(原话为” Life is short, you need Python”),这句看似戏言的话实际上恰恰反映了Python的语言特性与其在开发者心里的价值分量。
  除了包涵大多数主流编程语言的优点(面向对象、语法丰富)之外,Python的直观特点是简明优雅、易于开发,用尽量少的代码完成更多工作。尽管Python是一种解释型语言,与传统的编译型语言相比降低了机器执行效率,但是处理器的处理速率与环境速率(比如网络环境)的差异在大多数场景中完全抵消了上述代价;牺牲部分运行效率带来的好处则是提升了开发效率,在跨平台的时候无需移植和重新编译。 所以Python的显著优点在于速成,对于时间短、变化快的需求而言尤为胜任。
  Python最强大的地方体现在它的两个外号上,一个叫“内置电池”,另一个是“胶水语言”。前者的意思是,Python官方本身提供了非常完善的标准代码库,包括针对网络编程、输入输出、文件系统、图形处理、数据库、文本处理等等。代码库相当于已经编写完成打包供开发者使用的代码集合,程序员只需通过加载、调用等操作手段即可实现对库中函数、功能的利用,从而省去了自己编写大量代码的过程,让编程工作看起来更像是在“搭积木”。除了内置库,开源社区和独立开发者长期为Python贡献了丰富大量的第三方库,其数量远超其他主流编程语言,可见Python的语言生态已然相当壮大。
  “胶水语言”是Python的另一个亮点。Python本身被设计成具有可扩展性,它提供了丰富的API和工具,以便开发者能够轻松使用包括C、C++等主流编程语言编写的模块来扩充程序。就像使用胶水一样把用其他编程语言编写的模块粘合过来,让整个程序同时兼备其他语言的优点,起到了黏合剂的作用。正是这种多面手的角色让Python近几年在开发者世界中名声鹊起,因为互联网与移动互联时代的需求量急速倍增,大量开发者亟需一种极速、敏捷的工具来助其处理与日俱增的工作,Python发展至今的形态正好满足了他们的愿望。
  Python的影响
  从两个著名编程语言排行网站TIOBE和PYPL的最新数据来看,Java与Python的排名分别位于第1和第5、第1和第2。关于两个网站的排行机制我们不得而知,但从开发者社群的相关评论中可以认为PYPL更能反映编程语言在开发者群体中的流行程度。不论如何,Python的崛起已是毋庸置疑的事实,而它上面的前辈则是常年占据榜单第1,互联网与移动时代的娇子Java。从Stackoverflow和多个开源社区公开的数据来看,Python的用户数量增长很快,在今后两年超过Java成为全球最流行编程语言的可能性非常之高。
  值得一提的是,那些颇有影响力的主流编程语言,其背后一般都站着科技巨头公司,比如Java之于甲骨文、C#之于微软、Objective-C之于苹果。Java之所以常年第一是因为其同时还几乎是安卓平台的御用语言,以及受益于Sun时代影响力的眷顾。Python虽曾一度为谷歌使用,但Go语言问世后随着时间推移或将遇冷。也就是说,Python成了没有巨头站队的主流编程语言,那么它的影响力是如何维系的?为什么还能够保持高速成长并形成赶超Java之势?
  我们认为这与Python多年来实现较好案例与范用性有关。使用Python开发的知名案例中,包括豆瓣、果壳、知乎、Dropbox、EVE(星战前夜)每一个都是重量级产品,这说明Python语言本身的发展已日臻完善,有着极高的稳定与可靠性保证。第二是Python的应用范围,除了日常工具和脚本之外,还适用于Web程序、GUI开发、操作系统中间件、服务端运维等等,这些年Python的一些第三方库在机器学习、神经网络方面活跃非凡,这也为语言本身的推广和流行加分不少。
  最后需要指出的是,Python编程思想包含强烈的黑箱思维,这意味着开发者将愈加重视模块化和流水线式的编程工作,事实上这也是未来主流编程语言的发展趋向。随着计算机语言的演化和开发工具集成功能日趋强大,未来的编程工作将大幅简化。从某种角度看,Python更像是已经“迈入未来”的编程语言,其对开发者群体结构变化,以及新进开发者数量的激增,这些影响都将是深远的。
  水哥 高级工程师,科技专栏作者,中国计算机学会会员。IT评论、业界分析,不一而足。微信公众号:qq133991
(声明:本文仅代表作者观点,不代表新浪网立场。)
文章关键词:
IT评论,业界分析,不一而足。微信公众号 "qq133991"
在商业公司、开源社区两股力量的共同推动下,涌现出诸如Go、Swift这类后起之秀,其中最为耀眼的是Python。
在商业公司、开源社区两股力量的共同推动下,涌现出诸如Go、Swift这类后起之秀,其中最为耀眼的是Python。
痴心不改的谷歌,或许终究会在硬件上打造出集AI于大成的产品,但是不是智能手机?很难说。
对于薛蛮子来说,精准的圈子或许才是永不过时的风口。
小米最好的办法可能只有一个,那就是把曾经跟它暧昧过的苍井空、波多野结衣、小泽玛丽们重新请上舞台,实现曾经的传言,然后让她们用日语向大家发福利。编程语言是一组用来定义计算机程序的语法规则
信息发布:admin
发布时间:
我们都知道,编程言语是一组用来界说计算机程序的语法规矩。它是一种被标准化的沟通言语,用来向计算机宣布指令。一种计算机言语让程序员可以精确地 界说计算机所需要运用的数据,并精确地界说在不同情况下所应当采纳的举动。虽然人们屡次企图发明一种通用的程序规划言语,却没有一次尝试是成功的。之所以 有那么多种不同的编程言语存在的原因是规划程序言语的初衷不同,对言语学习曲线的寻求不同,不同程序之间的运转本钱差异等。
编程言语的历史早于真正意义的计算机的呈现。19世纪就有&可编程的&织布机和钢琴演奏设备呈现,它们都是范畴特定言语(DSL)的样例。
编程言语开展的编年史
我们一个统计出来256种编程言语,当然,这么多的言语中只有一些是常用的或有用的。
1951 & Regional Assembly Language
1952 & Autocode
1954 & IPL (LISP言语的先人)
1955 & FLOW-MATIC (COBOL言语的先人)
1957 & FORTRAN (第一个编译型言语)
1957 & COMTRAN (COBOL言语的先人)
1958 & LISP
1958 & ALGOL 58
1959 & FACT (COBOL言语的先人)
1959 & COBOL
1959 & RPG
1962 & APL
1962 & Simula
1962 & SNOBOL
1963 & CPL (C言语的先人)
1964 & BASIC
1964 & PL/I
1966 & JOSS
1967 & BCPL (C言语的先人)
1968 & Logo
1969 & B (C言语的先人)
1970 & Pascal
1970 & Forth
1972 & Smalltalk
1972 & Prolog
1975 & Scheme
1978 & SQL
1980 & C++ (既有类的C言语,更名于1983年7月)
1983 & Ada
1984 & Common Lisp
1984 & MATLAB
1985 & Eiffel
1986 & Objective-C
1986 & Erlang
1987 & Perl
1988 & Tcl
1988 & Mathematica
1990 & Haskell
1991 & Python
1991 & Visual Basic
1993 & Ruby
1993 & Lua
1994 & CLOS (ANSI Common Lisp的一部分)
1995 & Java
1995 & Delphi (Object Pascal)
1995 & JavaScript
1995 & PHP
1996 & WebDNA
1997 & Rebol
2000 & ActionScript
2001 & Visual Basic .NET
2003 & Groovy
2003 & Scala
2007 & Clojure
2011 & Dart
从1951年至今,人类总共发明晰256种编程言语,每一种言语的呈现都带有某些新特征。编程言语不断的在革新,很快就会有超出这个清单的新编程言语呈现。

我要回帖

更多关于 计算机语法 的文章

 

随机推荐