色婷婷成人综合激情免费视频,2024中文日产幕无线,亚洲午夜福利精品久久,精品精品国产欧美在线,国产又色又爽又免费的刺激软件

logo 返回列表
最好的編程語(yǔ)言是什么
2017-07-11 2875

談到這個(gè)話題,一定會(huì)有兩種人跳出來。 一種人說,PHP 是世界上最好的編程語(yǔ)言;另一種人說,編程語(yǔ)言都大同小異,掌握了思想,什么都簡(jiǎn)單了。

首先我認(rèn)為所有切實(shí)存在,功能重疊的事物,都是可以比較優(yōu)劣的,有時(shí)不說出真相,只是真相太殘酷。『優(yōu)秀』并非是主觀的,而是客觀存在的,世界上存在著被廣泛認(rèn)同的『優(yōu)秀』。否則,作家,設(shè)計(jì)師,設(shè)計(jì)編程語(yǔ)言的科學(xué)家,應(yīng)該以什么為目標(biāo)來工作呢?

那么什么又是編程的思想呢?是循環(huán),回調(diào),面向?qū)ο筮@些么?但似乎并非每個(gè)編程語(yǔ)言都有這些元素。我在知乎『優(yōu)秀的程序員應(yīng)該掌握多少門編程語(yǔ)言』中列舉了幾種我了解的,各自具有代表性的編程語(yǔ)言:

C, 使用原始的內(nèi)存管理的系統(tǒng)編程

Java, 工業(yè)級(jí)的面向?qū)ο蟮模o態(tài)類型的虛擬機(jī)語(yǔ)言

Python, 腳本語(yǔ)言,動(dòng)態(tài)類型的虛擬機(jī)語(yǔ)言

Javascript, 基于事件回調(diào)的函數(shù)式編程

HTML/CSS, 聲明式的語(yǔ)言

Golang, 并發(fā)編程

可以看到,它們風(fēng)格迥異,使用的領(lǐng)域似乎完全沒有重疊。

非要找共性的話,大概是它們都具有『抽象』的能力,描述『算法』的能力,這也是有些人口中的『思想』,但我不認(rèn)同。 抽象是為了找到解決問題的方法,而編程語(yǔ)言是為了將解決問題的過程(算法)表達(dá)出來。 知道如何解決問題,不代表就能夠用編程語(yǔ)言表達(dá)出來;掌握編程語(yǔ)言,也不代表知道如何解決問題。

我們學(xué)習(xí)一門編程語(yǔ)言本身的時(shí)間并不多,更多的時(shí)間在學(xué)習(xí)它的函數(shù)庫(kù),以及特定編程環(huán)境下的限制。 例如學(xué)習(xí) C 語(yǔ)言,我們需要知道計(jì)算機(jī)如何管理內(nèi)存,如何實(shí)現(xiàn)函數(shù)調(diào)用,還要學(xué)習(xí)如何通過標(biāo)準(zhǔn)庫(kù)進(jìn)行輸入輸出,而 C 語(yǔ)言本身的語(yǔ)法,完全可以用一個(gè)小時(shí)描述清楚。

所以,我們拋開這一切,去尋找世界上最好的編程語(yǔ)言呢。但結(jié)果是不存在,因?yàn)楝F(xiàn)在流行的編程語(yǔ)言設(shè)計(jì)者目光都太短淺。 沒錯(cuò),優(yōu)秀的不一定是用的人最多的,不一定應(yīng)用得最廣泛,所以編程語(yǔ)言的設(shè)計(jì)者需要折中,拿出不那么優(yōu)秀的設(shè)計(jì)作為最終方案。

我認(rèn)為世界上最好的編程語(yǔ)言需要有這樣的特征:

核心足夠小

可以擴(kuò)展語(yǔ)法

圍繞一種數(shù)據(jù)結(jié)構(gòu)展開

優(yōu)秀的抽象能力

可以被編譯成本地代碼

比如 PHP 之所以流行,是因?yàn)橹С?PHP 的虛擬主機(jī)最便宜。 比如 C 之所以流行,只是因?yàn)橛刑囗?xiàng)目一開始是用 C 寫的。 比如 Python 之所以流行,只是因?yàn)閹?kù)足夠多。 比如 Javascript 之所以流行,因?yàn)樵跒g覽器里這是唯一選擇。

