چرا سرمایه‌گذاری روی یادگیری کاتلین (Kotlin) انتخاب درستی است؟
۱۴۰۰/۱۱/۰۳ تاریخ انتشار

دانلود شماره 194 ماهنامه شبکه

اکنون به نظر می‌رسد، پیش‌بینی‌ها در ارتباط با زبانی که آن روزگار هنوز به شکل جدی مورد توجه توسعه‌دهندگان قرار نداشت، به واقعیت تبدیل شده‌اند و کاتلین به فراتر از اکوسیستم اندروید و حوزه‌های پر کاربردی مثل یادگیری ماشین چشم دوخته است. آگهی‌های استخدامی منتشر شده در سایت‌های کاریابی خارجی و داخلی نشان می‌دهند که شرکت‌ها روند تدریجی جذب توسعه‌دهندگان آشنا به زبان کاتلین را آغاز کرده‌اند. علاوه بر این، آموزشگاه‌های داخلی نیز به سراغ آموزش زبان برنامه‌نویسی کاتلین رفته‌اند. چرا با وجود زبان‌های قدرتمندی مثل جاوا، سی‌پلاس‌پلاس و حتا پایتون، این زبان توانست جای پای خود در دنیای برنامه‌نویسی را مستحکم کند؟ واقعیت این است که اندروید بزرگ‌ترین اکوسیستم نرم‌افزاری حال حاضر است و اگر فردی روی تسلط بر این سیستم‌عامل و برنامه‌نویسی این پلتفرم سرمایه‌گذاری کند این فرصت را پیدا می‌کند که درآمد خوبی کسب کند. حال اگر فرض کنیم جامعه هدف شما تنها کاربران ایرانی باشند حداقل به 50 تا 60 میلیون دستگاه اندرویدی بازار ایرانی دسترسی دارید و اگر موفق شوید یک برنامه اندرویدی کارآمد برای ۵۰ میلیون نفر  از کاربران بنویسید و هر نسخه از برنامه کاربردی را تنها به قیمت 1000 تومان در اختیار آن‌ها قرار دهید، به سود کلان ۵۰ میلیارد تومانی دست پیدا می‌کنید! آمارها نشان می‌دهند که بیشتر شرکت‌ها تمایل دارند برای گسترش کسب‌وکار خود از برنامه‌های بومی یک پلتفرم خاص استفاده کنند، به همین دلیل به سراغ استخدام برنامه‌نویسان اندروید یا بستن قرارداد با این گروه از برنامه‌نویسان می‌روند. 

کاتلین در دنیای علم داده‌ها

از طراحی و پیاده‌سازی گذرگاه‌های انتقال داده تا ساخت مدل‌های یادگیری ماشین، کاتلین می‌تواند یک انتخاب عالی برای کار با داده‌ها باشد، زیرا کاتلین کدهای خوانا را با مختصرنویسی و یادگیری ساده ادغام می‌کند. Typed Static است و قادر به تولید کدهایی با قابلیت اطمینان و نگهداری بالا است که روند عیب‌یابی را ساده می‌کند. کاتلین به عنوان یک زبان مبتنی بر ماشین مجازی شناخته می‌شود که عملکرد فوق‌العاده‌ای در اختیارتان قرار می‌دهد و می‌توانید از یک اکوسیستم کامل از کتابخانه های جاوا در آن استفاده کنید. محیط‌هایی مثل Jupyter Notebook و Apache Zeppelin ابزارهای مناسبی برای مصورسازی داده‌ها و تحقیقات اکتشافی در اختیار توسعه‌دهندگان قرار می‌دهند که کاتلیت با این ابزارها به شما کمک می‌کند تا داده‌ها را شناسایی و استخراج کنید، یافته‌های خود را با همکاران به اشتراک بگذارید یا مهارت‌های مرتبط با داده‌ها و یادگیری ماشین خود را تقویت کنید.

هسته Jupyter Kotlin

Jupyter Notebook یک برنامه وب منبع باز است که به شما امکان می‌دهد اسناد (معروف به نوت‌بوک) ایجاد کنید و به اشتراک بگذارید که حاوی کد، مصورسازی و متن نشانه‌گذاری شده باشد. Kotlin-jupyter یک پروژه منبع باز برای پشتیبانی کاتلین توسط Jupyter Notebook است شکل 1 این موضوع را نشان می‌دهد. علاوه بر این، توسعه‌دهندگان مسلط به کاتلین می‌توانند از کتابخانه‌های Multik، KotlinDL، Kotlin for Apache Spark، Kotlin-statistics،kmat ، krangl، lets-plot، Kravis و londogard-nlp-toolkit همراه با کتابخانه‌های جاوا در حوزه علم‌ داده‌ها و یادگیری ماشین استفاده کنند. 

