Kontentke ótiw

Kotlin (programmalastırıw tili)

Wikipedia — erkin enciklopediya

Kotlin [1] – kross-platformalı, statikalıq túrde terilgen, ulıwma maqsetli joqarı dárejeli programmalastırıw tili. Kotlin Java menen tolıq jumıs islewge arnalǵan hám Kotlinniń standart kitapxanasınıń JVM versiyası Java klass kitapxanasına baylanıslı, biraq hátte juwmaqlaw onıń sintaksisin anaǵurlım qısqa qılıwǵa imkaniyat beredi. Kotlin tiykarınan JVM-ge baǵdarlanǵan, biraq sonıń menen birge JavaScript-ke kompilyaciya isleydi (mısalı, React járdemi menen veb-qosımshalar ushın)[2] yamasa LLVM arqalı jergilikli kod (mısalı, Android qosımshaları menen biznes logikasın ulıwma paydalanatuǵın jergilikli iOS qosımshaları ushın)[3]. Tildi rawajlandırıw shıǵınların JetBrains qaplaydı, al Kotlin Foundation Kotlin sawda belgisin qorǵaydı[4].

2019-jıl 7-mayda Google Kotlin programmalastırıw tili Android qosımshasın jaratıwshılar ushın eń qolaylı til ekenin járiyaladı. 2017-jıl oktyabr ayında Android Studio 3.0 versiyası shıqqannan berli Kotlin standart Java kompilyatorına alternativ retinde qosıldı. Android Kotlin kompilyatorı ádepki boyınsha Java 8 bayt kodın shıǵaradı (ol hár qanday keyingi JVM sistemasında jumıs isleydi), biraq baǵdarlamashıǵa optimallastırıw ushın Java 9-dan 20-ǵa deyingi maqsetli tańlawǵa imkaniyat beredi[5], yamasa qosımsha imkaniyatlarǵa ruqsat beredi; Java 16 sistemasına engizilgen Kotlin 1.5 versiyası bolsa, turaqlı bolıp esaplanatuǵın JVM ushın eki baǵdarlı jazba klasınıń óz-ara háreketlesiwin qollaydı.

Kotlin 1.3 versiyasınan baslap turaqlı dep járiyalaǵan klassikalıq awdarmashı tiykarında server yamasa 1.8 versiyasınan baslap turaqlı dep járiyalanǵan aralıq wákillikke tiykarlanǵan server arqalı Kotlin/JS járdemi menen vebti qollaydı. Kotlin/Native (mısalı, Apple kremniy qollawı ushın) 1.3 versiyasınan baslap beta bolıp esaplanadı[6][7].

Kotlin maskotınıń 2D (ólshemli) súwreti
Kotlin maskotınıń 3D (ólshemli) súwreti

Bul at Sankt-Peterburg qasındaǵı Finlyandiya shıǵanaǵındaǵı orıs atawı bolǵan Kotlin atawınan alınǵan. Kotlinniń burınǵı jetekshi dizayneri Andrey Breslavtıń komandası onı atawdıń atın beriwdi sheshkenin ayttı, Java programmalastırıw tili Indoneziyanıń Yava atawınıń húrmetine qoyılǵanı sıyaqlı[8] (biraq tildiń ataması kofege arnalǵan amerikalı jargon termini «java» arqalı ilhamlandırılǵan delinedi[9], ol ataw atamasınan kelip shıqqan)[10].

Rawajlandırıw

[redaktorlaw | derekti redaktorlaw]

2011-jıl iyulda JetBrains bir jıl dawamında islep shıǵarıp atırǵan JVM ushın jańa Project Kotlin tilin ashtı[11]. JetBrains jetekshisi Dmitriy Djemerov Scala tilinen basqa tillerdiń kópshiliginde olar izlegen imkaniyatlar joq ekenin ayttı. Degen menen, ol kemshilik retinde Scala-nıń kompilyaciyalaw waqtı ásten ekenin atap ótti[11] Kotlinniń aldaǵı maqsetleriniń biri - Java sıyaqlı tez kompilyaciya qılıw bolıp tabıladı. 2012-jıl fevralda JetBrains proektti Apache 2 licenziyası boyınsha ashtı.[12].

JetBrains jańa til IntelliJ IDEA satıwın kóteredi dep úmitlendi[13].

Kotlin Git repozitoriyine birinshi minnetleme 2010-jıl 8-noyabrde boldı[14].

