61阅读

面向对象的编程语言-2016主流编程语言的详细对比

发布时间:2017-08-22 所属栏目:plc常用的编程语言

一 : 2016主流编程语言的详细对比

在学习编程之前,我们需要清楚学习编程的目的和方向,了解每种语言的优势、劣势。这些是国外一个网站做的流行语言对比图,希望帮你更好的理解各种语言的用处、难易程度。

Python

当我们思考应该找哪一门语言入门时,往往会有人跟你推Python。Python是一门比较简单的编程语言,同时具有极高的可读性和灵活性,最近它已经成为大学院校在教授计算机专业时选择的入门语言之一。

C语言

C语言也是许多人极力推荐的入门语言,除了经典和应用广泛以外,相比Python,学习C语言可以充分了解计算机相关知识。并且C语言更适合写程序。

JavaScript

JavaScript 是目前所有主流浏览器上唯一支持的脚本语言。JavaScript入门难度较低,可在任何浏览器上开发及调试,不需要安装额外的软件。作为一门灵活的脚本语言,JS有很多用途:前端,后端,游戏脚本等。

PHP

PHP是一门简便的Web开发语言,可广泛用在网站开发,API接口开发,服务器端开发,广告系统开发,内部OA系统开发,移动端后台开发,游戏开发等。入门不难,难的是掌握好一整套开发体系。

Ruby

Ruby是一门有趣的开发语言,优雅而又不失实用。Matz在设计Ruby的时候就想方设法让Ruby成为一个“人性化”的语言,力求使Ruby程序员感觉到使用Ruby是一件愉悦的事情。你能从Mixin、程序块、元编程、极具包容性的语法等等当中获得一种喜悦。

Java

Java是一门面向对象编程语言,Java语言具有功能强大和简单易用两个特征。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Objective-C

通常写作ObjC或OC,是扩充C的面向对象编程语言。Objective-C的流行归功于iPhone的成功。编写iPhone应用程序的主要编程语言是Objective-C。

C#

C#是运行于.NET Framework之上的高级程序设计语言,由C语言和C++衍生而来。具有安全、稳定、简单、优雅的特点,C#使得C++程序员可以高效的开发程序。

C++

C++也是在C语言的基础上开发的一种面向对象编程语言,应用非常广泛。常用于系统开发,引擎开发等应用领域,支持类、封装、继承、多态等特性。C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点。

以上就是9门主流编程语言详细对比的全部内容,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

二 : Scratch:Scratch-常用术语,Scratch-面向儿童的简易编程工具

Scratch是利用唱片反转的声响做的技巧,通常在 Rap 及 Hip-Hop 中,会大量被使用,其它音乐型式亦会视状况使用,但因 scratch 会伤害你心爱的唱片和唱针,所以虽然很炫,也不要滥用;此外 scratch 常和 crossfader 一起进行,例 如唱片推出时 crssfader 出来,拉回时crossfader 则回另一轨。

scratch_Scratch -常用术语

(www.61k.com)Scratch dj 的常用术语是经过了很多搓盘 DJ 大师反复的使用发明创造而命名的。这些 Skratch 效果的名字很形象的代表了每1个 Skratch 不同的特点。

BabyScratch

— 这是1个较为简单的搓盘手法, Baby Scratch 不用 混音台上的 Cross Fader 直接用手指来移动唱片,将唱片上的 Sample 向前搓、向后搓。当放上一张伴奏唱片,将 Baby Scratch 与 Battle Beat 进行和声时,在连续使用 Baby Scratch 时它是非常有趣的,需要花费一些时间去认真练习。

ForwardScratch

— 它是需要在唱片向前搓时,用 Fader 进行切音和伴奏唱片进行和声时,它是较为容易的。

BackwardScratch

— 它是需要在将唱片向回拉时,用 Fader 进行切音和伴奏唱片进行和声时,对 Fader 的使用技巧,搓盘的力度有一定的要求。

TearScratch

— Tear Scratch 与 Baby Scratch 相同的地方是都不需要使用 Fader ,不同于 Baby Scratch 的是,在回拉唱片时,是要发出2个不同的声音。可以在 Fader 打开的瞬间迅速完成这个动作。也可以和 Baby Skratch 一起来运用,需要很快的速度也可以和 Backward Scratch 、 Forward Scratch 一起运用。

