İçeriğe atla

Erlang (programlama dili)

Erlang (programlama dili)
Erlang logo
ParadigmasıÇok paradigmalı
Eşzamanlı
Fonksiyonel
İlk çıkışı1986
TasarımcıJoe Armstrong, Robert Virding, Mike Williams
GeliştiriciEricsson
Kararlı sürüm27.0.1[1] Bunu Vikiveri'de düzenleyin (10 Temmuz 2024 (3 ay önce) (10 Temmuz 2024))
EtkilendikleriLisp
Prolog
Smalltalk
EtkiledikleriClojure
Dart
Elixir
F#
Rust
Scala
Go
LisansApache License 2.0
Olağan dosya uzantıları.erl, .hrl
Web sitesierlang.org

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.

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:

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.
  1. ^ "Release 27.0.1". 10 Temmuz 2024. Erişim tarihi: 19 Temmuz 2024. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

Fortran, özellikle sayısal hesaplama ve bilimsel hesaplama için uygun olan genel amaçlı, yordamsal, zorunlu programlama dilidir.

<span class="mw-page-title-main">Haskell</span> matematiksel, fonksiyonel programlama dili

Haskell, isim babası matematikçi Haskell Curry olan arı işlevsel programlama dilidir. Haskell'i birçok programlama dilinden ayıran özellikleri tembel değerlendirme, monadlar ve tür sınıflarıdır. Haskell, Miranda dilinin semantikleri üzerine kuruludur. Akademide ve endüstride yoğun olarak kullanılmaktadır.

Paralel hesaplama ya da Koşut hesaplama, aynı görevin, sonuçları daha hızlı elde etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.

Faktöriyel, matematikte, sağına ünlem işareti konulmuş sayıya verilen isim, daha genel olan Gama fonksiyonunun tam sayılarla sınırlanmış özel bir durumudur. Bu sınırlamanın nedeni gerçek veya reel sayılarda bu hesabın imkansız oluşudur. 1'den başlayarak belirli bir sayma sayısına kadar olan sayıların çarpımına o sayının faktöriyeli denir. Basit bir şekilde faktöriyel, n tane ayrık elemanın kaç farklı şekilde sıralanabileceğidir.

<span class="mw-page-title-main">Monte Carlo yöntemi</span>

Monte Carlo benzetimi, çok sayıda tekrarlanan rastgele örneklemelerle, bir takım nümerik sonuçlar elde etmeye yarayan ve bilimin birçok alanında yaygın olarak kullanılan bir sayısal hesaplama algoritmaları sınıfıdır. Stokastik olayların yer aldığı fiziksel süreçlerin sonuçlarının tahmin edilmesinde çok kullanışlıdır. Ayrıca, rastgele seçimlerin işe yaradığı ve prensipte deterministik olan bir takım problemlerin çözümünde de kullanılmaktadır. Monte-Carlo yöntemi, Nicholas Constantine Metropolis (1915-1999) tarafından bulunmuştur ve Atom bombasının geliştirildiği Los Alamos Ulusal Labratuvarında, bombanın patlamasından sonra dağılan nötronlara karşı kalkan modellemek için Stanislaw Ulam tarafından günümüze taşınmıştır.

<span class="mw-page-title-main">Document Object Model</span>

Document Object Model, "DOM", "Belge Nesnesi Modeli" anlamlarına da gelmektedir. İnternet tarayıcıları girilen internet sitesini bir belge, bu belge (sayfa) içerisinde bulunan tüm elemanları da nesne olarak kabul eder. Buna göre resim, yazı, form gibi tüm elemanlar nesnedir. İşte DOM sayfa içindeki herhangi bir nesnenin özelliğine müdahale edebilmemize, nesne özelliklerini değiştirebilmemize olanak sağlar. Bunu yapabilmek için de JavaScript gibi bazı script dilleri kullanmamız gerekir.

<span class="mw-page-title-main">Yığın sıralaması</span>

Yığın Sıralaması, bilgisayar bilimlerinde kullanılan karşılaştırmaya dayalı bir sıralama algoritmasıdır. Uygulamada pek çok bilgisayarda hızlı sıralama algoritmasından daha yavaş çalışsa da en kötü durumda O(n log n) çalışma süresi vardır. Yığın sıralaması diziyi yerinde sıralar ancak kararlı bir sıralama algoritması değildir.

