Icon编程语言的优缺点是什么?

时间:2009-11-14 13:40:10

标签: programming-languages icon-language

最近我在搜索图标(图形),但是我看到一个非常有趣的链接,是一种名为Icon的语言,然后我想知道:

  • 这里有人试图用Icon开发吗?
  • 这是一种编译或解释语言?
  • 这种语言的优点和缺点是什么?
  • 哪个区域比其他语言好(垃圾收集......)?

6 个答案:

答案 0 :(得分:7)

这是一种非常古老的编程语言(1977),有趣地看到它再次出现。我记不起曾经看过任何写在其中的东西,除了实验或教育脚本。 Wikipedia has some information对你而言。

其中一个后代Unicon(另见Unicon on Wikipedia)已被我的上一个雇主用于建立内部应用程序。他们将它用于3D设计(另见this paper)。所以我知道它是使用,但我不能说我自己主动使用它。

编辑: 您通过更多问题编辑了您的问题,以下是更多答案:

  • 这里有人试图用Icon开发吗? 可能,但它主要是大学使用的教育语言

  • 这是一种编译或解释的语言?
    已编译

  • 这种语言有哪些优点和缺点?
    它是一种非常高级的编程语言,据说非常适合字符串和更高的结构,但是Icon的许多新颖的东西已经出现在其他语言中。你不能真正把语言看作科学的东西,尽管它擅长做图形和字符串

  • 在哪个区域,它比其他一些语言(垃圾收集......)更好? Icon很难用另一种语言取代,因为它非常独特。垃圾收集不是你需要担心的,但如果你今天用Java,C#,Rebol或Ruby编程,那么Icon可能是一个很好的中断,但可能不会取代你当前流行的语言

换句话说:享受骑行,下载,尝试,惊讶然后再次离开。将其放在简历中的“其他语言”下,但不要指望它会给人留下太多印象; - )

PS:这是一种你很容易在现实生活中遇到它的情况下很容易掌握的语言(不过有可能是Unicon)。

答案 1 :(得分:7)

我知道这是一个非常迟到的回复,但我只是要发言。

这是一种华丽的语言。它是你尝试过的那种语言之一,如果你/得到它,你就会被包裹起来。我曾将它用于公司非常严肃和关键的内部产品,并且令人钦佩。我称之为我最喜欢的语言;使用它非常有趣,并且在用于正确的任务时非常高效。

我的第一个好奇心/可能是有用的 - 如果它正在工作的项目是从F77到C的翻译。我的第一次切割是垃圾和慢,我的第二次尝试一段时间后更甜更快 - 那时是我真的开始正确地利用字符串扫描。我从来没有完成这个长期失败的项目,因为它变得无关紧要;我不再和一些工程师一起工作,他们一直试图让我相信FORTRAN很好。

很明显,像Larry Wall和Guido van Rossum这样的人都知道Icon和Unicon。他们对我的了解程度如何,我无法说出来,但是因为他们看起来像语言坚果所以我打得相当好。感受到了影响。 Icon和Unicon有点像音乐世界的Velvet Underground或Captain Beefheart;它远远不是主流,但知情人士知道并受到强烈影响。

顺便说一下,与VU或Beefheart不同,(联合国)Icon并没有因为过于刺激普通人来处理它而产生的优点,所以这个类比在这方面严重崩溃......实际上,语法及其所有功能都非常干净且令人赏心悦目。与Pascal的任何相似之处都是肤浅的。对于未经训练的眼睛来说,语法看起来像帕斯卡尔一样,但在行为方面它的两极分开。

它适合哪里?它不会与C竞争硬核高性能编码,但这就像大多数语言一样,在纯粹的CPU性能是唯一的解决方案时无法击败C语言。它无法击败Perl在CPAN中的大量库,但这可能是Perl中唯一抽取它的东西!好吧,如果你想要CPAN提供的东西,请重写并捐赠给Unicon存储库。它没有像Java的安全模型那样的东西,但它就像大多数其他语言一样。你现在可能已经明白了。

我开始使用Icon,然后几年后转移到Unicon,这是主要活动的地方。图标保持稳定,干净,完整。就目前而言。 Unicon汇集了大量扩展,并将其转变为一个有凝聚力的项目。最重要的是更好地覆盖标准O / S呼叫,以及完整的鸭子型OO系统。