他們都不是因?yàn)檎Z(yǔ)言本身被設(shè)計(jì)得有多么優(yōu)秀而流行的。

世界上最好的編程語(yǔ)言應(yīng)當(dāng)是全能的,否則如何和其他編程語(yǔ)言做比較呢?要做到這一點(diǎn),就要保證這個(gè)語(yǔ)言的核心部分是最小的,不偏向于任何一個(gè)領(lǐng)域,也減少學(xué)習(xí)成本。

這方面的正面例子有 Lisp, Lisp 中的一切都是列表,核心部分僅包括不到十個(gè)基本運(yùn)算符。從這個(gè)角度來看,你根本不知道 Lisp 是被設(shè)計(jì)用于什么領(lǐng)域的——這是世界上最好的編程語(yǔ)言所必須的要素。

但是 Lisp 沒有火起來,因?yàn)橛袀€(gè)笑話說的是一個(gè) Lisp 程序末尾要有整整一頁(yè)的括號(hào)。

所以世界上最好的編程語(yǔ)言需要能夠靈活地?cái)U(kuò)展語(yǔ)法,這個(gè)概念通常被稱為元編程,例如 Ruby 就號(hào)稱支持元編程,雖然我沒有體驗(yàn)過。 除了擴(kuò)展語(yǔ)法之外,最好還要能夠改變程序在編譯時(shí)的行為,這會(huì)加強(qiáng)元編程的能力,也會(huì)對(duì)提升性能有一定幫助。 比如 PHP Python 都支持用 C 編寫擴(kuò)展,如果這種語(yǔ)言支持用自己本身來寫擴(kuò)展,并且能夠干預(yù)編譯器的行為,那么這種改造會(huì)讓它適合幾乎所有領(lǐng)域的編程。雖然干預(yù)編譯器的行為是很危險(xiǎn)的行為,只有少數(shù)人會(huì)編寫這種擴(kuò)展,但是這總要比設(shè)計(jì)一門新的領(lǐng)域特定的語(yǔ)言要容易。

可以擴(kuò)展語(yǔ)法,這是保證世界上最好的編程語(yǔ)言能夠快速適應(yīng)各種特定領(lǐng)域編程的重要條件。

世界上最好的編程語(yǔ)言應(yīng)該內(nèi)置一種數(shù)據(jù)結(jié)構(gòu),能夠方便地在程序內(nèi),甚至包括程序外進(jìn)行數(shù)據(jù)交換,讓整個(gè)語(yǔ)言圍繞著這種核心的數(shù)據(jù)結(jié)構(gòu)展開,具有一種『一致性』的美感。 這方面正面的例子是 Lisp Javascript, Javascript 做得還不夠好,類型系統(tǒng)中有很多陷阱。

世界上最好的編程語(yǔ)言還應(yīng)該有優(yōu)秀的抽象能力,比如 C 的抽象能力就不夠,組織大型項(xiàng)目會(huì)非常麻煩。Lisp 的抽象手段又太單一,Java C++ 的特征又過于復(fù)雜。

『可以被編譯成本地代碼』這才是最具有挑戰(zhàn)性的一個(gè)特征,前面我提了很多變態(tài)的需求,它們都需要在可以被編譯成本地代碼的條件下實(shí)現(xiàn)??梢员痪幾g成本地代碼,表示這種語(yǔ)言不需要虛擬機(jī),可以自行提供各種功能,性能上也有更多的優(yōu)化空間。

世界上最好的語(yǔ)言,當(dāng)然這個(gè)問題的答案我相信大家都有共識(shí):漢語(yǔ)普通話!不過說到編程呢,作為一名光榮的碼農(nóng),木偶已經(jīng)在代碼的土地上播種里7年,現(xiàn)在講心得與大家分享一下。

首先在度娘里搜一下,“世界上最好的編程語(yǔ)言”,木偶看到大家的討論熱情堪比皇帝駕崩舉國(guó)服喪的氣勢(shì)。

以木偶的身份標(biāo)簽來說,javascript當(dāng)然是最好的語(yǔ)言,目前它已經(jīng)發(fā)展為一門pc、移動(dòng)、嵌入式三棲開發(fā)語(yǔ)言,如果說世界上還有哪種語(yǔ)言能做到的話能與之媲美的恐怕寥寥無(wú)幾,當(dāng)然以木偶為代表的一大批程序員也以45度仰視它的存在。

