哪种编程语言将来会对编码产生最大的影响?这取决于你问谁。事情一直在变化。某些语言(如Java和R)仍然处于最前沿。仅仅几年前,其他流行语言就已经降温了,它们被新兴的替代方法吸引了大家的注意,这些替代方法使解决当今企业编程向导所面临的各种问题变得更加容易。
有些事情已经改变了,有些没有改变。显而易见的是:自动化的工作流程仍然是语言创建者的最大职责。这是我们(至少目前)将定义编码未来的顶级编程语言列表。
1.Ethereum
许多人认为Ethereum和比特币是货币,您用来购买咖啡的东西或可能是非法的东西。但是,如果您消除了炒作和贪婪,就会埋藏在其中的一种编程语言可以定义要进行的相当复杂的计算。Ethereum语言甚至是图灵完整的,至少如果您接受节点可能对代码运行多长时间设置时间限制的话。
Ethereum的创造者认为,每个花费硬币的人可能都想做更多的事情,而不仅仅是将财富从所有者A转移到所有者B。他们认为,当事方可能希望构建详尽的合同,其中包含有关何时或何时转移或转移财富的条款,警告和条件。不动,而这些将以计算机语言表达。
例如,30年的抵押可以表示为计算每月还款额并仅在完成360次还款后才除去留置权的代码。这些用代码编写的合同是经济和商业的未来,并且从现在开始理解语言对于进行交易至关重要。
要点:与货币系统紧密集成,这需要高度重视正确性和认证。
头痛:与货币体系紧密结合,带来监管和偏执狂。
2. React JSX
从技术上讲,React Web应用程序是用JavaScript编写的,但是许多模板都是用JSX构造的,这是JavaScript和HTML的怪异混合,无疑是由非常熟悉这两者的人创建的。
省略了一些烦人的标点符号以节省时间,并且简化了其他结构。但是,如果您打算在React或其同类产品中进行编程(例如Vue或也使用JSX的下一代Web应用程序之一),则需要掌握这种混合方式。
这意味着知道何时讲JavaScript和何时键入HTML。它是如此不同,以至于它也可能是另一种语言。
亮点:速记使您可以精心制作互连的Web应用程序。
头痛:它既不是HTML也不是JavaScript,因此您会经常感到困惑。
3. TensorFlow
机器学习无处不在,并且TensorFlow是探索它的主要开源软件包之一。从技术上讲,TensorFlow是用C ++,Python和CUDA语言混合编写的。但是您编写的代码将主要包含对Tensor Flow API的调用,并且可以使用大多数主要语言(包括Java和JavaScript)来完成。
您可以选择自己喜欢的语法和编译器,但是困难的部分将是教您的代码从数据中学习。您必须了解如何构建模型,并且代码将反映您对系统的期望。了解API的这种结构是创建天才的第一步。
亮点:触手可及的强大实力可以解决AI中的难题。
头痛:结果通常是令人毛骨悚然的黑匣子,您可能对它们的作用感到困惑。
4. TypeScript
它看起来像JavaScript,并且旨在与浏览器和Node.js应用程序中的JavaScript具有几乎相同的功能。在编译阶段,编译器甚至将其转换为JavaScript。那为什么要打扰呢?
当没有操作导致未定义的行为时,TypeScript提供了一种类型安全性,这种安全性使许多程序员感到满意,这种类型使Java代码变得更加整洁和定义更好。开发人员在这里对JavaScript的更改不多;他们只是增加了一层,以确保数据类型对齐,这样您就可以在代码运行之前捕获一些最简单的错误。
它是流行的Angular框架的基础,并且越来越流行,因为您通常可以将其放到需要JavaScript的任何地方。
亮点:转换为JavaScript,使其广泛适用。
头痛:并不是每个人都看到了创建良好类型的代码所需的额外工作的美。
5. R
“大数据”一词可能不会像几年前那样在销售报告中引起人们的兴奋,但是对统计数据的需求继续主导着许多业务决策。如果有的话,现在的实践比以往任何时候都更加集成,这使得R(一种用于统计分析的语言)比以往任何时候都更加重要。
R是一种由统计学家和科学家设计的编程语言,旨在简化他们的工作。它具有数据分析中使用的大多数标准功能,并且许多最有用的统计算法已经实现为自由分发的库。数据科学家要做数据驱动型科学所需的大部分内容。
尽管它是用于创建任意函数的编程语言,但是许多开发人员在IDE中使用R作为高性能的暂存器,用于处理数据。这使其成为电子表格和图形计算器之间的混合体。
RStudio和RCommander是两个流行的前端,可让您加载数据,修改数据并将其作为图表和表格吐出。他们使它不再是一种编译运行语言,而更多地是一个可以在其中进行工作的交互式世界。
重点:用于选择数据子集并对其进行分析的巧妙表达式。
头痛:主要针对台式机,而不是Hadoop等技术主导的大数据世界。
6. Java 8
几年前,Java团队环顾了Java虚拟机(JVM)的世界,发现许多程序员使用JVM不仅可以运行Java。适应这种趋势的方法之一是通过在Scala中编写代码,该代码将功能性方法的所有功能和规则与选项结合在一起,以链接到浮动在网络上的数十亿Java归档文件中。
现在,Java程序员无需切换到单独的语言即可获得功能解决方案的所有优点。 Java 8是很好的旧Java,但是通过额外的功能机制又可以使您的代码并行化,从而再次使Java 8成为新的。
当然,您不必使用并行性。您可以坚持使用旧的Java,因为它仍然有效。但是,如果您不使用较新的功能,则将失去为JVM提供更多结构来优化代码执行的机会。您将错失从功能上进行思考并编写更简洁,更快速且错误更少的代码的机会。
重点:Lambda表达式和并发代码。
头痛:feeling不休的感觉使开发人员希望双手撑起来并使用Scala。
7.Go
Go已针对现代世界进行了调整,在现代世界中,大部分情报都位于服务器上,这些服务器杂乱了数千个发出数百万个API调用的客户端。它的意思是快速,轻便,它具有足够的功能来完成这项工作,而不会妨碍其他选择。
语言没什么太多,这就是重点。 Google想要一个根本上是基本的解决方案。正如一位创造者所说,它抛弃了其他语言中发现的许多更聪明的想法,并保持了足够的准确性,“足以使一个程序员牢牢抓住”。
Go中没有复杂的抽象或聪明的元编程结构-只是简单语法中指定的最重要的功能。
这可以使团队中的每个人都更轻松,因为当其他人从语言规范的更深层次中挖掘出一个整洁的主意时,无需担心。
亮点:只是一种用于处理数据的简洁明了的语言。
头痛:有时您需要一个不在这里的聪明功能。
8. CUDA
最初,视频卡只是为游戏玩家生成炫目的图像的东西,是用于处理数百万个三角形的专用硅片,因此人们可以幻想数十种精心制作的武器,以欺骗死亡,面对危险以及炸毁死亡和危险。
但是在这条线上的某个地方,一些聪明的程序员在后台进行了观察,并看到了通过释放游戏精心设计的计算火力来加速其代码的机会。
如今,许多视频卡可以模拟复杂的科学模型或运行复杂的AI算法。如果您对计算的需求很大,那么CUDA语言是释放图形处理单元(GPU)功能的一种好方法,可以杀死僵尸或机器人以外的其他方式工作。您甚至可以在云中租用它们的机架来解决您的问题。
使用CUDA的主要挑战在于学习识别算法的并行部分。找到它们后,您可以设置CUDA代码,以使用视频卡的所有固有并行功能遍历这些部分。
有些工作(例如开采比特币)非常简单,但其他挑战(例如分类和分子动力学)可能需要更多思考。科学家喜欢将CUDA代码用于大型多维仿真。
亮点:非常快的性能,至少对于并行代码而言。
头痛:确定最容易并行运行的代码部分并不总是那么简单。
9. YAML
如果您问大多数程序员,他们会选择一种编程语言。这是一种标记语言,然后“又是另一种”。但是,随着更多的代码层由这些曾经很琐碎的文件中指定的参数控制,您会在更多地方找到以JSON格式格式化的YAML配置文件及其表亲。
它们可能是编程游戏的典当,但是任何试图使其Node.js堆栈做正确的事情的人都将花费时间为他们的YAML文件中的按键苦恼。这项工作可能不算是完整的编程,但是这些字符的放置仍然可以使您拔出同样多的头发。
重点:该格式相对没有标点符号,但足够丰富,可以表示许多层参数。
头痛:除了基本格式外,结构和约定也可能千差万别。
10. DSL
DSL(首字母缩写词)用于指电话公司的Internet服务。但是对于开发人员来说,它的意思是“特定领域的语言”,这是一个普遍的,非特定性的术语,出现在各地。皱纹是字母不指一种特定的语言来学习和掌握。
DSL代表一种设计理念,即一种语言应针对手头的工作进行量身定制,而不是尝试成为一种可在任何地方使用的通用语言。因此,用于剧院照明控制器的语言可能包含用于打开和关闭灯光的关键字,但没有其他功能可用于将数据保存到文件或连接到LAN。专为运营钢铁厂而设计的另一种语言可能与高炉相接,但与某些用于将坐标转换为地图的API无关。
这些DSL的出现反映了设计人员如何意识到用户需求对于一些菜单,复选框或命令行参数而言过于复杂。 DSL用户希望通过在共享特定于域的数据的同时将特定于域的关键字串在一起来多行说明他们的需求。
each,每个DSL都不一样,这很重要。共享的首字母缩写并没有使DSL逻辑更容易被吸收。您无法学习一般的DSL认证,但是您应该准备越来越频繁地看到它们。
亮点:为许多应用程序带来真正的力量。
头痛:与各个领域不同。
持续关注工作流程
寻找计算机翻新商店,医院和汽车的巧妙方法的程序员也在努力重新设计自己的工作。他们通过增加更多的智能层来加快创建软件的速度,以便工具更快更聪明地发现错误。
最新的计算机语言使用起来更快,因为内置的智能功能使它们可以帮助程序员以更少的击键次数执行更多操作。他们通常也提供较少的错误。
较新的方法包括更多的结构和更多的抽象性,从而使语言的勇气可以完成程序员过去必须自己完成的工作。这些自动化功能为开发人员提供了更多的精力来专注于更大的问题。在许多情况下,它们还可以产生更好的性能,因为自动化机制能够更好地找到效率和并行计算的机会,同时消除了一些导致错误的简单错误。
这种自动化中的一些围绕着从实验室涌现到通用的体系结构和构想。从事人工智能(AI)工作的程序员曾经用自己喜欢的语言编写代码。现在,像TensorFlow这样的某些库已经足够稳定以至于可以广泛部署,并且它们的API几乎就像是一种语言。
程序员专注于将这些API调用串联在一起,其方式与将循环或函数串联在一起的方式几乎相同。
此列表中的某些所谓语言可能不被视为官方计算机语言。程序员通常会区分使他们能够表达任意算法的完整计算机语言(通常被标记为图灵完整)和较少的字符集,从而使他们仅拼出几个参数或一些配置细节。
但是,这种区分可能是哲学上的,并且可能仅对大学讨论和酒吧辩论很重要。因为有时候阻止您回家的唯一原因就是正确的角色是否在正确的位置。敲击头发以尝试使所有事情正确执行时,击键是否表达某种值得被称为完整语言的语法并不重要。
这10种语言正在改变我们告诉计算机做什么的方式。尽管其中一些语言是新语言,但其他语言已经非常流行。尽管我们有时会这样想,但有些语言根本不是真正的语言。
事半功倍
清单上的项目没有太多共通之处,除了程序员可能正在慢慢找到使每种键向下倾斜这些语言并使所生成的代码更简洁,功能更强大的方法之外。 在某些情况下,这些语言充当了通往诸如AI或大规模并行算法之类的全新选择的门户。
这并不是完全自动化,但是这些语言使程序员更容易在更少的时间内完成更多的工作。