Unicon的OO甚至支持循环继承,更不用说MI了!这主要是为了大脑f ** k,但也因为它被证明是可行的。当然,任何明智的程序员通常都不应该愚蠢,除非他们真的在数学中实现某些东西(例如Polar< Cartesian< Polar< Cartesian< ...)或Quantum Mechanics(例如Wave< Particle) < Wave< Particle< ...),这是典型的例子,显示了循环继承的罕见优点。

首先回答这个简单的问题,是的,它已被编译,但是回到一种PCODE,然后由虚拟机执行。构造的可执行文件具有hash-bang标头,因此可以直接执行它们。在Windows上,它们有一个.EXE标题(或者它是.COM?),因此它们也可以直接执行。毋庸置疑,这些在Unix和Windows之间不可移植,尽管Powershell可能能够做一些事情来允许Unix可执行文件直接在Windows上运行。在实践中,编译步骤非常快,并且由普通的makefile处理。 Unicon还有一个快速,简单的编译运行步骤,但是任何超出总体规模的项目都可以通过制作阶段得到更好的服务。

网络功能是Unicon的一部分。 Icon可以使用便携式图形库很长一段时间,也是Unicon的一部分。垃圾收集是一个给定的,因为它是一种非常高级的语言。

两个最重要的独特功能是它的生成器和它的字符串扫描。我不会进入这些 - 你可以下载更好的内容并通过教程进行游戏直到它沉入其中。一旦语言生成器可用,字符串扫描工作得非常好。我不认为字符串扫描可以在没有它的情况下如此巧妙地工作。再一次,玩,直到它有意义。它是使用正则表达式的一个非常有趣和强大的替代方案,它是我工作的重要部分。

发明者是那些乞求用任何新语言表达的东西之一。它不在雷达上的事实是悲剧恕我直言。如果我要认真坐下来梦想制作下一个流行的开源语言,那么这将成为核心的一部分。但是谁有时间?我付了账单。

2012年以后的最新版本现在具有真正的多线程,并且在写这篇文章时可能很稳定。

目前,在Unicon,Windows版本基本上是最新版本。 Windows构建已经整理好了,我已经成功地将我的主要项目放到了Windows上,除了显而易见的使用Windows的悲痛之外没有什么悲伤。

答案 2 :(得分:2)

是的,我使用过Icon并发现它是一种有趣的语言。特别是,它有一个yield运算符,它允许子程序返回一个可能的答案,但保持其状态以防万一需要另一个答案。除此之外,这使得coroutines和其他有趣的事情可以干净地实施。

答案 3 :(得分:2)

我已经使用Icon看似永远,但今天仍然使用它。它是“Snobol”和Snobol的继任者Spitbol(“快速实施Snobol”)的继任者。它具有类似Algol的语法(与C和许多其他变体一样),并且通过构建“魔术内存”(哈希表)来区分,这些内存由它们自己独特的语法支持。你过去在Icon中看到的大部分内容现在都出现在其他地方。例如,在Icon中,abc [“xyz”]是哈希表的哈希索引(在Icon中,一个“表”),这里是abc,带有一个键,xyz。 Javascript具有类似的语法对象属性引用。它还内置了列表,协同例程,递归(每个正确的语言都有递归),任意大小的整数,以及通过备选方式备份的字符串解析 - 可能是语言中最强大和最有用的部分。我今天用它来替换需要密集字符串/哈希处理的shell脚本。在几年前的一生中,我写过一个与Oracle接口的C语言插件。它确实缺少用PHP或Python或标准C库内置的无数功能。但是,我猜想,对于我曾经用过的绝大部分编码,无论如何都不需要它们。它可以快速编写代码并且可读。与任何其他语言一样,您可以在编程鞋适合时选择它。我记得Icon中另一个有趣的程序是从Ingress的SQL样式到Oracle的简单翻译器。您甚至可以将它用于CGI编程。当需求与功能相匹配时,编程速度快,易于使用,信不信由你,使用起来很有趣。它已经延长了多年(除了Unicon),但是没有ksh(或者看起来相似的bash)。

答案 4 :(得分:1)

这里讨论了 - http://lambda-the-ultimate.org/node/136

unicon是一种更受欢迎的扩展实现(它是一个更好的支持且具有对象的图标分支) - http://unicon.sourceforge.net/index.html

我没有使用它,但我知道它有相当长的历史 - 它从未变得非常受欢迎,但它使用生成器会影响像python这样的语言。

另见

unicon包括一个解释器和一个用于icon和unicon语言的编译器 - http://unicon.org/utr/utr11.html

另外,它应该特别擅长字符串处理。

答案 5 :(得分:0)

它类似Pascal。你必须compile it

相关问题