3

计算机编程语言为何层出不穷?化解开发者痛点才是关键

 1 year ago
source link: http://www.androidchina.net/13263.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

计算机编程语言为何层出不穷?化解开发者痛点才是关键 – Android开发中文站

最新消息:欢迎访问Android开发中文站!商务联系微信:loading_in
你的位置:Android开发中文站 > 热点资讯 > 计算机编程语言为何层出不穷?化解开发者痛点才是关键

在 7 月上旬的一篇 CACM 博客文章中,Doug Meil 谈论了《为何有这么多编程语言?》这个话题。而在 1990 年代,曾有一位精通计算机、但并非身为全职开发者的朋友向他提问“为何没有一种好用的编程语言?”当时他的回答是,编程语言同行为特定的人物或工作语言而设计。

BLOG@CACM

BLOG@CACM

从这个意义上说,大多数语言的区别,并不在于它们使什么成为可能、而更多地表现在它们使什么变得容易。

几年前,Doug Meil 有机会参观了位于加州山景城的计算机历史博物馆。有趣的是,在众多展品中,有一幅关于编程语言演变的超大号壁纸图标。

这张图是如此之大,想必任何编写过“Hello World”语句人们,都可以在上面找到对应的编程语言。

在本能的趋势下,人们会忍不住沿着时间的正序方向去查看。但若回头望,你又会领略到不同的视角。

这张图表显示了已经发明的数千种编程语言里的大约 150 种,其中一些较为通用、另一些则是为特定类型的应用程序而设计。

图表上的箭头,显示了较新诞生的语言如何受到了老语言的影响。不过就算复杂如此图,它也只能算是更大范围里的一个样本。

Coding Across America

Coding Across America

软件世界里的新语言依然层出不穷,但很少有全新的语言冒出来。回顾早期,计算机的资源内存、存储和处理能力都相当昂贵且有限。

为此,人们不得不逆风上坡,甚至经常需要通宵熬夜来争取计算机的使用时间。而 1950-1960 年代初始的命名空间,可以精确地处理底层事务。

时至今日,年轻开发者们已鲜有涉足 FORTRAN(公式翻译)、COBOL(通用商业导向语言)、BASIC(初学者通用符号指令代码)、ALGOL(算法语言)、LISP(List Processor)。

不过就算大多数人可能根本没有听说过描述字符串处理算法的 SNOBOL 语言(1962)或 OBJOL,但只要充分理解了面向对象的编程理念,就不难推测它可以用来干什么 —— 至少年代的命名模式就是如此。

1964 年的 PL/I,致力于成为一种更好用的编程语言。虽然它没有如设计者预期那样发展,但早在 1960 年代初,人们就已经提出过“为何有这么多编程语言”的疑问。

时间快速翻到千禧年后,我们陆续迎来了 Scala(2003)、Go(2009)、Rust(2010)、Kotlin(2011)和 Swift(2014)。

?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F0719%2F53b1a905j00rf97e0000yc000jg00fkg.jpg&thumbnail=750x2147483647&quality=75&type=webp

当下的技术环境,似乎所有这些基本语言的属性,都被重组到了特定的解决方案中。

其能够满足任何平台上的所有低级 / 高级功能、过程 / 对象、单线程 / 多线程、编译 / 脚本需求。 在此情况下,继续创造新语言的最大因素,反而是出于控制的考量。

1990 年代中期,微软主要提供了 Visual Basic 和 Visual C++ 开发语言,两者都源于计算机历史博物馆壁纸上的旧节点。

VB 流行于为 Windows 桌面平台构建前端应用程序,但缺乏许多高级语言功能 —— 比如数据结构和线程。 VC++ 处于光谱的另一端 ——开发者几乎可以做到任何事情,但难点在于语言本身太过复杂。

正因如此,一些人看到了打造一款“中间语言”的机会,于是 Java 在 1996 年迎来了爆发。

据悉,Java 是一种功能齐全的面向对象语言,且涉及重点之一是跨平台的可移植性,可惜这并不是微软的首要目标。 随后 Sun Microsystems 和微软在 1997 年陷入了旷日持久的冲突,并最终推动后者在 2022 年推出了 C# 。 乍一看 C# 和 Java 很像,但实际上并非如此。其填补了微软开发堆栈的‘中间’位置,且该公司能够更好地掌控该语言。

最后从总体设计控制角度来看,维护和发展现有系统,很容易变成一项艰巨的挑战。而管理编程语言的增长,也是最困难的案例之一。

作为编程语言的用户,优秀开发者们不仅具有生产力、还能够以创造性的方式去使用相关特性,即便这么做并不是语言作者所期望的。

2009 年的 Go 语言,就是一个相当有趣的例子。其诞生的一个主要推动因素,就是需要能够在 Google 的容器化云环境中,高效且可预测地部署。 其次是对强大语言的渴望,尤其在网络和并发性方面。从人才角度来看,Google 显然有能力为现有语言构建一套新的编译器和运行时引擎。但要改变开发者的习惯,则需要费力地改变编程语言的语法和功能 —— 尤其是被告知某些事情不再被允许、或必须以不同方式去完成时。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK