43

我对编译器、解释器和语言感兴趣。

你知道的最有趣但被遗忘或未知的语言是什么?更重要的是,为什么?

我对编译、解释和 VM 语言都感兴趣,但对Whitespace 或 BF 等深奥的语言不感兴趣。
当然,开源将是一个加分项,因为我计划学习并希望从中学习。

4

43 回答 43

30

我喜欢编译器和虚拟机,也喜欢 Lua。

Lua 不像许多其他脚本语言那样得到很好的支持,但从像你这样的心态来看,我相信你也会爱上 Lua。我的意思是它就像 lisp,(据我所知,lisp 可以做任何事情),具有 ADA 的许多主要功能,而且它内置了元编程,函数式编程和面向对象编程足够松散,可以制作任何类型您可能想要的领域语言。除了 VM 的代码是简单的 C 代码之外,这意味着即使在那个级别上,您也可以轻松地深入了解它。

(而且它是开源的 MIT 许可证)

于 2008-10-14T11:11:36.380 回答
25

我是 D 编程语言的粉丝。这是来自官方网站的维基百科文章和介绍。

维基百科文章的一些片段:

D 编程语言,也简称为 D,是 Digital Mars 的 Walter Bright 提出的一种面向对象、命令式、多范式的系统编程语言。它起源于对 C++ 的重新设计,但即使它主要受该语言的影响,它也不是 C++ 的变体。D 重新设计了一些 C++ 特性,并受到其他编程语言中使用的概念的影响,例如 Java、C# 和 Eiffel。稳定版 1.0 于 2007 年 1 月 2 日发布。实验版 2.0 于 2007 年 6 月 17 日发布。

关于特点:

D 的设计是从实际 C++ 使用中吸取的经验教训,而不是从理论的角度。尽管它使用了许多 C/C++ 概念,但它也丢弃了一些概念,因此并不严格向后兼容 C/C++ 源代码。它通过实现契约式设计、单元测试、真正的模块、垃圾收集、第一类数组、关联数组、动态数组、数组切片、嵌套函数、内部类、闭包[2]、匿名函数、编译时函数执行、延迟评估并具有重新设计的模板语法。D 保留了 C++ 进行低级编码的能力,并增加了对集成内联汇编器的支持。C++ 多重继承被带有接口和 mixin 的 Java 风格的单一继承所取代。D的声明,

于 2008-10-14T12:47:17.310 回答
18

我想很大程度上取决于您所说的“非主流”是什么意思。

lisp会算作非主流吗?

于 2008-10-14T11:00:53.623 回答
16

我建议看看 Erlang——它最近受到了一些媒体的关注,所以一些学习资源非常好。如果您使用过 OO 和/或过程语言,Erlang 肯定会以新的和令人兴奋的方式改变您的想法。

Erlang 是一种纯函数式语言,对并发、分布式和容错程序提供了基础支持。它有许多有趣的特性,包括变量根本不是真正的变量——它们一旦声明就不能更改,实际上可以更好地理解为一种模式。

博客圈中有一些关于在 Erlang 平台 (OTP) 之上构建以及对 Ruby 等其他语言的机器支持的讨论——Erlang 将成为一种用于运行并发应用程序的虚拟机,这将是一个非常令人兴奋的可能性。

于 2008-10-14T11:23:52.470 回答
11

我最近爱上了Ocaml和一般的函数式语言。

例如,Ocaml 提供了所有可能世界中最好的。您获得的代码可以编译为与 C 一样快的可执行本机机器语言,或通用可移植字节码。你会得到一个解释器来为开发带来 REPL 速度。您将获得函数式编程的所有力量,以生成完全正交的结构、深度递归和真正的多态性。最重要的是对面向对象的支持,在已经提供了 OOP 所承诺的一切(封装、模块化、正交函数和多态可回收性)的函数式语言的上下文中,这意味着 OOP 被迫实际证明自己。

于 2008-10-14T12:31:40.587 回答
10

