您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

让程序员心动的11种新编程语言

时间:2022-05-31 13:19:53  来源:  作者:51CTO

译者 | 翟珂

亚历山大-波普说过“人类的希望是永恒的”,虽然波普是个诗人,不是极客,但我相信他能够理解发现一种新的编程语言时的期待感。他知道软件开发人员永远期待一种语言,能够以其独特的Unicode字符组合,解决我们所有的问题,使编码变得更简单,甚至只需点击几下即可。

他也肯定会理解我们对一种新的语法的渴望,这种语法是如此直观,以至于我们只需要想象要做什么,然后就能够使用语法清晰的表达出其中的逻辑。这是一种对新代码的渴望,这种代码看起来就像三段式(Triple axel)、梭鱼式(inward three and a half)或奥运会上的大回转跑那样毫不费力和优雅。

然而,大多数现代编程语言建立的初衷并不是创作者异想天开或为了展示他们的编码能力。它们是针对创作者需要解决的一个常见问题而产生的。虽然大多数开发者会继续使用一种或多种更老、更成熟的语言进行日常编码,但我们永远在寻找新的语言来帮助我们解决编码问题。我们可以看到这种趋势,尤其是在特定领域语言或 DSL 的崛起。这些语言紧凑且集中,它们不适用于通用用途,但是正是出于这个原因,可能会在你的工具箱赢得一席之地。

这里有 11 种较新的语言,并且都已经找到了自己的用途。有些是 DSL,旨在做好一件事。其他的,似乎要拯救世界。即使你现在不需要它们,但它们都能让我们的计算机把要做的事情做得更好。

1.Reactive Clojure

Reactive Clojure是Clojure和React的结合体:一个将反应式前端的所有可能性与 Clojure 坚实的功能优势相结合的系统。你可以使用Reactive Clojure布置一个复杂的前端组件集合,并使用函数将它们串连起来。反应式框架能够处理这些细节,并且确保应用数据在组件和数据库之间流通。Clojure则提供功能基础,使非常规的用例成为可能,并且可调试。

这看起来简直是天作之合,但还需要通过时间的检验。Reactive Clojure是一个将前端组件结合在一起的好选择。它的多线程模型与多任务的复杂性和反应式仪表板自然匹配。

2.Nickel

有时,程序员会将大部分工作花费在配置文件上,这些文件通常用JSON、YAML甚至XML编码。在某些情况下,你甚至不需要写具体的代码,只要不停地切换各种配置文件来完成工作。

Nickel的诞生就是为了解决这一问题,它是一种用于创建配置文件的编程语言。你可以用Nickel来创建非静态的配置文件。一个参数的值可以发生变化,在一周内可以是一个值,在周末则是一个不同的值。在运行Nickel时,它会创建一个新的配置文件,以适应它收到的所有参数。

Nickel的结构在很大程度上是功能性的,而且可以使用类型检查。一段非常好的Nickel代码几乎可以保证输出遵守句法规则和任何其他需要执行的规则。你可以编写代码来创建配置文件,然后再对其他代码进行管理,这听起来有些滑稽。但对于现代架构来说,这是一个非常实用的解决方案。

3.Kobra

Kobra的创造者希望有一种语言能够为工程师、科学家和其他不那么专业的编码者开放机器学习,于是这个机器学习的视觉语言就诞生了。Kobra的编辑器用拖放块组成了类似代码的序列,这些块用于统计分析和机器学习的常见内置例程。这个过程感觉就像R语言,它的数据框由表格数据和一组用于创建仪表板和论文的图形显示函数而组成。

4.Bicep

这是云计算最有用的功能之一,能够启动和关闭服务器,用以处理数据激增。数据中心的硬件团队曾经需要花费数周时间来申购、安装、测试和配置一台机器。现在,云让你在几分钟甚至几秒钟内完成所有这些工作。

许多敏捷开发团队已经开始为不同云支持的各种API编写代码。微软为在Azure中启动机器创建了一种简化的语言,作为其基础架构即代码理念的一部分。

Bicep 语言提供了一种高效的声明式格式,可以编码出开发人员希望在新实例中的应用。一些基本的类型安全可以帮助防止错误,并且 VS Code 中提供了一个语法感知编辑器。该语言本身是为对基础架构进行高阶思考而设计的,具有强声明性结构,允许你以任何顺序包含指令,让 Azure 的资源管理器优化执行。

