کۆتلین

**کۆتلین** (  )  زمانێکی بەرنامەدارێژی نەرمامێری سەکۆبڕە کە بە شێوەیەکی ستاتیکی نوسراوە ، بەکاردێ بۆ دروستکردنی گشتی بەرنامەسازی ئاست بەرز، کۆتلین بە شێوەیەک دیزاین کراوە کە بە تەواوی لەگەڵ جاڤا کار بکات و وەشانی JVM ی ستانداردی کۆتلین پشت بە پۆلی جاڤا دەبەستێت و ڕێگە بە ڕستەسازییەکەی دەدات کە پوختتر بێت، کۆتلین بە شێوەیەکی سەرەکی JVM دەکاتە ئامانج، ھەروەھا کۆد دەکرێت دەکات بۆ جاڤاسکریپت (بۆ نموونە، بۆ بەرنامەکانی وێب بە بەکارھێنانی React )  یان کۆدی مەکینە لە ڕێگەی LLVM (بۆ نموونە بۆ بەرنامەکانی ئای ئۆ ئێس کە لۆژیکی بازرگانی لەگەڵ بەرنامەکانی ئەندرۆید ھاوبەش دەکەن) تێچووی پەرەپێدانی زمانەکە لەلایەن JetBrains ەوە پاڵپشتی دەکرێت، لە کاتێکدا دامەزراوەی کۆتلین ھێمای خاوەندارێتی بازرگانی کۆتلین ھەڵدەگرێت.

لە ٧ ی ئایاری ٢٠١٩ کۆمپانیای گۆگڵ ڕایگەیاند کە زمانی بەرنامەسازی کۆتلین ئێستا زمانی پەسەندکراوی کۆمپانیاکەیە بۆ گەشەپێدەرانی بەرنامەکانی ئەندرۆید لە دوای بڵاوبوونەوەی ئەندرۆید ستۆدیۆ ٣.٠ لەساڵی ٢٠١٧، کۆتلین وەک جێگرەوەی ستانداردی جاڤا بەردەستکراوە، ئەندرۆید کۆتلین بە شێوازی پێشوەختە بایتکۆدی جاڤا ٨ بەرھەم دەھێنێت (کە لە ھەر JVMێکی دواتردا کاردەکات) و ڕێگە بە پرۆگرامەر دەدات جاڤا ٩ تا ٢٠ بکاتە ئامانج، بۆ باشترکردن یان تایبەتمەندی زیاتر؛ پشتگیری کارپێکردنی یەکتربڕی پۆلی تۆماری دووئاڕاستەی ھەیە بۆ JVM.

## مێژوو
وێنۆک| وێنەیەکی دوو ڕەھەندی ماسکۆتی کۆتلین
وێنۆک| وێنەیەکی سێ ڕەھەندی ماسکۆتی کۆتلین

### ناونان
ناوەکە لە دوورگەی کۆتلین وەرگیراوە کە دوورگەیەکی ڕووسییە لە کەنداوی فینلاند لە نزیک سەنت پیتەرزبۆرگ لەنزیک ئاندرێ برێسلاڤ، دیزاینەری سەرەکی پێشووی کۆتلین باسی لەوە کردووە کە تیمەکە بڕیاریاندا ناوەکە لەناوی دوورگەوە وەربگرن، ھەروەک چۆن زمانی بەرنامەسازی جاڤا ناوی دوورگەی جاڤای ئیندۆنیزیا وەرگیراوە، (ھەرچەندە دەوترێت ناوی زمانەکە لە " java" زاراوەیەکی زەق و زەنگی ئەمریکییە بۆ قاوە بەڵام خۆی لە ڕاستیدا لەناوی دوورگەکەوە وەرگیراوە).

### پەرەپێدان
لە تەمموزی ٢٠١١ کۆمپانیای JetBrains پەردەی لەسەر پرۆژەی کۆتلین لادا کە زمانێکی نوێیە بۆ JVM کە ساڵێک بوو لە قۆناغی پەرەپێداندا بوو دیمیتری جێمیرۆڤ سەرۆکی کۆمپانیای JetBrains ڕایگەیاند کە زۆربەی زمانەکان ئەو تایبەتمەندیانەیان نەبووە کە بەدوایدا دەگەڕان، جگە لە Scala، بەڵام ئەو کاتە خاوی کۆمپایلەری سکالای وەک کەموکوڕی ھێنایەوە یەکێک لە ئامانجە ڕاگەیەندراوەکانی کۆتلین ئەوەیە کە بە خێرایی وەک جاڤا کۆمپایل بکات، لە شوباتی ٢٠١٢ کۆمپانیای JetBrains سەرچاوە کراوەی پڕۆژەکەی لە ژێر مۆڵەتی Apache 2 وەرگرت.