但是編程并不只是做業(yè)務(wù),如果是做通信呢?如果是做圖形處理呢?如果是做游戲開發(fā)呢?如果是做桌面應(yīng)用呢?

說到這里木偶僅懷著無(wú)比下作的心理對(duì)各位看客說一句話:每一個(gè)不同的行業(yè)都有一個(gè)世界上最好的語(yǔ)言。

至于說同一個(gè)行業(yè)里如何選擇最好的語(yǔ)言呢?比如web開發(fā)我要怎么篩選phpjava、.netnodejs呢?

首先木偶認(rèn)為要先考慮公司的業(yè)務(wù)方向,如果是新聞?lì)悩I(yè)務(wù)對(duì)后臺(tái)計(jì)算要求不高,完全可以使用更快更優(yōu)秀更簡(jiǎn)單的phpnodejs之類,但如果后臺(tái)需求中包涵大數(shù)據(jù)分析或者比較復(fù)雜的業(yè)務(wù)流程,則就要考慮java,.net之類的語(yǔ)言了。

幾年前木偶有幸加入了一家大型技術(shù)公司,當(dāng)時(shí)公司的業(yè)務(wù)層完全是.net開發(fā),服務(wù)器也完全是windows平臺(tái),貌似也沒有像網(wǎng)上主流說法一樣網(wǎng)站非常不穩(wěn)定,畢竟木偶的專業(yè)范圍不在服務(wù)器維護(hù)管理方面,這里不做過多評(píng)價(jià)。但是木偶依然僅懷著無(wú)比下作的心態(tài)補(bǔ)充一句:在Linux的眾多發(fā)布發(fā)版本中桌面版只占有極少一部分,更多的則是命令行界面,而能夠使用命令行界面的基本都屬于木偶以45度角仰視的大神,而windows的發(fā)行版絕大多數(shù)都是桌面版,原本就不保證7*24小時(shí)不宕機(jī),如果要進(jìn)行比較可以拿windowsserver版本和linux比較一下(據(jù)木偶了解,windows server2012已經(jīng)加入純命令行模式)。

其實(shí)固定行業(yè)中最優(yōu)秀的語(yǔ)言無(wú)非一下幾個(gè)因素:價(jià)格(比如.netvisual studio是收費(fèi)的,windows服務(wù)器也是收費(fèi)的)、領(lǐng)導(dǎo)層意愿(有些懂技術(shù)的領(lǐng)導(dǎo)可能會(huì)要求開發(fā)人員使用一種他們更容易管控的方式來開發(fā))、團(tuán)隊(duì)元老們最熟悉的技術(shù)(比如公司剛剛起步的時(shí)候雇傭的第一批員工熟悉的語(yǔ)言)、當(dāng)?shù)厝瞬耪衅盖闆r(比如木偶超喜歡nodejs,但目前很難招聘所以打算逐步轉(zhuǎn)往java,只在特定的幾個(gè)場(chǎng)景使用nodejs)。

不過最終不論哪個(gè)原因,碼農(nóng)們總會(huì)殺他人威風(fēng),漲自己志氣(比如使用grunt的人肯定能對(duì)gulp吐槽一堆,使用gulp的也能細(xì)數(shù)grunt十大罪狀,最新的webpack似乎也沒有完全占上峰的姿態(tài))。

所以木偶要在這里總結(jié)一下:世界上最好的語(yǔ)言是能夠?yàn)槟闼诠編碜畲罄嬉约澳闼趫F(tuán)隊(duì)最容易接受學(xué)**或者因?yàn)闅v史原因(創(chuàng)始人使用的技術(shù))遺留下來的編程語(yǔ)言——既存在,必合理。

最后,木偶這段時(shí)間一直在寫一個(gè)大中型平臺(tái)網(wǎng)站,后期會(huì)逐步將該網(wǎng)站關(guān)鍵技術(shù)分享出來,中間也會(huì)摻雜一些前端細(xì)節(jié)知識(shí)點(diǎn)總結(jié),畢竟荀子曰:能積微者速成。

相關(guān)推薦
微信掃一掃
微信掃一掃
關(guān)注公眾號(hào),了解更多資訊
聯(lián)系客服

微信掃碼聯(lián)系客服