创建编程语言的指南可以编写程序吗?

时间:2010-05-09 18:18:28

标签: programming-languages

我目前正在研究编程语言和翻译设计这一主题。我已经创建了几种编程语言但到目前为止无法实现我的目标:

创建一种编程语言,专注于在编写代码时为程序员提供良好感觉。它应该是有趣和/或有趣的,并且在任何情况下都不会在其中写东西。

在Python中编写代码时我有这种感觉。我有时会得到与PHP相反的情况,在极少数情况下,我不得不重新发明一些C ++中的轮子。

所以我试图找出一些语法功能,让我的新语言编程变得有趣,但我找不到任何语法。

  • 哪些具体功能,可能主要是在语法方面,是否可以使语言编程变得有趣?

示例:

我觉得用Ruby编程很有趣,因为它使用了代码块。

  • 如果你能在答案中包含一个例子,那就太好了
  • 这些功能不一定以任何语言存在!

我这样做是因为当我喜欢用我喜欢的语言(因为特殊功能)编程时,我的生产力经历了极大的提升。

7 个答案:

答案 0 :(得分:4)

你在问题​​中提到了Ruby。 AFAIK,Ruby是唯一的编程语言, Joy 是一个实际的,陈述的,明确的设计目标。 (事实上​​,这是唯一的设计目标。)

Yukihiro Matsumoto能够以这种方式设计Ruby的原因是他已经知道并使用编程语言之前他开始设计Ruby并学习了更多为了设计Ruby。 (有趣的是,他不了解Python,并且说他可能不会创建Ruby,如果他这样做的话。)

这里只是matz自己使用过的语言的一小部分,或者是为了寻找灵感(或者在某些情况下为 做什么的灵感):

  • CLU
  • Sather
  • Lisp的
  • 方案
  • Smalltalk中
  • 的Perl
  • 的Python
  • 的Haskell
  • Scala的
  • PHP
  • C
  • C ++
  • 爪哇
  • C#
  • 目标C
  • 二郎

我相信这是设计优秀编程语言的一种方式(Larry Wall称之为后现代主义语言设计):扔掉过去不起作用的一切,把所有东西都拿走工作和结合有品味。

当然,这要求你实际上知道你想要“窃取”的所有语言,特别是,它要求你知道许多不同的语言具有不同的范例,不同的概念和不同的“感觉”,否则你窃取的想法池相当小而且是近亲。

答案 1 :(得分:2)

一致性。

当您使用以前从未使用过的API或功能时,您已经知道某些事情。它还可以提高你的工作效率,因为你不必为了它而学习新东西。

我认为这也是Ruby'喜欢'之一,因为如果你遵循命名约定,事情开始“正常工作”而没有绑定和粘合等等。

例如,在C ++中使用STL,许多算法对于所有容器都是相同的 - 甚至是字符串。这样可以很好地使用...除了那些不遵循相同API的部分(例如bool矢量)之外,差异更明显。

答案 2 :(得分:2)

要记住两件事:orthogonalityprinciple of least surprise

答案 3 :(得分:1)

编程语言应该可以轻松编写正确的程序,并且很难(如果不是不可能)编写错误的程序。例如,在Java中

long x = 2000000000 + 2000000000;

溢出,而

long x = 2000000000L + 2000000000;

没有。这显而易见吗?我不这么认为。有没有人希望某些东西溢出?我不这么认为。

答案 4 :(得分:1)

答案 5 :(得分:0)

  • 遵循常规做法(例如使用+作为加法,&作为按位/逻辑和)
  • 命名空间中的逻辑上相似的代码
  • 拥有广泛的字符串处理库
  • 合并调试工具
  • 对于跨平台语言,尽量尽量减少平台差异

答案 6 :(得分:0)

一种看似简单易学的语言功能令程序员意想不到的力量令人惊喜。我提名Haskell类型类: - )