تاثیرگذارترین زبان برنامه‌نویسی ۷۰ سال گذشته کدام است؟

اگر روزی خواستید میان گروهی از برنامه‌نویس دعوا بیندازید، کافی است سوال بالا را در جمع‌شان مطرح کنید و بعد یواشکی در بروید! تخمین زده‌اند که در دنیا بین ۵هزار تا ۲۵هزار زبان برنامه‌نویسی وجود دارد، اما به نظر اغلب برنامه‌نویس‌ها فقط یک زبان برتر است و آن هم زبانی است که خودشان با آن کد می‌زنند! در این پست می‌خواهم یکی از بهترین پاسخ‌های دنیا به این سوال را با شما در میان بگذارم و یک بار برای همیشه قائله را ختم کنم (البته اگر قبل از آن در کامنت‌ها جنگ به پا نکنم!). این جوابی است که یک کاربر خردمند به نام دیمیتری زاگیدولین در Quora به این سوال داده‌ است. به نظر او، سه گروه هستند که می‌توانند مدال تاثیرگذارترین زبان‌های برنامه‌نویسی دنیا را با افتخار دور گردنشان بیندازند: مادربزرگ‌های زبان‌ها، شکل‌دهنده‌های دنیای برنامه‌نویسی معاصر، و غول‌های جهان امروز!

مادربزرگ‌های زبان های برنامه نویسی

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

خط سیر پیدایش زبان های برنامه نویسی در طول تاریخ و ارتباط زبان‌ها با یکدیگر
خط سیر پیدایش زبان های برنامه نویسی در طول تاریخ و ارتباط زبان‌ها با یکدیگر

تصویر بالا از وبسایت AI Study مروری بر خانواده زبان‌های برنامه‌نویسی دارد. برای نموداری حتی مفصل‌تر می‌توانید این تصویر از وبسایت DigiBarn را ببینید!

۱. اسمبلی (Assembly)

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

همه بازی‌های کنسول آتاری، نینتندو، سگا و... با اسمبلی نوشته شده‌اند. MS-DOS و لوتوس 1-2-3 (پدربزرگ اکسل) و نرم‌افزار سفینه ماه‌نشین آپولو هم همگی از دستاوردهای کار با اسمبلی هستند.

۲. فورترن (Fortran)

فورترن که در دهه ۱۹۵۰ در IBM ساخته شده بود، یکی از اولین زبان‌های برنامه‌نویسی است. فورترن یکی از پراستفاده‌ترین زبان‌هاست و حتی امروز هم همچنان نقش مهمی در دنیای برنامه‌نویسی ایفا می‌کند. می‌شود گفت همه زبان‌های برنامه‌نویسی ما مثل کوبول (Cobol)، لیسپ (Lisp)، سی (C)، اسمال‌تاک (Smalltalk)، جاوا (Java) و غیره از فورترن ریشه گرفته‌اند. فورترن از بسیاری جهات پیشرو دوران بود: مثلاً در مطرح کردن مفهوم کامپایلر، زبان‌ برنامه‌نویسی عمومی، و محاسبات علمی. همچنان که در مقاله ویکی‌پدیای آن آمده، این زبان هنوز هم استفاده‌های مهمی دارد: «فورترن مهم‌ترین زبان برای انجام ابرمحاسبات گسترده مثل مدل‌سازی وضعیت هوایی و اقلیمی، دینامیک سیال محاسباتی، شیمی محاسباتی، اقتصاد محاسباتی، دام‌پروری، اصلاح نباتات، و فیزیک محاسباتی است.»

۳. لیسپ (Lisp)

باورتان می‌شود که لیسپ در سال ۱۹۵۸ اختراع شده؟! لیسپ سرچشمه بسیاری از نوآوری‌ها در تحقیقات هوش مصنوعی بوده، خیلی از برنامه‌نویسان بزرگ دوران با آن آموزش دیده و رشد کرده‌اند، و حتی امروز هم برخی استارتاپ‌های مهم از آن در قالب زبان‌هایی مثل کلوژر (Clojure) استفاده می‌کنند. ساختار منطقی if-then-else که امروزه در همه زبان‌های برنامه‌نویسی مدرن حضور دارد، برای لیسپ اختراع شده بود. بازیافت حافظه یا زباله‌روبی (Garbage collection) هم اولین بار در لیسپ وجود داشت. لیسپ بود که باعث شد مفهوم برنامه‌نویسی تابعی (مثل List Comprehension در پایتون، نگاشت‌کاهش و...) در همه جا اینطور گسترده به کار برود. زبان‌های برنامه‌نویسی زیادی هستند که از لیسپ تاثیر گرفته‌اند؛ از جمله اسمال‌تاک (که ++C از آن تاثیر گرفته)، جاوا، روبی (Ruby)، پایتون و جاوا اسکریپت.

