تبلیغات
دنیای موبایل و کامپیوتر
دنیای موبایل و کامپیوتر
دانلود برای موبایل و کامپیوتر

چرا ++ C را شروع کردید؟
من به دنبال ابزاری بودم که بتوانم نگارش توزیع‌ شده از هسته یونیکس را طراحی و پیاده‌سازی کنم. در آن سال (1979) چنین چیزی وجود نداشت. به ابزاری نیاز داشتم که می‌توانست ساختار یک برنامه را بیان کند و مستقیما با سخت‌افزار سرو کار داشته باشد و به ‌درد برنامه‌ نویسی‌های اساسی و جدی سیستم بخورد.

نام ++ C از کجا آمده است؟
ابتدای کار، اسمش C with Classes بود. بسیاری نمی‌توانستند آن را تلفظ کنند و کم‌کم به اسم C معروف شد. اما گویا متوجه نبودند که C صدا زدن این برنامه یعنی اشاره کردن به برنامه دنیس ریچی (!) نه برنامه من، بریی همین اسم‌های مختلفی برای زبان‌ها گذاشتند. سی‌ قدیم، سی بهتر، و چنین چیزهایی... تا این‌که یک روز از طرف آزمایشگاه‌های بل (Bell Labs) برای من نامه آمد که یک اسم درست و حسابی برای این زبان انتخاب کنیم که ما آن موقع به ++  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 را هم داشته باشیم. بسیار سخت است که بخواهیم از نظر فنی برنامه را توسعه بدهیم، اما به برنامه‌نویسان نگوییم که قابلیت‌های فنی آن چیست. از طرف دیگر، خود ویژگی های زبانی کسل‌ کننده‌اند. برنامه‌نویسان باید خودشان با ترکیب ویژگی ‌های پایه، به ویژگی جامع‌تری برسند و این نیازمند زمان است.
اخیرا من از صنعت خارج شده ام و به سمت دانشگاهی شدن پیش رفته‌ام و حالا مشکلات تحصیلی را از زوایای مختلف درک می‌کنم. ما باید سطح سواد توسعه‌ دهندگان نرم‌افزارمان را بالا ببریم. طی سه سال گذشته، شیوه جدید تدریس برای سال اولی ‌ها طراحی کردم و نتیجه آن کتابی شده است با عنوان برنامه‌نویسی، مفاهیم و تمارین با استفاده از ++ C.
منبع: www.iran-eng.com




طبقه بندی: برنامه نویسی، رشته کامپیوتر-نرم افزار-پیام نور، علمی،
برچسب ها: مخترع، ++C،
دنبالک ها: منبع،
ارسال در تاریخ یکشنبه 29 شهریور 1388 توسط m n
قالب وبلاگ