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)

string STL_using(Config config) {

    if (config.power >= pofig) {

        return "Yes";

    }

    else return "Upgrade your PC";

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

Мне примеров накидать на ру и англ, чтобы было ясно, что понятнее? :)

Зачем? Всё же ясно. Ты не сказал «русские переводы плохи» или «русские переводы устаревают к моменту перевода», ты сразу замахал шашкой «моветон!!11».

Естественно, нужно знать английский и читать литературу на английском. Но нет никакого моветона читать на русском.

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

Ну как же писал-писал, но не написал? :) Плохо, потому что

а) перевод выходит позже оригинала, часто его просто нет, т.е. мы тормозим в развитии в ожидании перевода;

б) если на момент появления желания прочитать книгу ее перевод уже есть, мы рискуем нарваться на его плохое качество, бывают такие переводы терминов, что всю голову сломаешь, что это такое;

в) если на момент появления желания прочитать книгу ее перевод уже есть, мы рискуем не погрузиться в технический английский и завтра пролететь с пунктом «а».

Если что, я сам люблю почитать на русском.

staseg ★★★★★
()

Предлагаю тазику удалить себя со снятием скора за провокацию флейма и разворот годного треда в совершенно бессмысленный срач.

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

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

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

Я утверждаю что это нормально и даже более - так должно быть

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

iVS ★★★★★
()

Независимо от того на каком языке написан код, пока код не покрыт тестами, о нём ничего нельзя сказать, хорош он или плохой.

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

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

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

А когда покрыт - тоже ничего нельзя сказать

можно, что часть покрытая тестами не поломается в новой версии, но это конечно не панацея

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

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

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

Пусть пишут годные учебники на русском, а не просто занимаются переводом.

не нужно.

а оригинальной литературы на русском нет.

прапор тебе в руки.

Deleted
()
Ответ на: комментарий от Pavval

А когда покрыт - тоже ничего нельзя сказать.

Когда код покрыт тестами, то тесты говорят о коде то, что хотел получить от него программист, писавший этот код.

Когда код «сам в себе», то другие люди не могут определить зачем он что-то там внутри себя делает. Нет абсолютно никаких показателей надёжности в выполнении заложенных фич. Код держится только на честном слове разработчика.

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

По поводу невозможности тестирования нужно вспомнить, что такое гонки. По поводу Кармака см. ссылку:

Pure functions have a lot of nice properties.
Thread safety. A pure function with value parameters is completely thread safe. With reference or pointer parameters, even if they are const, you do need to be aware of the danger that another thread doing non-pure operations might mutate or free the data, but it is still one of the most powerful tools for writing safe multithreaded code.

http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/

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

Нельзя. Тесты не ловят баги в многопоточных императивных программах.

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

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

то тесты говорят о коде то, что хотел получить от него программист, писавший этот код.

Я бы с тобой согласился бы, если б не видел кучу контрпримеров. Хреновые тесты ничего не говорят. Только на мат провоцируют. Тесты могут быть неправильными, неполными, написанными на отвали. Они ничего не говорят.

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

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

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

Не путай разные вещи.

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

Тоже самое было с латынью - и где она сейчас? Понимать техлитературу на русском проще, ты ещё трактористов в ПТУ заставь изучать внутренности дизеля и сеялок на буржуйском под предлогом что им так понимать легче:)

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

Понимать техлитературу на русском проще, ты ещё трактористов в ПТУ заставь изучать внутренности дизеля и сеялок на буржуйском под предлогом что им так понимать легче:)

Конечно, у них сплошь и рядом встречаются слова, как: tcp, internet, bonding, modulation, bgp, port knocking и так далее.

Из программирования так можно огромнейшую пачку выдавить непереводимых/труднопереводимых слов.

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

Конечно, у них сплошь и рядом встречаются слова, как: tcp, internet, bonding, modulation, bgp, port knocking и так далее.

У них сплошь и рядом ВОМ, стакан, хомут, кардан, распредвал, гидростатический привод, форсунки, плунжер, маховик, перепускные клапана - слова известные на Руси сотни лет но без перевода на англиский ты их не поймёшь, лучше и не пытайся, это тебе не ынтернет, модуляция и порты доступа с протоколами связи. Инженеры механики как-то смогли сотни специфических хреновин обозвать по русски а программисты не могут - особенные они, альтернативно одарённые.

Из программирования так можно огромнейшую пачку выдавить непереводимых/труднопереводимых слов.

У многих «непереводимых» слов типа маркетинг в разговорной речи давно существуют аналоги (впаривание) со смыслом в отличии от, только ты их знать не желаешь, тебе чужое сообщество важнее русского. Небольшое количество слов можно заимствовать и адаптировать или придумать заново.

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

У многих «непереводимых» слов типа маркетинг в разговорной речи давно существуют аналоги (впаривание) со смыслом в отличии от, только ты их знать не желаешь, тебе чужое сообщество важнее русского. Небольшое количество слов можно заимствовать и адаптировать или придумать заново.

facepalm.
Забей, разговора не выйдет.

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

Очень хорошо приятель на эту тему написал.

Классический альтернативно одарённый человек плохо понимающий свой родной язык поэтому чужой ему кажется понятнее.

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

facepalm.
Забей, разговора не выйдет.

Конечно не выйдет если собеседник фактически уже иностранец всё ещё помнящий русскую грамматику.

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

И что там не так, если консоль всё равно изучать надо а в кедах она к тому же и няшная.

Я не могу спокойно разговаривать с человеком, который не осилил ман настолько. Или гугл.

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

Я не могу спокойно разговаривать с человеком, который не осилил ман настолько. Или гугл.

Ты наверно не догадываешься, но синтаксис баша назвать нормальным может только человек фанатеющий от перла и С/С++. Я мог накорябать программу которая запишет имена файлов в строку а потом их сотрёт без баша, даже в гугл и в маны для этого лезть не надо, но мне было интересно сделать это через хентайный механизм предусмотренный в консоли особо в него не погружаясь. Необходимые использованные комманды баша я записываю в шпоргалку, в 99% случаев её хватает, теперь покажи мне такой же полезный лично мне ман сопоставимого размера.

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

man пунктуация.

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

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

Школа была давно и методы определения мест для установки запятых подзабылись, я этого не отрицаю, но какое тебе до этого громадное дело, если ты техницизмы на русском в любом случае понимаешь со скрипом;)

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

Если бы этот кто-то не понимал, то его доводы было бы легко опровергнуть не прибегая к доводам типа «а у тебя знак препинания не там стоит».

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

По правде сказать количество «непереводимых» терминов у нас явно завышено, тут напильник прав

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

Классический альтернативно одарённый человек плохо понимающий свой родной язык поэтому чужой ему кажется понятнее.

В переводах книг по программированию используется что угодно, но только не русский язык.

На английском в большинстве случаев намного понятнее.

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

В переводах книг по программированию используется что угодно, но только не русский язык.

Какие интеллигенты привередливые: если на русском получилось чуток коряво то пошли все нах, я это читать не буду, подайте мне басурманов которые всю жизнь на транслите пишут!

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