برای سال ۲۰۲۳ چه برنامهای دارید؟
اگر به دنبال هدفی برای سال ۲۰۲۳ هستید که به شما کمک کند به عنوان یک توسعهدهنده پیشرفت کنید، در اینجا ایدهای برای ارتقای شغل و تازه نگه داشتن مهارتهایتان وجود دارد: یک زبان برنامهنویسی جدید یاد بگیرید.
یادگیری زبان های جدید بخش اصلی توسعه دهنده بودن است. فرصت های جدیدی را فراهم می کند و کار ما را جذاب نگه می دارد. افزودن یک زبان به جعبه ابزارتان میتواند به شما در نقش فعلیتان، باز کردن درهای جدید یا الهام بخشیدن به پروژه اشتیاق بعدی شما کمک کند.
اکنون، با توجه به تعداد گزینهها، انتخاب یک زبان ممکن است سخت به نظر برسد. اما از خود بپرسید:
- چه زبان هایی به من کمک می کند تا در نقشم مهارت بیشتری پیدا کنم یا به شغل رویایی ام دست پیدا کنم؟
- چه زبان هایی مورد تقاضا هستند؟
میتوانید به رتبهبندی محبوبیت زبانها نگاه کنید، اما هنوز انتخابهای زیادی باقی میماند. موارد دلخواه دائمی مانند پایتون و جاوا اسکریپت ممکن است در رادار شما باشند. این زبانها مانند همیشه مورد تقاضا هستند.
اما من قصد دارم برای سه تازه وارد نسبتاً موردی را مطرح کنم که توسعهدهندگانی که میخواهند برای آینده جایگاه خود را داشته باشند باید در فهرستهای نظارتی خود نگه دارند: Go، Rust، و Kotlin. آنها از جمله فناوریهایی بودند که در سال گذشته در نظرسنجی توسعهدهندگان Stack Overflow مورد تقاضا بودند، و هرکدام به دلایلی که توضیح خواهم داد، کنجکاوی شخصی من را به خود جلب کردند.
بیایید نگاهی دقیق تر به هر یک بیندازیم.
Go (Golang)
Go یک زبان متن باز و سطح بالاتر است که در گوگل توسعه یافته و برای اولین بار در سال ۲۰۱۲ منتشر شد. این زبان در رتبه بندی RedMonk و TIOBE Index در ۲۰ زبان محبوب برتر قرار دارد.
با Go، دریافت می کنید:
- یک کتابخانه استاندارد
- مدیریت بسته
- تایپ استاتیک
- پشتیبانی از آزمون
- استقلال سکو
با این حال، من Go را صرفاً به این دلیل که زبان های تایپ ایستا را دوست دارم، توصیه نمیکنم. بیایید بیشتر به ویژگیهای مفید آن بپردازیم.
Go از همزمانی خارج از چارچوب پشتیبانی میکند!
پشتیبانی داخلی Go از همزمانی آن را از سایر زبانهای برنامه نویسی محبوب جدا میکند. این دلیل اصلی من است که Go را توصیه میکنم.
سایر زبانهای برنامهنویسی قبل از پردازندههای چند هستهای و hyperthreading توسعه داده شدند. در آن زمان، بزرگترین نوآوری در سیستمعاملها کار بر روی پردازندههای منفرد، برش زمان بود، که در آن هر رشته زمان کوچک خود را داشت. اگر هنگام گشت و گذار در وب روی یک دستگاه تک پردازنده موسیقی پخش می کنید، سیستم عامل شما زمان را بین آن کارها تقسیم می کند.
در نهایت، ما شروع به دیدن hyperthreading و پس از آن، چندین هسته در همان پردازندهها کردیم. این موضوع نحوه نوشتن کد را تغییر داد. اکنون آنها چندین پردازنده در اختیار داشتند تا وظایف را به طور همزمان انجام دهند. مدلهای چند رشتهای زبانهای قدیمیتر باید برای بهرهبرداری از قدرت سختافزار جدید بهروز شده بودند. نه برو. این اولین زبان برنامه نویسی بود که از همان ابتدا همزمانی را پذیرفت.
در واقع، برای توسعهدهندگان، پیادهسازی همزمان در Go آسانتر و سریعتر از هر زبان برنامهنویسی اصلی دیگری است.
Go امن، کارآمد و سریع است
علاوه بر پشتیبانی از همزمانی، Go چیزهای دیگری نیز ارائه میدهد.
- سازندگان Go برای جلوگیری از نشت حافظه C++، کار مدیریت حافظه را از توسعه دهندگان دور کردند. (ایمنی حافظه یک ویژگی است که من در مورد Rust نیز دوست دارم، همانطور که بعداً در مورد آن صحبت خواهم کرد.)
- Go کد بومی را اجرا میکند، که در run time کوچک میشود و جمعآوری زباله را کارآمد و سریع، امکانپذیر میکند.
- به عنوان یک زبان کامپایل شده، مانند C و C++، Go سریعتر از پایتون و کارآمدتر از جاوا است.
Rust
برای یادآوری، Rust عبارت است از:
- یک زبان متن باز و چند پلتفرمی.
- قوی و ایستا تایپ شده است، که به شما امکان می دهد به جای زمان اجرا، خطاها را در طول کامپایل پیدا کنید.
- توسط یک سیستم مدیریت بسته عالی به نام Cargo پشتیبانی می شود.
- در حذف منابع رایج اشکالات و آسیب پذیری های امنیتی موجود در زبان های کامپایل شده سنتی خوب است.
- با حمایت یک جامعه بزرگ و استقبال کننده که به زبان آموزان کمک می کند تا به سرعت پاسخ ها را پیدا کنند.
جامعه توسعه دهندگان مشتاق Rust هستند. RedMonk و TIOBE Index آن را در ۲۰ زبان محبوب برتر رتبه بندی می کنند. در همین حال، پاسخدهندگان به نظرسنجی Stack Overflow در سال ۲۰۲۲، Rust را در کنار پایتون بهعنوان محبوبترین فناوری خود شناسایی کردند.
این فقط یک مسابقه محبوبیت نیست. ویژگیهای ایمنی و امنیتی Rust باعث تغییر صنعت فناوری به سمت پذیرش این زبان به عنوان جایگزین اصلی برای C و C++ شده است.
Rust ایمن، ایمن و با کارایی بالا است
به عنوان یک برنامه نویس قدیمی C++، مجبور شدم به Rust بیایم. تمرکز آن بر امنیت چیزی است که من را نسبت به شایستگی هایش متقاعد کرد.
در C++ توسعه دهندگان به حافظه دسترسی آزاد دارند. این میتواند باعث سرریز بافر و آسیبپذیریهای سرریز پشته شود. اما با Rust، ویژگیهای ایمنی قوی حافظه از این نوع اشتباهات جلوگیری میکند.
این بدان معناست که توسعه دهندگان مشکلات امنیتی کمتری را مشاهده میکنند و زمان کمتری را برای اشکالزدایی تلف میکنند.
Rust نیز عملکرد بالایی دارد. این به دلیل استانداردهای امنیتی بالای آن – اشتباه کردن سختتر است – و کد سطح پایین آن است. Rust میتواند از نظر سرعت با C یا C++ مطابقت داشته باشد، اگر از آنها پیشی نگیرد. Rust همچنین بهتر از Go، Java و Python عمل میکند.
Rust برای همه سطحها است
من بر ادعای خود میایستم که Rust ارزش توجه دارد حتی اگر بهتازگی بهعنوان یک توسعهدهنده شروع به کار کرده باشید. با وجود اینکه Rust یک زبان برنامه نویسی سطح پایین است، خواندن و نوشتن بسیار آسان است. در مقابل، سینتکس C و C++ جزئیات سطح پایین را انتزاعی نمیکند و باعث میشود کد در این زبانها کارآمد باشد اما parse آن به عنوان یک انسان دشوارتر باشد. (من هنوز فکر می کنم C++ به دلیل شیوع آن ارزش یادگیری دارد.)
اگر یک توسعهدهنده یا مدیر حرفه ای با تجربه هستید، همچنان باید Rust را یاد بگیرید. این میتواند در وقت و تلاش شما صرفه جویی کند، و اگر قبلاً C یا C++ را میدانید، نحو مشابه Rust میتواند برداشتن آن را نسبتاً آسان کند. در نهایت، یادگیری Rust ممکن است به شما کمک کند از رقبا جلوتر بمانید، زیرا شرکتهای بیشتری از Rust در تولید استفاده میکنند.
Kotlin
با تمام توجهی که به Go و Rust دارم، من دقیقاً قصد ندارم آنها را پیشنهاد کنم. در مقایسه، Kotlin ممکن است کمی اسب تیره به نظر برسد. اما اشتباه نکنید، این زبان منبع باز توسعه یافته در JetBrains است که سر و صدا کرده است.
این تا حد زیادی به لطف اعلام گوگل در سال ۲۰۱۹ از Kotlin به عنوان زبان ترجیحداده شده برای توسعه سیستم عامل اندروید است. البته ممکن است گوگل به چیزی بیش از قابلیتهای کاتلین فکر کرده باشد.
ممکن است پیروزی گوگل در دادگاه عالی ایالات متحده بر اوراکل در آوریل ۲۰۲۱ را به خاطر بیاورید. قضات دریافتند که Google هنگام توسعه سکوی تلفن همراه اندروید خود برای توسعهدهندگان برنامه، حق نسخه برداری Java SE اوراکل را نقض نکرده است. این حکم از زمانی که اوراکل در سال ۲۰۱۰ از گوگل شکایت کرد، بیش از یک دهه دعوای حقوقی بین این دو شرکت را محدود کرد. (در زمان تصمیم دادگاه عالی، گوگل یک «clean room implementation» برای اندروید ساخته بود تا با جاوا بدون نیاز به آن، سازگاری باشد.)
در حالی که این زمینه مهم است، Kotlin چیزی بیش از یک جایگزین جاوا است، و گوگل تنها بازیگر اصلی نیست که آن را تشخیص میدهد. شرکتها و پلتفرمهایی که از Kotlin در تولید استفاده میکنند عبارتند از:
- Netflix
- Uber
- Slack
- Evernote’s Android client
- The Spring Java platform
- Atlassian’s Trello app for Android
- Gradle، یک ابزار ساخت منبع باز
- Corda، یک سکوی دفتر کل توزیع شده منبع باز
افزایش پذیرش صنعت به معنای افزایش تقاضا برای توسعه دهندگان Kotlin است، اما دلایل دیگری برای یادگیری این زبان وجود دارد.
Kotlin همه کاره است
Kotlin یکی از معدود زبانهای برنامهنویسی است که میتواند برای توسعه سمت سرور، موبایل/اندروید و توسعه front-end استفاده شود. درست است، Kotlin به شما اجازه میدهد از یک زبان برای توسعه full stack استفاده کنید.
Kotlin همچنین به شما امکان میدهد تا پارادایمهای برنامهنویسی مختلفی را بسته به نیاز خود انتخاب کنید. شما میتوانید طبقات ایجاد کنید و کدهای شیگرا را در Kotlin بنویسید، همانطور که در جاوا انجام میدهید، اما با کد boilerplate بسیار کمتر، آن را سادهتر میکند. در واقع، JetBrains Kotlin را به گونهای توسعه داد که کاملاً با جاوا قابل همکاری باشد، بنابراین میتوانید از کتابخانهها و چارچوبهای جاوا در Kotlin و بالعکس استفاده کنید.
سبک برنامهنویسی دستوری (imperative) به طور کلی در دنیا غالب است و کاتلین از آن پشتیبانی میکند. اما میتوانید از سبک برنامهنویسی functional نیز استفاده کنید که از مزایای کمتر پیچیده، رساتر و مختصرتر است. علاوه بر این، میتوانید مانند جاوا اسکریپت یا C، کدی را برای اسکریپتنویسی در Kotlin بنویسید. در نهایت، Kotlin به شما امکان میدهد با استفاده از coroutine برنامههای ناهمگام ایجاد کنید، که اگر از خدمات ابری استفاده میکنید یا برنامه خود را به عنوان یک میکروسرویس استقرار میدهید ضروری است.
کاتلین تمیز و امن است
اشاره کردم که کاتلین نسبت به جاوا پرحرفی کمتری دارد. دلیل آن این است که فلسفه “کمتر بیشتر است” را در بر میگیرد که به کد boilerplate کمتری نیاز دارد، که در نتیجه تعمیر و نگهداری کمتر و خطاهای کمتری برای رفع میشود. Kotlin دارای ویژگیهای دیگری است که آن را تمیز و روان میکند، مانند ترکیب کد به جای نوشتن آن و اختیاری در نظر گرفتن نقطه ویرگول.
فراتر از ظرافت نسبی آن، من دوست دارم که کاتلین با ارائه ایمنی بیشتر در زمان کامپایل، از بسیاری دیگر از زبانهای تایپ ایستا پیشی بگیرد. برای یک چیز، انواع nullable را از انواع non-nullable متمایز میکند. علاوه بر این، کاتلین استنتاج نوع قوی زبانهایی مانند Scala، F# و Haskell را در بر میگیرد. Kotlin شما را از وارد کردن جزئیات نوع خاصی (که صورت آشکار است)، نجات میدهد، اما برای ایمن کردن کد، به ویژگی «نوع» نیاز دارد.
۲۰۲۳ خود را ارتقا دهید
آغاز سال تازه با تعهد به یادگیری، یک سرمایهگذاری عالی برای خودتان است. امیدوارم، من شما را برای یادگیری یکی از این سه زبان برنامهنویسی تشویق کرده باشم!