Fabien Sanglard опубликовал (http://fabiensanglard.net/doom3/index.php) результаты анализа более 600 тысяч строк кода игры Doom 3 и игрового движка id Tech 4, открытых (http://www.opennet.me/opennews/art.shtml?num=32372) корпорацией Zenimax в ноябре прошлого года. Опубликованные сведения являются своеобразным путеводителем по коду, дающему возможность начать использование технологий Doom 3 в свободных игровых проектах, без необходимости проведения многомесячного предварительного разбора кода.
Отчёт состоит из 6 частей, среди которых информация (http://fabiensanglard.net/doom3/renderer.php) об организации системы рендеринга, результаты (http://fabiensanglard.net/doom3/profiling.php) профилирования кода, данные (http://fabiensanglard.net/doom3/scripting_vm.php) о скриптовом движке. В качестве дополнения опубликовано интервью (http://fabiensanglard.net/doom3/interviews.php) с Джоном Кармаком (John Carmack), одним из основателей компании id Software. Среди рассматриваемых в интервью тем можно отметить вопрос перехода с языка Си на Си++, который по словам Джона Кармака полностью оправдался для крупных проектов, развиваемых большой командой разработчиков и требующих высокой производительности.URL: http://fabiensanglard.net/doom3/index.php
Новость: http://www.opennet.me/opennews/art.shtml?num=34086
Даешь DOOM 3 на Linux! =)
он давно там есть
Даёшь tremulous с физикой и тенями! =)
> Даёшь tremulous с физикой и тенями! =)А в xonotic тени давное есть. Да и физика до некоторой степени.
Он там изначально и планировался.
> Даешь DOOM 3 на Linux! =)Вы из какой криокамеры, сэр?
спасибо им за это!
> Среди рассматриваемых в интервью тем можно отметить вопрос перехода с языка Си на Си++, который по словам Джона Кармака полностью оправдался для крупных проектов, развиваемых большой командой разработчиков и требующих высокой производительности.Ядро насторожилось...
Зря. ООП - это просто средство сфокусироваться не на низкоуровневой реализации, а на высокоуровневой логике. Для ядра это неактуально, вся его логика работает на низком уровне.
ага, в дополнение к низкоуровненвости ещё добавляется мозготрах с ООП выкрутасами плюсов
«I made up the term 'object-oriented', and I can tell you I didn't have C++ in mind» — Alan Kay, OOPSLA '97
> «I made up the term 'object-oriented', and I can tell you I didn't have C++ in mind» — Alan Kay, OOPSLA '97
> http://programmers.stackexchange.com/q/46592Ну Кэй то всего навсего придумал новое название давно существовавшим вещам, что он собственно и сам не отрицает
From: Alan Kay [removed for privacy]
Subject: Re: Clarification of "object-oriented"
At Utah sometime after Nov 66 when, influenced by Sketchpad, Simula ... I thought of an architecture for programming. It was probably in 1967 when someone asked me what I was doing, and I said: "It's object-oriented programming".ну а ц++ тогда и в проекте конечно не было, а была симула
>В современной терминологии Simula 67 можно охарактеризовать как объектное расширение Algol 60.
http://ru.wikipedia.org/wiki/Симула
Ну, если ты ответ Кэя целиком прочитал, то там написано, что по его мнению индустрия, вцепившаяся в идею "объектной ориентации", побежала с ней не в ту сторону, куда Кэй хотел бы, чтобы она побежала. Так что его фразу про C++ я интерпретирую по-другому.
>Ядро насторожилось...Какое ядро? Линус ненавидит C++, так что линукса на C++ не будет.
чойта-он?
http://harmful.cat-v.org/software/c++/linus
Но кстати, даже самые жирные из наших местных троллей, типа Вани, по сравнению с Линусом просто узники Освенцима какие-то...
завидуешь, что он работает в мировом масштабе?
> завидуешь, что он работает в мировом масштабе?Лох мирового масштаба работающий за подачки в виде права на аренду копии байтиков. "Человек - это звучит гордо! А обезьяна - перспективно!"
> Лох мирового масштаба работающий за подачки в виде права на аренду копии
> байтиков. "Человек - это звучит гордо! А обезьяна - перспективно!"(думаю несложно догадаться что это не про Торвальдса :P)
Вообще к нему подходит. Совершенно не умеет фильтровать речь соответственно статусу. Хоть и повезло оказаться в нужное время в нужном месте.
> Хоть и повезло оказаться в нужное время в нужном месте.Сильно)
> Вообще к нему подходит. Совершенно не умеет фильтровать речь соответственно статусу.Чем выгодно отличается от янки с их политкорректностью. Которая предписывает улыбаться и говорить "извините за доставленные неудобства" при втыкании кинжала в спину.
> http://harmful.cat-v.org/software/c++/linusИ что он неправильно сказал? Если в гамезе могут быть задрюченные алгоритмы и сложные конструкции, то вот в ядре всего этого следует максимально избегать. Ну и си++ там поэтому никуда не уперся.
Да он все правильно сказал.
Для его задач не нужен и даже вреден язык, дающий возможность программисту не думать о деталях.
Ну, и средняя компетентность С-программистов красноречиво показывает, что быдлокодеров среди них куда меньше, чем в целом по отрасли. Язык обязывает.Распространение этих простых принципов на программирование в целом - факты, имеющие место только в головах наиболее одиозных читателей.
Насчет нападок на язык С++ и его библиотеки.
Возможно, он знает, о чем говорит. Или это информация 1992 года и она несколько устарела. Это совершенно неважно. Очевидно, Линус - не эксперт по С++, и его мнение заслуживает ровно столько внимания, как и любое другое.
> Линус - не эксперт по С++,Он - эксперт по ядру ОС. Чем и знаменит. Остальное не роялит. Считаете что на си++ можно сделать ядро лучше? Круто - сделайте Торвальдса и прочих, тогда и поговорим.
Нет, не считаю и выше об этом прямо сказал.
Сейчас же сказал, что аргументированно ругать С++ Линус может только в своей конкретной нише - низкоуровневые утилиты, драйвера, ядро. И это не "ненависть", а вполне практичное и здравое заявление о непригодности инструмента к конкретному использованию.
А любые обобщения и додумывание того, чего он не говорил - ложны.
> Нет, не считаю и выше об этом прямо сказал.Ну и отлично, тогда квиты :)
> Сейчас же сказал, что аргументированно ругать С++ Линус может только в своей
> конкретной нише - низкоуровневые утилиты, драйвера, ядро.Так никто и не спорит что гамезы, особенно с всякими там юнитами 200 типов, которые похожи друг на друга как 2 капли, но вот тут и там пара атрибутов чуть иная и пара действий новые - самое оно на си++ писать. На сях такое писать будет довольно утомительно. А на чем-то кроме си++ получается тормознуто. Поэтому игрушечники дружно любят си++ :). А системщики - си. Прикладушники - в зависимости от все что угодно, от ассемблера до питона^W гугловского, визуального, как его там, в соседней новости :)
> И это не "ненависть", а вполне практичное и здравое заявление о непригодности
> инструмента к конкретному использованию. А любые обобщения и додумывание того,
> чего он не говорил - ложны.Так я вроде и не обобщал. Хотя может быть это кто-то другой сделал...
>но вот тут и там пара атрибутов чуть иная и пара действий новыеАтрибуты - поля структуры, методы - указатели на функции, работающие со структурой. Все плюсы сиплюсплюс заключаются в автоматическом управлении таблицей методов и синтаксическом сахаре вроде struct->function и struct.function. Всё.
> Ну, и средняя компетентность С-программистов красноречиво показывает, что быдлокодеров среди них куда меньше, чем в целом по отрасли. Язык обязывает.И при этом создают столько уязвимостей что их на всех остальных хватает. Как выясняется изначальную негодность инструмента скомпенсировать ничем невозможно.
> И при этом создают столько уязвимостей что их на всех остальных хватает.(глядя на новость про дыру в Ruby) почему-то так получается что уязвимости - они не только в сишных программах. Ну вон в вебне навалом уязвимостей и без всяких сей. Как же так? :)
> Как выясняется изначальную негодность инструмента скомпенсировать ничем невозможно.
Сразу видно овоща который думает что инструмент сможет компенсировать его тупизну и халатность...
>> И при этом создают столько уязвимостей что их на всех остальных хватает.
> (глядя на новость про дыру в Ruby) почему-то так получается что уязвимости - они не только в сишных программах. Ну вон в вебне навалом уязвимостей и без всяких сей. Как же так? :)Ну можете сами поглядеть на чем ваш руби сам написан, если до этого такая мысль никогда ни в какое место не приходила
https://github.com/ruby/ruby/commit/e39eb9dab50eaa681467e511...
Но вы не стесняйтесь, излагайте свое компетентное мнение о проблемах овощеводства и дальше, уважаемый агроном.
Если немного подумать головой, легко прийти к мысли, что ошибки в программах, о которых широко известно - это ошибки в широко используемых программах.
То, что нет новостей об уязвимостях в критичном по безопасности ПО, написанном на чем-то, кроме С/С++, говорит в первую очередь о том, что критичное ПО пишут именно на С/С++.
Вот и вся "статистика".
> Ну можете сами поглядеть на чем ваш руби сам написанВы еще скажите что заткнутая дырка как-то связана с тем на чем он написан, уважаемый гастроном :)
> о проблемах овощеводства и дальше, уважаемый агроном.
Да, вот чего-чего, а овощей на опеннете почему-то хватает. Кстати вы один из них.
> И что он неправильно сказал? Если в гамезе могут быть задрюченные алгоритмы и сложные конструкции, то вот в ядре всего этого следует максимально избегать. Ну и си++ там поэтому никуда не уперся.Возобновлено соревнование по написанию самого запутанного кода на языке Си
http://www.opennet.me/opennews/art.shtml?num=32294
> Возобновлено соревнование по написанию самого запутанного кода на языке СиТехническая возможность просверлить себе сдуру руку дрелью еще вовсе не обязывает меня начать это делать.
>Техническая возможность просверлить себе сдуру руку дрелью еще вовсе не обязывает меня начать это делать.Меня ну совершенно не интересуют ваши возможности и обязательства. Ну абсолютно не. Речь о глупейшем утверждении вашем и Линуса что на ц++ обязательно писать запутанно, а на ц это типа почему то не получится. Вот этом вот
> И что он неправильно сказал? Если в гамезе могут быть задрюченные алгоритмы и сложные конструкции, то вот в ядре всего этого следует максимально избегать. Ну и си++ там поэтому никуда не уперся.
Не ну я понимаю что лучше не писать на обоих этих языках, но это уже другая история. А так ессно понятно что на ц++ легче написать незапутанную программу чем на ц. И естественно язык реализации ну вообще никакого отношеня к сложности нужных алгоритмов не имеет.
> ... абсолютно ... обязательно ... И естественно ... ну вообще ...Очевиднейший вброс без каких-либо попыток подкрепить пафос пруфами и логикой. Новичок?
> Меня ну совершенно не интересуют ваши возможности и обязательства. Ну абсолютно не.Да я вообще так, кушаю с толстого и неопытного нуботролля.
> Речь о глупейшем утверждении вашем и Линуса что на ц++ обязательно писать запутанно,
> а на ц это типа почему то не получится. Вот этом вотВ конкретно кернеле операционки этот ваш си++ нафиг не уперся и создаст больше проблем чем решит. В некоторых местах си++ смотрится лучше сей, например игры с почти однотипными юнитами которые отличаются парой характеристик, парой умеемы действий да еще чем по мелочи. На голом си такое писать геморнее было бы.
> Не ну я понимаю что лучше не писать на обоих этих языках,
Ну так не пишите, а мне на си вполне нравится и я как-то не вижу вот так сходу ничего лучше для системного программирования. Ассемблер? Геморнее и не кроссплатформенно.
> но это уже другая история. А так ессно понятно что на ц++ легче написать
> незапутанную программу чем на ц.Да, конечно. Например, угловые скобки используются неоднозначным способом. Оно и в си то уже было так, так что на некоторых конструкциях можно словить mindf#ck. А в си++ еще сверху добавили, так что иную конструкцию без поллитры вообще не разберешь.
> И естественно язык реализации ну вообще никакого отношеня к сложности нужных алгоритмов не имеет.
Cпасибо, Кэп!
Only Assembler. Only Hardcore!
> Only Assembler. Only Hardcore!Надеюсь, ты это писал из Menuet OS :)
У Менуэта 64 закрытый исходный код и запрет на изучение, декомпиляцию и пр. ядра, а вот Колибки под GPL. Ой... А Колибри то сдохла... RIP.
> У Менуэта 64 закрытый исходный код и запрет на изучение, декомпиляцию и пр. ядра,Я так расстроен по этому поводу что по давней традиции сбрею брови :'(. Ведь мне так не хватало исходников этого неуловимого 64-битного Джо...
> У Менуэта 64 закрытый исходный код и запрет на изучение, декомпиляцию и пр. ядраЛицензии и запреты на декомпиляцию — удел высокоуровневых программистов. Хардкорным ассемблерщикам они побоку.
> ассемблерщикам они побоку.По местным законам - да, но в США лучше не выезжать. Ну так, на всякий случай.
> Ядро насторожилось...Иди напиши ядро на си++. А лучше сразу на яве, чтоб изен был счастлив. Даже MS не рискнул настолько упороться чтоб ядро на плюсах писать.
Hint: то что хорошо для игрового движка не обязательно хорошо для системного программирования.
> Даже MS не рискнул настолько упороться чтоб ядро на
> плюсах писать.MS, как обычно, пошел ещё дальше в направлении маразма
http://ru.wikipedia.org/wiki/Microsoft_Singularity
> MS, как обычно, пошел ещё дальше в направлении маразмаУ них это бывает - видимо где-то нашли пару не тупых но крейзанутых академиков, которые натирали мозоль на высокие концепции и выср@ли таки сочинение на тему конструирования всяких франкенштейнов.
> Ядро насторожилось...Линус заблаговременно внес в исходники некоторые из операторов ООП в качестве макросов.
ООП конструкции тупо не скомпилятся.
Эдакая защита от шибко умного.
Движок всё равно вещь дюже большая, такое тремя энтузазистами не потянешь. :(
> Движок всё равно вещь дюже большая, такое тремя энтузазистами не потянешь. :(Кармак писал первые движки практически единолично. Более того, он по сути создал этот вид индустрии, придумав ряд алгоритмов которые в ходу по сей день.
>> Движок всё равно вещь дюже большая, такое тремя энтузазистами не потянешь. :(
> Кармак писал первые движки практически единолично. Более того, он по сути создал
> этот вид индустрии, придумав ряд алгоритмов которые в ходу по сей
> день.К сожалению игры состоят не только из движка. Лидерство в области производства и движков, и шутеров на их базе, ID Software под его руководством успешно слила. Но дядька без сомнения великий программист.
> К сожалению игры состоят не только из движка.Перец про движки говорил ;)
Кармак один пишет и ничего.
> Кармак один пишет и ничего.Ну вон тот кодирр - это ж дотнетчик. В дотнете наверное готового класса для какого-нибудь BSP и чего там еще не оказалось. А у таких кодирров - это все, хана: слишком сложно, задача нерешаема в принципе. Это ж не готовый класс дернуть, самому думать надо. А с этим у таких небогато :)