زبان کاتلین (Kotlin) چیست؟ 5 پلتفرمی که کاتلین نشانه رفت
اگر می خواهید بدانید که زبان کاتلین (kotlin) چیست، چگونه است، چه تحولاتی ایجاد کرده است، چه مزایایی دارد و در کجاها استفاده می شود؛ خواهش می شود این مقاله را تا پایان بخوانید.
برنامه نویسی اشاره به فرآیند فنی برای فرماندهی یک سرباز فرمانبردار به نام رایانه است که چه کاری را با رعایت چه سلسله مراتبی برای حل نیاز یا مشکل انجام دهد.
رایانه فقط PC یا لبتاب نیست بلکه رایانه طبق تعریف ماشینی محاسبه گر است که کلیۀ عملیات را در سه مرحلۀ 1. خواندن اطلاعات 2.پردازش اطلاعات 3. نمایش خروجی انجام می دهد.
اگر شما یک سرباز فرانسوی داشته باشید که فارسی نمیداند، باید با زبان فرانسوی وی را فرماندهی کنید. پس ما با زبان های برنامه نویسی می توانیم سربازانی از جنس رایانه را فرماندهی کنیم.
یکی از این زبان ها کاتلین است.
زبان کاتلین (Kotlin) چیست؟
زبان کاتلین یک زبان برنامه نویسی متن باز و تایپ ایستا است که هم از برنامه نویسی شئ گرا و هم از برنامه نویسی تابع گرا (functional) پشتیبانی می کند.
زبان کاتلین شیوۀ نگارشی (Syntax) و مفاهیم مشابهی را از زبان های سی شارپ، جاوا، Scala و بسیاری دیگر الگو گرفته است، درواقع سازندگان زبان کاتلین (Kotlin) سعی کردند از تمام نقاط قوت زبان های دیگر به صورت یکجا در کاتلین استفاده کنند درواقع هدف زبان کاتلین منحصر به فرد بودن نبوده است.
کاتلین توسط گروهی به نام Kotlin Foundation که توسط شرکت های jetBrains و گوگل ایجاد شد مدیریت می شود که وظیفۀ پیشرفت و توسعۀ مدام زبان کاتلین را بر دوش دارند.
زبان برنامه نویسی کاتلین چه مزایایی دارد؟
ایجاد زبان کاتلین پس از آن پدید آمد که دیمیتری جمروف (Dmitry Jemerov) به دنبال ویژگی هایی بود که نتوانست در جاوا پیدا کند.
Scala زبان برنامه نویسی ای بود که بر روی ماشین مجازی جاوا (JVM) اجرا می شد و به آن چیزی که او می خواست نزدیک بود اما زمان زیادی برای compile می خواست.
جمروف یک زبان می خواست که بیشتر ویژگی های زبان های برنامه نویسی نوین را دارا باشد و روی ماشین مجازی جاوا اجرا شود و هم دوش جاوا سریع باشد. پس او زبان خودش Kotlin را ساخت.
زبان کاتلین به عنوان جایگزینی برای جاوا در سیستم عامل اندروید طراحی شده است. هشت سال پس از آنکه کاتلین منتشر شد در سال 2019 گوگل سرانجام با jemerov و اکثر توسعه دهندگان اندروید موافقت کرد و اعلام کرد که Kotlin زبان ترجیحی برای توسعۀ برنامه های اندروید است (یعنی زبان جاوا رتبۀ اول برای توسعۀ برنامه های اندروید را به کاتلین واگذار کرد).
شماری از دلیل هایی که توسعه دهندگان، کاتلین را به زبان جاوا ترجیح می دهند:
- کاتلین نسبت به زبان جاوا با کد های کمتری کار را انجام می دهد.
- شما می توانید یک فایل جاوا را تنها با یک اسکریپت به فایل کاتلین تبدیل کنید.
- کاتلین در زمان اجرا هیچ سرباری (سربار : محاسباتی اضافی اشغال کنندۀ فضای حافظه و یا دیگر منبع ها) ندارد، گاهی افزودن ویژگی های جدید به یک زبان برنامه نویسی سربار بیشتری بوجود می آورد؛ اما کاتلین این گونه نیست.
- کاتلین جامعۀ بزرگی دارد. اگر زمانی گیر کردید، به راحتی می توانید توسعه دهندگان دیگری را پیدا کنید تا در انجمن های کد نویسی و شبکه های اجتماعی به شما کمک کنند.
- زبان کاتلین برنامه نویسی ناهمزمان (asynchronous) را ساده می کند. صدا زدن یک اتصال اینترنتی و یا پایگاه داده محلی به صورت asynchronous در جاوا سخت و کلافه کننده است ولی در کاتلین با استفاده از coroutine ها (کوروتین چیست؟) و Kotlin Flow این کار بسیار آسان گشته است.
- کاتلین مقدار های null را کنترل می کند. Null در جاوا می تواند یک برنامه را در صورت مدیریت نکردنش کرش کند. در کاتلین با اضافه کردن یک عملگر ساده به متغییر هایی که ممکن است null شوند می توانید از اینگونه کرش ها جلوگیری کنید.
- کاتلین می تواند روی چندین پلتفرم اجرا شود، کاتلین می تواند در هر جایی که جاوا اجرا می شود، اجرا شود؛ بنابرین می توانید از آن برای ساخت برنامه های چند پلتفرمی (چند سکویی) استفاده کنید.
- مهاجرت به کاتلین آسان است. کاتلین کاملا با جاوا سازگار است، بنابرین لازم نیست همۀ کدهای خود را یکجا تغییر دهید. می توانید به آرامی یک برنامه را برای استفاده از زبان کاتلین مهاجرت دهید.
ماشین مجازی جاوا چیست؟
ماشین مجازی جاوا (Java Virtual Machine) مانند یک موتور در زمان اجرای برنامه، برای اجرای برنامه های جاوا عمل می کند و چنان که یاد شد کاتلین و Scala هم بر روی همین ماشین مجازی اجرا می شوند.
JVM درواقع همانی است تابع اصلی Main را در زبان جاوا و زبان کاتلین صدا می زند، و این تابع همان تابعی است که تمام پروژه توسط آن اجرا می شوند.
تابع اصلی main در زبان جاوا پیام !!!hello iran را چاپ می کند:
public class Main{ public static void main(String args[]){ System.out.println("hello iran!!!"); } }
تابع اصلی main در زبان کاتلین همان کار را انجام می دهد:
fun main(){ println("hello iran!!!") }
تابع main در زبان کاتلین به علت آنکه کاتلین خصوصیت های برنامه نویسی تابع گرا را در کنار برنامه نویسی شئ گرا دارد، مستقیما درون فایل کاتلینی نوشته می شود و نیازی نیست مثل زبان جاوا، تابع را درون یک کلاس حتما بنویسیم.
برنامه هایی که روی JVM اجرا می شوند یکبار نوشته می شوند و در همه جا (که JVM نصب باشد) اجرا می شوند.
هنگامی که ما یک فایل java را کامپایل می کنیم، فایل های .class (حاوی کد بایت) با نام کلاس های یکسان موجود در فایل java. توسط کامپایلر جاوا تولید می شوند. این فایل .class وقتی آن را اجرا می کنیم به مراحل مختلفی می رود. این مراحل با هم کل JVM را توصیف می کنند.
یک فایل کاتلین هم به همین صورت کار می کند و توسط کامپایلر به فایل .class تبدیل می گردد و کار JVM آغاز می گردد.
زبان کاتلین چه پلتفرم (سکو) هایی را نشانه رفت؟
کاتلین طراحی شده است تا بر روی یک ماشین مجازی جاوا (JVM) اجرا شود و می تواند در کنار جاوا اجرا شود.
اگرچه زبان کاتلین ابتدا به عنوان زبانی برای توسعۀ اندروید شروع به کار کرد اما به دلیل ویژگی هایش به سرعت در جامعۀ جاوا (که فراتر از اندروید است) گسترش یافت و از آن زمان برای بسیاری از برنامه ها استفاده شده است.
1. توسعه اندروید
همانطور که اشاره شد، کاتلین زبان ترجیحی برای توسعۀ اندروید است زیرا به توسعه دهندگان اجازه می دهد مختصر تر و رَسا تر و امن تر بنویسند.
IDE ( IDE: نرم افزاری که در آن توسعه نرم افزار توسط برنامه نویس صورت می گیرد) رسمی برای توسعۀ اندروید، اندروید استودیو (Android Studio) می باشد که از زبان کاتلین برای توسعۀ برنامه های اندروید پشتیبانی می کند؛ همانطور که پیش تر از کاتلین از زبان جاوا پشتیبانی می کرد و میکند.
داشتن یک گوشی همراه برای بیشترِ کسب و کار ها الزامی است زیرا بیشتر مردمان از راه گوشی همراه به اینترنت دسترسی دارند.
اندروید بیش از 70% از سهم بازار گوشی های همراه را به خود اختصاص داده است. بنابرین حتی اگر زبان Kotlin برای توسعۀ اندروید باشد توسعه دهندگان کاتلین متقاضیان زیادی خواهند داشت
اگر می خواهید به جدید ترین روش های برنامه نویسی اندروید با استفاده از کاتلین مسلط بشید و همۀ معماری های موجود در اندروید را یاد بگیرید در دورۀ نخبگان اندروید محمد نوری با بیش از ده سال تجربه شرکت کنید
با این حال می توان از کاتلین برای بیشتر از اینها استفاده کرد.
2. توسعۀ وب back-end
بسیاری از توسعۀ وب back-end با استفاده از زبان جاوا در چهارچوب (framework) هایی مانند Spring انجام می شود. اما زبان کاتلین به توسعۀ وب سمت سرور نفوذ کرد زیرا کار با آن برای توسعه دهندگان بسیار ساده تر بود.
ویژگی های نوین زبان کاتلین این امکان را برای توسعه دهندگان وب فراهم می کند تا برنامه هایی بسازند که بتوانند به سرعت در جنس سخت افزار معیار شوند.
از آنجایی که کاتلین با جاوا سازگار است، می توانید یک برنامه را برای استفاده از کاتلین در یک فایل در یک زمان مهاجرت دهید درحالی که بقیۀ برنامه ها هنوز از جاوا استفاده می کنند.
زبان کاتلین همچنین با Spring و سایر چهارچوب ها کار می کند، بنابرین تغییر به Kotlin بدین معنی نیست که باید همۀ چیزهایی را که بدان ها عادت کرده اید تغییر دهید.
گوگل، آمازون و بسیاری از شرکت های دیگر قبلا زبان کاتلین را بجای جاوا در برخی از کدهای سمت سرور خود جایگزین کرده اند.
3. توسعۀ وب full-stack
منطقی است از کاتلین برای توسعۀ وب سمت سرور استفاده کنید. به هرحال جاوا از همان ابتدا مورد استفاده قرار گرفته است. با این روی شما می توانید از کاتلین برای استفاده در front-end با استفاده از Kotlin/JS استفاده کنید.
Kotlin/JS این امکان را به توسعه دهندگان می دهد تا به مرورگرهای قدرتمند و API های وب با روشی ایمن دسترسی داشته باشند.
برنامه نویسان full-stack تنها نیاز دارند که زبان کاتلین را بلد باشند. آنها می توانند front-end را با همان زبانی بنویسند که در back-end می نویسند (یعنی زبان کاتلین) و آن کد برای اجرا در مرورگر به جاوا اسکریپت کامپایل می شود.
4. علم داده (Data science)
دانشمندان داده همواره از زبان جاوا برای خرد کردن عددها، تشخیص روندها و پیش بینی کردن استفاده کرده اند؛ بنابرین منطقی است زبان کاتلین در علم داده نیز جایگاهی پیدا کند.
علم داده می تواند تمام کتابخانه های استاندارد جاوا را که برای پروژه های جاوا استفاده می شوند پیاده سازی کند، اما کد خودش به زبان کاتلین نوشته بشود.
Jupyter و Zeppelin دو ابزاری هستند که توسط بسیاری از دانشمندان علوم داده استفاده برای تجسم داده ها (data visualization) و پژوهش های اکتشافی استفاده می شوند، از زبان کاتلین نیز پشتیبانی می کنند.
5. توسعۀ Mutli-platform Mobile
Kotlin Multi-platform Mobile که به KMM نامی است، درنگریسته شده است که یک کیت توسعۀ نرم افزار برای ایجاد برنامه های چند کاربردی چند سکویی (چند پلتفرمی) است.
این بدان معناست که شما با یک کد پایۀ کاتلین می توانید برنامه هایی را کامپایل کنید که نه تنها برای روی تلفن های اندروید بلکه بر روی آیفون ها و Apple Watch ها هم اجرا می شوند.
برنامه نویسی تابع گرا و برنامه نویسی شئ گرا چیست؟ زبان کاتلین جزو کدام دسته است؟
به روش های گوناگون برنامه نویسی Programming Paradigm گفته می شود که می توان آنها را سبک یا راه برنامه نویسی تعبیر کرد. روش های برنامه نویسی بر بنیاد ویژگی ها و سبکی که پشتیبانی می کنند با یکدیگر دگرسان هستند.
چند ویژگی وجود دارد که شیوۀ برنامه نویسی را تعیین می کند، مانند ماژولار بودن ، شئ ها، وقفه ها یا رویداد ها، کنترل جریان و غیره.
هر روش برنامه نویسی مزیت خود را دارد پس بهتر است بدانیم، قبل از آنکه استفاده کنیم؛ کجا استفاده کنیم.
برنامه نویسی شئ گرا و در ادامه زبان های برنامه نویسی شئ گرا (Object Oriented Programming Languages) زمانی خوب هستند که شما مجموعه ای ثابت از عملیات روی موجودیت ها را داشته باشید و همانطور که کد شما تکامل می یابد در درجۀ اول موجودیت های جدیدی اضافه بکنید.
این را می توان با افزودن کلاس های جدید که تابع های از قبل وجود داشته را پیاده سازی می کنند، انجام داد و کلاس های از قبل وجود داشته به حال خود رها شوند(مفهوم overriding یا بازنویسی).
برنامه نویسی تابع گرا زمانی خوب است که مجموعه ای ثابت از موجودیت ها را داشته باشید و همانطور که کد شما تکامل می یابد، در درجۀ اول عملیات جدید را از روی موجودیت های باشنده اضافه می کنید.
این را می توان با تابع های نو که با انواع داده های موجود محاسبه می شوند انجام داد و نیز تابع های از قبل وجود داشته به حال خود رها می شوند.
همچنین می توان از هر دو روش برنامه نویسی بر بنیاد نیاز خود استفاده کرد.
زبان کاتلین یک زبان برنامه نویسی هم تابع گرا و هم شئ گرا است. در باب تابع گرا بودنش مثلا شما می توانید آزادانه یک تابع یا یک متغییر را درون یک فایل خالی کاتلین بنویسید و تابع یاد شده درون هیچ بدنه ای (مثلا کلاس) نباشد.
تایپ ایستا بودن زبان کاتلین به چه معنی است؟
تایپ ایستا (Statically Typed) : زبان های ایستا تایپ، نوعیت یک متغییر یا کلاس یا هر موجودیتی دیگر را در زمان ترجمه به زبان ماشین بررسی می کنند مانند جاوا و C.
تایپ پویا (Dynamically Typed) : زبان های پویا تایپ، نوعیت یک متغییر یا کلاس هر موجودیتی دیگر را در زمان اجرای برنامه یررسی می کنند؛ مانند پایتون و PHP.
کاتلین تایپ ایستا می باشد.
نمونه هایی مختصر از Syntax زبان کاتلین
fun main(){ val a = 4 val b : Int = 8 var c = a + b c = c + 1 println(“the result is $c”) }
در کد بالا ما سه متغییر a و b و c داریم که از نوع عدد هستند. متغییر ها به دوگونۀ val و var می باشند. اینکه یک متغییر var باشد یعنی پس از مقدار دهی اولیه می توان مقدار آن را تغییر داد، ولی اگر یک متغییر از نوع val باشد یعنی پس از مقدار دهی اولیه دیگر قابل تغییر نیست.
بعد از val یا var بودن متغییر نام ان را می نویسیم و سپس می توانیم جنس متغییر را معلوم کنیم مثلا از جنس عدد باشد یا از جنس رشته؛ هرچند اگر شما مقدار را به متغییر بدهید خود متغییر متوجه نوع آن می شود و نیازی نیست نوع مقدار را به متغییر بگوییم زیرا زبان کاتلین هوشمندست.
شما می توانید با استفاده از $ متغییر را درون رشته بریزید.
fun main(){ val n = 5 var m = if(n > 4){ “n is bigger than 4” }else{ “n is not bigger than 4” } println(m) }
شما در زبان کاتلین می توانید با استفاده از شرط ها مستقیما یک نتیجه را درون یک متغییر بریزید. در صورت اجرا شدن کد های بالا پیام n is bigger than 4 در خروجی چاپ خواهد شد.
for(n in 1..10){ println(n) }
در کد بالا ما ساختار شرط در کاتلین را داریم که عددهای از یک تا ده را زیر هم چاپ می کند
زبان کاتلین ویژگی های زیادی دارد در صورت تمایل می توانید در دورۀ رایگان آموزش کاتلین استاد محمد نوری شرکت کنید.