Programming languages 创建一种编程语言以编写程序的指南?

Programming languages 创建一种编程语言以编写程序的指南?,programming-languages,Programming Languages,我目前正在研究编程语言和解释器设计。我已经创建了几种编程语言,但到目前为止无法实现我的目标: 创建一种编程语言,重点是让程序员在编写代码时有一种良好的感觉。它应该是有趣的和/或有趣的,而且在任何情况下,在里面写东西都不会让人讨厌 我在用Python编写代码时有这种感觉。我有时会用PHP来反驳,在一些情况下,当需要在C++中重新发明一些轮子时, 因此,我试图找出一些语法特性,使我的新语言编程变得有趣,但我就是找不到 哪些具体的特性(可能主要是语法方面的特性)可以使语言编程变得有趣 示例: 我发

我目前正在研究编程语言和解释器设计。我已经创建了几种编程语言,但到目前为止无法实现我的目标:

创建一种编程语言,重点是让程序员在编写代码时有一种良好的感觉。它应该是有趣的和/或有趣的,而且在任何情况下,在里面写东西都不会让人讨厌

我在用Python编写代码时有这种感觉。我有时会用PHP来反驳,在一些情况下,当需要在C++中重新发明一些轮子时,

因此,我试图找出一些语法特性,使我的新语言编程变得有趣,但我就是找不到

  • 哪些具体的特性(可能主要是语法方面的特性)可以使语言编程变得有趣
示例:

我发现用Ruby编程很有趣,因为它使用了代码块

  • 如果你能在回答中只举一个例子,那就太好了
  • 这些功能不一定已经存在于任何语言中
我这样做是因为当我用我喜欢的语言编程时(因为特殊的特性),我的(我自己的)生产率有了极大的提高

当你使用一个你从未使用过的API或特性时,你会觉得你已经知道了一些东西。它也让你更有效率,因为你不必为了它而学习新的东西

我认为这也是Ruby的“喜欢”之一,因为如果您遵循命名约定,那么在没有绑定和胶水之类的东西的情况下,事情开始“正常工作”


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

编程语言应使编写正确程序变得容易,而编写错误程序则变得困难(如果不是不可能的话)。例如,在Java中

long x = 2000000000 + 2000000000;
溢出,而

long x = 2000000000L + 2000000000;

没有。这是显而易见的吗?我不这么认为。有人想让东西溢出来吗?我不这么认为。

要记住的两件事是和。

欢闹

  • 遵循常见做法(如使用+进行加法和位/逻辑and)
  • 在名称空间中对逻辑相似的代码进行分组
  • 拥有广泛的字符串处理库
  • 合并调试设施
  • 对于跨平台语言,尽量减少平台差异

    • 你在问题中提到了Ruby。另外,Ruby是唯一的编程语言,对于它来说,Joy是一个实际的、明确的、明确的设计目标。(事实上,这是唯一的设计目标。)

      松本幸弘之所以能够以这种方式设计Ruby,是因为他在开始设计Ruby之前已经知道并使用了大量的编程语言,并且为了设计Ruby学习了大量的编程语言。(有趣的是,他不懂Python,并且说如果他懂的话,他可能不会创建Ruby。)

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

      • 俱乐部
      • 萨特
      • 口齿不清
      • 计划
      • 闲话
      • Perl
      • 蟒蛇
      • 哈斯克尔
      • 斯卡拉
      • PHP
      • C
      • C++
      • 爪哇
      • C#
      • 目标-C
      • 二郎
      我相信这是设计好的编程语言的一种方式(拉里·沃尔称之为后现代主义语言设计):扔掉过去一切不起作用的东西,拿走一切起作用的东西,把它们优雅地结合起来


      当然,这需要你真正了解所有你想“窃取”的语言,特别是需要你了解很多不同的语言,有不同的范式、不同的概念和不同的“感觉”,否则,你从中窃取的想法库就相当小,而且是近亲繁殖的。

      一种看似简单易学的语言功能,以其意想不到的能力让程序员感到惊讶和愉悦。我推荐Haskell类型的课程:-)

      有趣吗?为谁?5岁?前COBOL程序员?说英语的人?对你来说,回答这个问题的人我的观点是,
      令人愉快的
      是非常主观的,不同的人对此会有不同的看法。这是本周最愚蠢的问题。见鬼,是的!编程语言应该只有一种数字类型:
      number
      int
      long
      real
      double
      bigint
      bigdecimic
      fixnum
      是优化,优化属于优化器,而不是编程语言。正如Gilad Bracha最近在他的解构Java演讲中指出的那样:“Java有9种整数类型:
      字节
      int
      字节
      整数
      双十进制
      。它们的行为都不像整数。”()这就是Ada创建的目的。正好是1个数字类型。。你想要BCPL!(C的前身)我认为VB6已经涵盖了这一点:-P-1在实用语言中没有用处。啊,但它说“这是令人愉快和有趣的”:)lolcode不有趣。你试过用它写一个图形化的多线程界面吗?我没有。这也是一个笑话。乔治·爱迪生:好吧,没错,如果你使用某种消息传递的比喻,多任务处理要容易得多。我会给你的。所以让我们试试,“如果没有大量的库支持”,我仍然认为C/C++会失败:)(也许有人应该为LOLCODE编写一个消息库,它可以被称为OHAI)。