2009-03-18 8 views

Odpowiedz

8

zwięzłość jak funkcja języka jest źle zdefiniowany i prawdopodobnie nie jednolity. Różne języki mogą być mniej lub bardziej zwięzłe w zależności od problemu.

Erlang jako język funkcjonalny może być bardzo zwięzły, poza Ruby lub Python. W szczególności dopasowywanie wzorców często zastępuje, jeśli instrukcje i rekurencje oraz wyliczenia listy mogą zastępować pętle.

Na przykład Java miałby coś takiego:

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

natomiast kod Erlang wyglądałby następująco:

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

Z wyjątkiem będącej nieodłącznym ponieważ nie ma klauzuli o wejściu inne niż 0 lub 1. Jest to przyczyną problemu, który dobrze nadaje się do rozwoju stylu Erlang.

Generalnie wszystko, co można zdefiniować jako transformację, będzie szczególnie dobrze pasować do języka funkcjonalnego i może być napisane bardzo zwięźle. Ponieważ wielu funkcjonalnych zelotów językowych twierdzi, że każdy problem w programowaniu jest transformacją.

2

Erlang pozwala na realizację funkcjonalności w bardzo niewielu liniach kodu, w porównaniu do moich doświadczeń w Javie i Pythonie. W przeszłości zbliżał się do mnie tylko Smalltalk lub Scheme. Dostajesz tylko niewiele, ale zazwyczaj masz tendencję do mówienia identyfikatorów dla modułów, funkcji, zmiennych i atomów. Sprawiają, że kod jest bardziej czytelny. Masz wiele normalnych, kręconych i kwadratowych nawiasów klamrowych. Zależy więc od układu klawiatury, jak wygodne będzie to. Powinieneś spróbować.

mue

1

Erlang jest zaskakująco zwięzły, szczególnie gdy chcesz osiągnąć wydajność i niezawodność.

Erlang jest zwięzły, nawet w porównaniu do Haskell:

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

I jest zaskakująco szybki (i niezawodny), nawet w porównaniu do C++:

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

(18 razy mniej SLOC nie jest zaskoczeniem).

W każdym razie zawsze zależy to od Twoich preferencji i celu, jaki chcesz osiągnąć.

1

Musisz spędzić trochę czasu, napisać kod, aby zrozumieć erlangowskie miejsce, w porównaniu do wszystkich innych pojawiających się narzędzi, DHT, dokumentów, mapreduce frameworks, hadoop, GPU, scala, ... Jeśli spróbujesz zrobić , powiedzmy, aplikacje typu SIMD poza słodkim miejscem, prawdopodobnie skończy się walka z paradygmatem i pisanie pełnego kodu, natomiast jeśli trafisz na problemy, które wymagają skalowania serwerów i oprogramowania pośredniego płynnie w górę iw dół, to płynie naturalnie.(I wydaje się, że powstanie scala w jej słodkim miejscu jest również nieuniknione)

Dobrym pomysłem będzie eksperyment Tim Bray Wide Finder (destylacja dużych plików rejestru Apache'a) sprzed kilku lat, oraz jak był rozczarowany erlangiem.

ja generalnie nie zaleca umieszczenie dużo Przechowywać w rzutach Alioth, ponieważ nieuchronnie kończy się porównując naprawdę dobry i zły kod, ale jeśli trzeba umieścić numery LOC, Erlang vs. C, Ruby cokolwiek

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

Powiązane problemy