2009-11-14 50 views
5

最近我正在尋找的圖標(圖形),但我看到一個鏈接,是非常野趣,是一個叫Icon語言,那麼我想知道:Icon編程語言的優缺點是什麼?

  • 有一個人在這裏,已經嘗試開發在圖標?
  • 它是一種編譯或解釋語言?
  • 這種語言的優點和缺點是什麼?
  • 在哪個領域比其他語言(垃圾收集...)更好?
+0

所以被接受的答案基本上會有人說,「是的,我有」? – random 2009-11-14 13:45:10

+1

既然你已經把身體變成了一個實際的問題,我會建議將標題改爲「圖標編程語言有什麼優點和缺點」或類似 – 2009-11-14 13:48:56

+1

可惜,我回答了原始問題:許多語言都有P – Abel 2009-11-14 13:53:31

回答

7

這是一個非常古老的編程語言(1977年),有趣的,看看它再次彈出。我不記得有沒有看過它寫過的東西,除了實驗或教育腳本。 Wikipedia has some information給你。

它的後代之一Unicon(也可參見Unicon on Wikipedia)已用於我最後一位僱主的建築內部應用程序。他們將其用於3D設計(另請參閱this paper)。所以我知道這是使用,但我不能說我主動使用它自己。

編輯:你一些問題編輯你的問題,這裏有一些更多的答案:

  • 有一個人在這裏,已經嘗試在圖標發展?
    可能,但它主要是在大學

  • 使用的教育語言這是一個編譯或解釋語言?
    它被編譯

  • 什麼是這門語言的利弊?
    它是一種非常高級的編程語言,據推測它非常適合字符串和更高級的結構,但許多新穎的圖標已經出現在其他語言中。你不能真正看到語言更科學,儘管它擅長做圖形和字符串

  • 在哪個領域比其他語言(垃圾收集...)更好?
    圖標很難用另一種語言來替換,因爲它很獨特。垃圾收集是不是你需要擔心的東西,但如果你用Java,C#,雷博爾或Ruby今天的節目,則圖標可能是一個不錯的中斷,但可能不會取代您目前流行的漢語語言

換句話說:享受騎行,下載,試用,驚訝,然後再次離開。將其放在「其他語言」你的簡歷,但不要指望它做太多的印象;-)的

PS:這是你會很容易在極少數情況下,你會遇到掌握一門語言它在現實生活中的項目(儘管它可能是Unicon)。

2

是的,我已經使用的圖標,並發現它是一個有趣的語言。特別是,它有一個yield運算符,它允許子程序返回可能的答案,但保持其狀態以防需要其他答案。除此之外,這使得coroutines和其他有趣的事情可能被幹淨地實現。

+0

收益運營商 – Markasoftware 2013-02-24 02:02:13

1

它在這裏討論 - http://lambda-the-ultimate.org/node/136

UNICON是一種比較流行的,擴展的實現(這是更好的支持,並有對象圖標的一個分支) - http://unicon.sourceforge.net/index.html

我還沒有使用它,但我知道它有相當長的歷史 - 它從來沒有變得非常流行,但它使用生成器影響Python等語言。

又見

UNICON包括解釋和兩個圖標和UNICON語言編譯器 - http://unicon.org/utr/utr11.html

此外,它應該是特別好在字符串處理。

6

我知道這是一個reallllly晚答覆,但我不得不說。

這是一種絢麗的語言。它是你嘗試的那種語言之一,如果你/它/它,你會被包裝。我已經將它用於一家公司非常認真和關鍵的內部產品,並且令人讚歎。我把它稱爲我最喜歡的語言;使用正確的任務時使用起來非常有趣,而且非常有效。

我的第一個好奇心/可能是有用的,如果它的工程項目是從F77到C的翻譯。我的第一個剪輯是垃圾和緩慢的,我後來的第二次嘗試更甜更快 - 那是當我真的開始正確地利用字符串掃描。我從來沒有完成過這個久違的項目,因爲它變得無關緊要。我停止與一些不斷努力讓我相信FORTRAN很好的工程師一起工作。

很顯然,人們喜歡Larry Wall和吉多·範羅蘇姆知道圖標UNICON。他們的知道程度我不敢說,但我相當好,因爲他們似乎是語言的堅果。正在感受到這種影響。 Icon和Unicon有點像音樂世界的Velvet Underground或者Beefheart隊長;它不是主流,但知情者知道他們並受到強烈影響。順便說一下,與VU或Beefheart不同的是,(Un)Icon並沒有從普通人的處理過程中得到它的優點,所以類比在這方面嚴重失敗......事實上,語法它的所有功能都非常乾淨和令人賞心悅目。與帕斯卡的任何相似都是膚淺的。對於未經訓練的眼睛來說,語法看起來像帕斯卡爾,但在行爲上它是兩極分開的。

