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