Domanda

Sono interessato a compilatori, interpreti e lingue.

Qual è la lingua più interessante, ma dimenticata o sconosciuta, che conosci? E, soprattutto, perché?

Sono interessato sia ai linguaggi compilati, interpretati e VM, ma non linguaggi esoterici come Whitespace o BF.
L'open source sarebbe un vantaggio, ovviamente, dal momento che ho intenzione di studiare e spero di imparare da esso

È stato utile?

Soluzione

Adoro i compilatori e le macchine virtuali e adoro Lua.

Lua non è ben supportata come molti altri linguaggi di scripting, ma da una mentalità come la tua sono sicuro che ti innamorerai anche di Lua. Voglio dire è come lisp, (può fare qualsiasi cosa lisp possa, per quanto ne so), ha molte delle caratteristiche principali di ADA, inoltre ha la meta-programmazione integrata, con la programmazione funzionale e la programmazione orientata agli oggetti abbastanza libera da rendere qualsiasi tipo della lingua del dominio che potresti desiderare. Inoltre il codice della VM è semplice C, il che significa che puoi scavare facilmente in esso per apprezzarlo anche a quel livello.

(Ed è la licenza MIT open source)

Altri suggerimenti

Sono un fan del linguaggio di programmazione D. Ecco un articolo di Wikipedia e introduzione dal sito ufficiale .

Alcuni frammenti dell'articolo di Wikipedia:

  

Il linguaggio di programmazione D, noto anche semplicemente come D, è un linguaggio di programmazione del sistema multiparadigm orientato agli oggetti, imperativo di Walter Bright di Digital Mars. È nato come una reingegnerizzazione del C ++, ma anche se è influenzato principalmente da quel linguaggio, non è una variante del C ++. D ha riprogettato alcune funzionalità di C ++ ed è stato influenzato dai concetti utilizzati in altri linguaggi di programmazione, come Java, C # ed Eiffel. Una versione stabile, 1.0, è stata rilasciata il 2 gennaio 2007. Una versione sperimentale, 2.0, è stata rilasciata il 17 giugno 2007.

sulle funzionalità:

  

D è stato progettato con lezioni apprese dall'uso pratico del C ++ piuttosto che da una prospettiva teorica. Anche se utilizza molti concetti C / C ++, ne elimina anche alcuni e, come tale, non è strettamente compatibile con il codice sorgente C / C ++. Aggiunge funzionalità al C ++ implementando anche la progettazione per contratto, unit testing, moduli veri, garbage collection, array di prima classe, array associativi, array dinamici, divisione di array, funzioni nidificate, classi interne, chiusure [2], funzioni anonime, compila l'esecuzione della funzione tempo, la valutazione lazy e ha una sintassi del modello riprogettata. D mantiene la capacità di C ++ di eseguire codifiche di basso livello e le aggiunge con il supporto di un assemblatore integrato in linea. L'ereditarietà multipla C ++ è sostituita dall'ereditarietà singola in stile Java con interfacce e mixin. La sintassi di dichiarazione, dichiarazione ed espressione di D corrisponde strettamente a quella di C ++.

Immagino che molto dipenda da cosa intendi per "non-mainstream".

lisp viene considerato non mainstream?

Suggerirei di dare un'occhiata a Erlang: recentemente è stato un po 'di stampa, quindi alcune delle risorse di apprendimento sono eccellenti. Se hai usato OO e / o linguaggi procedurali, Erlang sicuramente piegherà la tua mente in modi nuovi ed eccitanti.

Erlang è un linguaggio puramente funzionale, con supporto approfondito per programmi concorrenti, distribuiti e tolleranti ai guasti. Ha una serie di caratteristiche interessanti, incluso il fatto che le variabili non sono affatto variabili: non possono essere modificate una volta dichiarate e sono in effetti meglio comprese come una forma di modello.

Si parla in giro della blogosfera sulla costruzione in cima alla piattaforma Erlang (OTP) e sul supporto della macchina per altre lingue come Ruby - Erlang diventerebbe quindi una specie di macchina virtuale per l'esecuzione di app simultanee, il che sarebbe piuttosto eccitante possibilità.

Di recente mi sono innamorato di Ocaml e linguaggi funzionali in generale.

Ocaml, ad esempio, offre il meglio di tutti i mondi possibili. Ottieni codice che si compila in linguaggio macchina nativo eseguibile veloce come C, o codice byte universalmente portatile. Ottieni un interprete per portare la velocità REPL allo sviluppo. Ottieni tutto il potere della programmazione funzionale per produrre strutture perfettamente ortogonali, profonda ricorsione e vero polimorfismo. In cima a tutto ciò c'è il supporto per l'Orientamento-Oggetto, che nel contesto di un linguaggio funzionale che già fornisce tutto ciò che OOP promette (incapsulamento, modularizzazione, funzioni ortogonali e riciclabilità polimorfica), significa OOP che è costretto a dimostrare realmente se stesso.

