نظرات (6)

زبان برنامه نویسی C را شاید همه جا نبینید، اما در پسِ پرده، در قلب بسیاری از سیستم‌ها حضور دارد. وقتی خودرویی را روشن می‌کنید، برد اصلی آن به احتمال زیاد برای ارتباط با قطعات مختلف، از C استفاده می‌کند. وقتی با تلفن همراه خود، چه iOS و چه Android، کار می‌کنید، هسته اصلی سیستم عامل، با استفاده از همین زبان نوشته شده است. اما این زبان چیست و چرا C نام‌گذاری شده؟ داستان زبان‌های B، D و حتی A چیست؟

C-Program.jpg
بخشی از یک برنامه نوشته شده به زبان C در حال اجرا روی یک مک‌بوک اپل

مقدمه

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

اما آیا تا به حال به این فکر کرده‌اید که چرا نام این زبان، «C» است؟ به عنوان نقطه شروع به شما می‌گوییم، زمانی که زبان برنامه نویسی C پا به میدان گذاشت، انقلابی را در دنیای ما و زندگی انسان‌ها به وجود آورد. اما ریشه این نامگذاری کجاست و چرا زبانی به این قدرت، نامی تا این حد ساده دارد؟

بازگشت به گذشته: آزمایشگاه‌های بل و آغاز ماجرا

برای یافتن پاسخ سوالاتی که در مقدمه این مقاله بیان کردیم، باید به گذشته بازگردیم و نگاهی به یک ساختمان بزرگ و در عین حال نامرئی در ایالت نیوجرسی آمریکا در اواسط قرن بیستم بیاندازیم: آزمایشگاه‌های بل (Bell Labs).

Bell-Labs.jpg
یکی از اتاق‌های آزمایشگاه‌های بل در دهه 1970 میلادی

این آزمایشگاه‌ها که توسط الکساندر گراهام بل (همان مخترع دوست‌داشتنی تلفن) تاسیس شده و در آن زمان توسط شرکت AT&T  (که به نوعی یک سازمان قدرتمند خصولتی آمریکایی و دارنده حق نانوشته انحصار در امور ارتباطی بود) اداره می‌شد. همانطور که این‌روزها در کشور ما نیز دیده می‌شود، این دست سازمان‌ها بودجه‌های هنگفتی دارند و اگر با مدیریتی مناسب اداره شوند، می‌توانند منشأ تحولات گسترده شوند.

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

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

PDP-1170.jpg
فرانت پنل نسخه اولیه کامپیوتر PDP-11/70 که با زبان C کار می‌کرد

زبان B: نقطه آغازین

در سال 1969، کن تامپسون، محقق بااستعداد و سرسخت در آزمایشگاه‌های بل، روی یک پروژه عظیم و پیچیده سیستم عامل به نام Multics کار می‌کرد. هنگامی که آزمایشگاه‌های بل از این پروژه دست کشید، تامپسون با مقداری وقت آزاد و یک مشکل خاص مواجه شد: او می‌خواست بازی‌ای که نوشته بود را بر روی یک کامپیوتر قدیمی و غبارگرفته DEC PDP-7 اجرا کند.

DEC-PDP-7 .jpg
یک کامپیوتر DEC PDP-7 در دهه 1960

این کامپیوتر PDP-7 از نظر استانداردها حتی در دهه 1960 نیز قدیمی محسوب می‌شد و حافظه بسیار محدودی (حدود 8 کیلوبایت) داشت. تامپسون برای اجرای بازی خود، یک سیستم عامل جدید را از ابتدا ساخت. جالب است بدانید که این ایده شاید تفننی خود آغاز راه هسته معروف و بنیادین سیستم‌عامل پایه Unix شد.

با این حال، نوشتن Unix به زبان اسمبلی (زبان خام و ابتدایی که مستقیماً با سخت‌افزار ارتباط برقرار می‌کند) یک کابوس بود. تامپسون به یک زبان سطح بالاتر، زبانی نزدیک به منطق انسانی نیاز داشت.

Galactic-trip.jpg
نمایی از نسخه اولیه بازی «سفر فضایی» تامسون که در مرورگر شما هم اجرا کنید

در زمانی که تامپسون روز و شب را کار می‌کرد تا ایده جالب خود را پیاده کند، زبان برنامه نویسی سطح بالاتر و مرتبط قابل استفاده، زبان «Basic Combined Programming Language» یا به اختصار، BCPL بود. اما BCPL برای سخت افزار محدود PDP-7 بیش از اندازه سنگین و بزرگ بود. تامپسون بخش "Basic" را از BCPL حذف کرد، آن را به اصول اولیه اش تقلیل داد و یک زبان جدید به نام B ایجاد کرد. این زبان سریع، سبک و اولین گام به سوی برنامه نویسی مدرن بود.

richie-thompson.jpg
کن تامپسون و دنیس ریچی در حال کار روی سیستم‌عامل Unix در آزمایشگاه‌های بل

مرگ B و تولد C

