Erlang, Ericsson firması tarafından 1986'da Joe Armstrong, Robert Virding ve Mike Williams önderliğinde geliştirilen genel amaçlı (general-purpose), eş zamanlı (concurrent), dinamik (dynamic typing), fonksiyonel ve atık toplama (garbage-collected) özelliğine sahip olan bir dildir. Erlang veya alternatifi olan Erlang/OTP şeklinde tanımlamalar da kullanılabilir. Erlang/OTP işleyiş sürecinin bir parçasıdır ve birçok kullanıma hazır komponent/bileşen sunmaktadır. Erlang/OTP bileşenlerinin birçoğu Erlang programlama dili ile yazılmıştır. Erlang/OTP, bunların yanında bir dizi tasarım prensipleri de sunmaktadır.
Paradigması | Çok paradigmalı; Eşzamanlı, Fonksiyonel |
---|---|
İlk çıkışı | 1986 |
Tasarımcı | Joe Armstrong, Robert Virding, Mike Williams |
Geliştirici | Ericsson |
Kararlı sürüm | 26.2.1 (18 Aralık 2023) |
dinamik, güçlü | |
Etkilendikleri | Lisp, Prolog, Smalltalk |
Etkiledikleri | Clojure, Dart, Elixir, F#, Rust, Scala, Go |
Lisans | Apache License 2.0 |
Olağan dosya uzantıları | .erl, .hrl |
Web sitesi | erlang.org |
Erlang ile yazılan sistemler aşağıdaki listedeki özelliklere sahip olunması amaçlandığında çok güçlü bir rol oynamaktadır:
Erlang çalışma zamanı sistemi, aşağıdaki özelliklere sahip sistemler için tasarlanmıştır:
- Dağıtık (Distributed)
- Arızaya dayanıklılık (Fault-tolerant)
- Gerçek zaman sistemleri (Real-time)
- Yüksek erişilebilirlik (Highly available, non-stop applications)
- Hızlı Değiş-Tokuş (Hot swapping), çalışan sistemde kod değiştirildiği zaman tekrar yeniden başlatılmaya ihtiyaç duyulmayan
Dilin temel aldığı önemli 3 adet özellik vardır. Bunlar sırasıyla değişmez veri (Immutable data), model eşleşme (Pattern matching) ve fonksiyonel programlamadır. Aktör Model (Actor Model) tasarım örüntüsünü benimseyen yapısı sayesinde karmaşık ve çok büyük derecede eş zamanlı uygulamaların geliştirilmesi diğer dillere göre daha kolay bir hal almaktadır.
Sıradan bir Erlang yüzlerce küçük Erlang sürecinden meydana gelir.
Kod örnekleri
Özyineleme (recursion) yöntemi ile 10'a kadar sayan bir fonksiyon:
-module(count_to_ten). -export([count_to_ten/0]). count_to_ten() -> do_count(0). do_count(10) -> 10; do_count(N) -> do_count(N + 1).
Faktöriyel algoritmasının Erlang dilinde gerçeklemesi:
-module(fact). % This is the file 'fact.erl', the module and the filename must match -export([fac/1]). % This exports the function 'fac' of arity 1 (1 parameter, no type, no name) fac(0) -> 1; % If 0, then return 1, otherwise (note the semicolon ; meaning 'else') fac(N) when N > 0, is_integer(N) -> N * fac(N-1). % Recursively determine, then return the result % (note the period . meaning 'endif' or 'function end') %% This function will crash if anything other than a nonnegative integer is given. %% It illustrates the "Let it crash" philosophy of Erlang.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Erlang Ericsson firmasi tarafindan 1986 da Joe Armstrong Robert Virding ve Mike Williams onderliginde gelistirilen genel amacli general purpose es zamanli concurrent dinamik dynamic typing fonksiyonel ve atik toplama garbage collected ozelligine sahip olan bir dildir Erlang veya alternatifi olan Erlang OTP seklinde tanimlamalar da kullanilabilir Erlang OTP isleyis surecinin bir parcasidir ve bircok kullanima hazir komponent bilesen sunmaktadir Erlang OTP bilesenlerinin bircogu Erlang programlama dili ile yazilmistir Erlang OTP bunlarin yaninda bir dizi tasarim prensipleri de sunmaktadir Erlang programlama dili ParadigmasiCok paradigmali Eszamanli FonksiyonelIlk cikisi1986TasarimciJoe Armstrong Robert Virding Mike WilliamsGelistiriciEricssonKararli surum26 2 1 18 Aralik 2023 dinamik gucluEtkilendikleriLisp Prolog SmalltalkEtkiledikleriClojure Dart Elixir F Rust Scala GoLisansApache License 2 0Olagan dosya uzantilari erl hrlWeb sitesierlang org Erlang ile yazilan sistemler asagidaki listedeki ozelliklere sahip olunmasi amaclandiginda cok guclu bir rol oynamaktadir Erlang calisma zamani sistemi asagidaki ozelliklere sahip sistemler icin tasarlanmistir Dagitik Distributed Arizaya dayaniklilik Fault tolerant Gercek zaman sistemleri Real time Yuksek erisilebilirlik Highly available non stop applications Hizli Degis Tokus Hot swapping calisan sistemde kod degistirildigi zaman tekrar yeniden baslatilmaya ihtiyac duyulmayan Dilin temel aldigi onemli 3 adet ozellik vardir Bunlar sirasiyla degismez veri Immutable data model eslesme Pattern matching ve fonksiyonel programlamadir Aktor Model Actor Model tasarim oruntusunu benimseyen yapisi sayesinde karmasik ve cok buyuk derecede es zamanli uygulamalarin gelistirilmesi diger dillere gore daha kolay bir hal almaktadir Siradan bir Erlang yuzlerce kucuk Erlang surecinden meydana gelir Kod ornekleriOzyineleme recursion yontemi ile 10 a kadar sayan bir fonksiyon module count to ten export count to ten 0 count to ten gt do count 0 do count 10 gt 10 do count N gt do count N 1 Faktoriyel algoritmasinin Erlang dilinde gerceklemesi module fact This is the file fact erl the module and the filename must match export fac 1 This exports the function fac of arity 1 1 parameter no type no name fac 0 gt 1 If 0 then return 1 otherwise note the semicolon meaning else fac N when N gt 0 is integer N gt N fac N 1 Recursively determine then return the result note the period meaning endif or function end This function will crash if anything other than a nonnegative integer is given It illustrates the Let it crash philosophy of Erlang