شکل 1

چرا انتخاب کاتلین کار درستی است؟ 

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

ارتباط میان کاتلین و سیستم‌عامل اندروید 

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

زمانی که برنامه خود با کاتلین یا جاوا را می‌نویسید در هر دو حالت کدهای DEX یکسانی تولید می‌شوند. به‌علاوه، کاتلین شباهت زیادی به زبان سوئیفت اپل دارد. در نتیجه یادگیری کاتلین به‌طور غیرمستقیم به شما در یادگیری توسعه نرم‌افزارهای کاربردی برای سیستم‌عامل آی‌فون و آی‌پد کمک فراوانی می‌کند. کاتلین در زمان کدنویسی کمترین خطای ممکن را تولید می‌کند و به همین دلیل زبان ایده‌آلی برای تازه‌کاران است و با توجه به این‌که اجازه می‌دهد با کمترین کدنویسی کارهای مختلفی انجام دهید، سریع‌تر اجرا شده و خوانایی بالایی دارد. گوگل کاتلین را زبان اول اندروید می‌داند، زیرا مختصر بودن کدها باعث می‌شود تا خطاهای کمتری به وجود آید و در آینده نیز کدها به شکل تصادفی خطاهای غیرمنتظره نشان ندهند. کاتلین به شکل رسمی از سوی شرکت‌های بزرگ به رسمیت شناخته شده و در ساخت برنامه‌های بزرگ از آن استفاده می‌شود. از جمله این شرکت‌ها می‌توان به کیندل، توییتر، نت‌فلیکس، اورنوت وPinterest Expedia  اشاره کرد. قبل از آن‌که ساخت برنامه‌های اندرویدی را آغاز کنیم، ابتدا باید ببینیم کاتلین و اندروید چگونه با یکدیگر کار می‌کنند. زمانی که برنامه خود برای اندروید را با جاوا یا کاتلین می‌نویسیم و روی دکمه تبدیل کدها از شکلی به شکل دیگر کلیک می‌کنیم، کدها به ماهیتی تبدیل می‌شوند که برای اندروید قابل فهم می‌شوند. این شکل دیگر (DEX) سرنام Dalrik Executable است. فرآیند تبدیل کدها نیز به‌نام کامپایل شناخته می‌شود. زمانی که یک برنامه روی یک دستگاه نصب می‌شود کد DEX دوباره توسط سیستم‌عامل بررسی می‌شود تا به شکل بهینه‌ شده‌ای قابل اجرا باشد. اندروید یک سیستم‌عامل پیچیده است، اما نیازی نیست بر تمامی جزییات پشت پرده اندروید مسلط شوید تا بتوانید برنامه‌های هیجان‌برانگیزی را بسازید. برای شروع تنها چیزی که به آن نیاز داریم، آشنایی با اصول اولیه است. اندروید نسخه خاصی از سیستم‌عامل لینوکس را اجرا می‌کند، اما سعی می‌کند پیچیدگی‌های نرم‌افزاری و سخت‌افزاری را پنهان کند و در مقابل ویژگی‌های منحصر به فرد لینوکس را در اختیار توسعه‌دهندگان قرار دهد. این ویژگی‌ها به دو شکل استفاده می‌شوند. اول آن‌که سیستم‌عامل خودش به سخت‌افزار دسترسی کامل دارد که برای انجام کارهای خود از ویژگی‌های کاربردی استفاده می‌کند و دوم آن‌که به توسعه‌دهندگان اجازه می‌دهد از طریق واسط برنامه‌نویسی اندروید (API) به ویژگی‌های مهم سیستم‌عامل دسترسی پیدا کرده و از آن‌ها استفاده کنند. اجازه دهید به توابع برنامه‌نویسی اندروید نگاهی گذرا داشته باشیم.

واسط‌های برنامه‌نویسی کاربردی اندروید

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

locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)

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

شی‌گرایی در کاتلین

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

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

برنامه‌نویسان برای ساخت برنامه‌های اندرویدی، کدهایی می‌نویسند که بخش عمده‌ای از این کدها از واسط‌های برنامه‌نویسی اندروید استفاده می‌کنند. کدها در ادامه به ماهیتی به‌نام کد DEX تبدیل می‌شوند تا امکان اجرای آن‌ها روی سایر دستگاه‌های اندرویدی که زیربنای آن‌ها سیستم‌عاملی به‌نام لینوکس است اجرا شود. امروزه سیستم‌عامل اندروید می‌تواند سخت‌افزارهای پیچیده و بسیار متنوعی را مدیریت کند. 

