کاتلین
کاتلین یک زبان برنامهنویسی عمومی، مستقل از سکو از نوع ایستا است که بر روی ماشین مجازی جاوا اجرا میشود. همچنین میتواند به سورس کد جاوا اسکریپت یا کد ماشین (توسط الالویام) نیز کامپایل شود. اولین توسعهٔ آن توسط تیم برنامهنویسان JetBrains واقع در سن پترزبورگ روسیه انجام شد. (این نام از روی جزیره کاتلین در نزدیکی سن پترزبورگ میآید.) کاتلین در ژانویهٔ سال ۲۰۱۲ به عنوان زبان ماه انتخاب شد. با وجود آنکه کاتلین از نظر syntax با جاوا سازگار نیست، این زبان طراحی شده تا با کد جاوا همکاری داشته باشد و قابلیت تبدیل به کد های جاوا یا برعکس در آن وجود دارد کتابخانههای استاندارد نسخه جاوای آن، متکی بر کتابخانههای کلاس جاوا است.
طراحی شده توسط | جتبرینز |
---|---|
توسعهدهنده | جتبرینز و همکاران منبعباز |
ظهوریافته در | ۲۰۱۱ |
انتشار پایدار | |
static, inferred | |
بنسازه رایانش | Outputs Java Virtual Machine bytecode and JavaScript source code |
سیستمعامل | Any supporting a JVM or JavaScript interpreter |
پروانه | آپاچی ۲ |
.kt, .kts | |
وبگاه | |
متأثر از | |
جاوا, اسکالا, گرووی, سی شارپ, Gosu, جاوااسکریپت |
تاریخچه
در ژوئیه ۲۰۱۱، 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
زبانهای مشابه
زبانهای دیگری نیز در نظر گرفته شدهاند تا زبانی بهتر از جاوا برای ماشین مجازی جاوا باشند.
- سیلان (برنامهنویسی)
- کلوژر
- فانتوم (زبان برنامهنویسی)
- گوسو (زبان برنامهنویسی)
- اسکالا
موضوعات مرتبط سربارگزاری عملگرها
منابع
- "JetBrains/kotlin". Github.