کاتلین

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از کوتلین)
پرش به ناوبری پرش به جستجو
کاتلین
لوگو کاتلین
طراحی‌شده توسطجت‌برینز
توسعه‌دهندهجت‌برینز و همکاران منبع‌باز
ظهوریافته در۲۰۱۱
کاتلین ۱٫٣٫۵٠ / ۲۲ اوت ۲۰۱۹؛ ۲ ماه پیش (۲۰۱۹-۰۸-22)[۱]
کاتلین ۱٫۱٫۲ EAP / ۳۱ مارس ۲۰۱۷؛ ۲ سال پیش (۲۰۱۷-۰۳-31)[۲]
static, inferred
سکوOutputs Java Virtual Machine bytecode and JavaScript source code
سیستم‌عاملAny supporting a JVM or JavaScript interpreter
پروانهآپاچی ۲
.kt, .kts
وب‌گاهkotlinlang.org

کاتلین یک زبان برنامه‌نویسی عمومی، مستقل از سکو از نوع ایستا است که بر روی ماشین مجازی جاوا اجرا می‌شود. همچنین می‌تواند به سورس کد جاوا اسکریپت یا کد ماشین (توسط ال‌ال‌وی‌ام) نیز کامپایل شود. اولین توسعهٔ آن توسط تیم برنامه‌نویسان JetBrains واقع در سن پترزبورگ روسیه انجام شد. (این نام از روی جزیره کاتلین در نزدیکی سن پترزبورگ می‌آید.) کاتلین در ژانویهٔ سال ۲۰۱۲ به عنوان زبان ماه انتخاب شد. با وجود آنکه کاتلین از نظر syntax با جاوا سازگار نیست، این زبان طراحی شده تا با کد جاوا همکاری داشته باشد و کتابخانه‌های استاندارد نسخه جاوای آن، متکی بر کتابخانه‌های کلاس جاوا است.

تاریخچه[ویرایش]

در ژوئیه ۲۰۱۱، JetBrains از پروژهٔ کاتلین پرده برداری کرد، زبانی جدید برای ماشین مجازی جاوا، که برای یک سال تحت توسعه و پیشرفت قرار داشت. سرپرست Dmitry Jemerov، JetBrains، اظهار داشت بیشتر زبان‌های برنامه‌نویسی، آن ویژگی‌هایی که دنبالش هستند را ندارند. به استثناء اسکالا. او به زمان کند کامپایل اسکالا به عنوان کمبودی واضح اشاره کرد. یکی از اهداف اصلی کاتلین این است که به همان سرعت زیاد جاوا کامپایل شود. در فوریهٔ سال ۲۰۱۲، JetBrains منبع باز این پروژه را تحت مجوز Apache 2 ارائه کرد. Jetbrains امیدوار است که این زبان جدید IntelliJ IDEA را به پیش ببرد.

فلسفه[ویرایش]

سرپرست توسعه، Andrey Breslav، بیان کرده کاتلین طراحی شده تا زبانی صنعتی-قدرتی و شی گرا بوده و زبانی بهتر از جاوا باشد. اما هنوز پر از سازگاری‌هایی با کد جاوا است که اجازه داده کمپانی‌ها مهاجرتی تدریجی از جاوا به کاتلین داشته باشند.

نحوه[ویرایش]

مشابه با Pascal, Haxe, PL/SQL, F#, Go و اسکالا (بی شباهت به نحو C و زبان‌های مشتق از ان مانند نیست C++, Java, C# و زبان D)، اعلامات متغیر کاتلین و پارامتر لیست‌ها دارای نوع هستند که بعد از نام متغیر می‌آید (با جدا کنندهٔ کالن). مانند دیگر زبان‌های مدرن مانند اسکالا و Groovy، سمی کالن‌ها به عنوان عبارت خاتمه دهنده اختیاری هستند. در بیشتر اوقات یک خط جدید برای کامپایلر کافی است تا بتواند استنباط کند که عبارت به پایان رسیده است.

معنی (Semantics)[ویرایش]

کاتلین علاوه بر پشتیبانی کلاس‌ها و متدهای (که در کاتلین به آن‌ها توابع عضو (member functions) می‌گوییم) برنامه‌نویسی شی گرا، برنامه‌نویسی رویه‌ای (procedural programming) را نیز با استفاده از توابع پشتیبانی می‌کند. همانند C و ++C، نقطهٔ شروع به برنامهٔ کاتلین تابعی به نام main است که آرایه‌ای شامل خطوط دستور را منتقل می‌کند. پوستهٔ script-style و الحاق رشته‌ای Perl و Unix/Linux نیز پشتیبانی می‌شود. همچنین استنتاج نوع هم پشتیبانی شده است.

مثال: Hello , world!

fun main(args : Array<String>) {
  val scope = "world"
  println("Hello, $scope!")
}

کاتلین بین نوع‌هایی که مقدار null می‌پذیرند و آنهایی که نمی‌پذیرند تفاوت قائل می‌شود. تمام شی‌هایی که null پذیر هستند باید به با یک پسوند " ? " بعد از اسم نوع تعریف شوند. عملیات روی شی‌های null پذیر نیاز به توجه خاص توسعه دهندگان دارد. عمل چک کردن null باید قبل از استفاده از مقدار انجام شده باشد. کاتلین عملگرهای null-safe را برای کمک به توسعه دهندگان فراهم آورده ست.

  • . ? (عملگر ناوبری امن) برای دسترسی امن به یک متد یا ویژگی یک شی که ممکن است null باشد، می‌تواند مورد استفاده قرار گیرد. اگر شی null باشد، متد فراخوانی نمی‌شود و عبارت برابر null قرار می‌گیرد.
  • :? (عملگر یگانی null) اغلب ارجاع می‌دهد مانند عملگر Elvis:
fun sayHello(maybe : String?, neverNull : Int) {
   // use of elvis operator
   val name : String = maybe ?: "stranger"
   println("Hello $name")
}

مثالی از استفادهٔ عملگر ناوبری امن

  // returns null if foo is null, or bar() returns null, or baz() returns null
  foo ?. bar() ?. baz()

ابزارها[ویرایش]

  • IntelliJ IDEA پشتیبانی پلاگین برای کاتلین را دارد. IntelliJ IDEA 15 اولین ورژنی است که بستهٔ نرم‌افزاری پلاگین کاتلین را در IntelliJ Installer آورده است و پشتیبانی ان را فراهم آورده است.
  • همچنین JetBrains دارای یک Eclipse plug-in است.
  • پلاگین آپاچی ماون
  • Apache Ant task.
  • پلاگین Gradle

زبان‌های مشابه[ویرایش]

زبان‌های دیگری نیز در نظر گرفته شده‌اند تا زبانی بهتر از جاوا برای ماشین مجازی جاوا باشند.

موضوعات مرتبط سربارگزاری عملگرها

منابع[ویرایش]

  1. "Kotlin 1.1.2 is out". Kotlin Blog. 2017-04-25. Retrieved 2017-05-04.
  2. "Kotlin 1.1.2 EAP - EAP - Kotlin Discussions". Discuss.kotlinlang.org. 2017-03-31. Retrieved 2017-04-11.

پیوند به بیرون[ویرایش]