我想开发一门新的编程语言,不过个人能力有限(编程技术很菜ヾ(o・ω・)ノ,不过并不影响我对编程语言的理解),希望有人帮助我开发编译器或解释器,完整的想法我已经有了,就等实现了。

2019-05-07 20:30:15 +08:00
 Qiaogui

不是玩具语言,不是玩具语言,不是玩具语言,重要的事情说三遍。

就是常规的通用目标编程语言,不过它有些很独特的特性,很强的,很强的,很强的!!!

希望能找一两个会做编译器或解释器的(不会也行,只要是程序猿都可( • ̀ω•́ )✧,毕竟太高级的程序猿可能会很不屑 d(´ω`*)),还想找一个会写文档的,自己文笔太菜,草案写的很丑 ̄ω ̄=,哈哈。

有兴趣的,都欢迎加入,稍后我看有多少人再决定建个讨论组或群。 还请觉得不屑的大大不要喷,虽然可能看上去很菜,但是实现了绝对能够惊世骇俗,我坚信(`_ゝ´)。

备注:1.没有工资,没有工资,没有工资,本人很穷(/ω\)。 2.希望能做成开源项目,让更多的人用,人人为我,我为人人。

27529 次点击
所在节点    程序员
319 条回复
0yster
2019-05-07 22:04:33 +08:00
不知道是不是钓鱼贴,如果不是,年度 v2 最 zz 楼主预定预订
Qiaogui
2019-05-07 22:07:24 +08:00
@0yster 不是哦,我是真的想做,自己没能力而已。。。
rizon
2019-05-07 22:14:13 +08:00
emmmmmmmmmmmmm
想了一下,好奇心驱使我还是回了帖子(该死的好奇心啊),建议楼主还是多描述一下你的想法吧,让这个事情变得更加有鼻子有眼的,懂我意思吧
Qiaogui
2019-05-07 22:26:25 +08:00
@rizon 嗯,好的呢,我从大概初二的时候开始学习的编程,现在大四了,一直是作为爱好在学习。虽然没参与过实际的什么项目,但是编程语言却学习了一大堆,之后便对大部分的语言结构都很了解。
但是我感觉大量的编程语言都有些用起来不适的地方,面向对象却出现类型限定的繁琐,面向过程则不能很好的阐述思想,像 python 这种却容易出现些不明所以的问题。等等等等。
我想改良他们,完成各种编程范式在同一逻辑结构下的统一,既易用,又简单,逻辑结构清楚静态类型与动态类型相结合,不会出现莫名所以的问题。
于是,我变想创建一门新的语言,我大概花了一年时间去思考,之间写过很多的 flex 和 bison 源代码,但总感觉不对,直到最近想法才完全成型。但受限自身能力。我苦于无法自己实现
Qiaogui
2019-05-07 22:27:41 +08:00
无论面向过程,面向对象,面向函数这些主流的思想都能统一在一个编程逻辑中。
Qiaogui
2019-05-07 22:43:02 +08:00
写点代码示例的干货吧(^_−)☆
Qiaogui
2019-05-07 22:43:10 +08:00
// 面向函数示例
var cons(x, y): //组合两个变量
rtn sel(int x):
if x == 1 : rtn cons.x _ //返回函数
if x == 2 : rtn cons.y _
_
_

var car(x): //解开函数
rtn x(1) _

var cdr(x): //解开函数
rtn x(2) _

var int q = 1, w = 2
let var i = cons(q, w) //引用绑定
car(i); cdr(i)
Qiaogui
2019-05-07 22:46:49 +08:00
//面向过程示例
int i = 1
loop for x > 7 : //为了让 x>7 执行,当 x 不大于 7 时执行循环
if x == 3 :
print(x * x) _
x++
_
oott123
2019-05-07 23:27:02 +08:00
就,先学学编译原理,然后拿个什么 PEG.js 之类的东西就能简单造出来啦。
lunafreya
2019-05-07 23:36:30 +08:00
函数范式的没看懂, 面向过程的是有什么特色吗, 另外你的注释真的很难懂。
写过完整编译器,但还是觉得现在一般给 llvm 做个前端就可以了,
Qiaogui
2019-05-08 00:03:14 +08:00
@oott123 编译原理我学过,龙书,虎书都了解,不过产生式的结构数量介于 C 和 C++之间,比较复杂,我搞不出来。
@lunafreya 做个单独的 LLVM 前端也是可以的,我现在迫切的想法就是能够让它可以使用,一旦能够使用,我相信用的人会逐渐变多的,函数范式即可以在函数内部定义函数,只要返回的函数与外部函数具有相同的返回类型就可以兼容,同样,返回的函数也可以进行多级嵌套。
Qiaogui
2019-05-08 00:04:53 +08:00
一个类型的变量不单单只是只代表这个类型的值,也可以代表能得到这种类型值所用的某种方式,也即函数。
Kilerd
2019-05-08 01:14:15 +08:00
看了这个设计,瞬间笑出声,SICP 看过了吗? 怎么设计一个语言没你想的那么简单。

7L var int q = 1, w = 2
8L int i = 1

连个简单的定义变量都出现了不一致的语法,这还不是 toy language ?

这个设计比我大学做 course homework 的设计都不如啊。
CEBBCAT
2019-05-08 01:28:29 +08:00
我记得 Python 一个假期就做出了雏形,楼主有创新的思想俺是支持滴。

我记得有人提到 Java 的设计人员说过,Java 有的地方不尽人意其实是向现实妥协的结果。

另外就像楼上所说,您的这门语言还是需要添加更多细节,现在我大概只知道您要创建一门新语言,而不知道它有什么优缺点。
Qiaogui
2019-05-08 07:17:08 +08:00
@Kilerd SCIP 不知道你指的是不是 scheme,如果是的话,当然我看过哟,苏珊曼的网络视频和书籍我都看过。
至于语法,并不是不一致哟,不用 var 定义,是像 c 一样默认在栈上创建,使用 var 代表声明一个类型的引用名,而不直接创建对象,至于为什么可以直接等于,这是对基本类型动态创建的一个语法糖。
一般形式 int i
引用形式 var int i
引用显示动态创建 var int i = int +; i = 0
简写形式 var int i = 0

谢谢您的回复

@CEBBCAT 我希望创建的这门语言简单,方便,高效。而我认为达成这些目标并不应该像 basic,和 pascal 为了简单和结构,添加了大量底层关键字,这对国人并不是很友好,不如使用像 C 一样简单的符号代替,采用更加统一的逻辑结构才能是学习更容易。Python 非常方便和高效,我非常认同,但是一旦遇上 bug,可能半天都无法修复,并且他对其他语言模块的基本访问方式也非常困难。而 Java 在开学的时候,一个 main 函数就要加上一堆限定符,虽然它把 C++指针改成了引用,算是一个巨大的改良,但是,各种限定符无疑增加了语言的复杂性,不过限定符的好处还是有的,它对设计模式的应用具有很大的作用,所以我这门语言通过基本的语法,保留了限定符的功能,却不保留他的形式,使其在面向对象形式上用起来更为简单,但在功能上强于 java python。

感谢您的回复
TTLD
2019-05-08 08:35:55 +08:00
@Qiaogui #8 看不懂 for > 7 循环,无法理解具有颠覆意义的循环
xuddk727
2019-05-08 08:37:48 +08:00
写解释器比写编译器靠谱,因为简单,而且 lz 预算多少
sbw
2019-05-08 08:53:41 +08:00
围观
beingWH
2019-05-08 08:58:19 +08:00
玩地卜师的只有两种人,大神和菜狗
Qiaogui
2019-05-08 08:58:39 +08:00
@TTLD 这只是一个简单的示例,for 表达式是 if not 表达式的一个语法糖,意即为了满足条件才执行语句(其实还有更多的用法)。而更多深入的地方则涉及到了语言底层在结构化编程上的改进,在还没彻底实现之前,暂时还不想透露更多细节。

感谢您的回复

@xuddk727 我比较穷的 /(ㄒoㄒ)/~,没有预算什么的,只希望有一拍即合的朋友能够帮忙实现。
之后能做开源也是希望能造福社会。

感谢您的回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/561958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX