Piękny język programowania

0

Mowa oczywiście o Erlangu - języku programowania rozproszonego.
http://www.erlang.org/

Właśnie czytam sobie książkę: "Programming Erlang - Software for Conncurent World" - Joe Armstrong
Dosyć ciekawy język i trochę inny niż wszystkie...

np. takie coś:
X = 3453593. - to jest zmienna
X * X * X. - to zadziała
ale
X = 84539453 - to już nie zadziała bo w Erlangu zmienna może mieć przypisaną wartość tylko raz!!!
a sam operator "=" to nie przypisanie jak w większości języków tylko "pattern matching operator"

Piękny język!.

0

Erlanga trzeba będzie się kiedyś nauczyć. A z mniej standardowych Matlab jest fajny, chociaż tylko do specyficznych zastosowań.

0

piękne jest właśnie to że zmiennej możesz przypisać wartość tylko jeden raz a operator "=" to w rzeczywistości "pattern matching". Chyba nie muszę nikomu tłumaczyć w jaki sposób takie coś wpływa na wyłapywanie błędów w programie.
W Erlangu nie można zrobić czegoś takiego(zwiększenie X o jeden):

X = X + 1
tylko trzeba tak:
X1 = X + 1 - za każdym razem nowa zmienna.

Zasiadając do lektury tej książki myślałem sobie "o znowu jakiś głupi language z pętlami if-ami"....a tu takie coś. Jestem pozytywnie zaskoczony. Erlang to język przyszłości. Jedni będą używać OpenMPI a drudzy Erlanga.

0

no w sumie jest jeszcze Scala która może konkurować z Erlangiem.

0
alpenos23 napisał(a)

piękne jest właśnie to że zmiennej możesz przypisać wartość tylko jeden raz a operator "=" to w rzeczywistości "pattern matching".

W takim razie nie jest to zmienna, tylko wartość. I jest to coś normalnego w językach funkcyjnych. Pattern matching to też standardowy mechanizm w nich występujący.
Więc o co chodzi?

0

Oba języki są piekę - Scala jest może trochę nawet lepsza bo może korzystać z bibliotek Javy i obsługuje OOP.
Polecam książki:
"Programming in Scala" - Martin Odersky,
"Programming Erlang Software for Concurrent World" - Joe Armstrong

Oba języki są piękne!!!

0

Erlang jest dynamicznie typowany => Erlang jest be.

0

@somekind

Chodzi o to że są to języki do pisania programów na komputery wieloprocesorowe, rozproszone.

Oto cytat z książki o scali:

"The Java platform comes with a built-in threading model........
.....
Unfortunately, programmers have found it very difficult to reliably build
robust multi-threaded applications using the shared data and locks model,
especially as applications grow in size and complexity........

"Scala’s actors library does address the fundamental problem by providing
an alternative, share-nothing, message-passing model that programmers tend
to find much easier to reason about. Actors are a good first tool of choice
when designing concurrent software, because they can help you avoid the
deadlocks and race conditions that are easy to fall into when using the shared
data and locks model."

0

Niesamowite.

0

user image

0

Czy zmienna, której wartość można przypisać tylko raz, wciąż jest zmienną? o.O

0

W zasadzie to nie jest zmienna tylko predykat. Sam Erlang był pierwotnie w Prologu napisany, więc pewnie się inspirowali.

0

[CIACH!]... na nazwę wystarczy spojrzeć: zmienna... ZMIENNA - od zmiany, jak zmienna może być niezmienna?

0

w c++ mogę wymusić takie zachowanie na stałych więc ten mechanizm nie czyni tego szczególnie zajebistym. Podaj bardziej przekonywujące argumenty.

0

"Erlang is far less efficient than C++. Erlang's big strength is scalability, not efficiency. It will linearly scale across multiple CPUs and, due to its programming and communications model, will very easily scale across machine clusters.

Just to be clear, Erlang won't scale more than C++; it just scales more easily than C++. A lot more easily. "

0

http://www.haskell.org/ - to jest piękny język. Mechanikę Erlanga da się zaimplementować w Haskellu lub Scali, w drugą stronę to nie działa. Erlang ma najbrzydszą (i najmniej elastyczną) składnię ze wszystkich głównych języków funkcyjny, to tyle w kwestii piękna.

0

U mnie prowadzący z programowanie funkcjonalnego podnieca się SML'em, że w nim nie ma zmiennych... Więc coś w tym jest, że ktoś to zobaczy i nagle się podnieca, ale co to jest za zjawisko :D ? Czym tu się jarać? Chyba tylko tym, że w danym języku się topornie pisze :P I tak akurat SML to martwy język...

