Обсуждаем языки программирования

Тема в разделе "Машинное отделение", создана пользователем WinPooh, 10 июл 2006.

  1. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Видимо, от этой темы никуда не деться :)

    Сейчас скопирую сюда начало дискуссии из ветки, которую по ошибке удалил раньше времени (но страничка в кэше осталась).

    atoku:

    Все котируется. Я не совсем линуксоид. Скорее законченный юниксоид. Под винду писал, много на С++ и MFC (можно еще найти мой Uni-K Sensei в интернете), но потом крайне разочаровался в С++ и теперь пишу либо на чистом С (ANSI C99) если нужна скорость работы, либо на Python. Пробовал что-то делать на Haskell и Лиспе, но пока ниасилил на нужном уровне и работа продвигается довольно медленно. Дело в том, что основное мое дело - это наука, типа космическая физика smile

    bankuss:

    ну С++ от С только классами отличается, а их в шахматах применять не обязательно smile

    winpooh:

    Ох, не только...

    atoku:

    С++ отличается от С только тем, что С++ - это бред сумасшедшего, в котором без поллитра делать нечего. Единственно хоть немного ценного в С++ - это шаблоны - которые Страуструп ненавидит и не хотел включать в стандарт - и STL. Все остальное идет лесом. Впрочем, структуры с методами имеют право на жизнь. А вот вся эта неортогональная бредовая конструкция с наследованием, виртуальщина и прочее - слишком сложно. Одно и то же можно написать тысячью способов, в итоге народ использует лишь собственное подмножество языка и не понимает друг дружку.

    Я считаю теперь, что язык должен быть простым, как слеза, как С. smile Я имею в виду синтаксис, а не технику владения.

    winpooh:

    А как же exceptions? Неужели тоже лесом?

    atoku:

    Лесом! Зачем они нужны? assert максимум что нужно для здоровой программы. Впрочем, это не так тупо, безусловно, даже в питоне есть трай, но излишне, ведь можно просто обрабатывать код ошибки программы.

    Да, верно, лесом и эксепшены! smile

    Да, в С мне несколько не хватает перегрузки функций wink

    winpooh:

    exceptions - замечательная вещь
    Вот думает, например, программа, над ходом. И тут на глубине 25 полуходов вдруг замечает, что у неё кончилось выделенное на ход время. Или пользователь, что серьезнее, нажал кнопку MoveNow.

    Что делает программист на С? Вызывает грязный хак с setjmp/longjmp, или какой-нибудь не менее грязный хак с глобальным флагом (в Греке сейчас так, и мне за этот код стыдно). Или, того хуже, возвращает через 25 вызовов наверх спецзначение: пора делать ход.

    Что делает программист на C++? Кидает исключение smile

    А насчёт обработки кода ошибки - есть классический пример, называется "последовательное выделение ресурсов". При количестве выделяемых ресурсов более трёх получаем спаггетти. Кушать подано smile

    atoku:

    Я не очень понял в чем проблема. Сделал оценку, проверил время. Время вышло - вернуться к предыдущему выбранному ходу, когда думалось на 24 полухода.

    Аналогично и с пользовательским прерыванием.

    Код ошибки пока у меня спагетти не вызывал ни разу smile
    Или там рекурсия? - хм... Ну, а чем плох лонгджамп? wink

    NS:

    У меня тоже выставляется флаг, и идет возврат по дереву.
    Ничего плохого в этом не вижу.
    Исключение - не очень хороший метод. Мне не нравится. smile
    Но кто мешает рекурсию полностью заменить стеком?

    atoku:

    Да нет, и без лонгджампа взад можно обойтись, я уверен. Просто надо немного переиначить стихотворение smile Я имею в виду код.

    Мне кажется, что рекурсию лучше оставить - это красиво! smile

    NS:

    Красиво?
    Программа должна быть понятной, и быстрой smile
    В search() передается слишком много параметров.
    Намного понятней и лучше делать на стеке, тем более что есть возможность обратится не только к текущим значениям параметров, но и посмотреть их историю.
    Я от рекурсии при переписывании откажусь. smile

    atoku:

    Умных людей надо слушать. Я тогда тоже сделаю без рекурсии. smile Сделаю на двустороннем списке, чтобы не повторяться smile

    winpooh:

    Ты будешь смеяться, но он, стек, там уже есть.
    Только не руками программиста реализованный, а рантайм-средой smile

    Для кого - понятнее? Для читателя? Не уверен. Хуже глобальных параметров ничего нет, мне кажется.
    Этак вы скоро до ассемблера договоритесь smile

    Вопрос на засыпку: для чего вообще люди придумали параметры фукнций? Передавали бы всё через общие ячейки памяти, как в Фортране-IV... Эффективность зато, да.

    И не говорите мне про плохой стиль. Пока Анечка, написанная в хорошем стиле, не обыграет Фрукта, написанного "по-старинке", с параметрами функций и прочей неэффективностью smile

    Дело вкуса. С точки зрения скорости exceptions, думаю, не проигрывают longjmp, и существенно выигрывают у возврата по дереву.
     
  2. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Это не массовая операция, так что можно и по дереву растечься мыслею :)

    Глобальные переменные - это зло, адназначна! :) Впрочем, обычно даже дефайны с параметрами зло, а я их пользую беспощадно, вместо inline (который в С99 есть)
     
  3. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Вот сегодня прочитал у Хьятта, про тестовые матчи с контролем 100 ходов в 1 секунду. Думаю, там это будет уже критично.
     
  4. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Кстати, слышал что СмартСинк написан как-то функционально или что-то вроде того. Кто знает достоверно, отзовитесь!
     
  5. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Надо проверять, конечно, но разве матчи не сам с собой он проводит, для отладки ОФ - тогда не очень важно. А соревноваться с другими в таком режиме кто будет?
     
  6. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Насчет того, что стек и так есть - да, есть.
    Но сравни по сложности аварийный выход, когда перебор полностью на стеке организован с рекурсией....
    И странно, когда куча всего в стеке (массиве) хранится (вспомогательная информация, киллеры и т.д.), а часть в аппаратном (альфа, бетта, depth)
     
  7. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    На самом деле, я тоже постепенно в своих структурах данных какие-то "псевдо-стеки" завожу. Например, флаг находится ли позиция под шахом, держу сейчас в массиве для каждой глубины по отдельности - чтобы легко было проверить, как там "наверху"?
     
  8. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Так и зачем-же тогда рекурсия? :)
    Один стек объектов (я буду делать record в Делфи) и больше ничего не надо :)
     
  9. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    короче, в любом случае мне из всех языков С++ больше всего нравится. я бы яву выбирал, если бы она не была такой плотнообедающей памятью. вот. а дефайны вообще надо позабыть. что это?!!:rolleyes:
    константы и шаблоны круче.
     
  10. akupr
    Оффлайн

    akupr Новичок

    Репутация:
    0
    Руки прочь от C++ :)
     
  11. akupr
    Оффлайн

    akupr Новичок

    Репутация:
    0
    Хотя с исключениями для возврата из рекурсии, конечно, не соглашусь.
    Есть более "правильные" методы. Исключения должны применяться в исключительных случаях.
     
  12. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Да, нет на вас Луговского! Он бы назвал вас быдлокодерами и направил бы в биореактор по месту жительства.

    "Автору С++ место в дурке или на погосте" © В.С.Луговский.
     
  13. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Сказал, как отрезал :)
     
  14. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Если рассматривать исключения как события, то всё нормально.
    На самом деле всё это дело вкуса, лишь бы утечек памяти не было.
    При сворачивании через глобальный флаг можно четче отследить, и нормально свернуть рекурсию.
     
  15. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Исключительное событие - это то, что происходит редко. Например, сто миллионов узлов посмотрели нормально, а на сто миллионов первом надо ход делать - вполне себе исключительная ситуация.
    Невозможность открыть файл или создать сокет, думаю, случается чаще - а в этих случаях даже в стандартных библиотеках кидают исключения.

    Это всё схоластика :)
     
  16. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Хм, я все равно не понимаю, зачем там вообще что-то кидать. Рекурсия-то хвостовая? ;)
     
  17. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Не хвостовая она, увы. Возвращаемое значение проверяется, если оно нас по каким-то причинам не устраивает, может понадобиться повторный поиск с другим окном.
    Халявы не будет :)
     
  18. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Я уже заметил, что нет халявы в вашем шахматном программировании.

    Интересно работают генераторы ходов. Смотрел код фрукта (вот кстати образец как надо писать код - это просто картинка а не код!) на предмет генератора ходов и был удивлен, что ходы собираются в список, который возвращается. Потом смотрел Крафтю, там все не так: и код ужасен и собирается все не пойми куда.

    У меня была первая идея тоже совать в список, но показалось, что в вектор - это более быстрое решение.

    Кстати, заодно хотел спросить: а как принято кодировать ход?
     
  19. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Обычно кодируют - одкуда (6 бит) и куда (6 бит) итого 12 бит на ход.
     
  20. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Не забудь ещё код фигуры, в которую превратились.

    Можно ещё хранить всякие флаги, облегчающие обработку - не взятие ли это на проходе, не рокировка ли...
    Можно добавочное поле для предварительной сортировки по MVV/LVA... И дальше - что подскажет фантазия. Скажем, если хранить код сходившей и взятой фигуры, упрощается MakeMove/UnmakeMove - зато чуть усложняется генератор.

    В общем, от 16 до 32 бит на ход - типичное значение.
     
  21. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Кстати у Крафти как раз хороший код :)
    И вдобавок с хорошими комментариями.
     
  22. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    У меня только в Ферзя :)
     
  23. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Тогда твоя программа играет не в шахматы, а в некоторую другую игру, пусть и с похожими правилами :)
     
  24. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Вопрос двоякий - как хранить ход в Хеше, или в каком виде выдавать генератором.
     
  25. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Я знаю. Первые доступные Рыбки тоже играли не в Шахматы :)
    Не знаю что на меня нашло, но я решил Собезьяничать :)
     
  26. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    А я хотел передавать вообще сразу маску 64 бита. Плюс код фигуры в нагрузку. Но, видимо, это слишком много памяти будет жрать? Или фиг с ней с памятью? Или небольшое замедление на move/unmove - это не проблема. Вы опытные, подскажите! :)
     
  27. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    Я сейчас использую 32-бита на ход везде - и в хэш-таблице, и в генераторе.
    Реализован как класс-обертка вокруг int с удобными методами доступа к полям.
     
  28. akupr
    Оффлайн

    akupr Новичок

    Репутация:
    0
    А кто такой Луговский?
    Судя по цитате, сам он человек не вполне уравновешенный :)

    А если серьезно, то у вашего любимого C нет никаких преимуществ по сравнению с C++. Даже с точки зрения производительности.
    Да и на C++ Вы можете писать в стиле C, используя только подмножество языка. Избавившись от дурацких макросов (const для констант и inline функции), объявляя переменные по мере необходимости, а не в начале блока. Нелюбимые Вами исключения избавляют от головной боли с постоянными проверками возвращаемых значений, делая код гораздо более читаемым.
    И это только малая часть!
     
  29. WinPooh
    Оффлайн

    WinPooh В.М. Команда форума

    Репутация:
    95
    А вот не подерётесь :)
     
  30. akupr
    Оффлайн

    akupr Новичок

    Репутация:
    0
    Согласен, схоластика :)
    В конце концов, это дело вкуса.
    В главном, я думаю, мы согласны: C++ — рулез форева! :)
     
  31. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    const и inline есть в стандарте ANSI С (inline с С99). Это к слову.

    Знаете, akupr, вы зря думаете, что это простой вопрос по поводу С++. Существует в сети множество очень глубоких дискуссий на эту тему и мои приколы лишь немножко отражают истинные и серьезные претензии к С++. На эту тему можно поискать в гугле. Особенно много англоязычных материалов, но, думается, можно найти что-то и по-русски.

    Виталий Луговский очень своеобразный апологет функциональных языков и в частности O'Caml. Его одиозные, хамские и резкие, но обычно довольно глубокие и остроумные выступления в сети лет пять назад привлекли к нему лично, а заодно и к функциональным языкам очень большое внимание. Он бывший физик, а ныне программист, работает в Англии. В жизни совершенно не такой, как представлялся в давнюю пору в сети.
     
  32. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Обычно используется не более 16-ти бит на ход в хеше (я уже говорил - у меня 8 бит - хранится не ход, а номер хода) 32 бита слишком много. Жалко столько памяти.
    эти лишние 16 бит можно использовать для других целей (как напрмер в Тоге)
    Запись Хеша 128 бит? У меня 128.
     
  33. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Вы действительно считаете С++ рулезом? Попробуйте все же найти материалы. Если вы человек думающий, а вы, уверен, таковы, то обязательно увидите как неоднозначно увлечение С++ и какую даже опасность для мозга он представляет :) Он калечит ваше понимание и умение!

    Чтобы зародить хоть какое-то зерно сомнения, я прошу вас вспомнить о таком одиозном языке как Кобол, который был популярен еще более чем С++ и как он сгинул во тьме веков...

    Также хочу напомнить о попсе, столько популярной и столь бесполезной. А еще найду вам в сети один прикол и размещу в следующем посте :)
     
  34. krey
    Оффлайн

    krey Михаил Кройтор Команда форума Команда форума

    Репутация:
    1
    все мы не такие... один мой знакомый говорил, что теоретики никому не нужны, что полиморфизм, наследование, виртуальные функции - бред сивой кобылы. Что языки С/С++ нужно выкинуть и тралала... Я не понимаю такого отношения. каждый язык хорош по-своему. и я не буду ругать питон только потому что его не знаю, пролог - потому что у меня к нему отвращение, паскаль - потому что паскаль.
    Кстати, Луговский по описанию Чича напоминает :)
     
  35. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Интервью 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' ? По
    и?айней мере было сразу понятно, что у тебя где-то ошибка без всяких там

    С. Нет, я же говорил... Замечали, в чем разница между стадиями планирования
    проектов на '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