Bellissimo codice Erlang [chiuso]


15

Sto cercando di saperne di più su Erlang rispetto ai progetti di giocattoli con cui ho giocato. A tal fine, sto leggendo la programmazione di Erlang e alcuni degli archivi di Armstrong sul software .

Vorrei anche leggere qualche codice di esempio (preferibilmente di produzione) che mostra il tipo di cose che puoi costruire con Erlang che sarebbero sproporzionatamente difficili in altre lingue. A parte (presumo) Yaws , ci sono esempi disponibili pubblicamente del bellissimo codice Erlang che potrei leggere per ottenere una migliore comprensione della lingua e / o vedere gli usi idiomatici per i vari costrutti linguistici?

In particolare non sto cercando un codice che "porti a termine il lavoro" ma usi pratiche discutibili o esempi sulla falsariga di "ecco come si scrive factorialin Erlang".

Allo stesso modo, qualcuno può raccomandare qualche buona letteratura per l'apprendimento di questa lingua (oltre alla menzionata "Programmazione Erlang")? Per preferenza, qualcosa che tu stesso hai imparato per impararlo, ma se ci sono alcuni libri standard della comunità per questo, gettali anche quelli.


Erlang è stato creato da Ericcson per progettare e costruire switch in parallelo massicci per il traffico telefonico. È stato progettato da Ericsson per supportare applicazioni distribuite, tolleranti ai guasti, soft-real-time e non-stop. Questo è il dominio problematico in cui eccelle. Per tutti gli altri domini problematici ... Il tuo chilometraggio può variare.
Robert Harvey,

Risposte:



-4

Da quando hai aggiunto il tag di programmazione funzionale, che ne dici di scrivere un compilatore o un interprete Erlang in Haskell? Erlang non è più all'avanguardia, come del tutto. Consiglio di imparare Erlang in uno o due giorni, come alcune altre lingue (LISP, Prolog), e poi di dimenticarsene; sono solo un passo per disimparare le lingue OOP imperative.

Per attività più piccole rispetto all'implementazione di un compilatore, vedere Project Euler .

[EDIT] Per rispondere al commento:

Da un punto di vista tecnico: Erlang era bravo ai vecchi tempi, quando non c'erano processori multicore. Ma ora - dato ai compilatori / interpreti esistenti di cui sono a conoscenza - semplicemente non si ridimensiona più come dovrebbe. Un interprete scritto in Haskell si ridimensionerebbe, compilato per Haskell lo avrebbe reso più veloce ma avrebbe rimosso la funzione di sostituzione del codice al volo.

Dal punto di vista dei programmatori: Haskell non è la scelta migliore per tutte le attività applicabili, ma atm, i linguaggi probabilmente più avanzati sono molto sperimentali e quelli non applicabili di solito hanno a che fare con entrambi i sistemi integrati (come microcontrollori e GPU) o numero che scricchiola, dove C e Assembler sono ancora la scelta migliore.

Cos'è esattamente qualcosa che potresti fare con Erlang meglio che in altre lingue?


4
Non ho preteso di impararlo perché era all'avanguardia; Penso solo che appaia interessante e potrebbero esserci cose che puoi costruire con esso che non puoi facilmente con altre lingue. Se la tua risposta è "Haskell è una scelta migliore per tutte le attività applicabili", che ne dici di dirmi perché specificamente (invece di affermarlo solo vagamente) e di rispondere alla domanda iniziale per Haskell invece di Erlang?
Inaimathi,

1
Non so che questa risposta sia così negativa, sebbene si aggiri attorno alla domanda originale. Se ti piacerebbe vedere qualche adorabile Haskell nel senso di cui sta parlando Comanad, guarda en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours È un tutorial che insegna haskell, la libreria di analisi parsec, e schema scrivendo un programma parser . I combinatori più parsimoniosi sono, a mio avviso, una delle cose più belle con cui giocare nei linguaggi funzionali. Sono anche un po 'pratici; una volta che sai come scrivere i parser, puoi progettare le tue lingue per risolvere problemi specifici.
CodexArcanum,

1
"Cos'è esattamente qualcosa che potresti fare con Erlang meglio che in altre lingue?" Non lo so; ecco perché sto cercando di impararlo. Il mio istinto mi dice che un linguaggio il cui costrutto principale è il processo (al contrario della chiusura come in CL, la lambda come in Scheme o il dizionario come in Python) avrebbe qualcosa di interessante da offrire. Anche Haskell è funzionale e ha costrutti simili di pattern matching, ma non c'è un focus incessante sulla concorrenza. In effetti, il costrutto principale di Haskell sembra essere il tipo, il che mi fa pensare che siano animali molto diversi.
Inaimathi,

2
@CodexArcanum - AFAIK, Erlang e OTP sono disponibili con un derivato della Mozilla Public License ed è gratuito come nella birra dai repository Debian. Cosa intendevi con "il sistema è proprietario"?
Inaimathi,

1
@comonad - Quello che intendevo per "Haskell è una scelta migliore per tutte le attività applicabili" era "Per ogni attività che potrei completare in modo accettabile con Erlang, Haskell può farlo meglio". Non intendevo implicare che tu potessi fare tutto il lavoro di programmazione con un solo linguaggio, o che stavo cercando di usare solo una lingua per tutti i miei progetti. Sembravi chiederti "Perché usare Erlang quando puoi usare Haskell?", Il che implica che pensi che Haskell sia direttamente superiore. Volevo che chiarissi e forse sostenessi tale affermazione.
Inaimathi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.