Kotlin 1.0 2016-jıl 15-fevralda shıǵarıldı[15]. Bul birinshi rásmiy turaqlı shıǵarılım bolıp esaplanadı hám JetBrains usı versiyadan baslap uzaq múddetti keri úylesimlikke minnetledi.

Google I/O 2017 kórgizbesinde Android sistemasında Kotlinge birinshi dárejeli qollaw bildiretuǵının járiyaladı[16].

Kotlin 1.2 2017-jıl 28-noyabrde shıǵarıldı[17]. JVM hám JavaScript platformaları arasında kodtı bólisiw imkaniyatı usı shıǵarılımǵa jańadan qosıldı (kóp platformalı programmalastırıw házir beta imkaniyatı bolıp tabıladı[18] «eksperimentlik» versiyasınan jańalandı). Jańa Kotlin/JS Gradle Plugin járdemi menen tolıq demonstraciya islendi[19][20].

Kotlin 1.3 2018-jıl 29-oktyabrde shıǵarıldı, ol asinxronlı programmalastırıw ushın korutinlerdi ákeldi[21].

2019-jıl 7-mayda Google Kotlin programmalastırıw tilin Android qosımshasın jaratıwshılar ushın tańlanǵan til ekenin járiyaladı[22].

Kotlin 1.4 2020-jıl avgustte shıǵarıldı, mısalı: Apple platformaların qollawǵa, yaǵnıy Objective-C/Swift interfeysine ayırım shamalı ózgerislerdi qostı[23].

Kotlin 1.5 2021-jıl mayda shıǵarıldı.

Kotlin 1.6 2021-jıl noyabrde shıǵarıldı.

Kotlin 1.7 jańa Kotlin K2 kompilyatorınıń alfa versiyasın qosqanda, 2022-jıl iyunda shıǵarıldı[24].

Kotlin 1.8 versiyası 2021-jıl dekabrde, 1.8.0 versiyası 2023-jıl 11-yanvarda shıǵarıldı[25].

Kotlin 1.9 2023-jıl iyulda shıǵarıldı, 1.9.0 2023-jıl 6-iyulda shıǵarıldı[26].

Baǵdarlamalastırıw boyınsha jetekshi Andrey Breslav Kotlin sanaatqa arnalǵan kúshli obyektke baǵdarlanǵan til hám Java-ǵa qaraǵanda «jaqsı til» bolıw ushın jaratılǵanın, biraq ele de Java kodı menen tolıq islesiwin, bul kompaniyalarǵa Java-dan Kotlinge basqıshpa-basqısh kóshiwge imkaniyat beretuǵının ayttı[27].

Operaciya terminatorı retinde noqatlı útir minnetli emes; kóp jaǵdayda kompilyator járiyalanıwdıń tamamlanǵanın shıǵarıw ushın jańa qatar jetkilikli[28].

Kotlin ózgeriwshilerdi járiyalaw menen parametrler dizimlerinde maǵlıwmatlar tipi Ada, BASIC, Pascal, TypeScript hám Rust sıyaqlı ózgeriwshi atınan keyin keledi (hám qos noqat penen). Bul jobanıń házirgi jetekshisi Roman Elizarov maqalasına sáykes, ózgeriwshi atların sáykeslestiriwge alıp keledi hám kózdi quwantadı, ásirese bir neshe ózgeriwshilerdi járiyalaw qatarınan bolsa hám bir yamasa bir neshe tipi ushın quramalı bolsa. Juwmaq yamasa adam oqıǵanda túsiniwi ushın anıq járiyalaw zárúr[29][30].

Kotlindegi ózgeriwshiler tek oqıwǵa arnalǵan, gilt sózi menen járiyalanıwı yamasa ózgeriwsheń gilt sózi menen járiyalanıwı múmkin[31].

Klass aǵzaları ádepki boyınsha hámmege ulıwma, al klaslardıń ózleri ádepki boyınsha túpkilikli bolıp tabıladı, yaǵnıy tiykarǵı klass gilt sózi menen járiyalanbasa, tuwındı klastı jaratıw óshiriledi.

Obyektke baǵdarlanǵan programmalastırıwdıń klasları menen klass aǵza funkciyalarına (metodlarǵa ekvivalent) qosımsha, Kotlin sonıń menen qatar funkciyalardı qollanıw arqalı proceduralıq programmalastırıwdı qollaydı[32]. Kotlin funkciyaları menen konstruktorları ádepki argumentlerdi, ózgeriwshi uzınlıqtaǵı argument dizimlerin, atalǵan argumentlerdi hám unikal qoltańba arqalı shamadan tıs júklewdi qollaydı. Klass aǵzalarınıń funkciyaları virtual, yaǵnıy olar shaqırılatuǵın obyekttiń orınlanıw waqtınıń tipine qarap jiberiledi.

