為什么設計師創造的編程語言更受歡迎?

導讀:在編程的世界里,語言紛繁多樣,而大部分真正廣泛流行的語言并不是那些學術界的產物,而是在通過自由發揮設計出來的。

和那些在最后期限重壓下產生的語言版本比較起來,從一定程度上來看,從學術界產生出來的編程語言是失敗的。當然,并不是全部。事實早已證明。本文作者Cristina Videira Lopes是一位來自加州大學歐文分校的權威計算機科學家,下面是她的關于編程語言的研究:

開發者喜歡用的語言:

  • PHP - 1994年由Rasmus Lerdorf 設計。“最初設計PHP的目的只是用在他的網絡簡歷上來追蹤訪問者的,他將它命名為‘個人主頁工具’,通常簡稱為‘PHP工具’。”根據langpop.com的非正式調查,它是排名第四流行的編程語言。
  • JavaScript - 1995年Brendan Eich開始使用。“JS(JavaScript)看起來有點兒像Java,更確切地說,像Java傻傻的弟弟一樣。在10天里我只能這樣做,否則就會出現比JS更糟糕的東西。”歸功于網絡編程,JS可能已經成為目前最流行的編程語言。
  • Python - 大約在1990年由Guido van Rossum設計。“我當時只是想找一個感興趣的編程項目來打發下圣誕節假期的無聊。”(第六流行的編程語言)
  • Ruby ?-??大約在1994年由Yukihiro "Matz" Matsumoto設計。“我只是想有一種語言可以比Perl更強大,比Python更好地面向對象,就是這促使我去設計我自己的語言。”

相對的,由那些熱衷于內部一致性和正確性的學術派設計的語言卻包括了一堆瀕死的語言(mostly dead tongues):Fortran, Cobol, Lisp, C 以及Smalltalk。唯一的例外是.NET平臺的編程語言和Java,這兩項分別由微軟和Sun公司花費相當大的投資才出來的項目。

回顧這一歷史,以及自己的學術生涯,Lopes覺得象牙塔里創造不出適合人們使用的語言是因為其把編程當成一種科學,而實際上,它更是一種設計。

——我非常想把設計帶入到我的日常生活中,我喜歡讓我的學生投入到諸如程序語言和程序環境這樣的設計中去——在這領域,我有很多想法。我相信對于設計的評估標準是不同于科學和數學的驗證的。

Lopes說,實際上,網絡迅速地發展也是因為給予了學術界的程序員自由發揮的空間。

——在與科學相違背的一個較好的設計案例就是Tim Berners-Lee向CERN提出的用HTML構建網絡的建議。這個建議沒有經過任何科學驗證。那只是個有趣的關于“信息互聯系統”的很好的建議。我甚至可以想象出TB-L的經理當時的想法:“啊,好吧,這個很有趣。他是個聰明人,他需要多少資源,我們就讓他做做看,看他能做出什么來。即使最后什么都沒有,也沒什么大不了的。”TB-L并沒有為了這個系統而先寫出一份“科學設計的評估報告”,然后“在第二階段,我們要把它裝在很多的機器上”,否則今天這個世界可能會變得大不一樣,因為他也許為了那些不需要的證明而陷入黑洞里了。

在程序語言里,這些很多時候可歸因為人性:如果他們不好用,他們便不會被廣泛采用。正因如此,有的程序語言和完整的系統(如UNIX)在某些人眼中已經被當作計算機病毒看待了。如果可以衡量,這類問題反而會變得困難。正因為是主觀的,所以可以通過設計而不是科學來解決。事實上,那些計算機“科學家”僅僅是字面上的“設計者”。畢竟,代碼如詩。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452585.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

狀態轉換圖簡介

狀態轉換圖(簡稱為狀態圖)通過描繪系統的狀態及引起系統狀態轉換的事件,來表示系統的行為。此外,狀態圖還指明了作為特定事件的結果系統將做哪些動作。 (一)狀態 狀態是任何可以被觀察到的系統行為模式,一個狀態代表…

C#常用單元測試框架比較:XUnit、NUnit和Visual Studio(MSTest)

做過單元測試的同學大概都知道以上幾種測試框架,但我一直很好奇它們到底有什么不同,然后搜到了一篇不錯的文章清楚地解釋了這幾種框架的最大不同之處。 地址在這里:http://www.tuicool.com/articles/F3eEn2j 簡而言之,三者是非常相…

實驗五 類和對象-3

1.ex3.cpp 1 #include <iostream>2 #include <vector>3 #include <string>4 using namespace std;5 6 // 函數聲明 7 void output1(vector<string> &); 8 void output2(vector<string> &); 9 10 int main() 11 { 12 vector<st…

Vector用法詳解

這篇文章的目的是為了介紹std::vector&#xff0c;如何恰當地使用它們的成員函數等操作。本文中還討論了條件函數和函數指針在迭代算法中使用&#xff0c;如在remove_if()和for_each()中的使用。通過閱讀這篇文章讀者應該能夠有效地使用vector容器&#xff0c;而且應該不會再去…

linux 共享移動硬盤,隨時登陸上QQ 自帶Linux移動硬盤實戰

在以往我們的觀念中&#xff0c;移動硬盤頂多就是個移動存儲設備&#xff0c;根本談不上有什么功能&#xff0c;但今天這款一盤通卻將我們原始的觀念打了一個180大轉彎&#xff01;如果你的電腦支持USB設備啟動&#xff0c;那么只需要在BIOS進行一下更改&#xff0c;一盤通就可…

需求分析的圖形工具(層次方框 warnier IPO)

