编程语言这么难实现吗?

说起来是否有点尴尬, 现在常用的编程语言也好几十种了吧, 为何国内实现的好像一个都没有?(国内的一些框架倒是很有名气了, 例如Vue)

关键是否就是抽象?

现在可以在上一层的维度(而不是最底层)去实现, 应该可以节省很多研发/实现成本吧?
就像Emacs就是通过C语言而不用汇编去实现的吧?

我们可否可以基于Lisp实现自己的一种语言?(也可以看起来很 Un-Lispy 吧)
乍一想觉得不是很难, 难就难在对应的编辑器等辅助工具的实现(类似 VSCode 这样的语法提醒, 自动缩进这些, 关键字颜色的切换?), 要不然如果让你在 text-mode 来写代码也很痛苦吧?

不难,大学生 初中生 都能做一个。难在玩具语言没有生态。为啥没生态,因为你造语言就是为了造语言而不是为了解决某个问题,有生态才怪。

我们应该也有很多问题想要解决而没有特别合适的语言吧?
还是说我们的IT行业还是主流地在模仿+超越?

例如C语言是源于UNIX而开发出来的, 现在华为不是说要开发自己的OS吗? 那是否时候到了?

我称之为病态国产心理。一切都国产,一切都自己造,非常可笑。 有另起炉灶那个精力,不如投入开源项目,站在巨人的肩膀上。

技术不应该以国家为单位,应该主要考虑实用性,然后考虑版权,考虑发展。如果一个开源技术已经满足 90% 需要,那就投入精力去改进它,贡献给整个社区,而不是另起炉灶重头来。分裂生态最终对大家都不好。

4 个赞

误会了啦, 我没有强调要"刻意"自己造, 只是觉得我国开发者人数不少, 应该会自然而然有这个创造针对自己的语言这个需求吧?

不过本人也会以一种 兴趣+实用的态度想去探索研发下(一切就是为了好玩嘛, 在过程会无意间获取得更多)

编程语言的重点是理解编译器原理,掌握基本的词法分析和语法分析工具,最关键的是,你造的编程语言在核心上面和现有的编程语言有啥差异点?

语法糖不是编程语言,语法高亮也不是核心难点(任何编程语言基于Emacs的基础设施,不超过1个星期就可以完成)。

编程语言、编译器和操作系统都是时代的产物,要先想清楚为啥要做? 如果只是技术研究,就多了解编译器、调试器和操作系统进程管理原理,这些好了,编程语言都是小Case。

如果只是为了造编程语言而造编程语言,还不如把生活弄好,业余时间开发,业余开发需要5到10年心理准备,生活不照顾好,只会半途而废。

11 个赞

我觉得难不是难在实现,而是难在能找到并解决某个问题,最好能带来新的思维方式。

1 个赞

是的, 解决已存在的问题是关键
归根结底, 疑问的其实就是, 编程语言的研发出发点, 难道国内就没有吗?
还是反应出了什么问题?(如 吃饱都是个问题, 哪有时间去搞创作…)

是有国内实现的编程语言的,高赞就是。

更合适的问题应该是为什么流行的编程语言中,国内设计的占比比较小?

2 个赞

你先研究每个流行编程语言的历史,都是和当时的时代和当时的问题相结合的(我就不一一举例子了)。

是,先要吃饱饭才有精力去创作,而且编程语言你没有准备好5年以上的投入,编程语言基本功能都跑不起来(不要搞那种 llvm 套语法糖的事情,不懂底层原理早晚会还回去的)。

楼主,你的问题证明你的计算机基础还不够扎实,踏踏实实做点事情,好好学习,先把生活搞好,时间很长,不要动不动就说要做编程语言和操作系统,这两个东西没有十年之功就不算入门,也不要说华为啥的,华为如果踏踏实实做事情,就不会天天在互联网吹牛逼了。

4 个赞

随着年龄的增长,逐渐发现自己没那么喜欢在编程上尝试新的东西了,没有足够的时间、精力和兴趣,也可能都是大同小异。找到自己用的顺手的工具/语言,把现有问题解决就已经很满足了。

最近了解到的 hamler 也不错

1 个赞

嗯, 不敢说自己的基础够扎实, 不过毕业刚好满十年了呃…
主要是凭着一些好奇心与兴趣点来咨询大家(当然自己也经常三分钟热度, 时不时该热度又复现)
另外就像Lisp的语法解析跟一般的语言实现有所不同, 所以觉得也不是一切定死了的, 5年专门地投入或许鄙人是还做不到, 希望自己能逐渐地"悟"出什么, 让自己从 ± 进化成 x➗

(另外华为我也只是随便提一下的哈, 我没用过华为手机, 视频几乎也只看YT而手机还没安装过抖音)

个人估计一个关键原因就像"文艺复兴", 某些基本的 势头/概念/文化 大大决定了某些方位的走势(而不仅仅是看"数量")

Erlang 大家用得多吗? 我是挺有兴趣, 不过暂无项目能让自己以"实践"的方式去学(有一定的成就感), 较难坚持…

好好学习吧,多经历多实践,很多东西都可以解决,世界上没有那一门编程语言的作者靠想就能‘悟’到啥的,最近的新语言Nim的作者做了十多年了,一个人。

很多长时间的事情主要靠做,靠犯错来获得经验的,不是靠想。

2 个赞

是, 鄙人也会经常"质问"为什么, (就像爱因斯坦告诉我们要敢于质疑权威), 我说的"悟"其实暗示着一些"缘分/运气/概率"

就像蝴蝶效应/分形(fractal), 我们确实不能"推测/计算"出来, 只能靠 经验/实践
很多时候确实 缓存 > 算法
Just for Fun, 若无Fun, 就很难"长时间"去"做"了

人要先活下去养活家人,在负责责任的时间里锻炼自己的一技之长和平和的心智,最后才有资格 Just for fun, Linus和大多数国外开源软件作者能在很年轻的时候只玩,是因为别人的国家福利好。

国内还是要先考虑好好生活,兼顾兴趣,如果能力足够强,有一天可以实现工作就是喜欢的事情,那就已经非常不错了。

啥事情都要考虑现实情况,编程语言是比操作系统更难的事情,没有足够的实力和资金,在国内不要轻易说做编程语言。

此贴我也不再回复。

6 个赞

咱单身狗的天然优势出来了🥸

这个感觉不能定死(没有"绝对"), 我记得大学图书馆(十几年前)就有本书《自己动手写操作系统》啊… 同样是一个可以住的房子, 有可能很简单(穷), 也可能超级贵(奢), 就好像 Linux最初实现也不是因为自己买不起UNIX所以自己试试搞吗? (无心插柳柳成荫啊)

呃, 不好意思了, 鄙人就当做是大家在聊天分享自己的见解知识, 免不了在意淫没有考虑大家的感受哈, 请见谅

Linus一开始是移植,不是从头开始!

嗯, 是的, 我想现在开发一门新的语言也不是从0开始的, 就像刚刚被分享的 Hamler, 也是基于Erlang

有很多成功借鉴(我没提腾讯啊)

或许我的疑问解答是 “已经够用了, 不需要国内刻意去研发新的语言”

你没听说量子计算又有了新进展了吗?