- شروع کننده موضوع
- #1
کاربر حذف شده 8031
مهمان
مجله الکترونیکی کامپیوترورد با مخترع ++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.
برگرفته از کلیک تنظیم برای تبیان
برگرفته از کلیک تنظیم برای تبیان