我们又爱又恨的 8 种编程语言——但离不开它

不要怀恨在心的建议可能是善意的,但它肯定不是来自任何以计算机为生的人。 在编程语言的地狱般的逻辑上辛勤工作任何时间,你就会知道最严重的错误所在的漆黑虚空的恐怖。

粉丝们喜欢吹捧他们最喜欢的编程语言的优势,并歌颂他们将带给您编码手指的直观魔力。 几乎每一种编程语言都是由一个有着简化编程工作的宏伟计划的人创建的,并且创建者通常会成功——至少在狭义上是这样。 问题是通常会有次要或第三次效果不那么好。

尽管编程语言带来了所有好处,但总会有一些麻烦、一些烦人的怪癖或不一致会毁了一个晚上、一个周末,甚至整个财政年度。

las,我们开发人员对此无能为力。 安装基数可能太大而无法抛弃让我们厌烦的语言。 老板可能非常喜欢一堆,以至于他们拒绝听到隔间农场的尖叫声。 通常,对于什么可能是好的替代品甚至没有任何一致意见。

残酷的事实是,可能没有更好的选择。 我们已经在使用人类可以构建的最好的工具。 从哥德尔和图灵那里,我们了解到逻辑机制有锋利的边缘。 当然,也许这是我们自己的错,我们人类,滥用或错误编程。 但是当一种编程语言迫使我们的大脑做出奇怪的瑜伽姿势时,我们很难不把我们的不满归咎于它。

尽管如此,了解不同编程语言的局限性还是可以更轻松地围绕它们进行编程。 如果我们不能从我们的存储库中永久删除这些语言,我们可以尝试理解和预测它们的特性。 此外,发泄有时会有帮助。 这里有八种我们又爱又恨又离不开的编程语言。

C

C 是一种可能更适合称为“可移植汇编程序”的语言,而不是一种完整的计算机语言。 有人喜欢写单独的头文件吗? 有没有人使用预处理器来做一些精心设计的东西而不会有点生气?

从理论上讲,我们应该能够利用指针算法的强大功能来完成巧妙的壮举,但是除了分配数据结构之外,还有人会冒险做更多的事情吗? 对指针过于聪明甚至是个好主意吗? 这就是代码中断的方式。 如果你能变得聪明,通常需要写很长的评论来记录它,几乎耗尽了你因聪明而节省的所有时间。 谁能记住编写 C 代码以避免添加所有可能的安全漏洞(如缓冲区溢出)的所有规则?

但我们别无选择:Unix 是用 C 编写的,它运行大多数手机和大部分云。 并非每个为这些平台编写代码的人都需要使用 C,但必须有人与星号和花括号保持同步,否则一切都会崩溃。

甚至 Unix 人员也开始远离 C。在过去的几年中,一些 Linux 内核的补丁开始出现在 Rust 中。 开发人员认为该语言更严格的结构将防止 C 开发人员在聪明时留下的一些安全漏洞。 不过,这种转变需要数年时间,而且我们编写和研究 C 指针的时间可能比我们运行 Cobol 的时间还要长。

JavaScript

JavaScript 的创造者试图创造一些现代的东西。 太糟糕了,他们的才华永远注定了我们要过着计算大括号、方括号和圆括号的生活——当然还要确保它们都正确嵌套。 在匿名函数、闭包和 JSON 数据结构之间,我们的小指得到了敲击这些键的真正锻炼。

然后是奇怪的细节。 如果 x 是包含字符 1 的字符串,则 x+1 将生成字符串 11,而 x-1 将生成数字零。 有没有人记得两者之间的区别 false, null, NaN, 和 undefined? 它们听起来很相似,但为什么 JavaScript 有这四个呢? 为什么他们的行为不一致?

然后是快速的变化。 新的 JavaScript 通常看起来与旧的 JavaScript 完全不同,这要归功于用于解包和打包、展开或展开对象和对象数组的新功能。 代码看起来像一片由双引号、三重引号、双问号和三重点组成的海洋。 请记住“=>”是一个调用函数的箭头,但是“>=”是一种比较数字的方法。 如果您喜欢这些新功能,那么它们会很棒,但是我们其他人都感到困惑,并且一直在处理 ECMAScript 版本号,并且想知道在输入某些版本的代码时是否某些浏览器会呕吐。

唉,互联网、Web 和数不尽的浏览器哪儿也去不了。 然后超级聪明的 Node.js 团队出现并构建了一个在服务器上运行 JavaScript 的平台。 现在,它是构建现代、渐进式 Web 应用程序的最流行方法之一。 编码人员正在庆祝在浏览器和服务器上运行的同构代码的自由。 开发人员抱怨多少并不重要。 几十年来,我们将一直在处理匿名函数和闭包。