FlareSkratch

— DJ Flare 发明由 DJ Qbert 推广的。Flare Scratch 开始之际 Fader 应该是开启的,唱片向前搓时可以迅速关闭 Fader ,两次。如果你的动作够快,可以开启关闭更多次的 Fader ,施行不同类型的 Flare Scratch。

TransfomScratch

— 这是1个著名 Scratch 手法,由 DJ Cash Money 发明。这个 Scratch 是当你的唱片在移动并完成1个声音时,用 Fader 来切音使它完成3个或更多的声音。出来的声音有1种继续的效果 Fader 的切换速度要足够的快。

CrabScratch

— 这是 DJ Qbert 在 DJ Excel 的 Twidde Scratch 的基础上经过改造变化而发明的。1995 年在 日本的 Vestax DJ 比赛上, DJ Excel 问 Qbert Flare Scratch 是怎么样来搓, Excel 向 Qbert 展示他的 Flare Scratch 手法时,他用拇指和另外的两根手指来切换 Fader ,看起来象1个弹簧。这个动作吸引了 Qbert。比赛结束后 Qbert 回到了 旧金山,把这个 Scratch 手法进行了改造,利用三根或四根手指来迅速的完成 Fader 切换的动作。当年稍后在旧金山举行的 美国 DMC DJ 决赛,裁判是 Beat Junkies 、 X-Men (现在叫 X-ecutioners)和 ISP。在这次比赛中作为表演,这几个组合一起表演 Scratch 、 Qbert 展示了他新发明 Scratch 手法 Crad ,当 Qbert 演奏这个 Scratch 手法时,五根切换 Fader 的手指看起来就象一只螃蟹。

ChirpScratch

— 这是被 DJ Jazzy Jeff 完善推广的1种手法当你的唱片在向前或向后移动时, Fader 也应该跟着唱片的移动开启关闭, Scratch 的动作很慢的完成,出来的效果可能不是太出色的,但是把 Scratch 的动作加快以后,效果就不一样了。

ScribbleScratch

— 可以理解为1种随便的抓或乱抓。与 Baby Scratch 较为相近,可以不用 Fader ,但需要很快的速度将唱片在极小的范围内来回移动,并使发出的声音渐强、渐弱。

10.TweakScratch

— 这是 Invisbl Scratch Piklz 的成员 Mixmaster Mike 发明的。在做 Tweak Scratch 时, Turntable 的马达要关闭。用手指来移动唱盘和唱片,可以用 Fader 来改变 Tweak Scratch 的声音也可以不必使用 Fader。这种 Scratch 最好选用 Long Tone Type Samples< 长音调的效果 >,当然别的声音也可以。

11.BubbleScratch

— 这是 丹麦 DJ Noize 发明的,在来回移动唱片时将 EQ 旋钮从最小旋转到最大,得到1种 Wah-Wah 类似脚踏板发出的声音效果

12.FadesScratch

— 不用 Cross Fader 而用 单路的竖推杆,在移动唱片时竖推杆缓慢的由小推大,使声音渐强,再将推杆缓慢拉小,使声音渐弱

13.TipScratch

— 在将唱片快速向前,向后移动之后,再将唱片向前放,要求在结束时发出1个较长的尾音。出来的效果是 1 、 2——3 :1 、 2——3。

14.HydroplaneScratch

— 在唱片移动时,手指很轻的压住唱片,将唱片以均匀的速度向前、向后移动,移动的距离相对较长。

15.MilitaryScratch

— 军事 Scratch。这是 Baby Scratch 与 Forward Scratch 的结合。

scratch_Scratch -面向儿童的简易编程工具

Scratch 是1款由 麻省理工学院 (MIT) 设计开发的1款面向儿童的简易编程工具。针对 8 岁以上孩子们的认知水平,以及对于界面的喜好,MIT 做了相当深入研究和颇具针对性的设计开发。不仅易于孩子们使用,又能寓教于乐,让孩子们获得创作中的乐趣。Scratch 的下载和使用是完全免费的,开发了Windows系统,苹果系统,Linux系统下运行的版本。

