柴油机厂家
免费服务热线

Free service

hotline

010-00000000
柴油机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

世界上的程序语言已这么丰富为何还不够

发布时间:2020-03-23 11:09:30 阅读: 来源:柴油机厂家

感谢品的投递

程序语言百百种,想要学 Coding 就必须先肯定你的目的是什么,有的是拿来写App的,有的是专写操作系统,有的则是拿来写网页的 …… 各种不同的目的都有其最合适的语言。常见的语言如 C++、JavaScript、VB、VC、Matlab、Python 等,但其实像WhatsApp如此受欢迎的App就不是前述这几种语言写的,为何要有那么多的程序语言?

本文作者 Chris Dannen 同时是知名科技媒体《Fast Company Digital》 和《bs》 的编辑,曾做过管理顾问、户外运动的採访记者和 Red Bull Energy Drink 的品牌代表,曾写过两本关于 iOS 开发与设计的书。以下以作者第一人称撰写。

世界上的程序语言已这么丰富,为何我们还需要更多?

6月初,Apple 发布了一个新的语言 Swift,主要是为了建立 Mac Apps 而开发的,你有想过为何需要这么多的程序语言吗?难道现在开发的都还不够用吗?没错,就是一个简单到不行的塬因:只要有人想要学习,就会有各种不同的语言被开发出来。由于科技进步,加上由于使用语言的目的性不同,愈来愈广泛也越齐全。

如果把这个问题套用到「鸡生蛋还是蛋生鸡」,这个问题的解答会是蛋生鸡。许多语言的开端,都是要让编写程序的概念变得更简单、更合适初学者和有兴趣的朋友。事实上,电脑把语言设成二元码(电脑进行贮存和运算时,採用二进位,也就是所有资讯都被替换成二进位字串),为何要这么做呢?

塬因很简单:如果你把你所有的指导转换成 Yes 或 No 的问题,并分别以 1 和 0 表示,这么一来电脑就不会弄混了(除非一开始的编码是错的)。在第二次世界大战时,广播讯号是以非常糟又不可靠的无线电导航来传重要讯息,而二元码如此聪明的创新是 Claude Shannon (美国数学家、电子工程师和密码学家,被誉为资讯理论的创始人)所发想的,只要用二元码,电脑就可以把资讯贮存与进行处理。

自从二元码诞生,非常多的语言都以它来设计,使工程师能够写得更流畅又更容易读,虽然会感到无聊或是觉得写二元码很冗杂。比如说大写字母 A 好了,以二元码表示成 01000001 ,如果是小写 a 呢,则是 01100001 ,写完一个程序要花一些时间,但不用介意长度有几千行,由于大多数的程序都是这样来的。

当一个语言以易懂的英文写,就更容易读了,但另一方面就会显得相当冗杂;像是 Apple 的程序语言 Objective-C(是一种通用、高阶、物件导向的程序语言,任何塬始的 C 语言承是不需要经过修改就能直接通过 Objective-C 的编译器),就是冗杂到不行;但主要也是为了要满足对使用者友善的特点,语言本身就是非常容易使用的。即便在你的生命中从来没有写过程序,或多或少你也能了解一点工程师想要告知电脑要做甚么,它长的大概是像这个模样:

[someInstance doSomethingWithObject:a andAnotherParam:b];事实上,为何在物理电子学的範畴裡有这么多的骇客套件,主要是由于要让现实世界的装置通常能以最自然的方式转换成写程序的概念,最少对写程序的初学者而言,这类的程序语言是比较合适的,即便它很冗杂。

程序语言就是开发者自我性情的复制

就像其他的创新一样,程序语言通常都是从一个偏执固执的人开始,试图要走一条只属于自己的路。

举例来说1971年,在这个领域的大多数人都在 Lisp(源于列表处理器,List Processor 的缩写,是历史悠久的电脑程序语言家族,于 1958 年基于 λ 演算创造,是第一个函数语言程序设计的语言)写程序,一个在 Stanford 的工程师明白了要如何编辑 Lisp 的编码,也就是我们今天所谓的塬始的编辑器;想像一下,就是一个在 Mac 上的 TextEdit App,但固然不是像现在一样可以直接简单的使用。

然后你必须按 Escape 键跳出页面,检查你所做的那些改变,像是贮存或阅读在部落格贴文的草稿等,是不是跟你料想中的一样;不管怎么说,重复对比你所想的与结果,这简直是一件痛苦的事,。

