|
|
|
интервью
|
|||
|---|---|---|---|
|
#18+
Интервью Bjarne Stroustrup, данное 1 января 1998 года для журнала Computer. © 1998, Computer перевод: Mike Bluesman Первого Января 1998 года Bjarne Stroustrup давал интервью журналу 'Computer'. Вообще-то редакторы предполагали, что он расскажет о семи годах объектно-ориентированного программирования с применением языка, который он и разработал. К окончанию беседы выяснилось, что интервьюер извлек больше информации, чем предполагал, и, естественно, редакторы решили урезать содержание 'для пользы индустрии', но, как обычно получается в таких случаях, произошла утечка информации. Вот полный и нередактированный протокол интервью - это не похоже на обычные запланированные вопросы/ответы. Вам наверняка покажется это интересным. Интервьюер - далее И., Stroustrup - далее C.. И. Прошло несколько лет с тех пор, как Вы изменили мир разработки программного обеспечения. Что Вы теперь чувствуете, оглядываясь назад? C. Вообще-то я думал об этих днях как раз перед тем как Вы приехали. Помните - все писали свои версии 'C', и проблема была в том, что все это делали чертовски замечательно. Университеты тоже чертовски замечательно преподавали этот язык. Это привело к понижению компетенции. Под 'компетенцией' в данном случае я подразумеваю феноменальность. Вот что породило проблему. И. Проблему? C. Да, проблему. Помните когда все писали на Cobol? И. Конечно, я тоже это делал. C. Ну вот, в начале эти ребята были как боги. Им платили кучу денег и относились как к королям. И. Да уж, вот это были времена... С. Именно. Ну и что же случилось? IBM прямо заболела этим и вложила миллионы в подготовку программистов, пока их не стало до ужаса много. И. Вот так и я вылетел из этой сферы. Втечение года зарплата упала настолько, что даже журналистом можно было зарабатывать больше... С. Точно. То же самое случилось и с программистами, писавшими на 'C'. И. Понятно, ну и что же Вы все-таки хотите этим всем сказать? C. Однажды я сидел у себя в оффисе, и мне пришла в голову небольшая идейка, как хоть немного восстановить баланс. Я подумал: интересно, что произойдет, если будет язык программирования такой запутанный и такой сложный для изучения, что никто бы уже не сможет заполнить рынок толпой программистов, пишуших на этом нем? У меня уже были тогда кое-какие мысли по этому поводу. Вот, знаете наверно, X10 и X windows. Это тогда была такая графическая система, которая работала на Sun 3/60. У нее были все ингредиенты, которые мне были нужны - комплексный синтаксис, сложные для понимания мрачные функции, псевдо объектно-ориентированная структура. Даже сейчас никто не пишет напрямую под X-windows. Motif - единственный путь, если вы хотите сохранить рассудок. И. Шутите? C. Ничуть. Есть еще одна проблема. Unix был написан на 'C' - это значило то, что любой программист, пишущий на 'C', мог очень легко стать системным программистом. Помните сколько обычно зарабатывали большинство системных программистов? И. Да, я же ведь тоже этим занимался. С. Так вот, этот новый язык должен был отделять себя от Unix путем скрывания всех системных вызовов, которые так здорово связывают 'C' и Unix. Тогда ребята, знающие только DOS, тоже смогли бы прилично зарабатывать. И. Не верится в то, что Вы это сказали... С. Это уже происходит достаточно долго, но вроде сейчас большинство людей уже уяснили для себя, что C++ - это пустая трата времени, но должен сказать, что осознание этого происходило дольше чем я ожидал. И. Ну расскажите поточнее, как же Вы все-таки сделали это? C. Это была просто шутка, я никогда не думал, что люди воспримут эту книгу всерьез. Любой человек, даже с половиной мозга, может понять что объектно-ориентированное программирование интуитивно, нелогично и неэффективно. И. Что? С. И относительно 'повторно-используемого кода' - Вы когда-нибудь слышали, чтобы хоть одна компания 'повторно-использовала' что-либо? И. Ну, вообще-то не слышал, но... С. Вот так-то. Некоторые, кстати, пытались. Была такая компания из Орегона - Mentor Graphics, в которой просто заболели тем, что пытались переписать все что можно на C++ в '90 или '91 году. Я на самом деле им сочувствовал, но думаю, что люди по крайней мере, научились чему-то на их ошибках. И. Очевидно у них ничего не вышло? С. Вообще ничего. Но было бы сложно объяснить держателям акций компании ущерб в 30 миллионов долларов и вот, надо отдать им должное , они все-таки заставили это работать в итоге. И. Так все-таки у них получилось? Это доказывает что 'объектное-ориентирование' работает. C. Почти. Запускаемый файл получился такой огромный, что загружался 5 минут на рабочей станции HP со 128Mb оперативной памяти. Я думал, что это станет камнем преткновения, но это никого особенно не заботило. Sun и HP были очень рады продавать до ненормальности мощные ящики с огромными ресурсами для выполнения на них тривиальных программ. Знаете, когда мы в AT&T откомпилировали нашим первым компилятором C++ программку 'Hello World', я не мог поверить своим глазам: запускаемый файл получился размером 2.1Mb. И. Да уж... Но компиляторы с тех пор прошли долгий путь. C. Вы так думаете? Попробуйте тот же пример 'Hello World' с последней версией g++ - вы получите примерно пол-мегабайта. А кроме этого есть еще множество примеров со всего мира. У British Telecom чуть было не возникли большие проблемы, но к своему счастью они вовремя догадались свернуть проект и начать все заново. И им больше повезло, чем Australian Telecom. А теперь я слышал, что Siemens cоздает какого-то динозавра и все больше и больше волнуется по поводу размера того, что у них получается. Не правда ли забавно смотреть на это всеобщее заблуждение? И. Да, но C++ -то, в общем, вполне нормальный язык. С. Вы в это так верите? Попробовали ли вы когда-нибудь сесть и поработать над проектом на C++ ? Во первых, я расставил достаточно ловушек, чтобы просто так работали только тривиальные проекты. Под конец проекта получается что одни и те же операторы в разных модулях означают совершенно разные вещи. А теперь попробуйте соединить все эти модули в единое целое, особенно если у вас их штук 100. Боже, я иногда не могу удержаться от смеха, когда слышу о проблемах разных компаний, которые не могут сделать так, чтобы их модули общались между собой. И. Я должен сказать, что совершенно сбит с толку всем что Вы сказали. Вы сказали что сделали это для того, чтоб повысилась оплата труда программистов. Но это же бессмыслица. С. Не совсем так. У каждого есть его выбор. Я не предполагал, что все это так выйдет из-под контроля. Но все-равно, практически все у меня получилось. C++ cейчас уже умирает, а труд програмистов продолжает нормально оплачиваться - особенно тех, кто имеет дело со всей этой чепухой - вы же понимаете, что невозможно использовать эффективно большой программный модуль на C++ , если не вы сами его написали. И. Как это? С. Не понятно что-ли? Помните typedef ? И. Конечно. С. А теперь вспомните сколько времени приходится копаться в заголовках для того, например, чтобы просто найти, что какое-нибудь там 'RoofRaised' - число с двойной точностью. Представьте теперь сколько времени уйдет на нахождение всех определений типов в большом проекте. И. Значит, Вы утверждаете, что Вам все, что Вы хотели удалось... C. Ну, вспомните сколько занимает реализация проекта среднего размера на 'C'. Это около 6 месяцев. Не достаточно долго чтобы парень с женой и детьми мог заработать себе на нормальное существование. Попробуйте тот же проект реализовать на C++ , и что получится? Вам понадобится 1-2 года. Не правда ли, это замечательно? Кроме этого: в университетах уже так давно не преподают 'C', что теперь стало мало людей программирующих на 'C', особенно таких, которые знают все о программировании под Unix. Как вы думаете : сколько парней смогут сообразить что делать с 'malloc' , после того как втечение многих лет они пользовались 'new' и никогда не заботились о проверке кода возврата? Большинство программистов на C++ вообще не выбрасывают этот код возврата. Что произошло со старой доброй '-1' ? По крайней мере было сразу понятно, что у тебя где-то ошибка без всяких там 'throw', 'try' и 'catch'... И. И все же, наследование экономит кучу времени? С. Нет, я же говорил... Замечали, в чем разница между стадиями планирования проектов на 'C' и C++ ? Для проекта на C++ эта стадия в три раза дольше. Время уходит на то, чтоб убедиться что все что надо наследуется, а все что не надо - нет. И все-равно без ошибок не обходится. Кто слышал когда-нибудь об утечке памяти в программе на 'C' ? Теперь нахождение этих утечек - целый труд. Большинство компаний сдаются, так и выпускают продукт, зная что утечка памяти существует. И. Но есть различные программные инструменты... С. Большинство из которых написаны на C++. И. Если мы опубликуем все это, то Вас просто могут линчевать, понимаете ? C. Сомневаюсь. Как я сказал C++ уже уходит в прошлое. Ни одна компания без предварительного тестирования теперь не начнет проект на C++, а если будет тестирование, то они поймут, что это путь к неудаче. Если не поймут - то так им и надо. Знаете, я пытался убедить Dennis'a Ritchie переписать Unix на C++. И. О Боже. И что же он сказал? C. К счастью у него присутствует хорошее чувство юмора. Я думаю и он, и Brian понимали что я тогда делал. Он ответил, что может мне помочь написать версию DOS на C++, если я захочу. И. Ну и как? Вы захотели? С. Я написал DOS на C++. Могу дать вам demo. Она у меня работает на Sparc 20 в другой комнате. Просто летает на четырех процессорах и занимает всего то 70 мегабайт на диске. И. На что же это похоже на PC ? С. Вы, очевидно, шутите. Видели же вы Windows'95 ? Я о них думаю как о своем величайшем успехе. И. Знаете, эта идея насчет Unix++ заставила меня задуматься. Ведь где-то может сидеть парень, которому придет в голову сделать это... С. Но не после того, как он прочитает это интервью. И. Я сожалею, но врядли мы сможем опубликовать даже часть этого интервью. С. Но это же история века. Я просто хотел чтоб мои приятели-программисты помнили меня за то, что я для них сделал. Знаете как сейчас оплачивается программирование на C++ ? И. Последнее, что я слышал - настоящие профессионалы зарабатывают $70-80 в час. С. Понимаете теперь? И я уверен, что он заслуживает этих денег. Отслеживание всех этих ловушек, которые я встроил в C++ - не легкая работа. И, как я говорил раньше, каждый программист на C++ чувствует себя связанным тем обстоятельством что он должен использовать каждый элемент языка в каждом проекте. Вообще это и меня часто раздражает, даже тогда, когда это служит моим целям. Но сейчас, когда прошло столько времени, мне уже начинает нравиться этот язык... И. Имеете ввиду, что раньше Вам C++ не нравился? С. Ненавидел его. Он даже выглядит неуклюже, вы не согласны? Но когда стали там выходить разные книги... вот, тогда-то я и увидел полную картину. И. Погодите, а как насчет ссылок? Вы подтверждаете что улучшили указатели 'C' ? С. Хмм. Я и сам не знаю. Вообще я думал, что да. Потом я как-то говорил с парнем, который писал на C++ с самого начала. Он говорил, что не мог запомнить были ли ссылки на его переменные или нет, поэтому он всегда использовал указатели. И. Обычно на этой стадии я говорю 'большое спасибо за интервью', но сейчас это как-то не к месту. С. Пообещайте мне, что опубликуете это. И. Я извещу Вас, но мне кажется, что я знаю, что скажет мой редактор по этому поводу. С. А все-равно, кто этому поверит? Кстати, не могли бы вы мне прислать копию этой записи? И. Это я могу. Примечание переводчика : Я не программирую на C++. Я не являюсь знатоком русской словестности. Посему прошу извинения за возможные ошибки в переводе. специальный перевод для Hacknet Review выполнил Mike Bluesman, март 1998 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 14:32 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
боян причем столетней давности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 15:22 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)боян причем столетней давности но есть спорные мысли) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 16:40 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Tubrik Gluk (Kazan)боян причем столетней давности но есть спорные мысли) В анехдоте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 16:49 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Ощущение, что студент статью писал, причем попахивает славянским стилем мышления :.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 16:59 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
батракОщущение, что студент статью писал, причем попахивает славянским стилем мышления :.. это ОЧЕНЬ известный и ОЧЕНЬ бородатый анекдот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 17:06 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) батракОщущение, что студент статью писал, причем попахивает славянским стилем мышления :.. это ОЧЕНЬ известный и ОЧЕНЬ бородатый анекдот прикольно, посмеялся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 17:10 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) батракОщущение, что студент статью писал, причем попахивает славянским стилем мышления :.. это ОЧЕНЬ известный и ОЧЕНЬ бородатый анекдот Я еще пока помню что текст оттуда , просто не хотел делать линк на сайт. Если честно, то я читая эту статью даже встревожился вначале, пока не догнал, что это шутка) Что такое славянский стиль мышления не знаю. у меня возник вопрос: Действительно ли Unix написан на Си? т.е. без С++ и ООП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 22:44 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Tubrikу меня возник вопрос: Действительно ли Unix написан на Си? т.е. без С++ и ООП во всяком случае, когда разрабатывался Unix, C++ еще не было (или были в младенческом состоянии, не помню уже) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 08:37 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)(или были в младенческом состоянии, не помню уже) гоню не было и быть не могло :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 08:39 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Tubrikу меня возник вопрос: Действительно ли Unix написан на Си? т.е. без С++ и ООП Некоторые части может и пишутся на С++ (что скорее всего), но, например, чтобы ядро переписывали не видел ни разу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 09:51 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
си разрабатывали вроде уже в написанном юнихе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:10 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
maXmo wrote: > си разрабатывали вроде уже в написанном юнихе По-моему, сначала сделали Unix, а затем переписали ядро на C. Или что-то вроде того... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:27 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
ErV maXmo wrote: > си разрабатывали вроде уже в написанном юнихе По-моему, сначала сделали Unix, а затем переписали ядро на C. Или что-то вроде того... Posted via ActualForum NNTP Server 1.4 параллельно их разрабатывали, низкоуровневую часть на ассемблерах Мы говорим Unix подразумеваем Си Собственно Си задумывалось для облегчения портации на другие платформы (и надежды полностью оправдались). А платформ тогда было ... как собак нерезанных (включая кстати и очень экзотические с троичными системами счисления да с не 8-битными байтами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:33 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Где-то читал, что если код превышает 10 тыс. строк, то человеческое мышление теряет контроль над проектом или что-то подобное. Короче структурное программирование работает на небольших проектах до 10000 строк. А тут Unix структурно забацали и ничего вроде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 17:23 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
TubrikГде-то читал, что если код превышает 10 тыс. строк, то человеческое мышление теряет контроль над проектом или что-то подобное. Короче структурное программирование работает на небольших проектах до 10000 строк. А тут Unix структурно забацали и ничего вроде. Надписи на заборах тоже читаете ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 08:13 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
так структурное программирование вроде для того и придумывали, чтобы писать больше и толще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 13:02 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) TubrikГде-то читал, что если код превышает 10 тыс. строк, то человеческое мышление теряет контроль над проектом или что-то подобное. Короче структурное программирование работает на небольших проектах до 10000 строк. А тут Unix структурно забацали и ничего вроде. Надписи на заборах тоже читаете ? Да, читаю, автоматически, когда надпись попадает в поле зрения, а вы нет? У Г.Буча читал: Значение структурного подхода осталось прежним, но как замечает Стейн, "оказалось, что структурный подход не работает, если объем программы превышает приблизительно 100000 строк" [19] Stein, J. March 1988. Object-oriented Programming and Database Design. Dr. Dobb's Journal of Software Tools for the Professional Programmer, No. 137, p.18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 13:28 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
один 0 не заметил) но все равно, не думаю что там меньше строк кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 13:29 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
TubrikУ Г.Буча читал: Значение структурного подхода осталось прежним, но как замечает Стейн, "оказалось, что структурный подход не работает, если объем программы превышает приблизительно 100000 строк" Как здесь уже говорил softwarer, в ООП нет абсолютно ничего принципиально нового. Принципиальным новшеством было как раз таки "структурное" программирование, после чего его несколько причесали в C++. Причем апологеты Смоллтока боюсь даже не согласятся с тем тезисом, что C++ является языком ООП. Нет единства в лагере ООП апологетов. Я не против ООП, но подобные фразы следует воспринимать скептически. 100000 строк не бог весть какой объем для нынешнего проекта (и далеко не все придерживаются ООП при разработке). А Бучу было интересно ПРОДАТЬ свою книгу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 13:44 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Tubrikодин 0 не заметил) но все равно, не думаю что там меньше строк кода Так вы верите тому что написано или реалиям? Ядро линукс в архиве занимает порядка 40 000 000 байт. Приблизительно, если строка 40 байт, а разжатым, он вроде 150 метров весит, то получается что примерно 3,5 миллиона строк. Причем над этим проектом трудиться не один человек, и поэтому все разбираются в чужом коде. К тому же код далеко не тривиальный. А вы 100 тысяч строк. Тьфу, мелочь. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:04 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Приблизительно, если строка 40 байт, а разжатым, он вроде 150 метров > весит, то получается что примерно 3,5 миллиона строк. Ну зачем же "на глаз" считать? Код: plaintext 1. 2. 3. 4. 5. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:28 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
ErV Akh wrote: > Приблизительно, если строка 40 байт, а разжатым, он вроде 150 метров > весит, то получается что примерно 3,5 миллиона строк. Ну зачем же "на глаз" считать? Код: plaintext 1. 2. 3. 4. 5. Для убедительности. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:35 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) wrote: > Я не против ООП, но подобные фразы следует воспринимать скептически. > 100000 строк не бог весть какой объем для нынешнего проекта (и далеко не > все придерживаются ООП при разработке). А Бучу было интересно ПРОДАТЬ свою > книгу. Вопрос. Под структурным программирование имеется в виду вот это ? Просто при ковырянии в некоторых сишных исходниках у меня создалось впечатление, что все-таки применяется ООП, хотя самого понятия класса (в духе C++) в языке нет. К примеру: объявляется структура, содержащая некоторые данные, и куча функций, которые берут указатель на структуру первым параметром, и имеют имя по типу ИмяСтруктуры_КакоеТоДействие. Ну чем не класс с методами? При большом объеме программы она дробится на модули, и каждый модуль опять же может восприниматься как объект. О наследовании и прочем, само собой, речи нет (хотя в случае с модулями может быть объявлен общий интерфейс для работы с ними, и получится аналог наследования), но то, что сама программа мыслится понятиями, это уже интересно - т.е. (ИМХО) не всегда это можно обозвать "структурным программированием", согласно описанию в линке. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:50 |
|
||
|
интервью
|
|||
|---|---|---|---|
|
#18+
ErV Вопрос. Под структурным программирование имеется в виду вот это ? Да Дейкстра и Вирт. Наследование на голом Си тоже бывает (выглядит правда жутковато). Сам в свое время писал для HP-UX что-то вроде Turbo Vision ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:09 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=287&tid=2028579]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 407ms |

| 0 / 0 |