ادیتور ایمکس (Emacs) با لیسپ ساخته شده است. فروشگاه ویاوب (Viaweb) که بعدا به Yahoo Stores تبدیل شد و موتور جستجوی پروازهای ارزان‌قیمت ITA که اوربیتز (Orbitz) و کایاک (Kayak) از آن استفاده می‌کنند هم با لیسپ نوشته شده‌اند. نرم‌افزار کنترل از راه دور کاوشگر Deep Space 1 ناسا هم زبانش لیسپ بود. چه کسی می‌داند، حتی شاید کل جهان هستی هم با لیسپ ساخته شده باشد!

کمیکی از xkcd درباره اثرگذاری زبان‌ Lisp
کمیکی از xkcd درباره اثرگذاری زبان‌ Lisp

۴. سیمولا (Simula)

به لطف سیمولا بود که دنیای نرم‌افزار با مفهوم برنامه‌نویسی شیءگرا آشنا شد. Objectها، Classها، Inheritance، و دیگر مفاهیم شیءگرا همه ریشه در سیمولا دارد. سیمولا سرچشمه همه زبان‌های شی‌ءگرا مثل اسمال‌تاک، سی‌پلاس‌پلاس، سی‌شارپ، جاوا و جاوا اسکریپت است.

۵. اسمال‌تاک (Smalltalk)

اسمال‌تاک خودش از سیمولا نشأت گرفته، اما در زمان خودش انقلابی در دنیای برنامه‌نویسی ایجاد کرده بود و حتی هنوز هم از خیلی نظرها بی‌همتاست. به خاطر بازاریابی بد و رقابت داخل‌شرکتی، اسمال‌تاک آنطور که باید رواج پیدا نکرد، اما حالا به خاطر پروژه‌های وب و متن‌باز اسکوئیک (Squeak) و فارو (Pharo)، کمی دوباره مطرح شده است.

جاوا، آبجکتیو سی، سی‌شارپ، و جاوا اسکریپت (از طریق سلف (Self))، همگی مستقیماً از اسمال‌تاک تاثیر گرفته‌اند. روبی (Ruby) هم که یکی از محبوب‌ترین زبان‌های این روزهاست، نه تنها از اسمال‌تاک تاثیر گرفته که از نظر فلسفی از همه زبان‌های دیگر به آن شبیه‌تر است.

زبان‌های برنامه‌نویسی شکل‌دهنده‌ی دنیای معاصر

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

۱. زبان‌های C و ++C

زبان C آنقدر تاثیرگذار بوده که اصلاً نمی‌شود گستره تاثیر آن را راحت مشخص کرد. همه سیستم‌عامل‌هایی که استفاده می‌کنیم (ویندوز، یونیکس/لینوکس، اندروید، سیستم عامل اپل) همگی به C یا یکی از زبان‌های مشتق شده از آن نوشته شده‌اند. برنامه‌های آفیس مایکروسافت بر پایه‌ی ++C و #C هستند. فایرفاکس موزیلا با سی‌پلاس‌پلاس نوشته شده است. بخش زیادی از کدهای Mission-critical گوگل (مثلا بخش زیادی از بک‌اند جی‌میل) به زبان سی‌پلاس‌پلاس هستند. حتی اغلب بازی‌های کامپیوتری مشهور هم با سی یا سی‌پلاس‌پلاس نوشته شده‌اند.

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

۲. کوبول (COBOL)

