編程從來都不是個容易的事兒
操作系統(tǒng)開發(fā)工程師mdmstudios曾發(fā)表過一篇博文《Programming will never be “easy”》,文中他表示,有些人做不了編程的工作,就抱怨編程語言不夠好,更有甚者說是因為開發(fā)人員把編程語言設(shè)計的太難,以便使開發(fā)人員的飯碗更安全。而mdmstudios表示真正的原因是:編程本來就是很難。外刊IT評論對本文進行了翻譯,現(xiàn)轉(zhuǎn)載于此。全文如下:
網(wǎng)上似乎流行著這樣一種說法,認為有些人之所以做不了編程,是因為編程語言不夠好。我還看到有一部分人更甚,拐彎抹角的暗示說,編程之所以對大多數(shù)人而言很困難,是因為我們把編程語言設(shè)計的太難,讓人們敬而遠之,讓我們這部分的人的飯碗更安全。事實上,程序員可并不想讓自己的工作變的更困難,他們一直在想辦法讓工作更簡單。事情的真正原因是,編程本來就是很難。
有些人議論說現(xiàn)在的編程語言太晦澀難懂,另外一些人說我們應(yīng)該完全拋棄文本形式的語言,而采用GUI語言(可視化編程語言)。可是人們需要明白,如果GUI語言真的這么簡單易懂,那是否人們都懂得GUI的電子工程技術(shù)呢?大多數(shù)人都不懂電子工程技術(shù),這并不是因為他們不懂得如何去接線,而是因為他們不懂得邏輯,數(shù)學(xué),和其中的基本工程技術(shù)。
至于有人說編程語言過于晦澀難懂,這是因為我們誤解了他們真正想要的東西,他們真正想要的其實是:變戲法。那么,一種簡單的語言是不可能存在嗎?不。我們的編程語言還有很大的改進空間,需要去進化,然而不論編程語言自身如何改進,編程永遠不會是一個簡單工作,除非你只做一些最基礎(chǔ)的任務(wù)。
讓我們來增加一點娛樂效果,最簡單的編程語言應(yīng)該是什么樣的?打個比喻,我們需要創(chuàng)建一個windows窗口,里面有張表單,當(dāng)有人點擊按鈕時,表單里就會增加一條記錄。人們想要的就是一種能夠理解像這種信息的語言:
創(chuàng)建一個帶有表單的窗口,當(dāng)有人點擊按鈕時,往表單里增加一個條目
雖然理論上完全存在對人類語言進行完整分析的可能,而且以此能立即產(chǎn)生相應(yīng)的編碼,但現(xiàn)實中,我們還沒有這種技術(shù),而且,我們也沒有獲得足夠的信息支持。什么樣的窗口?初始位置在哪?顏色?什么樣的表單?里面保存什么樣的數(shù)據(jù)?用戶如何跟這個表單直接交互?菜單條目有哪些?
同樣,如果創(chuàng)建了兩個這樣的窗口又該怎樣?如何去定位***個,如何去定位第二個?而且,我們需要有某種的變量命名規(guī)范,例如“創(chuàng)建一個叫窗口1的窗口”,等一下,這會讓語法解析器產(chǎn)生困惑,究竟是要創(chuàng)建一個標題為窗口1的窗口呢,還是要命名窗口變量為窗口1呢?讓我們來重新定義一下我們的變量定義句法。“創(chuàng)建一個標題為‘窗口1’的窗口,并把變量名定義為“窗1”。很咬文嚼字吧,事情已經(jīng)開始變的復(fù)雜了。
如果我們需要去做一個工程上更復(fù)雜的,例如創(chuàng)建一個作業(yè)調(diào)度程序,情況又會怎樣?我們不能只是簡單的說“創(chuàng)建一個作業(yè)調(diào)度器”,我們需要指出它是如何跟系統(tǒng)結(jié)合起來的,完全掌握程序的輸出結(jié)果,包括內(nèi)部代碼。我們必須描述每個變量、每個行為如何產(chǎn)生,深入細節(jié)。說實話,用現(xiàn)在的標準編程語言更容易實現(xiàn)這些,
所有的這些并不是用來說明不需要提升我們的編程語言,我只是想試圖說明,無論編程語言如何的簡化,如果你不懂得代碼背后的邏輯,用任何語言都不可能編出程序。
【編輯推薦】