İçeriğe atla

Scala (programlama dili): Revizyonlar arasındaki fark

Vikipedi, özgür ansiklopedi
[kontrol edilmiş revizyon][kontrol edilmiş revizyon]
İçerik silindi İçerik eklendi
YBot (mesaj | katkılar)
St. Doggo (mesaj | katkılar)
kaynak
1. satır: 1. satır:
'''Scala,''' hem [[Nesne yönelimli programlama dili|nesne yönelimli programlamayı]] hem de [[Fonksiyonel programlama|fonksiyonel programlamayı]] destekleyen, [[Statik (anlam ayrımı)|statik]] olarak yazılmış güçlü bir genel amaçlı [[Programlama dili|programlama dilidir.]] Kısa ve öz olacak şekilde tasarlanan '''Scala'''<nowiki/>'nın tasarım kararlarının çoğu [[Java (programlama dili)|Java]] eleştirilerini ele almayı amaçlıyor.
'''Scala,''' hem [[Nesne yönelimli programlama dili|nesne yönelimli programlamayı]] hem de [[Fonksiyonel programlama|fonksiyonel programlamayı]] destekleyen, [[Statik (anlam ayrımı)|statik]] olarak yazılmış güçlü bir genel amaçlı [[Programlama dili|programlama dilidir.]] Kısa ve öz olacak şekilde tasarlanan<ref>{{Cite book|title=An IMS DSL Developed at Ericsson|date=24 September 2015|series=Lecture Notes in Computer Science|volume=7916|isbn=978-3-642-38910-8|doi=10.1007/978-3-642-38911-5|arxiv=1509.07326|last1=Potvin|first1=Pascal|last2=Bonja|first2=Mario|s2cid=1214469}}</ref> Scala'nın tasarım kararlarının çoğu [[Java (programlama dili)|Java]] eleştirilerini ele almayı amaçlıyor.


