LINUX.ORG.RU
ФорумTalks

Джон кармак о плюсах

 ,


3

4

Как сообщает похороникс, Джон Кармак высказал своё окончательное мнение о противостоянии C и C++. Для обделённых знанием английского или пониманием божественности плюсов перевожу:

Я до сих пор считаю код Quake 3 более чистым - в известном смысле. Это венец эволюции моего стиля на C, и одновременно первая итерация моего стиля на C++. Но такое отношение может быть вызвано меньшим количеством строк или тем фактом, что я не особо-то и не заглядывал туда уже десять лет. Я думаю, что «хороший C++» лучше, чем «хороший C» с точки зрения читаемости, а всё остальное эквивалентно.

Я, конечно, поизвращался над C++ в Doom 3 - ведь я был опытным C-шным программистом с некоторым знанием ООП, пришедшим из Objective-C времён NeXT, так что я просто начал писать на C++ без нормального изучения юзкейзов и идиом. Вспоминая прошлое, я очень жалею, что не прочитал Effective C++ и некоторые другие книги. Часть остальной команды в прошлом имела опыт работы с C++, но они в целом следовали моим стилистическим решениям.

В течение многих лет я не доверял обобщённому программированию, и все ещё применяю шаблоны с опаской, но в итоге я решил, что удовольствие от статической типизации перевешивает нежелание иметь раздутый код в заголовках. В Id Software всё ещё идут споры об использовании STL, и со временем они становятся жарче. Если же вернуться снова к временам, когда началась разработка Doom 3, призыв использовать STL тогда стал бы неудачной затеей, но сегодня в пользу этого решения уже есть серьёзные аргументы, в том числе в геймдеве.

Также я теперь стал const-нацистом, и даю по рукам программисту, который не ставит const подходящим для этого переменным и параметрам.

Главным нововведением, интересным для меня, является функциональное программирование - оно позволяет избавиться от многих старых привычек и вновь отказаться от некоторых идей ООП.

★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

это не pure c капец, это кармак тормозит.

x0r ★★★★★
()
Ответ на: комментарий от Jetty

я думаю, что там от оригинального idtech3 практически ничего не осталось

gavlig ★★★
()

Правильный чувак

Вместо того, чтобы изливать тонны говна, просто описал удобства/неудобства работы с языком. Не то, что всякие шведские финны.

schizoid ★★★
()

кармакокапец

Починил. А что еще ожидать от человека, который всю жизнь занимался производством костылей?

buddhist ★★★★★
()
Ответ на: комментарий от tailgunner

На плюсах код вполовину меньше. Что в этом хорошего?

minakov ★★★★★
()

Это он так заувалированно начинает разговор про то, что он тоже не прочь залить свои линуксовые блобы на стим под шумок общего праздника?

bender ★★★★★
()

Главным нововведением, интересным для меня, является функциональное программирование - оно позволяет избавиться от многих старых привычек и вновь отказаться от некоторых идей ООП.

Теперь id Tech 6 будет зафигачен на хаскеле?

Quasar ★★★★★
()
Ответ на: комментарий от Jetty

А CoD:MW3 все еще на Q3 :))) Вот вам и «плохой С»....

Да, но ведь CoD:MW3 дерьмецО, и ненужнО.

ekzotech ★★★★
()

Это по большому счёту значит, что аналогов QVM (читай - кросплатформенных модов) в будущих играх от id не будет

frame ★★★
()
Ответ на: комментарий от AlexCones

Невероятно быстрый быдлокод (с учётом требований к оборудованию). Это не GTK, который от вождения мышкой по Hello world может процессор на 100% грузить.

quiet_readonly ★★★★
() автор топика

В течение многих лет я не доверял
В Id Software всё ещё идут споры об использовании STL

А всего-то надо было почитать правильную литературу вовремя.

Reaper ★★
()
Ответ на: комментарий от DNA_Seq

И правильно делал. Дизайн OpenGL ужасен, особо это заметно в сравнении GLSL и HLSL. Единственный плюс OpenGL - для него легко создовать обёртки.

imtw
()
Ответ на: комментарий от Quasar

Этот человек чуть не научил хаскелю своего ребёнка, вовремя вмешались ювеналы.

unsigned ★★★★
()
Ответ на: комментарий от imtw

Дизайн OpenGL ужасен, особо это заметно в сравнении GLSL и HLSL. Единственный плюс OpenGL - для него легко создовать обёртки.

Just as planned, OpenGL изначально предоставляет масштабируемое API и немыслим без специфичных для отрасли или задачи обёрток. Кстати, в этом плане он куда лучше DirectX: всё, начиная с OpenGL 1.0, доступно в последней версии за счёт compatibility extensions.

quiet_readonly ★★★★
() автор топика
Последнее исправление: quiet_readonly (всего исправлений: 1)

Это венец эволюции моего стиля на C, и одновременно первая итерация моего стиля на C++

Долго ломал над этим голову, пока не прошёл по ссылке...

