بهترین زبان‌های برنامه‌نویسی جدید برای یادگیری کدامند؟

اگر می‌خواهید بازدهی بیشتری داشته باشید، یک زبان برنامه نویسی جدید یاد بگیرید.این توصیه‌ نوئل ولش (Noel Welsh)، یکی از بنیانگذاران شرکت مشاوره‌ای آندرسکور (Underscore) است. او اعتقاد دارد یادگرفتن زبان جدید، یکی از معدود راه‌های دولوپرها برای دست یافتن به موفقیت‌های بیشتر است.استدلال ولش که در کنفرانس کیوکان ۲۰۱۹ لندن (QCon) صورت می‌گرفت این بود: «زبان‌ها ابزارهای بسیار قدرتمندی هستند که به نظرم به آنها به قدر کافی بها نمی‌دهیم. تنها راه برای رسیدن به بازدهی کافی، این است که کدی ننویسیم و بهترین راه برای کم کردن کدنویسی غیرضروری، این است که زبان جدیدی یاد بگیریم.»به نظر ولش، کتابخانه‌های نرم‌افزاری با اینکه راه ساده‌ای برای کد ننوشتن جلوی پای آدم می‌گذارند، اما محدودیت‌هایی هم دارند. هر زبان برنامه نویسی، مجموعه گسترده‌ای از کتابخانه‌ها دارد که توسعه‌دهنده‌ها می‌توانند استفاده کنند. به این ترتیب، لازم نیست هربار که خواستیم یک کار تکراری انجام دهیم، چرخ را از نو اختراع کنیم. مثلاً برای ساختن اپلیکیشن‌های وب با Node.js جاوا اسکریپت، می‌شود از فریم ورک اکسپرس (Express) استفاده کرد.اما ولش می‌گوید که کتابخانه‌های نرم‌افزاری از یک جا به بعد دیگر جواب نمی‌دهند؛ زیرا کدی که این کتابخانه‌ها با آن ساخته شده‌اند، محدودشان می‌کند. ولی با یادگرفتن یک زبان جدید، می‌توان خیلی راه بیشتری رفت: می‌شود چند عملیات مختلف را در قالب دستورهای کمتر ترکیب کرد و از شر جزئیات پیچیده خلاص شد.ولش می‌گوید که «در نهایت، قدرتی که زبان‌ها به ما می‌دهند بیشتر از توانی است که کتابخانه‌ها در اختیارمان می‌گذارند؛ زیرا زبان میزبان، توانایی‌های کتابخانه را محدود می‌کند.مثلا اگر یک کتابخانه در C بنویسید، همیشه باید به مدیریت حافظه فکر کنید؛ راه دررویی ندارد». ولش اضافه می‌کند که «بعضی زبان‌های دیگر که سطح بالا (High-level) هستند، خودشان به طور خودکار تخصیص و آزادسازی حافظه را مدیریت می‌کنند. این مشکلی است که فقط با یک زبان می‌شود حلش کرد، و کتابخانه هیچ کمکی به رفع آن نمی‌کند.»البته واضح است که ویژگی‌های مثبت هر زبان را باید با توجه به امکاناتی که در دیزاین عرضه می‌کند، سبک سنگین کرد.برای مثال، در یک زبان سطح بالا مثل جاوا اسکریپت، توسعه‌دهنده برای مشخص کردن اینکه آیا متغیر عدد صحیح است یا ممیز شناور، به کامپایلر Just In Time متکی می‌شود؛ چرا که نمی‌تواند نوع متغیر را مشخص کند. یا در جاوا، ماشین مجازی جاوا (JVM؛ پلتفرمی که کد جاوا در آن اجرا می‌شود) «به شما اجازه نمی‌دهد که مستقیما کاری برای بُرداری‌ کردن (Vectorizing) کدها بکنید».اما وقت انتخاب زبان جدید، یکی از مهم‌ترین نکته‌ها این است که ببینید آن زبان با زبان‌هایی که شما یا شرکت‌تان استفاده می‌کنید، چقدر سازگاری دارد. ولش می‌گوید که «یک دلیل دیگر برای استفاده از زبان‌های جدید، این است که این زبان‌ها می‌گذارند به لگسی کدمان (legacy code) احترام بگذاریم، که سرمایه‌گذاری‌مان روی لگسی را حفظ کنیم. احترام به لگسی و حفظ آن یکی از انگیزه‌های اصلی شرکت ما بوده است.»با همین اهمیت لگاسی در ذهن، ولش فهرستی ارائه کرده است از زبان‌های منتخب‌ش که با زبان‌های موجود هماهنگی دارند، و برای دولوپرهایی که می‌خواهند زبان جدید یاد بگیرند گزینه‌های مناسبی هستند:اسکالا (Scala) برای توسعه‌دهنده‌های جاوااسکالا روی JVM اجرا می‌شود و به لطف این ماشین، با جاوا سازگار است. اسکالا ویژگی‌های مفید زبان‌های کاربردی را دارد و هدف از طراحی آن، این بوده که بتواند جایگزینی خلاصه‌تر و سرشار از امکانات برای جاوا باشد.اسکالا را اغلب زبانی می‌دانند که جایگاه‌های شغلی پردرآمد را با خود به همراه می‌آورد؛ حتی با اینکه میزان تقاضا برای آن کمتر از جاواست، و حتی با اینکه بیشتر برای تحلیل کلان‌داده (Big Data) به کار می‌رود.ولش می‌گوید که «وقتی اسکالا به میدان آمد، ما هنوز درگیر جاوا ۶ بودیم؛ در نتیجه همه اسکالا را روش خیلی بهتری برای دسترسی به JVM می‌دانستند. اگر اسکالا امروز وارد بازار می‌شد، شاید مثل آن روزها پرطرفدار نمی‌بود؛ زیرا جاوا خودش هم قدم در راه تغییر و نوآوری گذاشته است.»کاتلین (Kotlin) برای توسعه‌دهنده‌های جاوا در اندرویدراب فلچر (Rob Fletcher) که یکی از مهندسین ارشد نرم‌افزار در نت‌فلیکس است، کاتلین را این‌طور معرفی می‌کند: «کاتلین بعضی از بهترین قابلیت‌های دیگر زبان‌های را در کنار هم عرضه می‌کند و از آنجا که می‌توان آن را در JVM اجرا کرد، قابلیت تعامل‌پذیری (Interoperability) با جاوا را نیز به هم دارد.»محبوبیت این زبان متن‌باز و ایستا (Statically-typed) در سال ۲۰۱۷ حسابی بالا رفت، زیرا گوگل اعلام کرد که رسماً از کاتلین برای ساختن اپ‌های اندروید پشتیبانی می‌کند. قابل توجه است که در نظرسنجی برنامه‌نویس‌های Stack Overflow در سال گذشته، کاتلین دومین زبان محبوب برنامه‌نویس‌ها اعلام شده بود.جدا از اپ‌های اندروید، از کاتلین می‌توان برای ساختن اپلیکیشن‌های بک‌اند و سمت سرور هم استفاده کرد. اگر دوست دارید در مورد کاتلین بیشتر بدانید، سری به مجموعه‌ی تک‌ریپابلیک (TechRepublic) از منابع آنلاین کاتلین بزنید.سویفت (Swift) برای توسعه‌دهنده‌های آبجکتیو سیسویفت، جانشین انتخابی اپل برای آبجکتیو سی (Objective-C) در برنامه‌نویسی iOS و macOS است. این زبان، سینتکس مدرنی دارد که برنامه‌نویس‌ها را از قید سرسپردن به نیازهای مختلف C می‌رهاند، و در عین حال قابلیت همکاری با آبجکتیو سی را هم دارد.یادگرفتن سویفت آسان است و طوری طراحی شده که از نظر عملکرد، امنیت، و ایمنی نوع (type safety) مثل آبجکتیو سی باشد.راست (Rust) برای توسعه‌دهنده‌های Cراست طوری طراحی شده که عملکرد سریع C و ++C را داشته باشد، اما یک سری حفاظ (Safeguard) هم دارد که باعث می‌شوند در نتیجه سوءمدیریت حافظه، رفتارهای غیرمنتظره از نرم‌افزار سر نزند.راست کم‌کم دارد محبوب و محبوب‌تر می‌شود، و امروزه از آن برای ساختن نرم‌افزارهایی برای وب، کامپیوترهای توکار (Embedded)، خدمات توزیع‌شده (Distributed Services)، و خط فرمان (Command Line) استفاده می‌شود.ولش می‌گوید که «چیزی که در راست می‌بینیم، این است که با آن می‌توانید همه کارهایی که در C انجام می‌دادید و همه آن فراخوان‌های سیستمی (System call) را انجام دهید، اما خیلی خیلی بهتر از C.»تک‌ریپابلیک (TechRepublic) یک راهنما از منابع آنلاین برای یادگیری راست آماده کرده است که آن را می‌توانید اینجا ببینید.تایپ‌اسکریپت (TypeScript) برای توسعه‌دهنده‌های جاوا اسکریپتتایپ‌اسکریپت، یک اَبَرمجموعه (Superset) از جاوا اسکریپت است که دولوپرها می‌توانند با آن جاوا اسکریپت خالص بنویسند، و در عین حال با کمک قابلیت‌های جدیدی که دارد، برنامه‌های بزرگ‌تر و پیچیده‌تری بسازند.این زبان پشتیبانی از تایپ‌های ایستا را اضافه می‌کند و به کمک قابلیت‌های دیگرش، کار با کلاس‌ها و ماژول‌ها را راحت‌تر می‌سازد. از طرف دیگر، تایپ‌اسکریپت ابزارهای ساده‌تری هم برای وارسی و بازبینی ساختار کد عرضه می‌کند.تایپ‌اسکریپت به جاوا اسکریپت کامپایل می‌شود؛ بنابراین هرجایی که از جاوا اسکریپت استفاده شود، می‌توان از تایپ‌اسکریپت هم استفاده کرد: چه در اپلیکیشن وب برای اجرا در نرم‌افزار و چه کد بک‌اند در محیط Node.js.ترجمه‌ای از:Which are the best new programming languages for software developers to learn? by Nick Heath @ TechRepublicکوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.