کوتلین

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
کوتلین
لوگو کوتلین
طراحی‌شده توسط جت‌برینز
توسعه‌دهنده جت‌برینز و همکاران منبع‌باز
ظهوریافته در ۲۰۱۱
کوتلین ۱٫۱٫۲ / ۲۵ آوریل، ۲۰۱۷؛ ۵ ماه پیش (۲۰۱۷-۰۴-25)[۱]
کوتلین ۱٫۱٫۲ 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. 

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