اما همانطور که احتمالاً متوجه شده‌اید، زبان B در نهایت باید می‌مرد. واقعیت آن است که این زبان برای PDP-7 مناسب بود، اما زمانی که آزمایشگاه‌های بل به سخت‌افزارهای پیشرفته‌تر PDP-11 ارتقا یافت، یک زبان بی‌مانند و تایپ‌لس مانند B کافی نبود. محققان در آزمایشگاه بل به این نتیجه رسیده بودند که این زبان ناکارآمد بود و باعث می‌شد PDP-11 جدید و گران‌قیمت، کندتر از توانایی‌هایش کار کند.

PDP-1120.jpg
فرانت پنل کامپیوتر PDP-11/20؛ اولین سخت‌افزار رسمی اجراکننده زبان‌های C و C++

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

richie-thompson-2.jpg
دنیس ریچی و کن تامپسون در سال 1973

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

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

زبان C باعث شد بتوانیم سیستم‌عامل Unix را داشته باشیم

در سال 1973، ریچی و تامپسون هسته سیستم عامل Unix را به زبان C بازنویسی کردند. پیش از آن، سیستم‌عامل‌ها همیشه به زبان اسمبلی نوشته می‌شدند، زیرا همه تصور می‌کردند که زبان‌های سطح بالاتر خیلی کند هستند. C این تصور را به طور کامل برطرف کرد. این زبان سریع، ظریف و مهمتر از همه، قابل حمل (از یک دستگاه به دستگاهی دیگر از یک خانواده دیگر) بود.

زبان D هم از راه رسید؛ یا نرسید؟!

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

در همین دوره بود که مهندسی دیگر به نام بیارنه استروتروپ،  که او هم محققی در آزمایشگاه‌های بل بود، با وجود رضایت از عملکرد و سرعت بالای زبان سی، تصمیم گرفت مفهومی به نام «برنامه‌نویسی شی‌گرا»  (Object-Oriented Programming)را به آن اضافه کند. به زبان ساده، او می‌خواست به برنامه‌نویسان اجازه دهد داده‌ها و منطق را در «اشیاء» مانند یک «کاربر» که نام و رمز عبور خود را می‌داند، گروه‌بندی کنند.

biarne.jpg
بیارنه استروتروپ در دفتر کارش

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

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

در حالی که همکاران دیگر به این ایده می‌خندیدند، استروتروپ از آن استقبال کرد و حتی این نظر را مطرح کرد که «چه خوب است که با این نام‌گذاری نشان دهیم که افراد با همان زبان C روبرو هستند که حالا «یک واحد افزایش یافته است»! همانطور که احتمالاً می‌دانید، اگر پس از یک متغیر در زبان سی، عبارت «++» بیاید، یک واحد به آن اضافه می‌شود. پس زبان جدید هم می‌توانست به نوعی «C+1» یا سی افزایش یافته باشد!

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

اما زبان D واقعاً وجود دارد

برای نزدیک به 30 سال، رویه نام‌گذاری زبان‌های برنامه‌نویسی، بسیار سلیقه‌ای شده بود. تا اینکه در سال 2001 والترا برایت، مهندس کامپایلر با تجربه و خوش‌نام دنیای نرم‌افزار، تصمیم گرفت که بالاخره این حرف را تصاحب کند. برایت سال‌ها ابزارهای C++ را ساخته بود و از «خشن و ناامن» بودن این زبان، به دلیل اجبار آن به حفظ سازگاری با کدهای قدیمی دهه 1970، ناراضی بود.

walter-bright.jpg
والتر برایت، خالق زبان برنامه‌نویسی D

این مهندس باتجربه می‌خواست قدرت خام C، ویژگی‌های سازمانی C++ را داشته باشد، اما با یک طراحی مدرن و تمیز همراه شود که بتوان آن را با نرم‌افزارهای مورد نیاز روز، راحت‌تر هماهنگ کرد. بنابراین، او زبان برنامه نویسی D را ایجاد کرد. D مدیریت حافظه بهتر و ویژگی‌های ایمنی را معرفی کرد که از بروز مشکلاتی که باعث «صفحه آبی مرگ» یا همان Blue Screen of Death در کامپیوتر می‌شود، جلوگیری می‌کرد.

اما علی‌رغم دستاوردهای این کارشناس مهم دنیای برنامه‌نویسی مدرن، D با یک مشکل کلاسیک روبرو شد. تا زمانی که D معرفی شد، جهان از آن عبور کرده بود. شرکت‌های بزرگ از Java و C# استفاده می‌کردند و جهان همچنان به طور وفادارانه‌ای به C و C++ گره خورده بود. چند سال بعد، زبانی به نام Rust ظاهر شد که به شدت بر ایمنی حافظه (همان اصل D) تمرکز داشت و موفق شد توجه جهان را به گونه‌ای که D هرگز نتوانست به دست آورد، جلب کند. همه این شرایط در نهایت موجب شد تا زبان D در اصطلاح منسوخ شده و به جایگاهی که برایش در نظر گرفته شده بود، نرسد.

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

