در این مطلب، به بررسی زبان برنامهنویسی کاتلین (Kotlin Programming Language) پرداخته شده است. جامعه توسعهدهندگان نرمافزارهای کاربردی موبایل که از زبان کاتلین استفاده میکنند، به سرعت در حال افزایش است. در سال ۲۰۱۷، گوگل، کاتلین را به عنوان دومین زبان رسمی خود برای توسعه اندروید معرفی کرد. از آن زمان تاکنون، رشد بسیار بزرگ و مهمی در تقاضا برای این زبان برنامهنویسی در میان توسعهدهندگان و جوامع کسب و کار به وقوع پیوسته است. گوگل در حال حاضر زبان برنامه نویسی کاتلین را به عنوان یکی از بهترین زبانهای برنامهنویسی برای توسعه اپلیکیشنهای اندرویدی اعلام کرده است. این نشان میدهد که آینده خوبی در انتظار این زبان برنامهنویسی است.
«کاتلین» (Kotlin) یک زبان برنامهنویسی «تایپ استاتیک» (Statically Typed) و «همهمنظوره» (General-Purpose) است که توسط «جتبرینز» (JetBrains) توسعه داده شده و دارای «محیطهای توسعه یکپارچه» (Integrated Development Environment) کلاس جهانی مانند «اینتلیج آیدیا» (IntelliJ IDEA)، «پیاچپیاستورم» (PhpStorm)، «اپکد» (Appcode) و دیگر موارد است.
«کاتلین» (Kotlin) ابتدا و در سال ۲۰۱۱ میلادی توسط جتبرینز به عنوان زبان جدیدی برای JVM معرفی شد. این زبان، یک زبان برنامهنویسی «شیگرا» (Object Oriented) است و به زعم بسیاری از افراد، بهتر از «جاوا» (Java) محسوب میشود.
گوگل اسپانسر کاتلین است. این زبان در سال ۲۰۱۷، توسط گوگل، به عنوان دومین زبان رسمی برای توسعه اندروید معرفی شد. مثالی از کد نوشته شده به این زبان، در ادامه ارائه شده است.
1
2
3
4
fun main()
{
println("Hello Geeks");
}
در ادامه، برخی از ویژگیهای کلیدی زبان برنامه نویسی کاتلین مورد بررسی قرار میگیرد.
تایپ استاتیک: تایپ استاتیک یک مشخصه برنامهنویسی کامپیوتری است؛ بدین معنا که نوع هر متغیر و عبارت در زمان کامپایل شناخته میشود. با وجود اینکه کاتلین یک زبان تایپ استاتیک است، نیاز به این ندارد که نوع هر متغیر صراحتا «اعلان» (Declare) شود.
کلاسهای داده: در این زبان، «کلاسهای دادهای» (Data Classes) وجود دارد که منجر به تولید خودکار تساویهای قابل استفاده مجدد (Boilerplate Like Equals)، «هش کد» (HashCode) و toString و بسیاری از گزینههای دیگر میشود.
کد جاوای زیر، در این راستا مثال زیر قابل توجه است.
/* Java Code */
class Book {
private String title;
private Author author;
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public Author getAuthor()
{
return author;
}
public void setAuthor(Author author)
{
this.author = author;
}
اما در کاتلین، تنها از یک خط برای تعریف کلاس بالا استفاده میشود.
1
2
/* Kotlin Code */
data class Book(var title:String, var author:Author)
اختصار: این زبان، به طور چشمگیری میزان کدی که نیاز به نوشتن آن برای یک منظور خاص است را نسبت به کدهای مورد نیاز برای همان کار در دیگر زبانهای برنامهنویسی شیگرا، کاهش میدهد.
امنیت: زبان برنامه نویسی کاتلین امنیت را در مواجهه با NullPointerExceptions با پشتیبانی از Nullability به عنوان بخشی از سیستم خود، استفاده میکند. هر متغیری در این زبان، به طور پیشفرض غیر نال است.
1
String s = "Hello Geeks" // Non-null
اگر تلاش شود تا به s یک مقدار نال تخصیص داده شود، خطای زمان کامپایل نمایش داده میشود.
1
s = null // compile time error
برای تخصیص مقدار Null به هر رشته، آن را باید به عنوان رشته قابل نال شدن (Nullable) معرفی کرد.
1
String nullableStr? = null // compiles succesfully
تابع length() در رشته قابل نال شدن غیر فعال شده است.
قابل تفسیر با جاوا: کاتلین روی «ماشین مجازی جاوا» (Java Virtual Machine | JVM) نیز اجرا میشود؛ بنابراین به طور کلی با جاوا قابل تفسیر است. میتوان به سادگی به کد جاوا از کاتلین و از جاوا به کد کاتلین دسترسی داشت.
قابلیتهای تابعی و شیگرا: کاتلین دارای غنیترین مجموعه از ابزارهای کارآمد بسیاری است که شامل توابع سطح بالاتر، عبارات لاندا (Lambda Expression)، «سربارگذاری عملگرها» (Operator Overloading)، «ارزیابی کندرو» یا «فراخوانی به هنگام نیاز» (Lazy Evaluation) و بسیاری از دیگر موارد میشود. تابع مرتبه بالاتر، تابعی است که تابع را به عنوان پارامتر دریافت میکند و یا تابع را باز میگرداند و یا هر دو کار را انجام میدهد. مثالی از «تابع مرتبه بالاتر» (Higher-Order Function) در ادامه ارائه شده است.
fun myFun(company: String,product: String, fn: (String,String) -> String): Unit {
val result = fn(company,product)
println(result)
}
fun main(args: Array){
val fn:(String,String)->String={org,portal->"$org develops $portal"}
myFun("JetBrains","Kotlin",fn)
}
خروجی قطعه کد بالا به صورت زیر است.
JetBrains develops Kotlin
اسمارت کَست (Smart Cast): زبان کاتلین به طور صریح به «تبدیل کردن نوع» (تایپ کَست یا Typecast) مقادیر غیر قابل تغییر (Immutable) میپردازد و مقادیر را به طور خودکار در اسمارت کَست قرار میدهد.
تلاش برای دسترسی داشتن به یک نوع قابل نال کردن از رشته (”String? = “BYE) بدون استفاده از اسمارت کَست، منجر به ایجاد خطای کامپایل میشود.
1
2
3
4
5
fun main(args: Array){
var string: String? = "BYE"
print(string.length) // compile time error
}
fun main(args: Array){
var string: String? = "BYE"
if(string != null) { // smart cast
print(string.length)
}
}
زمان کامپایل: کاتلین، نسبت به برخی از دیگر زبانها، دارای کارایی بالاتر و زمان اجرای سریعتری است.
ابزارپسندی (Tool- Friendly): زبان کاتلین دارای پشتیبانی فوقالعادهای از ابزارها است. همه IDEهای جاوا (IntelliJ IDEA، «ایکیلیپس» (Eclipse) و اندروید استودیو)، برای کاتلین قابل استفاده هستند. همچنین، میتوان برنامه کاتلین را از خط فرمان اجرا کرد.
در ادامه، برخی از مزایای زبان برنامهنویسی کاتلین مورد بررسی قرار میگیرد.