1 層次方框圖 層次方框圖用樹形結構的一系列多層次的矩形框描繪數據的層次結構。 例如&#xff0c;描繪一家計算機公司全部產品的數據結構可以用下圖層次方框圖表示。 這家公司的產品由硬件、軟件和服務3類產品組成&#xff0c;軟件產品又分為系統軟件和應用軟件&#xf…

如何處理錯誤信息 Pricing procedure could not be determined

2019獨角獸企業重金招聘Python工程師標準>>> 當給一個SAP CRM Quotation文檔的行項目維護一個產品時&#xff0c;遇到如下錯誤信息&#xff1a;Pricing procedure could not be determined 通過調試得知錯誤消息在function module CRM_PRIDOC_COM_PRCPROC_DET_SEL第…

Flask愛家租房--訂單(下訂單)

文章目錄0 、效果展示1、思路總結2、后端代碼3、前端js4、前端html0 、效果展示 detail.html booking.html 1、思路總結 1&#xff09;用戶打開房屋詳情頁detail.html之后&#xff0c;后端detail.js會判斷此訪問用戶是否為房東&#xff0c;若不是房東&#xff0c;則在詳情…

linux下各權限的細分

PS&#xff1a;有時候你發現用root權限都不能修改某個文件&#xff0c;大部分原因是曾經用chattr命令鎖定該文件了。chattr命令的作用很大&#xff0c;其中一些功能是由Linux內核版本來支持的&#xff0c;不過現在生產絕大部分跑的linux系統都是2.6以上內核了。通過chattr命令修…

紅帽linux lnmp搭建,Linux(redhat5.4)下lnmp環境的搭建

在前面我們已經實現了lamp架構的創建&#xff0c;今天就讓我們來看一看lnmp架構是如何實現的。計劃的實驗步驟如下&#xff1a;1. 數據庫mysql的安裝2. Nginx的安裝&#xff0c;libevent(編譯庫代碼)的安裝&#xff0c;pcre的安裝3. Php的安裝4. 測試1. Mysql 的安裝//注意:小編…

為什么借助開源學習是最有效的?

導讀&#xff1a;盛大創新院高級研究員莊表偉近日編撰系列文章《借助開源項目&#xff0c;學習軟件開發》活動&#xff0c;引起業界關注。莊表偉認為&#xff0c;通過編撰這些文章&#xff0c;希望更多開發者能夠借助開源項目提高開發效率&#xff0c;減少重復勞動并從開源軟件…

redux middleware 源碼分析

原文鏈接 middleware 的由來 在業務中需要打印每一個 action 信息來調試&#xff0c;又或者希望 dispatch 或 reducer 擁有異步請求的功能。面對這些場景時&#xff0c;一個個修改 dispatch 或 reducer 代碼有些乏力&#xff0c;我們需要一個可組合的、自由增減的插件機制&…

Flsak愛家租房--訂單(獲取用戶訂單、用戶評論)

文章目錄0.頁面效果1.思路總結2.后端代碼3.前端js4.前端html0.頁面效果 1.思路總結 1&#xff09;用戶點擊“我的訂單”&#xff0c;js向后端獲取數據&#xff0c;并加載在前端的模板中&#xff1b; 2&#xff09;用戶點擊相應訂單的“去支付”按鈕&#xff0c;js向引導用戶…

【SCOI2005】【BZOJ1087】互不侵犯King(狀壓dp)

problem 在NN的棋盤里面放K個國王每個國王會攻擊它周圍的一圈共8個格子使他們互不攻擊&#xff0c;共有多少種擺放方案N < 9solution 用01串表示某一行放置的情況 首先枚舉當前做到第幾行&#xff0c;以及當前一共放了幾顆棋子。于是狀態f[i][j][k]表示到第i行&#xff0c;一…

軟件工程形式化技術簡介

形式化技術在軟件工程中有效的提高了開發的效率、改進了軟件開發的質量、減少了開發費用。形式化的技術容易在軟件的規約上取得一致性&#xff0c;它屬于一種非常有效的交流方式。 (一)非形式化的缺點 用自然語言書寫的系統規格說明書&#xff0c;可能存在矛盾、二義性、含糊性…

華為榮耀筆記本linux怎么下載軟件,華為magic book筆記本怎么下載軟件

大家好&#xff0c;我是時間財富網智能客服時間君&#xff0c;上述問題將由我為大家進行解答。華為magic book筆記本下載軟件的方法如下&#xff1a;1、首先&#xff0c;點擊桌面開始圖標&#xff0c;找到應用商店&#xff0c;并點擊。2、進入應用商店&#xff0c;點擊搜索欄&a…

國內外軟件開發上的差距與分析

提高自己&#xff0c;迎接好的未來。 在開始任何其他文字之前&#xff0c;首先有必要正視一個根本現實&#xff1a;國內外軟件開發的水平是有差距的。 這一結論的最直接證據是每一輪新技術的發起者基本上都是國外的人或公司&#xff1a; 從方法論&#xff08;CMMI&#xff0…

Flask愛家租房--訂單(房東接單、拒單)

文章目錄0.效果展示1.效果展示2.后端接口3.前端js4.前端html0.效果展示 1.效果展示 1&#xff09;當房東點擊“客戶訂單”&#xff0c;js向后端接口get_user_orders()獲取數據&#xff0c;訂單頁面開始加載&#xff1b; 2&#xff09;當房東確定接單時&#xff0c;js會向后端…

WebView性能優化--獨立進程

Android允許一個app同時存在多個進程&#xff0c;可以根據需要把不同的模塊放到不同進程中處理。 一、WebView獨立進程的好處 1.有效增大App的運存&#xff0c;減少由webview引起的內存泄露對主進程內存的占用。 2.避免WebView的Crash影響App主進程的運行。 3.擁有對WebView獨立…