اکنون در سال 2026، ما همچنان در عصر C زندگی می‌کنیم. حتی زبان‌های جدید و مدرن مانند Python یا JavaScript معمولاً توسط برنامه‌هایی تفسیر می‌شوند که خودشان با C نوشته شده‌اند. C همچنان سنگ بنای علم برنامه نویسی است. زبانی که در یک آزمایشگاه متولد شد تا به یک نفر کمک کند یک بازی فضایی را بر روی کامپیوتری که اساساً یک ماشین حساب بزرگ بود، اجرا کند.

آیا زبان A هم وجود دارد؟

پس از خواندن این داستان شاید به این فکر افتاده باشید که اگر زبان‌های B، C و حتی D وجود دارند، آیا تا به حال زبانی به نام A هم خلق و استفاده شده است؟ پاسخ این سوال، تقریباً «بله» است؛ اما با یک تبصره خاص!

خب. حالا می‌دانیم که C، C است زیرا از B نشأت گرفته. اما، آیا B هم خودش از زبان A آمده است؟ پاسخ مثبت است، اما نه به همان شکلی که فکر می‌کنید. شما می‌بینید که زبان رسمی A قبل از این‌ها وجود نداشت. بله، C به C تبدیل شد زیرا بعد از B آمده بود. اما B به B تبدیل شد زیرا حرف اول BCPL بود، نه اینکه بعد از A آمده باشد.

algol.jpg
کتابچه راهنمای زبان ALGOL

با این حال، اگر خط سیر این سریال زیبا را به درستی دنبال کنیم، داستان قبل از آزمایشگاه‌های بل آغاز می‌شود. قبل از B یا C، زبانی به نام ALGOL یا «زبان الگوریتم» وجود داشته که مخفف عبارت Algorithm Language بوده و در سال 1958 متولد شده است. برخلاف دیگر زبان‌های برنامه‌نویسی که در این مقاله شهر سخت‌افزار در موردشان صحبت کردیم، زبان ALGOL زاده ذهن یک مهندس خلاقه به تنهایی نبوده، بلکه یک کمیته از دانشمندان اروپایی و آمریکایی برای ساخت آن دست به کار شده بودند.

Burroughs-B5500 .jpg
کامپیوتر موسوم به Burroughs B5500 که با زبان ALGOL کار می‌کرد

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

بعدها زبانی به نام CPL یا Combined Programming Language (زبان برنامه‌نویسی ترکیبی) نیز شکل گرفت که بر اساس ایده‌های ALGOL ایجاد شده بود. البته این زبان فوق‌العاده پیچیده (برای سخت‌افزارهای مرسوم آن زمان) بود و همین پیچیدگی بود که در نهایت موجب شد مهندسان دیگری دست به کار شوند و از آن یک نسخه "Basic" بسازند. همین Basic به ابتدای نام زبان CPL چسبیده و در نهایت با نام مناسب BCPL در اختیار مهندسان آزمایشگاه بل قرار گرفته و در همین نقطه داستان خاص آقای تامسون، دوست عزیز ما برای اجرای بازی ساخته‌شده‌اش نوشته شد.

نظر شما در مورد زبان C و دیگر مشتقات یا هم‌خانواده‌های آن چیست؟ آیا خاطراتی از آن دارید؟

نظر خود را بنویسید...
شما مهمان هستید ( ثبت نام؟ )
ارسال نظر بدون عضویت در سایت
در حال بارگذاری نظرات... به‌روزرسانی نظرات پس از 00:00.
  • این نظر هنوز منتشر نشده است.
    · حدود 2 ماه قبل
    همیشه میگن عمر زیاد به چه درد میخوره؟ به نظرم آدم باید زنده باشه و فقط از تکنولوژی لذت ببره
    احساس میکنم این چند سال خیلی استپ شده، یعنی اگه هوش مصنوعی هم نمیومد که کلا هیچی
    • این نظر هنوز منتشر نشده است.
      · حدود 2 ماه قبل
      بله البته باید پولش باشه داداش من چون تکنولوژی مفتی نمیدن
  • این نظر هنوز منتشر نشده است.
    · حدود 2 ماه قبل
    کلا زبان D ارزش یادگیری داره؟
  • این نظر هنوز منتشر نشده است.
    · حدود 2 ماه قبل
    خوب دلیل اصلی موفقیت C چیه؟
    • این نظر هنوز منتشر نشده است.
      · حدود 2 ماه قبل
      به خاطر کتاب خونه هاییه که داره، جامعه کاربری بزرگی پیدا کرده این چند سال
  • این نظر هنوز منتشر نشده است.
    · حدود 3 ماه قبل
    ممنون از سایتتون خیلی جالب و خواندنی بود?!ما مدیون همه انسان‌هایی هستیم که برای پیشرفت علم و بهبود مشکلات بشری تلاش کردند.خدا عمر طولانی و زندگی سراسر از خوشبختی نصیب این دسته از انسانها کنه امین
  • این نظر هنوز منتشر نشده است.
    · حدود 3 ماه قبل
    تا این دنیا هست ،همه ما انسانها مدیون دانشمندان بزرگ و خالق c c++, هستیم
  • این نظر هنوز منتشر نشده است.
    · حدود 3 ماه قبل
    برای من نقطه اوجش اینجا بود
    "او دو سال بر روی B کار کرد تا آن را بازسازی کند."