PDA

View Full Version : خبر: 10 سوال اساسي در موردي زبان C



Afshin160
سه شنبه 10 شهریور 1388, 14:07 عصر
مجله الکترونيکي کامپيوترورلد با مخترع++ 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 همراه با كلاس از آن استفاده شد. از طرف ديگر، Templateها و استثناها در نسخه‌هاي بعدي C++‎ (1989) معرفي شد.
اگر الان شانس اين را داشتيد که C++‎ را دوباره اختراع کنيد، کدام بخش آن را تغيير مي‌داديد؟
- عجب سوال کليشه‌اي پرسيديد، آن موقع خب معلوم است که 30 سال تجربه کار با++ C را نداشتم و آن موقع، تنها منبعي که مي‌شد براي++ C به او مراجعه کرد، خودم بودم که تازه آن هم تمام وقت نبود. اما در بهترين حالت، دوست داشتم که توابع مجازي، Templateها و استثناها را اگر در سال 85 پياده مي‌کردم،++ Cزبان بسيار بهتري از آب در مي‌آمد.
وقتي در سال 1998،++ C به يک استاندارد بدل شد، چه احساسي داشتيد و چه نقشي را در روند استانداردسازي بازي کرديد؟
سال‌هاي زياد بود که سخت کار مي‌کردم (1989 – 1997)، هر چند که الآن دارم روي استاندارد زيرمجموعه‌اش کار مي‌کنم. اينکه زبان استانداردي را بخواهي محبوب حفظ کني، کاري دشوار و وظيفه‌اي سخت است. C++‎ هيچ پدري ندارد و هيچ کس نيست که براي توسعه‌اش از جيب بزند، کتابخانه‌هايش رايگان هستند و رايگان هم بازاريابي مي‌شوند. باز هم دست موسسه ايزو درد نکند که به رشد جامعه C++‎ کمک کرد و همين رشد باعث شد داوطلبان زيادي از سراسر دنيا داشته باشد.
جالبترين برنامه‌اي که تا به‌حال ديده‌اي که با++ C نوشته‌اند چيست؟
نمي‌توانم يکي را انتخاب کنم.. بيشتر به سيستم‌هاي کامل نگاه مي‌کنم که بخشي از آنها را با++ C نوشته‌اند. مثلا زيرسيستم خودروهاي مريخ‌نشين ناسا، موتور جستجوي گوگل، سيستم رزرو هوايي آمادئوس به ذهنم مي‌رسد. اگر فقط بخواهم به کد نگاه کنم، به‌نظرم STL الکساندر استپانو يکي از مفيدترين، موثرترين و جالب‌ترين کدهاي++ C بود که تا به‌حال ديده‌ام.
آيا فکر نمي‌کني که++ GNU C بهتر است خطاهاي طولاني کمتري داشته باشد که دانشجويان نترسند؟
البته، اما واقعا تقصير کامپايلر گنو نيست. مشکل اصلي اينجاست که C++‎ استاندارد 98 هيچ راه ساده‌اي براي تعريف يک تمپليت پيش‌پاي برنامه‌نويس نمي‌گذارد. اين يکي از ضعف‌هاي اين زبان است، نه کامپايلر آن! و فقط با تغيير زبان مي‌شود آن را درست کرد که قرار است بخشي از C++‎0x (استاندارد جديد C++‎ باشد).


ادامه .........


منبع : جام جم



لينك :http://www.jamejamonline.ir/papertext.aspx?newsnum=100916086987

emadfa
سه شنبه 10 شهریور 1388, 17:29 عصر
متن کامل مصاحبه با مجله computerWorld:(البته شامل چندید صفحه می باشد! )

Bjarne Stroustrup of C++‎ fame dissects the history of his famed programming language (http://www.computerworld.com.au/article/250514/-z_programming_languages_c)

xxxxx_xxxxx
سه شنبه 10 شهریور 1388, 21:05 عصر
انتخاب زيادي نداشتيم، يک ليست بود که به ما دادند و من از ميان آنها همين را انتخاب کردم. البته بيشتر موافقبودند که ++C را انتخاب کنيم ، اما به نظر من تلفظش ديگر بسيار سخت مي‌شد.
به استناد از متن اصلی در قسمت Bold شده از متن بالا بجای ++C باید C ++ باشد.
اصلاً اگر ++C باشه که معنی نمیده!