2009-11-14 1 views
5

Recentemente ero alla ricerca di icone (grafica), ma vedo un link che è stato molto interessante, è stato un linguaggio chiamato Icon, allora voglio sapere:Quali sono i pro e i contro del linguaggio di programmazione Icon?

  • C'è qualcuno qui che hanno già cercato di sviluppare in Icon?
  • È un linguaggio compilato o interpretato?
  • Quali sono i pro e i contro di questa lingua?
  • In quale area è migliore di alcune altre lingue (garbage collection ...)?
+0

Quindi la risposta accettata sarà fondamentalmente qualcuno che dice "Sì, ho"? – random

+1

Ora che hai trasformato il corpo in una domanda reale, ti suggerirei di cambiare il titolo in "Quali sono i pro e i contro del linguaggio di programmazione Icon" o simili –

+1

Peccato, ho risposto alla domanda originale: P – Abel

risposta

7

È un linguaggio di programmazione molto vecchio (1977), intrigante nel vederlo spuntare di nuovo. Non ricordo di aver mai visto nulla di scritto in esso, altri script sperimentali o educativi. Wikipedia has some information per te.

Uno dei suoi discendenti, Unicon (vedere anche su Unicon on Wikipedia), è stato utilizzato presso il mio ultimo datore di lavoro per la costruzione di applicazioni interne. Lo hanno usato per la progettazione 3D (vedi anche this paper). Quindi so per certo che era usato, ma non posso dire di averlo usato attivamente anch'io.

EDIT: hai modificato la tua domanda con alcune altre domande, ecco alcune altre risposte:

  • C'è qualcuno qui che hanno già cercato di sviluppare in Icon?
    Forse, ma è soprattutto un linguaggio didattico utilizzato nelle università

  • E 'un linguaggio compilato o interpretato?
    E 'compilato

  • Quali sono i pro ei contro di questa lingua?
    È un linguaggio di programmazione di livello molto alto, ed è presumibilmente molto buono con stringhe e strutture superiori, ma molte delle novità di Icon sono apparse in altre lingue. Non si può davvero vedere la lingua come qualcosa di più scientifico, anche se è buona per fare grafica e stringhe

  • In quale area è meglio di alcune altre lingue (garbage collection ...)?
    L'icona è difficile da sostituire con un'altra lingua perché è piuttosto unica.raccolta dei rifiuti non è qualcosa che hai bisogno di cui preoccuparsi, ma se si programma oggi in Java, C#, Rebol o Ruby, allora icona può essere un bel interruzioni, ma probabilmente non sostituirà i vostri linguaggi popolari attuali

In altre parole: goditi il ​​viaggio, scaricalo, provalo, sii stupito e poi lascialo di nuovo. Mettilo sul tuo curriculum in "altre lingue" ma non aspettarti che faccia troppa impressione ;-)

PS: è un linguaggio che potrai facilmente padroneggiare nelle rare occasioni in cui incontrerai nei progetti di vita reale (comunque sarà un Unicon, comunque).

2

Sì, ho usato Icon e ho trovato che è una lingua interessante. In particolare, ha un operatore yield che consente a una subroutine di restituire una possibile risposta, ma di mantenere il suo stato nel caso sia necessaria un'altra risposta. Tra le altre cose, questo rende coroutines e altre cose interessanti che possono essere implementate in modo pulito.

+0

molte lingue hanno un operatore di rendimento – Markasoftware

1

è discusso in questa sede - http://lambda-the-ultimate.org/node/136

Unicon è un più popolare, implementazione estesa (si tratta di un fork di icona che è meglio supportato e ha gli oggetti) - http://unicon.sourceforge.net/index.html

non ho usato, ma So che ha una storia piuttosto lunga - non è mai diventato molto popolare, ma il suo uso di generatori ha influenzato linguaggi come Python.

vedi anche

Unicon include un interprete e un compilatore per entrambe le icone e Unicon lingue - http://unicon.org/utr/utr11.html