PHP

PHP 并不是真正的计算机语言; 它更像是一种为静态 HTML 添加一些智能的工具。 您可以将信息存储在数据库中并将其与静态标签连接起来。 可能还有更多功能,但似乎我们使用 PHP 所做的一切都是将我们从数据库中获取的字符串粘合在一起。

好吧,事情就是这样。 一些 PHP 的创建者将我们所有的抱怨都放在心上,并添加了一些功能,例如更强大的类型系统、更智能的字符串以及与 MySQL 更好的集成。 PHP 更适合它,它支持更精细的代码库。 所有这些听起来不错,但不要对改进感到太兴奋。 在开发人员添加新功能的同时,他们也在弃用一些旧功能。 这意味着旧代码停止工作只是时间问题。

争论玩具代码或婴儿语法是不值得的。 在 WordPress、Joomla 和 Drupal 之间,网络上的大部分内容都是通过 PHP 代码交付的。 然后是 Facebook(或 Meta),它主要是用 PHP 编写的,并且继续占用我们很大一部分时间。 我们应该感到高兴的是,Facebook 构建了 HipHop 虚拟机 (HHVM),启发 Zend 创建 PHP 8.2。

这些新的 PHP 引擎通常快两倍,这是一种不可抗拒的速度提升,将节省数百万的电力,并确保我们在未来很长一段时间内都可以编写 PHP。

Cobol 于 1959 年问世,现在应该已经过时了,其复杂的语法充满了数百个受限制的单词。 然而,Cobol 爱好者不断生成新版本,从其他语言中借鉴想法,并将它们固定在一个已有 60 多年历史的框架上。 你知道有一个叫做 Cobol 2014 的东西吗? 它包括动态表,这是人们自 2002 年以来一直试图进入该语言的想法。然后是 Visual Cobol 8.0,它可以将您的 Cobol 与 Java 或 .NET 代码链接起来,从而比以往任何时候都更容易保持旧代码的运行和与更现代的堆栈一起运行和运行。

我们可能有更好的工具来编写业务逻辑来操作数据库,但似乎没有人在意,因为购买更大的计算机并保持 Cobol 代码运行更容易。 Cobol 爱好者指出,旧的软件逻辑永远不会磨损,那么为什么要冒着通过尝试更新它而引入错误的风险呢? 在我打字时,Dice.com 上列出了 346 个工作,其中包含 Cobol 一词。 各地的保险公司和国防承包商都有 Cobol 职位。 早期的大型机采用者仍然使用 Cobol 来完成工作。 计算机科学家可能会惊恐地退缩,但只要客户还在排队,老板们就会说:“如果它没坏,就不要修理它。 只需购买更大的主机即可。”

R

R 是为数据科学而开发的,并且仍然被数据科学家广泛使用,尽管有些人已经转向 Python,因为他们发现 R 太神秘了。 一些传统的程序员被 R 的交互特性所抛弃,有时被称为它的“便签本模式”。 任何需要添加几个数字或计算数据集的标准偏差的人都可以在 R 的命令提示符中键入几个字符并立即得到答案。 R 既是一种工具,也是一种用于构建事物的编程语言。

语言本身可能有点奇怪和令人困惑。 许多命令都设计得快速而简洁,如果您在实验室里玩杂耍试管并要求 R 一边计算一个数字,这将非常有用。 像逗号这样的标点符号非常强大,我发现解决我的问题的方法是添加另一个逗号。 几个小时的头痛,都是因为缺少一个最微小的标点符号。

R 的句法之谜和数据结构挑战让数据科学家感到沮丧——在未来的几年里,他们仍将如此。 R 包和库的安装基础几乎无法抗拒。 R 生态系统广泛且不断发展。 许多软件包都是开源的,可以通过快速图表或回归来回答您的问题或您老板的要求。 在 R 中找出双括号比用你最喜欢的语言重写无穷无尽的包要容易得多。

爪哇

虚拟机和库可能可以追溯到 90 年代,但 Java 的语法停留在 1970 年代创建 C 时。 自动内存管理似乎是向前迈出的一大步,直到您的代码决定放弃而垃圾收集控制为止。 Android 开发人员就何时礼貌地提前请求垃圾收集交换提示,以确保垃圾收集器不会在重要事件(例如拨打 911 的电话)中启动。

阅读更多

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注