Smalltalk (vedi discussione collegata qui) . Sorta del nonno dei linguaggi dinamici (con la possibile eccezione di Lisp e SNOBOL). Molto bello con cui lavorare e purtroppo calpestato da Java e ora i linguaggi più recenti come Python e Ruby.

FORTH era un linguaggio progettato per codice di basso livello sulle prime CPU. La sua caratteristica più notevole sono state le operazioni matematiche basate sullo stack RPN. Lo stesso tipo di matematica utilizzato sui primi calcolatori HP. Ad esempio 1 + 2 + 3 + 4 = sarebbe scritto come 1, 2, 3, 4, +, +, +

Haskell e REBOL sono entrambi linguaggi affascinanti, per ragioni molto diverse.

Haskell può davvero aprire gli occhi come sviluppatore, con concetti come monadi, applicazione parziale, abbinamento di modelli, tipi algebrici, ecc. È un vero e proprio orgoglio per il curioso programmatore.

REBOL non ha neanche una pendenza. All'inizio è ingannevolmente semplice, ma quando inizi a approfondire concetti come contesti, dialetti PARSE e bindologia, ti rendi conto che c'è molto di più di quello che sembra. La cosa bella di REBOL è che è molto più facile iniziare con esso che con Haskell.

Non riesco a decidere quale mi piace di più.

Boo prende di mira il framework .NET ed è open source. Ispirato da Python.

Prova colorForth .

PROLOG è un linguaggio basato su regole con funzionalità di back-track. Puoi produrre codice molto leggibile dall'uomo (come in prosa).

Trovo interessanti le lingue dei vincoli, ma è difficile sapere cosa costituisca dimenticato o sconosciuto. Ecco alcune lingue che conosco (questo non è certamente un elenco esaustivo di alcun tipo):

  • Ciao , YAP , SWI-Prolog e GNU Prolog sono tutte implementazioni Prolog. Penso che siano tutti open source. Ciao, gnu prolog e probabilmente anche gli altri, come è comune nelle implementazioni di Prolog, supportano altri tipi di vincoli. Programmazione di numeri interi, ad esempio.
  • Mozart e Mercury sono entrambi, a quanto ho capito, linguaggi di programmazione logica alternativa.
  • Alice è più nella famiglia ML, ma supporta la programmazione dei vincoli utilizzando il GECODE libreria C ++.

Alla deriva un po 'fuori tema ....

  • Maude è un termine interessante che riscrive la lingua.
  • HOL e COQ sono entrambi sistemi a prova meccanizzata che vengono comunemente utilizzati nella comunità linguistica.

Lambda-the-Ultimate è un buon posto per parlare e conoscere meglio i linguaggi di programmazione .

Dovrei dire Scheme, specialmente nella sua R6RS incarnazione.

Modula-2 è il linguaggio non mainstream che ho trovato più interessante. Sembra mainstream, ma non funziona come quello a cui siamo abituati. Eredita molto da Pascal, ma è abbastanza diverso da offrire interessanti possibilità di apprendimento.

Dai un'occhiata a Io in http://www.iolanguage.com/ o Lisaac all'indirizzo: https://gna.org/projects/isaac/ oppure Self su: http://self.sourceforge.net/ o Sather (ora assolutamente dimenticato) o Eiffel http://www.eiffel.com