anche, si suppone di essere bene particolare durante l'elaborazione delle stringhe.

6

So che questa è una risposta davvero tardiva, ma ho solo dovuto parlare.

È un linguaggio magnifico. È una di quelle lingue che provi e, se lo fai, sarai avvolto. L'ho usato per un prodotto interno molto serio e fondamentale in un'azienda, ed è stato egregiamente ammirevole. Lo chiamo la mia lingua preferita; è divertente da usare e davvero produttivo se usato per le attività giuste.

La mia prima curiosità/potrebbe essere utile se il progetto è stato un traduttore da F77 a C. Il mio primo taglio è stato pessimo e lento, e il mio secondo tentativo un po 'di tempo dopo è stato più dolce e veloce - quello era quando ho davvero iniziato a sfruttare correttamente la scansione delle stringhe. Non ho mai completato questo progetto a lungo perduto perché è diventato irrilevante; Ho smesso di lavorare con alcuni ingegneri che continuavano a cercare di convincermi che FORTRAN era buono.

È chiaro che persone come Larry Wall e Guido van Rossum conoscono Icon e Unicon. Quanto bene lo sanno non posso dirlo, ma scommetterei abbastanza bene dal momento che sembrano essere matti. L'influenza è sentita. Icon e Unicon sono una specie di Velvet Underground o Captain Beefheart del mondo musicale; non è mainstream da lungo tempo, ma le persone che conoscono li conoscono e sono fortemente influenzati.

A differenza di VU o Beefheart, (Un) Icon non ha il merito di essere troppo grato per le persone comuni da gestire, quindi l'analogia si rompe male a questo proposito ... In effetti, la sintassi e tutte le sue caratteristiche sono molto pulite e piacevoli alla vista. Qualsiasi somiglianza con Pascal è superficiale. La sintassi di sicuro sembra Pascal per l'occhio inesperto, ma comportamentalmente è pali a parte.

Dove si adatta?Non sarà in concorrenza con C per la codifica hard-core ad alte prestazioni, ma è proprio come la maggior parte delle lingue che non possono battere C quando le sole prestazioni della CPU sono l'unica soluzione. Non può battere la massiccia raccolta di librerie di Perl in CPAN, ma questa è probabilmente l'unica cosa in Perl che lo fuma! Cavolo, se vuoi qualcosa che CPAN offre, riscrivilo e donalo al repository Unicon. Non ha nulla di simile al modello di sicurezza di Java, ma è proprio come la maggior parte degli altri linguaggi. Probabilmente ottieni il punto ora.

Ho iniziato con Icon poi spostato diversi anni dopo in Unicon, che è dove l'attività principale è in questi giorni. L'icona viene mantenuta "stabile, pulita e completa" così com'è. Unicon ha riunito un sacco di estensioni e lo ha trasformato in un progetto coerente. Il più importante è una copertura molto migliore delle chiamate standard O/S e un sistema OO completo di tipo duck-typing.

OO di Unicon supporta anche l'ereditarietà circolare, per non parlare di MI! Questo è principalmente per il cervello-f ** ma anche perché si è dimostrato praticabile. Naturalmente, qualsiasi programmatore sensibile in genere non dovrebbe ottenere quello stupido se non sono veramente attuando qualcosa in matematica (ad esempio Polar < cartesiano < Polar < cartesiana < ...) o Meccanica Quantistica (ad es Saluto < particelle < Saluto < particelle < .. .) che sono gli esempi tipici che mostrano il raro merito dell'ereditarietà circolare.