Kotlin 1.3 shártnamaǵa qollawdı qostı[33], standart kitapxana járiyalanıwları ushın turaqlı, biraq paydalanıwshı anıqlaytuǵın járiyalanıwlar ushın ele de eksperimentli. Shártnamalar Eyfeldiń shártnamalı programmalastırıw paradigması boyınsha[34] dizaynnan ilhamlandırıladı.

Kotlin kodı eki tilde jazılǵan kodtıń óz-ara islesiwine imkaniyat beretuǵın JavaScript-ke kompilyaciyalanıwı múmkin. Bul Kotlin-de tolıq veb-qosımshalardı jazıw ushın yamasa Kotlin serveri menen JavaScript interfeysi arasında kodtı bólisiw ushın paydalanılıwı múmkin[35].

Proceduralıq programmalastırıw stili

[redaktorlaw | derekti redaktorlaw]

Kotlin Javanıń statikalıq metodları menen ózgeriwshi mánisleriniń tek klass denesinde bolıwın sheklewdi jeńilletedi. Statikalıq obyektler menen funkciyalardı artıqsha klass dárejesin talap etpey pakettiń joqarı dárejesinde anıqlawǵa boladı. Java menen úylesimlilik ushın Kotlin paket Java proektinen qaralǵanda paydalanatuǵın klass atın kórsetetuǵın JvmName annotaciyasın beredi. Mısalı, “@file:JvmName("JavaClassName").

Tiykarǵı kiriw noqatı

[redaktorlaw | derekti redaktorlaw]

C, C++, C#, Java hám Go tillerindegi sıyaqlı, Kotlin baǵdarlamasına kiriw noqatı hár qanday komanda qatarı argumentleri bar massiv arqalı beriliwi múmkin «main» dep atalatuǵın funkciya bolıp tabıladı. Bul Kotlin 1.3 versiyasınan baslap minnetli emes[36]. Perl, PHP hám Unix qabıq stilindegi qatar interpolyaciyasına qollaw kórsetiledi. Tip tuwralı juwmaqqa da qollaw bar.

// Sálem, Álem! mısal
fun main() {
 val scope = "Álem"
 println("Hello, $scope!")
}

fun main(args: Array<String>) {
 for (arg in args)
 println(arg)
}

Keńeytpe funkciyaları

[redaktorlaw | derekti redaktorlaw]

C# sıyaqlı, Kotlin jańa funkciyaları bar tuwındı klastı dúziwdiń formal emesligin hár qanday klasqa keńeytpe funkciyasın qosıwǵa imkaniyat beredi. Keńeytpe funkciyası klastıń barlıq hámmege ulıwma interfeysine erise aladı, ol onı maqsetli klasqa jańa funkciya interfeysin jaratıw ushın paydalana aladı. Keńeytpe funkciyası dál klass funkciyası sıyaqlı payda boladı hám klass funkciyaların kodtı tamamlawdı tekseriwde kórsetiledi. Mısalı:

package MyStringExtensions

fun String.lastChar(): Char = get(length - 1)

>>> println("Kotlin".lastChar())

Aldıńǵı kodtı pakettiń joqarı dárejesine jaylastırıw arqalı String klası String klasınıń dáslepki anıqlamasına qosılmaǵan lastChar funkciyasın qamtıw ushın keńeytiledi.

// Keńeytpe funkciyası arqalı «+» operatorın shamadan tıs júklew
operator fun Point.plus(other: Point): Point {
 return Point(x + other.x, y + other.y)
}

>>> val p1 = Point(10, 20)
>>> val p2 = Point(30, 40)
>>> println(p1 + p2)
Point(x=40, y=60)

Argumentlerdi tarqatıw operatorı menen ashıń

[redaktorlaw | derekti redaktorlaw]

Python sıyaqlı, tarqatıw operatorı juldızsha (*) funkciyasınıń jeke argumentleri retinde massiv mazmunın ashadı, mısalı:

fun main(args: Array<String>) { 
 val list = listOf("args: ", *args)
 println(list)
}

«Sálem álem» (Hello world) mısalı

[redaktorlaw | derekti redaktorlaw]

