我对编译器、解释器和语言感兴趣。
你知道的最有趣但被遗忘或未知的语言是什么?更重要的是,为什么?
我对编译、解释和 VM 语言都感兴趣,但对Whitespace 或 BF 等深奥的语言不感兴趣。
当然,开源将是一个加分项,因为我计划学习并希望从中学习。
我对编译器、解释器和语言感兴趣。
你知道的最有趣但被遗忘或未知的语言是什么?更重要的是,为什么?
我对编译、解释和 VM 语言都感兴趣,但对Whitespace 或 BF 等深奥的语言不感兴趣。
当然,开源将是一个加分项,因为我计划学习并希望从中学习。
我喜欢编译器和虚拟机,也喜欢 Lua。
Lua 不像许多其他脚本语言那样得到很好的支持,但从像你这样的心态来看,我相信你也会爱上 Lua。我的意思是它就像 lisp,(据我所知,lisp 可以做任何事情),具有 ADA 的许多主要功能,而且它内置了元编程,函数式编程和面向对象编程足够松散,可以制作任何类型您可能想要的领域语言。除了 VM 的代码是简单的 C 代码之外,这意味着即使在那个级别上,您也可以轻松地深入了解它。
(而且它是开源的 MIT 许可证)
我是 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的声明,
我想很大程度上取决于您所说的“非主流”是什么意思。
lisp会算作非主流吗?
我建议看看 Erlang——它最近受到了一些媒体的关注,所以一些学习资源非常好。如果您使用过 OO 和/或过程语言,Erlang 肯定会以新的和令人兴奋的方式改变您的想法。
Erlang 是一种纯函数式语言,对并发、分布式和容错程序提供了基础支持。它有许多有趣的特性,包括变量根本不是真正的变量——它们一旦声明就不能更改,实际上可以更好地理解为一种模式。
博客圈中有一些关于在 Erlang 平台 (OTP) 之上构建以及对 Ruby 等其他语言的机器支持的讨论——Erlang 将成为一种用于运行并发应用程序的虚拟机,这将是一个非常令人兴奋的可能性。
我最近爱上了Ocaml和一般的函数式语言。
例如,Ocaml 提供了所有可能世界中最好的。您获得的代码可以编译为与 C 一样快的可执行本机机器语言,或通用可移植字节码。你会得到一个解释器来为开发带来 REPL 速度。您将获得函数式编程的所有力量,以生成完全正交的结构、深度递归和真正的多态性。最重要的是对面向对象的支持,在已经提供了 OOP 所承诺的一切(封装、模块化、正交函数和多态可回收性)的函数式语言的上下文中,这意味着 OOP 被迫实际证明自己。
Smalltalk (参见此处链接的讨论)。有点像动态语言的祖父(Lisp 和 SNOBOL 可能除外)。使用 Java 和现在的 Python 和 Ruby 等较新的语言非常好用,但遗憾的是被它践踏了。
FORTH 是一种为早期 CPU 上的低级代码设计的语言。它最显着的特点是基于 RPN 堆栈的数学运算。早期 HP 计算器上使用的数学类型相同。例如 1+2+3+4= 会写成 1, 2, 3, 4, + , +, +
Haskell 和 REBOL 都是令人着迷的语言,原因截然不同。
Haskell 可以真正让开发人员大开眼界,其中包含 monad、部分应用程序、模式匹配、代数类型等概念。对于好奇的程序员来说,这是一个大杂烩。
REBOL 也毫不逊色。一开始看起来很简单,但是当您开始深入研究上下文、PARSE 方言和 Bindology 等概念时,您会意识到这不仅仅是表面上的东西。REBOL 的好处是它比 Haskell 更容易上手。
我无法决定我更喜欢哪个。
Boo以 .NET 框架为目标并且是开源的。灵感来自 Python。
试试colorForth。
PROLOG 是一种基于规则的语言,具有回溯功能。您可以生成非常易于阅读(如在 prosa 中)的代码。
我发现约束语言很有趣,但很难知道什么是遗忘或未知。以下是我所知道的一些语言(这当然不是任何类型的详尽列表):
有点跑题了。。。。
Lambda-the-Ultimate是谈论和了解更多有关编程语言的好地方。
我不得不说 Scheme,尤其是在它的R6RS化身中。
Modula-2 是我发现最有趣的非主流语言。看起来很主流,但不像我们习惯的那样工作。从 Pascal 继承了很多东西,但又足够不同以提供有趣的学习可能性。
在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领域的贡献......
问候
学习任何需要你重新思考编程习惯的语言都是必须的。一个明确的标志是您浏览语言核心(而不是库)文档的速度。快速在这里意味着没有结果。
我的短名单是,按照我的曝光顺序以及我从中学到的概念:
我的 €.02。
我不敢相信 Logo 就这么被遗忘了。好的,这是徽标。有点像 lisp,但语法略丑。尽管在 Logo 中使用列表,但会遇到令人愉快的命名为 'butfirst' 和 'butlast' 的操作。=P
毫升。学习和使用它会迫使你以不同的方式思考编程问题。在大多数情况下,它也会给予一种耐心。最多。
去怎么样?它是全新的,所以它是未知的并且不是主流(还)。
这很有趣,因为语法看起来就像将 C 和 pascal 放入 jar 并让它们战斗之后发生的情况。
好吧,曾经它被称为MUMPS,但现在它被称为 InterSystems Caché http://www.intersystems.com/cache/
第一个答案 - 方案。它的使用不是很广泛,但绝对看起来像是一种可靠的语言,特别是考虑到 DrScheme 的健壮性(它实际上将 Scheme 程序编译为本机二进制代码)。
在那之后 - Haskell 非常有趣。它是一种正确执行惰性求值的语言,其后果令人难以置信(包括诸如斐波那契数列的单行定义之类的事情)。
走向更主流,Python 仍然没有真正被商业界广泛接受,但它绝对应该是,现在......
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 是最有趣的,因为它代表了计算方面的潜在进步。
动态类型的港口。商务应用的绝佳选择。
Scheme 立刻浮现在脑海中,一个更好的 Lisp。
另外,我知道您的问题不符合深奥语言的资格,但请考虑INTERCAL。它有滑稽的COME FROM
运算符(如GOTO
,但放置在跳转目的地,而不是跳转点)。这个运算符看起来很奇怪,但是我们可以说它的影响在面向方面编程中可以看到吗?在 AOP 中,建议通常在某个外部位置指定,仅查看建议的代码并不总是使控制流清晰。然而,查看建议会告知读者控制来自何处。
Mathematica 因为它是一种非常成功的术语重写语言(一种完全不同的代码评估方法!)。
雷亚!
Erlang 是有道理的,它很漂亮,我恋爱了。它是如此不为人知,甚至没有维基百科页面!
我学到的第一个主要(非 BASIC)语言是 Dream Maker,来自http://www.byond.com。它有点类似于 C++ 或 Java,但它在很大程度上是为设计多人在线游戏而预先构建的。它非常基于继承。它是一种有趣的语言,尤其是作为入门语言,它可以更快地获得令人满意的结果,而且说实话,大多数第一次学习编程的人都对一件事感兴趣……游戏。
当然是Rebol!它是如此简单但如此强大,请在http://reboltutorial.com学习它
我最近查阅了很多关于 Windows PowerShell的信息。
虽然不一定只是一种语言。这是一个很棒的 shell,有一个内置的脚本语言。它基本上是一个超级增强的命令行 shell。
与 Unix shell 不同,所有内容都是字符串文本(这肯定有它的好处),PowerShell 命令 (cmdlet) 使用对象。它基于 .Net 框架,所以熟悉它的人可能已经发现 PowerShell 返回的任何东西都可以通过管道传输,并且可以使用该对象的属性和方法。说“一切都是对象”很有趣!就像 OOP 变大时一样。
很整洁的东西。第一次,Windows 实现了一些类似于 grep 的 Unix 命令行界面工具。
如果您对虚拟机感兴趣,您应该看看Parrot ...支持多种语言,而且非常简洁....
如果您想学习如何实现编译器,O'caml 是一门很好的语言......
Eiffel 为静态类型。
我衷心推荐 Tcl。我认为这符合您很好地使用语言的心态。
老实说,这并不陌生。由于 Tk 的流行,大多数程序员迟早会遇到它。但是大多数程序员都像瘟疫一样回避和避免它,因此大多数程序员并不完全了解该语言。在我看来,这是不公平的——他们只是不理解可以从它的简单语义中提取的美丽和力量。
Tcl 是一种非常有趣的语言。以 tcl 中的 OO 为例。在 tcl 中为 tcl 设计 OO 系统几乎是一种爱好。每年都会有人想出一个新的。当然,对于生产代码,大多数将使用已建立的库——没错,在 tcl 中,OO 只是一个库!
tcl 社区一直在玩的另一个游戏是试图让 tcl 解释器理解其他语言的语法和/或语义。如下图所示:
您可以玩更多游戏,例如从解释器中删除所有条件构造,看看您是否可以从中构建可用的编程语言。这引发了关于纯函数式编程的讨论,进而引发了组合逻辑、柯里化和教堂数字。
非常有趣的东西。
Lava是一种非常有趣的实验语言。它试图合并一些对 RAD 非常有用的新概念。目前它没有实际用途,但从长远来看仍然很有趣。
更实用但同样有趣的是L.in.oleum(选择部分,链接太长无法粘贴)语言。它是一种像汇编一样的低级语言,但更容易学习,也声称是跨平台的(未经个人测试)。一些非常好的程序是用这种语言开发的(在网站上查看)。
当然,一些更常见的语言也有助于学习并提供一些有趣的观点:
最后,我推荐Context Free,它是一种用于创建复杂的计算机生成艺术作品的语言。
我将支持Digital Mars D语言的议案。它具有 C# 或 Python 的许多生产力特性,但具有 C 的低级功能。它是学习一些 C 概念的好语言,还提供内联汇编器(用于学习)并通过合约、委托支持许多编程范式,以及一些反思。它还具有非常好的数组处理和完整的 Unicode 支持。
此外,如果 OCamL 对您来说很有趣,也许可以查看受 OCamL 启发的F# 。这是一种新的 .NET 语言,目前仅在“社区预览版”中发布,但它看起来很酷。
你听说过OHRRPG.CE游戏引擎吗?
用于“脚本”游戏的编译(!)语言怎么样?
只是对于初学者,编译器会去除空格。不是连续的空格,所有的空格。写“walk hero north”与“walkheronorth”和“walkheron rt h”相同。
我已经很久没有使用它了,我之前抱怨的许多事情(例如在源代码的最顶部为每个函数定义参数,然后将函数本身放入)已经得到修复。
另外,我只想再提一下,是的,您必须先编译脚本,然后才能将它们导入游戏,尽管游戏编辑器本身没有理由不包含编译器。
来自Autoplay Media Studio的 AMS 脚本。它是 Lua 的超集。
Lolcode是我遇到的最有趣和最有趣的编程语言之一。
Nemerle http://nemerle.org/Main_Page。
它用于 .NET 平台的强大的静态类型编程语言。它支持函数式编程范式以及面向对象的范式。Nemerle 宏使这种语言非常强大和可扩展。有关宏的更多信息,请参见http://nemerle.org/Macros
它是有史以来最强大和真正面向对象的语言之一。我们可以使用这种语言在 C 代码或 .Net 平台上编译。它是契约式设计和 Void Safety 的第一语言,可以显着减少应用程序中的错误。
有关 Void Safety 和 CAR Hoare 的“十亿美元错误”的更多信息:
B.Meyer “Void Safety:结束 Null Dereferencing 的瘟疫”,Dobb 博士的期刊 01,2009,http: //www.ddj.com/architect/219500827或http://se.ethz.ch/ ~meyer/publications/hoare/void-safety.pdf
Poplog很棒。IIRC 它是 Prolog、lisp 和其他一些语言的混合体。试想一下,如果所有 70 年代的编程语言都有狂欢并且意外地生了孩子。
它是在人工智能课程中首次介绍给我的,有了它,你可以制作一个不到 100 行的聊天机器人,不包括字典。
这很棒。
更多信息可以在维基百科上找到。
以下设置应该让您忙碌:
FORTRAN - 在工程界流行了太多年的简单语言
LISP - 经典的 AI 语言。在我看来 Prolog 更好,但 LISP 更受欢迎
Ada - 给了世界包和泛型以及严格的数据类型。
ALGOL - 用于解决 FORTRAN 的许多问题。是C的爷爷,
在他们的时代,它们都是极具影响力的语言。