Compiler construction 编程语言需要哪些特性?
最近我的大学为本科生设立了大型项目。其中一个项目是创建一种新的编程语言,其中包含了其他语言中最理想的部分。现在,我知道很多事情对我来说是不可能有效实现的(甚至是非常接近的)——例如,让语言非常接近自然语言 有一些整洁的特性会很好,比如高阶函数和用于交换两个变量值的运算符。然而,我努力想了很多,所以一些建议将非常感谢-最好的一个会被标记为答案。不过,我只是在这里寻找想法,而不是如何实现它们的方法。我喜欢的功能:Compiler construction 编程语言需要哪些特性?,compiler-construction,programming-languages,language-design,language-features,compilation,Compiler Construction,Programming Languages,Language Design,Language Features,Compilation,最近我的大学为本科生设立了大型项目。其中一个项目是创建一种新的编程语言,其中包含了其他语言中最理想的部分。现在,我知道很多事情对我来说是不可能有效实现的(甚至是非常接近的)——例如,让语言非常接近自然语言 有一些整洁的特性会很好,比如高阶函数和用于交换两个变量值的运算符。然而,我努力想了很多,所以一些建议将非常感谢-最好的一个会被标记为答案。不过,我只是在这里寻找想法,而不是如何实现它们的方法。我喜欢的功能: 关联数组,这样我就可以做类似于price[“apple”]:=0.99 对于每个循环
- 关联数组,这样我就可以做类似于
price[“apple”]:=0.99
- 对于每个循环,我不必担心索引集合中不存在的元素
- 用于赋值的
运算符,而不是:=
;)李>=
- 允许数值以外的内容的开关大小写语句,例如:
case“apple”:price:=0.99
- 作为有效数据类型的数字/日期范围
- 具有命名参数和默认值的函数
- 对正则表达式操作的本机支持(如Perl)
- 关联数组,这样我就可以做类似于
price[“apple”]:=0.99
- 对于每个循环,我不必担心索引集合中不存在的元素
- 用于赋值的
运算符,而不是:=
;)李>=
- 允许数值以外的内容的开关大小写语句,例如:
case“apple”:price:=0.99
- 作为有效数据类型的数字/日期范围
- 具有命名参数和默认值的函数
- 对正则表达式操作的本机支持(如Perl)
- 动态类型
- 不会隐藏任何东西的语言
- 作为一等公民的职能。(允许使用函数式编程)
- 运行时自省
- 语言允许过度驱动默认函数和对象
- 元编程
- 动态代码生成
- 用这种语言扩展语言(只有lisp有这种语言)
- 动态类型
- 不会隐藏任何东西的语言
- 作为一等公民的职能。(允许使用函数式编程)
- 运行时自省
- 语言允许过度驱动默认函数和对象
- 元编程
- 动态代码生成
- 用这种语言扩展语言(只有lisp有这种语言)
- 最强大的一个:
execute_THIS( a += b; c = myfunc(a); if c < 0 exit(); );
执行它(a+=b;c=myfunc(a);如果c<0退出(););
也就是说,语言运行时可以解释和执行用该语言编写的语句
--p目前,我渴望一种类似JavaScript eval的语言功能,它具有执行eval’ed指令序列的额外功能:
execute_THIS( a += b; c = myfunc(a); if c < 0 exit(); );
执行它(a+=b;c=myfunc(a);如果c<0退出(););
也就是说,语言运行时可以解释和执行用该语言编写的语句
--p虽然你有接受答案的标准,但这仍然是相当主观的。我认为你的理解是错误的。你会发现需要解决的问题,如果你不能用其他语言解决(不太可能),你可以自己解决。即使你能用其他语言来做,你最好的办法就是先找出你遇到的问题,然后解决问题的方法就会变得更加有机。回答这个问题是不可能的,因为它太笼统了。有些人可能喜欢极简主义(Scheme),或者一种可能有太多特性的语言(C++)。或者你可能只是想要一种特定领域的语言(PHP)来解决一个特定的问题!虽然你有接受答案的标准,但这仍然是相当主观的。我认为你的理解是错误的。你会发现需要解决的问题,如果你不能用其他语言解决(不太可能),你可以自己解决。即使你能用其他语言来做,你最好的办法就是先找出你遇到的问题,然后解决问题的方法就会变得更加有机。回答这个问题是不可能的,因为它太笼统了。有些人可能喜欢极简主义(Scheme),或者一种可能有太多特性的语言(C++)。或者你可能只是想要一种特定领域的语言(PHP)来解决一个特定的问题!无
:=
操作员。大多数语言只有=
用于赋值和=
用于比较。而且:=
看起来真的,真的很难看:)我必须查一下:=
的意思,我喜欢它@拉德克:当然,但这是我的答案,我喜欢。我认为赋值应该有一个比比较运算符更不同的运算符。当一个人很累的时候,=
看起来就像是=
。;):=似乎是一个很好的例子,因为分配的=运算符似乎与我们从小就理解的平等观念相矛盾。:=
Pacal是有史以来最糟糕的语言,他们强迫你在学校里学习。没有:=
运算符。大多数语言只有=
用于赋值和=
用于比较。而且:=
看起来真的,真的很难看:)我必须查一下:=
的意思,我喜欢它@拉德克:当然,但这是我的答案,我喜欢。我认为作业应该有一个比comp更不同的操作符