编程语言设计,编程哲学

机器代码 - 汇编代码 - 高级语言
语言处在 机器高效执行人类可读性 的平衡点最好

json > yaml > toml

json有{},可以压缩空格;规则简单;存在较少的转义号
yaml去掉{},改用空格层级(类似python);规则较复杂

静态语言:rust > zig > C# > JAVA > C++ > C

rust 用{},更及时释放内存;报错智能,适合代码协作
zig 的数据类型简单替换,便可跨平台编译;用macro {}代替了写法奇怪的宏,像写正常代码一样
erlang, elixir 则有目前最好的高并发模型,基于函数式编程 https://github.com/discord/sorted_set_nif
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。网络出现后需要解决通信问题,方便流媒体一播多
  • ?:气体

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

posted @ 2024-03-20 16:52  Nolca  阅读(2)  评论(0编辑  收藏  举报