我们真的需要另一个编程语言?当然没有短缺的选择了。命令式语言之间的函数式语言,面向对象语言,动态语言,编译语言,解释型语言,和脚本语言,没有开发人员能学习今天所有可用的选项。
然而,新的语言以惊人的频率出现。有些学生或业余爱好者个人设计的项目。其他大型IT厂商的产品。即使中小企业也加入了这一行动,创造语言服务行业的需要。为什么人们保持重新发明轮子?
(找出哪些11编程趋势是在上升,诗自己12编程错误为了避免和测试您的编程智慧与我们的编程智商测试:第一轮和第二轮。|保持在关键应用程序开发的见解与致命的异常博客世界时事通讯和开发人员。]
答案是,强大和灵活的当前的语言,没有单一的语法是适合每一个目的。更重要的是,编程本身是不断发展的。多核cpu的崛起、云计算、移动和分布式体系结构为开发者创造了新的挑战。添加支持最新特性、模式和模式对现有语言——尤其是流行可以是非常困难的。有时最好的答案是从头开始。
这里,然后,看看10尖端的编程语言中,每个软件开发方法的艺术从一个全新视角,解决一个特定的问题或一个独特的缺点今天更受欢迎的语言。有些成熟的项目,而另一些则在开发的早期阶段。一些可能仍是模糊的,但任何一个可能成为突破工具,改变编程几年——至少,直到第二批新语言的到来。
实验编程语言没有。1:飞镖
JavaScript是细向Web页面添加基本的互动,但是当Web应用程序膨胀到成千上万行代码,其弱点很快变得明显。这是为什么谷歌创建飞镖,它有望成为一种语言网络编程的新方言。
像JavaScript,飞镖使用c语法和关键词。然而,一个重要的区别是,尽管JavaScript是一种基于原型的语言,在飞镖是使用类和接口定义的对象,如c++或Java。飞镖还允许程序员可以声明变量和静态类型。飞镖应该的想法是熟悉的,动态的,和流体作为JavaScript,但允许开发人员编写的代码更快、更容易维护,不容易受到微妙的错误。
今天你不能做太多飞镖。它的设计运行在客户端或服务器(lanode . js),但迄今为止运行客户端飞镖代码的唯一方法是保存JavaScript。即使这样它不与所有浏览器。但是因为飞镖bsd风格的开源许可下发布,任何供应商购买谷歌的愿景是免费的语言构建到它的产品。谷歌只有整个行业说服。
实验编程语言没有。2:锡兰
Gavin King否认锡兰,语言他在Red Hat的发展,是一个“Java杀手。”国王最好称为Hibernate的创建者为Java对象关系映射框架。他喜欢Java,但是他认为它让很多需要改进的地方。
在国王的抱怨是Java的详细语法,缺乏一流的高阶函数,和可怜的元编程支持。特别是,他的沮丧,缺乏一种声明性语法结构化数据的定义,他说让Java XML密不可分的。”Ceylon aims to solve all these problems.
国王和他的团队完全不打算重新发明轮子。不会有锡兰虚拟机;锡兰编译器将输出在JVM上运行的Java字节码。但锡兰将不仅仅只是一个编译器,。一个项目的目标是创建一个新的锡兰SDK来取代Java SDK,国王说臃肿笨拙,它没有“正确的现代化。”
这是一个艰巨的任务和红色的帽子已经发布了没有锡兰工具。王说,预计今年一个编译器。只是不要期望软件编写的“100%纯锡兰”。
实验编程语言没有。3:走
口译员、虚拟机和托管代码的流行时尚。我们真的需要另一个老式的语言,编译本地二进制文件吗?谷歌的工程师团队,由罗伯特·Griesemer和贝尔实验室传说Ken Thompson和Rob Pike说,是的。
去是一个通用的编程语言适合从应用程序开发到系统编程。在这个意义上,它更像是C或c++比Java或c#。但像后者语言,包括现代垃圾收集等功能,运行时反射,支持并发。
同样重要的是,去计划是容易的。其基本语法是c,但它消除了冗余的语法和样板同时简化操作,如对象定义。去团队的目标是创建一个语言一样愉快的代码在一个动态脚本语言提供编译语言的力量。
仍然是一个进展中的工作,语言规范可能会改变。也就是说,今天你可以开始使用它。谷歌提供了工具和编译器以及丰富的文档;例如,有效去教程是一个学习的好地方去不同于早期的语言。
4号实验编程语言:f#
函数式编程与计算机科学家和学术界长期以来一直受欢迎,但纯函数式语言Lisp和Haskell是实际软件开发通常被认为是不可行的。一个常见的抱怨是,函数式代码很难集成和代码和库在命令式语言编写c++和Java。
输入f#(发音为“升F”),微软语言设计功能性和实用。因为f#是一流的语言在。net通用语言运行时(CLR),它可以访问所有的与其他CLR语言相同的库和特征,如c#和Visual Basic。
f#代码类似于OCaml有点,但它增加了有趣的语法的。例如,f#中的数值数据类型可以被指定单位的措施帮助科学计算。f#还提供结构援助异步I / O, CPU并行化和GPU处理负荷。
经过长时间的妊娠期在微软研究院,f#现在与Visual Studio 2010船。更好的是,在一个不同寻常的举动,微软已经f#编译器和核心库Apache开源许可下可用;你可以免费使用它,甚至使用它在Mac和Linux系统(通过Mono运行时)。
实验编程语言没有。5: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平台,进一步的港口。
实验编程语言没有。6:幽灵
你应该为Java或. net开发您的应用程序吗?如果你阴影中的代码,你可以随你挑吧,甚至切换平台中游。这是因为幽灵是跨平台可移植性而设计的。幽灵项目不仅包括一个编译器,可以输出字节码JVM或. net CLI,还有一组api抽象Java和。net api,创建一个额外的可移植性层。
计划进一步扩展幽灵的可移植性。Fantom-to-JavaScript编译器已经可以和未来的目标可能包括LLVM编译器项目,鹦鹉VM,并为iOS objective - c。
但可移植性不是幽灵的唯一存在'tre。虽然本质上仍然是c,这也是为了提高语言的启发。它试图达成一个中间地带的一些更具争议性的语法辩论,如强烈的和动态类型,或接口和类。它增加了简单的语法来声明和序列化对象的数据结构。和它包括支持内置函数式编程和并发性语言。
幽灵是开源学术自由许可下可用3.0和Windows和类unix平台(包括Mac OS X)。
实验编程语言没有。7:Zimbu
大多数编程语言借用早期语言的功能和语法。Zimbu从几乎所有的零碎东西。Bram Moolenaar的创意,创造者的Vim的文本编辑器,Zimbu旨在成为一种快速、简洁、可移植性,并且通俗易懂的语言,可用于代码从一个操作系统内核的GUI应用程序。
由于其杂种性质,Zimbu语法是与众不同,独一无二。然而,功能丰富。它使用c表达式和运营商,但自己的关键词,数据类型和块结构。它支持内存管理、线程和管道。
可移植性是一个关键问题。尽管Zimbu编译语言,Zimbu编译器输出ANSI C代码,允许构建二进制文件只在平台本机C编译器。
不幸的是,Zimbu项目处于起步阶段。编译器可以构建本身和一些示例程序,但并非所有有效Zimbu代码将正确地编译和运行。不是所有建议的功能实现,有些以笨拙的方式实现。语言规范预计也将改变随着时间的推移,必要时添加关键字、类型和语法。因此,文档是参差不齐的。不过,如果你想实验,初步的工具都可以在Apache许可。
实验编程语言没有。8:X10
并行处理曾经是一个专业化的软件开发,但是随着多核cpu和分布式计算的兴起,并行性是主流。不幸的是,今天的编程语言没有跟上这一趋势。这就是为什么IBM研究发展X10语言专门为现代并行体系结构设计,提高开发人员的生产力的目标“乘以10。”
X10处理并发使用分区全局地址空间(pga)编程模型。代码和数据分为单位和分布在一个或多个规模”的地方,“便于程序从一个单线程的原型(一个地方)到多个线程运行在一个或多个多核处理器在高性能集群(多个地方)。
X10最像Java代码;事实上,X10运行时可以作为本地可执行和JVM的类文件。X10编译器能输出c++或Java源代码。直接互操作性与Java项目的是一个未来的目标。
就目前而言,语言是不断变化的,但相当成熟。编译器和运行时可用于各种平台,包括Linux、Mac OS X和Windows。额外的工具包括一个基于Eclipse的IDE和调试器,所有在Eclipse公共许可证下发布的。
9号实验的编程语言:可
很多语言可以用来编写可移植代码。C编译器可用于几乎所有的CPU架构,和Java字节码将运行JVM。但可(发音“六角”)不仅仅是便携。这是一个多平台的语言,可以针对不同的操作环境中,从本地二进制文件翻译和虚拟机。
在可开发人员可以编写程序,然后编译成目标代码,JavaScript, PHP, Flash / ActionScript,或者今天NekoVM字节码;额外的模块输出c#和Java正在进行中。补充核心语言是可把标准库,在每一个目标函数相同,加上有针对性的库暴露每个平台的独特特性。
可把语法是c,丰富的功能集。它的主要优势是它否定固有问题在每个平台的目标。例如,可把有严格的输入JavaScript不;它增加了泛型和ActionScript的类型推断;它消除设计不良,完全随意的PHP的语法。