5.Frink

使用浮点数出现错误带来的开发风险是众所周知的,相当多的Bug是由于不注意的数字格式造成的。

Frink正是为解决这一问题而创造的,它是一种有“单位意识”的语言。Frink中的每个变量不只是持有一个数字,而且还标明了计量单位(几乎所有的计量单位),比如吨、瓦、英尺或者米。这使单位转换变得很容易,Frink的核心机制在于使用任意精度的数字来减少四舍五入的问题。这就像一种对于测量单位来说的类型检查。

6.Faust

声音合成对于游戏开发、VR和任何依赖良好音质的应用都非常有用。而Faust就是这种特定领域的语言,它的结构是纯功能的,并且每一个功能都建立了一个声音处理管道。它的后端将传入的声音分解为数字表示,而代码本身是一组可以组成最终结果的函数。比如,你可以通过分割代码输出并引入延迟来创造一个回声和混响。另外,Faust的代码可以转译成C++、C、LLVM Bitcode、WebAssembly、Rust和其他一些语言,因此你几乎可以在任何项目中使用它。

7.Melrōse和Glicol

任何编写代码的人都知道程序员如何组建一个乐队。写一些代码,为鼓机拼出节奏,然后用子程序取代所有其他的乐队成员,用这种方式甚至能建立一个完整的交响乐团。

Melrōse和Glicol就是为这种音乐创作方式而生的编程语言。使用这两种语言你只需要用几个按键就能创造出一个看上去精心制作的作品。Melrōse围绕西方音乐中常见的标准十二音度的高层次工作。音符被分组为序列,软件处理大部分的细节工作,如移调。输出到任何具有MIDI功能的乐器上,代码也可以对通过MIDI端口进入的信号作出反应,因此运行Melrōse代码可以代替一个乐队成员。

Glicol是一个基于Rust的工具,它能完成许多和Melrōse相同的任务,但级别较低。Glicol可以与数字信号处理相结合,可以提供广泛的音乐类型选择。该工具旨在通过其开源的音频引擎产生可用于浏览器的声音。正如其开发者所说:“入门费用低,上限高。”,用于鼓励与所有会此技能的人合作。

8.WebAssembly和Wase

将指令传送到计算机的最有效方法是将它们编码为二进制并将它们限定为 CPU 使用的基本操作集。每个芯片都有自己喜欢的二进制语法,Pascal 或 JAVA 等一些语言有一种中性的二进制格式,可以在本地虚拟机上运行。WebAssembly为Web浏览器提供预先处理的二进制代码,并以标准格式与文本相结合。其目标是用更容易运行的、接近本地速度二进制格式来代替构建Web应用程序的JavaScript代码。

许多开发者使用WebAssembly但不直接编写,而是用编译器将高级语言转化成WebAssembly,并在浏览器中运行。还有一个举措就是创建低级语言,以人类可读的形式公开WebAssembly的大部分基本结构。Wase就是这样的一种选择,它提供了一种类似C的语法和强类型。

在Web浏览器之外,也有WebAssembly的用武之地,作为一种通用的编码指令方式,其堆栈机类似于Java的JVM。例如,Redpanda是一个流媒体数据平台,它为开发者提供了一个机会,当数据通过WebAssembly编写的代码进入管道时,可以对其进行调整或修改。

9.Java 17

从某种意义上来说,Java并不能算是一种新的语言。Java最伟大的地方之一就是,它的开发者在维护与旧版本的兼容性方面做得很好,对于最新的JVM来说,编译10年甚至20年前的代码通常很容易。虽然这些代码不能保证能正常运行,但它仍然比几乎任何其他语言更容易编译。并且Java团队拥有一套包含数百万个集成测试的套件。

将Java 17列入这个名单是因为它已经非常现代化了,以至于1990年代的开发者肯定认不出是Java。它有许多额外的功能和扩展,能够改变开发者的编码方式。

比如增强的随机数发生器或更严格的浮点数学语义,解决了编写非常复杂的数字代码的难题。编写会计系统的开发人员可以使用整数来保存钱的数量,但那些处理AI算法和复杂线性代数的开发人员则需要浮点数。

