کاتلین چیست؟
زبان برنامهنویسی کاتلین در سال 2011 میلادی توسط JetBrains طراحی شد و کمی بعدتر بهشکل عمومی در اختیار توسعهدهندگان قرار گرفت. گوگل در کنفرانس توسعهدهندگان I/O که سال 2017 میلادی برگزار کرد، بهطور رسمی اعلام کرد کاتلین را بهعنوان زبان اصلی توسعه برنامههای اندرویدی به رسمیت میشناسد تا به این شکل وابستگی به جاوا برای ساخت برنامههای اندرویدی کمتر شود. اعلام موضع رسمی گوگل در قبال کاتلین باعث شد تا عملا کاتلین در کنار زبان برنامهنویسی جاوا بهشکل رسمی در اندروید استودیو برای توسعه برنامههای اندرویدی در اختیار توسعهدهندگان قرار بگیرد. جالب آنکه گوگل در سال 2019 میلادی، برای اولین بار از اصطلاح Kotlin-first برای اکوسیستم اندروید استفاده کرد تا توسعهدهندگان بدانند که کاتلین تب زودگذری نیست و قرار است نقش کلیدی در دنیای اندروید بازی کند.
کاتلین نهتنها از ویژگیهای مدرن مانند تشخیص خودکار نوع پشتیبانی میکند، بلکه از پارادایمهای مختلف برنامهنویسی نیز پشتیبانی میکند. با کاتلین میتوانید کدهای شیءگرایی (object-oriented)، تابعی (functional)، دستوری (imperative) و واکنشی (reactive) را بهصورت جداگانه و ترکیبی بنویسید. ویژگیهایی مانند حدس زدن نوع دادهها و مقادیر پارامترهای پیشفرض، توسعهدهندگان را قادر میسازد با کدنویسی کمتری به اهداف خود برسند، در حالی که ویژگیهایی مانند کلاسهای داده و کلاسهای شیء به توسعهدهندگان اجازه میدهند الگوهای رایج مانند singletons را به سادهترین شکل تعریف کنند.
محیطهای توسعه یکپارچه قابل استفاده با کاتلین
نکته مهم دیگری که در مورد کاتلین باید به آن اشاره داشته باشیم این است که بهتر است محیط توسعه یکپارچهای متناسب با نیاز کاری را انتخاب کنید. بهطور مثال، اگر قصد ساخت برنامههای اندرویدی با کاتلین را دارید، Android Studio بهترین انتخاب است، زیرا قابلیتهای کاربردی زیادی برای توسعه برنامههای اندروید در اختیارتان قرار میدهد. دومین گزینه که برنامهنویسان جاوا بهشکل گسترده از آن استفاده میکنند، Eclipse است که قابلیتهای قدرتمندی ارائه میکند. خوشبختانه، برای کدنویسی کاتلین گزینههای مختلفی در دسترس قرار دارند و محدود به یک یا دو ابزار خاص نیستید.
JDK چیست؟
جیدیکی (JDK سرنام Java Development Kit) به معنی کیت توسعه جاوا است که با هدف کمک به توسعهدهندگان جاوا توسعه پیدا کرده است. Java Development Kit بستهای است شامل کامپایلر جاوا، ابزارهای اشکالزدایی و توسعه برنامههای تحت پلتفرم جاوا و همچنین شامل نسخهای از جیآرای (JRE) است. JRE سرنام Java Runtime Environment به معنای محیط زمان اجرای برنامههای جاوا و کاتلین است. JRE پیادهسازی ماشین مجازی جاوا است که برای اجرای برنامهها به آن نیاز است. JRE شامل مولفههای مختلفی مثل کیت ابزارهای رابط کاربری، کتابخانههای پایه و غیره است که برنامههای مبتنی بر جاوا یا کاتلین به آنها نیاز دارند. به همین دلیل است که هر برنامه جاوا یا کاتلین برای کامپایل شدن به JDK و برای اجرا به JRE نیاز دارند.
نصب Java JDK
توسعهدهندگان میتوانند از کاتلین روی پلتفرمهای مختلف استفاده کنند. از بسیاری جهات، کاتلین در مسیری قرار دارد که جاوا در دهه 90 میلادی آنرا پیمود. کاتلین بر مبنای ایده ساخت یک زبان برنامهنویسی چند پلتفرمی جدید ابداع شده است تا توسعهدهندگان پلتفرمهای مختلف بدون مشکل قادر به استفاده از آن باشند. در دنیای برنامهنویسی جاوا، برنامههای جاوا بهجای کامپایل به کد ماشین بومی هر پلتفرم، به قالبی که بایتکد (Bytecode) نام دارد کامپایل میشوند. این بایتکدها در یک برنامه کاربردی که ماشین مجازی جاوا (Java Virtual Machine) نام دارد، اجرا میشوند. با اجرای بایتکدها در ماشین مجازی، میتوانید کدها و برنامههای جاوا را روی سیستمهایی که پیشنیازهای اولیه روی آنها نصب شدهاند، اجرا کنید. زبان برنامهنویسی کاتلین تعامل نزدیکی با زبان برنامهنویسی جاوا دارد، به همین دلیل، باید اطمینان حاصل کنید حداقل نسخه 11 کیت توسعه جاوا روی سیستمعاملتان نصب شده است. برای این منظور، پنجره خط فرمان را باز کنید و دستور java -version را در آن تایپ کنید. اگر با اجرای دستور فوق، پیغامی همانند شکل 1 دریافت کردید، به این معنا است که جاوا روی سیستمتان نصب نیست.
برای حل این مشکل باید به سایت جاوا به نشانی زیر بروید:
https://www.oracle.com/java/technologies/downloads/#jdk18-windows

