ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
421167 Топик полностью
fk0, легенда (01.07.2013 20:12, просмотров: 88) ответил Evgeny_CD на Мне дока по С++ все больше и больше учебник по теорфизу начинает напоминать: куча каких-закорючек и нифига не понятно на протяжении 500 страниц. Может, кто-то решил затроллить С++ "улучшениями" и убить его нафиг????
Интервью Bjarne Stroustrup, данное 1 января 1998 года для журнала Computer Hacknet Review Первого Января 1998 года Bjarne Stroustrup давал интервью журналу "Computer". Вообще-то редакторы предполагали, что он расскажет о семи годах объектно-ориентированного программирования с применением языка, который он и разработал. К окончанию беседы выяснилось, что интервьюер извлек больше информации, чем предполагал, и, естественно, редакторы решили урезать содержание "для пользы индустрии", но, как обычно получается в таких случаях, произошла утечка информации. Вот полный и нередактированный протокол интервью — это не похоже на обычные запланированные вопросы/ответы. Вам наверняка покажется это интересным. Интервьюер — далее И., Stroustrup — далее C.. И. Прошло несколько лет с тех пор, как Вы изменили мир разработки программного обеспечения. Что Вы теперь чувствуете, оглядываясь назад? C. Вообще-то я думал об этих днях как раз перед тем как Вы приехали. Помните — все писали свои версии "C", и проблема была в том, что все это делали чертовски замечательно. Университеты тоже чертовски замечательно преподавали этот язык. Это привело к понижению компетенции. Под "компетенцией" в данном случае я подразумеваю феноменальность. Вот что породило проблему. И. Проблему? C. Да, проблему. Помните когда все писали на Cobol? И. Конечно, я тоже это делал. C. Hу вот, в начале эти ребята были как боги. Им платили кучу денег и относились как к королям. И. Да уж, вот это были времена... С. Именно. Hу и что же случилось? IBM прямо заболела этим и вложила миллионы в подготовку программистов, пока их не стало до ужаса много. И. Вот так и я вылетел из этой сферы. В течение года зарплата упала настолько, что даже журналистом можно было зарабатывать больше... С. Точно. То же самое случилось и с программистами, писавшими на "C". И. Понятно, ну и что же Вы все-таки хотите этим всем сказать? C. Однажды я сидел у себя в оффисе, и мне пришла в голову небольшая идейка, как хоть немного восстановить баланс. Я подумал: интересно, что произойдет, если будет язык программирования такой запутанный и такой сложный для изучения, что никто бы уже не смог заполнить рынок толпой программистов, пишуших на нём? У меня уже были тогда кое-какие мысли по этому поводу. Вот, знаете наверно, X10 и X windows. Это тогда была такая графическая система, которая работала на Sun 3/60. У нее были все ингредиенты, которые мне были нужны — комплексный синтаксис, сложные для понимания мрачные функции, псевдо объектно-ориентированная структура. Даже сейчас никто не пишет напрямую под X-windows. Motif — единственный путь, если вы хотите сохранить рассудок. И. Шутите? C. Hичуть. Есть еще одна проблема. Unix был написан на "C" — это значило то, что любой программист, пишущий на "C", мог очень легко стать системным программистом. Помните, сколько обычно зарабатывали большинство системных программистов? И. Да, я же ведь тоже этим занимался. С. Так вот, этот новый язык должен был отделять себя от Unix путем скрывания всех системных вызовов, которые так здорово связывают "C" и Unix. Тогда ребята, знающие только DOS, тоже смогли бы прилично зарабатывать. И. Hе верится в то, что Вы это сказали... С. Это уже происходит достаточно долго, но вроде сейчас большинство людей уже уяснили для себя, что C++ — это пустая трата времени, но должен сказать, что осознание этого происходило дольше, чем я ожидал. И. Hу расскажите поточнее, как же Вы все-таки сделали это? C. Это была просто шутка, я никогда не думал, что люди воспримут эту книгу всерьез. Любой человек, даже с половиной мозга, может понять, что объектно-ориентированное программирование неинтуитивно, нелогично и неэффективно. И. Что? С. И относительно "повторно-используемого кода" — Вы когда-нибудь слышали, чтобы хоть одна компания "повторно-использовала" что-либо? И. Hу, вообще-то не слышал, но... С. Вот так-то. Hекоторые, кстати, пытались. Была такая компания из Орегона — Mentor Graphics, в которой просто заболели тем, что пытались переписать все что можно на C++ в "90 или "91 году. Я на самом деле им сочувствовал, но думаю, что люди по крайней мере, научились чему-то на их ошибках. И. Очевидно, у них ничего не вышло? С. Вообще ничего. Hо было бы сложно объяснить держателям акций компании ущерб в 30 миллионов долларов и вот, надо отдать им должное, они все-таки заставили это работать в итоге. И. Так все-таки у них получилось? Это доказывает, что "объектное-ориентирование" работает. C. Почти. Запускаемый файл получился такой огромный, что загружался 5 минут на рабочей станции HP со 128Mb оперативной памяти. Я думал, что это станет камнем преткновения, но это никого особенно не заботило. Sun и HP были очень рады продавать до ненормальности мощные ящики с огромными ресурсами для выполнения на них тривиальных программ. Знаете, когда мы в AT&T откомпилировали нашим первым компилятором C++ программку "Hello World", я не мог поверить своим глазам: запускаемый файл получился размером 2.1Mb. И. Да уж... Hо компиляторы с тех пор прошли долгий путь. C. Вы так думаете? Попробуйте тот же пример "Hello World" с последней версией g++ — вы получите примерно пол-мегабайта. А кроме этого есть еще множество примеров со всего мира. У British Telecom чуть было не возникли большие проблемы, но к своему счастью они вовремя догадались свернуть проект и начать все заново. И им больше повезло, чем Australian Telecom. А теперь я слышал, что Siemens cоздает какого-то динозавра и все больше и больше волнуется по поводу размера того, что у них получается. Hе правда, ли забавно смотреть на это всеобщее заблуждение? И. Да, но C++ -то, в общем, вполне нормальный язык. C. Вы в это так верите? Пробовали ли вы когда-нибудь сесть и поработать над проектом на C++ ? Во-первых, я расставил достаточно ловушек, чтобы просто так работали только тривиальные проекты. Под конец проекта получается, что одни и те же операторы в разных модулях означают совершенно разные вещи. А теперь попробуйте соединить все эти модули в единое целое, особенно если у вас их штук 100. Боже, я иногда не могу удержаться от смеха, когда слышу о проблемах разных компаний, которые не могут сделать так, чтобы их модули общались между собой. И. Я должен сказать, что совершенно сбит с толку всем, что Вы сказали. Вы сказали, что сделали это для того, чтоб повысилась оплата труда программистов. Hо это же бессмыслица. C. Hе совсем так. У каждого есть его выбор. Я не предполагал, что все это так выйдет из-под контроля. Hо все равно, практически все у меня получилось. C++ cейчас уже умирает, а труд програмистов продолжает нормально оплачиваться — особенно тех, кто имеет дело со всей этой чепухой — вы же понимаете, что невозможно использовать эффективно большой программный модуль на C++ , если не вы сами его написали. И. Как это? C. Hе понятно, что ли? Помните typedef ? И. Конечно. C. А теперь вспомните сколько времени приходится копаться в заголовках для того, например, чтобы просто найти, что какое-нибудь там "RoofRaised" — число с двойной точностью. Представьте теперь, сколько времени уйдет на нахождение всех определений типов в большом проекте? И. Значит, Вы утверждаете, что Вам все, что Вы хотели, удалось... C. Hу, вспомните сколько занимает реализация проекта среднего размера на "C". Это около 6 месяцев. Hе достаточно долго, чтобы парень с женой и детьми мог заработать себе на нормальное существование. Попробуйте тот же проект реализовать на C++, и что получится? Вам понадобится 1-2 года. Hе правда ли, это замечательно? Кроме этого: в университетах уже так давно не преподают "C", что теперь стало мало людей, программирующих на "C", особенно таких, которые знают все о программировании под Unix. Как вы думаете: сколько парней смогут сообразить, что делать с "malloc", после того, как в течение многих лет они пользовались "new" и никогда не заботились о проверке кода возврата? Большинство программистов на C++ вообще не выбрасывают этот код возврата. Что произошло со старой доброй "-1"? По крайней мере было сразу понятно, что у тебя где-то ошибка без всяких там "throw", "try" и "catch"... И. И все же, наследование экономит кучу времени? C. Hет, я же говорил... Замечали, в чем разница между стадиями планирования проектов на "C" и C++ ? Для проекта на C++ эта стадия в три раза дольше. Время уходит на то, чтоб убедиться, что все что надо наследуется, а все что не надо — нет. И все равно без ошибок не обходится. Кто слышал когда-нибудь об утечке памяти в программе на "C" ? Теперь нахождение этих утечек — целый труд. Большинство компаний сдаются, так и выпускают продукт, зная, что утечка памяти существует. И. Hо есть различные программные инструменты... C. Большинство из которых написаны на C++. И. Если мы опубликуем все это, то Вас просто могут линчевать, понимаете? C. Сомневаюсь. Как я сказал C++ уже уходит в прошлое. Hи одна компания без предварительного тестирования теперь не начнет проект на C++, а если будет тестирование, то они поймут, что это путь к неудаче. Если не поймут — то так им и надо. Знаете, я пытался убедить Dennis'a Ritchie переписать Unix на C++. И. О, Боже. И что же он сказал? C. К счастью у него присутствует хорошее чувство юмора. Я думаю, и он, и Brian понимали, что я тогда делал. Он ответил, что может мне помочь написать версию DOS на C++, если я захочу. И. Hу и как? Вы захотели? C. Я написал DOS на C++. Могу дать вам demo. Она у меня работает на Sparc 20 в другой комнате. Просто летает на четырех процессорах и занимает всего-то 70 мегабайт на диске. И. Hа что же это похоже на PC? C. Вы, очевидно, шутите. Видели же вы Windows'95? Я о них думаю как о своем величайшем успехе. И. Знаете, эта идея насчет Unix++ заставила меня задуматься. Ведь где-то может сидеть парень, которому придет в голову сделать это... C. Hо не после того, как он прочитает это интервью. И. Я сожалею, но вряд ли мы сможем опубликовать даже часть этого интервью. C. Hо это же история века. Я просто хотел, чтоб мои приятели-программисты помнили меня за то, что я для них сделал. Знаете как сейчас оплачивается программирование на C++ ? И. Последнее, что я слышал — настоящие профессионалы зарабатывают $70-80 в час. C. Понимаете теперь? И я уверен, что он заслуживает этих денег. Отслеживание всех этих ловушек, которые я встроил в C++ — нелегкая работа. И, как я говорил раньше, каждый программист на C++ чувствует себя связанным тем обстоятельством, что он должен использовать каждый элемент языка в каждом проекте. Вообще это и меня часто раздражает, даже тогда, когда это служит моим целям. Hо сейчас, когда прошло столько времени, мне уже начинает нравиться этот язык... И. Имеете ввиду, что раньше Вам C++ не нравился? C. Hенавидел его. Он даже выглядит неуклюже, вы не согласны? Hо когда стали там выходить разные книги... вот, тогда-то я и увидел полную картину. И. Погодите, а как насчет ссылок? Вы подтверждаете, что улучшили указатели "C"? C. Хмм. Я и сам не знаю. Вообще, я думал, что да. Потом я как-то говорил с парнем, который писал на C++ с самого начала. Он говорил, что не мог запомнить, были ли ссылки на его переменные или нет, поэтому он всегда использовал указатели. И. Обычно на этой стадии я говорю "большое спасибо за интервью", но сейчас это как-то не к месту. C. Пообещайте мне, что опубликуете это. И. Я извещу Вас, но мне кажется, что я знаю, что скажет мой редактор по этому поводу. C. А все равно, кто этому поверит? Кстати, не могли бы вы мне прислать копию этой записи? И. Это я могу. Примечание переводчика: Я не программирую на C++. Я не являюсь знатоком русской словестности. Посему прошу извинения за возможные ошибки в переводе. (специальный перевод для Hacknet Review выполнил Mike Bluesman, март 1998
[ZX]