حقیقتی در باب محبوبیت زبان های برنامه نویسی

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

اما چه عواملی باعث محبوبیت یک زبان برنامه نویسی می شود؟ کیفیت زبان؟ سرعت زبان؟ سادگی زبان؟… راستش را بخواهید نتیجه ای که شخصا به آن رسیده ام این است:

**واقعیت این است که فقط زبان هایی به شهرت فراگیر می رسند که یک «پلتفرم» به خصوص برای شان فراهم باشد.**

منظورم از «پلتفرم» چیست؟ یعنی زبان دارای این خصوصیات باشد:

الف) یک شرکت معتبر، سرمایه دار، و بزرگ با تمام قدرت از آن زبان حمایت کند. ب) در یک زمینه‌ی خاص، آلترناتیو قدرت مند دیگری در مقابل آن زبان وجود نداشته باشد. ج) در گذر سال های متمادی، «اثر شبکه» برای آن زبان شکل گرفته باشد.

اثر شبکه ای چیست؟

تاثیر «تعداد» استفاده کنندگان یک محصول، در ارزش آن.

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

زبان هایی که دارای پلتفرم قدرتمند باشند:

  • مناسب ترین انتخاب برای یادگیری و وقت گذاشتن هستند.
  • برای کاربرد در پروژه های واقعی مناسب اند.
  • ابزارها و مستندات پایداری دارند.
  • محبوبیت شان به این راحتی ها کم نمی شود از بین نمی روند.
  • تعداد بالای کاربران شان باعث میگردد که مدام در حال بهتر شدن باشند.

اما چه زبان هایی دارای پلتفرم مناسب هستند؟

Java

شامل هر سه گزینه‌ی الف، ب، ج

اینترپرایز یا همان برنامه های سازمانی: این گروه از برنامه‌ها به شکل موثر روی جاوا به عنوان یک زبان پایدار و مولتی پلتفرم حساب باز کرده اند. بخش مهمی از آن هم به دلیل حمایت «اوراکل» از آن است.

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

اکوسیستم JVM: زبان های دیگری مانند اسکالا یا کلوژور که روی JVM اجرا میشوند، خودشان به نوعی از دلایل محبوبیت بیشتر جاوا و تثبیت کننده‌ی آینده‌ی آن شده اند!

C و ++C

گزینه‌های «ب» و «ج» تاثیر گذارترین هستن.

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

بازی: سی و مخصوصا سی‌پلاس‌پلاس در زمینه‌ی ساخت بازی های کامپیوتری یک استاندارد به حساب می‌آیند.

همه‌ی این‌ها باعث میشوند این دو زبان از نظر محبوبیت و ضریب کاربرد همیشه در یک حالت ثبات باقی بمانند.

SQL

گزینه‌ی «ب»: زبان استاندارد و پذیرفته در سیستم های پایگاه داده. این زبان با انحصار به محبوبیت رسیده است.

JavaScript

گزینه‌ی «ب»: تنها زبان استاندارد و پذیرفته شده در کلاینت (مرورگر). به جرات می توان گفت اگر این انحصار وجود نداشت، جاوا اسکریپت عمرش به چند سال هم نمیکشید!

گزینه‌ی «الف»: به تناسب گزینه‌ی «ب»، رقابت تنگاتنگی بین مایکروسافت، اپل، گوگل، و موزیلا در جریان است تا بهترین موتور پردازش جاوااسکریپت را ارائه کنند. این رقابت برای جاوا اسکریپت سودمند بوده.

گزنه‌ی «ج»: به تناسب گزینه‌ی «ب»، جاوا اسکریپت زبانی است که امروزه تمام برنامه نویسان چه بخواهند و چه نخواهد باید آن را یاد بگیرند! به همین دلیل از محبوبیت بالایی برخوردار است.

#C

مهم ترین عامل گزینه‌ی «الف» است، هرچند که گزینه‌های «ب» و «ج» هم کم تاثیر نیستند.

