程式語言設計,程式設計哲學

Nolca發表於2024-03-20

機器程式碼 - 彙編程式碼 - 高階語言
語言處在 機器高效執行人類可讀性 的平衡點最好

json > yaml > toml

json有{},可以壓縮空格;規則簡單;存在較少的轉義號
yaml去掉{},改用空格層級(類似python);規則較複雜

靜態語言:rust > zig > C# > JAVA > C++ > C

rust用{},更及時釋放記憶體;報錯智慧,適合程式碼協作
zig的資料型別簡單替換,便可跨平臺編譯;用macro {}代替了寫法奇怪的宏,像寫正常程式碼一樣
c#語法糖
JAVA引入
c++引入類
c最原始的語言

動態語言:python > golang > js

只有動態語言才有機會整合到瀏覽器中。

python 語法簡單,函式模組設計友善,自帶庫功能強大(類比C)
golang
js 是html的官方支援指令碼語言

三體合一

html:靜態文件,資料訪問層
css:靜態樣式,表示層
js: 動態語言,業務邏輯層

我不認為安卓、flutter那套繪製UI的方式很好,牽扯到生命週期,比html開發底層許多。

下一代瀏覽器可以獨立成一個OS

現代瀏覽器提供了很多硬體訪問的API介面給js
設計OS就是設計瀏覽器

再聯想一下3D化:

<mesh>

</mesh>

如何設計一門好語言

  1. 詞頻統計,將人們最常用的詞壓縮(哈夫曼編碼的思想)。可以透過分析github上的程式碼,來提取出常用的函式名
  2. 靜態動態分離:靜態預編譯,動態執行時執行
    ...
  • 樹狀檔案管理:傳統k-v模型,k可以是資料夾/檔案,像json可巢狀;v是value。
  • 檔案內文件型:</標記>模型

I/O 抽象

Linux: everything is file

@長風:這種思想是硬體底層所支援的,對於所有的I/O裝置,對他們進行控制只是資料的讀入和讀出,早先的CPU的I/O指令只有兩個in和out,這很容易統一。對於CPU和記憶體來說,外部裝置沒有差別。我們要做的就是將資料放入一塊記憶體區域,再將這塊區域資料放入資料匯流排,外部裝置接收這些資料。檔案描述符的作用就是指向這塊記憶體區域。
並不是作業系統將裝置隱藏起來,而是計算機的體系結構已經將裝置隱藏起來了。
https://www.zhihu.com/question/21040222

  • 檔案:固體,偏靜態,存在讀寫者搶佔問題
  • 管道:液體,偏動態,I/O變成流體,A流向B。網路出現後需要解決通訊問題,方便流媒體一播多
  • ?:氣體

面向文件,檔案和管道都用得到。

相關文章