Smalltalk (参见此处链接的讨论)。有点像动态语言的祖父(Lisp 和 SNOBOL 可能除外)。使用 Java 和现在的 Python 和 Ruby 等较新的语言非常好用,但遗憾的是被它践踏了。

于 2008-10-14T11:16:08.040 回答
10

FORTH 是一种为早期 CPU 上的低级代码设计的语言。它最显着的特点是基于 RPN 堆栈的数学运算。早期 HP 计算器上使用的数学类型相同。例如 1+2+3+4= 会写成 1, 2, 3, 4, + , +, +

于 2008-10-14T11:16:46.087 回答
8

Haskell 和 REBOL 都是令人着迷的语言,原因截然不同。

Haskell 可以真正让开发人员大开眼界,其中包含 monad、部分应用程序、模式匹配、代数类型等概念。对于好奇的程序员来说,这是一个大杂烩。

REBOL 也毫不逊色。一开始看起来很简单,但是当您开始深入研究上下文、PARSE 方言和 Bindology 等概念时,您会意识到这不仅仅是表面上的东西。REBOL 的好处是它比 Haskell 更容易上手。

我无法决定我更喜欢哪个。

于 2008-10-14T12:17:10.473 回答
7

Boo以 .NET 框架为目标并且是开源的。灵感来自 Python。

于 2008-10-14T11:04:02.120 回答
7

试试colorForth

于 2008-10-14T12:33:19.320 回答
7

PROLOG 是一种基于规则的语言,具有回溯功能。您可以生成非常易于阅读(如在 prosa 中)的代码。

于 2008-10-14T12:42:51.610 回答
6

我发现约束语言很有趣,但很难知道什么是遗忘或未知。以下是我所知道的一些语言(这当然不是任何类型的详尽列表):

  • CiaoYAPSWI-PrologGNU Prolog都是 Prolog 的实现。我认为它们都是开源的。Ciao、gnu prolog 和可能的其他一些也支持其他约束类型,这在 Prolog 实现中很常见。例如整数规划。
  • 据我了解, MozartMercury都是替代逻辑编程语言。
  • Alice更属于 ML 系列,但支持使用GECODE C++ 库的约束编程。

有点跑题了。。。。

  • Maude是一个有趣的术语重写语言。
  • HOLCOQ都是语言社区常用的机械化证明系统。

Lambda-the-Ultimate是谈论和了解更多有关编程语言的好地方。

于 2008-10-14T12:56:01.550 回答
5

我不得不说 Scheme,尤其是在它的R6RS化身中。

于 2008-10-14T12:58:23.667 回答
4

Modula-2 是我发现最有趣的非主流语言。看起来很主流,但不像我们习惯的那样工作。从 Pascal 继承了很多东西,但又足够不同以提供有趣的学习可能性。

于 2008-10-14T12:32:08.493 回答
4

在http://www.iolanguage.com/ 或 Lisaac 上查看 Io : https ://gna.org/projects/isaac/ 或 Self 在:http ://self.sourceforge.net/ 或 Sather(现在绝对被遗忘)或埃菲尔http://www.eiffel.com

为什么这里有几个原因。Io 绝对简约,甚至没有“控制流元素”作为语法实体。Lisaad 是 Eiffel 的后续产品,对 AFAIKT 进行了许多简化。Self 是 Smalltalk 的后续产品,Io 也从 Self 那里获得了很多。基本的事情是已经放弃了类和对象之间的区别。Sather 是对 Eiffel 的回应,它有一些其他规则和对函数式编程的更好支持(从一开始就)。

Eiffel 绝对是静态类型的 OO 语言的标志。Eiffel 是第一个支持按合同设计、泛型(又名模板)和处理继承的最佳方法之一的语言。它曾经是并且现在仍然是更简单的语言之一。我为埃菲尔找到了最好的图书馆.....

它的创造者只有一个问题,他没有接受其他对OO领域的贡献......

问候

于 2008-10-22T10:35:44.387 回答
3

我最近从这个问题中了解到Icon的存在。从那以后,我用它来回答几个问题。( 1 , 2 , 3 , 4 )

