Erlang Programlama Dili

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 aynı zamanda atık toplama(garbage-collected) özelliğine sahip olan bir dildir. Erlang veya alternatifi olan Erlang/OTP şeklinde tanımlamalarda kullanılabilinir. OTP Erlang işleyiş sürecinin bir parçasıdır ve birçok kullanıma hazır komponent/bileşen sunmaktadır ve bunların birçoğu Erlang programlama dili ile yazılmıştırlar bunun yanında birçok tasarım prensipleri de sunmaktadır.

Erlang ile yazılan sistemler aşağıdaki listedeki özelliklere sahip olunması amaçlandığında çok güçlü bir rol oynamaktadır:

  • Dağıtık(Distributed)
  • Arıza Tolerans(Fault-tolerant)
  • Gerçek Zamanlı(Real-time)
  • Durmayan sürekli aktif uygulamalar(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 Mode) tasarım modelini benimseyen yapısıyla 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.

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).
				
			

Erlang Faktöriyel algoritması

				
					-module(fact). % Bu 'fact.erl' dosyasıdır, modül ve dosya adı eşleşmelidir
				
			
				
					-export([fac/1]). % Bu, arity 1'in 'fac' işlevini dışa aktarır (1 parametre, tür yok, ad yok)
				
			
				
					fac(0) -> 1; % 0 ise, 1 döndür, aksi takdirde (noktalı virgülü not edin; 'else' anlamına gelir)
				
			
				
					fac(N) when N > 0, is_integer(N) -> N * fac(N-1). % Özyinelemeli olarak belirle, ardından sonucu döndür % (noktaya dikkat edin. 'endif' veya 'işlev sonu' anlamına gelir) %% Negatif olmayan bir tamsayı dışında bir şey verilirse bu işlev çökecektir. %% Erlang'ın "Bırakın çöksün" felsefesini gösterir. 
				
			

Etikeler