جێت برەین ھیوای خواست کە زمانە نوێیەکە ببێتە ھۆی فرۆشی IntelliJ IDEA . 

کۆتلین ١.٠ لە ١٥ ی شوباتی ٢٠١٦ بڵاوکرایەوە ئەمە بە یەکەم بڵاوکردنەوەی فەرمی جێگیر دادەنرێت و جێت برەین پابەند بووە بە گونجانی درێژخایەن کە لەم وەشانەیەوە دەست پێدەکات.

لە کۆنگرەی Google I/O ٢٠١٧ گۆگڵ پشتگیری پلە یەکی بۆ Kotlin لەسەر ئەندرۆید ڕاگەیاند.

## ديزاين
ئاندرێ برێسلاڤ سەرۆکی پەرەپێدان ڕایگەیاندووە کە کۆتلین بە شێوەیەک دیزاین کراوە کە زمانێکی بەھێزی پیشەسازی بێت بۆ پرۆگرامسازی تەنخواز و "زمانێکی باشتر" بێت لە جاڤا، بەڵام ھێشتا بە تەواوی لەگەڵ کۆدی جاڤادا کاردەکات ئەمەش ڕێگە بە کۆمپانیاکان دەدات کۆچکردنێکی وردە وردە لە جاڤاوە بۆ کۆتلین ئەنجام بدەن.

## ڕستەسازی

### شێوازی بەرنامەسازی و ڕێکارەکان
کۆتلین سنووردارکردنی جاڤا کە ڕێگە بە شێواز و گۆڕاوە جێگیرەکان دەدات تەنھا لەناو پێکھاتەی پۆلێکدا ھەبن، دەتوانرێت فرمانی جێگیر و کرادەرکان لە ئاستی سەرەوەی پاکێجەکەدا پێناسە بکرێت بەبێ ئەوەی پێویست بە ئاستی پۆلی زیادە ھەبێت بۆ گونجان لەگەڵ جاڤا، کۆتلین تێبینی `JvmName` دابین دەکات کە ناوی پۆلێک دیاری دەکات کە بەکاردێت کاتێک پاکێجەکە لە پڕۆژەیەکی جاڤاوە ھاوردە دەکرێت، بۆ نموونە `@file:JvmName("JavaClassName")`.