这很有趣,因为它的评估策略 - 它是我所知道的唯一支持回溯的命令式语言。它为许多事情提供了一些简洁的代码:)

于 2008-10-14T11:13:51.350 回答
3

学习任何需要你重新思考编程习惯的语言都是必须的。一个明确的标志是您浏览语言核心(而不是库)文档的速度。快速在这里意味着没有结果。

我的短名单是,按照我的曝光顺序以及我从中学到的概念:

  • 汇编,C:非常适合学习指针及其算术。
  • C++:与 C 相同,只是介绍了泛型,只要你能忍受令人难以置信的冗长语法。
  • Ruby/Lua:脚本语言,动态类型,为现有的 C 库编写绑定。
  • Python/C#/Java:跳过,这些语言在我看来是对源自其他地方的概念的重新混合,具有巨大的标准库。当然,整个软件包都很好,但是您不会在这里学习新概念。
  • OCaml:类型推断正确,部分应用,编译器推断通用性,默认不变性,如何优雅地处理空值。
  • Haskell:默认是惰性的,monads。

我的 €.02。

于 2008-10-14T12:17:45.107 回答
3

我不敢相信 Logo 就这么被遗忘了。好的,这是徽标。有点像 lisp,但语法略丑。尽管在 Logo 中使用列表,但会遇到令人愉快的命名为 'butfirst' 和 'butlast' 的操作。=P

于 2009-06-23T02:12:16.300 回答
3

毫升。学习和使用它会迫使你以不同的方式思考编程问题。在大多数情况下,它也会给予一种耐心。最多。

于 2009-10-02T20:21:03.997 回答
3

怎么样?它是全新的,所以它是未知的并且不是主流(还)。

这很有趣,因为语法看起来就像将 C 和 pascal 放入 jar 并让它们战斗之后发生的情况。

于 2009-12-01T22:52:33.987 回答
2

好吧,曾经它被称为MUMPS,但现在它被称为 InterSystems Caché http://www.intersystems.com/cache/

于 2008-10-14T13:17:09.620 回答
2

第一个答案 - 方案。它的使用不是很广泛,但绝对看起来像是一种可靠的语言,特别是考虑到 DrScheme 的健壮性(它实际上将 Scheme 程序编译为本机二进制代码)。

在那之后 - Haskell 非常有趣。它是一种正确执行惰性求值的语言,其后果令人难以置信(包括诸如斐波那契数列的单行定义之类的事情)。

走向更主流,Python 仍然没有真正被商业界广泛接受,但它绝对应该是,现在......

于 2008-10-19T07:51:08.227 回答
2

Ken Kahn 的 ToonTalk,一种具有核心理论基础的卡通语言: http ://www.toontalk.com/

Prograph: http ://en.wikipedia.org/wiki/Prograph ... 似乎 Prograph 像 Marten 一样继续存在 :http: //andescotia.com/products/marten/

Self 的 IDE 曾经/现在很美,谈论 Flow(在 Csíkszentmihályi 意义上)......

不过,总的来说,我不得不说 Haskell 是最有趣的,因为它代表了计算方面的潜在进步。

于 2008-10-30T18:15:24.760 回答
2

动态类型的港口。商务应用的绝佳选择。

于 2009-12-01T22:27:39.053 回答
1

Scheme 立刻浮现在脑海中,一个更好的 Lisp。

另外,我知道您的问题不符合深奥语言的资格,但请考虑INTERCAL。它有滑稽的COME FROM运算符(如GOTO,但放置在跳转目的地,而不是跳转点)。这个运算符看起来很奇怪,但是我们可以说它的影响在面向方面编程中可以看到吗?在 AOP 中,建议通常在某个外部位置指定,仅查看建议的代码并不总是使控制流清晰。然而,查看建议会告知读者控制来自何处。

看起来至少有其他人同意我的观点,即 COME FROM 就像 AOP

于 2008-10-14T13:08:39.747 回答
1