بدیهی است که تولیدکنندگان دستگاه‌های اندرویدی و تولیدکنندگان تجهیزات سخت‌افزاری منفرد، برای آن‌که به مصرف‌کننده اجازه دهند از تجهیزات آن‌ها استفاده کند مجبور به نوشتن نرم‌افزارهای پیچیده و پیشرفته‌ای هستند که درایور نام دارند. درایورها نرم‌افزارهایی هستند که اطمینان می‌دهند، پردازنده مرکزی، پردازنده گرافیکی، تراشه‌های حافظه‌، دریافت‌کننده‌ها و رابط‌های سخت‌افزاری می‌توانند سیستم‌عامل لینوکس را بدون مشکل مدیریت کنند و به سیستم‌عامل اجازه می‌دهند از سخت‌افزار به بهترین شکل استفاده کند. کد DEX (به همراه برخی منابع دیگر) در مجموعه‌ای از فایل‌ها به‌نام APK سرنام Android application package قرار می‌گیرد. فایل‌هایی با پسوند APK همان نرم‌افزارهایی هستند که روی دستگاه‌های اندرویدی اجرا می‌شوند. چه ابزاری کدهای نوشته شده را کامپایل و تبدیل به کد DEX می‌کند و دسترسی به APKها را فراهم می‌کند؟ پاسخ ابزاری به‌نام محیط توسعه یکپارچه است. محیط توسعه‌ یکپارچه‌ به توسعه‌دهندگان اجازه کدنویسی، کامپایل و بسته‌بندی کدها را می‌دهد. اندروید متشکل از میلیون‌ها خط کد برنامه‌نویسی است که به شکل ساخت‌یافته‌ای آماده شده‌اند. این کدها باید به گونه‌ای سازمان‌دهی شوند تا پیدا کردن و مراجعه به آن‌ها ساده باشد. این کدها در قالب بسته‌هایی خاص برای اندروید آماده شده و سازمان‌دهی می‌شوند.  هر زمان یک برنامه اندرویدی جدید ایجاد کنیم، نامی منحصر به فرد برای آن انتخاب می‌کنیم که به عنوان یک بسته شناخته می‌شود. بسته‌ها اغلب به زیر‌بسته‌هایی تقسیم می‌شوند، به همین دلیل امکان گروه‌بندی آن‌ها با یکدیگر یا سایر بسته‌های مشابه فراهم است. برای راحتی کار به بسته‌ها به عنوان پوشه‌ها یا زیرپوشه‌ها نگاه کنید، زیرا کارکرد یکسانی دارند. ما می‌توانیم به تمام بسته‌هایی که Android API در اختیار ما قرار می‌دهد به عنوان کتابخانه‌ای از کدها نگاه کنیم. برخی از بسته‌های اندرویدی که از آن‌ها استفاده می‌کنیم به شرح زیر هستند:

  android.graphics

  android.database

  android.view.animation

 ** اگر تمایل دارید اطلاعات بیشتری در ارتباط با بسته‌های اندروید به دست آورید به نشانی https://developer.android.com/reference/packages مراجعه کنید. 

محیط توسعه یکپارچه اندروید استودیو

محیط توسعه اصطلاح جامعی است که اشاره به مجموعه‌ای از ابزارها دارد که هر آن چیزی که برای طراحی، تنظیم و آماده‌سازی یک برنامه به آن نیاز است را درون خود جای داده است. محیط توسعه یکپارچه مجموعه بزرگ و کاملی از ابزارهای توسعه را همراه با واسط‌های برنامه‌نویسی اندروید در اختیار برنامه‌نویسان قرار می‌دهد. این مجموعه غنی به‌نام کیت توسعه‌ نرم‌افزاری (SDK) شناخته می‌شود. خوشبختانه، در دنیای اندروید بارگیری و نصب یک برنامه واحد دسترسی به تمام آن چیز‌هایی که نیاز دارید را در اختیارتان قرار می‌دهد. این برنامه واحد Android Studio نام دارد. اندروید استودیو یک محیط توسعه یکپارچه (IDE) است که تمامی پیچیدگی‌های مربوط به کامپایل کدها و پیوند دادن آن‌ها به واسط‌های برنامه‌نویسی را مدیریت می‌کند. پس از نصب اندروید استودیو، ما می‌توانیم هر کاری که برای ساخت یک برنامه کاربردی باید انجام دهیم را درون این محیط توسعه انجام دهیم و به اندروید استودیو اجازه دهیم پیچیدگی‌های مربوط به تبدیل کدها به یک برنامه قابل اجرا را مدیریت کند.

 

برای آشنایی بیشتر:

به این مطلب چند ستاره می‌دهید؟(امتیاز: 4.5 - رای: 1)

ثبت نظر تعداد نظرات: 0 تعداد نظرات: 0
usersvg