### خاڵی سەرەکی پەیوەستبون
ھەروەک لە سی، سی++، سی شارپ، جاڤا، و Go، خاڵی پەیوەستبون بۆ بەرنامەیەکی کۆتلین کرادرەکە بە ناوی "main"، کە ڕەنگە ڕیزبەندییەک تێپەڕێنرێت کە ھەر ڕێسایەکی ھێڵی فەرمان لەخۆبگرێت، ئەم کرادەر دڵخوازییە لە دوای Kotlin 1.3 شێوازی دێڕی ڕیزەکانی پێرڵ، پی ئەیچ پی و Unix shell پشتگیری دەکرێت.
```kotlin
// سڵاو، جیهان بە نمونە
fun main() {
  val scope = "جیهان"
  println("سڵاو, $scope!")
}

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


### پۆلەکان بە شێوازی بنەڕەتی گشتین
کۆتلین ئەم وشە سەرەکیانەی خوارەوە دابین دەکات بۆ سنووردارکردنی بینین بۆ ڕاگەیاندنی ئاستی باڵا، وەک پۆلەکان و بۆ ئەندامانی پۆل: `public` ، `internal` ، `protected` و `private` .

کاتێک داواکاری بۆ ئەندامێکی پۆلەکە دەکرێت:

کاتێک کە بۆ بەیاننامەیەکی ئاستی باڵا جێبەجێ دەکرێت:

نموونە:
```kotlin
// Class is visible only to current module
internal open class TalkativeButton {
  // method is only visible to current class 
  private fun yell() = println("سڵاو!")
  // method is visible to current class and derived classes
  protected fun whisper() = println("با قسە بکەین!")
}
internal class MyTalkativeButton: TalkativeButton() {
  fun utter() = super.whisper()
}
MyTalkativeButton().utter()
```


### توێکڵی کارلێککەری کۆتلین

```pycon
$ kotlinc-jvm
type :help for help; :quit for quit
>>> 2 + 2
4
>>> println("سڵاو, جیهان")
Hello, World!
```


### کۆتلین وەک زمانێکی سکریپت
ھەروەھا دەتوانرێت کۆتلین وەک زمانی سکریپت بەکاربھێنرێت، سکریپت فایلێکی سەرچاوەی کۆتلینە کە بە بەکارھێنانی درێژکراوەی ناوی پەڕگەیی لەگەڵ کۆدی سەرچاوەی جێبەجێکراو لە بازنەی ئاستی باڵادا:
```kotlin
// list_folders.kts لیستی فۆڵدەرەکان
import java.io.File
val folders = File(args[0]).listFiles { file -> file.isDirectory() }
folders?.forEach(::println)
```
دەتوانرێت سکریپتەکان بە گواستنەوەی ھەڵبژاردەی `-script` و پەڕگەی سکریپتی ھاوبەش بۆ کۆمپایلەرەکە جێبەجێ بکرێت.
```bash
$ kotlinc -script list_folders.kts لیستی فۆڵدەرەکان "path_to_folder_to_inspect"
```


## بەرنامەکان
کاتێک کۆتلین وەک زمانێکی فەرمی پەرەپێدانی ئەندرۆید لە گۆگڵ ئای/ئۆ لە مانگی ئایاری ٢٠١٧ ڕاگەیەندرا، بووە سێیەم زمان کە بە تەواوی پشتگیری کرا بۆ سیستەمی ئەندرۆید، دوای جاڤا و سی++،    ، کۆتلین زۆرترین زمانی بەکارھێنراوە لەسەر ئەندرۆید، گگگڵ مەزەندەی کردووە کە ٪٧٠ی ١٠٠٠ بەرنامەی سەرەکی لە پلەی ستۆردا بە زمانی کۆتلین نووسراون، گۆگڵ بەتەنیا خۆی ٦٠ بەرنامەی ھەیە کە بە زمانی کۆتلین نووسراون، لەوانە Maps و Drive، وە زۆرێک لە بەرنامەکانی تری ئەندرۆید وەکو گۆگڵ ھۆم لە پرۆسەی گواستنەوەدایە بۆ کۆتلین، ھەر بۆیە ھەردوو جۆری کۆتلین و جاڤا بەکاردەھێنن، Kotlin لەسەر ئەندرۆید وەک سوودبەخش سەیر دەکرێت بۆ سەلامەتی null-pointer، ھەروەھا بۆ تایبەتمەندییەکانی کە وا دەکات کۆدی کورتتر و پوختتر بەرھەم بھێنێت. 

## پەرەسەندن
لە ساڵی ٢٠١٨دا، کۆتلین خێراترین زمانی گەشەسەندوو بوو لە GitHub، بە بەراورد بە ساڵی ٢٠١٧ بەڕێژەی ٢,٦ ھێندەی گەشەپێدەرەکانی زیاتر بوو بەپێی ڕاپرسی گەشەپێدەرانی Stack Overflow 2020 چوارەم زمانی بەرنامەسازییە کە زۆرترین گرنگی پێدەدرێت.

زۆرێک لە کۆمپانیا / ڕێکخراوەکان Kotlin یان بەکارھێناوە بۆ پەرەپێدانی بەرنامەکانیان لەوانە:

* Allegro 
* ئەمازۆن 
* ئەتلەسیان 
* ئەپی کاش  
* فلۆکس 
* گۆگڵ 
* گرادل 
* جێت برەین 
* مێشکلاود 
* ئیدارەی باجی نەرویج 
* OLX 
* Pivotal 
* ڕۆکێت تراڤڵ 
* شازام 
* Zalando 

ھەندێک کۆمپانیا / ڕێکخراو Kotlin یان بەکارھێناوە بۆ پەرەپێدانی وێب:

* بانکی بارکلی 
* Data2viz 
* Fritz2 
* جێت برەین 

ژمارەیەک کۆمپانیا بە ئاشکرا ڕایانگەیاندووە کە کۆتلین بەکاردەھێنن:

* Basecamp 
* Corda، بنکەیەکی سەرەکی دابەشکراوە کە لەلایەن کۆمەڵەیەکی بانکە ناسراوەکانەوە پەرەی پێدراوە (وەک گۆڵدمان ساکس ، وێڵز فارگۆ ، جەی پی مۆرگان ، دۆیچە بانک ، یو بی ئێس ، ئێچ ئێس بی سی ، بی ئێن پی پاریباس ، و سۆسییەتی جێنراڵ )، زیاتر لە ٪٩٠ کۆدی کۆتلین لە بنکە کۆدەکانیدا ھەیە:
* Coursera 
* DripStat 
* Duolingo 
* NetFllix 
* Pinterest 
* Trello 
* Uber 

## ئەمانەش ببینە

* بەراوردکردنی زمانەکانی بەرنامەسازی

## سەرچاوەکان

* ئەم بابەتە وەرگێڕانی فێرکارییەکانی کۆتلین لەخۆدەگرێت کە لە ژێر مۆڵەتی ئەپاچی ٢.٠ بڵاودەکرێنەوە.

## بەستەری دەرەکی

* 

پۆل:زمانە بەرنامەسازییەکان
پۆل:زمانە بەرنامەسازییە ئاستبەرزەکان
پۆل:نەرمامێرەکانی ٢٠١١
پۆل:جاڤاسکریپت
پۆل:جاڤا (زمانی بەرنامەسازی)