编程语言这么难实现吗?

没有看懂有什么关系

那在另一个平行宇宙 emacs-lisp 就长这样 :scream:

(कब (सेअधिक (उम्र प्रोग्रामर) 35) (ईमेलभेजें प्रोग्रामर) (वेतन प्रोग्रामर 14) )

你可能需要的是 自然语言处理

看了这里的一大堆回答, 觉得挺有道理, 大部分都是在说我国在科技这方面的"文化"有距离, 我们大多人追求的主要是利益/养家糊口, 没有那么自由, 我国的IT技术跟国外也是有很大差距, 主要是靠商业优势…

你好像没正面回答

  1. 中文键盘输入难度
  2. 编程语言背后的数学逻辑和中文毫无关系

只要这两个问题没解决,那中文编程就是扯淡。

2 个赞

只是感觉看不到希望吧,学习得越多,越觉得中文编程无望。

我会把 shift当作快捷键来使用,就是因为觉得shift键是专为英文输入而设计的,在英文输入中非常重要,但在纯中文输入的情况下用处不大,我知道的所有中文输入法对shift键的应用就是切换到英文输入状态(可惜emacs内输入法不行); 我也想不出来shift键对于中文输入能起到什么作用,与其浪费(忽略掉英文输入),不如将其作为快捷键来用,部分取代ctrl

简体字和繁体字切换?:new_moon_with_face:

其实我觉得你大可以自己先试试 :smile:,再不济照猫画虎模仿一个也行~要是有成果了发个项目链接来瞅瞅 :stuck_out_tongue_closed_eyes:

1 个赞

是呀, 也是突然/偶尔 有一种激情(保质期:三分钟)好像有点点蠢蠢欲动, 凭着好奇心在这与大家探索一下
少走点弯路嘛(引语: 听君一席言, 胜读十年书 or 茅塞顿开), Just for fun

另外正在看的这本也觉得最后一章最好看最贴切, 推荐大家看一看, 气的就是几乎所有编程语言(从Fortran/COBOL 到 Java)都提到了就是对 Lisp只字未提…

很简单,等到 Unix 能用上 Lisp 的时候已经是八十年代各种山寨版 Unix 满天飞了。当然和“正统”的Unix历史没啥关系。

真要说晚,APL 还是先上的 PC (跑 MS-DOS 的那种,再后上 Unix 的。

没有想象中那么难。但要造一个商业级别的编程语言花的时间成本和学习成本十分巨大。

如果造一个玩具尤其简单,有很多书籍可以学习。 本人就用C++从零实现了《Writing a Interpreter in Go》这本书介绍的解释器所有的功能。具体见 这里,实现的解释器的特性如下:

  • C-like syntax
  • variable bindings
  • integers and booleans
  • arithmetic expressions
  • built-in functions
  • first-class and higher-order functions
  • closures
  • a string data structure
  • an array data structure
  • a hash data structure
1 个赞

可能是蝴蝶效应吧, 有时候(大多时候)看运气/缘分

吾跟现在主流的一样, 如果要自己实现编译器, 那也是基于C语言, 而不是汇编
就是把自己设计的语言(根基也是文本, 关键是定义自己的语法," "说了算)转译成C语言
(自己写个编译器把 X语言转译成C语言, 再交给用完即走的大众C编译器)

不过说不定可以转译成Lisp(而不是C)会更加简洁?!

这想法放90年代因为跨平台成本高倒还算先进,放现在就落伍了。现在连玩具级别的解释器(说的就是你,lua)都可以用 LLVM 或者 GCC 搞 JIT 了,还调用啥 C 编译器

70’s 的 ML 就是这么整的,说实话性能上限放现在不够看的,连 OCaml 这种没整啥复杂优化的编译器都打不过。也不是说现在没人这么整了,Idris2 就编译到 Chez Scheme,但是很难说它是设计正确的语言。

1 个赞

吾不得不承认, 吾已经落伍了(因为我看SBCL"好像"就是用C语言写编译器的?) :sob:

性能在现在来说不是很紧要吧? 我估计Lisp的性能跟底层CPU有关系
说不定我们可以来场 CPU大革命/CPU版文艺复兴

还不知道这门语言, 总之我现在是函数式/Functional Programming的脑残粉了, 凡事都尽量 抽象,抽象,抽象(重要的事情说3遍), 贵精不贵多 (现在生活上自己也尽其所能用成语来跟朋友交谈)

前段时间看到 JB 的 IDE 里有一个插件,功能是输入拼音/拼音首字母自动补全变量名,我觉得这一点挺好的,但是要想达到实用级别可能还要好久

写个玩具语言解释器很容易,计算机本科毕业的都写过,除非你的作业是抄的。我当年是个类PASCAL语言,也有学校做类LISP语言的。

Nim 是调用外部编译器。PC和服务端是可以 llvm 走天下,嵌入式里头还是不行,要用五花八门的交叉编译工具链,即使 zig cc这种恐怕也替换不了各家的交叉编译工具链。

Idris 2 设计有啥缺陷?愿闻其详啊😄

SBCL 的编译器是纯 Common Lisp 写的,代码树里只有很少的C作为和系统交互的胶水。用 C 写编译器的是 ECL,也就是所谓的 Kyoto Common Lisp 系列。Clozure CL 也是用 CL 写的编译器,只不过运行时用 C++ 写的。

用什么语言写? 汇编 or C?

SBCL里用的Common Lisp 是由C语言写的吗? (吾好像 GNU is Not Unix 酱递归循环了 :hot_face:)

我用的是PASCAL