【问题标题】:What features are desirable for a programming language? [closed]编程语言需要哪些特性? [关闭]
【发布时间】:2011-07-17 17:00:26
【问题描述】:

最近,我的大学为其本科生设置了大型项目。其中一个项目是创建一种新的编程语言,其中包含其他语言的所有最理想的部分。现在,我知道很多事情对我来说是非常不可行的,例如有效地(甚至接近地)实现 - 例如让语言非常接近自然语言。

有一些简洁的功能会很不错,比如高阶函数和交换两个变量值的运算符。但是,我很难想到很多,因此非常感谢您提出一些建议-最好的建议被标记为答案。我只是在这里寻找想法,而不是如何实现它们的方法。

【问题讨论】:

  • 虽然您有接受答案的标准,但这仍然非常主观。
  • 我认为你的方法是错误的。你会发现要解决的问题,如果你不能用其他语言来解决(不太可能)你自己来做。即使你可以用其他语言来做,最好的办法是先找到你遇到的问题,然后解决方案就会变得更加有机。
  • 这个问题无法回答,因为太笼统了。有人可能喜欢极简主义(Scheme),或者一种可能有太多特性的语言(C++)。或者可能只是想要一种特定领域的语言 (PHP) 来解决特定问题。
  • 给他们LOLCODE

标签: compiler-construction programming-languages language-design language-features compilation


【解决方案1】:

我喜欢的功能:

  • 关联数组,因此我可以执行price["apple"] := 0.99 之类的操作
  • for-each 循环,因此我不必担心为集合中不存在的元素编制索引
  • := 运算符用于赋值,而不是 = ;)
  • switch-case 语句允许使用数值以外的值,例如:case "apple": price := 0.99
  • 作为有效数据类型的数字/日期范围。
  • 具有命名参数和默认值的函数
  • 对正则表达式操作的原生支持(如 Perl)

【讨论】:

  • 没有:= 运算符。大多数语言只有= 用于分配,== 用于比较。 := 看起来真的,真的很丑:)
  • 我必须查一下:= 的含义,我喜欢它!
  • @Radek S:当然可以,但这是 my 的答案并且 喜欢它。我认为赋值应该有一个比比较运算符更不同的运算符。并且== 可以看起来像= 当一个人累了... ;)
  • := 看起来不错,因为 = 赋值运算符似乎与我们从小就理解的平等概念相矛盾。
  • := Pacal 最糟糕的语言,他们强迫你在学校学习这个。
【解决方案2】:

最强大的:

  • 动态类型
  • 不会隐藏任何东西的语言
  • 身为一等公民。 (允许使用函数式编程)
  • 运行时自省
  • 语言允许过度使用默认函数和对象。
  • 元编程
  • 动态代码生成
  • 用这种语言扩展语言(只有 lisp 有这个)

【讨论】:

    【解决方案3】:

    目前,我渴望一种像 JavaScript eval 这样的语言功能,它具有执行 eval 指令序列的额外功能:

    execute_THIS( a += b; c = myfunc(a); if c < 0 exit(); );
    

    也就是说,语言运行时可以解释和执行用该语言编写的语句。

    --p

    【讨论】:

    • Lisp 宏执行此操作。它们基本上类似于返回被执行的 lisp 代码的函数。最强大的功能允许在 lisp 中扩展 lisp。
    • 哦,是的,我忘记了 Lisp。好收获!
    • 实际上有很多语言提供了这个功能。它在动态语言中相当普遍,并且并非闻所未闻(尽管编译的语言通常需要在最终结果中包含编译器/interp 才能支持它)。
    【解决方案4】:

    多重继承会很好......尽管它在任何当前语言中都不可用。

    【讨论】:

    • 错了,什么?我猜 c++ 不是当前的语言。
    • Python 也支持 MI。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2011-03-30
    • 2016-05-30
    • 2011-01-13
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多