这个 软件的特点是:使用者可以不认识英文单词,也可以不会使用键盘。构成程序的命令和参数通过积木形状的模块来实现。用鼠标拖动模块到程序编辑栏即可了。中间的黄色部分是编辑好的程序代码,左边是可以用来选择的功能模块,右边上部是程序预览和运行窗口,右边下部是角色窗口。

官方网址是麻省理工学院网站的1个分支。这个软件的开发团队称为“终身幼儿园团队”(Lifelong Kindergarten Group)。几乎所有的孩子都会一眼喜欢上这个软件。建立起做程序的欲望。

根据编者目前给带几个孩子玩这个软件的情况看,孩子自己学会使用这个软件是有困难的,需要身边老师和家长的指导。在有人指导的情况下,6岁的孩子可以照着例子完整的摆出1个能运行的程序。这个过程并不需要孩子认识英文或汉字。建立程序的过程,用到涂鸦,录音,找图片这些有趣的过程。孩子的成品可以通过软件直接发布到官方网站上。官方网站给每个注册用户开通了1个空间,放置发布的程序。

用户发布后的程序,在官网可以找到。制作中的程序只能在 软件环境下运行,发布后的程序则是在网页内运行的。就是说,孩子们的作品可以通过网络被无数人看到。官方网站具有交友和评论的功能。遗憾的是官方网站是英文,不方便国内孩子和家长们沟通。

1下载和使用

下载是完全免费的。这个开发组织除了保留对“SCRATCH”名称和“ 小猫”LOGO的权利外,公布源码,允许任意修改,发布,传播。目前已经有不同的改进版本在网上流通,目前最新的官方版本是1.4版。

官方网站的教学影片和介绍都是英文的,在 台湾可以找到部分翻译资料。

软件是多语言版本,根据 操作系统,自动会改成中文界面。积木模块包括八个大类,100多个功能。包括了过程1个完整程序的每个环节,甚至 数组。在原版中是没有函数调用的。也就是说复杂的功能用重复编写相同的代码。在自由软件开发组织中有人进1步开发了制作自定义积木(自己编函数)的功能。

2学习方法

孩子不用记住命令不代表不需要指导命令。积木模块包括八个大类,100多个功能。包括了过程1个完整程序的每个环节,甚至 数组和函数。这些图形化的积木使用需要老师或者家长正确引导。孩子从模仿的过程中,能感悟到条件语句,循环语句,判断。能理解参数和命令的区别。让孩子理性的总结出来是很困难的,引导是必须的。

3在台湾的普及

不得不说说在 台湾的普及情况。在台湾,中小学生的信息化课是以这个 软件为主来上的。有许多这样的网站。教育部门每年举行程序设计比赛。通过这个软件,扩展了语文,数学,外语的教学深度。

4第一届Scratch大会

2008 年7月24-26日,MIT的Scratch团队举办了第一次的全球Scratch社群聚会「Scratch@MIT」,约有300位老师、研究 学者、软体开发者前来参与,该研讨会的目的是:

分享Scratch是如何在家里、教室、 社区中心被使用的故事。

参与要亲自动手操作的工作坊,学习Scratch的新技巧和策略。

研讨孩子们用 Scratch 学会了些什么。

和MIT的Scratch团队一起探索 Scratch 的未来发展方向。

第1个讲题是Sowing the Seeds for a More Creative Society,由MIT媒体实验室的龙头老大 Mitchel Resnick 主讲。

第二个讲题是:imagine-Program-Share: Stories from the Scratch Online Community (幻想-写程式-分享:Scratch 线上社群的故事),1个会议的开幕演讲是多么有重要性,他们居然「足甘心」的邀请4个在Scratch 线上社群很活跃的孩子从世界各地来参加,可见他们对孩子们的重视,真的不是说说而已!

JSO 来自 比利时,13岁

MyRedNeptune 来自 俄罗斯,13岁

SonicPops 来自 英格兰,10岁 (对,您没看错!)

Wodunne 来自 美国,15岁

5青少年学习程序开发的路线图

小猫 软件是用Smalltalk程序语言开发的。关于这个程序语言的详细介绍目前只有英文的内容。

