What's Kotlin

کاتلین چیست؟

بدون ديدگاه

اگر شما علاقه‌مند به نوشتن اپلیکیشن‌های نیتیو باشید، حتما می‌دانید که اپلیکیشن‌های نیتیو اندروید با زبان جاوا نوشته می‌شوند. سالیان زیادی است که گوگل جاوا را به عنوان زبان نیتیو خود انتخاب کرده است و برنامه نویسان نیتیو اندروید از این زبان استفاده می‌کنند. اما بعد از سال‌ها پادشاهی جاوا، بالاخره گوگل کاتلین را به عنوان زبان رسمی برای توسعه اندروید معرفی کرد. این زبان کم کم در حال جا افتادن در میان برنامه نویسان است. همچنین سرعت رشد این زبان با توجه به قابلیت‌های ویژه‌‌ایی که دارد افزایش یافته است. در این مقاله قصد داریم کمی بیشتر راجب کاتلین صحبت کنیم پس با ترناو همراه باشید.

کاتلین

طبق توضیح ساده‌ایی که وبسایت Kotlin در نظر گرفته است، کاتلین یک زبان برنامه نویسی مدرن است که باعث می‌شود برنامه نویسان احساس بهتری داشته باشند. کاتلین یک زبان شی‌گرا، چندمنظوره، متن باز و… است. Kotlin نیز شبیه جاوا به بایت کد تبدیل می‌شود و توسط JVM اجرا می‌شود. سینتکس کاتلین نسبت به جاوا بسیار مختصر است. ادعایی وجود دارد در این زمینه، که اگر تکه کدی با عملکرد مشابه در کاتلین و جاوا نوشته شود، در کاتلین تعداد خط‌های نوشته شده ۴۰% کمتر از جاوا خواهد بود. کاتلین توسط JetBrains توسعه داده شده است و در حال حاضر گوگل قصد دارد تا این زبان را جایگزین جاوا کند. اولین بار در سال ۲۰۱۱ این زبان معرفی شد، ولی اولین ورژن رسمی آن در سال ۲۰۱۶ منتشر شد.

تفاوت سینتکس جاوا و کاتلین

مزایای کاتلین نسبت به جاوا

سینتکس آسان

جاوا علی رغم قدرت بسیار زیادی که دارد، یک‌سری ساختارهایی در سینتکس دارد که باعث طولانی شدن و پیچیده شدن کد می‌شود. در حالی که شما می‌توانید با کاتلین خیلی سریع‌تر کد بزنید. مثلا در Kotlin شما نیاز به گذاشتن سیمی‌کالن(نقطه‌ویرگول) در آخر هر خط ندارید. همانند Go و #F در کاتلین نیز نوع متغیر بعد از اسم آن تعریف می‌شود. البته سیتکس کاتلین بی‌شباهت به سینتکس زبان‌ C و زبان‌های مشتق آن مانند جاوا، سی شارپ و … نیست. همچنین برای تعریف متغیر می‌توانید صریحا نوع متغیر را بیان نکنید و اجازه دهید تا کامپایلر نوع متغیر را تشخیص دهد. کاتلین کد بسیار خوانایی دارد و توسط همه برنامه نویسان قابل فهمیدن است. Kotlin به گونه‌ای طراحی شده است که حتی یک شخص که کدنویسی نکرده است نیز می‌تواند متوجه مفهوم آن شود. کاتلین یک زبان نسل چهارم است. سینتکس زبان‌های نسل چهارم نسبت به زبان‌های نسل سوم بسیار شبیه زبان انسان شده است.

var age:Int = 20
var grade = 10 // type is inferred by compiler

  Null Safety

گاهی اوقات برنامه‌ایی که نوشته‌اید اجرا می‌شود، ولی خروجی که انتظار دارید را به شما نمایش نمی‌دهد. مقدار موردنظر برگردانده نمی‌شود و برنامه به خطا می‌خورد و اصطلاحا Crash می‌کند. معمولا یک برنامه اندروید وقتی کرش می‌کند شما با این پیغام مواجه می‌شوید: “متاسفانه اپلیکیشن متوقف شده است”. به این نوع خطاها اصطلاحا Exception (اِکسِپشِن) می‌گویند. یکی از معروف‌ترین Exceptionها در برنامه نویسی، Null Pointer Exception می‌باشد. این خطا زمانی رخ می‌دهد که شما یک رفرنس را فراخوانی می‌کنید در حالی که آن رفرنس به هیچ قسمتی از مموری اشاره نمی‌کند. مثلا کد زیر یک نمونه کد ساده سی شارپ می‌باشد. در سی شارپ به صورت مکرر با این خطا روبه رو می‌شویم. با اجرای کد زیر با خطا Null Pointer Exception روبه رو خواهیم شد.

class Person
}
;string name  
;int age  
{
class Program
}
   static void Main(string[] args)  
        }  
