صندلی داغ با مخترع ++C
مجله الکترونیکی کامپیوترورد (www.computerworld.com) با مخترع ++C، بییارنه استراستروپ (Bjarne Stroustrup) مصاحبهآای انجام داده که تقریبا تمام جوانب این زبان برنامهآنویسی را از دید سازنده آن بررسی کرده است، از میان این مصاحبه طولانی، چند سوال را انتخاب کردیم که دانستن آنها در مورد این زبان برنامهآنویسی محبوب خالی از لطف نیست:

چه کسی ++ C را شروع کرد؟
من به دنبال ابزاری بودم که بتوانم نگارش توزیعآشده از هسته یونیکس را طراحی و پیادهآسازی کنم. در آن سال (1979) چنین چیزی وجود نداشت. به ابزاری نیاز داشتم که میآتوانست ساختار یک برنامه را بیان کند و مستقیما با سختآافزار سرو کار داشته باشد و بهآدرد برنامهآنویسیآهای اساسی و جدی سیستم بخورد.
نام ++ C از کجا آمده است؟
ابتدای کار، اسمش C with Classes بود. بسیاری نمیآتوانستند آن را تلفظ کنند و کمآکم به اسم C معروف شد. اما گویا متوجه نبودند که C صدا زدن این برنامه یعنی اشاره کردن به برنامه دنیس ریچی (!) نه برنامه من، برای همین اسمآهای مختلفی برای زبانآها گذاشتند. سیآ قدیم، سی بهتر، و چنین چیزهایی... تا اینآکه یک روز از طرف آزمایشگاهآهای بل (Bell Labs) برای من نامه آمد که یک اسم درست و حسابی برای این زبان انتخاب کنیم که ما آن موقع به ++ C بسنده کردیم. انتخاب زیادی نداشتیم، یک لیست بود که به ما دادند و من از میان آنها همین را انتخاب کردم. البته بیشتر موافق بودند که ++C را انتخاب کنیم، اما به نظر من تلفظش دیگر بسیار سخت میآشد.
تا به حال به موانع یامشکلاتی برخوردهآاید که توسعه زبان را به خطر بیاندازد؟
تا دلتان بخواهد! قوانین اصلی طراحی برنامه چیست؟ چه چیزی باید در زبان باشد و چه چیز نباید باشد؟ اغلب مردم بهآدنبال زبانی میآگردند که بسیار کوچک باشد و در عین حال تمام امکاناتی که آنها بهآدنبالش هستند را هم در خود داشته باشد، خب این غیرممکن است.
بعد از مدت کوتاهی که به شانس و اقبال اکتفا کرده بودم، بالاخره به این نتیجه رسیدم که باید به قانونی مشخص برسم. زبانی که در آن واحد هم پایدار باشد و هم برای برنامهآنویسی سیستم (همچون زبان C) مناسب باشد. واضح است که هیچ برنامهآای نمیآتواند هر دو را بهآطور کامل داشته باشد. اما هدف ++ C این بود، حالا چقدر به آن نزدیک شدیم، بعدا مشخص شد.

