در این مقاله به بررسی برخی از اولین و مهمترین زبانهای صنعت نرمافزار خواهیم پرداخت و همچنین تاریخچهای از دلایل و نحوۀ توسعۀ برخی از زبانهای برنامهنویسی نامآشنا را تشریح میکنیم اما پیش از ادامه توصیه میکنیم به مقالات حقایقی جالب در مورد دنیای برنامهنویسی
و آشنایی با اولینهای دنیای برنامهنویسی مراجعه نمایید.
اولین ماشین با قابلیت برنامهریزی در جهان
Joseph Marie Jacquard یک بافنده و بازرگان فرانسوی بود که در سال 1800 اولین دستگاه نساجی با قابلیت برنامهریزی در جهان را طراحی کرد که این دستگاه از یکسری کارتهای متصل به هم تشکیل شده بود که اپراتور با تغییر تعداد، نوع و ترتیب آنها امکان ارسال دستورهای مختلف به ماشین به منظور انجام کارهای مد نظرش را پیدا میکرد. این دستگاه اولین پردازندۀ چندتِرِدی در زمان خود به شمار میرفت که قابلیت انجام همزمان چند کار را داشت و پروسۀ تولید منسوجات با بهکارگیریِ الگوهای پیچیده را تسهیل میکرد.
اولین برنامۀ کامپیوتری جهان
Ada Lovelace در سال 1842 خاطرات یک ریاضیدان ایتالیایی به نام Francis Maneclang در رابطه با اولین ماشین تحلیلگر ارائهشده توسط Charles Babbage را از فرانسه به انگلیسی ترجمه کرد و در کنار ترجمۀ این خاطرات، جزئیات دقیق آنها را یادداشت میکرد که بر اساس برداشتهای شخصی خود روشی برای محاسبۀ اعداد برنولی با این ماشین تحلیلگر را ابداع کرد و برخی از مورخان به عنوان اولین برنامۀ کامپیوتری جهان آن را به رسمیت شناختهاند اما به دلیل نبود کامپیوتر در آن زمان، آدا لاولیس هرگز موفق به اجرای برنامۀ خود نشد (برای آشنایی بیشتر با این ریاضیدان، میتوانید به مقالۀ Ada Lovelace: آشنایی با اولین برنامهنویس جهان مراجعه نمایید.)
اولین کامپیوترهای مدرن در جهان
Alan Turing دانشمند، ریاضیدان و یک مهندس کامپیوتر بود که با عنوان «پدرِ علم کامپیوتر و هوش مصنوعی» نیز شناخته میشود که خدمات فراوانی را در حوزۀ فناوری ارائه کرده است که از جملهٔ مهمترین آنها میتوان به ساخت اولین کامپیوترهای مدرن امروزی در جهان و همچنین طراحی تست تورینگ اشاره کرد که طی این آزمون توانایی یک سیستم کامپیوتری در جهت ارائۀ رفتاری مشابه رفتار انسان سنجیده میشود و در سال 1936 معتبرترین جایزهٔ علمی در حوزۀ آیتی و مهندسی کامپیوتر به افتخار وی «جایزهٔ تورینگ» نام گرفت.
حال پس از این مقدمه، در ادامه قصد داریم برخی از مطرحترین زبانهای برنامهنویسی در تاریخ توسعهٔ نرمافزار را مورد بررسی قرار دهیم.
Fortran
زبان برنامهنویسی فورترن توسط John Backus و در سال 1957 ایجاد شد که به عنوان اولین زبان رسمی شناخته میشود که برنامهنویسان با بهکارگیریِ آن دست به توسعۀ اپلیکیشن میزدند که جهت آشنایی بیشتر با این زبان، میتوانید به مقالۀ Fortran: زبانی که بیش از نیم قرن از عمرش میگذرد مراجعه نمایید.
COBOL
Grace Hopper در سال 1959 اولین زبان برنامهنویسی اینترپرایز برای توسعۀ اپلیکیشنهای تجاری را معرفی کرد و نام این زبان را Common Business Oriented Language یا به اختصار COBOL گذاشت که جهت آشنایی بیشتر با این زبان برنامهنویسی میتوانید به مقالۀ COBOL: یک زبان برنامهنویسی قدیمی که کماکان زنده است! مراجعه نمایید.
BASIC
John Kemeny و Thomas Kurtz دریافتند که زبانهای برنامهنویسی که تا قبل از ایشان معرفی شده بودند بسیار سخت بوده و صرفاً ریاضیدانان و دانشمندان قادر به توسعهٔ نرمافزار با بهکارگیریِ زبانهای برنامهنویسی مذکور بودند و کار با کامپیوتر در آن زمان نیازمند آشنایی با برنامهنویسی بود که از همین روی تصمیم به طراحی یک زبان برنامهنویسی سادهتر گرفتند تا به واسطهٔ آن دانشآموزان و علاقهمندان قادر بر یادگیری و در نهایت کار با کامپیوتر و برنامهنویسی شوند که این مسئله منجر به معرفی یک زبان برنامهنویسی تحت عنوان BASIC شد.
Pascal
Niklaus Wirth در سال 1970 زبان برنامهنویسی پاسکال را معرفی کرد که به دلیل برخورداری از ویژگیهای آموزشی، به عنوان یک زبان مناسب برای آموزش شیوههای برنامهنویسی اصولی و دقیق به شمار میرود. Niklaus Wirth پیش از توسعۀ این زبان یکسری زبان برنامهنویسی دیگر از جمله Modula و Oberon را طراحی کرده بود و همچنین قانونی تحت عنوان Wirth را ارائه داده است که در آن گفته میشود سرعت رشد پیچیدگی نرمافزارها بیشتر از سرعت رشد قابلیتهای سختافزارهای مورد نیاز برای اجرای نرمافزارهای مذکور است که قانون Moore را منسوخ میکند چرا که توسعهدهندگان نرمافزار با گذشت زمان اپلیکیشنهایی را توسعه دادهاند که تمامی بخشهای آن تنها روی سختافزار مد نظر قابلتوسعه نیستند.
C
Dennis Ritchie در سال 1972 و در آزمایشگاههای بِل (Bell Labs) زبان برنامهنویسی سی را با الهام از قابلیتهای زبانهایی همچون B و BCPL طراحی کرد و این زبان از سینتکس تقریباً پیچیدهای برخوردار است به طوری که برای برخی از برنامهنویسان مبتدی گیجکننده است. در ادامه، قابلیتهایی نظیر جلوگیری از ارورهای ناشی از به اصطلاح Segmentation Fault به این زبان افزوده شد که در تلاش برای دستیابی به مکانهایی از حافظه اتفاق میافتد که مجاز به دسترسی به آنها نیستیم و منجر به ایجاد اِکسپشن در روند انجام تَسک مد نظر میشود. همچنین به منظور افزایش بهرهوری زبان سی، سایر ویژگیهای مد نظر دولوپرها در این زبان گنجانده شد که بعدها دنیس ریچی و دوستانش در تلاش برای نشان دادن قابلیتهای این زبان در قالب یک مسئلۀ کاربردی، سیستمعامل UNIX را توسعه دادند.
Smalltalk
Alan Kay در سال 1980 با ایجاد مفهوم برنامهنویسی شییٔگرا نام Smalltalk را برای زبان برنامهنویسی ابداعی خود انتخاب کرد که بر پایۀ مفهوم آبجکت (شییٔ) طراحی شده است و اپلیکیشنهای توسعهیافته با آن مجموعهای از آبجکتها را شامل میشوند که هر یک از آنها خصوصیات و رفتارهای خاص خود را دارند و بر اساس این رفتارها دولوپرها میتوانند قابلیت تعامل هر یک از آبجکتها را برای انجام تَسک مد نظر خود فراهم کنند.
Perl
Larry Wall در سال 1987 در شرکت System Development Corporation مشغول به کار بود که با همکاری دوستانش روی ساختار زبان C کار کرده و زبان برنامهنویسی Perl را به عنوان یک زبان همهکاره، دارای یک مفسر اختصاصی و مبتنی بر سیستمعامل یونیکس معرفی کردند که اکنون به عنوان یکی از زبانهای سمت سرور برای توسعۀ وب اپلیکیشن به شمار میآید.
Ada
Jean Ichbiah در سال 1983 زبانی همهکاره و شییٔگرا را برای توسعۀ نرمافزارهای بزرگ طراحی کرد و قصد داشت تا با بهکارگیریِ آن، الگوریتم نوشتهشده توسط اولین برنامهنویس جهان (Ada Lovelace) که موفق به اجرای برنامۀ خود روی یک کامپیوتر واقعی نشد را اجرا کند که در همین راستا و به پاس زحمات وی، این زبان Ada نامگذاری شد.
Objective-C
Brac Box و Tol Move در سال 1986 زبان برنامهنویسی Objective-C را با الهام از زبان برنامهنویسی Smalltalk طراحی کردند که با اِعمال یکسری تغییرات در کامپایلر زبان C و افزودن برخی قابلیتهای برنامهنویسی شییٔگرا به آن توسعه یافته است به طوری که تمامی کدهای نوشتهشده با زبان سی را میتوان با کامپایلر آبجکتیوسی کامپایل کرد (این زبان با عرضهٔ سوئیفت به مرور محبوبیت خود را از دست داده است.)
++C
Bjarne Stroustrup در سال 1983 با الهام از قابلیتهای زبان برنامهنویسی Simula در توسعۀ نرمافزارهای بزرگ و همچنین سرعت توسعهٔ زبان برنامهنویسی BCPL و با بهکارگیریِ روشهای برنامهنویسی شییٔگرا، نسخهٔ جدیدی از زبان C تحت عنوان ++C را در آزمایشگاههای بِل توسعه داد به طوری که علاوه بر خاصیت شییٔگرایی، قابلیتهای جدیدی به این زبان افزوده شده است که در همین راستا توصیه میکنیم به مقالهٔ Bjarne Stroustrup: زبان ++C را در درجهٔ اول برای خود و همکارانم توسعه دادم مراجعه نمایید.
Python
Guido van Rossum در سال 1991 زبان برنامهنویسی Python را به عنوان جانشینی برای زبان ABC ابداع کرد. او سالیان بسیاری را روی توسعۀ زبان ABC تلاش کرده بود اما متأسفانه با اقبال خوبی روبهرو نشد و زبان پایتون با هدف رفع کاستیهای این زبان و ارائۀ یک زبان برنامهنویسی ساده، اسکریپتی و اپنسورس را طراحی کرد (اگر علاقهمند به فراگیری این زبان برنامهنویسی هستید، به دورۀ آموزش پایتون در سکان آکادمی مراجعه نمایید.)
Lua
از سال 1977 تا 1992 در کشور برزیل قوانین سختی برای تجارت بینالمللی در زمینۀ سختافزار و نرمافزارهای کامپیوتری وجود داشت تا بدین وسیله انگیزۀ افراد در جهت ساخت آنها در داخل کشور افزایش یابد که در نتیجۀ این قوانین Roberto Lerusalimschy و دوستانش در سال 1993 تصمیم میگیرند که یک زبان برنامهنویسی اسکریپتی لوکال و مختص کشور برزیل را با استفاده از قابلیتهای زبانهای مدیریت دیتا همچون Simple Object Language یا به اختصار SOL و Data Entry Language یا به اختصار DEL تحت عنوان Lua طراحی کنند که از جمله تفاوتهای بارز این زبان میتوان به شروع نامگذاری اندیسها از یک به جای صفر اشاره کرد!
PHP
Rasmus Lerdorf در سال 1994 تمپلیتی با زبان Perl و بر اساس استاندارد اسکریپتنویسی CGI (مخفف Common Gateway Interface) برای وبسایت شخصی خود طراحی کرد که یک روش کدنویسی استاندارد برای هندل کردن مبادلۀ دیتا از مرورگر به وبسرور است تا بدین وسیله وبسایتش قابلیت انجام کارهای سادهای همچون نمایش رزومۀ شخصی او و نمایش آمار بازدید از این وبسایت را داشته باشد و آن را PHP نامید که مخفف عبارت Personal Home Page بود (البته امروزه PHP مخفف واژگان PHP: Hypertext Preprocessor است.) بعدها قابلیتهای دیگری همچون برقراری ارتباط با دیتابیس و یا مفهوم شیئگرایی به این زبان افزوده شده و مورد توجه دولوپرهای سراسر جهان قرار گرفت (جهت فراگیری این زبان برنامهنویسی میتوانید به دورۀ آموزش PHP در سکان آکادمی مراجعه کنید.)
Ruby
زبان برنامهنویسی روبی در سال ۱۹۹۳ توسط Yukihiro Matsumoto طراحی شد که با الهام از ویژگیهای زبانهای برنامهنویسی Perl و Python و به منظور توسعۀ زبانی با قابلیتهای برنامهنویسی فانکشنال و شییٔگرا معرفی شد که توسعۀ نرمافزار با بهکارگیری فریمورک محبوب آن تحت عنوان Ruby on Rails بسیار ساده است.
Java
James Gosling و همکارانش در سال 1990 و در شرکت Sun Microsystems یک زبان برنامهنویسی شییٔگرا را با الهام از سینتکس زبانهایی همچون C و ++C به منظور توسعۀ نرمافزار برای استفاده در ابزارهای الکترونیکی طراحی کردند که در ابتدا Oak نامگذاری شد و در ادامه از این زبان در پیکربندی استاندارد مرورگرهای وب استفاده شده و همچنین به Java تغییر نام یافت مضاف بر اینکه شعار توسعهدهندگان این زبان «یک بار بنویس، همه جا اجرایش کن» بود به طوری که سورسکد اپلیکیشن در یک فایل JAR به صورت پکیج ارائهشده و با استفاده از ماشین مجازی جاوا (JVM) و در هر پلتفرمی قابلاجرا است (علاقهمندان به فراگیری گامبهگام این زبان برنامهنویسی میتوانند به دورۀ آموزش جاوا در سکان آکادمی مراجعه نمایند.)
JavaScript
Brendan Eich در سال 1995 با حمایت شرکت NetScape یک زبان برنامهنویسی طراحی کرد که میتواند در راستای توسعۀ وبسایت به طوری که در تمامی مرورگرها اجرا شود مورد استفاده قرار گیرد (لازم به یادآوری است که این زبان در پروژۀ Skynet نیز به کار گرفته شده است.) در ابتدا این زبان را LiveScript نامگذاری کردند اما به خاطر محبوبیت زبان جاوا تصمیم بر آن شد تا LiveScript به JavaScript تغییر نام پیدا کند. البته در طی استانداردسازی زبان جاوااسکریپت و مشابهت نام این زبان به جاوا، پس از مدتی به ECMAScript تغییر نام داد اما این در حالی است که هنوز هم اکثر دولوپرهای سراسر جهان آن را به نام جاوااسکریپت میشناسند.
#C
Anders Hejlsberg در سال 2001 با بهبود قابلیتهای زبان برنامهنویسی جاوا زبانی جدید تحت عنوان #C را معرفی کرد. این زبان برخی قابلیتهای زبانهای برنامهنویسی همچون C و ++C را دارا است و همچنین قابلیت برنامهنویسی شییٔگرا نیز به آن افزوده شده است. خیلیها بر این باورند که سیشارپ نسخهٔ مایکروسافتی جاوا است!
Go
Ken Thompson و Rob Pike در سال 2009 یک زبان برنامهنویسی مشابه زبانهایی همچون C و Java را تحت عنوان Go یا به بیان دیگر Golang طراحی کردند که علاوه بر برخورداری از برخی قابلیتهای این دو زبان برنامهنویسی نظیر استاتیک تایپ بودن، ویژگیهای دیگری همچون بهرهوری بالا، توسعۀ آسان و پرفورمنس بالای اپلیکیشن را دارا است که به صورت اپنسورس منتشر شده است.
Rust
Graydon Hoare در سال 2010 زبانی مشابه با زبانهای برنامهنویسی C و ++C تحت عنوان Rust طراحی کرد که برخی مشکلات این زبانها همچون ضعف در توسعۀ اپلیکیشنهای اینترپرایز و هزینۀ بالای آنها را برطرف کند که از جمله ویژگیهای آن میتوان به برخورداری از قابلیت برنامهنویسی فانکشنال، امنیت بالای اپلیکیشن و کانکارنسی در آن اشاره کرد (برای آشنایی بیشتر با این زبان به مقالۀ آشنایی با زبان برنامهنویسی Rust مراجعه نمایید.)
TypeScript
Anders Hjelsberg در سال 2012 با حمایت کمپانی مایکروسافت قصد داشت تا زبانی با قابلیتهای زبان برنامهنویسی #C را به منظور بهکارگیری آن در توسعهٔ وب اپلیکیشن طراحی کند که در همین راستا زبانی تحت عنوان تایپاسکریپت را معرفی کرد که این زبان سینتکسی مشابه زبان جاوااسکریپت دارا است و از قابلیتهای زبان برنامهنویسی جاوا در توسعۀ آن استفاده شده است.
CoffeeScript
Jeremy Ashkenas در سال 2013 زبانی را توسعه داد که از قابلیتهای زبان برنامهنویسی روبی برخوردار بوده و در عین حال به زبان جاوااسکریپت کامپایل میشود. او این زبان را کافیاسکریپت نامگذاری کرد که سینتکسی مشابه زبانهای برنامهنویسی همچون روبی و پایتون به منظور برطرف کردن پیچیدگیهای سینتکس زبان جاوااسکریپت و افزایش خوانایی آن دارا است.
Swift
Chris Lattner در سال 2014 زبان برنامهنویسی سوئیفت را با هدف توسعه و بهبود قابلیتهای زبان برنامهنویسی آبجکتیوسی همچون رفع برخی ارورهای برنامهنویسی، سینتکس طولانی و افزایش امنیت آن طراحی کرد که امروزه به عنوان زبان اصلی توسعهٔ اپلیکیشن برای اکوسیستم اپل مورد استفاده قرار میگیرد.
جمعبندی
به طور کلی، زبانهای برنامهنویسی مختلف به منظور رفع نیازهای مختلف صنعت توسعهٔ نرمافزار در طول زمان ابداع شدهاند و این در حالی است که برخی از آنها از یکسو با هدف رفع نواقص زبانهای قدیمیتر و همچنین عرضهٔ ویژگیهای مختص به خود از سوی دیگر به بازار عرضه شدهاند که دولوپرها با بررسی جنبههای مختلف توسعۀ اپلیکیشنشان و متناسب با نیازهای خود میتواند زبانهای برنامهنویسی مناسب را انتخاب کنند.