0
Spine napisał(a)

U mnie prowadzący z programowanie funkcjonalnego podnieca się SML'em, że w nim nie ma zmiennych... Więc coś w tym jest, że ktoś to zobaczy i nagle się podnieca, ale co to jest za zjawisko :D ? Czym tu się jarać? Chyba tylko tym, że w danym języku się topornie pisze :P I tak akurat SML to martwy język...

Jak dla mnie koncepcja używania identyfikatorów/predykatów/czy jak to zwał zamiast zmiennych to nie jest jakaś wielka magia, dużo bardziej można się podniecać sposobem definiowania sekwencji albo np. unit of measure.

0

XSLT - to jest dopiero wspaniały język. Kazali nam pisać w nim programy :|

0

różnie to z tą wspaniałością bywa...:

Znajomy mójego ojca pojechał do Szewcji z kolegą. Poszedł sobie do sklepu - w Szwecji szynki wiszą na sznurkach i można sobie je
brać samemu - no więc sobie raz tak wziął szynkę na sznurku, zawiesił na kraku i pod kurtkę....
Objedał się i chwalił do znajomego - "Szwecja to wspaniały kraj...", do domu dzwonił to mówił "Szwecja to wspaniały kraj..."

Za drugim razem poszdł do sklepu i już mu się nie udało - policja go złapała i wsadziła za kraty i płakał....

Szwecja to wspaniały kraj....

0

Erlanga osobiście pięknym językiem bym nie nazwał. Miałem przyjemność w nim pisać kilka niewielkich programików. Pierwsze kilka miesięcy było naprawdę tragiczne jak dla mnie. Składnia po prostu na samym początku powala. Albo linijki kończy się "." albo "," a czasem jeszcze "". Nim się do tego człowiek przyzwyczai kilka linijek trzeba skrobnąć.

0

a czy
private static final String = "zmienna" jest nadal zmienną ?

0

A czy (w Ruby):

LOL="abba"

Jest stałą?
Trzeba rozróżniać immutable variables od stałych.

0

wszystko zależy od upodobań programisty. Najładniejszą składnie ma chyba Python i gdyby był tak szybki jak ANSI C to mógłby być językiem numer 1.

0

Gdyby babka miała wąsy, to by była dziadkiem.

Z dynamicznym typowaniem ciężko uzyskać zadowalającą wydajność i/ lub zajętość pamięci.

Poza tym co chwilę zmieniasz upodobania. Może potrzebujesz pomocy lekarza?

0

nie zmieniam upodobań. Chciałem tylko powiedzieć że Python ma ładną składnie.

0

znam i lubię programować w wielu językach - nie mam jednego ulubionego. Każdy ma w sobie coś pięknego. Ostatnio uczę się Object-Pascala w Lazarusie. Niemniej jednak gdy siadam do Javy, C#,Pythona które są dosyć fajne to czuję pewien niedosyt. Zaczynam sobie wtedy myśleć że te języki są takie fajne ale nie dają takiej wydajności jak C i mam wtedy ochotę porzucić je i pisać w ANSI C.

0

@Krolik

Poczytaj sobie to:
http://www.jelovic.com/articles/why_java_is_slow.htm

"Java, with the current language features, will never be as fast as C++. This pretty much means that it's not a sensible choice for high-performance software and the highly competitive COTS arena. But its small learning curve, its forgiveness, and its large standard library make it a good choice for some small and medium-sized in-house and custom-built software."

wystarczy sobie zobaczyć jak działają niektóre programy w Javie. Teraz może tego tak nie czuć ale jeszcze parę lat temu odpalając program do modelowanie UML - Argo UML działał strasznie wolno.

0

@0x200x20

ja też znam takie linki gdzie piszą że java jest równie szybka albo nawet tak samo szybka jak C. Może jest to prawda w przypadku programów które wykonują obliczenia matematyczne- tutaj java może być równie szybka. Ale autor podany w linku powyżej chyba jasno wytłumaczył że java nie może być szybka na równi z C.

0

Benchamrk:
http://bruscy.republika.pl/pages/przemek/java_not_really_faster_than_cpp_160-430.html

Total execution time for C++: 41.95 seconds

Total execution time for Java Server VM: 88.10 seconds

Total execution time for Java Client VM: 85.37 seconds

1 użytkowników online, w tym zalogowanych: 0, gości: 1