本文概述
对于某些人来说, 最好避免使用一种新的编程语言。为什么, 为什么呢, 他们争论, 我们还需要另一种语言吗?
我们还不够吗?
现有工具无法完成工作吗?
然后, 还有一些孜孜不倦的搜寻者, 他们抓住机会尝试新事物并绊脚石。对他们来说, 学习本身就是目的, 而他们并不需要太多说服力就可以用这种晦涩的新语言来消磨周末来制作基于主机的纸牌游戏。
无论你属于哪个阵营, 都有一些争议不言而喻:我们都希望将时间花在拥有光明前景的事物上。
对于传统营地中的人们来说, 他们最喜欢的现有语言已经拥有巨大的动力, 并将继续拥有光明的未来。对他们来说, 我必须提醒他们, 他们现在成熟的首选开发工具链曾经是”苦瓜援助”, 许多人拒绝喝酒。今天也是如此;添加了新技术来解决新问题或减轻开发的痛苦。
如果某种事情能够从根本上做到这一点, 那么它很有可能会继续抢占市场份额并达到顶峰。发生这种情况时, 你不想被抛在后面。 ????
对于那些喜欢使用闪亮的东西的人, 警告:作为程序员, 获得乐趣是必不可少的, 但是我们必须小心, 不要漫无目的地浪费我们的精力。
当然, Brainfuck是一种令人难以置信的扭曲, 类似拼图的有趣小语言, 但认真追求它不会使你受益。你需要新的, 明智的并且有坚实基础的东西。
如何选择这些语言
语言选择是一项令人生畏的工作, 尤其是在考虑使用新语言以带来就业和满意度的未来利益时。每位语言作者都坚信他们已经建立了完美的语言, 并解决了所有需要解决的问题。那你怎么剪呢?
在这篇文章中, 我重点介绍了一些参数, 以使搜索范围保持合理。
发布日期
我特别避免使用非常非常新的语言。
新的, 我指的是截至撰写时不到5-6年的语言, 尤其是那些尚未达到稳定状态(即1.0版本)的语言。不幸的是, 这排除了某些真正的宝石, 例如Crystal。但是我确实希望回到这一点, 并有朝一日写下它的成功。 ????
Crystal中的代码段(“快速使用C, 轻巧作为Ruby”)
对我来说, 5-12岁是最佳时机, 这是一门语言稳定下来并正在进一步完善的时候。当然, 现在有此规则的例外, 将在适用的情况下考虑这些例外。
强烈的社区兴趣
这很容易, 但是当我们对新事物感到兴奋时, 它常常会被忽略。现在, 对于许多人来说, 大公司的支持足以获得成功, 但并非总是如此。
是的, Apple的Objective-C和现在的Swift蓬勃发展, 因为它们是高度受控的生态系统中的唯一选择, 但是Facebook的D和Hack(我认为这是一种已经很丑陋的语言的丑陋外观)只不过是实验而已。
理想的组合是一种由大型稳定公司支持并迅速普及的语言(例如React)。
但问题的实质仍然是社区。如果一种语言没有引起人们的关注, 并且没有足够的开发人员进行教育和普及, 那么它就不会从GitHub的坟墓中爬出来。
对我来说, 这排除了成熟而有趣的语言, 例如Racket和Erlang, 因为它们在增长曲线上保持平稳。
重点明确的USP
我要寻找的第三件事是该语言的明确目标。例如, 对我来说, 无法解决命名问题并编译为原生PHP的更好版本的PHP无效。
好处太小了, 不足以证明如果每个人都尝试使用它会出现裂缝。以此为准绳, 我忍不住拒绝了CoffeeScript等尝试和许多其他类似的JavaScript编译语言。
老实说, 我一定会立即放弃仅语法上的改进。历史表明, 在语言方面, 实用性比友好性更为重要, 因此, 如果所有新语言都专注于一种更愉快的体验, 那么恐怕它不会进入该列表。
清晰一致的语法
是的我知道。我只是说语法没关系。好吧, 确切地说, 我说过”仅语法改进”并不重要。但这就是说, 语法仍然是影响程序员工作效率和可维护性的重要因素之一, 因此, 在我的计算中, 它必定具有一定的意义。
伴随语法的是一致性的思想。函数命名, 模块结构等是语言无法承担的关键。看在上帝的份上, 这是2018年, 而另一个类似PHP的语言设计对我们所有人来说都是可耻的。因此, 事不宜迟, 让我们开始介绍我们的前五项建议。
Julia
对于麻省理工学院的人来说, 可用于数据科学的语言充其量只是一种妥协。 Python尽管具有清晰性和流行性, 但缺少用于处理数据对象的本机结构。另外, 作为一种解释型语言, Python对于它们来说很慢(请注意, 不是库, 因为它们主要是用C编写的)。
但是, 最大的障碍可能是笨拙的并发模型, 以及缺乏并行计算模型, 而后者却是超级计算的主要内容。
结果, Julia出生了。
Julia于2018年9月29日达到稳定版本, 距离撰写本文仅短短几天时间(谈论时间!)。这是官方网站必须说明的功能:
Julia擅长数值计算。它的语法非常适合数学运算, 支持许多数字数据类型, 并且开箱即用即可使用并行性。 Julia的多重分派非常适合定义数字和类似数组的数据类型。
在语法方面, 可以将Julia视为Python和C的组合。是的, 这可能是语言首次针对这两种特性并取得成功。
为简单起见, Julia没有强制使用严格的输入法, 但仍在快速发展。以下是一些基准:
官方Julia基准
如你所见, Julia比C稍差一些, 但是却使Java和Python望尘莫及。Julia提供什么样的糖果呢?
好的, 这是一个用于计算直角三角形的斜边的函数的实现:
最后, 尽管Julia的大多数生态系统都非常倾向于数学工作, 但我相信它具有光明的通用用途。
据我所知, 这是对并行计算具有一流支持的第一门语言, 因此看到它在Web和IoT领域中越来越流行也就不足为奇了。
Rust
如果你尝试了新版的Firefox浏览器, 则可以知道, 经过多年的努力, 看起来他们似乎可以从Chrome夺取一些市场份额。
如果浏览器感觉轻巧, 敏捷并且可以快速渲染, 则全靠Mozilla专门开发的语言:Rust。
说鲁斯特的前途光明, 将是一个谎言。该语言已经取得了巨大的成功, 如果你还没有听说过它, 那是因为它的应用领域很专业, 并且目标令人震惊:替换C ++!是的, 我们终于有了一种语言, 它不仅能够执行此操作, 而且已经在执行此操作。
对于那些对C ++负担过重的设计和内存管理挑战感到沮丧的人来说, Rust像是新鲜空气。
Rust程序如下所示:
我认为简洁大方。 Rust遵循函数式编程方法, 该方法使你的代码更具可组合性, 并且不存在任何面向对象的层次结构。
那么, 是什么赋予Rust勇于追求C ++的勇气呢?这是新的内存模型。 Rust不再依赖旧的new()/ delete()舞蹈, 而是引入了所有权概念。
Rust变量不是直接分配和访问内存, 而是在编译器施加严格限制的情况下彼此”借用”。总体概念过于复杂, 无法用几句话来解释, 因此请随时查看官方文档以了解更多信息。
关键是, 这无需垃圾收集器即可实现100%的内存安全性, 这很重要。
Rust席卷了系统编程领域。它已在某些平台上得到支持, 强大的浏览器和渲染引擎正在迅速取代生产系统上的C / C ++代码, 并被用于编写操作系统。
当然, 并不是每个人都可以创建另一个浏览器或设备驱动程序, 但是Rust已经将自己推广到其他域。在Rust中, 我们已经有几个功能齐全, 速度非常快的Web框架, 并且正在开发越来越多的应用程序库。
老实说, 如果你对激动人心的未来感兴趣, Rust是完美的语言, 现在是完美的时光。 Rust是一架已经起飞的飞机, 但前往星空仍有时间上飞机!
向Dmitri Nesteruk学习Rust。
Elixir
在关注开发人员幸福感的语言中, 第一位已永久保留给Ruby。这是一种像诗歌一样朗读的语言, 并且具有足够的捷径可以将精神摩擦减少一个数量级。
因此, 难怪Rails框架继续主导着认真的开发人员和初创公司的全栈开发。但是并不是所有人都对Rails感到满意, 尤其是其核心开发人员之一JoséValim。我认为创作者本人在采访中最能解释这种语言的起源:
这是一个漫长的故事, 但我会尽力使它简短而有趣。早在2010年, 我就致力于在与多核系统一起工作时提高Rails的性能, 因为我们的机器和生产系统都在交付越来越多的核。但是, 由于Ruby没有提供解决并发问题的适当工具, 所以整个体验非常令人沮丧。从那时起, 我开始研究其他技术, 最终爱上了Erlang虚拟机。我开始越来越多地使用Erlang, 并随着经验的积累, 我发现我缺少了许多其他语言(包括功能语言)中可用的结构。那时, 我决定创建Elixir, 以尝试在Erlang VM之上引入不同的构造和出色的工具。
而且, Elixir诞生了!
就像Scala在Java语言上进行了改进但在其下针对同一虚拟机(JVM)一样, Elixir也利用了数十年来久经考验的Erlang虚拟机。
现在, 有关Erlang的讨论已经超出了本文的讨论范围, 但是你应该知道的最低要求是, 它是电信行业最有效的秘诀:如果我们的电话网络比基于Web的系统可靠得多, 这一切都归功于二郎
用更简单的术语来说, 这就是这个意思。如果你要构建像聊天这样的实时系统, 那么Elixir的RAM需求和稳定性要比Ruby(或PHP, Python和Java)少得多。
一台运行Ruby的机器最多可以建立10, 000个并发连接, 使用Elixir时可以轻松处理200, 000, 并且仍然有足够的RAM来运行2D游戏!
Elixir代码段
在语法上, Elixir无耻地复制了Ruby, 而其主导的Web框架Phoenix则无耻地复制了Rails。我想说这也是一件好事, 因为与Laravel, Grails, Masonite等一起, 我们已经达到了一种点, 即所有语言都有类似Rails的框架, 可以简化过渡。有些人可能会嘲笑”缺乏创意”, 但至少我没有抱怨。
最后, Elixir是令人耳目一新, 令人愉悦且该死的实用技术之一。几家Ruby(甚至是非Ruby)商店都转移到了Elixir, 像Pinterest这样的大公司正将其用于生产, 并取得了令人满意的结果。
许多人认为Node.js是并发的临时尝试, 很快就会被Elixir取代。我必须说我同意他们的观点。 ????
Kotlin
在2017年I / O中, Google向毫无戒心的人群释放了一颗炸弹。该公司正式宣布Kotlin作为Android开发的主要语言, 在业界引起了震动。
现在, 谷歌一直在积极寻求替换Java, 这在受到甲骨文诉讼的痛苦之后并不奇怪。但是, 采用Kotlin有点出乎意料, 而且Google很有可能很快就会推出其虚拟机。不过, 就目前而言, Kotlin正处于激增状态。
Kotlin由JetBrains开发, JetBrains是一家以出色的出色代码编辑器套件而闻名的公司。其中之一IntelliJ IDEA构成了Android Studio的基础。 Kotlin的设计目标是安全性, 简洁性和与Java的100%互操作性。
最重要的是, Kotlin编译器在消除Java世界中常见的任何空指针异常方面付出了更多的努力。它还大大降低了Java众所周知的冗长性, 这将使许多人松了一口气。
这是Java和Kotlin之间的精彩代码比较:
Kotlin代码明显更短, 并且可以减轻认知负担。
但是, 让我们澄清一件事:Kotlin极不可能取代Java, 尽管它正迅速成为人们的最爱。我相信, 未来十年, 中小型团队的眼光与Kotlin差不多, 而大型团队将纯粹出于遗留原因而继续使用Java。
也就是说, Kotlin拥有光明的未来, 因为它可以完成Java所做的一切, 可以与Java代码合并而无需任何人注意, 并且更加令人愉快!
TypeScript
上帝知道我必须为这个地方克制自己!我内心的一切都在尖叫”榆树! ” Elm!”, 但无论其思想有多么革命性或语法多么神圣, 都尚未将Elm视为前端工作的主流替代方案。 ????无论如何, 让我们继续探讨主流:TypeScript。
JavaScript就像野生浆果:丑陋且令人讨厌, 但如果要在前端开发的丛林中生存, 就必须忍受它。已经进行了很多尝试来替代它(很可能新的WebAssembly标准将会成功), 但是真正引起大家关注的是Microsoft开发的超集。
你曾经听说过TypeScript的机会非常多:Angular是从版本2开始使用该框架的第一个框架, 人们很快注意到了这一点。这是因为TypeScript为世界上最著名的编程语言添加了一些急需的, 超凡的超能力。
是的, 最终可以编写本机JavaScript代码, 而无需遭受痛苦和诅咒!
以下是TypeScript带来的增强功能:
✓强类型:最后, 字符串不是数字, 数字不是对象, 也不是空数组!
✓编译时类型检查:如果你的代码正确编译, 则或多或少可以保证它不受JavaScript运行时的困扰。
✓类和模块:是的, 类在ES6中是标准的, 但除了整洁的模块系统外, 它们还包括在TypeScript中。
✓类型推断:对于复杂类型, 编译器可以很容易地找出类型, 从而省去了一些麻烦。
✓Async / await:async / await关键字和模式是基本的, 因此不再麻烦Promises和Callbacks!
命名空间, 泛型, 元组。 。 。我可以继续进行下去, 但是可以说TypeScript将最差的开发经验之一转换为最好的开发经验之一就足够了。
TypeScript代码段
不能否认TypeScript的影响。它推动了类似Google Dart之类的尝试(尽管它正在尝试通过移动开发框架Flutter进行卷土重来), 并使JS开发人员看到了更强大的类型带来的好处。
结果, 像React, D3, Vue(甚至是jQuery!)之类的重要库现在都具有TypeScript版本, 并且在全球最好的软件商店中, 所有JavaScript代码都被编写为TypeScript代码。 TypeScript标头现在也可用于Node.js(老实说, 如果节点可以改善其并发性并修补其糟糕的内存管理, 它将永远存在)。
你可能会惊讶地发现, Node.js的创建者在公开表示遗憾之后, 正在开发以TypeScript为主要语言的新运行时(目前尚无官方网站;只有GitHub存储库)。
最好的消息? TypeScript是一门小语言, 将来会受益匪浅。如果你是JavaScript中级开发人员, 那么你将在两天内选择足够的TypeScript来移植所有现有代码!
结论和免责声明
特定语言正获得与本文中相同的流行, 但由于各种原因未包含在列表中。快速浏览:
- Golang:已经成为主流语言, 如果不是很流行的话。我确实相信Golang目前有几个竞争对手, 这将使其市场份额保持低位。
- R:R在数据科学家中已经很热门, 而且不太可能吸引应用程序开发人员。此外, 我们不要忘记机器学习库正在慢慢地进入所有主要语言(出于上帝的缘故, 甚至PHP现在也有它们!), 因此你需要做的就是等待一段时间。 ????
- Swift:Apple对他们的生态系统有着坚定的控制, Swift是那里唯一可用的语言。毫无疑问, 早期的Objective C像现在一样迅速流行。我认为这是作弊行为, 因此拒绝将其包含在此处。 ????
未来永远是不确定的, 而事业发展的一种方法就是坚持工作, 拒绝”分心”。如果这样做, 那么Java, PHP, Python, Ruby等都是值得坚持的出色语言。但是, 对于我们中的某些人来说, 仅凭规范还不够。他们想出去探索并押注未来。如果你属于后者, 那么这五种语言中的一种应该在你的待办事项清单上。
最后, 在尝试评估一种语言时, 不要让所有的努力使你不知所措, 因为那不是很多。如果你已经知道几种编程语言, 则可以每周最多花费5-6个小时在最多两个月的时间内学习其中任何一种。而未来可以产生的幸福感和金钱回报将是原来的几倍。
我在这里错过了一些重要的语言吗?也许我对这里列出的语言有误?如果是这样, 请发表评论并帮助我改进。 ????
评论前必须登录!
注册