Mathematica 因为它是一种非常成功的术语重写语言(一种完全不同的代码评估方法!)。

于 2008-10-19T05:37:37.983 回答
1

雷亚!

http://wiki.reia-lang.org/wiki/Reia_Programming_Language

Erlang 是有道理的,它很漂亮,我恋爱了。它是如此不为人知,甚至没有维基百科页面!

于 2008-10-19T07:24:30.480 回答
1

我学到的第一个主要(非 BASIC)语言是 Dream Maker,来自http://www.byond.com。它有点类似于 C++ 或 Java,但它在很大程度上是为设计多人在线游戏而预先构建的。它非常基于继承。它是一种有趣的语言,尤其是作为入门语言,它可以更快地获得令人满意的结果,而且说实话,大多数第一次学习编程的人都对一件事感兴趣……游戏。

于 2009-04-28T02:53:12.670 回答
1

我发现FactorOzOCaml很有趣。事实上,我已经开始将 Factor 用于个人项目。

于 2009-05-01T12:45:43.360 回答
1

当然是Rebol!它是如此简单但如此强大,请在http://reboltutorial.com学习它

于 2009-06-23T01:48:50.263 回答
1

我最近查阅了很多关于 Windows PowerShell的信息。

虽然不一定只是一种语言。这是一个很棒的 shell,有一个内置的脚本语言。它基本上是一个超级增强的命令行 shell。

与 Unix shell 不同,所有内容都是字符串文本(这肯定有它的好处),PowerShell 命令 (cmdlet) 使用对象。它基于 .Net 框架,所以熟悉它的人可能已经发现 PowerShell 返回的任何东西都可以通过管道传输,并且可以使用该对象的属性和方法。说“一切都是对象”很有趣!就像 OOP 变大时一样。

很整洁的东西。第一次,Windows 实现了一些类似于 grep 的 Unix 命令行界面工具。

于 2009-06-23T02:12:22.993 回答
1

如果您对虚拟机感兴趣,您应该看看Parrot ...支持多种语言,而且非常简洁....

如果您想学习如何实现编译器,O'caml 是一门很好的语言......

于 2009-06-23T02:12:25.910 回答
1

Eiffel 为静态类型。

于 2009-12-01T22:21:59.750 回答
1

我衷心推荐 Tcl。我认为这符合您很好地使用语言的心态。

老实说,这并不陌生。由于 Tk 的流行,大多数程序员迟早会遇到它。但是大多数程序员都像瘟疫一样回避和避免它,因此大多数程序员并不完全了解该语言。在我看来,这是不公平的——他们只是不理解可以从它的简单语义中提取的美丽和力量。

Tcl 是一种非常有趣的语言。以 tcl 中的 OO 为例。在 tcl 中为 tcl 设计 OO 系统几乎是一种爱好。每年都会有人想出一个新的。当然,对于生产代码,大多数将使用已建立的库——没错,在 tcl 中,OO 只是一个库!

tcl 社区一直在玩的另一个游戏是试图让 tcl 解释器理解其他语言的语法和/或语义。如下图所示:

您可以玩更多游戏,例如从解释器中删除所有条件构造,看看您是否可以从中构建可用的编程语言。这引发了关于纯函数式编程的讨论,进而引发了组合逻辑、柯里化和教堂数字。

非常有趣的东西。

于 2010-01-18T13:45:20.227 回答
0

Lava是一种非常有趣的实验语言。它试图合并一些对 RAD 非常有用的新概念。目前它没有实际用途,但从长远来看仍然很有趣。

更实用但同样有趣的是L.in.oleum(选择部分,链接太长无法粘贴)语言。它是一种像汇编一样的低级语言,但更容易学习,也声称是跨平台的(未经个人测试)。一些非常好的程序是用这种语言开发的(在网站上查看)。

当然,一些更常见的语言也有助于学习并提供一些有趣的观点:

  • ADA:很好的概念,易于学习编码,也用于军事项目,美国宇航局和波音公司。
  • Ruby:超级好学的oo脚本语言,GUI测试和Web开发必备。
  • ERLANG:主要被爱立信用于并发编程,也是一种函数式语言。
  • 徽标:用于教小学生的语言(又名 Lisp,适合初学者)。

