我对编译器,口译员和语言感兴趣.
你知道的最有趣但却被遗忘或未知的语言是什么?更重要的是,为什么?
我对编译,解释和VM语言感兴趣,但不是像Whitespace或BF这样的深奥语言.
当然,开源是一个优势,因为我打算学习并希望从中学习.
我喜欢编译器和虚拟机,我喜欢Lua.
Lua并没有像许多其他脚本语言那样受到支持,但是从像你这样的心态我相信你也会爱上Lua.我的意思是它就像lisp,(据我所知,可以做任何事情),有很多来自ADA的主要功能,还有内置的元编程,功能编程和面向对象编程足够松散,可以制作任何类型您可能想要的域语言.除了VM的代码是简单的C,这意味着你可以轻松地挖掘它甚至在那个级别上欣赏.
(它是开源麻省理工学院许可证)
我是D编程语言的粉丝.这是维基百科文章,并从官方网站介绍.
来自维基百科文章的一些片段:
D编程语言,也简称为D,是Walter Bright of Digital Mars的面向对象,命令式,多范式系统编程语言.它起源于C++的重新设计,但即使它主要受该语言的影响,它也不是C++的变体.D重新设计了一些C++特性,并受到其他编程语言中使用的概念的影响,例如Java,C#和Eiffel.稳定版本1.0于2007年1月2日发布.实验版本2.0于2007年6月17日发布.
关于功能:
D的设计是从实际的C++用法中汲取的教训,而不是从理论的角度.即使它使用了许多C/C++概念,它也会丢弃一些,因此并不严格向后兼容C/C++源代码.它通过合同,单元测试,真实模块,垃圾收集,第一类数组,关联数组,动态数组,数组切片,嵌套函数,内部类,闭包[2],匿名函数,实现设计,增加了C++的功能.编译时间函数执行,延迟评估并具有重新设计的模板语法.D保留了C++进行低级编码的能力,并增加了对集成内联汇编程序的支持.C++多重继承被具有接口和mixin的Java样式单继承所取代.D的声明,
我想很大程度上取决于你对'非主流'的意思.
lisp会被视为非主流吗?
我建议看一下Erlang - 它最近得到了一些新闻,所以一些学习资源非常好.如果您使用过OO和/或程序语言,Erlang肯定会以新的和令人兴奋的方式改变您的想法.
Erlang是一种纯函数式语言,具有对并发,分布式和容错程序的全面支持.它有许多有趣的功能,包括变量根本不是真正的变量 - 它们一旦声明就不能改变,事实上它们更好地被理解为一种模式.
关于在Erlang平台(OTP)之上构建以及对其他语言(如Ruby)的机器支持,围绕博客圈进行了一些讨论 - 然后Erlang将成为运行并发应用程序的一种虚拟机,这将是一个非常令人兴奋的可能性.
我最近爱上了Ocaml和一般的函数式语言.
例如,Ocaml提供了所有可能世界中最好的.您可以像C一样快速地编译可执行本机机器语言的代码,或者通用的可移植字节代码.你得到一个解释器,将REPL-speed带入开发阶段.您将获得函数式编程的所有功能,以生成完美的正交结构,深度递归和真正的多态性.所有这些都支持面向对象,它在已经提供OOP承诺(封装,模块化,正交函数和多态可回收性)的功能语言的上下文中,意味着被迫实际证明自己的OOP.
Smalltalk (参见此处的讨论).动态语言的祖父(可能除了Lisp和SNOBOL之外)的排序.很高兴与Java一起工作并且被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)代码.
我发现约束语言很有趣,但很难知道什么是遗忘或未知.以下是我所知道的一些语言(这当然不是任何类型的详尽列表):
Ciao,YAP,SWI-Prolog和GNU Prolog都是Prolog实现.我认为它们都是开源的.Ciao,gnu prolog,以及其他可能也是Prolog实现中常见的,支持其他约束类型.例如整数编程.
据我所知,莫扎特和水星都是替代逻辑编程语言.
Alice更多地属于ML系列,但支持使用GECODE C++库进行约束编程.
漂移一点主题....
Maude是一个有趣的术语重写语言.
HOL和COQ都是机械化证明系统,常用于语言社区.
Lambda-the-Ultimate是一个讨论和学习更多编程语言的好地方.
我不得不说Scheme,尤其是它的R6RS化身.