從元語言角度評價華為倉頡

banq發表於2024-06-24

根據官方資料定位:華為的倉頡程式語言是一款由華為自主研發的面向全場景智慧的下一代應用程式語言

  • 倉頡程式語言與華為的鴻蒙系統結合,提供了良好的程式設計體驗。
  • 它適合於有高效能高併發需求的業務場景,目標是打造在任務並行、資料並行、高頻資料互動、高記憶體開銷等典型場景下的效能競爭力

倉頡定位於高效能的目標。

在評價這個語言目標之時,我們需要搞清楚當前程式語言的上下文背景情況。

 當前,世界上程式語言有三個個發展方向:

  • 以執行時為強項:如Go語言、Java語言、C語言
  • 以編譯時為強項:如Rust語言
  • 以易用性為強項:如Javacript、PHP和Python

1、以執行時為強項
執行時為強項的特點時高效能、高併發,記憶體管理由語言動態管理,這樣做的好處時使用者只管啟動併發開關,剩餘的垃圾收尾工作由語言完成,這就對記憶體垃圾回收演算法提出更高要求,因此,Go語言和Java C語言等頂峰對決也是這塊,不能讓記憶體回收暫停當前工作,做後勤的不能影響業務銷售員工作。

2、以編譯時為強項
編譯器會做更多形式驗證,如同考試機器,對你做的證明過程進行更多形式上的驗證,屬於形式邏輯的形式驗證,形式之形式=元邏輯。
這樣做的好處是:一旦透過編譯器編譯,如同透過考試,就是正確的,Bug出現可能性很少。這對程式設計師提出了較高的學習門檻。

函數語言程式設計語言也屬於這個範疇,強調不變性,強調程式設計師能編寫出如同微積分公式一樣的lambda流式程式碼。

3、以易用性為強項
針對不同業務領域,例如Web開發,以易用上手為主,語法簡單,沒有那麼多語法和使用者手冊,除了if else以外幾乎沒有太多let var等區分,沒有不變性和可變性,沒有有狀態和無狀態區分,也沒有單體和微服務區分。

上述三種方向是語言發展中不同權衡取捨的結果,也是人們透過社群不斷參與討論,由主要公司或基金會不斷推動對話的過程。

這三種方向能不能兼顧?
由於程式語言是介於程式設計師(掌握人類自然語言)和機器語言之間的媒介,因此,在這兩者之間偏重是一種選擇,只有經過左右側重才可能找到中庸之道,不可能一個外行人走進某個專業上下文就能居中,上下文的上下邊界都沒有探索到,何以居中?如果有此心理,還是宗教新念等意識形態驅動。

執行效能高的語言必然要更傾向於機器,目前函數語言程式設計也是一種傾向於機器的程式設計方式,對程式設計師程式設計要求高,而Rust之類語言則透過編譯器加強了對程式設計師程式設計的稽核工作,減輕了同行評審的人工負擔,讓程式設計師之間互相評審程式碼是一種落後方式,帶來雙方嚴重的認知負擔和摩擦,這些都是那些重構、敏捷之類外行想出來折磨程式設計師的無賴之舉。

偏向於機器的語言帶來的認知負擔,也就是易用性喪失。

人類語言 vs. 程式語言
程式語言是為了讓人類操作機器,那麼如今AI時代,機器人ChatGPT可以直接和自己對話如何?這當然效率更高,LLM大模型會發明適合自己的高效語言。

亞里士多德說:人類語言三個用處:道德、情感和邏輯。
前兩種可以看成是人類交流,邏輯是思想的體現。

人類語言是交流工具還是思想體現呢?
自維特根斯坦的語言轉向以來,人們更傾向於語言是邏輯表現,但是最近一篇自然論文:語言主要是一種交流工具,而不是思維工具 
其實這不矛盾,人類可以有自己的思想,不用語言表達,但是如果能語言表達,將有邏輯、情感和道德三個方面的約束,那麼存在這樣約束的語言才是思想,否則可能是胡思亂想,與做夢類似,因此,好的語言需要交流對話才能催生思想。

說了這麼多,主要是提醒一下:中國普通話語言是適合邏輯?還是更適合表達情感?道德說服力?還是三者兼具?

英語是更適合邏輯的,因此程式語言使用英語之類字母則更嚴謹,對英語本身也有促進發展,希望我們透過用漢語作為程式語言,能夠促進漢語的更邏輯化、更嚴謹化。

當然,現在我們透過與ChatGPT不斷對話,會糾正細化我們語言的邏輯部分,透過不同各種人類語言讓LLM大模型為你生成各種程式碼,你需要做的就是去驗證。

 

相關文章