其他的,如强封装和扩展的switch语义,为核心语言带来了规范性和灵活性。总而言之,由于所有这些改进,使编写更强大、更安全的代码比以往任何时候都容易。它的核心仍然是Java,但附加功能有所不同。

原文链接:https://www.infoworld.com/article/3658204/11-new-programming-languages-to-make-a-coders-heart-sing.html



Tags:编程语言   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Rust编程语言的内存安全与性能:如何平衡?
Rust编程语言自诞生以来,就以其独特的内存安全特性和高性能而备受瞩目。然而,如何在保证内存安全的同时,实现高效的性能,一直是Rust开发者们面临的挑战。本文将深入探讨Rust的内...【详细内容】
2024-04-12  Search: 编程语言  点击:(12)  评论:(0)  加入收藏
主流编程语言哪个更容易学?
主流编程语言哪个更容易学?在当今数字化时代,编程语言已成为一项重要的技能,越来越多的人开始学习编程。然而,对于初学者来说,选择一门容易入门的编程语言是至关重要的。在本文中...【详细内容】
2024-01-31  Search: 编程语言  点击:(150)  评论:(0)  加入收藏
用于人工智能开发的主流编程语言都有哪些?
在人工智能开发领域,编程语言的选择至关重要。目前,主流的编程语言主要包括Python、Java、C++、JavaScript和Swift等。这些语言各具特色,适用于不同的人工智能开发场景。首先,Py...【详细内容】
2024-01-31  Search: 编程语言  点击:(141)  评论:(0)  加入收藏
选择适合微服务的编程语言,让你的工作事半功倍!
讨论编程语言就像是一场政治辩论。每个开发者都会过分捍卫他/她所使用的编程语言。然而,编程语言应该被看作是它们真正是的东西,即一种工作工具。每种编程语言都有特定的目的...【详细内容】
2023-12-14  Search: 编程语言  点击:(183)  评论:(0)  加入收藏
编程语言大比拼:Python、Java、C、C++、Go 实现 'Hello World' 和九九乘法表"
应该90%的IT专业的朋友写的第一段代码就是打印"holle world",每个大学老师都会通过这个方式吸引你对课程产生兴趣。也许有的朋友学的是JAVA开发,有的学的是c,在几年前应该很...【详细内容】
2023-12-11  Search: 编程语言  点击:(221)  评论:(0)  加入收藏
谷歌AI大模型Gemini亮相:擅长复杂学科推理,能懂编程语言PK GPT-4
美国科技巨头谷歌今日宣布推出人工智能模型Gemini,并针对三种不同的尺寸优化了 Gemini 1.0:Gemini Ultra——谷歌最大、最有能力的模型,适用于高度复杂的任务。Gemin...【详细内容】
2023-12-08  Search: 编程语言  点击:(152)  评论:(0)  加入收藏
面向AI开发的六种最重要的编程语言
作者丨FATIH KÜÇÜKKARAKURT 译者 | 布加迪审校 | 重楼出品 | 51CTO技术栈(微信号:blog51cto)在AI开发界,你使用的编程语言很重要。每种语言有其独特...【详细内容】
2023-12-07  Search: 编程语言  点击:(123)  评论:(0)  加入收藏
Python是什么样的编程语言?有哪些特点?
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其...【详细内容】
2023-11-25  Search: 编程语言  点击:(230)  评论:(0)  加入收藏
一文了解低级和高级编程语言
中文是一种尽量用简短文字表达更多含义的语言,所以很多时候一句话的含义很容易曲解成别的意思。最近,有人提出C语言是一种中级语言的概念,所以特意介绍一下低级语言和高级语言...【详细内容】
2023-11-23  Search: 编程语言  点击:(232)  评论:(0)  加入收藏
AI 编程语言 Mojo 登陆 Mac 平台
10 月 20 日消息,Mojo 编程语言近日登陆 Mac 平台,为 AI 开发人员带来类似于 Python 的编程体验。Mojo 编程语言的开发工作由 Chris Lattner 领导,他同时也是苹果 Swift 编程语...【详细内容】
2023-11-20  Search: 编程语言  点击:(142)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(3)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(15)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条