معرفی زبان برنامه نویسی کاتلین
در دنیای برنامه نویسی موبایل، همه چیز مدام در حال تغییر است. البته این مسئله خیلی عجیب نیست، چرا که فناوری و دنیای فناوری مدام در حال تغییر و پیشرفت است. به همین منوال، عناصر موجود در آن مثل توسعه و برنامه نویسی موبایل نیز تغییر میکنند. یکی از آخرین تغییراتی که در دنیای توسعه و برنامه نویسی موبایل به وجود آمده، معرفی زبان کاتلین بود.
در ماه می ۲۰۱۹، گوگل اعلام کرد که زبان کاتلین را به عنوان زبان ارجح خود برای توسعه اپهای اندروید انتخاب کرده است. در بیانیه گوگل اعلام شده بود که مهم ترین ویژگی زبان برنامه نویسی کاتلین، موجز و آسان بودن آن است. به این معنا که برای نوشتن یک برنامه، به تعداد خطوط کد کمتری احتیاج است.
البته بیانیه گوگل غیر منتظره نبود. گوگل دو سال پیش از این بیانیه، پشتیبانی خود از زبان برنامه نویسی کاتلین را اعلام کرده بود. در واقع گوگل از این زبان برنامه نویسی در کنار جاوا، به عنوان زبانهای توسعه اندروید پشتیبانی میکرد. سادگی و ویژگیهای مثبت بسیار کاتلین، باعث شد تا خیلی زود به محبوب ترین زبان برنامه نویسی اندروید تبدیل شود و جاوا را کنار بزند. اگرچه کاتلین امروزه به عنوان زبان برنامه نویسی اندروید شناخته میشود، اما در پلتفرمهای دیگر از جمله iOS نیز کاربرد دارد.
در مقالهی آموزشی قصد داریم تا به این زبان برنامه نویسی بپردازیم و بیشتر با آن آشنا شویم.
کاتلین چیست؟
کاتلین (به انگلیسی: Kotlin) یک زبان برنامه نویسی متن باز است که از نظر متغیر، استاتیک محسوب میشود. زبانهای برنامه نویسی از نظر مشخص کردن نوع متغیر به دو نوع استاتیک و دینامیک تقسیم میشوند. در نوع متغیر استاتیک، در هنگام تعریف متغیر در برنامه، حتما باید نوع (type) آن متغیر مشخص شود. (مثلاً این که متغیر string است decimal). زبان برنامه نویسی کاتلین نیز به مانند زبانهای جاوا، C و C++ از نظر متغیر، استاتیک یا اصطلاحاً static-typed است.
این زبان برنامه نویسی در سال ۲۰۱۱ توسط گروه نرم افزاری JetBrains معرفی شد. اما در ۵ سال ابتدایی، مورد توجه قرار نگرفت. توسعه دهندگان این زبان برنامه نویسی توضیح دادهاند که کاتلین به این خاطر ساخته شد که هیچ کدام یک از زبانهای برنامه نویسیِ ماشین مجازی جاوا (Java Virtual Machine یا JVM) به غیر از اسکالا (Scala) دارای ویژگیهای مناسب و لازم نبودند. البته زبان برنامه نویسی اسکالا هم دارای ضعفهایی بود از جمله سرعت کامپایل بسیار پایین.
نام این زبان برنامه نویسی یعنی کاتلین، از جزیره کاتلین در نزدیکی سنت پترزبورگ گرفته شده است. سرپرست تیم توسعه این زبان توضیح داده که آنها تصمیم گرفتند تا به مانند جاوا، نام این زبان را از روی یک جزیره انتخاب کنند. البته نام جاوا مستقیماً از نام یک جزیره گرفته نشده. نام جاوا از قهوه جاوا که در جزیرهای اندونزیایی به همین نام تولید میشود، گرفته شده است.
کاتلین نهایتاً در سال ۲۰۱۷ و با اعلام رسمی گوگل مبنی بر پشتیبانی از این زبان، مورد توجه عمومی قرار گرفت. از آن زمان تا کنون محبوبیت این زبان برنامه نویسی مدام در حال افزایش بوده است. در ادامه به دلایل این محبوبیت نیز خواهیم پرداخت.
چه اپهایی از کاتلین استفاده میکنند؟
بسیاری معتقدند که زبان برنامه نویسی کاتلین، عصر جدیدی را در توسعه اندروید آغاز کرده است و نهایتاً جاوا را کنار خواهد زد. آمارها نشان میدهد در حال حاضر بیش از ۶۰ درصدِ توسعه دهندگان اندروید از کاتلین استفاده میکنند. همچنین کاتلین در گیت هاب از نظر تعداد مشارکت کنندهها، رکورد سریع ترین رشد را در اختیار دارد.
بنابراین جای تعجب ندارد که بسیاری از محبوب ترین اپهای دنیا با زبان برنامه نویسی کاتلین نوشته شدهاند. تعدادی از معروفترینِ آنها را در ادامه آوردهایم:
- گوگل
- پینترست
- ترلو (Trello)
- اورنوت (Evernote)
- نتفلیکس
- ایربیانبی (Airbnb)
در مطلب “زبان برنامه نویسی اپلیکیشن های معروف جهان” به برنامه هایی که از زبان کاتلین برای طراحی اپلیکیشن اندروید خود استفاده کردند اشاره کردیم.
موارد استفاده از کاتلین
زبان برنامه نویسی کاتلین با هدف توسعه عمومی و در پلتفرمهای مختلف، طراحی شده است. به این معنا که از این زبان برنامه نویسی علاوه بر اندروید در جاوا اسکریپت و حتی توسعه سرور نیز استفاده میشود. ویژگی مهم کاتلین این است که به توسعه دهندگان اجازه میدهد تا از فریم ورکها و لایبرریهای معروف مصل ReactJS و VueJS استفاده کنند.
امروزه از این زبان برنامه نویسی به صورت عمده در توسعه اندروید استفاده میشود. در ادامه زیر پروژهها یا زیر مجموعههای کاتلین را با هم بررسی میکنیم:
- Kotlin/JVM: با استفاده از آن میتوان برنامههای ماشین مجازی جاوا یا JVM را نوشت، چرا که این زیرمجموعه قادر است تا کدها را به جاوا برگرداند.
- Kotlin/JS: قابلیت تبدیل اپلیکیشنهای وب به جاوا اسکریپت را فراهم میکند.
- Kotlin/Native: قابلیت نوشتن اپلیکیشن برای برخی دستگاهها از جمله iOS را فراهم میکند.
زبان برنامه نویسی کاتلین از توسعه اپلیکیشن چند پلتفرمی (مالتی پلتفرم) پشتیبانی میکند. به این معنا که کدهای اپهای مختلف در پلتفرمهای مختلف میتواند مشترک باشد. معروف ترین استفاده از این ویژگی در اشتراک و ارتباط اپلیکیشن اندروید کاتلین و اپلیکیشنِ iOS آن است.
سینتکس (Syntax) زبان کاتلین
سینتکس به صورت عمومی به معنای نحوه نگارش و قرار گیری کلمات و عبارت در کنار هم است به صورتی که معنای درستی بدهند. در علم کامپیوتر و برنامه نویسی، سینتکس به معنای نحوه قرار گیری و ترکیب کلمات است که باعث میشود تا یک کد معنای درستی بدهد یا به عبارت صحیحتر، عمل کند.
از نظر زبان نوشتن و سینتکس، زبان برنامه نویسی کاتلین به گونهای طراحی شده که خوانا، عملگرا و امن باشد. این سه صفت، در واقع سه ستون و پایه اصلی این زبان هستند که در ادامه توضیحات مفصلتری در مورد آنها میدهیم:
- خوانا بودن: زبان برنامه نویسی کاتلین از ویژگیهای مثل تشخیص تایپ متغیر، کلاسهای دیتا و توابع infix برخوردار است. این ویژگیها باعث میشود که کد در مختصرترین حالت ممکن نوشته شود و خوانا بودن آن نیز دچار مشکل نشود. منظور از خوانا بودن این است که اگر شخص دیگری کد را خواند، به راحتی بتواند متوجه شود. خوانا بودن یکی از ویژگیهای مهم در حیطه برنامه نویسی است.
- عملگرایی: گروه توسعه نرم افزاری JetBrains (خالق کاتلین) سعی میکنند تا با دریافت فیدبک و نظرات جامعه توسعه دهندگان، مشکلات احتمالی در این زبان را برطرف کنند و همچنین مشکلات موجود در محیطهای یکپارچه توسعه (IDE) را نیز برطرف میکنند.
- امنیت: در کاتلین تلاش شده تا از باگهای معمول در اپها پیشگیری شود. از جمله این کارها میتوان به تعریف تایپ پوچ برای آن اشاره کرد.
دلیل محبوبیت بالای کاتلین بین توسعه دهندگان چیست؟
گفتیم که این زبان برنامه نویسی در حال حاضر بین توسعه دهندگان اندروید محبوب ترین است و سرعت رشد و فراگیری آن نیز چشمگیر و رکورد شکن بوده است. اما چه ویژگیهایی باعث شده تا این زبان برنامه نویسی به این حد از محبوبیت برسد؟چرا توسعه دهندگان تا این حد به این زبان علاقه دارند؟ در این بخش دلایل و ویژگیهای مختلف زبان کاتلین که باعث شده تا این زبان برنامه نویسی به یکی از محبوبترینها و محبوبترین در اندروید بدل شود را بررسی کردهایم.
۱. متن باز بودن
هدف اولیه از ساخت زبان کاتلین، ساختن زبانی مختصر و سازگار با جاوا و جاوااسکریپت بود. گروه نرم افزاری JetBrains در سال ۲۰۱۲ تصمیم گرفت تا این پروژه را به یک پروژه آزاد متن باز تبدیل کند. از آن زمان تا کنون، توسعه دهندگان بسیاری در مسیر رشد و توسعه دنیای برنامه نویسی اپلیکیشنها مشارکت کردهاند.
۲. کاهش حجم کدها
زبان برنامه نویسی جاوا برای اجرای ساده ترین برنامهها به یک سری کد با جزئیات زیاد احتیاج دارد. اما در کاتلین این گونه نیست. کامپایلر این زبان برنامه نویسی، بسیاری از بخشها را به صورت خودکار تشخیص میدهد و احتیاج به نوشتن آنها نیست. بنابراین برنامه نویسی با این زبان نسبت به زبان جاوا بسیار ساده تر است. بررسیها نشان میدهد که به صورت میانگین، توسعه دهنده با زبان کاتلین ۲۰ درصد کد کمتری نسبت به جاوا مینویسند.
در این زبان برنامه نویسی تا جایی که ممکن بوده، تکرارها و مکررات حذف شده و همین موضوع باعث شده تا حجم کدها به صورت قابل توجهی کاهش یابد. در نتیجه برنامه نویسان میتوانند به جای نوشتن بخشهای اضافه و هدر دادن زمان خود، وقت خود را صرف بخشهای مفیدترِ کدنویسی کنند.
۳. پشتیبانی گوگل
احتمالاً یکی از مهم ترین ویژگیهای این زبان برنامه نویسی این است که گوگل از آن پشتیبانی میکند. پیشتر هم گفتیم که رشد واقعی این زبان در بین توسعه دهندگان در جایی آغاز شد که گوگل اعلام کرد از این زبان پشتیبانی خواهد کرد.
گوگل در همایش سالانهاش در سال ۲۰۱۷ اعلام کرد که از کاتلین به عنوان یکی از زبانهای برنامه نویسی و توسعه اندروید پشتیبانی خواهد کرد. این اتفاق باعث شد تا توجه بسیاری به این زبان جلب شود و مشارکت کنندگان آن افزایش یابد. ضمن این که استفاده از این زبان باعث شد تا بسیاری از مشکلات معمول و باگهای موجود در اندروید مرتفع شود.
۴. سازگاری با کدهای جاوا
گفته میشود زبانهای برنامه نویسی هم به مانند زبانهای ارتباطی انسانها هستند: هر چه تعداد بیشتری از انسانها با آن سخن بگویند، برای آن زبان و رشدش بهتر است. و برای رسیدن به این هدف، میتوان در خلق زبانهای جدید از زبانهای معروف و محبوب پیشین به عنوان پایه استفاده کرد. اتفاقی که دقیقاً برای کاتلین هم افتاده است. در ساخت این زبان برنامه نویسی، از زبان جاوا به عنوان پایه استفاده شده است.
این کار باعث شده تا کاتلین با زبان برنامه نویسی جاوا انطباق و سازگاری کامل داشته باشد. همین سازگاری هم دلیل دیگری است که توسعه دهندگان را به کاتلین علاقه مند کرده است.
با وجود این که سینتکس زبانی کاتلین با جاوا سازگار نیست، اما این زبان برنامه نویسی به گونهای طراحی شده که بتواند در کنار جاوا نیز کار کند. به این معنی که یک موجود جاوا از قبل، به خوبی و درستی میتواند با کدهای کاتلین ارتباط برقرار و کار کند و همچنین یک کد کاتلین نیز میتواند با کدهای جاوا ارتباط برقرار و کار کند.
در محیط یکپارچه توسعهی کاتلین یا همان IDE، یک ابزار تبدیل کننده جاوا به کاتلین نیز وجود دارد. از طرفی این زبان برنامه نویسی سعی کرده تا برخی ایرادات و اشکالات مهم جاوا را نیز برطرف کند. همین موضوع نیز باعث شده تا در بین توسعه دهندگان محبوب شود. ضمن این که نسبت به جاوا، این زبان برنامه نویسی بسیار امنتر است.
۵. زبان شی گرا و کاربردی
شی گرا (object oriented) کاربردی بودن این زبان برنامه نویسی، باعث برتری آن نسبت به بسیاری دیگری از زبانهای برنامه نویسی شده است. این ویژگی این امکان را به توسعه دهندگان و برنامه نویسان میدهد که از این زبان برنامه نویسی در نوشتن برنامههای شی گرا استفاده کنند و از انواع مختلف توابع بدون هیچ مشکلی استفاده نمایند.
۶. توسعه سرور
همان گونه که پیش از این نیز چندین بار به آن اشاره کردیم، از این زبان برنامه نویسی فقط برای توسعه اندروید استفاده نمیشود و میتوان از آن برای توسعه سرور نیز استفاده کرد. این زبان برنامه نویسی با JVMwhile سازگاری صد در صدی دارد و با استکهای موجود که بر پایه جاوا نوشته شدهاند نیز سازگاری دارند. بنابراین توسعه دهندگان و برنامه نویسان میتوانند از آن برای توسعه سرور نیز استفاده نمایند.
۷. استفاده از فریم ورکها و لایبرریهای جاوا
این قابلیت بسیار مهم در کاتلین وجود دارد که در آن میتوانید از فریم ورکها و لایبرریهای (library) موجود در جاوا نیز استفاده کنید. همچنین این زبان برنامه نویسی دارای فریم ورکها و لایبرریهای اختصاصی پیشرفته نیز برای خود میباشد.
۸. قابلیت توسعه مالتی پلتفرم یا چند پلتفرمه
یکی دیگر از مزیتهای بسیار مهم این زبان برنامه نویسی، قابلیت توسعه مالتی پلتفرم یا چند پلتفرمه است. به این معنا که از آن میتوان در انواع مختلف توسعه استفاده کرد. از توسعه سرور گرفته تا اندروید و iOS. از این زبان میتوان در JVM استفاده کرد که به این معناست که امکان به اشتراک گذاری کد در پلتفرمهای مختلف وجود دارد. همچنین به توسعه دهندگان اجازه میدهد تا از بسیاری از کدههای از پیش نوشته شده استفاده کنند که این خود در وقت و زمان برنامه نویسان، صرفه جوییِ چشمگیری میکند.
زبان برنامه نویسی کاتلین در عمل نیز کارایی خود را اثبات کرده است. به گونهای که بسیاری از اپکلیشنهای مشهور نیز در توسعهشان از این زبان استفاده کردهاند. از پینترست گرفته تا کورسرا، ترلو و اورنوت، همگی از این زبان برنامه نویسی استفاده میکنند و مثالهای خوبی برای نشان دادن کارایی و موفقیت این زبان هستند.
مقایسه کاتلین و جاوا
برای سالهای طولانی، زبان برنامه نویسی جاوا به عنوان زبان اصلی توسعه اندروید و سمت سرور (server side) مورد استفاده قرار میگرفت. با این حال در سالهای اخیر ظهور و گسترش زبان برنامه نویسی کاتلین، باعث شده تا جایگاهِ همیشه غالبِ جاوا به خطر بیفتد. در این بخش، میخواهیم به مقایسهای میان این دو زبان برنامه نویسی بپردازیم و شباهتها و بیشتر تفاوتهای آنها را با هم بررسی کنیم.
حجم، پیچیدگی و کیفیت کد
زبان برنامه نویسی جاوا به گونهای است که برای نوشتن سادهترین کدها و برنامهها باید تعداد زیادی خط کد نوشت. اما زبان برنامه نویسی کاتلین این اجازه را به توسعه دهندگان میدهد که همان برنامهها را با میزان کمتری کد بنویسند. این ویژگی باعث میشود تا توسعه دهندگان بتوانند برنامههای خود را مرتبتر و خواناتر بنویسند و استفاده مجدد از آنها ممکنتر باشد. در مجموع این ویژگی باعث میشود تا در وقت و انرژی توسعه دهندهها صرفه جویی شود و بهره وری برنامه نویسان افزایش یابد.
عدم وجود NPE یا NullPointerException
NPE یکی از دلایل اصلی ایجاد مشکل در اندروید است، چرا که جاوا به توسعه دهندگان اجازه میدهد تا متغیرهای null را به یک شی اختصاص دهند. نتیجه این موضوع کرش کردن اپهای اندروید است. در مقابل، زبان برنامه نویسی کاتلین، ویژگی null safety را معرفی کرده است که به این معناست که دیگر هیچ شی یا متغیری نمیتواند به یک null اختصاص داده شود. بنابراین مشکل کرش کردن اپهای اندروید که به وسیله این مشکل پیش میآمد، در اپهای توسعه داده شده با این زبان برنامه نویسی به هیچ وجه رخ نخواهد داد.
سازگاری و همکاری
سازگاری و امکان همکاری میان دو زبان برنامه نویسی، یکی از ویژگیهای بسیار جذاب کاتلین است. این ویژگی اجازه میدهد تا بخشی از برنامههای نوشته شده با این زبان، بتوانند با زبان جاوا کار کنند و همچنین بالعکس. یعنی در بخشی از برنامههای جاوا نیز میتواند کدهای کاتلین را فراخوانی و از آنها استفاده کرد.
زمان کامپایل
از لحاظ اجرا و زمان کامپایل، سرعت جاوا و کاتلین تفاوت چندانی ندارد. با این حال، وجود برخی ویژگیهای درونی این زبان برنامه نویسی و همچنین برخی توابع باعث شده تا توسعه دهندگان بتوانند اپهایی بنویسند که سریعتر از اپهای نوشته شده با جاوا کار میکنند.
در واقع به صورت خلاصه میتوان گفت که اختصار موجود در این زبان برنامه نویسی و همچنین توابع و ویژگیهای مختلف آن، باعث شده تا کامپایل کدهای آن نسبت به کدهای جاوا سریعتر انجام شود. وگرنه در اصل، سرعت کامپایل بین این دو، تفاوت چندانی ندارد.
برنامه نویسی تابعی
برنامه نویسی تابعی یا برنامه نویسی بر اساس توابع، نوعی رویکرد برنامه نویسی است که در آن از ترکیب توابع برای انجام عمل مورد نظر در برنامه استفاده میشود. جاوا از برنامه نویسی تابعی پشتیبانی میکند، اما تنها در جاوای نسخه ۸. بیشتر توسعه اندروید با جاوا ۶ و ۷ انجام میشود که در آنها خبری از توابع نیست. از طرف دیگر زبان برنامه نویسی کاتلین، از توابع زیادی متشکل شده که میتوان با استفاده از آنها برنامههای تابعی نوشت. این زبان برنامه نویسی دارای متدها و توابعی است که حتی در جاوای نسخه ۸ نیز موجود نیستند.
در مقاله “مقایسه کاتلین با جاوا” به صورت کامل تر به مقایه بین این دو برای برنامه نویسی موبایل پرداخته ایم.
دانلود و نصب آخرین نسخه کاتلین
برای نصب و توسعه کاتلین بر روی کامپیوتر خود میتوانید آخرین نسخه این زبان برنامه نویسی را از اینجا دانلود نمایید. این لینک، صفحه رسمی توسعه دهندگان این زبان برنامه نویسی در گیت هاب است که آخرین نسخه آن را همراه با ذکر آخرین تغییرات، در این صفحه درج میکنند.
پس از نصب این زبان برنامه نویسی، میتوانید در IDE مورد علاقه خود از این زبان استفاده کنید. برای توسعه اندروید معمولاً از اندروید استودیو استفاده میشود.
شروع برنامه نویسی و یک کد نمونه
یک رسم معمول در دنیای نرم افزار و کامپیوتر این است که یادگیری یک زبان برنامه نویسی جدید، با نوشتن برنامهای آغاز میشود که آن برنامه عبارت Hello world یا سلام دنیا را چاپ کند. اگر با زبانهای برنامه نویسی آشنایی داشته باشید، حتماً با این موضوع آشنا شدهاید.
ما هم در این جا قصد داریم تا یک برنامه ساده با زبان کاتلین را به شما نشان دهیم که همین کار را انجام میدهد. به علاوه توضیحاتی نیز راجع به قسمتهای مختلف برنامه و نحوه عملکرد آن نیز بیان میکنیم تا یک آشنایی اولیهای با این زبان به دست آورید.
کد زیر به زبان کاتلین نوشته شده است:
// Hello World Program
fun main(args : Array<String>) {
println(“Hello, World!”)
}
که نتیجهاش میشود:
Hello, World!
اما این برنامه دقیقاً چگونه کار میکند؟ در ادامه به توضیح این مسئله میپردازیم.
اگر دقت بخش اول برنامه با // آغاز شده است و جلوی آن نام برنامه نوشته شده. // علامتی برای کامنت گذاشتن در برنامههای کاتلین است. دقیقاً این قانون در جاوا نیز وجود دارد. کامپایلر هر آن چه که در جلوی این علامت نوشته شود را در نظر نمیگیرد. مشابه آن در زبان برنامه نویسی پایتون نیز وجود دارد که در آنجا از # استفاده میشود.
بخش بعدی تابع main را تعریف کرده است. تابع اصلی زبان برنامه نویسی کاتلین که وجود آن در هر برنامهای ضروری است. کامپایلر با دیدن این تابع شروع به اجرای کد میکند. اگر یادگیری این زبان برنامه نویسی را آغاز کنید، با این تابع آشنایی بیشتری پیدا خواهید کرد. ولی در حال حاضر فقط کافی است بدانید که در شروع هر برنامهای، لازم است تا تابع main به همین صورتی که در کد میبینید، تعریف شود. وگرنه کامپایلر کد را اجرا نخواهد کرد.
تابع printIn() هر آنچه که در داخل پرانتز آن نوشته شده باشد را عیناً چاپ میکند. که در مثال ما عبارت Hello, World! در داخل آن نوشته شده و در نتیجه وقتی کد اجرا میشود، این عبارت عیناً چاپ میشود.
برای مقایسه میتوانید همین کد را در زبان جاوا نیز ببینید:
// Hello World Program
class HelloWorldKt {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
میبینید که نوشتن این برنامه ساده چقدر در زبان جاوا طولانیتر است و چند خط کد برای آن بیشتر نوشته شده. ضمن این که تفاوتهای دیگری نیز وجود دارد که در اینجا قصد نداریم به آنها بپردازیم.