Programlama dili teorisi (PDT), programlama dilleri olarak bilinen biçimsel dillerin ve bunların bireysel özelliklerinin tasarımı, uygulanması, analizi, karakterizasyonu ve sınıflandırılması ile ilgilenen bir bilgisayar bilimleri dalıdır. Matematik, yazılım mühendisliği, dilbilim ve hatta bilişsel bilime bağlı ve onu etkileyen bilgisayar bilimi disiplinine girer. PDT'ye adanmış çok sayıda dergide ve genel bilgisayar bilimi ve mühendisliği yayınlarında yayınlanan sonuçlarla tanınmış bir bilgisayar bilimi dalı ve aktif bir araştırma alanı haline gelmiştir.

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

<span class="mw-page-title-main">Geriye uyumluluk</span>

Telekomünikasyon ve bilişim teknolojisinde yeni aygıtların eski aygıtlar tarafından üretilmiş girdileri çalıştırabilme yeteneğine geriye uyumluluk denir. Yeni standartlar için tasarlanmış bir ürün eski standartlara erişebiliyor, okuyor veya oynatabiliyorsa o ürüne geriye uyumludur denir. Örneğin veri biçimleri ve iletişim protokolünü içeren standartlar gibi.

<span class="mw-page-title-main">MATLAB</span>

MATLAB, çok paradigmalı sayısal hesaplama yazılımı ve dördüncü nesil programlama dilidir. Özel mülk bir programlama dili olan MATLAB, MathWorks tarafından geliştirilmektedir. MATLAB kullanıcıya, matris işleme, fonksiyon ve veri çizme, algoritma uygulama, kullanıcı arayüzü oluşturma, C, C++, Java ve Fortran gibi diğer dillerde yazılmış programlarla arabağlama imkânı tanır.

Öklid'in teoremi, sayılar teorisinde temel bir ifade olup sonsuz sayıda asal sayı olduğunu ileri sürer. Teoremin iyi bilinen farklı ispatları bulunmaktadır.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Elixir</span>

Elixir, fonksiyonel, eş zamanlı (concurrent), genel amaçlı Erlang Sanal Makinesi üzerinde çalışan bir dildir. Erlang üzerine kurulmuş bir dil olduğu için dağıtık (distributed), arızalara dayanıklı (fault-tolerant) sistemler yazılır iken Erlang ile aynı soyut (abstractions) yaklaşımları paylaşabilmektedir. Elixir üretken çok yönlü araç gereçler ve genişletilebilinir tasarım modeli sağlamaktadır. Daha sonralarında dile 2 adet çok önemli özellik eklenmiştir bunlar sırasıyla derleme anında meta programlama (compile-time metaprogramming) güçlü bir macro sistemini mümkün kılan ve protokoller aracılığı ile çok biçimliliktir (polymorphism).

Argon2, Temmuz 2015'te Parola Özetleme Yarışmasının galibi olarak seçilen anahtar türetme fonksiyonudur. Lüksemburg Üniversitesi'nden Alex Biryukov, Daniel Dinu ve Dmitry Khovratovich tarafından tasarlanmıştır. Argon2'nin referans uygulaması, CC0 lisansı veya Apache License 2.0 altında yayınlanmış ve üç ilgili sürüm sağlamıştır:

Paroslu Thymaridas antik bir Pisagorcu Yunan matematikçi. Asal sayılar ve eşzamanlı doğrusal denklemler üzerine yaptığı çalışmalarla dikkat çekti.

<span class="mw-page-title-main">Samsung Galaxy J5 (2017)</span>

Samsung Galaxy J5 (2017); Samsung Electronics tarafından üretilen, satılan ve pazarlanan, Samsung Galaxy J serisi'ne ait Android işletim sistemini kullanan bir akıllı telefondur. Cihaz, Samsung Galaxy J3 (2017) ile beraber Temmuz 2017'de tanıtılmış ve satışa çıkarılmıştır. Cihazda, 2 veya 3 GB LPDDR3 RAM ile desteklenen 64 bit bir çip bulunur. Cihazda, 3000 mAh çıkarılamayan batarya bulunur. Samsung Galaxy J5 (2016) ve Samsung Galaxy J5 Prime modellerinin halefidir.

Bilgisayar biliminde, bildirimsel programlama bir programlama paradigmasıdır. —bilgisayar programlarının yapısını ve öğelerini oluşturma stili— bir hesaplamanın mantığını kontrol akışını tanımlamadan ifade eder.

Zeno, öğrenmesi kolay ve kullanıcı dostu olacak şekilde tasarlanmış zorunlu bir prosedürel programlama dilidir.