Первая итерация C++ - это в коде Doom3, а венец эволюции C - в Quake3, поэтому код квэйка и лучше. Вот что там написано.

unsigned ★★★★
()
Ответ на: Правильный чувак от schizoid

Finlandssvenskar это финские шведы. А шведские финны (sverigefinnar) в основном не программируют, а колдырят на лавочках.

mkmks
()
Ответ на: комментарий от ymuv

Раз уж переводишь, то переводи полностью и делай ссылку, ориентируясь на среднестатистического читаьтеля ЛОРа. (:

Эффективный С++ тогда уж. И читать тех литературу на русском - моветон.

tazhate ★★★★★
()
Ответ на: комментарий от quiet_readonly

s/обёртки/биндинги/

всё, начиная с OpenGL 1.0, доступно в последней версии за счёт compatibility extensions.

...в DirectX 11 есть альтернатива в виде feature level. Там и многопоточность нормальная есть в отличии от. Только FFP там выпилен, емнип. А вот с убогостью GLSL ничего не сделаешь, можно только заменить на огороженный Cg.

imtw
()
Ответ на: комментарий от tazhate

Точно так же можно утверждать что не знать народного фольклора и не петь народных песен - ужасный моветон.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Точно так же можно утверждать что не знать народного фольклора и не петь народных песен - ужасный моветон.

Не путай разные вещи.
Зачем нужны русские статьи, если больше чем на половину состоят из английских слов?
Это техническая литература. Образование.
И понимать её в разы легче, чем на русском.
Даже на банальных словах: computer/электронная вычислительная машина.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

К сожалению, а так же к твоему (вероятно) удивлению техническая литература состоит не только из технических терминов, но еще и из речевых оборотов и различных описательных конструкций. Так вот именно с ними и есть проблема, именно их и _надо_ переводить.

Вот тебе пример:
The strcmp() and strncmp() functions return an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.

В давние времена я в упор не мог понять что имелось в виду - выяснил эксперементально.

И таких фраз и оборотов тысячи.

Jetty ★★★★★
()

Господа, а кто на ваш взгляд заслуживает большего уважения: Д. Кармак или Г. Ньюэлл? Я бы сделал опрос, но удалят ведь.

CARS ★★★★
()
Ответ на: комментарий от tazhate

computer/электронная вычислительная машина

Было раньше замечательное слово «вычислитель», к сожалению, канувшее в Лету

Gvidon ★★★★
()
Последнее исправление: Gvidon (всего исправлений: 1)
Ответ на: комментарий от Jetty

К сожалению, а так же к твоему (вероятно) удивлению техническая литература состоит не только из технических терминов, но еще и из речевых оборотов и различных описательных конструкций. Так вот именно с ними и есть проблема, именно их и _надо_ переводить.

К сожалению, именно _тебе_ и надо (было?) учиться их переводить, если ты конечно не собираешься всю жизнь ждать по несколько лет, пока свежую литературу переведут за тебя, если вообще переведут. И это не говоря о качестве переводов ИТ-литературы.

Да, хотелось бы всего на родном языке, но сейчас эта хотелка очень сильно оторвана от реальности.

staseg ★★★★★
()
Ответ на: комментарий от imtw

многопоточность

Только 100 лет никто не шевелился, так как видеокарта одна ;) А вот геометрия, которую ты на нее свалишь ложится на все ее ядра очень эффективно и параллельно. Но кейсы есть все же

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от Gvidon

Было раньше замечательное слово «вычислитель», к сожалению, канувшее в Лету

Мы так от темы обсуждения уйдем.

tazhate ★★★★★
()
Ответ на: комментарий от Jetty

Плюс - в 80% случаев статьи/книги на английском актуальнее русскоязычных аналогов.

tazhate ★★★★★
()
Ответ на: комментарий от vertexua

Только 100 лет никто не шевелился, так как видеокарта одна

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

imtw
()
Ответ на: комментарий от staseg

Вы, как обычно, не читай&отвечай. Изучите предмет дискуссии и лишь только тогда обширно отвечайте.

Jetty ★★★★★
()
Ответ на: комментарий от tazhate

Подожди. Разговор не о знании языка, а о твоей фразе:

...читать тех литературу на русском - моветон...

Я утверждаю что это нормально и даже более - так должно быть. Мы не обсуждаем объективные либо субъективные причины которые могут препятствовать этому процессу.
Ты утверждаешь что читать на русском - плохо. Мне кажется ты сиииильно ошибаешься.

Jetty ★★★★★
()
Последнее исправление: Jetty (всего исправлений: 1)
Ответ на: комментарий от Jetty

Я себе же на удивление прочитал весь топик перед ответом. И согласен с Тазиком, читать ИТ-литературу на русском - моветон, почему - написал в предыдущем комментарии.

staseg ★★★★★
()
Ответ на: комментарий от staseg

почему - написал в предыдущем комментарии.

Прочти свой же коментарий, ты НЕ писал почему это плохо :)

Jetty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.