Здравствуйте, Cyberax, Вы писали:
C>А ты напишешь ВЕСЬ Q4 на Питоне? Ведь оптимизация — это не задача.
Что про Питон то речь вести. Ясно, что писать движек на интерпретаторе неразумно дорого. Впрочем как и прикладную логику на С++.
Но какие ты видишь проблемы чтобы написать игру скажем на Немерле. Причем как скрипты, так и львиную долю движка? Ну, скажем если использовать XNA или хотя бы Menaged DX?
Учитывая, что при этом будут покрыты две огромные платформы — Windows и XBox 360, и то что Немерле даст фору обоим упомянутым языкам на их родном поле, то эта идея очень заманчива. Не находишь?
Причем время идет. Прогресс тоже. И скоро будет какй-нить XBox Wow 1024K в котором будет гиг оперативки 40 процессоров и другая круть. К тому времени XNA заматереет и облипнет тучей утилит и библиотек. Основной заботой будет сложность и масштабируемость, а вовсе не выжымание последних битов из последнего байта.
Что думаешь? А?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
konsoletyper wrote: > На C#/Java пока не время. Экспериментировал с C# + ManagedDX. Пока > слабовато, для серьёзных игр не потянет. А Pascal он же слабее C++.
C# в некоторых местах тоже, или нет? Pascal зато читаем человеком. С
приделанной кодогенерацией — можно жить...
Здравствуйте, Plague, Вы писали:
P>Хех, как Вы хитро сюда к разговору Вирта прикрутили, это намек на Оберон? Его простота в отсутствии "Синтаксического оверхеда"?
не нужно.
Впрочем, это, наверное, так интересно...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
VladD2 wrote: > C>А ты напишешь ВЕСЬ Q4 на Питоне? Ведь оптимизация — это не задача. > Что про Питон то речь вести. Ясно, что писать движек на интерпретаторе > неразумно дорого. Впрочем как и прикладную логику на С++.
Просто был выдвинут тезис о том, что оптимизация — это не задача. Я
оспариваю именно этот тезис.
> Но какие ты видишь проблемы чтобы написать игру скажем на Немерле. > Причем как скрипты, так и львиную долю движка? Ну, скажем если > использовать XNA или хотя бы Menaged DX?
Медленнее будет, причем заметно. У меня знакомый товарищ, занимающийся
разработкой игр, уже пробовал XNA Studio — пишется неплохо, но вот
заметно торррмознее.
Так что для этого поколения консолей и PC пока managed в сложных играх
использоваться не будет. В следующих поколениях — возможно, но еще не в
этом. В общем, в 2010 посмотрим.
> Причем время идет. Прогресс тоже. И скоро будет какй-нить XBox Wow 1024K > в котором будет гиг оперативки 40 процессоров и другая круть. К тому > времени XNA заматереет и облипнет тучей утилит и библиотек. Основной > заботой будет сложность и масштабируемость, а вовсе не выжымание > последних битов из последнего байта. > Что думаешь? А?
Ну тут и альтернативные технологии подтягиваются. Мне вот лично нравится
LLVM — на ней можно было бы нормально (а не как в Managed C++)
совместить С++ и управляемые языки.
Подходы .NET и Java к созданию VM мне кажутся тупиком. Гибкости мало.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, jazzer, Вы писали:
J>>Ну и макросы макроассемблера тоже
VD>А как же?
J>>давайте все же разделим, что мы считаем метапрограммированием, а что — нет.
VD>Давай. Мое определение очень точно — это написание программы которая порождает другую программу.
VD>Ты удивишся, но макросы в С — это чистешей воды метапрограммирование. Причем иной раз более эффективное чем последняя версия шаблонов С++. Вот только создающая много проблем и имеющая тучу недостатков.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, jazzer, Вы писали:
J>>Так почему же _сейчас_ все бросились использовать шаблоны и препроцессор для вещей, на которые они изначально не были рассчитаны? Ответ простой: потому что _сейчас_ стало ясно, что без этого не жить.
VD>Это твой взгляд на мир из твоего мира (в котором кроме С++ ничего не видно).
-1. Переход на личность.
Остальное поскипано как не противоречащее моим высказываниям.
VD>Если уж мы хотим иметь встроенные в язык средства метапрограммировани, то разумно было бы хотеть так же, чтобы метапрограммы писались на том же языке, что и обычные. В Лиспе — это так. В Немерле — это так. А вот в С++ — это не так. В нем как бы был нйден новый куций функциональный язык реализованный как побочный эффект от рекурсивного определения шаблонов. И это совсем не тот же язык что С++. Плюс к тому же он интерпретируемый и очень ограниченный как в выразительном плане, так и в функциональном. Попробуй, например, с его помощью прочитать что-то из внешнего файла.
Все так, и это — недостаток С++, и я никогда не говорил обратного, да и никто (условно, если не брать в расчет фанатов) такого не говорит — всем известно, что метапрограммирование на шаблонах С++ открыли случайно и они не были под это заточены, и никто не говорит, что они жутко удобны или что они все могут.
Именно поэтому комитет по стандартизации с большим вниманием смотрит на все, что происходит в области метапрограммирования (см. цитату с их сайта). Потому что всем хочется иметь нормальные средства поддержки метапрограммирования в рамках самого языка.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, jazzer, Вы писали:
J>>Шаблоны в С++ тоже вон были давно, но применяться для метапрограммирования и программирования в функциональном стиле они стали совсем недавно,
VD>Шаблоны то конечно были. Правда не очено давно (меньше чем существует С++), но вот одна загвоздка. Для их применения в целях метапрограммирвоания не просто шаблоны, а шаблоны допускающие рекурсивное определение, а это появилось в реальных компиляторах только где-то в конце 90-ых прошлого века. Даже VC 6 выпуска 1998 года имел кучу проблем в этой области и реально применяться для этого не мог. Следующая версия VC вышла в 2002 году.
VD>Меж тем макросам С столько же лет как и самому С. И это далеко не первый случай применения специальных мета-языков.
Опять не пойму, с чем ты споришь. Ты меня хочешь в какой-то флейм втянуть, что ли?
Здравствуйте, konsoletyper, Вы писали:
K>>>Движки действительно писать можно только на C++, а жаль . АХ>>Да ладно тебе, можно и на C, С#, Pascal, Java...
K>На C#/Java пока не время. Экспериментировал с C# + ManagedDX. Пока слабовато, для серьёзных игр не потянет.
Хм, MS так не думает: Microsoft XNA. Там спецверсию компактного фреймворка замутили которая и на XBox 360 идет.
K> А Pascal он же слабее C++.
Ну слабее, я вообще эти Паскали-Обероны не люблю, но код там достаточно быстр, так что писать то можно.
Здравствуйте, AVC, Вы писали:
AVC>Здравствуйте, Plague, Вы писали:
P>>Хех, как Вы хитро сюда к разговору Вирта прикрутили, это намек на Оберон? Его простота в отсутствии "Синтаксического оверхеда"?
AVC>Просто там вот это AVC>http://www.rsdn.ru/Forum/Message.aspx?mid=707886&only=1
AVC>не нужно. AVC>Впрочем, это, наверное, так интересно...
Демагогия чистой воды.
В указанном посте описывается чистейшей воды извращение (цитаты: "Что-то вчера взбрело в голову", "заплатка для дебага"), а ты его сюда выносишь как будто все программы на С++ так пишутся.
Здравствуйте, eao197, Вы писали:
J>>В то время рулили всякие алголы и фортраны и прочие PL/1
E>Понятие "рулили" очень абстрактное. То, что большинство программистов в то время выполняли свою работу не на Lisp-е вовсе не означает, что на лиспе вообще не делалось важных и ответственных проектов. Думаю, что таки делались и метапрограммирование при этом использовалось на полную катушку.
Тогда понятие "бронзовый век" тоже очень абстрактное
Потому что наверняка кто-нть где-ть открыл возможность работы с железом.
И на этом основании давайте заклеймим все остальные кузни того времени как не имеющие "базовой вещи" — печи для работы с железом.
С++ вполне соответствовал состоянию индустрии на момент его создания.
Тогда позарез нужен был язык с ООП.
Это сейчас все во всех областях приложения программирования рванули в сторону функциональных языков и метапрограммирования. Ничего подобного, я уверен, в то время не было. Конечно, были отдельные проекты, и вообще разных языков было за сотню, наверное.
Но не было такого, чтобы, образно говоря, программисты стояли на улицах с плакатами: "Дайте нам язык с поддержкой рефлексии и метапрограммирования, без него не жить". А было "Дайте нам язык с поддержкой ООП, но чтоб он не тормозил, как Смолтолк, а работал со скоростью Си".
Скажем (может, сейчас Сергей Губанов подтянется), почему следующая версия Паскаля называлась Object Pascal, а не Meta Pascal?
Раз, как вы утверждаете, был большой запрос на это дело со стороны индустрии и это считалось "базовой вещью"?
Неужели я так криво пишу, что меня вообще невозможно понять?
Здравствуйте, Kisloid, Вы писали:
K>Здравствуйте, jazzer, Вы писали:
J>>Ты не согласен? Старая? И когда же метапрограммирование начало рассматриваться и применяться как полноценный метод программирования наряду с другими? До рождения С++?
K>
K>Впервые термин квази-цитирование был введен известным специалистом в области логики Уиллардом Куини в 1940 году. Куин использовал квази-цитирование для конструирования выражений математической логики. И первым языком, использующим, механизм квази-цитирования стал Lisp разработанный Джоном Маккарти примерно в 1960 году, но внедрен в язык и начал применяться только с середины 70-х годов.
K>(с) мой, отрывок из моей работы
Спасибо за экскурс , но что, разве все программисты после этого сразу сказали: "Вау, как это круто, эй, если кто тут соберется разрабатывать новый язык — имейте в виду, если в нем не будет такой базовой вещи как квази-цитирование, он нафиг никому не будет нужен"?
АХ>Ну если многие использовали (и используют) VC++ 6.0 который абсолютно не соответствует стандарту C++, имеет реализацию STL, в которой течет память, и частенько ICEится, то чему удивляться.
offtop.
Нельзя ли немного подробнее о проблемах с STL? Немного тут отстал от жизни...
Здравствуйте, konsoletyper, Вы писали:
K>Например, почему я должен к статическому члену класса обращаться через "::", а не через "."?
Обращайся через точку, на здоровье Попробуй сначала
K>Зачем дважды дублировать сигнатуру метода в .h и .cpp файлах?
Ну не дважды Одного дублирования вполне достаточно
Потому что в языке есть перегрузка, и компилятору банально нужно откуда-то догадаться, что ты имеешь в виду, определяя функцию f — f(int) или f(double, string). Плюс совместимость с Си?, в которой перегрузки не было, а было хрен знает что вообще без сигнатур. Не хочешь дублировать — пиши в стиле Java, объявляя все в заголовочных файлах.
K>Почему чтобы сделать вложенный неймспейс, я не могу использовать точечную нотацию, а должен вкладывать друг в друга несколько блоков?
Боремся с синтаксическим оверхедом?
K>Почему существуют три различных способа приведения типа?
Исторически (например, совместимость с Си). Они тебе чем-то мешают? Выбери один, которй тебе по душе, и пользуй его — в чем проблема?
K>Почему метапрограммные навороты выглядят так жутко? Почему нет нормального способа прикрутить человеческий GC, свойства, события и т.д. Потому что язык не был на все это рассчитан. Не было в его списке design goals соответствующих пунктов (а вот совместимость с Си была).
А сейчас есть — смотри ссылку в исходном топике.
Времена меняются — меняются и требования.
Успеет С++ измениться, чтоб соответствовать современным требованиям — будет жить.
Не успеет — останется только в legacy-проектах.
K>Впрочем, на все эти вопросы я и сам могу дать ответ. Я так же могу дать ответ на подобные "почему" касательно PHP. Но вот беда: есть языки, к которым подобных вопросов не задаётся.
С этим тоже никто не спорит. К ним задаются другие вопросы (например, почему в Java нет const?)
Здравствуйте, Cyberax, Вы писали:
C>Я вот заявляю, что Оффис без VB в принципе не написать. Иначе как на нем C>макросы писать?
Ну во первых, не VB, а VBA — это очень разные вещи.
Во вторых, интерпретатор VBA — это одна из составных частей офиса, написанная тем же производителем что и офис.
Здравствуйте, IT, Вы писали:
R>>Ну а как насчёт, ну не знаю, доступа к регистрам аппаратуры, или "написания программы на машинном коде" (ну это когда ты пишешь программу на яву, но при этом фактически знаешь, что будет делать процессор).
IT>Попробуй записать на C++ что-нибудь в порт под виндой, а я посмотрю
Запускаю драйвер GiveIO.sys и пишу (inp, outp). Более того, мы даже на C++/CLI это делали