همه چیز درباره کاتلین؛ زبان برنامه نویسی اندروید
زبان برنامه نویسی کاتلین (Kotlin)، یک زبان برنامه نویسی محبوب و نسبتا جدید است که براساس پیش ببنی ترندهای برنامه نویسی سال 2020 یکی از بهترین پیشنهادها برای یادگیری است. کاتلین جوان اومده تا یک جایگزین مناسب برای جاوای پیر باشه. هدف اصلی از طراحی زبان کاتلین مختصر و بی نقص تر جاوا است تا بتونه یا جایگزین جاوا بشه یا بهش کمک کنه. هرچند تمرکز اصلی رو جاوا بوده ولی کاتلین میتونه رو بسترهای مختلف مثل جاوا اسکریپت و ناتیو هم اجرا بشه. در ایران بیشتر کاتلین برای برنامه نویسی اندروید شناخته شده، چون گوگل رسما این زبان رو به عنوان برنامه نویسی برای اندروید معرفی کرد. رشد کاتلین در چند سال اخیر فوق العاده بوده و هر روز هم تعداد توسعه دهندههای اون رو به افزایش هست.
اگه شماهم به یکی از محبوب ترین زبانهای برنامه نویسی دنیا علاقه مند شدید و دوست دارید در مورد کاتلین بیشتر بدونید، در ادامه ما همه چیز رو در مورد کاتلین بررسی خواهیم کرد از جمله:
- تاریخچه زبان برنامه نویسی کاتلین
- کاتلین یا جاوا؟ کدوم برای برنامه نویسی اندروید مناسب تر هستند؟
- ویژگیهای زبان برنامه نویسی کاتلین
- آیا لازمه برای یادگیری کاتلین، جاوا بلد باشیم؟
- برنامه های نوشته شده با کاتلین
- پیش بینی آینده کاتلین
تاریخچه زبان برنامه نویسی کاتلین
توسعه اولیه کاتلین، در اواسط سال 2011 در شهر زیبای سن پترزبورگ روسیه توسط تیم برنامهنویسی JetBrains صورت گرفته است. اسم زبان برنامه نویسی کاتلین از روی جزیره کاتلین در نزدیکی سن پترزبورگ گرفته شده است. حدود شش ماه بعد رونمایی یعنی در ژانویهٔ سال ۲۰۱۲ کاتلین به عنوان زبان ماه انتخاب شد. اولین ورژن پایدار (Stable) کاتلین در سال ۲۰۱۶ به نام ورژن 1.0 ارائه شد. در سال ۲۰۱۷ گوگل رسما این زبان را به عنوان زبان دوم برنامه نویسی برای اندروید معرفی کرد.
کاتلین یا جاوا؟ کدوم برای برنامه نویسی اندروید مناسب تر هستند؟
این سوال خیلی هاست. توی گروه های برنامه نویسی هم در این مورد زیاد بحث شده که برای برنامه نویسی اندروید کاتلین بهتره یا جاوا؟ اگر در ابتدای راه یادگیری برنامه نویسی اندروید باشید احتمالا پاسخ این سوال برای شما خیلی میتونه مهم باشه. پس بیان باهم یک مقایسه بین جاوا و کاتلین داشته باشیم.
از زبان سرپرست تیم توسعه دهندگان کاتلین Andrey Breslav : «کاتلین یک زبان قدرتمند و شیءگرا است که قصد دارد از جاوا بهتر عمل کند و به برنامه نویسان جاوا اجازه مهاجرت تدریجی به این زبان را بدهد.» اصلا کاتلین به وجود اومده تا زبانی بهتر از جاوا باشه، حقیقتم هم همینه چون کاتلین سینتکس بهتری نسبت به جاوا داره، کدهای کاتلین کمتر و خواناتر نسبت به جاوا است و کلی مورد بهبود یافته دیگه. پس به عبارت ساده تر کاتلین جوون اومده تا یک جایگزین شایسته برای جاوای قدیمی باشه.
زبان برنامه نویسی جاوا، سال ها به خاطر ویژگیهایی مثل شیگرا بودن، سادگی، قابلیت انتقال و امنیت برای توسعه برنامههای اندرویدی مورد استفاده قرار گرفته است. اندروید هم با اتکا به جاوا، تقریبا روی هر پلتفرمی قابل اجرا بوده. جاوا هنوز هم زبان بسیار قدرتمندی برای توسعه اپلیکیشن های اندرویدی هست. اما جاوا هم مثل هر زبان کامپایلری دیگه محدودیت های خودش را داره، مثل:
- نسخههای قدیمی جاوا مثل Java SE 8 و Java SE 7 که از قضا اغلب برنامهنویسها هم از اون استفاده میکنند، خطا زیاد تولید میکنه.
- برنامهنویسهایی که از جاوا برای توسعه اندروید استفاده میکنند از نبود برخی از ویژگیها مثل استریمها، لامبدا، متد رفرنس و … شاکی هستند.
- یک مشکل اساسی توی جاوا روش هندل کردن null در برنامه است. اما در کاتلین این قضیه حل شده و مقادیر null رو به خوبی هندل میشوند و به خاطر یک رشته نال، برنامه کرش نمیشه!
- و نکته آخر اینکه برای انجام یک کار خیلی ساده توی جاوا باید کلی کد بزنید 🙂
اما در کاتلین، که یک زبان برنامه نویسی متن باز، مستقل از سکو از نوع ایستا، با بررسی نوعها در زمان کامپایل و قابل اجرا روی ماشین مجازی جاوا (JVM) است این مشکلات رو به خوبی حل شده و دلایل اصلی محبوبیت کاتلین هم همین است. یعنی:
- در کاتلین کد کمتر و خواناتری نسبت به جاوا برای ایجاد یک برنامه مشابه می نویسید.
- با کدهای جاوایی که نوشتید همخوانی داره. در نتیجه میتونید جاوا رو با کاتلین قاطی کنید.
- اپلیکیشن هایی که با کاتلین مینویسید کمتر کرش میکنند چون مشکل NullPointerException را هندل کرده.
- اندروید استودیو ۳، کاتلین رو ۱۰۰ درصد پشتیبانی میکنه.
- و از همه مهمتر اینکه گوگل حامی زبان کاتلین را به عنوان زبان رسمی توسعه اندروید است.
با این اوصاف اگه در ابتدای راه یادگیری برنامه نویسی اندروید هستید، بدون شک کاتلین گزینه بهتری برای شروع برنامه نویسی اندروید است. البته این اصلا به این معنی نیست که جاوا خوب نیست. جاوا همچنان زبان بسیار قدرتمندیه و بسیاری از ابزارها در حوزههای مختلف با این زبان توسعه داده شده که زندگی بدون آنها بسیار سخت بود!
ویژگیهای زبان برنامه نویسی کاتلین
خب حالا که متوجه شدیم کاتلین برای برنامه نویسی اندروید گزینه فوق العاده ای هست بیان باهم ویژگی های زبان برنامه نویسی کاتلین رو بررسی میکنیم.
چند پلتفرمی: سمت سرور، اندروید و هرجا که جاوا اجرا میشه
همون طور که اشاره شد هدف اصلی در کاتلین طراحی زبانی بوده بهتر از جاوا که بتونه به جاوا کمک کنه یا جایگزین اون بشه، پس هرجا جاوا اجرا بشه کاتلین هم میتونه اجرا بشه. هرچند تمرکز اصلی رو جاوا بوده ولی کاتلین میتونه رو بسترهای مختلف مثل جاوا اسکریپت و ناتیو اجرا و حتی با موتور اینتل میتونه بر روی آی او اس هم اجرا بشه. کاتلین روی همه سیستم عامل ها هم قابلیت اجرا و پیاده سازی داره.
- Windows (x86_64 only at the moment)
- Linux (x86_64, arm32, MIPS, MIPS little endian)
- MacOS (x86_64)
- IOS (arm64 only)
- Android (arm32 and arm64)
- WebAssembly (wasm32 only)
ایستاتیک (Statically Typed)
کاتلین، مثل جاوا استاتیک است. یعنی در زمان کامپایل، نوع همه متغیرها و شناسه باید مشخص باشه. زبان وقتی دینامیک باشه، نوع ها زمان اجرا تعیین میشن، حجم کدش معمولا کمتره و تو بعضی جاها منعطف تره ولی یک غلط املایی میتونه کل سیستم رو بخوابونه.
تو کاتلین برای راحتی کار، کامپایلر میتونه بر اساس بستر و خروجی عملیات ها خودش اتوماتیک نوع رو مشخص کنه. مثلا اگر خروجی یک تابع رو میریزید تو یک متغیر لازم نیست تو تعریف متغیر نوعش رو بگید، کامپایلر خودش میفهمه و با همین ویژگی کلی حجم دستور رو کم می کنه.
در کنار همه نوع های که در جاوا هست در کاتلین نوع فانکشن و نوع نال هم قابل استفاده است تا هم زبان بتونه فانکشنال باشه و نال رو مدیریت کنه.
مزیت های اصلی زبان استاتیک تو کارایی، قابلیت اعتماد، نگهداری و ابزارهای خوبه.
هم شی گرا و هم تابع گرا
زبان های تابعگرا خیلی از مشکلای نرم افزار امروزی رو حل کردن و لازمه هر پلتفرمی شدن. تو کاتلین شما هم میتونید فانکشنال برنامه نویسی کنید هم شی گرا. سه ویژگی اصلی زبان های فانکشنال شامل تعریف تابع به عنوان یک نوع و ساید افکت نداشتن و ایمیوتیبلیتی یا تغییر ناپذیریه.
تو تعریف کاتلین مواردی مطرح میشه که عملا فلسفه کاتلین رو شامل میشن . خود طراحای زبان این موارد رو اینطوری تعریف کردن.
عملگرا (Pragmatic)
عملگرا به عبارت ساده یعنی زبانی باشه که بشه باهاش مسایل دنیای واقعی رو حل کرد. کاتلین از اکثر استاندارهای صنعتی پشتیبانی میکنه. شما رو مجبور به استایل خاصی از برنامه نویسی نمیکنه. ابزارهای خوبی داره و نکته مهم دیگه اینکه یک زبان دانشگاهی نیست که رو ویژگی های جدید تو حوزه زبان های برنامه نویسی متمرکز شده باشه.
مختصر (Concise)
هرچند نوشتن، مسایل خودشو داره و هرچی مختصر تر باشه بهتره اما اگه دقت کنیم میبینیم که زمان زیادی رو هم برای خوندن کد صرف میکنیم. حالا تصور کنید که یک زبان که مختصر تر باشه چه کمکی به ما میکنه. یه مثالشو اینجا میتونید ببیند.
امنیت (Safe)
وقتی صحبت از امنیت در زبان برنامه نویسی میشه، منظور اینه که زبان بتونه جلوی خطاهای خاصی رو بگیره. البته طبیعیه که زبان نمیتونه جلوی هر خطایی رو بگیره. گذشته از اون، این مساله هزینه داره. اینم مد نظر داشته باشید اجرا روی ماشین مجازی جاوا (JVM) خودش تضمین کننده امنیت در حد قابل قبولیه. کار خوبی که در کاتلین تو این زمینه انجام شده حذف خطای اشاره گر نال هست.
سازگاری و تعامل (Interoperable)
تمرکز اصلی در طراحی این زبان ارتباط با جاوا بوده و هست. شما میتونید یه پروژه رو همزمان با هردو زبان بنویسید یا از کتابخانه های جاوا تو کاتلین و برعکس استفاده کنید. یعنی تمام امکانات جاوا رو با یه زبان دیگه هم دارید که تو بعضی از مسایل بهتر از جاوا هم هست. کاتلین به طور کامل توسط اندروید استودیو هم پشتیبانی می شه.
کارایی (Performance)
کاتلین با سرعت بیشتری نسبت به جاوا اجرا می شود به خاطر استفاده از بایت کدهای ساده تر از جاوا. کاتلین از Inline function ها و Lambda پیشتیبانی می کند و Lambda اغلب از جاوا خام سرعت بیشتری دارد (البته در خود جاوا همین قضیه صادقه یعنی شما از Lambda که استفاده می کنی سرعت بالاتری داری).
ویژگی Footprint
کاتلین دارای کتابخانه Runtime بسیار کم حجم است که می میتونه از طریق استفاده از ProGuard هم بیشتر کاهش پیدا کنه.
زمان کامپایل
معمولا زمان کاپایل سریعتر از جاواست.
آیا لازمه برای یادگیری کاتلین، جاوا بلد باشیم؟
خیر! برای یادگیری کاتلین نیازی به یادگرفتن جاوا ندارید و میتونید بدون واسطه کاتلین رو یادبگیرید اما اگر از جاوا به سمت کاتلین مهاجرت می کنید،یادگیری برای شما لذت بخش تر خواهد بود.
برنامه های نوشته شده با کاتلین
شاید فکر کنید چون کاتلین یک زبان برنامه نویسی نسبتا جدید هست شرکت های بزرگ به اون اعتماد نمیکنند و نمیشه باهاش پروزه های بزرگ رو ساخت. اما جالبه بدونید شرکت های بزرگی مثل پینترست، اوبر، کورسرا، اورنوت و… برنامه هاشون رو با کاتلین مجدد بهینه کردند. پس کاتلین صد در صد قابل اعتماده و میتونید ازون در هر پروژه استفاده کنید!