Dipendente linguaggio a tipizzazione più adatto alla programmazione “mondo reale”? [chiuso]

StackOverflow https://stackoverflow.com/questions/4634303

Domanda

Quali dipendente digitato linguaggi di programmazione potrebbe essere utilizzato per lo sviluppo di applicazioni del mondo reale?

Questi sono alcuni punti, che ritengo importante:

  • documentazione
  • programmi di esempio
  • una libreria standard
  • o almeno un'interfaccia facile da usare funzione di stranieri
  • una comunità di persone che usano il linguaggio per le attività del mondo reale
  • strumento di supporto
È stato utile?

Soluzione

Agda , perché ha chiamando compatibilità con Haskell. Come tale, è probabilmente il linguaggio dipendente tipizzato con i migliori librerie. La documentazione e tutorial sono un po 'poco brillante, però, e strumento di supporto non è troppo eccezionale. Per essere onesti, lingue più dipendente digitati non sono molto completamente sviluppati al momento.

Se invece è andato con la richiesta leggermente più debole che la lingua dovrebbe avere di GADT , ci sono due opzioni molto ben tenuto: Scala e Haskell. IMHO si ottiene la maggior parte dei benefici di tipi dipendenti utilizzando GADT di, e si mantiene typechecking decidibile per l'avvio.

Scala e Haskell entrambi hanno (rispettivamente a Java e C) di grandi dimensioni e ben documentate le biblioteche, una catena strumento di lavoro, così come FFI di. Entrambi hanno anche le comunità che li utilizzano per risolvere i problemi del mondo reale, come analisi e href="http://liftweb.net/" rel="noreferrer"> sviluppo.

Altri suggerimenti

La risposta accettata contiene disinformazione. Typechecking in Agda è decidibile meno che non si spegne il controllo positività / cessazione / universo. Inoltre, infiniti processi sono programmabili in Agda, come processi IO sono programmabili in Haskell: l'unica limitazione è che infiniti processi non possono essere spiegato indefinitamente quando viene eseguito nel corso di typechecking . È possibile implementare un simulatore di Macchina di Turing in Agda:. Non si può dire la bugia che è garantito per terminare o convincere coontrollore dei tipo di eseguirlo in maniera sconfinata

che faccio, però, sono d'accordo che le lingue dipendente digitati sono ancora in fase sperimentale, quando si tratta di programmazione "mondo reale". Non possiamo ancora sostenere lo sviluppo pesante, ma siamo in grado di sostenere un hobby significativo tra quelli con un occhio al futuro, un po 'come i linguaggi funzionali ai vecchi tempi.

Idris, come suggerito da Twey, è il candidato più vicina ad un "mondo reale" linguaggio dipendente digitato. E 'molto più concentrato su come ottenere roba fatta di Agda è. Mi consiglia Agda come il veicolo migliore per sempre alle prese con le idee dietro dipendente digitati programmazione, ma Idris è l'opzione più pratica.

E ', sono lieto di dire, vale la pena considerare versioni recenti di Haskell come un candidato in questa discussione. Poiché GHC 7.4, Haskell ha iniziato sostenere una nozione utile di dati di livello tipo, e con almeno il singleton tecnica (un kludge se questo è), si può davvero avere tipi a seconda dei valori di runtime ( facendoli dipendono variabili statiche vincolati a valori pari run-time). Haskell è quindi un vero e proprio linguaggio "mondo reale" nella fase iniziale di sperimentazione di tipi dipendenti.

Agda non è progettato per essere un linguaggio di programmazione general-purpose. ATS è un linguaggio dipendentemente tipizzato che è stato progettato per la programmazione a basso livello, anche se è un po 'meno elegante di Agda. Idris è un linguaggio fledgeling dipendentemente tipizzato progettato per i programmi performante applicazioni di livello.

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