Как Вы чувствовали о C ++
становление стандартизированным в 1998 и как Вы были связаны с процессом
стандартизации?
Я упорно трудился по тому
стандарту в течение многих лет (1989-1997) - поскольку я теперь работаю по его
стандарту преемника: C ++ 0x. Препятствие господствующему языку фрагментировать
во враждующие диалекты является твердой и существенной задачей. C у ++ нет
никакого владельца или "сахарного папы", чтобы поставлять мускул
развития, "свободные" библиотеки, и маркетинг. Комитет по стандарту
Международной Организации по Стандартизации был существенным для роста C ++
сообщество, и то сообщество должно огромное количество многим добровольцам,
которые работали (и работа) в комитете.
Какова самая интересная
программа, которую Вы видели написанный с C ++?
Я не могу выбрать один, и я
обычно не думаю о программе как интересной. Я смотрю больше на полные системы -
из которых части написаны в C ++. Среди таких систем приходят на ум автономная
ведущая подсистема Роверов Марса НАСА, поисковая машина Google, и система
резервирования авиалинии Amadeus'. Cмотря на кодекс в изоляции, я думаю, что
Александр Stepanov' STL (контейнеры, iterators, и часть библиотек C ++
стандартная библиотека) является среди самых интересных, полезных, и
влиятельных частей C ++ кодексом, который я когда-либо видел.
Вы когда-либо видели язык,
используемый в пути, который не был первоначально предназначен?
Я проектировал C ++ для
общности. Таким образом, особенности были преднамеренно разработаны, чтобы
сделать вещи, в противоположность которым я не мог возможно вообразить -
проводят в жизнь мои взгляды того, что хорошо. Кроме того, C ++ услуги
абстракции (например, классы и шаблоны) были разработаны, чтобы быть оптимально
быстрыми когда используется на обычных аппаратных средствах так, чтобы люди
могли позволить себе построить основные абстракции, в которых они нуждаются для
данной прикладной области (такой как комплексные числа и ручки ресурса) в
пределах языка.
Так, да, я вижу C ++
используемый для многих вещей, которые я не предсказал и использовал разными
способами, что я не ожидал, но обычно я полностью не ошеломлен. Я ожидал быть
удивленным, я проектировал для этого. Например, я был очень удивлен структурой
STL и вида кодекса, используя это - я думал, что я знал то, на что было похоже
хорошее контейнерное использование. Однако, я намеревался, что шаблоны, чтобы
сохранить и использовать информацию типа в собирают время и упорно трудились,
чтобы гарантировать, что простая функция такой как меньше могла быть inlined и
собранный вниз к единственной машинной инструкции. Это позволило
"переплетение" отдельно определенного кодекса в эффективный
выполнимый кодекс, который является ключевым к эффективности STL. Самое большое
удивление, я предполагаю, было то, что STL соответствовал всем кроме одного из
длинного списка критериев проекта для общей архитектуры контейнера цели,
которую я собрал за эти годы, но способ, которым смотрел кодекс STL, был
полностью неожидан.
Таким образом я часто рад
неожиданностям, но много раз я встревожен попытками вызвать C ++ в почву, для
которой ему не удовлетворяют, потому что кто-то не потрудился изучать основы C
++. Конечно, люди, делающие, который не полагает, что они действуют абсурдно;
скорее они думают, что они знают, как к программе и что нет ничего нового или
различно о C ++, который требует, чтобы они изменили свои привычки и изучили
"новые уловки." Люди, которые уверены таким образом, структурируют
кодекс точно, поскольку они были бы для, скажем, C или Ява и удивлены, когда C
++ не делает то, что они ожидают. Некоторые люди даже сердиты, хотя я не вижу,
почему кто-то должен быть сердит найти, что они должны быть более осторожными с
системой типа в C ++ чем в C или что нет никакой компании, снабжающей
'свободные" и "стандартные" библиотеки для C ++ что касается
Явы. Чтобы использовать C ++ хорошо, Вы должны использовать систему типа, и Вы
должны искать или построить библиотеки. Попытка построить заявления
непосредственно на голом языке или с только стандартной библиотекой
расточительна из Вашего времени и усилия. Борьба с системой типа (с большим
количеством бросков и макроопределения) бесполезна.
Часто чувствует, что большое
количество программистов действительно никогда не использовало шаблоны, даже
если они - C ++ программисты.
Вы можете быть правы об этом,
но многих по крайней мере - я думаю наиболее - используют шаблоны через STL
(или подобные библиотеки фонда), и я подозреваю, что число программистов,
которые избегают шаблонов, уменьшается.
Почему Вы думаете, что это?
Страх того, что отличается от
того, что они привыкли к, слухи кодового раздувания, потенциальных проблем
редактирования, и захватывающих плохих ошибочных сообщений.
Вам когда-либо жаль, что ГНУ
C ++ компилятор не обеспечила более короткие ошибки синтаксиса компилятора,
чтобы не отпугнуть студентов универа?
Конечно, но это не ошибка
всего GCC. Фундаментальная проблема состоит в том, что C ++ 98 не предоставляет
пути программисту к непосредственно и просто заявлять требования шаблона на его
типах аргумента. Это - слабость языка - не complier - и может только быть
полностью обращено через языковое изменение, которое будет частью C ++ 0x.
Я ссылаюсь на
"понятия", которые позволят C ++ 0x программисты точно определять
требования наборов аргументов шаблона и проверять те требования в пунктах
запроса и пунктах определения (в изоляции) точно так же, как любой другой тип
регистрируется в языке. Для деталей, см. любую из моих бумаг на C ++ 0x или
"Понятия: Лингвистическая Поддержка Родовому Программированию в C ++"
Дугом Gregor и другие (включая меня) от OOPSLA '06 (доступный от моей страницы
публикаций). Экспериментальное выполнение может быть загружено от домашних
страниц Дуга Gregor's.
Пока "понятия" не
универсально доступны, мы можем использовать, "ограничивает классы"
драматично улучшать проверку; см. мои технические ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ.
STL - один из немногих (если
не единственное) общие библиотеки цели, которых программисты могут фактически
видеть гарантии сложности. Почему Вы думаете, что это?
STL - как обычно - перед его
временем. Это - тяжелая работа, чтобы обеспечить правильные гарантии, и
большинство проектировщиков библиотеки предпочитает тратить их усилия на более
видимые особенности. Гарантии сложности - в основном одна попытка среди многих,
чтобы гарантировать качество.
В последних годах, мы видели,
что распределенное вычисление становится более доступным для среднего
программиста. Как это затронет C ++?
Это трудно сказать, но
прежде, чем иметь дело с распределенным программированием, язык должен
поддержать параллелизм и быть в состоянии иметь дело с больше чем обычная
"плоская/однородная" модель памяти. C ++ 0x делает точно это. Модель
памяти, атомные типы, и нить, местное хранение обеспечивает основные гарантии,
должны были поддержать хорошую библиотеку нитей. В целом, C ++ 0x учитывает
основное и эффективное использование мультиядер. Вдобавок ко всему, мы
нуждаемся в высокоуровневых моделях параллелизма для легкой и эффективной
эксплуатации параллелизма в наших заявлениях. Языковые особенности, такие как
"объекты функции" (доступный в C ++ 98) и лямбды (C ++ 0x
особенность) помогут этому, но мы должны оказать поддержку вне основного,
"выпускает связку нитей в общем адресном пространстве" представление
параллелизма, который я считаю необходимым как инфраструктура и худший способ
организовать параллельные заявления.
Как всегда, C ++ подход
должен обеспечить эффективные примитивы и очень общий (и эффективный) механизмы
абстракции, который тогда используется, чтобы построить высокоуровневые
абстракции как библиотеки.
Конечно Вы не должны ждать C
++ 0x, чтобы сделать параллельное программирование в C ++. Люди делали это в
течение многих лет и большинства того, что новые стандартные предложения,
связанные с параллелизмом, в настоящее время доступно в предстандартных формах.
Вы видите, что это приводит к
созданию к новому поколению общих языков цели?
Многие из "scripting
языки" обеспечивают услуги для того, что они управляли государством в
окружающей среде Сети, и это - их реальная сила. Простая текстовая манипуляция
справедливо легко подобрана библиотеками, такими как новый C ++ регулярная
библиотека выражения (доступный теперь от boost.org), но трудно забеременеть
языка, который и общего назначения и распределен. Корень той проблемы - то, что
удобное распределенное программирование полагается на упрощение и
специализацию. Язык общего назначения не может только обеспечить единственную
модель распределения высокого уровня.
Я не вижу фундаментальной
причины против языка общего назначения, увеличиваемого основными услугами для
распределения, однако, и я (неудачно) утверждал, что C ++ 0x должен сделать
точно это. Я думаю, что в конечном счете все главные языки окажут некоторую
поддержку для распределения через комбинацию прямой языковой поддержки,
поддержки во время выполнения, или библиотек.
Вы чувствуете, что ресурсы
как библиотеки повышения обеспечат эти функциональные возможности/доступность
для C ++?
Некоторые из библиотек
повышения - особенно сетевой библиотеки - являются хорошим началом. C ++ 0x
стандартные нити много походят на нити повышения. Если вообще возможно, C ++
программист должен начаться с существующей библиотеки (и/или инструмент),
вместо того, чтобы строить непосредственно на фундаментальных языковых
особенностях и/или нитях системы.
По Вашему мнению, у какого длительного
наследства есть C ++ принесенный к компьютерному развитию?
C ++ принес ориентированное
на объект программирование в главный поток, и это делает то же самое для
родового программирования.
Если Вы смотрите на некоторые
из самых успешных C ++ кодекс, тем более, что связанный с общим управлением
ресурсом, Вы имеете тенденцию находить, что печи для сжигания отходов
производства являются центральными к проекту и indispensible. Я подозреваю, что
печь для сжигания отходов производства прибудет, чтобы быть замеченной как
самый важный индивидуальный вклад - все остальное полагается на комбинации
языковых особенностей и методов в поддержку программного стиля или комбинации
программирования стилей.
Другой способ смотреть на C
++ 's наследство состоит в том, что это сделало абстракцию управляемой и
возможной в прикладных областях, где прежде, чем люди должны были
программировать непосредственно в машинных сроках, таких как биты, байты,
слова, и адреса.
В будущем я стремлюсь к более
близкой интеграции ориентированных на объект и родовых программных стилей и
лучшей артикуляции идеалов общности, элегантности, и эффективности.
Где Вы предусматриваете C ++
's будущее расположение?
Большая часть где у C ++ была
своя самая существенная сила со дня #1: заявления с критическими системами,
программируя компонент, особенно условие инфраструктуры. Сегодня, по существу
все инфраструктуры (включая выполнение всех высокоуровневых языков) находятся в
C ++ (или C), и я ожидаю что остаться случаем. Кроме того, вложенное программирование
систем - главная область использования и рост C ++; например, программное
обеспечение для следующего поколения, самолеты-истребители США находятся в C ++
(см. JSF ++ кодирующие правила о моих домашних страницах). C ++ обеспечивает
наиболее, где Вы одновременно нуждаетесь в высокой эффективности и
высокоуровневых абстракциях, особенно при ограничениях ресурса. Любопытно, это
описание соответствует и iPod и крупномасштабному научному заявлению.
Имеет развитие, и
популярность языка удивила Вас в так или иначе?
Никто, с возможным
исключением Ала Aho (книжной известности Дракона), не предвидел масштаб C ++ 's
успех. Я предполагаю, что в течение 1980-ых я был просто слишком занят даже,
чтобы быть удивленным: использование C ++ удвоенный каждые 7.5 месяцев, я позже
вычислял - и это было сделано без преданного маркетингового отдела, с едва
любыми людьми, и на ограниченном бюджете. Я стремился к общности и
эффективности и преуспел вне чьих - то ожиданий.
Между прочим, я иногда
сталкиваюсь с людьми, которые предполагают, что, потому что я мягко хвалю C ++
и защищаю его против хулителей, я должен думать, что это прекрасно. Это
очевидно абсурдно. C у ++ есть много слабостей - и я знаю их лучше чем наиболее
- но целый пункт проекта, и осуществление выполнения не должно было сделать
ошибки (это невозможно на таком крупном масштабе и при таких Безжалостных
ограничениях проекта). Цель состояла в том, чтобы произвести инструмент,
который - в компетентных руках - будет эффективен для серьезного здания систем
реального мира. В этом это преуспело вне моих самых диких мечтаний.
Как Вы отвечаете на критику
языка, такой как, который это унаследовало недостатки C и что у этого есть
очень большой набор признаков, который делает, это 'раздувалось'?
C ++ унаследовал слабости и
силы C ++, и я думаю, что мы сделали приличную работу при компенсации за
слабости, не ставя под угрозу силы. C не простой язык (его стандарт
Международной Организации по Стандартизации составляет больше чем 500 страниц),
и большинство новых языков больше все еще. Очевидно, C ++ (как C)
"раздут" по сравнению с игрушечными языками, но не действительно что
большой по сравнению с другими новыми языками. Есть основательные практические
причины, почему все языки, используемые для серьезной индустриальной работы
сегодня ", раздуты" - задачи, для которых они используются, большие и
сложными вне воображения типов башни слоновой кости.
Другая причина для неприятно
большого размера современного языка - потребность в стабильности. Я написал C
++ кодекс 20 несколько лет назад, который все еще бежит сегодня, и я уверен,
что это все еще соберет и управлять 20 годами с этого времени. Люди, которые
разрабатывают большие проекты инфраструктуры, нуждаются в такой стабильности.
Однако, чтобы остаться современный и встретить новые вызовы, язык должен расти
(или в языковых особенностях или в библиотеках фонда), но если Вы удаляете
что-нибудь, Вы ломаете кодекс. Таким образом, языки, которые построены с
серьезным беспокойством об их пользователях (таких как C ++ и C) имеют тенденцию
аккумулировать особенности за десятилетия, иметь тенденцию становиться
раздутыми. Альтернатива - красивые языки, для которых Вы должны переписать свой
кодекс каждые пять лет.
Наконец, C ++ преднамеренно и
со дня #1 поддерживал больше чем один программный стиль и взаимодействие тех,
которые программируют стили. Если Вы думаете, что есть один стиль
программирования, которое лучше для всех заявлений, и все люди - говорят,
ориентированное на объект программирование - тогда у Вас есть возможность упрощения.
Однако, я твердо полагаю, что лучшие решения - самые удобочитаемые,
ремонтируемый, эффективный, и т.д., решения - к большим классам проблем
требуют, чтобы больше чем один из популярных программных стилей - сказал, и
ориентированное на объект программирование и родовое программирование - таким
образом размер C ++ не может быть минимизирован, поддерживая только один
программный стиль. Это использование комбинаций стилей программирования -
ключевая роль моего взгляда C ++ и главная часть его силы.
Чем Вы являетесь самыми
гордыми в терминах начального развития языка и продолжающий использование?
Я горд, что C ++
использовался для очень многих заявлений, которые помогли сделать мир лучшим
местом. Через C ++, я сделал крошечный вклад в человеческий проект генома, в
высокую физику энергии (C ++ используется в CERN, Fermilab, SLAC, и т.д.),
исследование космоса, энергия ветра, и т.д. Вы можете найти короткий список C
++ заявлениями на моих домашних страницах. Я всегда счастлив, когда я слышу о
находимом хорошее применение языке.
Во-вторых, я горд, что C ++
помог улучшить уровень качества кодекса вообще - не только в C ++. Более новые
языки, такие как Ява и C #, использовались с методами, что C ++ сделанный
приемлемым для использования реального мира и сравнили с кодексом 20 несколько
лет назад многие из систем, на которые мы полагаемся, сегодня невероятно
надежны и были построены с разумной степенью экономики. Очевидно, мы можем и
должны добиться большего успеха, но мы можем принять меру гордости успехами, которые
мы сделали пока.
В терминах прямого личного
вклада я был рад быть в состоянии написать первый C ++ компилятор, Cfront,
чтобы быть в состоянии собрать программы реального мира в 1 МБ на машине на 1
МГц. Это является конечно невероятно маленьким по сегодняшнему стандарту, но
именно это он взял, чтобы начать высокоуровневое программирование на ранних PC.
Cfront был написан в C с Классами и затем расшифрован в (ранний) C ++.
Где Вы видите, что языки
программирования возглавляют в ближайшем будущем?
"Трудно сделать
предсказания, особенно о будущем." Очевидно, я действительно не знаю, но я
надеюсь, что мы будем видеть языки программирования общего назначения с лучшими
механизмами абстракции, лучше напечатайте безопасность, и лучшие услуги для
того, чтобы эксплуатировать параллелизм. Я ожидаю, что C ++ будет одним из тех.
Там будет также раздут корпоративные инфраструктуры и языки; будет специальная
цель (определенная область) языки в изобилии, и будут языки, поскольку мы знаем
их сегодня упорство чрезвычайно неизменного в нишах. Отметьте, что я принимаю
существенное развитие C ++ вне C ++ 0x. Я думаю, что C ++ сообщество является
слишком большим и энергичным для языка и его стандартной библиотеки, чтобы
стать чрезвычайно статическим.
У Вас есть какой-нибудь совет
для напористых программистов?
Знайте фонды информатики:
алгоритмы, машинная архитектура, структуры данных, и т.д. Только вслепую не
копируйте методы от заявления до заявления. Знайте то, что Вы делаете, что это
работает, и почему это работает. Не думайте, что Вы знаете то, чем
промышленность будет через пять лет или что Вы будете делать тогда, так
соберите портфель общих и полезных навыков. Попытайтесь написать лучше, больше
принципиального кодекса. Работа, чтобы сделать "программирование"
большего количества профессиональной деятельности и меньшего количества
деятельности "рубки" низкого уровня (программирование - также
ремесло, но не только ремесло). Учитесь от классики в области и лучше передовых
учебниках; не будьте удовлетворены легко переваренный, "как" гидам и
документации онлайн - это мелко.
Есть секция Вашей начальной
страницы, посвященной, 'Вы действительно говорили это?' Которые указывают от
этого, дал о себе знать Вы наиболее?
Я не чувствую себя часто
посещаемым. Я отправил те кавычки, потому что люди продолжают спрашивать меня о
них, таким образом я чувствовал, что я должен заявить им ясно. "C ++
делает это тяжелее, чтобы стрелять в себя в ногу; но когда Вы делаете, это
взлетает, целая нога" иногда указывается в манере, враждебной к C ++. Это
только показывает незрелость. Каждый сильный инструмент может вызвать
неприятность, если Вы неправильно используете это, и Вы должны быть более
осторожными с сильным инструментом чем с менее сильным: Вы можете сделать,
больше вреда (к вам непосредственно или другим) с автомобилем чем с
велосипедом, с властью видело чем рукой, видел, и т.д. Что я сказал в том, что
цитата также верна для других новых языков; например, это тривиально, чтобы
вызвать истощение памяти в Явской программе. Новые языки - электроприборы. Это
- причина рассматривать их с уважением и для программистов, чтобы приблизиться
к их задачам с профессиональным отношением. Это не причина избежать их, потому
что альтернативы низкого уровня хуже все еще.
Время для обязательного
вопроса о коллекции мусора, поскольку мы почти в конце, и Вы, кажется,
получаете вопросы об этом все время. Почему Вы думаете, что люди так
интересуются этим аспектом языка?
Поскольку управление ресурсом
- самая важная тема, потому что некоторые люди (неправильно) видят СБОРЩИКА
МУСОРА как верный признак мокрого и расточительного программирования, и потому
что некоторые люди (неправильно) видят СБОРЩИКА МУСОРА как одну особенность,
которая отличает хорошие языки от низших. Мое основное представление - то, что
СБОРЩИК МУСОРА может быть очень полезным инструментом, но что это не является
ни существенным, ни соответствующим для всех программ, так, чтобы СБОРЩИК
МУСОРА был кое-чем, что Вы можете произвольно использовать в C ++. C ++ 0x
отражает то представление.
Мой взгляд СБОРЩИКА МУСОРА
отличается от того из многих, в которых я вижу это как последнее прибежище
управления ресурсом, не первого, и что я вижу это как один инструмент среди
многих для проекта системы, а не фундаментальный инструмент для того, чтобы
упростить программирование.
Как Вы рекомендуете, чтобы
люди обращались с управлением памятью в C ++?
Моя рекомендация должна
видеть память как только один ресурс среди многих (например ручки нити, замки,
описатели файла, гнезда конца) и представлять каждый ресурс как объект
некоторого класса. Например, память может использоваться, чтобы держать
элементы контейнера или характеры последовательности, таким образом мы должны
использовать типы, такие как вектор вместо того, чтобы бездельничать со
структурами данных низкого уровня (например множество указателей на законченные
нолем множества) и явное управление памятью (например, новый и удалить). Здесь,
оба вектора и последовательность могут быть замечены как ручки ресурса, который
автоматически управляет ресурсом, которые являются их элементами.
Везде, где возможно, я
рекомендую использование таких "ручек ресурса" просто как scoped
переменные. В этом случае, нет никакого явного управления памятью, которое
может понять превратно программист. Когда целая жизнь объекта не может легко
быть scoped, я рекомендую некоторую другую простую схему, такую как
использование "умных" указателей (соответствующие, предоставленные в
C ++ 0x) или собственность представления как членство в некоторой коллекции
(что техника может использоваться во вложенных системах с Безжалостным временем
и космическими требованиями). У этих методов есть достоинства применения
однородно ко всем видам ресурсов и объединения приятно с диапазоном
обращающихся с ошибкой подходов.
То только там, где такие
подходы становятся неуправляемыми - такой что касается системы без
определенного управления ресурсом или ошибки, обращающейся с архитектурой или
для системы, сорил с явными операциями распределения - будет я применять
СБОРЩИКА МУСОРА К сожалению, такие системы очень распространены, таким образом
я полагаю, что это - очень веские доводы в пользу СБОРЩИКА МУСОРА даже при том,
что СБОРЩИК МУСОРА не объединяет чисто с общим управлением ресурсом (даже не
думайте, завершает). Кроме того, если коллекционер может быть инструментован,
чтобы сообщить, какой мусор это находит, это становится превосходным датчиком
утечки.
Когда Вы используете scoped
управление ресурсом и контейнеры, сравнительно маленький мусор произведен, и
СБОРЩИК МУСОРА становится очень быстрым. Такие проблемы находятся позади моего
требования, что "C ++ - собранный язык моего любимого мусора, потому что
это производит так мало мусора."
Я надеялся, что сборщик
мусора, который мог быть произвольно позволен, будет частью C ++ 0x, но были
достаточно многие технические проблемы, что я должен суметь обойтись только
детальной спецификацией того, как такой коллекционер объединяет с остальной
частью языка, если предоставлено. Как имеет место с по существу всем C ++ 0x
особенности, экспериментальное выполнение существует.
Есть много аспектов коллекции
мусора вне того, что я упоминаю здесь, но в конце концов, это - интервью, не
учебник.
На менее серьезном примечании
Вы думаете, что лицевые волосы связаны с успехом языков программирования?
Я предполагаю, что, если мы
смотрим на это философски, все связано так или иначе, но в этом случае у нас
есть только юмор и мода времен. Более раннее поколение проектировщиков успешных
языков было безбородым: Backus (ФОРТРАН), Бункер (КОБОЛ), и McCarthy
(Шепелявость), как был Dahl и Nygaard (Simula и Ориентированное на объект
Программирование). В моем случае я только прагматически настроен: В то время
как я жил в более холодных климатах (Дания, Англия, и Нью-Джерси), я носил
бороду; теперь я живу в очень горячем месте, Техас, и хочу не страдать под
бородой. Интересно, фотография, которую они используют, чтобы иллюстрировать
промежуточную стадию моей бороды, не делает такой вещи. Это показывает мне
посещающий Норвегию и возвращающийся к холодно-погодному типу в течение
нескольких дней. Возможно есть другие интересные корреляции? Возможно есть один
между авторской высотой и языковым успехом? Возможно есть сопоставление между
языковым успехом и оценкой Монти Python? Кто-то мог весело провести время,
делая немного исследования относительно этого.
Наконец, что - нибудь еще,
что Вы хотели бы добавить?
Да, я думаю, что мы должны
рассмотреть артикуляцию идей и образования. Я коснулся тех тем пару раз выше,
но проблемы того, чтобы заставлять людей понять то, чем C ++, как
предполагалось, был, и как использовать это хорошо были по крайней мере столь
же трудными и трудоёмкими как проектирование и осуществление этого.
Бессмысленно сделать хорошую техническую работу и затем не сказать людям об
этом., языковые особенности являются бесплодными и скучными; чтобы быть
полезным, программисты должны учиться, как языковые особенности могут
использоваться в комбинации, чтобы служить некоторому идеалу программирования,
такого как ориентированное на объект программирование и родовое
программирование.
Я конечно написал много
просто технических работ, но большая часть моего письма были нацелены на подъем
абстракции уровня программ, улучшить качество кодекса, и дать людям понимание
какой работы и почему. Прося, чтобы программисты сделали, кое-что, не приводя причину
рассматривает их как маленькие дети - они должны быть оскорблены этим. Выпуски
"C ++ Язык программирования", D&E, "Обучающий Стандарт C ++
как Новый Язык", и мои бумаги HOPL, среди моих попыток ясно сформулировать
мои идеалы для C ++ и помочь C ++ зрелое сообщество. Конечно, это было только
частично успешно - есть все еще большое "программирование сокращения и
пасты" быть сделанным и никакая нехватка плохого C ++ кодекс - но я,
поощряют количеством хорошего кодекса и числом качественных произведенных систем.
В последнее время, я двинулся
от промышленности до академии и теперь вижу проблемы образования от различного
угла. Мы должны улучшить образование наших разработчиков программного
обеспечения. За прошлые три года я развил новый курс для новичков (первые
летние студенты, часто новые программисты). Это дало мне возможность обратиться
к аудитории, которую я прежде никогда не знал хорошо, и результат - учебник
новичка "Программирование: Принципы и Практика, используя C ++",
который будет доступен в октябре.