مهندس نرم افزار کامپیوتر، توسعه دهنده اندروید
قسمت صفر از فصل اول کتاب kotlin in action
خب قسمت صفر از فصل اول کتاب رو شروع می کنم. قبل از هر چیزی بگم که این مجموعه مقالات توسط سرکار خانم الهه آرین و آقای محسن نادرزاده نوشته میشه و به قول الهه، اگه الهه نبود ، مقاله، مقاله نبود، نقاله بود.:))))) اما خب بریم سراغ فصل اول کتاب، این فصل تحت عنوان کاتلین: چی و چرا ؟، مطالب زیر رو پوشش میده که من در این قسمت از مقاله فقط به بعضی از اونها اشاره می کنم و الباقی رو به خاطر طولانی نشدن مقاله skip می کنم:
· خلاصه ای از زبان کاتلین
· ویژگیهای زبان کاتلین
· قابلیتهای کاتلین برای توسعه اپلیکیشنهای اندرویدی و برنامه نویسی server-side
· تفاوتهایی که کاتلین رو از سایر زبانها جدا می کنه
و در نهایت به نحوه نوشتن و اجرای کد در کاتلین می پردازه.
کاتلین یه زبان برنامه نویسی جدید بر پایه پلتفرم زبان برنامه نویسی جاوا هست. از این زبان میشه در هر جایی که در حال حاضر زبان جاوا استفاده میشه مثل برنامه نویسی server-side و اپلیکیشنهای اندرویدی و... ، استفاده کرد. از لحاظ میزان پرفورمنس و کارآیی کاتلین با جاوا تفاوت چندانی ندارن و همینطور کاتلین با تمامی لایبریهای در حال حاضر جاوا سازگاری داره و شما می تونید از اونها در کاتلین هم استفاده کنید.
به عکس بالا توجه کنید ، داخل این عکس شما می تونید یک تکه کد به زبان کاتلین رو مشاهده کنید که بعضی از قابلیتهای هیجان انگیز و جدید زبان کاتلین رو به خوبی نشون میده.
خب بریم سراغ جزئیات و توضیحات عکس بالا، توی این عکس به زبان کاربر ما یه کلاس Person تعریف کردیم که دو تا property داره ، name و age . به صورت پیشفرض برای property سن یا Age این کلاس به صورت پیشفرض مقدار null تعریف شده . این مقدار باعث میشه زمانی که توی تکه کد بالا ما سنی برای ابجکت Alice تعریف نکنیم، مقدار سن یا Age این ابجکت null قرار بگیره. توی تکه کد بالا از تابع maxBy برای پیدا کردن کاربری که بیشترین سن رو داره استفاده کردیم. Lambda expression ای که به این تابع پاس داده شده یه پارامتر ورودی داره که به صورت پیشفرض برای اسم این پارامتر ما از it استفاده کردیم. توی این تصویر ما یک عملگر تازه داریم که توی زبان جاوا وجود نداره و این عملگر یا operator یکی از عملگرهای چهارگانه زبان کاتلین برای کنترل و جلوگیری از خطای معروف و آزاردهنده nullpointer exception هستش . این عملگر ?: عملگر Elvis نام داره و شیوه استفاده از این عملگر به صورت زیر هستش :
ObjectName?:0
به جای عبارت ObjectName نام ابجکت مد نظر ما قرار میگیره و بعدش این عملگر قرار میگیره ، مقدار صفری که در عبارت فوق وجود داره باعث میشه که در صورتی که اون ابجکت به هر علتی null بود، مقدار صفر به ما برگرده توی کد بالا هم در صورتی که age ما مقدار null داشته باشه، این عملگر باعث میشه مقدار صفر به ما برگرده. توی تکه کد بالا از اونجایی مقداری برای سن Alice تعریف نشده، عملگر Elvis برای این ابجکت مقدار صفر در نظر میگیره و ابجکت بعدی یعنی ابجکت Bob چون سن براش مشخص شده ، به عنوان بزرگترین فرد توی خروجی چاپ میشه.
حالا وقت اون شده که کمی کاتلین رو با جزئیات بیشتری بشناسیم، اول باید بدونیم کاتلین توی چه دسته بندی از زبانهای برنامه نویسی قرار میگیره؟ static یا dynamic ؟
زبان کاتلین مثل زبان جاوا، یه زبان static محسوب میشه، وقتی یه زبان static باشه، تمامی دستوراتی که ما می نویسیم در زمان کامپایل ارزیابی و validate میشن و کامپایلر می تونه بررسی کنه که آیا اصلا property یا متد مد نظر ما توی کلاس و آبجکت مورد استفاده وجود داره یا نه؟ در مقابل، زبان های dynamic زبانهایی هستند که شما می تونید هر نوع داده و دیتایی رو توی متغیرها ذخیره کنید یا توی توابع برگردونید، و بررسی در دسترس بودن یا نبود متد ها و property ها توی این دسته از زبانهای برنامه نویسی، توی زمان اجرا یا runtime صورت میگیره از جمله مزایای زبانهای dynamic میشه به افزایش سرعت توسعه اشاره کرد اما یکی از بزرگترین معایب این زبانها برای مثال این هستش که املای نام کلاسها و ابجکتها بررسی نمیشه و این امر میتونه موجب خطا در زمان اجرا بشه.
به علاوه کاتلین شما رو برخلاف جاوا مجبور به مشخص کردن نوع داده هر متغیری که تعریف می کنید، نمی کنه. در بسیاری از مواقع نوع داده متغیر میتونه توسط کامپایل با توجه به context اون متغیر و استفاده ای که از اون شده، تعیین بشه. به مثال زیر توجه کنید:
val x=1
توی مثال بالا ما یه متغیر به اسم x تعریف کردیم و اون رو با 1 مقداردهی کردیم، پس به خاطر همین مقدار دهی، کاتلین نوع داده این متغیر رو از نوع عدد صحیح یا Int در نظر میگیره. نکته ای که وجود داره این هستش که به قابلیت تشخیص نوع داده متغیر توسط کامپایلر Type inference گفته میشه.
تو ادامه می خوام بعضی از مزایای زبانهای static type رو بگم براتون:
· کارآیی یا Performance بهتر: برای مثال فراخوانی کردن متدها سریعتر چرا که در زمان اجرا نیاز نیست تا ابتدا بفهمیم که کدام متد می بایست اجرا گردد.
· اطمینان بیشتر: از انجایی که کامپایلر کد های ما در زمان کامپایل بررسی می کند پس امکان کرش کردن نرم افزار در زمان اجرا، به کمترین حد خود می رسد.
· نگهداری یا Maintainability بهتر : در این نوع زبانها کار با کد های نا آشنا برای برنامه نویس ساده تره چون می تونیم ببینیم کد با چه نوع آبجکتهایی داره کار می کنه.
در زبان کاتلین، به خاطر پشتیبانی کردن این زبان از type inference مشخص کردن نوع متغیرها در هنگام تعریف انها اجباری نداریم و این یک مزیت نسبت به زبان جاوا است.
یکی دیگر از ویژگیهای مهم زبان کاتلین نسبت به زبان جاوا، پشتیبانی از nullable ها است که به ما کمک می کنه تا از بروز خطای ازاردهنده و مشهور Null pointer exception جلوگیری کنیم.
خب فکر می کنم برای قسمت صفر از مجموعه مقالات کتاب kotlin in action این حجم از مطالب کافی باشه. ما توی قسمت بعدی در مورد یکی دیگر از قابلیتهای هیجان انگیز و جدید زبان کاتلین به اسم function types صحبت می کنیم .
مطلبی دیگر از این انتشارات
الگویِ طراحی Command (جاوا و کاتلین)
مطلبی دیگر از این انتشارات
اسکریپت نویسی برای تنبلها با پایتون(ساخت پیدیاف)
مطلبی دیگر از این انتشارات
جاوا اسکریپت در Node