機器程式碼 - 彙編程式碼 - 高階語言
語言處在 機器高效執行
與 人類可讀性
的平衡點最好
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>
如何設計一門好語言
- 詞頻統計,將人們最常用的詞壓縮(哈夫曼編碼的思想)。可以透過分析github上的程式碼,來提取出常用的函式名
- 靜態動態分離:靜態預編譯,動態執行時執行
...
- 樹狀檔案管理:傳統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。網路出現後需要解決通訊問題,方便流媒體一播多
- ?:氣體
面向文件,檔案和管道都用得到。