İçeriğe atla

Scala (programlama dili)

Scala (programlama dili)
Scala-full-color
ParadigmasıÇok paradigmalı; fonksiyonel, nesne yönelimli, emirsel (imperative)
İlk çıkışı20 Ocak 2004 (20 yıl önce) (2004-01-20)
TasarımcıMartin Odersky
Geliştiriciİsviçre Federal Teknoloji Enstitüsü Lozan Programlama Yöntemleri Laboratuvarı
Kararlı sürüm3.5.0[1] Bunu Vikiveri'de düzenleyin (22 Ağustos 2024)
EtkilendikleriErlang, Haskell, Java, F#, Scheme
EtkiledikleriF#, C#, Kotlin
PlatformuJava Sanal Makinesi (JVM) JavaScript (Scala.js)
LisansApache 2.0
Olağan dosya uzantıları.scala, .sc
Web sitesiscala-lang.org

Scala, hem nesne yönelimli programlamayı hem de fonksiyonel programlamayı destekleyen, statik olarak yazılmış güçlü bir genel amaçlı programlama dilidir. Kısa ve öz olacak şekilde tasarlanan[2] Scala'nın tasarım kararlarının çoğu Java eleştirilerini ele almayı amaçlıyor.

Scala kaynak kodu Java bayt koduna derlenebilir ve bir Java sanal makinesinde (JVM) çalıştırılabilir. Scala ayrıca bir tarayıcıda veya doğrudan yerel bir yürütülebilir dosyada çalıştırılmak üzere JavaScript'e derlenebilir. JVM'de Scala, her iki dilde yazılmış kitaplıklara doğrudan Scala veya Java üzerinden ulaşılabilmesi için Java ile birlikte çalışabilirliği sağlar. Java gibi, Scala da nesne yönelimlidir ve C diline benzeyen küme ayracı olarak adlandırılan bir sözdizimi kullanır.[3] Scala 3'ten beri, blokları yapılandırmak için girinti kullanma seçeneği de vardır ve kullanılması tavsiye edilir. Martin Odersky, bunun Scala 3'te sunulan en verimli değişiklik olduğunu söyledi.[4]

Java'dan farklı olarak Scala, körleme, değişmezlik, tembel değerlendirme ve kalıp eşleştirme dahil olmak üzere fonksiyonel programlama dillerinin (Scheme, Standard ML ve Haskell gibi) birçok özelliğine sahiptir. Ayrıca cebirsel veri türlerini, kovaryans ve kontravaryansı, higher-order types (ancak higher-rank types değil), anonim türleri, operatör aşırı yüklemesini, isteğe bağlı parametreleri, adlandırılmış parametreleri, ham dizeleri ve yalnızca deneysel bir istisnayı destekleyen gelişmiş bir tür sistemine sahiptir.[5]

Scala adı, ölçeklenebilirlik ve dilin bir portmanteau olup, kullanıcılarının talepleriyle büyümek üzere tasarlandığını ifade eder.[6]

Kaynakça

  1. Scala'nın sitesi23 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.
  1. ^ Hata: Referans düzgün görüntülenemiyor. Bilgi için belgeleme sayfasına bakınız.
  2. ^ Potvin, Pascal; Bonja, Mario (24 Eylül 2015). An IMS DSL Developed at Ericsson. Lecture Notes in Computer Science. 7916. arXiv:1509.07326 $2. doi:10.1007/978-3-642-38911-5. ISBN 978-3-642-38910-8. 
  3. ^ "Frequently Asked Questions: Java Interoperability". Scala-lang.org. 17 Ağustos 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Şubat 2015. 
  4. ^ Martin Odersky (17 Haziran 2020). Martin Odersky: A Scala 3 Update (video) (İngilizce). YouTube. Etkinlik zamanı: 36.35-45.08. 21 Aralık 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Nisan 2021. 
  5. ^ "Effect expt". scala. 20 Ekim 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 31 Temmuz 2022. 
  6. ^ Loverdo, Christos (2010). Steps in Scala: An Introduction to Object-Functional Programming. Cambridge University Press. s. xiii. ISBN 9781139490948. 12 Eylül 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 31 Temmuz 2014. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Ada (programlama dili)</span> programlama dili

Ada, yapısal, statik tipli, zorunlu, geniş spektrumlu ve nesne yönelimli bir üst düzey bilgisayar programlama dilidir. Pascal ve diğer dillerin genişletilmiş halidir. Gömülü design-by-contract (DbC), güçlü yazımı, açık eşzamanlı, senkronize mesaj geçişi, korunmuş objeli ve belirsiz bir dildir. Ada kod güvenliğini ve sürdürebilirliğini derleyicide hataları bularak geliştirdi.

Objective-C, C'nin üzerine yazılmış, yansımalı, nesne yönelimli bir programlama dilidir. ObjC, Objective C ve Obj-C olarak da anılır.

<span class="mw-page-title-main">Nesne yönelimli programlama</span> nesne kavramına dayalı programlama paradigması

Nesne yönelimli programlama veya kısaca NYP, Her işlevin nesneler olarak soyutlandığı bir programlama yaklaşımıdır. NYP destekleyen programlama dilleri yüksek seviye diller olarak adlandırılır.

Yorumlanan programlama dili bilgisayar programlamada yazılan programların çalışabilmeleri için kaynak kodlarının bir yorumlayıcı tarafından yorumlanması gerektiğini ifade etmektedir. "Interpreted programming language" olarak da geçmektedir.

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

Groovy, Java platformu (JVM) üzerinde çalışan bir programlama dilidir. Groovy, imperative, nesne odaklı, dinamik tipli diller sınıfındadır.