它適合哪裏?它不會與C競爭硬核高性能編碼,但就像大多數語言一樣,只有CPU性能是唯一的解決方案時,它才能擊敗C語言。它無法打敗CPAN中龐大的Perl庫,但這可能是Perl中唯一吸引它的東西!地獄,如果你想CPAN提供的東西,重寫並捐贈給Unicon存儲庫。它沒有像Java的安全模型那樣的東西,但就像其他大多數語言一樣。你現在可能會明白這一點。

我從Icon開始,然後幾年後轉移到Unicon,這是目前主要活動的地方。圖標保持「穩定,乾淨和完整」。 Unicon彙集了一系列擴展,並將其轉化爲一個有凝聚力的項目。最重要的是對標準操作系統調用的覆蓋率更高,以及完整的鴨式OO系統。

Unicon的面向對象甚至支持循環繼承,更不用說MI了!這主要是爲了大腦,但也因爲它證明是可行的。當然,任何明智的程序員一般不應得到那個愚蠢的,除非他們真正實現在數學的東西(如極地<笛卡爾<極地<笛卡爾< ...)或量子力學(如波<粒子<波<粒子< .. )這是典型的例子,顯示了循環繼承的優點。

爲了回答這個簡單的問題,是的,它被編譯,但是一種PCODE,然後由虛擬機執行。構建的可執行文件具有hash-bang頭文件,因此可以直接執行它們。在Windows上,他們有一個.EXE頭文件(或.COM?),所以他們也可以直接執行。不用說,這些在Unix和Windows之間是不可移植的,雖然Powershell可能能夠做些事情來讓Unix可執行文件直接在Windows上運行。實際上,編譯步驟非常快速,並且由普通的makefile處理。 Unicon也有一個快速n-dirty的編譯運行步驟,但任何超出總體規劃的項目都可以通過make階段更好地完成。

網絡功能是Unicon的一部分。 Icon提供了一個便攜式圖形庫很長一段時間,也是Unicon的一部分。垃圾收集是一種給定的,因爲它是一種非常高級的語言。

兩個最重要的獨特功能是它的生成器和它的字符串掃描。我不會深究這些 - 最好是通過教程下載並播放它,直到它沉入其中。一旦發生器可用於某種語言,字符串掃描就可以很好地工作。如果沒有它,我認爲字符串掃描不能很好地工作。再一次玩,直到它有意義。這是使用正則表達式的一個非常有趣且強大的替代方法,它是我工作中的關鍵部分。

發電機是乞求使用任何新語言的東西之一。它不在雷達的事實是一個悲劇恕我直言。如果我要認真坐下來製作下一個流行的開源語言,那麼這將成爲核心的一部分。但誰有時間?我有賬單要付。

2012年前後的最新版本現在有了真正的多線程,並且在我編寫時可能會很穩定。

這些日子裏,Windows構建基本上是最新的。 Windows構建已經被整理出來,並且我已經成功地將我的主要項目放到Windows上,除了明顯的不得不使用Windows之外的悲傷之外,幾乎沒有什麼悲傷。

2

我已經使用圖標的東西似乎永遠,今天仍然使用它。它是「Snobol」和Snobol的繼任者Spitbol(「快速實施Snobol」)的繼任者。它有一個像Algol一樣的語法(就像C以及許多其他變體一樣),並且通過構建「魔力記憶」(哈希表)來區分它們,這些語法由其獨特的語法支持。現在你可能在Icon中看到的大部分內容現在都出現在其他地方。例如,在Icon中,abc [「xyz」]是哈希表(在Icon中是一個「表」)的哈希表索引,這裏是abc,其中包含一個鍵xyz。 Javascript有一個類似的語法對象屬性引用。它還內置了列表,協同例程,遞歸(每種體面語言都有遞歸),任意大小的整數,以及通過替代備份進行字符串解析 - 可能是語言中最強大和最有用的部分。我今天使用它來替換需要密集的字符串/散列處理的shell腳本。在過去的幾年中,我爲與Oracle接口的Icon編寫了一個C語言附加組件。它確實缺乏內置PHP或Python或標準C庫的衆多函數。但是,我猜想,對於絕大多數我曾經使用過的編碼,反正他們都不需要。編碼很快並且可讀。與其他語言一樣,當編程鞋適合時,您可以選擇它。我記得Icon的另一個有趣的程序是一個簡單的從Ingress的SQL入門到Oracle的翻譯程序。您甚至可以將其用於CGI編程。當需求與能力相匹配時,編程速度快,易於使用,並且信不信由你使用。它沒有延長多年(Unicon除外),但都沒有ksh(或者看起來像bash)。