2009-03-18 13 views

risposta

8

concisione come caratteristica del linguaggio è mal definito e probabilmente non uniforme. Lingue diverse potrebbero essere più o meno concise a seconda del problema.

Erlang come linguaggio funzionale può essere molto conciso, oltre a Ruby o Python. Nello specifico, la corrispondenza del modello spesso sostituisce se le istruzioni e la ricorsione e la comprensione delle liste possono sostituire i loop.

Per esempio Java dovrebbe avere qualcosa di simile:

String foobar(int number){ 
    if (number == 0) { 
    return "foo"; 
    } else if (number == 1) { 
    return "bar"; 
    } 
    throw new Exception(); 
} 

mentre il codice Erlang sarà simile:

foobar(0) -> "foo"; 
foobar(1) -> "bar". 

Con l'eccezione che è intrinseca perché non v'è alcuna clausola per l'ingresso altro allora 0 o 1. Questo è un problema che si presta bene allo sviluppo di stile di Erlang.

In generale tutto ciò che è possibile definire come una trasformazione corrisponderà a un linguaggio funzionale particolarmente bene e può essere scritto in modo molto conciso. Di fatto molti zelanti del linguaggio funzionale affermano che qualsiasi problema nella programmazione è una trasformazione.

2

Erlang consente di realizzare la funzionalità in pochissime righe di codice, rispetto alle mie esperienze in Java e Python. Solo Smalltalk o Scheme mi sono stati vicini in passato. Hai solo un piccolo sovraccarico, ma in genere tendi a parlare di identificatori per moduli, funzioni, variabili e atomi. Rendono il codice più leggibile. E hai un sacco di bretelle normali, ricci e quadrati. Quindi dipende dal layout della tastiera di quanto sarà confortevole. Dovresti fare un tentativo.

mue

1

Erlang è sorprendentemente conciso soprattutto quando si desidera ottenere prestazioni e affidabilità.

Erlang è concisa anche rispetto a Haskell:

http://thinkerlang.com/2006/01/01/haskell-vs-erlang-reloaded.html

Ed è sorprendentemente veloce (e affidabile) anche rispetto a C++:

http://www.erlang.se/euc/06/proceedings/1600Nystrom.ppt

(18 volte meno SLOC non è una sorpresa).

In ogni caso dipende sempre dalle preferenze e dall'obiettivo ciò che si desidera ottenere.

1

Devi passare un po 'di tempo, scrivere codice, per capire il punto debole di erlang, rispetto a tutti gli altri strumenti emergenti, DHT, doc store, framework mapreduce, hadoop, GPU, scala, ... Se provi a fare , diciamo app di tipo SIMD al di fuori del punto debole, probabilmente finirai per combattere il paradigma e scrivere codice verboso, mentre se riscontri problemi che necessitano di scalare server e middleware senza interruzioni, esso scorre in modo naturale.(E anche l'aumento di scala nel suo punto debole è inevitabile)

Una buona cosa da cercare sarebbe l'esperimento di Tim Bray Wide Finder (distillazione di grandi file di log di apache) di un paio di anni fa, e come è stato deluso da Erlang.

io in genere non consiglio mettere molto negozio nella sparatoria Alioth, dato inevitabilmente finisce per il confronto veramente buono e il codice cattivo, ma se avete bisogno di mettere i numeri di LOC, Erlang vs C, Ruby, qualunque sia

http://shootout.alioth.debian.org/u32q/erlang.php

Problemi correlati