(https://kotlinlang.org/docs/kotlin-tour-hello-world.html-dan alındı hám túsindirildi.)

fun main() {
 println("Sálem, álem!")
 // Sálem, álem!
}
  • Android Studio (IntelliJ IDEA tiykarında) Android Studio 3-ten baslap Kotlinge rásmiy qollaw bar[37].
  • Ulıwma Java jaratıw quralları menen integraciyaǵa qollaw kórsetiledi, sonıń ishinde Apache Maven, Apache Ant[38], hám Gradle[39].
  • Emacs óziniń MELPA paket repozitariyinde Kotlin rejimine iye.
  • JetBrains sonıń menen qatar Eclipse ushın plagindi usınadı[40][41].
  • IntelliJ IDEA-da Kotlin ushın plagindi qollaw bar[42]. IntelliJ IDEA 15 IntelliJ ornatıwshısında Kotlin plaginin biriktiretuǵın hám Kotlin qollawın qutıdan tıs támiyinleytuǵın birinshi versiyası boldı[43].
  • Gradle: Kotlinniń Gradle menen úziliksiz integraciyası bar, ol islep shıǵıwdı avtomatlastırıwdıń ataqlı quralı bolıp tabıladı. Gradle sizge Kotlin proektleriniń ómirlik ciklın ónimli dúziwge, avtomatlastırıwǵa hám basqarıwǵa imkaniyat beredi[44].
  • Bul maqalada Apache 2.0 licenziyası boyınsha shıǵarılǵan Kotlin sabaqlıqlarınan citatalar bar.
  1. «What is the correct English pronunciation of Kotlin?» (2019-jıl 16-oktyabr). Qaraldı: 2019-jıl 9-noyabr.
  2. «Kotlin for JavaScript - Kotlin Programming Language» (en). Kotlin. Qaraldı: 2020-jıl 20-avgust.
  3. «Kotlin for cross-platform mobile development» (en). JetBrains: Developer Tools for Professionals and Teams. Qaraldı: 2020-jıl 20-avgust.
  4. «Kotlin Foundation - Kotlin Programming Language». Kotlin.
  5. «Kotlin FAQ». — „Kotlin lets you choose the version of JVM for execution. By default, the Kotlin/JVM compiler produces Java 8 compatible bytecode. If you want to make use of optimizations available in newer versions of Java, you can explicitly specify the target Java version from 9 to 19. Note that in this case the resulting bytecode might not run on lower versions.“. Qaraldı: 2023-jıl 2-aprel.
  6. «Stability of Kotlin Components». Kotlin (2021-jıl 21-may). Qaraldı: 2021-jıl 29-iyul.
  7. «Kotlin 1.5.0 – the First Big Release of 2021». Kotlin (2021-jıl 4-may). Qaraldı: 2021-jıl 29-iyul.
  8. Mobius (8 January 2015), Андрей Бреслав — Kotlin для Android: коротко и ясно, qaraldı: 28 May 2017
  9. Kieron Murphy. «So why did they decide to call it Java?». JavaWorld (1996-jıl 4-oktyabr). 2019-jıl 15-mart sánesinde túp nusqadan arxivlendi. Qaraldı: 2017-jıl 14-oktyabr.
  10. Merriam-Webster. «Java Definition & Meaning». www.merriam-webster.com (2023-jıl 8-iyun). Qaraldı: 2023-jıl 3-iyul.
  11. 1 2 Krill. «JetBrains readies JVM language Kotlin». InfoWorld (2011-jıl 22-iyul). 2019-jıl 7-sentyabr sánesinde túp nusqadan arxivlendi. Qaraldı: 2014-jıl 2-fevral.
  12. Waters. «Kotlin Goes Open Source». ADTmag.com. 1105 Enterprise Computing Group (2012-jıl 22-fevral). 2014-jıl 18-fevral sánesinde túp nusqadan arxivlendi. Qaraldı: 2014-jıl 2-fevral.
  13. «Why JetBrains needs Kotlin» (2011-jıl 2-avgust). — „we expect Kotlin to drive the sales of IntelliJ IDEA“.
  14. «test · JetBrains/kotlin@3e4dce3» (en). GitHub. Qaraldı: 2022-jıl 17-oktyabr.
  15. «Kotlin 1.0 Released: Pragmatic Language for JVM and Android | Kotlin Blog». Blog.jetbrains.com (2016-jıl 15-fevral). Qaraldı: 2017-jıl 11-aprel.
  16. Shafirov. «Kotlin on Android. Now official» (2017-jıl 17-may). — „Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin.“.
  17. «Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog». blog.jetbrains.com (2017-jıl 28-noyabr).
  18. «Multiplatform Projects - Kotlin Programming Language». Kotlin. — „Working on all platforms is an explicit goal for Kotlin, but we see it as a premise to a much more important goal: sharing code between platforms. With support for JVM, Android, JavaScript, iOS, Linux, Windows, Mac and even embedded systems like STM32, Kotlin can handle any and all components of a modern application.“. Qaraldı: 2020-jıl 20-avgust.
  19. «Kotlin/kotlin-full-stack-application-demo». Kotlin (2020-jıl 3-aprel). Qaraldı: 2020-jıl 4-aprel.
  20. «Kotlin full stack app demo: update all involving versions to work with 1.3.70 release». youtrack.jetbrains.com. Qaraldı: 2020-jıl 4-aprel.
  21. "Kotlin 1.1 Released with JavaScript Support, Coroutines and more". https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/.
  22. Lardinois. «Kotlin is now Google's preferred language for Android app development» (en-US). TechCrunch (2019-jıl 7-may). Qaraldı: 2019-jıl 8-may.
  23. «What's New in Kotlin 1.4 - Kotlin Programming Language» (en). Kotlin. — „In 1.4.0, we slightly change the Swift API generated from Kotlin with respect to the way exceptions are translated.“. Qaraldı: 2020-jıl 20-avgust.
  24. «What's new in Kotlin 1.7.0 | Kotlin» (en-US). Kotlin Help. Qaraldı: 2022-jıl 20-iyun.
  25. Paul Krill. «Kotlin 1.8.0 adds recursive copy, delete for directories» (en) (2023-jıl 12-yanvar). Qaraldı: 2022-jıl 8-mart.
  26. Sarah Haggarty. «Kotlin 1.9.0 Released» (en) (2023-jıl 6-iyul). Qaraldı: 2023-jıl 6-iyul.
  27. «JVM Languages Report extended interview with Kotlin creator Andrey Breslav». Zeroturnaround.com (2013-jıl 22-aprel). Qaraldı: 2014-jıl 2-fevral.
  28. «Semicolons». jetbrains.com. Qaraldı: 2014-jıl 8-fevral.
  29. «Types are moving to the right». Medium (2020-jıl 16-iyul). Qaraldı: 2021-jıl 6-noyabr.
  30. «Roman Elizarov is the new Project Lead for Kotlin». The Kotlin Blog. JetBrains (2020-jıl 19-noyabr). Qaraldı: 2021-jıl 7-noyabr.
  31. «Basic Syntax». Kotlin. Jetbrains. Qaraldı: 2018-jıl 19-yanvar.
  32. «functions». jetbrains.com. Qaraldı: 2014-jıl 8-fevral.
  33. «What's New in Kotlin 1.3 - Kotlin Programming Language». Kotlin. Qaraldı: 2020-jıl 4-aprel.
  34. «Design by Contract (DbC) design considerations» (en-US). Kotlin Discussions (2012-jıl 16-avgust). — „Implement the full semantics of Eiffel DbC and improve upon it.“. Qaraldı: 2020-jıl 4-aprel.
  35. «Kotlin for JavaScript | Kotlin» (en-US). Kotlin Help (21-yanvar 2021-jıl). Qaraldı: 2021-jıl 19-mart.
  36. «Kotlin Examples: Learn Kotlin Programming By Example». 2021-jıl 18-noyabr sánesinde túp nusqadan arxivlendi. Qaraldı: 2019-jıl 13-aprel.
  37. «Kotlin and Android». Android Developers.
  38. «Using Ant – Kotlin Programming Language». kotlinlang.org. Qaraldı: 2017-jıl 9-may.
  39. «Using Gradle – Kotlin Programming Language». kotlinlang.org. Qaraldı: 2017-jıl 9-may.
  40. «Getting Started with Eclipse Neon – Kotlin Programming Language». Kotlinlang.org (2016-jıl 10-noyabr). Qaraldı: 2017-jıl 11-aprel.
  41. «JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse». GitHub. Qaraldı: 2017-jıl 11-aprel.
  42. «Kotlin :: JetBrains Plugin Repository». Plugins.jetbrains.com (2017-jıl 31-mart). Qaraldı: 2017-jıl 11-aprel.
  43. «What's New in IntelliJ IDEA 2017.1». Jetbrains.com. Qaraldı: 2017-jıl 11-aprel.
  44. «Gradle | Kotlin» (en-US). Kotlin Help. Qaraldı: 2024-jıl 8-aprel.