Per rispondere alla domanda facile, si, è compilato, ma per una sorta di PCODE, che viene quindi eseguito da una macchina virtuale. Gli eseguibili costruiti hanno un'intestazione hash-bang in modo che possano essere eseguiti direttamente. Su Windows, hanno un'intestazione .EXE (o è .COM?) In modo che possano anche essere eseguiti direttamente. Inutile dire che questi non sono portabili tra Unix e Windows, anche se Powershell potrebbe essere in grado di fare qualcosa per consentire agli eseguibili Unix di essere eseguiti direttamente su Windows. In pratica, il passo di compilazione è potente e gestito da normali makefile. Unicon ha anche un passo di compile-n-run quick-n-dirty per fare scherzi, ma qualsiasi progetto al di là di un roughie totale viene meglio servito con una fase make.

Le funzionalità di rete fanno parte di Unicon. Una libreria grafica portatile è stata disponibile per Icon per un lungo periodo e fa anche parte di Unicon. Garbage Collection è un dato dato che è un linguaggio di alto livello.

Le due caratteristiche uniche più importanti sono i generatori e la scansione a stringa. Non entrerò in questi - è meglio che scarichi e giochi attraverso le esercitazioni finché non affonda. Una volta che i generatori sono disponibili per una lingua, la scansione delle stringhe funziona magnificamente. Non credo che la scansione delle stringhe possa funzionare in modo così semplice senza di essa. Ancora una volta, gioca finché non ha senso. È un'alternativa molto interessante e potente all'uso delle espressioni regolari ed è stata una parte cruciale del mio lavoro.

I generatori sono una di quelle cose che richiedono di essere inserite in una nuova lingua. Il fatto che non sia sul radar è una tragedia IMHO. Se dovessi sedermi seriamente e sognare di produrre il prossimo popolare linguaggio open source, questo sarebbe parte del nucleo. Ma chi ha il tempo? Ho delle bollette da pagare.

Le versioni più recenti intorno al 2012+ ora hanno vero multi-threading e sono probabilmente stabili mentre scrivo questo.

Le versioni di Windows sono sostanzialmente aggiornate in questi giorni in Unicon. La compilazione di Windows è stata risolta e ho inserito con successo i miei progetti principali su Windows con pochissimo dolore oltre l'ovvio dolore di dover utilizzare Windows.

2

Ho usato Icon per quello che sembra per sempre, e lo uso ancora oggi. È un successore di "Snobol" e del successore di Snobol, Spitbol ("una rapida implementazione di Snobol").Ha una sintassi simile ad Algol (come fa C e molte altre varianti) e si distingue per la costruzione in "memoria magica" (tabelle hash) supportate dalla propria sintassi distintiva. Gran parte di ciò che potresti aver visto in Icon in passato ora appare altrove. Un esempio, in Icon, abc ["xyz"] è un indice hash nella tabella hash (in Icon, una "tabella"), qui abc, con una chiave, xyz. Javascript ha un riferimento alla proprietà dell'oggetto con sintassi simile. Ha anche costruito elenchi, co-routines, ricorsione (ogni linguaggio decente ha ricorsione), interi di dimensioni arbitrarie e, analisi delle stringhe con backup attraverso alternative - probabilmente la parte più potente e utile della lingua. Oggi lo uso per sostituire gli script di shell che richiedono un'elaborazione intensiva di stringhe/hash. In una vita precedente anni fa, ho scritto un componente aggiuntivo in linguaggio C su Icon che si interfacciava con Oracle. Manca la miriade di funzioni che vengono integrate con, per esempio, PHP o Python o la libreria C standard. Ma, direi, per la stragrande maggioranza dei codici che ho mai fatto, non erano comunque necessari. È veloce da programmare e leggere. Come con qualsiasi altra lingua, la scegli quando la scarpa di programmazione si adatta. Un altro interessante programma in Icon che ricordo era un semplice traduttore dallo styel di SQL di Ingress in Oracle. Puoi persino usarlo per la programmazione CGI. Quando c'è una corrispondenza tra esigenze e capacità, è veloce da programmare, facile da usare e, che ci crediate o no, divertente da usare. Non è stato esteso per anni (tranne per Unicon), ma nessuno dei due ha ksh (o il suo aspetto simile bash).