;Person person    
Console.WriteLine(person.name); // return NullPointerException    
        {  
{

کد بالا با خطای Null Pointer Exception رو به رو خواهد شد. همانطور که در مقاله برنامه نویسی شی گرا چیست توضیح دادیم، برای استفاده از یک کلاس باید یک شی از روی آن بسازید. به چند نمونه کد که Null Safety بودن کاتلین را اثبات می‌کند توجه کنید.

fun test(a: int, b: String?)
}
{

به متدی که در بالا تعریف کردیم توجه کنید. شاید از خود بپرسید که علامت سوالی که در اخر جلوی کلمه String آمده چیست؟ علامت سوال گذاشته شده به این معنی است که پارامتر (b) مقدار null نیز می‌تواند بگیرد. اگر متد بالا را به اینصورت فراخوانی کنیم test(3,null) مشکلی پیش نخواهد آمد. ولی اگر به این صورت فراخوانی شود (null,3)test با خطا روبه‌رو خواهیم شد. به صورت پیشفرض در کاتلین نمی‌توان به یک متغیر مقدار Null را نسبت داد.

قابلیت تعامل با جاوا

Kotlin به صورت کامل با جاوا سازگار است. شما نیاز نیست تا یک پروژه جدید برای کاتلین بسازید. بلکه می‌توانید در یک پروژه جاوا نیز در کنار کدهای جاوا، کد کاتلین بنویسید. همچنین شما با یک کلیک در اندروید استدیو، می‌توانید کد جاوا را به صورت کامل به کد کاتلین تبدیل کنید.

کلاس‌های داده

اکثر برنامه نویسان با getter و setter در class کار کرده‌اند. نقطه قوت کاتلین در اینجاست که در کاتلین نیازی به تعریف getter و setter نیست و بدون تعریف این متدها نیز می‌توان به اعضای یک کلاس دسترسی پیدا کرد.

جدید بودن کاتلین

همانطور که گفتیم کاتلین جزو زبان‌های نسل چهارم است به همین دلیل ویژگی‌های جدیدی را شامل می‌شود. از قبیل Lambda Function، Smart Cast، Null Safety, Operator Overloading و… . جاوا تقریبا ۲۵ سال سابقه دارد و یک سری قابلیت‌ها را یا ندارد و یا به سختی می‌توان پیاده سازی کرد.

 

کاتلینِ زیاده خواه

طبیعی است که با به وجود آمدن زبان‌های کراس پلتفرم (مانند فلاتر) و پیشرفت روزبه روز آنها، زبان‌های نیتیو باید احساس خطر کنند. احتمالا با خود گفتید که قدرت زبان‌های نیتیو نسبت به کراس پلتفرم بسیار بیشتر است. بله دقیقا همینطور است. طبیعتا وقتی یک زبان مختص یک پلتفرم طراحی شده بسیار سریع‌تر و قدرتمندتر خواهد بود نسبت به زبان یا فریم ورکی که طراحی شده است تا چند پلتفرم را پوشش دهد. اما به این مورد هم توجه داشته باشید که مثلا فریم ورکی مانند فلاتر که روز به روز در حال بهبود است ممکن است کم کم به یک هیولا تبدیل شود. اما Kotlin نیز برای اینکه از رقبای خود عقب نیفتد بعد از فتح سرزمین اندروید باز هم از عطش آن چیزی کم نشد. کاتلین به خون IOS و JavaScript تشنه بود =)) . در نتیجه کاتلین دو تکنولوژی زیر بسیار گسترش یافت:

  • Kotlin/JS برای توسعه جاوا اسکریپت
  • Kotlin/Native برای توسعه C و IOS

Kotlin/Native

کاتلین نیتیو یک تکنولوژی برای کامپایل شدن کدهای کاتلین به کدهای باینریی نیتیو است که می‌تواند بدون نیاز به ماشین مجازی اجرا شود. کاتلین نیتیو از سیستم عامل های زیر پشتیبانی می‌کند. این قابلیت افرادی که تازه می‌خواهند با کاتلین کار کنند را به وجد می‌آورد.

  • iOS
  • Android
  • Windows
  • Linux
  • WebAssembly

توجه داشته باشید که کاتلین یک زبان Cross Platform به حساب نمی‌آید. کد Kotlin همانند پلاستیک است. باید دوباره از آن استفاده کنید. هدف کاتلین این نیست که شما یک‌بار کد بنویسید و آن را در پلتفرم‌های مختلف مانند اندروید و iOS استفاده کنید.

Kotlin/JS

Kotlin یک قابلیت را برای هدف گذاری روی جاوا اسکریپت فراهم کرده است. با استفاده از این قابلیت کدهای کاتلین به کدهای جاوا اسکریپت Transpoil می‌شوند. در ادامه مفهوم Transpoil را توضیح داده‌ایم.

Transpoil چیست؟

ترنسپویل به تبدیل سورس‌های یک زبان به زبان دیگر می‌گویند. ترنسپویلرها به عنوان Source-To-Source کامپایلر نیز شناخته می‌شوند. همانطور که در بالاتر راجب Kotlin/JS توضیح دادیم، با استفاده از این تکنولوژی می‌توان سورس کاتلین را به سورس جاوا اسکریپت Transpoil کرد.

نتیجه گیری

با توجه به پیشرفت روزافروزن تکنولوژی، اگر بخواهیم خود را محدود به تکنولوژی‌های قدیمی کنیم قطعا کم کم باعث کناره گیری ما از بازار خواهد شد. بنابراین باید سعی کنیم که با یک استراتژی مناسب خود را با تکنولوژی‌های جدید که در دنیای کامپیوتر وجود دارد هماهنگ کنیم. این مورد مخصوصا در دنیای کامپیوتر خیلی بیشتر به چشم می‌آید. چون پیشرفت در زمینه کامپیوتر بسیار سریع است. اگر جاوا کار کرده باشید، احتمالا روی این زبان تعصب دارید. پیشنهاد ما به شما این است که با گارد باز راجب این موضوع تحقیق کنید که کاتلین چه برتری‌هایی نسبت به جاوا دارد. اطمینان داشته باشید که اگر بتوانید مسیر کاری خود را به سمت کاتلین ببرید، تنها نفری که در این میان سود می‌کند خود شما هستید!

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.