Cephe yönelimli programlama veya ilgiye yönelik programlama, çapraz kesim işlerini bölerek modülerliği artırmayı amaçlayan bir programlama yaklaşımıdır. Bütün programlama yaklaşımlarında kodlar uzadıkça, kodların anlaşılabilirliği çok düşmekte, bazen de içinden çıkılmaz bir hal almaktadır. Programlamanın varlığıyla birlikte bu sorun da hep var olmuştur. Bu sorunla savaşabilmek için sürekli çalışmalar devam etmektedir, bu süreçte ortaya çıkan önemli bir programlama yaklaşımı da Cephe Yönelimli Programlamadır.

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">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

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

Processing, dijital sanat ve görsel tasarım toplulukları tarafından programlamanın temellerini görsel bir yaklaşımla öğretmek için kullanılan veya elektronik bir eskiz defteri görevi de görebilen açık kaynaklı bir programlama dili ve tümleşik geliştirme ortamıdır (IDE). 2001 yılında Casey Reas ve Benjamin Fry tarafından başlatılan proje Java üzerine kurulmuş olup daha basit bir grafik programlama modeli ve sözdizimine sahiptir.

Java bytecode, Java Programlama Dili'nde Java derleyicinin Java kodlarını makine dili yerine kendi alternatif biçime derlediği bytecode adı verilen binary dosyadır. Bu program Java Sanal Makinesi (JVM) adı verilen bir hayali bilgisayarın makine kodunu yaratır. Bu şekilde oluşturulmuş olan bytecode makine diline yorumlayıcı programlar vasıtasıyla çevrilir. Bytecode'unu kullanmanın bir avantajı JVM ile yorumlanan bu kodun herhangi bir derleme işlemine tabi tutulmadan bütün bilgisayarlarda çalışabilecek duruma gelmesidir. Dolayısıyla Java Programlama Dili internet uygulamaları için mantıklı bir kullanılma nedeni oluşturmaktadı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.

Kotlin, Java sanal makinesi (JVM) üzerinde çalışan ayrıca JavaScript kaynak koduna veya LLVM ile makine koduna derlenebilen, statik tipli bir programlama dilidir. İlk geliştirme Sankt-Peterburg, Rusya merkezli JetBrains programcıları tarafından yapılmıştır. İsmi Kotlin Adası'ndan gelmektedir. Java ile uyumlu sözdizimi olmasa da, Kotlin Java kodu ile birlikte çalışmak üzere tasarlanmıştır. Kotlin, Apple'ın Swift diline benzemektedir.

<span class="mw-page-title-main">Kristen Nygaard</span> Norveçli bilgisayar bilimcisi, programlama dili tasarımcısı ve siyasetçi

Kristen Nygaard Norveçli bir bilgisayar bilimcisi, programlama dili öncüsü ve politikacıydı. Uluslararası alanda Nygaard, 1960'larda Ole-Johan Dahl ile nesne yönelimli programlamanın ve Simula programlama dilinin ortak mucidi olarak kabul edilmektedir. Nygaard ve Dahl, bilgisayar bilimine yaptıkları katkılardan dolayı 2001 A. M. Turing Ödülü'nü, 2002 yılında IEEE John von Neumann Madalyası'nı kazanmıştır.

Objective-J, [ Cappuccino web] geliştirme çerçevesinin bir parçası olarak geliştirilmiş bir programlama dilidir. Sözdizimi Objective-C sözdizimi ile hemen hemen aynıdır ve JavaScript ile Objective-C'nin C programlama diliyle aynı ilişkiyi paylaşır: katı, ancak küçük bir üst küme olmak; geleneksel kalıtım ve Smalltalk / Objective-C tarzı dinamik gönderim ekleniyor. Prototip tabanlı bir dil olan Pure JavaScript zaten nesne yönelimi ve miras kavramına sahiptir, ancak Objective-J JavaScript'e sınıf tabanlı programlama kullanımını ekler.Objective-J ile yazılmış programların, bir web tarayıcısının JavaScript sanal makinesi tarafından çalıştırılmadan önce önceden işlenmesi gerekir. Bu adım, çalışma zamanında web tarayıcısında veya Objective-J programlarını saf JavaScript koduna çeviren bir derleyici tarafından gerçekleşebilir. Objective-J derleyicisi JavaScript dilinde yazılmıştır; Sonuç olarak, Objective-J programlarını dağıtmak için bir web tarayıcısı eklentisi gerekmez. Objective-J, Node.js üzerinde derlenebilir ve çalıştırılabilir.

Microsoft Windows uygulama programlamasında, OLE Otomasyonu, Microsoft tarafından oluşturulan süreçler arası bir iletişim mekanizmasıdır. Başlangıçta Visual Basic olan komut dosyası dilleri tarafından kullanılması amaçlanan Bileşen Nesne Modeli'nin (COM) bir alt kümesine dayanmaktadır, ancak şimdi Windows'ta birkaç dil tarafından kullanılmaktadır. IDispatch arabirimini uygulamak için tüm otomasyon nesneleri gereklidir. Otomasyon denetleyicileri adı verilen uygulamaların, diğer uygulamalar tarafından dışa aktarılan paylaşılan otomasyon nesnelerine erişebildiği ve bunları değiştirebildiği bir altyapı sağlamaktadır. Uygulamaların birbirini kontrol etmesi için daha eski bir mekanizma olan Dinamik Veri Değişimi'nin (DDE) yerini almaktadır. DDE'de olduğu gibi, OLE Otomasyonunda otomasyon denetleyicisi "istemci"dir ve otomasyon nesnelerini dışa aktaran uygulama "sunucu"dur.