شکل 1
اگر از سیستمعامل ویندوز استفاده میکنید، در پایین صفحه روی گزینه Windows کلیک کنید. با اینکار سه گزینه مشاهده میکنید. هر سه گزینه عملکرد مشابهی دارند و کیت توسعه جاوا را روی سیستم نصب میکنند. بهطور مثال، روی x64 Installer کلیک کنید، صبر کنید تا دانلود تمام شود و در ادامه روی فایل نصبی کلیک کنید. نکتهای که باید به آن دقت کنید این است که حتما JDK (و نه فقط JRE) را دانلود و نصب کنیم، زیرا JRE تنها امکان اجرای برنامههای جاوا را فراهم میکند و شامل ابزارهایی برای ساخت برنامههای جدید نیست (شکل 2). هنگامی که دانلود به اتمام رسید، روی فایل اجرایی کلیک کنید و تنظیمات پیشفرض را قبول کنید تا نصب به اتمام برسد. اگر پنجره خط فرمان را باز کنید و دستور Java -version را تایپ کنید، مشاهده میکنید که JDK نصب شده است.
شکل 2
کامپایلشده در مقابل تفسیرشده
در چند سال گذشته، کاتلین قابلیتهای کاربردی زیادی در اختیار برنامهنویسان قرار داده که شبیه به قابلیتهایی است که زبان برنامهنویسی سوئیفت (Swift) اپل در اختیار توسعهدهندگان اکوسیستم iOS قرار میدهد. یکی از مهمترین قابلیتهای افزودهشده به کاتلین قابلیت همکاری (interoperability) با جاوا است تا برنامهنویسان مسلط به جاوا با کمترین زحمت از کاتلین استفاده کنند. نظرسنجیای که وبسایت Stack Overflow درباره محبوبترین زبانهای برنامهنویسی انجام داده، نشان میدهد که کاتلین در میان 5 زبان برتر و محبوبی است که کاربران این سایت از آن استفاده میکنند.
برنامهنویسان تازهوارد به دنیای برنامهنویسی کاتلین این پرسش را مطرح میکنند که اندروید توسط گوگل ارائه میشود، پس چگونه JetBrains بهعنوان یک شرکت ثالث توانسته است زبانی را برای توسعه برنامههای اندروید طراحی کند که گوگل از آن پشتیبانی میکند؟ برای درک این موضوع باید مکانیزم زبان جاوا را بررسی کنیم. زبانهای برنامهنویسی را میتوان به دو گروه تقسیم کرد: زبانهای کامپایلشده (Compiled) و زبانهای تفسیری (Interpreted).
زبان کامپایلشده زبانی است که کامپایلر کد منبع (Source Code) را در فایلهای باینری کامپایل میکند تا کامپیوترها بتوانند بهشکل مستقیم آنها را اجرا کنند. بهطور مثال، زبانهای برنامهنویسی مثل سی (C)و سیپلاسپلاس (C++)، هر دو زبانهای کامپایلشده هستند. زبانهای تفسیری رویکرد متفاوتی دارند و از مولفهای به نام مفسر استفاده میکنند. هنگام اجرای برنامه، مفسر کد منبع را خط به خط میخواند و کد منبع را به کد باینری که کامپیوتر میتواند در زمان واقعی درک کند تفسیر میکند. زبانهای برنامهنویسی مثل پایتون و جاوااسکریپت همگی زبانهای تفسیری هستند.
جاوا یک زبان کامپایلشده است؟
سوال این است که جاوا زبان کامپایلشده است یا تفسیرشده؟ بد نیست بدانید که برخی توسعهدهندگان باتجربه جاوا پاسخهای نادرستی به این سوال میدهند. آنها استدلال میکنند که جاوا به یک فرآیند کامپایل نیاز دارد، زیرا وقتی همه شروع به یادگیری جاوا میکنند یاد میگیرند که از دستور javac برای کامپایل استفاده کنند. از اینرو، جاوا باید زبان کامپایلی باشد، اما واقعیت چیز دیگری است. اگرچه کدهای جاوا قبل از اجرا باید کامپایل شوند، اما واقعیت این است که کد کامپایلشده کد باینری نیست که کامپیوترها بتوانند آنرا درک کنند، بلکه فایلهای کلاس ویژهای هستند که تنها توسط ماشین مجازی جاوا قابل درک هستند (در اکوسیستم اندروید به آن ART میگویند؛ یک ماشین مجازی بهینهشده برای دستگاههای تلفن همراه) و این ماشین مجازی نقش مفسر را بازی میکند. به بیان دقیقتر، ماشین مجازی فایلهای کلاس را به کد باینری تفسیر میکند تا کامپیوترها بتوانند آنرا درک کنند و کلاس را اجرا کنند.
با این توصیف باید بگوییم که جاوا را میتوان هم یک زبان کامپایلشده و هم یک زبان تفسیرشده در نظر گرفت، زیرا کد منبع آن ابتدا در یک بایتکد (Bytecode) باینری کامپایل میشود. این بایتکد روی ماشین مجازی جاوا (JVM) اجرا میشود که به طور معمول یک مفسر مبتنی بر نرمافزار است. بنابراین، ماشین مجازی جاوا با کد جاوا ارتباط برقرار نمیکند، بلکه با فایلهای کلاس کامپایلشده ارتباط برقرار میکند. حال اگر یک زبان برنامهنویسی جدید توسعه دهیم و کامپایلری بسازیم تا کد زبان جدید را در فایل کلاسی که مطابق با فرمت الگوی زبان اصلی است وارد کرده و کامپایل کند، آیا ماشین مجازی جاوا میتواند چنین فایل کلاسی را تشخیص دهد؟ پاسخ مثبت است و کاتلین این کار را انجام داده است. برای ماشین مجازی جاوا مهم نیست فایل کلاس با استفاده از زبان برنامهنویسی جاوا یا کاتلین ساخته شده باشد؛ مادامیکه یک فایل کلاس چارچوبها را رعایت کرده باشد، ماشین مجازی میتواند آنرا اجرا کند. این درست همان کاری است که JetBrains انجام داده و موفق شده زبانی برای توسعه برنامههای اندروید طراحی کند.
بازار کار کاتلین در ایران به چه صورتی است؟
هنگامی که قصد یادگیری یک زبان برنامهنویسی یا یک فناوری را داریم، اولین نکتهای که باید به آن دقت کنیم،بازار کار آن فناوری در منطقه محل سکونت یا به عبارت دقیقتر کشوری است که در آن زندگی میکنیم. به طور مثال، Azure یا Amazon AWS مزایای گستردهای در اختیار توسعهدهندگان و شرکتها قرار میدهند و با ارائه طیف گستردهای از قابلیتها مثل ماشینهای مجازی آمادهبهاستفاده به توسعهدهندگان اجازه میدهند به سادهترین شکل از آنها استفاده کنند، اما بازار کار متخصصان آشنا به سرویسهای Azure یا AWS در ایران به چه صورتی است؟ آگهیهای منتشرشده در وبسایتهای استخدامی مثل آیاستخدام، جابینجا، جابویژن و غیره نشان میدهد که شرکتها به دنبال جذب برنامهنویسان اندروید مسلط به کاتلین هستند. مزیتی که کاتلین نسبت به زبانهای دیگر دارد این است که بازار کار آن هنوز اشباع نشده است؛ از اینرو، یادگیری کاتلین یک انتخاب درست است. البته پیشنهاد شخصی من این است که همراه با کاتلین بهفکر یادگیری مهارتهای دیگری نیز باشید. بهطور مثال، دانش خود در زمینه الگوهای طراحی و معماریهایی مثل MVC را افزایش دهید و سعی کنید معماری اکوسیستم اندروید را بهشکل دقیق بیاموزید. هرچه دانشتان در مورد مهارتهایی که مکمل یکدیگر هستند بیشتر باشد، به همان نسبت شانس استخدامتان بیشتر میشود.
چرا باید کاتلین را بیاموزیم؟
دلایل زیادی برای یادگیری کاتلین وجود دارد که از مهمترین آنها به موارد زیر باید اشاره کرد:

