外部依赖项很多未定义标识符_从日本编程书籍《我的第一本编程书》中译版看中文例程如何扬长避短——标识符(一)
日本作者平山尚在前言歸結(jié)了本書的三點獨特之處:
- 從始至終只編寫一個程序(俄羅斯方塊游戲)
- 使用專門的工具
- 絕對面向首次接觸程序的人群
第一點,優(yōu)勢是一個項目主體貫穿全書,但同時很考驗編排順序,以及技術(shù)覆蓋范圍。個人很贊同”想要體會到一件事物的必要性,需要了解沒有它時的窘境才行“和”我會在你感到走投無路時才介紹需要的工具“的教學(xué)思路。
第二點,作者”提供了專門的工具。無論是編程語言、開發(fā)環(huán)境,還是具體的用語和概念,我都為新手的你準備好了“。使用一個專用的編程語言環(huán)境的缺點不言而喻,但作者的這段話有當頭棒喝之感:
說的好聽些,你不需要查閱其他資料。說得不好聽些,你想查也查不到。既學(xué)不到查閱資料的技術(shù),也無法通過查閱資料學(xué)習(xí)他人優(yōu)秀的解決方法。我已將這種學(xué)習(xí)方式完全排除在外了。因為我認為這對你是很有必要的。
第三點,一是不依靠其他書籍,這與第二點有關(guān),因為它不需依賴任何市面上的編程語言工具。二是盡量降低了入門門檻,包括:
- 不需了解編程術(shù)語(”變量“、”函數(shù)“、”loop“、”分支“這些都不會在書中出現(xiàn)!?)
- 也不需要懂英語。作者有個腳注,頗有共鳴:
- 不需小學(xué)算術(shù)之外的數(shù)學(xué)
相應(yīng)的缺點就是,教學(xué)過程比較啰嗦,另外最終做出的程序規(guī)模較小。作者作了這個比喻:
人人都能爬上去的緩坡,其高度肯定不會很高。下面,就看看這本作者自稱”到 2 層需要走 100 米緩坡“一般的書,特別是其中的中文例程(辛苦譯者,將原本的日語例程全部翻譯為中文了(包括關(guān)鍵字、和標識符。為什么日文的例程就要翻譯標識符,而其他英文書籍的例程就不翻譯標識符呢?)。
開門見山
作者在第一章,全書第十頁就貼出了最后成品的完整代碼,不到 180 行:
第一感覺是,滿眼都是“存儲區(qū)”。細一看,主程序(無限循環(huán))中的”存儲區(qū)“還是出現(xiàn)較少,業(yè)務(wù)邏輯相對較集中。大多數(shù)牽涉存儲區(qū)的”底層操作“被封裝在”堆積“”方塊“”挪動“等等方法中。但由于項目本身是算法較密集的游戲(超級瑪麗/僵尸大戰(zhàn)之類的應(yīng)該就會有更多的日常詞匯),個人覺得母語的優(yōu)勢尚未充分體現(xiàn)。
第二,有些方法命名值得推敲。比如”將 6 個數(shù)字存入存儲區(qū)“,鑒于方法本身代碼的功能一目了然,更加簡潔的命名比如”存六個數(shù)“就足矣。還有”事先保存好各個類型“,目測是初始化幾種方塊組合形狀。那么”初始化形狀“之類似乎更加可讀。
第三,其中不少大數(shù)字常量,如 999999,990000,6000,50006 等等,如果有常量名稱,應(yīng)該會更可讀。
第四,代碼中不少重復(fù)代碼似乎可以用循環(huán)代替,比如這段:
堆積(存儲區(qū)[0], 存儲區(qū)[1]) 堆積(存儲區(qū)[2], 存儲區(qū)[3]) 堆積(存儲區(qū)[4], 存儲區(qū)[5]) 堆積(存儲區(qū)[6], 存儲區(qū)[7])應(yīng)該可以改成(如果語言支持):
序號 -> 0 只要 序號 < 4堆積(存儲區(qū)[序號 * 2], 存儲區(qū)[序號 * 2 + 1])”移動方塊“方法中的兩塊代碼應(yīng)該也可以類似處理。
初感
如作者前言所說,為教學(xué)自制基于母語的編程語言工具的一個優(yōu)勢,就是可以使得所有術(shù)語都用母語表達。也可以根據(jù)作者的喜好設(shè)計不同層次(比如存儲區(qū)[65050] -> 999999就能將視圖中某個位置的點變?yōu)榘咨?#xff09;。
同時,這個編程語言的特性直接影響了代碼寫作風(fēng)格。在代碼可讀性方面,一個大風(fēng)險就是寫出的代碼不如飽經(jīng)實踐檢驗的市面常用編程語言來的好讀。
也許,在語法設(shè)計方面有明顯貼近母語的優(yōu)勢的話,可以增色一些,但那樣對語言設(shè)計和實現(xiàn)又是一個不小的挑戰(zhàn)。
提前的結(jié)語
下面摘自書末的結(jié)語,雖然本系列還未結(jié)束(也許?),但提早了解作者的初衷也不錯。因此借用在此:
在我們看來,讀書寫字稀松平常。但是在有的時代就不是這樣...我希望編程也能變得這樣,掌握它們的人恒河沙數(shù),沒有任何特別之處...為什么現(xiàn)狀不是這樣呢?
常聽人說”適合的人不教都能上手,不適合的人再教也沒用”...難道沒有什么解決辦法嗎?
我便開發(fā)了 Sunaba【本書中使用的編程工具,日語意義是”沙地“】,并將其帶到了課堂上。然后我發(fā)現(xiàn),“再教也沒有用”這種話根本就是騙人的。....“程序是什么”“應(yīng)該如何思考”這些本質(zhì)上的內(nèi)容不是教不會的。
后續(xù):
從日本編程書籍《我的第一本編程書》中譯版看中文例程如何揚長避短——抽象層次(二)
總結(jié)
以上是生活随笔為你收集整理的外部依赖项很多未定义标识符_从日本编程书籍《我的第一本编程书》中译版看中文例程如何扬长避短——标识符(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人民币升值会让出口减少,是这样吗?人民币
- 下一篇: 【技术】Qt对话框讲解