作为“OLPC(One Laptop per Child,每个孩子都有一台电脑)”项目的一部分,Smalltalk提出1个建议的语言学习顺序,其中的每种语言都被设计成下1种的入门和基础。这个顺序是:Scrath->Etoys->Squeak->;任意Smalltalk。在学习的过程中,每1种语言都提供了图形化的编程环境,不仅是用于教会孩子们一些编程的概念,而且是包含物理和数学知识的模拟及讲述故事的一些练习。Smalltakl和Squeak作为全功能的 应用程序开发语言,在过去的数十年中已经变得十分有名了,而Scratch是孩子们学习的工具。

scratch_Scratch -木村Kaela的同名专辑

唱片简单介绍

唱片《

Scratch

》(中译名:成长印迹), 日本著名流行歌手 木村kaela正式出道后的第3张专辑。 2007年 2月7日由 哥伦比亚唱片公司出版发售。

基本信息

唱片名称:

Circle

(原创专辑)

演唱歌手: 木村Kaela

音乐风格: J-POP

出版日期: 2007年 2月7日

版权公司: 哥伦比亚唱片公司

排名销量:

* 单周榜单最高第1位( ORICON)

* 2005年全年榜单第28位(ORICON)

专辑年表:

上一张: Circle(2006年)

下一张: +1(2007年)

相关概括

☆距离上作发售约十一个月的全新专辑。收录了上张专辑发行以来的单曲

三 : 十种可能改变IT行业走向的编程语言

时间:2012-01-05 10:18 来源:互联网 字体:[大 中 小]

我们真的还需要那么多新型编程语言吗?当前开发人员们所拥有的选择无疑已经相当丰富。命令型语言、函数型语言、面向对象型语言、动态语言、编译语言解释型语言以及脚本语言等等似乎已经完全罩得住我们可能面对的一切任务,而且时至今日也几乎没有哪位专业人士能够通晓上述全部语言。

然而,新型语言仍然在以惊人的速度不断涌现。有些是学生或者爱好者以个人项目的形式所设计,另一些则是来自大型IT供应商的产品。甚至连中小型企业也不甘势弱,积极针对其所在行业的需要开发出服务用语言。为什么人们如此热衷于这种重复性劳动呢?

答案其实很简单,尽管目前大家手头的语言在功能性与通用性方面已经相当强大,但仍然没有哪种单独的语法规则能够最大程度迎合任何一种实际需求。更重要的是,编程行为自身也处于不断的发展变化当中。多核CPU的崛起、云计算的升温、高流动性与分布式体系结构,这一切的一切都向开发人员提出了新的技术性挑战。要为现有语言——尤其是当下流行的语言——添加最新功能、范例以及模式可以说比登天还难。有时候直接搞一套新语言往往是最佳解决方案。

那么在这里,我将带大家一同纵览十种位居业界前沿的编程语言;其中每种方案都从全新的视角诠释了软件开发工作的艺术性,并以各自不同的特色解决了某些具体问题或是弥补了当下某款主流语言的独有缺憾。它们中有些是已经颇为成熟的项目,而有些则尚处于自身发展的初级阶段。有些可能对于大家来说还相当陌生且显得晦涩但懂,但毋庸置疑的是,它们很可能在未来给开发业界带来颠覆性的突破,并彻底改变今年数年的编程工具发展趋势——至少在新一代语言面世前,它们就是未来的生力军。

实验性编程语言第一位: Dart

JavaScript在为网络页面添加基本交互功能方面表现拔群,但当网页应用程序的体积达到数千行代码时,该语言的局限性就将暴露无遗。谷歌正是基于这种缺憾而推出了Dart,而这种语言也承载了谷歌为网页编程带来全新标准的雄心壮志。



与JavaScript相似,Dart采用了与C语言相似的语法及关键字。然而Dart与JavaScript最为显著的区别在于,前者中的对象明确指向类及接口,这与C++及Java颇有异曲同工之妙。Dart还允许程序员们利用静态式有选择地声明变量。追溯设计者的思路,他们应该是希望Dart与JavaScript一样更易于学习、保有动态特色以及流畅的执行效果,这样一来开发人员就能够在编写代码方面投入较少的时间,产品维护也将更为便捷,同时细小的错误带来的影响也将被降至最低程度。