کوبول زبان برنامه‌نویسی بانک‌ها و دولت‌هاست. برای اینکه متوجه شوید چه حجم زیادی از نرم‌افزارهای حیاتی دنیا با کوبول نوشته شده‌اند، بروید و در مورد بحران سال ۲۰۰۰ یا بحران Y2K سرچ کنید. از آنجا که اغلب برنامه‌ها سال چهار رقمی را فقط با دو رقم آخر نمایش می‌دادند، سال 2000 قرار بود به شکل 00 نشان داده شود که با طرز نمایش سال 1900 یکی بود. این مسئله کلی باگ مختلف در سیستم‌‌های کامپیوتری ایجاد می‌‌کرد و حتی خیلی‌ها فکر می‌کردند قرار است دنیا به خاطر آن به آخر برسد! سیستم‌هایی که این موضوع در موردشان مطرح بود، همگی سیستم‌های کوبول بودند. مقاله ویکی‌پدیا در باب اهمیت کوبول می‌گوید که «در سال ۱۹۹۷، گروه گارتنر (Gartner Group) گزارش کرد که هشتاد درصد کسب و کارها در جهان با کوبول جلو می‌روند، بیش از ۲۰۰میلیارد خط کد با آن نوشته‌اند، و تخمین زده می‌شود که سالانه پنج میلیارد خط کد جدید تولید ‌کنند.»

۳. پی‌اچ‌پی (PHP)

پی‌اچ‌پی و پرل (Perl) بودند که جهان وب (World Wide Web) را ساختند. پی‌اچ‌پی را راحت می‌شد یاد گرفت و استفاده کرد، و پیدا کردن هاستی که از پی‌اچ‌پی پشتیبانی کند هم هزینه چندانی نداشت. خیلی از سایت‌هایی که از قدیم آنها را می‌شناسید، با پی‌اچ‌پی نوشته شده‌اند؛ مثل فیس‌بوک، وردپرس، ویکی‌پدیا و همچنین بخش زیادی از یاهو، لینکدین، فلیکر و تامبلر.

غول‌های برنامه نویسی جهان امروز

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

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

۱. جاوا (Java)

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

در طی بیش از دو دهه، میلیاردها دلار صرف بهینه‌سازی ماشین مجازی جاوا (JVM) و اکوسیستم نرم‌افزاری آن شده است. حالا که سرعت این زبان به حد سی‌پلاس‌پلاس رسیده، زبان‌های بسیاری غیر از خود جاوا هم به بایت‌کد JVM کامپایل می‌شوند و به این ترتیب، جاوا هر روز تاثیرگذارتر از دیروز می‌شود. زبان‌های مبتنی بر JVM عبارتند از کلوژر(Clojure؛ گویشی از لیسپ)، اسکالا (Scala)، جایتون (Jython)، جِی‌روبی (JRuby)، و راینو (Rhino؛ نوعی جاوا اسکریپت سمت سرور)

۲. آبجکتیو سی (Objective-C)

آبجکتیو سی ترکیب عظیمی از سی و اسمال‌تاک است. دلیلی که آبجکتیو سی را هم در این لیست آورده‌ایم، این است که آیفون، آیپد، و سیستم عامل مک ۱۰ همگی با آن توسعه داده شده‌اند.

۳. جاوا اسکریپت (JavaScript)

جاوا اسکریپت سمت فرانت جهان وب (World Wide Web) را اجرا می‌کند. آن ویژگی‌های دینامیک و تر و تمیزی که در سایت‌هایی مثل Quora، جی‌میل و فیس‌بوک می‌بینید، همگی دستاوردهای جاوا اسکریپت هستند. در این سال‌ها خیلی‌ها در مورد جاوا اسکریپت برداشت‌های اشتباه کرده‌اند، اما این زبان هم بسیار قدرتمند هم خیلی شکیل است. از نظر سینتکس، جاوا اسکریپت از سی منشا گرفته اما از منظر فلسفی مبتنی بر سلف (Self) است. خود سلف هم ریشه در اسمال‌تاک دارد. از جاوا اسکریپت کم‌کم در سمت سرور هم استفاده می‌شود (مثلا در فریم‌ورک Node.js). استیو یگه (Steve Yegge) که از بلاگرهای قدیم دنیای برنامه‌نویسی و از کارمندان ارشد آمازون، گوگل و گرب بوده، معتقد است که جاوا اسکریپت در آینده بزرگ‌ترین زبان برنامه‌نویسی خواهد بود.

۴. روبی (Ruby) و پایتون (Python)

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

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