花花小君 作品

第32章 長夜漫漫

    而這麼長的時間裡面,葉新晨也是在解決上面這個bug的嘗試中,才發覺tcl這種語言先天不足。

    因為一旦程序邏輯複雜,它那變量無需聲明、變量無類型等等對初學者來說不可多得的“優點”就成了致命缺陷。

    這會讓人不得不付出比c/c++之類“正規語言”多得多的努力去跟蹤去區分數據類型。

    而且為了避免錯誤,葉新晨也不得不把數據類型也“打包”進數據,然後在程序入口寫代碼分辨它——尤其是,這些數據類型還是動態的,是從輸入數據識別出來的;不結合輸入誰都不知道某個數據在某個時刻會是什麼。

    這使得代碼幾乎無法靜態分析;而測試用例很難覆蓋每一條執行路線——不要忘了,這個程序“吃”進去的數據是多變的,幾乎不可能列出所有情況。

    這使得葉新晨又產生了一個想法。那就是,要給它增加一些功能,把專業語言的core dump、變量先聲明後使用等等功能搞出來,使得出現類似高危行為時可以得到提醒甚至直接對相關不良行為報錯。

    當然,葉新晨是沒有這麼自覺的,只是葉新晨跟他們說了,他們立刻就私發了一個六萬的懸賞讓葉新晨幫忙!

    原本葉新晨是不願意的,因為那七天已經夠累的了,晚上都熬到凌晨三四點,每天就睡三四個小時,這讓葉新晨深刻的明白為什麼程序員容易頭禿了。

    雖然葉新晨不願意,但是奈何對面又把這個六萬的懸賞又加了四萬……

    嗯,葉新晨覺得這個功能也不是那麼難,熬夜那就熬夜唄……

    所以葉新晨也是立刻就進入狀態了,tcl號稱一切都是字符串,這甚至可以把系統庫函數/運算符/關鍵字都給rename掉,然後自己寫一個替代品。

    這給了它的用戶極大的自由度。

    比如itcl就是用命名空間模擬的面向對象語法——這種語言仍然是面向過程的;但你可以自己定義一個class關鍵字(實質上是一個過程),把它變得和一個真正的面嚮對象語言幾乎一模一樣。