Встреча с легендой: Бьёрн Страуструп


Сегодня я сходил на лекцию живой легенды - Бьёрна Страуструпа (на фото с лекции - Бьёрн, рассказывающий про первую версию компилятора C++).
Автор языка C++ и бессменный идеолог его развития, популяризатор идей объектно-ориентированного программирования, обладатель многих наград и премий, в том числе и награды “первый компьютерный ученый”.
Сложно даже просто оценить и уж точно не переоценить его вклад в развитие программирования. Сейчас уже сложно себе это представить, но еще 20-25 лет назад идеи ООП были непонятны никому. Уже была Симула, были научные трактаты про ООП, но их читали только профессора, а 99.9% программистов про ООП даже не слышало.
Всё изменилось, когда Страуструп создал C++. Именно этот язык произвел революцию в умах программистов в 80-х - 90-х и на смену эпохе структурного программирования пришла эпоха объектно-ориентированного программирования. А новая эпоха породила уже новые языки, включая любимую многими Java. Сейчас уже трудно представить себе программиста, который не понимает ООП.


На лекции Бьёрн (кстати, он датчанин и его имя по-датски надо читать Бьярне, а не Бьёрн, но т.к. имя Бьёрн уже устоялось, то не буду ничего менять) много говорил про историю создания C++. Про то, что привело его к идее языка. Про то, что было его движущими факторами при разработке первой версии и каждой последующей. Про то, как он видит прошлое и будущее C++. И это было очень inspiring, как говорят англичане (что-то типа “вдохновляюще”, но слово посильнее).
Вторая часть выступления была посвящана новому стандарту C++0x и тому, как он разрабатывается. В голосе Бьёрна слышалось небольшое раздражение медлительностью и неэффективностью комитета по стандартизации, а также их упертостью. Даже он не может там ничего требовать. Например, он много лет добивался, чтобы убрать обязательный пробел между двумя > в конце std::vector<std::list<int>>. И только постоянное капание на мозг заставило комитет потребовать, чтобы это компилировалось и без пробела.
Или еще лучше пример: уже в 80-х годах Страуструп реализовал ключевое слово auto в C++. Но его тогда потребовали убрать из-за несовместимости с С. И только теперь оно возвращается и теперь можно писать, например, так: for (auto i : v) std::cout << i << "\n"; и неважно какого типа переменная v.
В общем, понятно, почему стандарт вышел не 0x, а 0xB.
Также он показал примеры новых фич из C++0x и то, зачем они были созданы.


Всего 2 основные идеи стоят за каждой новой фичей в C++0x:
1. Простота освоения языка новичками и простота обучения. Ибо новичков среди разработчиков всегда больше, чем профессионалов.
2. Сделать C++ еще более подходящим для системного программирования и создания библиотек. Ибо это именно то, где C++ силен. C++ не собирается конкурировать в прикладных узких областях с другими языками, но зато за счет множества библиотек использование С++ постоянно расширяется и может прийти и в эти области.
Еще одна из движущих идей - сделать уже написанный код еще быстрее. Отсюда все эти move constructors, константные выражения (constexpr) и т.п.


Про новые фичи и примеры кода с их использованием можно написать много, и я еще буду писать про это в следующих постах.


А в завершение хочу сказать, что шанс встретиться с таким человеком может представиться только раз в жизни. И я абсолютно не понимаю программистов, которые проигнорировали это событие и не пошли послушать лекцию.
Представьте себе - бесплатно, всего в 10 минутах от вашей работы выступает Страуструп, а вы это событие игнорируете.
Можете себе такое представить? Я - нет.
Но при этом послушать Страуструпа из всей моей большой фирмы пошло всего 2 человека! Мне этого никогда не понять…

13 комментариев к Встреча с легендой: Бьёрн Страуструп

  • > Именно этот язык произвел революцию в умах программистов… пришла эпоха объектно-ориентированного программирования
    Это ты про Smalltalk? ;)

    • Общедоступная версия Smalltalk была выпущена примерно в то же время, что и C++ - в начале 80.
      И Smalltalk так и остался языком для немногих, тогда как C++ - ты сам знаешь. А все потому, что в Smalltalk слишком увлеклись новыми концепциями, а C++ позволял писать и по-старому, а значит learning curve был у него лучше.

      • Разработка С++ - это скoрее середина/конец 80-х.

        • В 83 вроде как вышел официальный коммерческий релиз компилятора C++. А Smalltalk - 82. Практически одновременно.

          • Официальный коммерческий релиз был в 85-м, если википедия не врёт. И, вспоминая Turbo C++, вышедший намного позже, могу себе представить что это было такое.

            • Точно. В 80 вышел “C with classes”, а в 85 уже С++.
              Имхо, нет никакого смысла спорить “у кого длиннее”. У языка программирования есть только 1 главный показатель - сколько всего на нем написано кода и работающих программ. И в этом показателе у C++ точно “длиннее”.

  • ganjubas

    Сейчас уже трудно представить себе программиста, который не понимает ООП.

    Эх, вот тут вы автор сильно заблуждаетесь :) Сколько я их видел - наверное больше чем тех, кто его понимает… Это моя удача такая, или что-то другое?

    • >>Сколько я их видел - наверное больше чем тех, кто его понимает… Это моя удача такая, или что-то другое?

      Я видел многих, кто не использует ООП. Но даже они его хоть немного, но понимают и даже принимают. Но что-то им мешает начать его использовать. Возможно большой опыт в функциональном программировании мешает.

  • boguscoder

    Я, было, думал с Киева лететь, раз выступление бесплатное(но, увы, слишком уж позно узнал о мероприятии), а вы говорите коллеги через дорогу поленились пройти..мда..

  • Объясните пожалуйста для тех кто в танке: что это за прикол с названиями 0x и 0xB. Тут какая-то шутка спятана?

    • Да, шутка. Было придумано название 0x, чтобы показать, что новый стандарт будет принят в один из 200x годов. То есть стандарт должен был быть 07 или 08. Но в итоге его примут в 11 году. и это уже не 0x, а 0xB в 16-ричной системе счисления.

  • zahardzhan

    25 лет назад была создана CLOS - Common Lisp Object System, и те кто её создали прекрасно понимали что такое ООП. По сравнению с ней, ООП в Java и C++ - это гигантский шаг назад.

Ответить

 

 

 

Вы можете использовать эти HTML тэги

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>