Kotlin (programmalastırıw tili)

Kotlin [1] – kross-platformalı, statikalıq túrde terilgen, ulıwma maqsettegi 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]

Tariyxı redaktorlaw

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

Atı redaktorlaw

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

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]

Proektlestiriw redaktorlaw

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ı 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]

Sintaksis redaktorlaw

Proceduralı programmalastırıw stili 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

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

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

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

(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!
}

Qurallar redaktorlaw

  • 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]

Derekler redaktorlaw

  • 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?“ (16-oktyabr 2019-jıl). Qaraldı: 9-noyabr 2019-jıl.
  2. „Kotlin for JavaScript - Kotlin Programming Language“ (en). Kotlin. Qaraldı: 20-avgust 2020-jıl.
  3. „Kotlin for cross-platform mobile development“ (en). JetBrains: Developer Tools for Professionals and Teams. Qaraldı: 20-avgust 2020-jıl.
  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ı: 2-aprel 2023-jıl.
  6. „Stability of Kotlin Components“. Kotlin (21-may 2021-jıl). Qaraldı: 29-iyul 2021-jıl.
  7. „Kotlin 1.5.0 – the First Big Release of 2021“. Kotlin (4-may 2021-jıl). Qaraldı: 29-iyul 2021-jıl.
  8. Mobius (8 January 2015), Андрей Бреслав — Kotlin для Android: коротко и ясно, qaraldı: 28 May 2017
  9. Kieron Murphy. „So why did they decide to call it Java?“. JavaWorld (4-oktyabr 1996-jıl). 15-mart 2019-jılda túp nusqadan arxivlendi. Qaraldı: 14-oktyabr 2017-jıl.
  10. Merriam-Webster. „Java Definition & Meaning“. www.merriam-webster.com (8-iyun 2023-jıl). Qaraldı: 3-iyul 2023-jıl.
  11. 11,0 11,1 Krill. „JetBrains readies JVM language Kotlin“. InfoWorld (22-iyul 2011-jıl). 7-sentyabr 2019-jılda túp nusqadan arxivlendi. Qaraldı: 2-fevral 2014-jıl.
  12. Waters. „Kotlin Goes Open Source“. ADTmag.com. 1105 Enterprise Computing Group (22-fevral 2012-jıl). 18-fevral 2014-jılda túp nusqadan arxivlendi. Qaraldı: 2-fevral 2014-jıl.
  13. „Why JetBrains needs Kotlin“ (2-avgust 2011-jıl). — „we expect Kotlin to drive the sales of IntelliJ IDEA“.
  14. „test · JetBrains/kotlin@3e4dce3“ (en). GitHub. Qaraldı: 17-oktyabr 2022-jıl.
  15. „Kotlin 1.0 Released: Pragmatic Language for JVM and Android | Kotlin Blog“. Blog.jetbrains.com (15-fevral 2016-jıl). Qaraldı: 11-aprel 2017-jıl.
  16. Shafirov. „Kotlin on Android. Now official“ (17-may 2017-jıl). — „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 (28-noyabr 2017-jıl).
  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ı: 20-avgust 2020-jıl.
  19. „Kotlin/kotlin-full-stack-application-demo“. Kotlin (3-aprel 2020-jıl). Qaraldı: 4-aprel 2020-jıl.
  20. „Kotlin full stack app demo: update all involving versions to work with 1.3.70 release“. youtrack.jetbrains.com. Qaraldı: 4-aprel 2020-jıl.
  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 (7-may 2019-jıl). Qaraldı: 8-may 2019-jıl.
  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ı: 20-avgust 2020-jıl.
  24. „What's new in Kotlin 1.7.0 | Kotlin“ (en-US). Kotlin Help. Qaraldı: 20-iyun 2022-jıl.
  25. Paul Krill. „Kotlin 1.8.0 adds recursive copy, delete for directories“ (en) (12-yanvar 2023-jıl). Qaraldı: 8-mart 2022-jıl.
  26. Sarah Haggarty. „Kotlin 1.9.0 Released“ (en) (6-iyul 2023-jıl). Qaraldı: 6-iyul 2023-jıl.
  27. „JVM Languages Report extended interview with Kotlin creator Andrey Breslav“. Zeroturnaround.com (22-aprel 2013-jıl). Qaraldı: 2-fevral 2014-jıl.
  28. „Semicolons“. jetbrains.com. Qaraldı: 8-fevral 2014-jıl.
  29. „Types are moving to the right“. Medium (16-iyul 2020-jıl). Qaraldı: 6-noyabr 2021-jıl.
  30. „Roman Elizarov is the new Project Lead for Kotlin“. The Kotlin Blog. JetBrains (19-noyabr 2020-jıl). Qaraldı: 7-noyabr 2021-jıl.
  31. „Basic Syntax“. Kotlin. Jetbrains. Qaraldı: 19-yanvar 2018-jıl.
  32. „functions“. jetbrains.com. Qaraldı: 8-fevral 2014-jıl.
  33. „What's New in Kotlin 1.3 - Kotlin Programming Language“. Kotlin. Qaraldı: 4-aprel 2020-jıl.
  34. „Design by Contract (DbC) design considerations“ (en-US). Kotlin Discussions (16-avgust 2012-jıl). — „Implement the full semantics of Eiffel DbC and improve upon it.“. Qaraldı: 4-aprel 2020-jıl.
  35. „Kotlin for JavaScript | Kotlin“ (en-US). Kotlin Help (21-yanvar 2021-jıl). Qaraldı: 19-mart 2021-jıl.
  36. „Kotlin Examples: Learn Kotlin Programming By Example“. 18-noyabr 2021-jılda túp nusqadan arxivlendi. Qaraldı: 13-aprel 2019-jıl.
  37. „Kotlin and Android“. Android Developers.
  38. „Using Ant – Kotlin Programming Language“. kotlinlang.org. Qaraldı: 9-may 2017-jıl.
  39. „Using Gradle – Kotlin Programming Language“. kotlinlang.org. Qaraldı: 9-may 2017-jıl.
  40. „Getting Started with Eclipse Neon – Kotlin Programming Language“. Kotlinlang.org (10-noyabr 2016-jıl). Qaraldı: 11-aprel 2017-jıl.
  41. „JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse“. GitHub. Qaraldı: 11-aprel 2017-jıl.
  42. „Kotlin :: JetBrains Plugin Repository“. Plugins.jetbrains.com (31-mart 2017-jıl). Qaraldı: 11-aprel 2017-jıl.
  43. „What's New in IntelliJ IDEA 2017.1“. Jetbrains.com. Qaraldı: 11-aprel 2017-jıl.
  44. „Gradle | Kotlin“ (en-US). Kotlin Help. Qaraldı: 8-aprel 2024-jıl.