کۆتلین (زمانی بەرنامەداڕێژی)

کۆتلین ( /ˈkɒtlɪn/ ) [٢] زمانێکی بەرنامەدارێژی نەرمامێری سەکۆبڕە کە بە شێوەیەکی ستاتیکی نوسراوە ، بەکاردێ بۆ دروستکردنی گشتی بەرنامەسازی ئاست بەرز، کۆتلین بە شێوەیەک دیزاین کراوە کە بە تەواوی لەگەڵ جاڤا کار بکات و وەشانی JVM ی ستانداردی کۆتلین پشت بە پۆلی جاڤا دەبەستێت و ڕێگە بە ڕستەسازییەکەی دەدات کە پوختتر بێت، کۆتلین بە شێوەیەکی سەرەکی JVM دەکاتە ئامانج، ھەروەھا کۆد دەکرێت دەکات بۆ جاڤاسکریپت (بۆ نموونە، بۆ بەرنامەکانی وێب بە بەکارھێنانی React ) [٣] یان کۆدی مەکینە لە ڕێگەی LLVM (بۆ نموونە بۆ بەرنامەکانی ئای ئۆ ئێس کە لۆژیکی بازرگانی لەگەڵ بەرنامەکانی ئەندرۆید ھاوبەش دەکەن)[٤] تێچووی پەرەپێدانی زمانەکە لەلایەن JetBrains ەوە پاڵپشتی دەکرێت، لە کاتێکدا دامەزراوەی کۆتلین ھێمای خاوەندارێتی بازرگانی کۆتلین ھەڵدەگرێت.[٥]

کۆتلین
پارادایمMulti-paradigm: object-oriented, functional, imperative, block structured, declarative, generic, reflective, concurrent
داڕێژەرجێت برەین
پەرەپێدەرجێت برەین
یەکەم دەرکەوتن٢٢ی تەممووزی ٢٠١١؛ ١٢ ساڵ لەمەوبەر (٢٠١١-٠٧-22)
وەشانی جێگیر
٢٫٠٫٠[١] لەسەر ویکیدراوە دەستکاریی ئەمە بکە / ٢١ی ئایاری ٢٠٢٤؛ ھەڵە: یەکەم پارامەتر ناکرێت وەکوو ڕۆژ و کات مامەڵەی لەگەڵ بکرێت. (٢١ی ئایاری ٢٠٢٤)
جۆری دراو (تایپ)دەرکەوتە, ستاتیک, سترۆنگ
سەکۆ
سیستمی بەکارخەرینەرمامێری سەکۆبڕ
مۆڵەتApache License 2.0
پاشگری پەڕگە.kt, .kts, .kexe, .klib
وێبگەkotlinlang٫org Edit this at Wikidata
کاریگەربووە بە
کاری کردۆتە
V (Vlang)

لە ٧ ی ئایاری ٢٠١٩ کۆمپانیای گۆگڵ ڕایگەیاند کە زمانی بەرنامەسازی کۆتلین ئێستا زمانی پەسەندکراوی کۆمپانیاکەیە بۆ گەشەپێدەرانی بەرنامەکانی ئەندرۆید[٦] لە دوای بڵاوبوونەوەی ئەندرۆید ستۆدیۆ ٣.٠ لەساڵی ٢٠١٧، کۆتلین وەک جێگرەوەی ستانداردی جاڤا بەردەستکراوە، ئەندرۆید کۆتلین بە شێوازی پێشوەختە بایتکۆدی جاڤا ٨ بەرھەم دەھێنێت (کە لە ھەر 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 پشتگیری دەکرێت.

// سڵاو، جیهان بە نمونەfun main() {  val scope = "جیهان"  println("سڵاو, $scope!")}fun main(args: Array<String>) {  for (arg in args)    println(arg)}

پۆلەکان بە شێوازی بنەڕەتی گشتین

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

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

وشەی سەرەکیبینین
public (بە بنەڕەتی)لە ھەموو شوێنێک
internalلەناو مۆدیولێکدا
protectedلەناو ژێرپۆلەکاندا
privateلەناو پۆلێکدا

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

وشەی سەرەکیبینین
public (بە بنەڕەتی)لە ھەموو شوێنێک
internalلەناو مۆدیولێکدا
privateلەناو فایلێکدا

نموونە:

// Class is visible only to current moduleinternal 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()

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

$ kotlinc-jvmtype :help for help; :quit for quit>>> 2 + 24>>> println("سڵاو, جیهان")Hello, World!

کۆتلین وەک زمانێکی سکریپت

ھەروەھا دەتوانرێت کۆتلین وەک زمانی سکریپت بەکاربھێنرێت، سکریپت فایلێکی سەرچاوەی کۆتلینە کە بە بەکارھێنانی.kts درێژکراوەی ناوی پەڕگەیی لەگەڵ کۆدی سەرچاوەی جێبەجێکراو لە بازنەی ئاستی باڵادا:

// list_folders.kts لیستی فۆڵدەرەکانimport java.io.Fileval folders = File(args[0]).listFiles { file -> file.isDirectory() }folders?.forEach(::println)

دەتوانرێت سکریپتەکان بە گواستنەوەی ھەڵبژاردەی -script و پەڕگەی سکریپتی ھاوبەش بۆ کۆمپایلەرەکە جێبەجێ بکرێت.

$ kotlinc -script list_folders.kts لیستی فۆڵدەرەکان "path_to_folder_to_inspect"

بەرنامەکان

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

پەرەسەندن

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

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

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

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

  • Basecamp [٤٢]
  • Corda، بنکەیەکی سەرەکی دابەشکراوە کە لەلایەن کۆمەڵەیەکی بانکە ناسراوەکانەوە پەرەی پێدراوە (وەک گۆڵدمان ساکس ، وێڵز فارگۆ ، جەی پی مۆرگان ، دۆیچە بانک ، یو بی ئێس ، ئێچ ئێس بی سی ، بی ئێن پی پاریباس ، و سۆسییەتی جێنراڵ )، زیاتر لە ٪٩٠ کۆدی کۆتلین لە بنکە کۆدەکانیدا ھەیە:
  • Coursera [٤٣]
  • DripStat [٤٤]
  • Duolingo [٤٥]
  • NetFllix [٤٦]
  • Pinterest [٤٧]
  • Trello [٤٨]
  • Uber [٤٩]

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

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

سەرچاوەکان

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

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

داڕێژە:Programming languagesداڕێژە:Java (Sun)