【问题标题】:What are the pros and cons of the Icon programming language? [closed]Icon 编程语言的优缺点是什么? [关闭]
【发布时间】:2009-11-14 13:40:09
【问题描述】:

最近在搜索icons(graphics),但是看到一个很有意思的链接,是一种语言叫Icon,然后想知道:

  • 这里有人已经尝试过Icon开发了吗?
  • 它是编译型语言还是解释型语言?
  • 这种语言的优缺点是什么?
  • 在哪个方面它比其他一些语言更好(垃圾收集...)?

【问题讨论】:

  • 所以接受的答案基本上是有人说,“是的,我有”?
  • 既然您已经将正文变成了一个实际的问题,我建议将标题更改为“Icon 编程语言的优缺点是什么”或类似的
  • 可惜,我回答了原来的问题:P

标签: programming-languages icon-language


【解决方案1】:

我知道这是一个非常晚的回复,但我不得不说。

这是一种华丽的语言。它是您尝试的语言之一,如果您 /get/ 它,您将被包装。我已经将它用于公司的一个非常严肃和关键的内部产品,它的服务令人钦佩。我称它为我最喜欢的语言;当用于正确的任务时,它使用起来很有趣并且非常高效。

我的第一个好奇心/如果它有效的话可能有用的项目是从 F77 到 C 的翻译。我的第一次剪辑是废话且缓慢,一段时间后我的第二次尝试更甜蜜和快速 - 那是我真的开始正确地利用字符串扫描。我从未完成这个久违的项目,因为它变得无关紧要;我不再与一些工程师合作,他们一直试图让我相信 FORTRAN 很好。

很明显,像 Larry Wall 和 Guido van Rossum 这样的人都知道 Icon 和 Unicon。他们知道多少我不能说,但我敢打赌,因为他们似乎是语言疯子。正在感受到影响。 Icon 和 Unicon 有点像音乐界的 Velvet Underground 或 Captain Beefheart;它远非主流,但知情人士了解他们并受到强烈影响。

顺便说一句,与 VU 或 Beefheart 不同,(Un)Icon 并没有得到它的优点,因为它对普通人来说太难处理了,所以这个类比在这方面很糟糕......事实上,语法和它的所有功能都非常干净,令人赏心悦目。与帕斯卡的任何相似之处都是肤浅的。语法在未经训练的人看来确实像 Pascal,但在行为上却大相径庭。

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

我从 Icon 开始,几年后转到 Unicon,这是如今的主要活动。 Icon 一直保持“稳定、干净和完整”。 Unicon 汇集了一堆扩展,并将其变成了一个有凝聚力的项目。最重要的是更好地覆盖标准 O/S 调用,以及完整的鸭式 OO 系统。

Unicon 的 OO 甚至支持循环继承,更不用说 MI!这主要是为了大脑-f**k,但也因为它被证明是可行的。当然,任何明智的程序员通常都不应该变得那么愚蠢,除非他们真的在数学(例如 Polar

首先要回答这个简单的问题,是的,它是编译的,但是是一种 PCODE,然后由虚拟机执行。构建的可执行文件有一个 hash-bang 标头,因此它们可以直接执行。在 Windows 上,它们有一个 .EXE 标头(或者是 .COM?),因此它们也可以直接执行。不用说,这些在 Unix 和 Windows 之间是不可移植的,尽管 Powershell 可能能够做一些事情来允许 Unix 可执行文件直接在 Windows 上运行。实际上,编译步骤非常快,并且由普通的 makefile 处理。 Unicon 也有一个 quick-n-dirty compile-n-run 步骤来解决问题,但任何项目都最好使用 make 阶段。

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

两个最重要的独特功能是它的生成器和字符串扫描。我不会涉及这些 - 最好下载并通过教程播放直到它沉入其中。一旦生成器可用于一种语言,字符串扫描就会很好地工作。我不认为没有它,字符串扫描就不能这么巧妙地工作。再一次,玩到有意义为止。它是使用正则表达式的一个非常有趣且强大的替代方法,它是我工作的关键部分。

生成器是任何一种新的语言都需要使用的东西。它不在雷达上的事实是恕我直言的悲剧。如果我要认真坐下来梦想制作下一个流行的开源语言,这将是核心的一部分。但谁有时间?我有账单要付。

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

如今,Unicon 中的 Windows 版本基本上是最新的。 Windows 构建已经整理好,我已经成功地将我的主要项目放到了 Windows 上,除了不得不使用 Windows 的明显悲伤之外,我几乎没有任何悲伤。

【讨论】:

    【解决方案2】:

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

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

    编辑:您编辑了更多问题,这里有更多答案:

    • 这里有人已经尝试过使用 Icon 进行开发?
      可能,但它主要是大学使用的一种教育语言

    • 它是编译型语言还是解释型语言?
      它是编译型的

    • 这种语言的优缺点是什么?
      它是一种非常高级的编程语言,据说对字符串和更高的结构非常好,但是很多新奇的东西此后,图标出现在其他语言中。尽管它擅长处理图形和字符串,但你不能真正将这种语言视为比科学更重要的东西

    • 在哪个方面它比其他一些语言更好(垃圾收集...)?
      图标很难用另一种语言替换,因为它相当独特。垃圾收集不是您需要担心的事情,但如果您现在使用 Java、C#、Rebol 或 Ruby 进行编程,那么 Icon 可能是一个不错的中断,但可能不会取代您当前流行的语言

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

    PS:这是一种在现实生活项目中很少遇到的情况下,您可以轻松掌握的语言(不过,它很可能是 Unicon)。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 很多语言都有yield操作符
        【解决方案5】:

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

        unicon 是一种更流行的扩展实现(它是一个图标的分支,得到更好的支持并且有对象)-http://unicon.sourceforge.net/index.html

        我没有使用过它,但我知道它有相当长的历史 - 它从未变得非常流行,但它对生成器的使用影响了诸如 python 之类的语言。

        另见

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

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

        【讨论】:

          【解决方案6】:

          它类似于帕斯卡。你必须compile it

          【讨论】:

            猜你喜欢
            • 2020-11-29
            • 1970-01-01
            • 1970-01-01
            • 2011-03-23
            • 2011-03-14
            • 1970-01-01
            • 1970-01-01
            • 2014-06-26
            • 1970-01-01
            相关资源
            最近更新 更多