فرق بین زبان C همراه با کلاس که گفتید ++C چیست؟
صل فرق در تکنیک پیادهآسازی آن نهفته است.C همراه با کلاس را یک پیشآپردازنده پیادهآسازی میآکرد، اما ++ Cآ به یک کامپایلر درست و حسابی نیاز داشت (که من نوشتم). انتقال برنامهآها از C همراه با کلاس به ++ C بسیار ساده بود اما این دو زبان 100درصد سازگار نبودند. از دیدگاه زبانی اگر به این سوال نگاه کنیم، شاید به این پاسخ برسیم که ++ C از نظر توابع مجازی بهتر عمل میآکرد. ارزش گفتن دارد که مدیریت منابع، سازندهآها و ویرانگرهای ++ C درست همانآهایی بودند که در C همراه با کلاس از آن استفاده شد.
اگر الان شانس این را داشتید که ++C را دوباره اختراع کنید، کدام بخش آن را تغییر میآدادید؟
عجب سوال کلیشهآای پرسیدید، آن موقع خب معلوم است که 30 سال تجربه کار با ++ C را نداشتم و آن موقع، تنها منبعی که میآشد برای ++ C به او مراجعه کرد، خودم بودم که تازه آن هم تمام وقت نبود. اما در بهترین حالت، دوست داشتم که توابع مجازی، Templateها و استثناها را اگر در سال 85 پیاده میآکردم، ++ C زبان بسیار بهتری از آب در میآآمد.
وقتی در سال 1998،++ C به یک استاندارد بدل شد، چه احساسی داشتید و چه نقشی را در روند استانداردسازی بازی کردید؟
سالآهای زیاد بود که سخت کار میآکردم (1989 – 1997)، هر چند که الآن دارم روی استاندارد زیرمجموعهآاش کار میآکنم. اینکه زبان استانداردی را بخواهی محبوب حفظ کنی، کاری دشوار و وظیفهآای سخت است. ++ C هیچ پدری ندارد و هیچ کس نیست که برای توسعهآاش از جیب بزند، کتابخانهآهایش رایگان هستند و رایگان هم بازاریابی میآشوند. باز هم دست موسسه ایزو درد نکند که به رشد جامعه ++ C کمک کرد و همین رشد باعث شد داوطلبان زیادی از سراسر دنیا داشته باشد.

جالبترین برنامهآای که تا بهآحال دیدهآای که با ++ C نوشتهآاند چیست؟
نمیآتوانم یکی را انتخاب کنم.. بیشتر به سیستمآهای کامل نگاه میآکنم که بخشی از آنها را با ++ C نوشتهآاند. مثلا زیرسیستم خودروهای مریخآنشین ناسا، موتور جستجوی گوگل، سیستم رزرو هوایی آمادئوس به ذهنم میآرسد. اگر فقط بخواهم به کد نگاه کنم، بهآنظرم STL الکساندر استپانو یکی از مفیدترین، موثرترین و جالبآترین کدهای ++ C بود که تا بهآحال دیدهآام.
آیا فکر نمیآکنی که ++ GNU C بهتر است خطاهای طولانی کمتری داشته باشد که دانشجویان نترسند؟
البته، اما واقعا تقصیر کامپایلر گنو نیست. مشکل اصلی اینجاست که ++ C استاندارد 98 هیچ راه سادهآای برای تعریف یک تمپلیت پیشآپای برنامهآنویس نمیآگذارد. این یکی از ضعفآهای این زبان است، نه کامپایلر آن! و فقط با تغییر زبان میآشود آن را درست کرد که قرار است بخشی از C++0x (استاندارد جدید C++ C باشد).
================================================== ================================================== ==============================
مشکل اصلی اینجاست که ++ C استاندارد 98 هیچ راه سادهآای برای تعریف یک تمپلیت پیشآپای برنامهآنویس نمیآگذارد. این یکی از ضعفآهای این زبان است، نه کامپایلر آن! و فقط با تغییر زبان میآشود آن را درست کرد که قرار است بخشی از C++0x (استاندارد جدید C++ C باشد).
================================================== ================================================== ==============================
در آخر چیز دیگری هست که بخواهید اضافه کنید؟
بله من فکر میآکنم که ما باید هنر انتقال مفاهیم پایهآای ++ C را هم داشته باشیم. بسیار سخت است که بخواهیم از نظر فنی برنامه را توسعه بدهیم، اما به برنامهآنویسان نگوییم که قابلیتآهای فنی آن چیست. از طرف دیگر، خود ویژگیآهای زبانی کسلآکنندهآاند. برنامهآنویسان باید خودشان با ترکیب ویژگیآهای پایه، به ویژگی جامعآتری برسند و این نیازمند زمان است.
اخیرا من از صنعت خارج شدم و به سمت دانشگاهیآشدن پیش رفتهآام و حالا مشکلات تحصیلی را از زوایای مختلف درک میآکنم. ما باید سطح سواد توسعهآدهندگان نرمآافزارمان را بالا ببریم. طی سه سال گذشته، شیوه جدید تدریس برای سال اولیآها طراحی کردم و نتیجه آن کتابی شده است با عنوان برنامهآنویسی، مفاهیم و تمارین با استفاده از ++ C.
منبع: کلیک جام جم
