最有趣的非主stream语言?
我对编译器,口译员和语言感兴趣。
什么是你知道的最有趣,但被遗忘或未知的语言? 更重要的是,为什么?
我对编译,解释和虚拟机语言都很感兴趣,但对空白或BF这些深奥的语言没有兴趣。
当然,开源将是一个加号,因为我打算学习并希望从中学习。
我喜欢编译器和虚拟机,我喜欢Lua。
Lua的支持不如其他许多脚本语言,但是从你们这样的心态来看,我相信你们也会爱上Lua的。 我的意思是它就像lisp,(可以做任何lisp可以据我所知),有很多ADA的主要function,再加上它的内置的元编程,与function编程和面向对象的编程,足以使任何types你可能想要的域名。 除了虚拟机的代码是简单的C,这意味着即使在这个级别,你也可以轻松地进入它的欣赏状态。
(这是开源的MIT许可证)
我是D编程语言的粉丝。 这里是维基百科的文章和从官方网站的介绍 。
维基百科文章的一些片段:
D编程语言也被称为D,它是Digital Mars Walter Bright的一个面向对象的,命令式的多范围系统编程语言。 它起源于C ++的重新devise,但即使它主要受这种语言的影响,它不是C ++的变体。 D重新devise了一些C ++特性,并受到其他编程语言(如Java,C#和Eiffel)中使用的概念的影响。 1.0版稳定版于2007年1月2日发布,2007年6月17日发布2.0版实验版。
上function:
D的devise是从实际的C ++使用中学到的,而不是从理论的angular度来学习的。 尽pipe它使用了许多C / C ++概念,但也放弃了一些C ++概念,因此它们不是严格地向后兼容C / C ++源代码。 它通过契约,unit testing,真模块,垃圾回收,一stream数组,关联数组,dynamic数组,切片,嵌套函数,内部类,闭包[2],匿名函数等实现了C ++的function。编译时间函数执行,懒惰评估和重新devise的模板语法。 D保留了C ++的底层编码能力,并增加了对集成内联汇编器的支持。 C ++多inheritance被Java风格的单inheritance与接口和mixin所取代。 D的声明,语句和expression式语法与C ++非常相似。
我想很多都取决于你的意思是“非主stream”。
lisp会被视为非主stream?
我build议看看Erlang – 最近有一些新闻,所以一些学习资源非常好。 如果你使用面向对象和/或过程语言,Erlang肯定会以新的和令人兴奋的方式来弯曲你的思想。
Erlang是一种纯粹的function语言,为并发,分布式和容错程序提供了基础支持。 它有许多有趣的特征,包括事实上variables根本就不是真正的variables – 它们一旦被声明就不能被改变,事实上被更好地理解为一种模式的forms。
关于在Erlang平台(OTP)之上构build博客圈,以及对Ruby等其他语言的机器支持,Erlang将成为运行并发应用程序的一种虚拟机,这将是一个非常令人兴奋的可能性。
我最近爱上了Ocaml和一般的function语言。
例如,Ocaml提供了所有可能的世界中最好的。 您可以获得与C一样快的可执行本地机器语言编译代码,或通用便携式字节代码。 你会得到一个解释器来带来REPL速度的发展。 你可以通过函数式编程来获得完美的正交结构,深度recursion和真正的多态性。 所有这一切都支持面向对象,在function语言的上下文中已经提供了所有面向对象的承诺(封装,模块化,正交函数和多态可回收性),意味着OOP被迫实际certificate自己。
Smalltalk (请参阅此处的讨论) 。 sorting的dynamic语言(可能除了Lisp和SNOBOL)的大爸爸。 非常高兴与Java一起工作,可悲的是现在像Python和Ruby这样的新语言。
FORTH是一种为早期CPU的低级代码devise的语言。 其最显着的特点是基于RPN堆栈的math运算。 在早期的惠普计算器上使用的相同types的math。 例如1 + 2 + 3 + 4 =将被写为1,2,3,4,+,+,+
Haskell和REBOL都是迷人的语言,原因非常不同。
Haskell真的可以作为一个开发人员打开你的眼睛,像单子,部分应用程序,模式匹配,代数types等概念。这是一个好奇的程序员的大杂烩。
REBOL也不是懒散的。 起初看起来很简单,但是当你开始深入研究上下文,PARSE方言和Bindology等概念时,你会意识到这些概念远不止于眼前。 关于REBOL的好处在于,比Haskell更容易开始。
我不能决定我更喜欢哪一个。
Boo面向.NET框架,并且是开源的。 受Python的启发。
尝试colorForth 。
PROLOG是一种具有回溯function的基于规则的语言。 你可以生成非常可读的(如prosa)代码。
我发现约束语言很有趣,但很难知道什么是被遗忘或未知的。 以下是我所了解的一些语言(这当然不是一个详尽的列表):
- Ciao , YAP , SWI-Prolog和GNU Prolog都是Prolog的实现。 我认为他们都是开源的。 Ciao,gnu prolog,也可能是其他的,就像Prolog实现中常见的那样,支持其他的约束types。 整数编程例如。
- 据我所知, 莫扎特和水星都是替代逻辑编程语言。
- Alice在ML系列中更多,但支持使用GECODE C ++库进行约束编程。
漂移一点点的话题….
- Maude是一个有趣的术语重写语言。
- HOL和COQ都是语言社区常用的机械化certificate系统。
Lambda-the-Ultimate是讨论和学习更多关于编程语言的好地方。
我不得不说Scheme,尤其是它的R6RS化身。
Modula-2是我发现最有趣的非主stream语言。 看起来是主stream,但不像我们习惯的那样工作。 从Pascal中inheritance了很多,但却不同于提供有趣的学习可能性。
请在http://www.iolanguage.com/或Lisaac处查看Io:; https ://gna.org/projects/isaac/或Self: http ://self.sourceforge.net/或Sather(now绝对被遗忘)或埃菲尔http://www.eiffel.com
为什么这里有几个原因。 Io是绝对简约的,甚至没有“控制stream元素”作为syntacit实体。 Lisaad是埃菲尔的一个后续,有许多简化的AFAIKT。 自我是Smalltalk的后续,Io也从自我中获得了很多。 基本的是,Class和Object之间的区别已经被放弃了。 对于Eiffel来说,Sather是其他一些规则和对function性编程的更好支持(从一开始就是这样)。
而Eiffel是静态types的面向对象语言的一个标志。 Eiffel是第一个支持Design by Contract,generics(又名模板)的语言,也是处理inheritance的最好方法之一。 它是,而且是更简单的语言之一。 我为我的部分find了埃菲尔最好的图书馆…..
它的创造者只有一个问题,他不接受OO领域的其他贡献…..
问候
我最近从这个问题中 了解到 Icon的存在。 我已经用它来回答几个问题。 ( 1,2,3,4 )
这很有趣,因为它的评估策略 – 这是我知道的支持回溯的唯一必要的语言。 它允许一些很好的简洁的代码很多东西:)
学习任何需要你重新考虑你的编程习惯的语言是必须的。 一个确定的标志是你浏览一个语言的核心文件(而不是库)的速度。 快意思在这里没有成果。
根据我的接触顺序,我的短名单将是什么,我从他们的经验教训:
- 大会,C:伟大的学习指针和他们的算术。
- C ++:与C一样,generics的介绍,只要你可以忍受令人难以置信的详细语法。
- Ruby / Lua:脚本语言,dynamictypes化,为现有的C库编写绑定。
- Python / C#/ Java:跳过了,这些语言在我看来是一个源自其他地方的巨大标准库的概念。 当然整个包装都很好,但是你不会在这里学到新的概念。
- OCaml:types干扰正确,部分应用,编译器引用通用性,作为默认不变性,如何优雅地处理空值。
- 哈斯克尔:默认懒惰,单子。
我的.02。
我不能相信Logo被忘记了。 好的,这是Logo。 有点像lisp,但语法稍微丑陋。 尽pipe在Logo中使用了列表,但却遇到了“butfirst”和“butlast”操作。 = P
ML。 学习它并使用它会迫使你以不同的方式思考编程问题。 在大多数情况下,它也给予一个耐心。 最。
去怎么样? 这是全新的,所以它是未知的,不是主stream(还)。
这很有趣,因为语法看起来像是把C和pascal放进一个jar里面,然后让他们打架。
那么一旦它被称为MUMPS,但现在它被称为InterSystemsCachéhttp ://www.intersystems.com/cache/
第一个答案 – 计划。 它不是太广泛使用,但绝对看起来像一个坚实的语言使用,特别是考虑到DrScheme(实际上编写Scheme程序本地二进制代码)的鲁棒性。
之后 – Haskell非常有趣。 这是一种懒惰的评价权的语言,后果是不可思议的(包括诸如fibonnaci序列的单行定义等)。
越来越主stream,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意义上)…
总的来说,尽pipe如此,我不得不说哈斯克尔是最有趣的,因为它代表了计算的潜在优点。
dynamictypes的港湾 。 伟大的select商业应用程序。
区域环境影响评价!
Erlang是有道理的,它是美好的,我爱上了。 这是如此不明,甚至没有维基百科页面!
我学到的第一个主要的(非BASIC)语言是http://www.byond.com的; Dream Maker。 它有点类似于C ++或Java,但它主要是为了devise多人在线游戏而预先build立的。 这是非常基于inheritance。 这是一种相互交stream的语言,特别是作为一种起始语言,它可以更快地获得令人满意的结果,并且说实话,大多数第一次学习编程的人都对一种游戏感兴趣。
我觉得Factor , Oz和OCaml很有趣。 事实上,我已经开始使用因子进行个人项目。
Rebol当然! 这是如此简单,但如此强大的学习http://reboltutorial.com
我最近查了很多关于Windows PowerShell的内容 。
虽然不一定只是一种语言。 这是一个非常棒的shell,它有一个内置的脚本语言。 这基本上是一个超级强化的命令行shell。
与Unix shell不同的是,一切都是string文本(肯定有它的好处),PowerShell命令(cmdlet)使用对象。 它基于.Net框架,所以熟悉这一点的人可能已经知道PowerShell返回的任何内容都可以通过pipe道传递,并且可以使用该对象的属性和方法。 说“一切都是一个对象!”很有趣 就像OOP变大时一样。
非常整齐的东西。 Windows第一次实现了一些与grep类似的Unix命令行界面工具。
如果你对虚拟机感兴趣,你应该看看鹦鹉 …有一些支持的语言,这是相当整洁….
O'caml是一个很好的语言,如果你想学习如何实现一个编译器…