2

软件开发的门槛是如何降低的?

 2 years ago
source link: https://developer.51cto.com/article/703526.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.
软件开发的门槛是如何降低的?-51CTO.COM
软件开发的门槛是如何降低的?
作者:码农翻身刘欣 2022-03-09 10:18:48
Unix用C语言重写以后,变成了一个可移植的操作系统,屏蔽了底层硬件的差异,其上的应用程序也就可以移植了。但让人没有想到的是,各大厂商和高校推出了自己的Unix版本,最后居然发展出了100多种Unix变体。

上古时代,程序员绝对是个高门槛职业,只能用汇编编程,写个程序非常难。

a23409b66895a1c836f032eb4ce3fa34d3a3e9.jpg

机器指令集互不兼容,程序不可移植,只能重写。

IBM决定改变这种状况,推出了有着相同体系结构和指令集的机器家族System/360。

a9fb0600115681ce161112711c6ae4ed46b775.jpg

计算机厂商众多,硬件和指令集是难以统一的,那就在上面加一个抽象层吧:操作系统。

70年代,AT&T的Ken Thompson 和Dennis Ritchie发明了一个优秀的操作系统:Unix, Dennis Ritchie还发明的伟大的C语言。

e9cd50513dd65e12274204fd530d46851b6c56.jpg

Unix用C语言重写以后,变成了一个可移植的操作系统,屏蔽了底层硬件的差异,其上的应用程序也就可以移植了。

但让人没有想到的是,各大厂商和高校推出了自己的Unix版本,最后居然发展出了100多种Unix变体。

68996e30009ab26b900072d0f42b662d32d80b.jpg

为了维护操作系统之间的兼容性,IEEE牵头定义了系统级和用户级的API,Portable Operating System Interface(简称POSIX)。

19231472149d48156d597622d688454d904374.jpg

POSIX标准形成了标准,吸引了后来者入局。

18f656e3283c730b9f4154f6a2eb8698202ebf.jpg

有了POSIX,在不同操作系统间移植软件就轻松了很多。

除了统一操作系统统的API,还有些大神决定对编程语言开刀,在操作系统之上再增加一个抽象层:虚拟机。

683a1f5796ab41afa12813866ac17f76756f1c.jpg

虚拟机的出现,彻底隐藏了硬件和操作系统的细节,从此以后,绝大多数程序员只需要考虑业务逻辑就可以了,软件开发门槛再次被降低。

292b1c225dc18c503d5091908011bdf9491289.jpg

2007年,移动互联网时代来临,新的开发平台出现了。

848bd4467f1406758df05806a77df3e26a2255.jpg

(注:乔布斯当年从Apple出走,创立NeXT公司,推出了NeXTSTEP操作系统,这个系统的原生语言就是Objective-C,而macOS和iOS都源于NeXTSTEP,所以iPhone选择Objective-C也算一脉相承)

Java 没有在iPhone中安家落户,但是却进入了Android手机。

66c3b651719237448fc546285d2a1608f8c6d4.jpg

Android和iOS成为两大手机操作系统,互不兼容。

应用开发再次分裂,变得不可移植。

一个公司要开发原生App,必定要维持两套班子:iOS程序员和Android程序员。

c6bc3cd008e39acb8da705a956765a3316eea9.jpg

iOS和Android差异巨大,很难像POSIX那样统一接口,也很难再通过虚拟机来屏蔽掉差异(Android本来就运行在虚拟机之上)。

这该怎么办?

Facebook推出了一个方案:用JS写App,通过React Native来“翻译”成原生的界面。

f22f4e891cef06e949e132e997f6eab0757b04.jpg

Reactive Native 是用JSX语法写界面和逻辑,可以实现热更新,但是毕竟它毕竟和原生API直接隔了一层,有一个“翻译”的成本,还是比不上原生的效率。

Google则走了另外一条路,推出了Flutter。

6267fbe34cf88fb4cbf5862de603f9fbf49171.jpg

但是,这两套方案都有着这样那样的缺点,手机端应用的可移植性还任重而道远。

在未来,也许会出现一个新的技术或者平台,彻底解决手机应用可移植性的问题。

即使统一以后,新的平台(物联网?)很可能还会造成新的分裂。

纵观软件这几十年的发展,就会发现一个特点:

为了弥合各个技术平台的差异,实现软件开发大一统,抽象的层次越来越多、越来越高。

但是每一次统一以后,新的技术平台很快出现,再次分裂。

真是应了中国的古话:天下大势,分久必合,合久必分。

362a41023f05d0167455162ff4f11a5d151887.jpg


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK