انجمن انفورماتیک ایران انجمن انفورماتیک ایران انجمن انفورماتیک ایران
گزارش کامپیوتر شماره 234, ویژه مرداد و شهریور ماه 96 منتشر شد. چهارشنبه  ٠١/٠٩/١٣٩٦ ساعت ٢٠:١٤
 

مصاحبه

مصاحبه با بیارنه استراستروپ
یک ربع قرن با  C++

ترجمه مهندس سعید امراللهی بیوکی
پست الکترونیکی: www.saeedamrollahi.com

 


چهاردهم اکتبر 1985 اولین نسخه رسمی راهنمای زبان برنامه­سازی C++ منتشر شد. نویسنده این راهنما، بیارنه استراستروپ بنیانگذار این زبان بود.
از اولین روزهای حضور خود در آزمایشگا­ه­های بل در شرکت تلفن و تلگراف آمریکا، استراستروپ سخت و بی­وقفه در تلاش بوده است تا زبانی دیگر را جایگزین C کند. او و همکارانش در بخش تحقیقات، آزادی عمل داشتند تا شیوه­های جدید ساخت نرم­افزار را بیازمایند.  C++ ، رفت تا به متداول‌­ترین زبان برنامه­سازی ساخته ­شده در تاریخ کامپیوتر تبدیل شود.  C++ ، طوری طراحی شد که زبانی با "استفاده عام" باشد. می­توان آن ‌را برروی هرسکوی نرم­افزاری و سخت­افزاری اجرا کرد، همه جا می­شود آن‌ را دید بخصوص در بازی‌های کامپیوتری و سیستم­های تعبیه­شده.
پس­از چاپ کتاب آشنایی با زبان C++، استراستروپ به فعالیت خود ادامه داد، به­طراحی زبان پرداخت، کامپایلر این زبان را نوشت و کمک کرد تا این زبان استاندارد ایزو را در سال 1998 دریافت کند. او درحال حاضر استاد برجسته­  و مدیر بخش مهندسی دانشکده علوم کامپیوتر در دانشگاه تگزاس می­باشد.
در سالگرد چاپ این کتاب و ورود این زبان به دنیای زبان‌های برنامه­سازی، از او خواستیم ربع قرن گذشته را بازگو کند و از میراث C++ و تأثیر آن بر نرم­افزار برایمان بگوید. این مصاحبه برروی اینترنت و با پست الکترونیکی صورت گرفته است توجه شما را به این مصاحبه جلب می­کنیم:

وایرد دات کام: قرار بود استفاده کننده C++ چه­کسی باشد؟ فقط خودتان یا مخاطبان بیشتری مدنظرتان بود؟
استراستروپ: این زبان را برای خود، دوستان و همکارانم ساختم. ما با گستره­ای از مشکلات روبه­رو بودیم و C برای طراحی و پیاده‌سازی برنامه­های مورد نیازمان که برروی کامپیوترهایی سریع­تر با حافظه­های بیشتر اجرا می­شد خیلی ابتدایی به­نظر می­رسید. ازسوی دیگر، این کامپیوترها با استانداردهای امروزی خیلی کوچک و کند بودند. یک مگاهرتز و یک مگابایت دور از دسترس و تجملاتی بود. دراین شرایط، کاستن از هزینه­های سربار مهم بود. درآن زمان آزمایشگاه­های بل مهیج­ترین مکان برای یک مهندس یا دانشمند کامپیوتر با گرایش‌های کاربردی و تجربی بود. درآنجا هیچ پایانی برای چالش‌ها و مسائل هیجان­انگیز و جالب وجود نداشت و تعداد بسیار زیادی از نخبگان درآنجا حضور داشتند و با من همکار بودند.

وایرد دات کام: چه­وقت به این نتیجه رسیدید که ساخته شما رخدادی «بسیار مهم» است؟
استراستروپ: آغازی ­تدریجی داشت. درآن زمان من بسیار درگیر کارها بودم، اما از همان روز اول به عمومیت نشانه رفتم. می‌دانستم که فقط ایده­های مشخص و نشاندار شانس زنده ماندن دارند. می­دانستم که برنامه­سازی شیءگرا «بسیار مهم» است، اما بسیار به هدف خود یعنی عمومیت نزدیک شده بودم و درک می­کردم که دارم چه کاری انجام می­دهم.
آنچه واقعاً به­دنبال آن بودم ساخت تکنیک‌های برنامه­سازی برپایه ایمنی گونه ایستا و انتزاع­های مقرون­به صرفه، قابل آموزش و قابل استفاده در برنامه­سازی سیستم بود. علاوه ­بر طراحی و پیاده­سازی C++ ، در بیش از 10 پروژه مختلف مشارکت داشتم تا به استفاده از این زبان کمک کنم.
از سال 1979 تا 1991، تعداد برنامه­سازان C++ هر 5/7 ماه یکبار دو برابر شد. باید متذکر شوم آن زمان، جامعه برنامه­سازی درگیر نوعی تخمیر و تغییر شکل بوده است: ایدا، اسمال­تاک، ایفل، آبجکتیو C ، CLOS و زبان‌های دیگری به­شدت با طرز فکر من در رقابت بودند و در این میان، فقط C++ بود که در میان "زبان‌های پیشرفته" موجود فاقد امکانات تجاری و تبلیغات بود.
خواهش می­کنم دقت کنید که به اشتباه گفته می­شود که من اولین کسی بودم که برنامه­سازی شیءگرا را مطرح کردم. من هیچگاه ادعای چنین چیزی را نداشته­ام. این افتخار به طراحان زبان سیمولا یعنی اُل­یان دال و کریستین نایگارد تعلق دارد، اما من­ هم سهم زیادی در توسعه آن داشتم. به‌علاوه، همواره به‌دنبال مفاهیمی ماورای شیءگرایی بودم. حتی در اولین مقاله­ام که در ابتدای دهه 1980 نوشتم برنامه سازی عام را با یک مثال مطرح کردم (که اساساً غلط بود). گاهی اوقات داشتن مشکلی درست از داشتن بهترین راه­حل، مهم­تر است.