شکل 3
- کاتلین دارای قواعد دستوری سادهتر و زیباتری به نسبت جاوا است.
- در مقایسه با نحو جاوا، کاتلین دارای الگوهای طراحی سادهتر و مدرنتری است که میتواند بهطور چشمگیری فرآیند توسعه را بهبود بخشد. کاتلین روی مبحث امنیت تاکید زیادی دارد و تقریبا میتواند NullPointerException را که بالاترین استثنا در محیط های تولیدی است به بهترین شکل مدیریت کند.
- کاتلین بالاترین سطح از سازگاری با جاوا را دارد.
- کاتلین میتواند بهشکل مستقیم کد جاوا را فراخوانی کند و از APIها و چارچوبهای شخص ثالث بهطور یکپارچه استفاده کند. در نتیجه، کاتلین قادر به ارثبری از تمام ویژگیهای جاوا است، مضاف بر اینکه قابلیتهای جدید و غنیتری در اختیار توسعهدهندگان قرار میدهد.
- کدهای کاتلین مختصر، خوانا و آسان هستند.
- کاتلین بهعنوان یک زبان مبتنی بر ماشین مجازی جاوا میتواند از اکوسیستم کتابخانههای آزمایششده و واقعی جاوا استفاده کند.
- روند یادگیری آن ساده است، زیرا پیچیدگی زبانهایی مثل سی یا سیپلاسپلاس را ندارد.
با یادگیری کاتلین قادر به انجام چه کارهایی خواهیم بود؟
کاتلین را میتوان برای توسعه انواع مختلفی از برنامههای کاربردی سمت سرور و کلاینت و اندروید مورد استفاده قرار داد. با توجه به اینکه تیم توسعه این زبان سرگرم کار روی Kotlin/Native هستند، پشتیبانی از پلتفرمهای دیگر مانند سیستمهای توکار، macOS و iOS در دستور کار قرار دارد تا توسعهدهندگان بیشتری قادر به استفاده از این زبان باشند. به همین دلیل، توسعهدهندگان میتوانند از کاتلین برای ساخت برنامههای موبایل و سمت سرور، علم دادهها و غیره استفاده کنند.
یکی از کاربردهای تقریبا نوظهور کاتلین، در زمینه علم دادهها و یادگیری ماشین است. در جدیدترین پست منتشرشده در وبسایت kotlinlang.org در تاریخ 31 مه 2023، به این نکته اشاره شده که کاتلین این ظرفیت را پیدا کرده است تا برای ساخت گذرگاههای انتقال داده که مدلهای یادگیری ماشین به آنها نیاز دارند، مورد استفاده قرار گیرد. به بیان دقیقتر، کاتلین در مسیری گام برمیدارد که جاوااسکریپت آنرا آزموده است. در سالهای دور جاوااسکریپت تنها محدود به توسعه برنامههای وبمحور بود، اما امروزه جاوااسکریپت در حوزههای مختلفی از جمله یادگیری ماشین قابل استفاده است. حال اگر تیم توسعهدهنده کاتلین چنین ایدهای را دنبال کنند، انتظار میرود در آینده نزدیک کاتلین به یکی از رقبای جدی زبانهایی مثل پایتون تبدیل شود.
زبان برنامهنویسی کاتلین آیندهدار است؟
یکی دیگر از پرسشهایی که کاربران در فرمها و انجمنهای برنامهنویسی مطرح میکنند این است که آینده زبان برنامهنویسی کاتلین چیست و آیا ارزشش را دارد تا روی یادگیری آن با هدف یافتن شغلی مناسب سرمایهگذاری کنیم یا خیر؟ این احتمال وجود دارد تا کاتلین در چند سال آینده به زبان برنامهنویسی بزرگ بعدی تبدیل شود؟ به اعتقاد برخی از صاحبنظران این اتفاق دور از انتظار نیست و دلایل زیادی برای این گفته خود دارند. یکی از دلایل این است که کاتلین یک زبان برنامهنویسی کاملا مدرن است. به این معنا که تیم توسعهدهنده وقت زیادی را صرف شناسایی بهترین و کاربردیترین ویژگیهای موجود در زبانهای برنامهنویسی مختلف کرده تا بتواند آنها را در زبان برنامهنویسی کاتلین قرار دهد. یکی از دلایل مهمی که باعث میشود کاتلین آینده درخشانی داشته باشد، پذیرش آن توسط جامعه توسعهدهندگان اندروید است. کاتلین به توسعهدهندگان اندروید امکان استفاده از ویژگیهای زبانی مانند لامبدا را میدهد، در حالیکه نسخههای قدیمی جاوا چنین قابلیتی در اختیار توسعهدهندگان قرار نمیدادند. بهنظر میرسد که تیم توسعهدهنده کاتلین به فراتر از مرزهای اکوسیستم اندروید میاندیشد. کاتلین میتواند به جاوااسکریپت دیگری تبدیل شود که برای ساخت برنامههای کاربردی چندپلتفرمی برای گوشیهای هوشمند یا ساخت برنامههای بومی برای سیستمعاملهای مکاواس، ویندوز و لینوکس مورد استفاده قرار گیرد.
یادگیری کاتلین ساده است و شبیه به پایتون در عین سادگی، ویژگیهای قدرتمند و پیچیدهای در اختیار توسعهدهندگان قرار داده است. اگر سابقه کار با پایتون یا جاوا را دارید، با یادگیری کاتلین به این نکته اذعان خواهید داشت که روند یادگیری آن سادهتر از این دو زبان است. منابع و مستندات آموزشی زیادی به زبان انگلیسی برای یادگیری زبان برنامهنویسی کاتلین وجود دارد که اطلاعات دقیقی در اختیار علاقهمندان قرار میدهد. جامعه بزرگی از توسعهدهندگان از کاتلین پشتیبانی میکنند، به این معنا که همیشه کارشناسانی وجود دارند که در صورت بروز مشکل به شما کمک خواهند کرد.
اکنون که بزرگترین برندها از کاتلین استفاده میکنند، پیشبینی ما این است که شرکتهای دیگر نیز به پیروی از آنها به سراغ کاتلین بروند. علاوه بر این، برندهای بزرگ به برنامهنویسان کاتلین برای پشتیبانی از برنامههای کاربردی یا افزودن ویژگیهای جدید به برنامههایشان نیاز دارند. ترکیب این عوامل با یکدیگر باعث میشوند که کاتلین در چند سال آینده بازار کار خوبی داشته باشد و طبیعی است تقاضا برای جذب توسعهدهندگان باتجربه بیشتر خواهد بود
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
























نظر شما چیست؟