کوتلین

کاتلین زبان برنامه‌نویسی از نوع ایستا است که بر روی ماشین مجازی جاوا اجرا می‌شود. همچنین می‌تواند به سورس کد جاوا اسکریپت نیز کامپایل شود. اولین توسعه ان از تیم برنامه‌نویسان 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 ) {
val scope = "world"
println("Hello, $scope!")
کاتلین بین نوع‌هایی که مقدار null می‌پذیرند و آنهایی که نمی‌پذیرند تفاوت قائل می‌شود. تمام شی‌هایی که null پذیر هستند باید به با یک پسوند " ? " بعد از اسم نوع تعریف شوند. عملیات روی شی‌های null پذیر نیاز به توجه خاص توسعه دهندگان دارد. عمل چک کردن null باید قبل از استفاده از مقدار انجام شده باشد. کاتلین عملگرهای null-safe را برای کمک به توسعه دهندگان فراهم آورده ست.
. ? (عملگر ناوبری امن) برای دسترسی امن به یک متد یا ویژگی یک شی که مکن است null باشد، می‌تواند مورد استفاده قرار گیرد. اگر شی null باشد، متد فراخوانی نمی‌شود و عبارت برابر null قرار می‌گیرد.
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
زبان‌های مشابه
زبان‌های دیگری نیز در نظر گرفته شده‌اند تا زبانی بهتر از جاوا برای ماشین مجازی جاوا باشند.
سیلان (برنامه‌نویسی)
کلوژر
فانتوم (زبان برنامه‌نویسی)
گوسو (زبان برنامه‌نویسی)
اسکالا
موضوعات مرتبط
سربارگزاری عملگرها