گاهی اوقات داشتن مشکلی درست از داشتن بهترین راه­حل، مهم­تر است.

وایرد دات کام: در نگاه شما، مهمترین تاثیری که C++ نه­ فقط بر برنامه­سازان بلکه بر نوع بشر داشته است چیست؟
استراستروپ: حد غایی در موفقیت هر زبان برنامه­سازی باید تاثیر کاربردهای آن باشد. این حد و میزان را نمی­توان با زیبایی یک‌یک حکم­های برنامه ویا ارائه مثالی کوچک و باسلیقه که در مجموعه مقالات کنفرانس زبان‌های برنامه­سازی عرضه می­شود، اندازه گرفت. بنابراین وقتی خشنودم که کاربردها و نرم­افزارهایی را می­بینم که هیجان­انگیزند و چالشی هستند­ طوری‌که آن‌ها را نمی‌توان با چیزی­غیر از C++ نوشت، یا به­دلیل فقدان زبانی مناسب برای کاربردهای واقعی سال‌هاست که به تاخیر افتاده­اند.
برخی ازاین نرم­افزارها عبارتنداز: نرم­افزار مریخ پیما، تطبیق رشته­های مولکول‌های دی­ان­ای در پروژه نقشه ژنوم انسان، جویشگر گوگل، وبگاه آمازون، سامانه‌های ذخیره بلیت هواپیما (آمادیوس) ، برنامه­های تحلیل کد (از شرکت کاوریتی) ، پویانگاری (مانند نرم­افزار مایا) ، برنامه­های تعبیه شده درخودروها و هواپیماها، فوتوشاپ، سامانه­های مخابراتی، بازی‌های رایانه‌ای مانند دووم، وارکرافت، ایج آو امپایرز، هالو، نرم افزارهای توربین­های بادی، اکتشاف نفت، بیشتر نرم­افزارهای شرکت‌های مایکروسافت و اپل، ماشین‌های مجازی جاوا، تاندربرد و فایرفاکس، مای اس­کیوال، بسیاری از نرم­افزارهای مالی، اوپن آفیس و غیره.
اگر نرم­افزار خوب طراحی گردد، ناپیدا است. دوربین کوچک من چند پردازنده دارد ولی هنگام استفاده از آن به این موضوع فکر نمی­کنم. بیش از 10 کامپیوتر در خودروهای مدرن امروزی وجود دارد ولی از نظر ما آن‌ها فقط اتومبیل هستند.
عموم مردم، برنامه­ها را می‌بینند، اما من اساساً به بنیان‌ها و زیرساخت‌های پشتیبان این نرم­افزارها اهمیت می­دهم. اگر کمی بازاریابی می­دانستم حالا هر کامپیوتر و تقریباً هر دستگاه چندکاره­ای، برچسب کوچکی داشت که برروی آن نوشته شده بود «C++ در داخل»


اگر نرم­افزار خوب طراحی گردد، ناپیدا است.

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

ما به نرم­افزار وابسته شده­ایم. بدون نرم­افزار بسیاری از گرسنگی خواهند مرد. امروزه نرم­افزار همان اهمیت برق، گرما و تلفن را برای انسان دارد.

وایرد دات کام: این‌روزها چقدر برنامه می­نویسید؟
استراستروپ: خیلی کم. بعضی روزها اصلاً برنامه نمی­نویسم. بیشتر روزها فقط قطعه کدهای کوچک که بیشتر جنبه آزمایش دارند می­نویسم. این روزها بیشتر وقت من صرف تفکر درباره برنامه­سازی، تلاش درجهت آموزش برنامه­سازی، نوشتن درباره برنامه‌سازی و تفکر درباره راه‌های بهتر در تولید و توسعه نرم­افزار می­شود.
به‌هرحال، تعداد روزهایی که اصلاً برنامه نمی­نویسم خیلی کم است و همواره در سمینارها و کلاس‌های درسم از قطعه کدها استفاده می­کنم.