目前我们还不能用Dart解决太多实际问题。其设计理念是希望该语言能够同时运行于客户机与服务器之上(与Node.js差不多),但现在惟一能够让Dart代码在客户端上运行的办法是将其通过编译转换为JavaScript。甚至它还不能正确作用于每一款浏览器。不过由于Dart以BSD类开源许可方式进行发布,因此任何购买了谷歌版本的厂商都可以随意将其构建于自己的产品当中。谷歌要做的只是说服业界接受这个编程领域的新生儿即可。

实验性编程语言第二位: Ceylon

Gavin King并不承认Ceylon这款他在红帽公司中创造出来的语言肩负着“Java终结者”的历史使命。在King的从业经历中,最为耀眼的一页正是他作为Hibernate——Java对象关系映射框架的创建者所赢得的赞誉。他喜欢Java,但他仍然认为Java还有很多提升空间。

King对于Java的抱怨主要集中在冗长的语法结构,这种语言缺乏一级与高端功能,而且对元编程的支持也相当薄弱。而更令他感到沮丧的是,Java中对于结构化数据定义的声明性语法极为欠缺,用他的话来说这使得Java“与XML根本无法分割。”Ceylon的目标就是解决上述疑难杂症。

King与他的团队并不打算完全从零做起。Ceylon虚拟机就不会出现,此类功能将通过Ceylon编译器将内容转换为Java字节代码,进而运行于JVM当中。不过Ceylon绝不会止步于一款编译器这么简单。该项目的一大雄心是打造一套全新的Ceylon SDK体系来取代Java SDK,引用King对于后者的评价——结构臃肿、笨拙,且从来没有得到“适当的、与时俱进的调整。”

这是一项艰巨的任务,因为红帽公司到目前为止还没有发布过任何一款Ceylon工具。King表示自己期待着能在年内看到一款编译器出现,但不会指望短时间内会有“百分之百由Ceylon编写”的软件问世。

实验性编程语言第三位: Go

解释程序、虚拟机以及托管代码如今正风靡一时。我们真的需要另一款用于将目标内容编译为本地二进制文件的老式语言吗?来自谷歌工程师团队的小组——由Robert Griesemer以及贝尔实验室的传奇式人物Ken Thompson与Rob Pike共同执掌——给出的答案是肯定的。



Go是一种通用型编程语言,且适用于从应用程序开发到系统编程等各种工作需求。从这种意义上来说,它更接近于C语言或C++,而不是Java或是C#。但与后两者一样,Go中也包含着各类现代化功能,包括垃圾收集、运行时间映象以及对并行性的支持。

同样重要的是,Go在设计上有意降低了编程难度。其基础语法与C语言非常相近,但却消除了多余的语法及样板文件,同时简化了对象定义等常用功能的操作。Go项目小组的目标是打造出了一款像动态脚本语言那样拥有亲切代码的语言,并且能够像编译语言那样提供强大的功能性。

Go尚处于创建过程之中,而且其语言规范也仍可能发生变动。也就是说,我们目前已经可以开始尝试使用了。谷歌已经为其打造了对应的可用工具与编译器,说明文档之类也相当丰富;举例来说,Effective Go教程就是大家了解Go与其它早期语言不同之处的上佳起点。

实验性编程语言第四位: F#

函数型程序设计在计算机科学家以及学术界一直都相当流行,但像Lisp以及Haskell这样的纯函数型语言通常被人们认为无法作用于实际应用中的软件开发工作。对于函数型代码,大家抱怨最多的是它们很难与由C++及Java等命令型语言所写成的代码与库相整合。

说起F#(发音为“F=sharp”),这款微软推出的语言在设计上可谓兼顾了功能性与实用性。由于F#在.Net公共语言运行(简称CLR)中属于一级语言,因此能够访问其它CLR语言的所有同类库及功能,包括C#及Visual Basic等。

F#代码与OCaml多少有些类似,但它同时拥有不少相当有趣的特色语法。例如,F#中的数字型数据可以通过分配获得计量单位,进而为科学类计算服务。F#还为异步式I/O、CPU并行处理以及GPU负载分担等功能提供了必要的理论支持。

在度过了微软研究中心中漫长的酝酿期后,F#现在终于同Visual Studio 2010一同面世了。更妙的是,微软这一次不按常理出牌,将F#编译器与代码库通过Apache开源许可呈现在我们面前;大家不仅能够免费使用这款语言,更可以将其引入Mac及Linux系统(通过Mono运行工具)。