Scala kaynak kodu [[Java (programlama dili)|Java]] [[Bytecode|bayt koduna]] [[Derleyici|derlenebilir]] ve bir [[Java sanal makinesi|Java sanal makinesinde (JVM)]] çalıştırılabilir. '''Scala''' ayrıca bir [[Tarayıcı|tarayıcıda]] veya doğrudan yerel bir yürütülebilir dosyada çalıştırılmak üzere [[JavaScript]]'e derlenebilir. [[Java sanal makinesi|JVM]]'de '''Scala''', her iki dilde yazılmış kitaplıklara doğrudan '''Scala''' veya [[Java (programlama dili)|Java]] üzerinden ulaşılabilmesi için [[Java (programlama dili)|Java]] ile birlikte çalışabilirliği sağlar. [[Java (programlama dili)|Java]] gibi, '''Scala''' da [[Nesne yönelimli programlama|nesne yönelimli]]dir ve [[C (programlama dili)|C dili]]ne benzeyen [[küme ayracı]] olarak adlandırılan bir [[Sözdizim|sözdizimi]] kullanır. '''Scala 3'''<nowiki/>'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'''<nowiki/>'te sunulan en verimli değişiklik olduğunu söyledi.
Scala kaynak kodu [[Java (programlama dili)|Java]] [[Bytecode|bayt koduna]] [[Derleyici|derlenebilir]] ve bir [[Java sanal makinesi|Java sanal makinesinde (JVM)]] çalıştırılabilir. Scala ayrıca bir [[Tarayıcı|tarayıcıda]] veya doğrudan yerel bir yürütülebilir dosyada çalıştırılmak üzere [[JavaScript]]'e derlenebilir. [[Java sanal makinesi|JVM]]'de Scala, her iki dilde yazılmış kitaplıklara doğrudan Scala veya [[Java (programlama dili)|Java]] üzerinden ulaşılabilmesi için [[Java (programlama dili)|Java]] ile birlikte çalışabilirliği sağlar. [[Java (programlama dili)|Java]] gibi, Scala da [[Nesne yönelimli programlama|nesne yönelimli]]dir ve [[C (programlama dili)|C dili]]ne benzeyen [[küme ayracı]] olarak adlandırılan bir [[Sözdizim|sözdizimi]] kullanır.<ref>{{cite web|url=https://www.scala-lang.org/old/faq/4|title=Frequently Asked Questions: Java Interoperability|access-date=2015-02-06|website=Scala-lang.org|author=<!--Staff writer(s); no by-line.-->}}</ref> 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.<ref>{{Cite AV media|people=Martin Odersky|date=17 June 2020|title=Martin Odersky: A Scala 3 Update|medium=video|language=en|url=https://www.youtube.com/watch?v=Z0w_pITUTyU|archive-url=https://ghostarchive.org/varchive/youtube/20211221/Z0w_pITUTyU|archive-date=2021-12-21|url-status=live|time=36:35–45:08|publisher=YouTube|access-date=2021-04-24}}{{cbignore}}</ref>


[[Java (programlama dili)|Java]]'dan farklı olarak '''Scala''', [[:en:Currying|körleme]], [[:en:Immutability|değişmezlik]], [[:en:Lazy_evaluation|tembel değerlendirme]] ve [[:en:Pattern_matching|kalıp eşleştirme]] dahil olmak üzere [[Fonksiyonel programlama|fonksiyonel programlama dillerinin]] ([[Scheme]], [[Standart ML|Standard ML]] ve [[Haskell]] gibi) birçok özelliğine sahiptir. Ayrıca cebirsel veri türlerini, [[kovaryans]] ve [[kontravaryansı]], [[:en:Higher-order_type_operator|higher-order types]] (ancak [[:en:Parametric_polymorphism|higher-rank types]] değil), [[:en:Anonymous_type|anonim türler]]i, [[:en:Operator_overloading|operatör aşırı yüklemesi]]ni, isteğe bağlı parametreleri, [[:en:Named_parameter|adlandırılmış parametreleri,]] [[:en:Raw_string|ham dizeleri]] ve yalnızca deneysel bir istisnayı destekleyen gelişmiş bir tür sistemine sahiptir.
[[Java (programlama dili)|Java]]'dan farklı olarak Scala, [[:en:Currying|körleme]], [[:en:Immutability|değişmezlik]], [[:en:Lazy_evaluation|tembel değerlendirme]] ve [[:en:Pattern_matching|kalıp eşleştirme]] dahil olmak üzere [[Fonksiyonel programlama|fonksiyonel programlama dillerinin]] ([[Scheme]], [[Standart ML|Standard ML]] ve [[Haskell]] gibi) birçok özelliğine sahiptir. Ayrıca cebirsel veri türlerini, [[kovaryans]] ve [[kontravaryansı]], [[:en:Higher-order_type_operator|higher-order types]] (ancak [[:en:Parametric_polymorphism|higher-rank types]] değil), [[:en:Anonymous_type|anonim türler]]i, [[:en:Operator_overloading|operatör aşırı yüklemesi]]ni, isteğe bağlı parametreleri, [[:en:Named_parameter|adlandırılmış parametreleri,]] [[:en:Raw_string|ham dizeleri]] ve yalnızca deneysel bir istisnayı destekleyen gelişmiş bir tür sistemine sahiptir.<ref>{{Cite web|url=https://docs.scala-lang.org/scala3/reference/experimental/canthrow.html|title=Effect expt|access-date=2022-07-31|website=scala}}</ref>


'''Scala''' adı, [[ölçeklenebilirlik]] ve dilin bir [[portmanteau]] olup, kullanıcılarının talepleriyle büyümek üzere tasarlandığını ifade eder.
'''Scala''' adı, [[ölçeklenebilirlik]] ve dilin bir [[portmanteau]] olup, kullanıcılarının talepleriyle büyümek üzere tasarlandığını ifade eder.<ref name="StepsInScala">{{cite book|url=https://books.google.com/books?id=vZAfN_Vk2i0C&q=%22steps+in+scala%22&pg=PR13|title=Steps in Scala: An Introduction to Object-Functional Programming|access-date=31 July 2014|date=2010|page=xiii|publisher=[[Cambridge University Press]]|isbn=9781139490948|last=Loverdo|first=Christos}}</ref>


== Kaynakça ==
== Kaynakça ==

Sayfanın 14.55, 12 Eylül 2022 tarihindeki hâli

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[1] 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.[2] 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.[3]

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.[4]

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

Kaynakça

  1. Scala'nın sitesi23 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.
  1. ^ Potvin, Pascal; Bonja, Mario (24 September 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. 
  2. ^ "Frequently Asked Questions: Java Interoperability". Scala-lang.org. Erişim tarihi: 2015-02-06. 
  3. ^ Martin Odersky (17 June 2020). Martin Odersky: A Scala 3 Update (video) (İngilizce). YouTube. Etkinlik zamanı: 36:35–45:08. 2021-12-21 tarihinde kaynağından arşivlendi. Erişim tarihi: 2021-04-24. 
  4. ^ "Effect expt". scala. Erişim tarihi: 2022-07-31. 
  5. ^ Loverdo, Christos (2010). Steps in Scala: An Introduction to Object-Functional Programming. Cambridge University Press. s. xiii. ISBN 9781139490948. Erişim tarihi: 31 July 2014.