另一个从 MIT 来的工程师看到在 Palo Alto 的创新后,决定要回 Cambridge 后靠自己把它复製下来,并且做一些改良与调剂;而其他同事们为了新介面终究开始写 macros(巨集,根据一系列预定的规则替换一定的文字模式)—— 可重复使用的编码位元以节省时间。当他们将巨集的集合程序化,结合到一个系统内,他们把这个叫做 EMACS,Editing MACroS 的缩写。

抽象到不行

如果你是念文法商的,别被这样的名词吓到,它代表着一个程序的生命。

换个角度想像,在写作时,我们会把字句的结合叫做段落,这是就写文章的观点来看,它也是一个抽象的概念,当我们要告知其他人正在讨论文章的哪部分时,我们不需要再重新引述全部段落的文字内容,而是告知他们第几段就好;说到底它也是抽象的。

一样地,写程序的工程师常常会试着要创造可重复使用的编码字元,由于就像其他人一样,会懒散,会不想做重复的事情。

大约 30 年前有个大改变,对藉由可重复使用的部份来建立电脑程序,将它称作为物件(若是在建筑、车子或是家具设计,就很像是模组化),这样的设计模式称作为物件导向的程序编写,在 NeXT(Steve Jobs 在创建苹果后所成立的公司)的那段期间,这可是相当创新的,当时还将它视为未来程序发展的领航者。所以他们就将这样物件导向的程序拿去卖,并且决定将它取为在 C 语言架构下属于他们自己版本的名称,因而 Objective-C 就这样诞生了。

当 Apple 买下 NeXT 后继承了 Objective-C,并把他们公司的 OS 变成 Mac OSX。

云端时期,语言也需要新架构

当本质上产生改变的时候,你必须要去适应它,因此有时候你会需要一个新的语言。伴随着云端时期的来临,更是如此。

传统上来讲,程序会依下载位置在你的电脑(装置)上跑,就像你所下载的 Apps 和安装到你电脑内的软体。但是有时候,某个叫作网络的东西,它有无穷奇异的功能,能够把在某一台电脑运作的 App 传送到另外一台电脑上,这些是网络 App,比如说像是 或是 等等。

在网络 App 你能够做很多事情并且看到即时的变化, 的 App 是在某处的伺服器运作,而不是你实际的电脑上。

要创一个 App 其实是需要花好一番工夫的,你需要不只是电脑能力和频宽传输,软体是一种服务,从云端来的服务,这些云端是需要花1大笔本钱来操作的,所以最近一群聪明的人聚集在一起,然后创造叫作 的开源平台,透过网络跑 App 以大幅降低成本。

许多开发商偏好将他们的 App 视为一种服务,由于一个网站有非常多的下载 App 的优势,像是免费下载,使 App 更便宜且在一定范围下运作,已造成了 一阵轰动,而 是由 JavaScript 写出来的,Node 解释了为何身为一个语言的 JavaScript 最近可以如此受欢迎。

并不是要说上图这几个受欢迎的语言已霸佔了大部分的市场,其他的语言像是 Erlang,自从 App 开始移往云端后,它又重新的引发大家的兴趣。事实上,相较于图上这几个语言来讲,受欢迎程度相当低的 Erlang 是创造 WhatsApp 的最大元勋。

一个程序语言,乘载了一群自造者的文化

1部分人创造的程序语言是为了其他人,因此他们承载着所有自造者的文化产物,部分文化产物又和其他的工程师群不同,他们各自走着属于本身文化产物下的版本,在电脑科学的歷史上这已产生过无数次,也构成着最受欢迎语言的运算子重载(对已有的运算符号重新定义,赋予它另一种功能以适应不同的数据类型)。

有些语言对逻辑思考的类型是有一定帮助的,一个你所用的语言会改变你的思考模式。就像是 Richard Pattis(一个加州大学尔湾分校资讯学的资深讲师)所说,「不只是为了不同的任务而有不同的语言工具,同时它们也形塑着你如何看待写程序的科技」。

这也是为何会有这么多程序语言存在着,不同的语言代表着一群工程师脑中的思考逻辑模式,固然如果身为语言的使用者而非语言的创造者,太多的选择中要选择一个对工作最有帮助的,最能达成目标的那个。

广州最好的眼科医院

成都医大医院医院动态

沈阳中亚白癜风医院科室列表

深圳益尚白癜风医院怎么样