实验性语言第五位: Opa

Web开发工作是公认的繁杂无比。就算是最简单的一款Web应用程序也需要不计其数的代码行与多种语言交替使用:HTML与JavaScript处理客户端、Java或PHP应对服务器、SQL负责数据库等等。

Opa其实并不打算单独取代上述任何一种语言。相反,它存在的目的是希望通过为Web编程设定一套全新规范的方式一次性将各类方案直接抹杀。在Opa应用程序中,客户端UI、服务器端逻辑以及数据库I/O都由同一种语言负责实施——也就是Opa本身。

而要完成这一目标,Opa需要将客户端与服务器端框架进行整合。由Opa编译器来决定某个特定程序是否应该运行于客户端、服务器端或是同时运行于二者之上,其后该编译器将输出运行所必需的代码。对于客户端型程序而言,编译器会将Opa的代码内容转换为相应的JavaScript代码,包括其中的AJAX调用。

当然,这样规模的整合型系统也暗藏着一些后台机关。Opa的运行环境将其Web服务器与数据库管理系统捆绑在一起,也就是说我们无法用其它独立的备选方案取代它们的位置。这当然可以算是一点缺憾,但为了保持标准的细致化与完整性,并使得数据驱动的Web应用程序能够以短短数十行代码得以表达,这一切都是值得的。Opa项目完全开源,并且目前已经支持64位Linux以及Mac OS X平台;今后随着工作的深入还将有更多端口得以开放。

实验性编程语言第六位: Fantom

我们是否应该在开发自己的应用程序时考虑对java及.Net的支持?如果使用Fantom来编写代码,那么一切都不必担心,甚至连交换机平台也不在话下。这是因为Fantom在设计上兼顾到了跨平台的可移植特性。Fantom项目中不仅包括能够为JVM或者.Net CLI输出字节代码的编译器,同时也拥有一组能够容纳Java及.Net接口的抽象化API,也就是创建了一套额外的可移植层。

Fanrom的可移植性还有着进一步的扩展规划。目前由Fantom到JavaScript编译器已经可以使用,而接下来我们还可以期望看到包括LLVM编译器、Parrot虚拟机以及iOS版Objective-C在内的各类延展型项目。

不过千万别把可移植性当作Fantom语言惟一的存在理由。虽然它在本质上仍然是以C语言为基础,但它同时也对该原始模型进行了充分改良。Fantom语言试图在某些颇具争议的语法讨论——例如牢固与动态或者接口与类——之中获取中立身份。它不仅增加了对数据结构说明及序列化对象的简化说明,还囊括了对函数型程序设计及并行性创建工作的有力支持。

Fantom是基于Academic免费许可3.0版本的开源项目,并且现在在Windows以及Unix类平台(包括Mac OS X)上已经可以付诸使用。

实验性编程语言第七位: Zimbu

大多数编程语言都从其它早期语言中借用到了某些功能或是语法。而Zimbu则把这种拿来主义精神发挥到了极致。作为Vim文本编辑器作者Bram Moolenaar的另一款得意之作,Zimbu的目标是成为一款速度快、语法简洁、适应移植需求且便于阅读的语言,并最终使得来自任何图形用户界面的应用程序代码得以运行于目标操作系统内核当中。

由于Zimbu与生俱来的杂交血统,其语法也相当独特,但同时却又功能丰富。它采用与C语言相似的表达式及运算符,但却使用自己的一套关键字、数据类型及块状结构体系。另外,它还支持内存管理、线程及通道等功能。

可移植性一直是个关键问题。尽管Zimbu是一款编译型语言,但其编译器输出的是ANSI C码,这就使得文件只能由具备本地C编译器的平台来生成。

遗憾的是,Zimbu项目如今尚处于起步阶段。而其编译器虽然已经能够为自身及其它程序创建一些演示范例,但并不是全部Zimbu有效代码都能够正确运行。不过预期功能目前还不完善,其中一些还只是加以草草设置,因此我相信只要假以时日,这些问题都能得到妥善解决。另外语言规范也很可能随着时间的推移而产生变化,例如在必要时添加新的关键字、类型以及语法等。所以说明文档等材料目前还没有统一的结论。不过如果大家对这种语言有兴趣的话,其初始工具已经在Apache许可基础上得以公布。

