2013年終總結

陳梓瀚(vczh)發表於2014-01-04

2013年我就幹了兩件事情。第一件是gaclib,第二件是tinymoe

 

Gaclib終於做到安全的支援C++的反射、從XML載入視窗和控制元件了。現在在實現的東西則是一個給gaclib用的workflow小指令碼,用來寫一些簡單的view的邏輯、定義viewmodel介面,還有跟WPF差不多的data binding。

 

Tinymoe是我大二的時候就設計出來的東西,無奈以前對計算機的理論基礎瞭解的太少,以至於沒法實現,直到現在才能做出來。總的來說tinymoe是一個模仿英語語法的嚴肅的程式語言——也就是說它是不基於NLP的,語法是嚴格的,寫錯一個單詞也會編譯不過。因此所有的函式都要寫成短語,包括控制流語句也是。所以我就想了一想,能不能讓分支、迴圈、異常處理和非同步處理等等其他語言的內建的功能在我這裡都變成庫?這當然是可以的,只要做全文的cps變換,然後要求這些控制流函式也寫成cps的風格就可以了。

 

目前的第一個想法是,等搞好了之後先生成javascript或者C#的程式碼,不太想寫自己的VM了,然後就出一個系列文章叫做《看例項跟大牛學編譯原理》,就以這個tinymoe作為例子,來把《如何設計一門語言》延續下去,啊哈哈哈哈哈。

 

寫部落格是一件很難的事情。我大三開始經營這個cppblog/cnblogs的部落格的時候,一天都可以寫一篇,基本上是在記錄我學到的東西和我造的輪子。現在都比較懶了,覺得整天說自己在開發什麼也沒意思了,於是想寫一些別的,竟然不知如何下手,於是就出了各種沒填完的系列。

 

我覺得我學程式設計這13年來也是學到了不少東西的,除了純粹的api和語言的知識以外,很多方法論都給我起到了十分重要的作用。一開始是物件導向,然後是資料結構演算法,然後是面向方面程式設計,然後是函數語言程式設計,後來還接觸了各種跟函數語言程式設計有關的概念,譬如說reactive programming啊,actor啊,非同步啊,continuation等等。腦子裡充滿了各種各樣的方法論和模型之後,現在無論寫什麼程式,幾乎都可以拿這些東西往上套,然後做出一個維護也很容易(前提是有這些知識),程式碼也很簡潔的程式了。

 

工作的這四年半里,讓我學習到了文件和自動化測試的重要性,於是利用這幾年我把文件和測試的能力也鍛鍊的差不多了。現在我覺得,技術的話工作應付起來是超級簡單,但是自己對技術的熱情還是促使我不斷的研究下去。2014年應該研究的技能就是嘴炮了。