Perché qui ci sono alcuni motivi. Io è assolutamente minimalista e non ha nemmeno "elementi di flusso di controllo" come entità sintattiche. Lisaad fa seguito a Eiffel con molte semplificazioni AFAIKT. Il Sé è un seguito di Smalltalk e Io ha preso parecchio anche dal Sé. La cosa fondamentale è che la distinzione tra Classe e Oggetto è stata abbandonata. Sather è una risposta a Eiffel con alcune altre regole e un migliore supporto per la programmazione funzionale (fin dall'inizio).

E Eiffel è definitivamente un segno distintivo per le lingue OO tipicamente statiche. Eiffel è stata la prima lingua a supportare il design per contratto, generici (aka modelli) e uno dei modi migliori per gestire l'eredità. Era ed è ancora una delle lingue più semplici. Da parte mia ho trovato le migliori biblioteche per Eiffel .....

Il suo creatore ha solo un problema, non ha accettato altri contributi nel campo OO .....

Saluti

Di recente imparato il esistenza di Icona da questa domanda . Da allora l'ho usato in risposta a diverse domande. ( 1 , 2 , 3 , 4 ??)

È interessante per la sua strategia di valutazione: è l'unico linguaggio imperativo che conosco che supporti il ??backtracking. Permette un bel codice sintetico per molte cose :)

Imparare qualsiasi lingua che richiede di ripensare le tue abitudini di programmazione è un must. Un segno sicuro è il ritmo con cui sfogli la documentazione del nucleo di una lingua (non della biblioteca). Veloce significato inutile qui.

La mia breve lista sarebbe, nel mio ordine di esposizione e quali fossero i concetti che ho imparato da loro:

  • Assembly, C: ottimo per l'apprendimento dei puntatori e della loro aritmetica.
  • C ++: lo stesso di C con un'introduzione ai generici, purché tu possa sopportare la sintassi incredibilmente dettagliata.
  • Ruby / Lua: linguaggi di scripting, tipizzati in modo dinamico, scrittura di collegamenti per le librerie C esistenti.
  • Python / C # / Java: saltati, questi linguaggi mi sembrano una rivisitazione delle nozioni che hanno origine altrove con un'enorme libreria standard. Sicuramente tutti i pacchetti sono belli, ma non imparerai nuovi concetti qui.
  • OCaml: inferenza di tipo eseguita correttamente, applicazione parziale, generalità dedotta dal compilatore, immutabilità come impostazione predefinita, come gestire i null in modo elegante.
  • Haskell: pigrizia di default, monadi.

My & # 8364; .02.

Non riesco a credere che Logo sia così dimenticato. Ok, è il logo. Un po 'come lisp, ma con sintassi leggermente più brutta. Pur lavorando con le liste in Logo, si incontrano le operazioni deliziosamente denominate "butfirst" e "butlast". = P

ML. Impararlo e usarlo ti costringe a pensare diversamente ai problemi di programmazione in modo diverso. Inoltre garantisce una pazienza, nella maggior parte dei casi. La maggior parte.

Che ne dici di andare ? È nuovo di zecca, quindi è sconosciuto e non ancora (ancora).

È interessante perché la sintassi assomiglia a ciò che accade dopo aver messo C e Pascal in un barattolo e averli fatti combattere.

Beh, una volta si chiamava MUMPS ma ora si chiama InterSystems Cach & # 233; http://www.intersystems.com/cache/

Prima risposta - Schema. Non è troppo diffuso, ma sembra sicuramente un linguaggio solido da usare, soprattutto considerando la solidità di DrScheme (che in realtà compila i programmi Scheme in codice binario nativo).

Dopodiché - Haskell è incredibilmente interessante. È un linguaggio che fa bene la valutazione pigra e le conseguenze sono incredibili (incluse cose come una definizione a una riga della sequenza fibonnaci).

Sempre più mainstream, Python non è ancora ampiamente accettato nei circoli aziendali, ma sicuramente dovrebbe essere, ormai ...

ToonTalk di Ken Kahn, un linguaggio da cartone animato con basi teoriche hard-core: http://www.toontalk.com/

Prograph: http://en.wikipedia.org/wiki/Prograph .. sembra che Prograph viva come Marten:    http://andescotia.com/products/marten/

L'IDE del Sé era / è una cosa di bellezza, parla di Flow (nel senso Cs & # 237; kszentmih & # 225; lyi) ...

Nel complesso, però, dovrei dire che Haskell è il più interessante, per le potenziali avventure nell'informatica che rappresenta.

Harbour per tipo dinamico. Ottima opzione per le app aziendali.

Reia!

  

http://wiki.reia-lang.org/wiki/Reia_Programming_Language

È un senso per Erlang, è bello e sono innamorato. È così sconosciuto che non ha nemmeno una pagina di Wikipedia!

La prima lingua principale (non BASIC) che ho imparato è stata Dream Maker, da http: //www.byond. it . È in qualche modo simile a C ++ o Java, ma è ampiamente pre-costruito per la progettazione di giochi online multiplayer. È molto basato sull'eredità. È una lingua interessante soprattutto come lingua di partenza, ottiene risultati gratificanti più rapidamente e siamo onesti, la maggior parte delle persone che stanno imparando a programmare per prima sono interessate a una cosa ... i giochi.

Trovo Factor , Oz e OCaml abbastanza interessante. In effetti, ho iniziato a utilizzare Factor per progetti personali.

Rebol ovviamente! È così semplice ma così potente da impararlo su http://reboltutorial.com

Di recente ho cercato molto su Windows PowerShell .

Anche se non necessariamente solo una lingua. È una shell fantastica che ha un linguaggio di scripting integrato. È fondamentalmente una shell da riga di comando super potenziata.

A differenza delle shell Unix, dove tutto è testo stringa (che sicuramente ha i suoi vantaggi), i comandi (cmdlet) di PowerShell usano oggetti. È basato sul framework .Net, quindi voi ragazzi che lo conoscono probabilmente avrete già capito che qualsiasi cosa restituisce PowerShell può essere convogliata e che le proprietà e i metodi di quell'oggetto possono essere usati. È divertente dire " tutto è un oggetto! & Quot; di nuovo proprio come quando OOP stava diventando grande.

Roba molto ordinata. Per la prima volta, Windows sta implementando alcuni degli strumenti dell'interfaccia della riga di comando di Unix simili a grep e all'intero gruppo.

Se sei interessato alle VM, dovresti guardare Parrot ... C'è un sacco di lingue supportate ed è abbastanza pulito ....

O'caml è un buon linguaggio se vuoi imparare come implementare un compilatore ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top