实验性编程语言第八位: X10

并行处理一度作为软件开发领域中的独特生态圈存在,但随着多核心CPU及分布式计算技术的日益普及,并行化也崛起成为未来发展的主流方向。遗憾的是,时至今日,编程语言仍然没能跟上时代的步伐。而这正是IBM研究中心苦心开发X10的原因,这是一种以提高开发人员生产效率为主旨的实用型语言,希望在现有基础上将开发效率提高“十倍”。

X10利用划分式全局地址空间(简称)编程模型来解决并行类任务。代码与数据作为各自独立的单位,分别位于一个或多个“空间”当中,这就使得将单线程字节代码(单独空间)向高性能集群中单核心或多核心处理器(多个空间)的多线程处理能力转化的过程更为简便。

X10代码总体来说与Java比较相近;事实上,X10运行环境可以直接作为本地可执行文件以及类文件应用于JVM当中。X10编译器能够输出C++或是Java类型的源代码。达成与Java语言之间的直接操作性是该项目的努力方向。

就目前而言,这种语言虽然还处于发展变化中,但也已经算得上相当成熟。其编译器与运行环境支持一系列平台,包括Linux、Mac OS X以及Windows。包括基于Eclipse的IDE及调试工具等都已经以Eclipse公共许可为基础进行发布。

实验性编程语言第九位: haXe

大多数语言都可以用来编写可移植代码。C语言编译器能够作用于几乎每一种CPU架构,而Java字节代码则能够在一切具备JVM的环境中发挥功效。但haXe(读音为“hex”)能做的则比可移植性更多。它是一款跨平台语言,能够适应各种不同类型的运行环境——包括本地二进制解释程序及虚拟机。

开发人员可以利用haXe编写程序,然后将结果编译为对象代码,例如时下流行的JavaScript、PHP、Flash/ActionScript或者NekoVM等等;而像C#、Java等其它输出模块目前仍处于研发阶段。在核心语言之外有haXe标准库作为补充,其指向各类目标的功能也同样齐全,而且还为目标平台的独特功能配备了专用的函数库。

haXe在语法上与C语言相似,函数集合相当丰富。它的主要优势在于规避了目标平台自身固有的缺陷。举例来说,haXe具备JavaScript所欠缺的严谨归类;它在ActionScript的基础上增加了通用语句及类型推导;它还完全消除了PHP语言在语法方面的设计疏漏与杂乱无序。

虽然仍处于开发阶段,但haXe在其创造者Motion Twin游戏工作室的推动下已经进入商业化运营,因此我们已经应该用严肃的眼光看待它。它支持Linux、Mac OS X以及Windows平台,并采用数款开源类许可相结合的分布模式。

实验性编程语言第十位: Chapel

在高性能计算领域,很少有哪家企业的风头能够盖过Cray,因此Cray公司的原始编程语言Chapel能够上榜也就毫不奇怪了。这是一款在设计上主要考虑到超级计算机及集群实际需求的语言。

Chapel是Cray公司Cascade Program项目的一部分,该项目可谓野心勃勃,其部分计划内资金甚至是由美国国防部高级研究计划局(简称DARPA)所提供。其目标主要是从底层硬件中提取抽象并行算法,进而提高现有架构的性能表现,并使得并行类程序具备更好的可移植性。

Chapel的语法脱胎自许多来源。除了几款我们常见的主流语言(例如C、C++以及Java),它还从像Fortran及Matlab这样的科学类编程语言中借鉴了不少概念型内容。它的并行处理能力在一定程度上与ZPL及高性能Fortran密切相关,另一些Cray早期项目也是它的学习目标。

Chapel最引人注目的特色之一是其“多分辨率编程”功能,这项功能使得开发人员能够在应用程序中引入更多抽象化代码,并在实施中添加更多细节阐述以使得定义本身更加明确。

Chapel仍处于开发阶段。目前它能够运行于Cray超级计算机及各类高性能集群之上,并且可以移植到大多数Unix类系统(包括Mac OS X以及安装了Cygwin的Windows系统)当中。该语言源代码采用BSD型开源许可。

文章转载自网管之家:
本文标题:面向对象的编程语言-2016主流编程语言的详细对比
本文地址: http://www.61k.com/1074083.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1