سی شارپ و دات نت به استاندارد توسعه‌ی نرم افزار در سکوی مایکروسافت تبدیل شده اند. اپلیکشن ویندوز، ویندوز سرور، ویندوز موبایل، ایکس باکس، …. روی سکوهای مایکروسافتی، سی شارپ بهترین گزینه است.

Swift

مهم ترین عامل گزینه‌های «الف» و «ب» است. ابراز نظر درباره گزینه‌ی «ج» هنوز برای این زبان زود است.

سوییفت زبان «اپل» است. فکر میکنم همین جمله برای این زبان کافی باشد! وقتی پای اپلیکیشن‌های مک، آیفون، آیپد، و … به وسط می آید، تنها گزینه (به جز آبجکتیو-سی) زبان سوییفت است. به خاطر قدرت و نفوذ اپل در جامعه‌ی نرم افزاری، این زبان چه بخواهیم و نخواهیم موفق خواهد بود.

PHP

بیشتر گزینه‌ی «ج» و تا حدی گزینه‌ی «ب»

هیچ آلترناتیو قدرت مند دیگری نیست که روی هاست های اشتراکی ساپورت شود. هاست هایی که با قیمت به شدت ارزان شان، سهم بزرگی از سرویس دهی به مشتریان کوچک را به عهده دارند. پی اچ پی در گذر زمان برنامه نویسان زیادی را جذب کرده و هیچ زبان دیگری نیست که بتوان سایت های کوچک را به راحتی پی اچ پی در آن پیاده سازی کرد.

از طرفی سیستم هایی مانند وردپرس و دروپال و جوملا و … در زمینه‌ی سایت های محتوا محور (که بخش بزرگی از اینترنت را تشکیل میدهند) به عنوان سیستم های پذیرفته شناخته میشوند. زبان های دیگر هم زیاد میلی ندارند که سیستم هایی شبیه این ها را بسازند چون میدانند که به این راحتی به محبوبیت این سیستم ها لطمه وارد نمیشود.

Python, Ruby

بیشتر از همه گزینه‌ی «ج»

سال ها پیش، در یک دورانی، در برنامه نویسی یک خلا به وجود آمده بود: نبود زبان هایی همه منظوره و آسان که از کیفیت مناسبی هم برخوردار باشند؛ پایتون و روبی توانستند آن خلا را پر کنند و خوش بدرخشند و تعداد زیادی از برنامه نویسان را به خود جذب نمایند. از ابزارهای متعدد ترمینال و دسکتاپ گرفته تا وب اپلیکشن هایی با مقیاس متوسط و نیمه بزرگ، این دو زبان هایی هستند که واقعا کار گشا می باشند.




اگر واقع بین باشم، این لیست در همین جا تمام می شود! بقیه زبان ها در عالم واقعیت فاصله‌ی زیادی با لیست بالا دارند (حتی اگر ردیت و هکرنیوز چیز دیگری به شما تلقین کنند.)

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

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

ارلنگ، برنامه نویسان پس از سال ها تازه به یادش افتاده اند؛ ارلنگ در طراحی و ساخت سیستم های توزیع شده تقریبا بی رقیب است، ولی می توان گفت در زمینه‌های دیگر حرف زیادی برای گفتن ندارد.

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

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

اف شارپ، مشابه اسکالا و کلوژور همیشه در سایه سی شارپ خواهد ماند. فوکوس اصلی مایکروسافت، سی شارپ است. بقیه زبان ها بیشتر برای راضی نگه داشتن سلیقه های مختلف ظاهر شده اند.

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



شاید اشتباه کنم، اما فکر میکنم اگر تمام کدهای نوشته شده در زبان های بخش دوم را با هم جمع کنیم، باز به اندازه‌ی حتی یکی از زبان های ذکر شده در بخش اول نمی رسند!

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

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

نظرات

comments powered by Disqus