104359176 发表于 2015-05-18 00:17

我一直想设计自己的编程语言,也一直在努力。

我厌恶 C,C++, Java,Python(现在好多了),还有很多很讨厌。比较喜欢 Perl,Ruby,Scheme, newLISP, Clojure, Io, Lua, 但总是有些遗憾,都不是我心目中的语言,也许只有我自己设计的语言才是属于自己的语言。我的语言要有以下特点:

1. 语法能很快修改,因为当我发现了更简洁的表达形式,或者要针对特别语言环境编写代码时,现有的语法特性无法支持。如果修改语法比我耐着性子痛苦写别的语言代码的工作量要大的话,就算了。也就是说,语言的语法是分离出来的。这种语言应当有一种子语言是描述语法本身的。

2. 这门语言的基本语法简单,因为我很笨,记不住那么多的语法。想扩展语法,只需要增加一个关键字抽象就可以了。而且大部分的抽象不需要修改源码,一个宏就搞定。

3. 这门语言可以方便的转换成许多语言,它能感知周围的语言环境,能生成相应的语言代码,和周围的环境进行交互。

4. 至于并行,在需要并行的语言环境中,这门语言就可以启用相关的关键字了。

5. 至于内存布局之类的,还是让那些研究底层的去考虑吧,CPU 的架构不断改变,机器语言也会不断升级,寄存器越来越快,缓存越来越大,内存越来越便宜,硬盘越来越海量,这些存储方面的苦力,还是让对底层硬件感兴趣的硬件程序员去考虑吧。

6. 要有可选的类型系统,但不是强制要求的,因为这个语言应当有最起码的类型推断功能,如果连 34 都不知道是什么数据类型的话,只能说设计这门语言的人和猪差不多了。当进行深层次优化的时候,可以启用备用的类型系统,对函数设计,返回值进行类型优化。但类型不应当成为快速开发原型的障碍。

7. 这门语言不会像 Java,Ruby,Haskell 等语言一样,强制我去用一种思考模式,编程范式去写代码,它允许我用函数式,面向对象,面向过程,甚至是面向需求,总之,哪种方式最适合当前的项目,就用什么。

8. 这门语言肯定不会是那种需要一个编译器去编译,然后去运行的语言,因为太浪费生命了。

如果这些要求都达不到,就更别说高亮的语法文件,合适的编辑器,成熟的社区,快速的反馈,完善的模块,大量的用户,多领域的应用了。

世界上已经有 3000 多种语言了,我相信我不会设计出比别人优秀的语言。我也不指望别人使用我的语言,我只希望自己用。

pandaiam 发表于 2015-05-19 09:45

这本书评价很好啊...
目前还是只会C, cpp正在考虑.

heguangwu 发表于 2015-05-22 17:24

现在大家热衷自己发明语言,其实这个做一个玩具还可以,真要做一个产品难
语言都是针对特定的问题提出来的,解决某一个场景适合就可以了,如果做一个大而全的东西估计复杂度太高,而且也没有人用啊

CUTianrui007 发表于 2015-05-22 18:36

指针两个特性:地址和步长,理解了这两个特性就理解了指针的精华。

CUTianrui007 发表于 2015-05-22 18:39

做好做啊好不重要 ,关键是经历,不在乎天长地久,只在乎曾经拥有,就是这感觉。

lsstarboy 发表于 2015-05-22 19:41

我多年来一直萦绕在心头的念头:
应该有一种兼容性极高的语言,只要有确定输入输出的地方,就可以进行运算。比如显卡、声卡、网卡,只要给了一下确定的输入,就会有一个对应的输出,只要具备这个特征,就可以跟程序,区别仅在于速度,并且可以高度的并行去运算,CPU不够时可以用GPU,GPU仍然不够时可以用声卡……

貌似opencl有某些特征,但是opencl目前看用起来还是比较麻烦,要弄一大堆东西才能跑起来。

kedadiannao220 发表于 2015-05-23 09:06

只能说楼主很厉害

SeAL80s 发表于 2015-05-23 16:39

我是来围观的,坐等大牛发言。其实楼上说的对,很多东西,都是看着很难,真的静下心来做,也就不难了。
但是,这里有两个问题:1.很多老师不合格,直接导致学生不合格,基础不扎实。2.很少有人能静下心来做事。

CUTianrui007 发表于 2015-05-23 17:42

关键还是要做 成功与否不重要

tomac_cu 发表于 2015-05-28 21:14

1、设计一门语言,你打算借鉴当前语言的哪些机制?为什么要使用这些机制?你的目的是什么?
java的对象回收机制,用c,c++最大的问题就是内存泄露,太花时间了。

2、语言的实现和编译器密切相关,你打算如何实现编译器?请仔细描述至少一项语言机制的编译器实现方式。
作为一门语言为什么一定要用编译器呢?未来动态语言的应用将大大超过编译语言,经过语法和词法法分析后的中间代码
更有利于知识产权的保护和跨平台运行。所以我想会在JIT方面应该更需要着力。

3、你打算如何设计对象内存布局?这个和语言机制有什么关系?
这个就是解释器的问题了,主要是变长内存的使用,如果有好的中间代码,翻译类似于RISC的指令码可能更好。
如果能够在运行时兼顾到虚拟内存的分页问题可能会更加完美。


4、如何处理同步异步?
在语言层面上处理同步异步好象就太高档了。需要一个与OS强耦合的解释器了,对于解释器的编写带巨大的难度,更倾向于用本地库来实现。
页: 1 2 [3] 4
查看完整版本: 设计属于自己的编程语言你有何高见吗?