最后,我推荐Context Free,它是一种用于创建复杂的计算机生成艺术作品的语言。

于 2008-10-14T12:47:41.270 回答
0

我将支持Digital Mars D语言的议案。它具有 C# 或 Python 的许多生产力特性,但具有 C 的低级功能。它是学习一些 C 概念的好语言,还提供内联汇编器(用于学习)并通过合约、委托支持许多编程范式,以及一些反思。它还具有非常好的数组处理和完整的 Unicode 支持。

此外,如果 OCamL 对您来说很有趣,也许可以查看受 OCamL 启发的F# 。这是一种新的 .NET 语言,目前仅在“社区预览版”中发布,但它看起来很酷。

于 2009-04-20T22:06:18.093 回答
0

你听说过OHRRPG.CE游戏引擎吗?

用于“脚本”游戏的编译(!)语言怎么样?

只是对于初学者,编译器会去除空格。不是连续的空格,所有的空格。写“walk hero north”与“walkheronorth”和“walkheron rt h”相同。

我已经很久没有使用它了,我之前抱怨的许多事情(例如在源代码的最顶部为每个函数定义参数,然后将函数本身放入)已经得到修复。

另外,我只想再提一下,是的,您必须先编译脚本,然后才能将它们导入游戏,尽管游戏编辑器本身没有理由不包含编译器。

于 2009-06-23T01:54:46.180 回答
0

来自Autoplay Media Studio的 AMS 脚本。它是 Lua 的超集。

于 2009-10-04T09:22:52.200 回答
0

Lolcode是我遇到的最有趣和最有趣的编程语言之一。

于 2009-10-04T09:48:47.373 回答
0

对我来说,那将是Joy 编程语言,它是一种优雅的基于堆栈的函数式语言。如果您对此类语言的实现感兴趣,可以查看类似的Cat 编程语言,但具有静态类型系统。有可用的 C# 和其他语言的实现。

注意:我应该透露我实际上是 Cat 的作者。

于 2010-01-18T12:50:26.683 回答
0

Nemerle http://nemerle.org/Main_Page

它用于 .NET 平台的强大的静态类型编程语言。它支持函数式编程范式以及面向对象的范式。Nemerle 宏使这种语言非常强大和可扩展。有关宏的更多信息,请参见http://nemerle.org/Macros


埃菲尔 http://eiffel.com

它是有史以来最强大和真正面向对象的语言之一。我们可以使用这种语言在 C 代码或 .Net 平台上编译。它是契约式设计和 Void Safety 的第一语言,可以显着减少应用程序中的错误。

有关 Void Safety 和 CAR Hoare 的“十亿美元错误”的更多信息:

B.Meyer “Void Safety:结束 Null Dereferencing 的瘟疫”,Dobb 博士的期刊 01,2009,http: //www.ddj.com/architect/219500827http://se.ethz.ch/ ~meyer/publications/hoare/void-safety.pdf

于 2010-01-18T13:27:17.057 回答
0

Poplog很棒。IIRC 它是 Prolog、lisp 和其他一些语言的混合体。试想一下,如果所有 70 年代的编程语言都有狂欢并且意外地生了孩子。

它是在人工智能课程中首次介绍给我的,有了它,你可以制作一个不到 100 行的聊天机器人,不包括字典。

这很棒。

更多信息可以在维基百科上找到。

于 2010-03-03T21:36:15.313 回答
-2

以下设置应该让您忙碌:

FORTRAN - 在工程界流行了太多年的简单语言
LISP - 经典的 AI 语言。在我看来 Prolog 更好,但 LISP 更受欢迎
Ada - 给了世界包和泛型以及严格的数据类型。
ALGOL - 用于解决 FORTRAN 的许多问题。是C的爷爷,

在他们的时代,它们都是极具影响力的语言。

于 2008-10-14T11:05:58.030 回答