وایرد دات کام: از چه نرم­افزارها و سخت­افزارهایی استفاده می­کنید؟
استراستروپ: یک کامپیوتر قابل حمل بسیار سبک (کمتر از 5/1 کیلوگرم) دارم که برروی آن ویندوز نصب است و تعداد زیادی کامپایلر C++ بر روی آن وجود دارد. علاوه براین یک کامپیوتر رومیزی دارم که برروی آن لینوکس نصب است و کامپایلرها و ابزارهای  بیشتری برای تولید نرم افزار دارد.

وایرد دات کام: درباره سامانه­ها، چهارچوب‌ها، پروتکل‌ها و نرم­افزارهای جدید، چه چیزهایی تحسین شما را برمی‌انگیزد؟
استراستروپ: فقط می­توانم بگویم ایده فقط یک زبان برنامه­سازی، فقط یک ابزار برنامه­سازی مناسب­ترین و بهترین انتخاب برای هرکس و هر مسأله­ای، بچگانه است. اگر کسی ادعا کرد که زبانی کامل دراختیار دارد یا نادان است یا فروشنده است و یا هردو.

اگر کسی ادعا کرد که زبانی کامل دراختیار دارد یا نادان است
 یا فروشنده است و یا یک فروشنده نادان.

وایرد دات کام: اکثر برنامه­سازان هنگام کد­نویسی و برنامه­سازی به موسیقی گوش می­دهند و درانتخاب آهنگ‌ها دقیق­تر و نکته‌بین­تر از سایر افراد هستند. شما چه چیزهایی گوش می­دهید؟
استراستروپ: سمفونی پنجم چایکوفسکی، اجراهایی از واگنر، گریگ، سایبلیوس، تصنیف‌هایی از نایلسون، آثار متعددی از موتزارت، گروه دیکسی چیکس، قطعاتی از بیتلز، قطعاتی از هَندلز، اریک کلاپتون، سمفونی‌های پنجم و هفتم بتهوون. این‌ها آخرین آهنگ‌هایی است که برروی کامپیوترم اجرا کردم.

وایرد دات کام: ­نظرتان در مورد چندکاره­های لمسی مدرن مانند آیفون، تلفن‌های اندرویید و آیپَد چیست؟ این ابزارها چگونه شیوه استفاده از کامپیوتر را تغییر می­دهند؟
استراستروپ: گمان می­کنم که این ابزارها به همان اندازه که مفید هستند، مشکل­ساز هم باشند. واقعاً خوب است بتوانیم مسیر و جهت حرکت خود را پیدا کرده و به نشانی رستوران‌ها و چیزهای دیگر دسترسی داشته باشیم. اما وابستگی همیشگی به این سامانه‌ها، همواره دردسترس بودن و متصل بودن شما را از فکرکردن دور می‌سازد.­ اظهارنظر قطعی در مورد این چندکاره­ها به زمان نیاز دارد.

وایرد دات کام: نظر شما در مورد نرم­افزارهای موجود برروی این دستگاه­ها چیست؟ نرم­افزارها چه تاثیری بر کاربران، برنامه­سازان، خلاقیت‌ها و تجارت نرم­افزار دارند؟
استراستروپ: نمی­دانم! تصور می­کنم این موضوع در درازمدت اهمیت پیدا ­کند. از دو حال خارج نیست یا برنامه­سازان از حجم معتنابهی از کتابخانه­های تملّکی و محیط‌های اجرایی استفاده می­کنند ویا از کاربردهای خلاقانه‌ای که توسط این چندکاره­ها عرضه می­شود سود می­برند. اولی مارا به روش‌های متداول سوق می­دهد و دومی حوزه­هایی جدیدی از تخیل را برای ما باز می­کند.

وایرد دات کام: کتاب‌های الکترونیکی هم می­خوانید؟
استراستروپ: به­ندرت و بیشتر ادبیات را شامل می­شود. صفحه نمایش کامپیوتر برای انجام کارهای فنی خیلی کوچک است و هنوز امکانات آن برای نت­برداری و حاشیه نویسی بسیار ضعیف است.

وایرد دات کام: برای برنامه­سازان جوان چه توصیه­ای دارید؟
استراستروپ: توصیه­کردن از شنیدن و عمل­کردن به­آن آسان‌تر است. مفاهیم بنیادین (الگوریتم­ها، ساختمان داده­ها، معماری کامپیوتر و نرم­افزارهای سیستم) را به­­خوبی بشناسید. چند زبان برنامه­سازی را درسطحی بالا (الگوها و تکنیک‌ها) بلد باشید.
در حوزه­هایی خارج از علوم کامپیوتر نیز مطالعه کنید مثلاً ریاضی، زیست­شناسی، تاریخ، فیزیک و مانند آن‌ها. هنر ارتباط برقرار کردن در سخنوری و نوشتن را یاد بگیرید. برای تسلط پیداکردن بر موضوعات دشوار، وقت زیادی صرف کنید. تلاش کنید کارهایی را انجام دهید که به ایجاد دنیایی متفاوت منجر شود.