Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, dr.Chaos, Вы писали:
DC>>Влад удобнее хотя бы потому, как это проверенный временем инструмент.
AVK>Да, Влад безусловно проверенный временем инструмент А для чего он удобен, если не секрет?
Как для чего? Для разведения флейма .
ЗЫ Если уж придираться к орфографии и грамматике, давай придираться ко всем .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, VladD2, Вы писали:
E>>Даже не знаю, что сказать. У нас эта цифра составит, наверное, процентов 10.
VD>Извини, но мой опыт не позволяет мне с тобой согласиться.
С чем конкретно ты не согласен? С тем, что у нас на проекте так обстоят дела? Извини, но в этом вопросе я считаю себя более осведомоленным. Ты, конечно, можешь мне не верить, переубеждать не буду.
VD>Да и доверия этому товарищу все же больше. Как ни как в Анрыл я играл чуть ли не 10 лет назад.
Ты в курсе, что анрил, о котором рассказывается в презентации — вовсе не тот, в который ты играл?
Это новый движок, на котором пока сделана только одна игра — упоминаемая Gears of War.
E>> Утечки в начале были, но после того, как всем программистам объяснили, что такое смартпоинтер, об утечках тоже забыли и не вспоминают уже года два.
VD>Вот она ключевая фраза — "уже года два"! То есть вы убили время еще тогда, и теперь еще 2 (!) года возитесь с проектом! А могли бы ВООБЩЕ не возиться с этими проблемами!
Тебя шокировала цифра "2 года"? А ты знаешь, что движок, о котором рассказывается в презентации, делали 5 лет? А потом еще два года первую игру на нем?
<живописуемые ужасы C++ поскипаны>
У меня есть два предложения, касательно дальнейшего разговора, исключительно для экономии времени и чтобы не повторяться, предлагаю:
— не нужно рассказывать мне, чем плох C++, я в курсе;
— не нужно рассказывать мне, что происходит у меня на проекте, я это знаю лучше, чем ты.
E>>У нас главная проблема — это макароны и все, что с ними связано.
VD>А ты представь себе на минуточку, что автор презентации организовал работу так, что код у них стал хорошим. Вот он и высказывает свои мысли о том как еще улучшить процесс разработки.
E>> Неправильная декомпозиция или ее отсутствие. Решения типа "сейчас пускай заработает, а потом я сделаю правильно" (а потом он уволился). Куски кода, к которые последовательно приложило лапу 2-3-4 человека, и никто уже не помнит, что он там и зачем делал.
VD>Это тяжело объяснить, но поверь, все перечисленное тобой умножается на проблемы языка. Вот вы и получаете 2 года разработки после того как какзалось бы всем все объяснили.
Мы объяснили им это через пару месяцев после начала кодинга, после того, как в первый раз запустили Bounds Checker и увидели лики. Поверь, 2 года — не очень большой срок для разработки игры, те же Half Life 2 и Doom 3 делали дольше в разы.
VD>К тому же ты вдумайся в свои слова "объяснили всем что надо". Это значит, что вы ограничили язык до некого сабсета. Причем контролирвать это будут люди. Ты конечно потом сможешь позлорадствовать, что мол эти козлы наколбаслии, да я бы такоего никогда не допуситл... но время уйдет. По этому все что может контролировать машина должна контролировать машина. А твоя задача сфомрмировать процесс производства ПО так чтобы этот контроль был. Сюда входит выбор инструмента, и выработка тех.процессов.
С этим согласен. Лучше бы язык был получше, побезопасней, повыразительней. Я же с этим не спорю. Я только говорю, что работать на С++ можно и не так все страшно. Когда проект начинался, выбирать было особо не из чего, C# был 1.0, на Джаве страшно тормозил соседний проект, о Немерле никто и не слыхал. На чем я буду писать следующий зависит не столько от меня, сколько от того, кто у меня будет работодатель
Игроделанье оказалось ужасно неблагодарным занятием
E>>Идею, которые ты двигаешь в массы, я понял уже давно Но, как видно из начала сообщения время уходит не столько на борьбу с С++, сколько на борьбу с ошибками проектирования и организации разработки.
E>>На самом деле, идея попытаться переписать менее критичную по производительности часть проекта на C# когда-то была, но было не вполне понятно, как совместить управляемый код с неуправляемым, ну и времени, как обычно, не хватило.
VD>На самом деле это не сложно. Но C# вам даст меньший выигрышь нежели Nemerle. Так что если убить некоторое время (возможно по вечерам) на его изучение, то глядишь следующий проект не будет делаться более двух лет.
Самообразование — это правильно. Вот только дочитаю вон тот томик по теории алгоритмов, и непременно возьмусь за Немерле. Или за Хаскель. Или еще за что-нибудь
E>Самообразование — это правильно. Вот только дочитаю вон тот томик по теории алгоритмов, и непременно возьмусь за Немерле. Или за Хаскель. Или еще за что-нибудь
Здравствуйте, WolfHound, Вы писали:
VD>>>Извини, ты смарт-поинтерами пользуешся? A>>Очень редко, поскольку у меня нет проблем связанных с утечкой ресурсов под указателями. Но не отвергаю их с определенным количеством оговорок. A>>Задавай вопрос целиком. Учитывая оболочку в которой мы общаемся — это расточительство. WH>Первое же залетевшее исключение...
Краткость — сестра таланта. Хоть уже и близко не лежит в контексте обсуждения, но причины и первого и последнего мне понятны.
Андрей, даже искренне уважая стремление и тебя и всех остальных достичь истины, мне кажется это уже не имеет к данной теме ни малейшего отношения.
Здравствуйте, BulatZiganshin, Вы писали:
E>>Самообразование — это правильно. Вот только дочитаю вон тот томик по теории алгоритмов, и непременно возьмусь за Немерле. Или за Хаскель. Или еще за что-нибудь
BZ>что за томик?
Ничего особенного, один из многочисленных седжвиков. Почувствовал себя неучем в алгоритмах, устроил себе ликбез.
BZ>кстати, весьма фундаметальная книжка — http://greenteapress.com/semaphores/downey05semaphores.pdf . как вы понимаете, про те самые старые способы распарралеливания программ
За книжечку спасибо.
Здравствуйте, Alexmoon, Вы писали:
VD>>>>Извини, ты смарт-поинтерами пользуешся? A>>>Очень редко, поскольку у меня нет проблем связанных с утечкой ресурсов под указателями. Но не отвергаю их с определенным количеством оговорок. A>>>Задавай вопрос целиком. Учитывая оболочку в которой мы общаемся — это расточительство. WH>>Первое же залетевшее исключение... A>Краткость — сестра таланта. Хоть уже и близко не лежит в контексте обсуждения, но причины и первого и последнего мне понятны. A>Андрей, даже искренне уважая стремление и тебя и всех остальных достичь истины, мне кажется это уже не имеет к данной теме ни малейшего отношения.
Ты на конкретный вопрос ответь: Как ты с исключениями то живешь? Или ты их не используешь?
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, lomeo, Вы писали:
L>Здравствуйте, jazzer, Вы писали:
J>>Я просто смотрел на страничку по ссылке про евро, там было нечто вроде (euro=|>)
J>>d x |> c |> b |> a
J>>Что, очевидно, хуже того, что выше
L>Для меня неочевидно Имхо, одно и то же.
ну мне показалось, что нельзя написать x |> d |> с и т.д.
Если можно — все ОК, просто это непонятно из статьи.
Если нельзя — это нерегулярность синтаксиса, которая бьет по глазам.
Все остальное — понятно Надо будет внимательнее посмотреть на Хаскель. Интересно, навыки программирования Математики пригодятся или нет?
Хотя, в любом случае, не очень понятно, как его сопрягать с существующими системами и инфраструктурами (которые на C/C++).
В Математике все просто было, хоть и через одно место — можно было очередную функцию определить как принимающую только аргументы определенного типа, и сказать, что она определена в DLL, после чего, заюзав MathLink (если я правильно помню название их API), написать эту самую DLL, которая быстро посчитает то, что нужно, без всяких маршаллингов и прочего (в моем случае это был поиск нескольких собственных значений и соответствующих векторов одной охренительных размеров матрицы — это я диссер считал)...
Соответственно если ейный ФП-движок принимал решение, что надо позвать именно эту функцию — начинала работать функция из DLL.
Как с этим в Хаскеле? Если в двух словах? Офтопик, конечно... Хотя в "Философии", наверное, можно...
Здравствуйте, WolfHound, Вы писали:
WH>Ты на конкретный вопрос ответь: Как ты с исключениями то живешь? Или ты их не используешь?
На конкретный вопрос, конкретный ответ.
Использую конечно. Куда же без них родимых. Скажу больше, я их даже бросаю их иногда для выявления собственных ошибок, вот только знаю куда и что необходимо сделать в точке перехвата. Мое извращение дошло до того, что я даже поинтересовался какие обертки строит компилятор для их реализации, чтобы спать спокойнее и не я вам открою тайну там сюрпризы есть. На ответ, нравится или нет, отвечу. Совершенно спокойно к этому отношусь. просто считаю за должное знать.
Андрей. Честно, положа руку на сердце. Это уже не к месту. Я отвечу на все твои вопросы, но уже при личной встрече. Если столбик термометра перевалит за 800 — это уже лишнее для чего угодно.
Здравствуйте, Alexmoon, Вы писали:
A>Использую конечно. Куда же без них родимых. Скажу больше, я их даже бросаю их иногда для выявления собственных ошибок, вот только знаю куда и что необходимо сделать в точке перехвата.
А между точкой выброса и точкой обработки как ресурсы освобождаешь?
Лично я не представляю как в присутствии исключений без оберток можно надежно освобождать ресурсы.
Вернее знаю один способ но уж лучше обертки.
A>Андрей. Честно, положа руку на сердце. Это уже не к месту. Я отвечу на все твои вопросы, но уже при личной встрече.
Это весьма маловероятное событие.
A>Если столбик термометра перевалит за 800 — это уже лишнее для чего угодно.
Ты про колличество сообщений в теме? Так это же флейм.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
J>>>d x |> c |> b |> a
J>ну мне показалось, что нельзя написать x |> d |> с и т.д.
посмотри на его объявление:
a |> b = b a
его чисто синтаксически можно подставить:
x |> d |> с
превращается в
(d x) |> c
а это в свою очередь в
c (d x)
J>Все остальное — понятно Надо будет внимательнее посмотреть на Хаскель. Интересно, навыки программирования Математики пригодятся или нет?
J>Хотя, в любом случае, не очень понятно, как его сопрягать с существующими системами и инфраструктурами (которые на C/C++). J>В Математике все просто было, хоть и через одно место — можно было очередную функцию определить как принимающую только аргументы определенного типа, и сказать, что она определена в DLL, после чего, заюзав MathLink (если я правильно помню название их API), написать эту самую DLL, которая быстро посчитает то, что нужно, без всяких маршаллингов и прочего (в моем случае это был поиск нескольких собственных значений и соответствующих векторов одной охренительных размеров матрицы — это я диссер считал)... J>Соответственно если ейный ФП-движок принимал решение, что надо позвать именно эту функцию — начинала работать функция из DLL.
J>Как с этим в Хаскеле? Если в двух словах? Офтопик, конечно... Хотя в "Философии", наверное, можно...
буквально сегодня отвечал
> I would like to use FFI for the first time. Can someone > give me a really, really simple complete example?
Здравствуйте, VladD2, Вы писали:
VD>>>К сожалению они добились полностью протевоположенного результата. DC>>Какого? Переносимости на уровне исходников нет? . VD>Ага. Странно что ты считашь себя С++-программистом и не знал этого. Полной переносимости нет, так как компиляторы не реализуют стандарт, и так как стандарт изобилует кучей мест где возможно UB. Про то что такое UB объяснять надо?
Это точно.
Вот сейчас думаю как заставить FreeImage не сваливаться в terminate под gcc 3.3 при обработки битых картинок.
Хотя на VC++8 все работает как часы.
А все по тому что VC++8 дает по сишным функциям летать исключениям, а gcc нехочет ни в какую.
И все из-за разработчиков libjpeg
/*
* Error exit handler: must not return to caller.
*
* Applications may override this if they want to get control back after
* an error. Typically one would longjmp somewhere instead of exiting.
* The setjmp buffer can be made a private field within an expanded error
* handler object. Note that the info needed to generate an error message
* is stored in the error object, so you can generate the message now or
* later, at your convenience.
* You should make sure that the JPEG object is cleaned up (with jpeg_abort
* or jpeg_destroy) at some point.
*/
METHODDEF(void)
error_exit (j_common_ptr cinfo)
{
/* Always display the message */
(*cinfo->err->output_message) (cinfo);
/* Let the memory manager delete any temp files before we die */
jpeg_destroy(cinfo);
exit(EXIT_FAILURE);
}
а разработчик FreeImage'а на радостях начал из этой функции исключения кидать.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Ну-ну, вон три человека сумели компилятор С++ с экспортом шаблонов написать, да еще и на С. Наверное, справились бы и с немерле.
Здравствуйте, jazzer, Вы писали:
J>Все остальное — понятно Надо будет внимательнее посмотреть на Хаскель. Интересно, навыки программирования Математики пригодятся или нет?
Пригодятся. В Математике тоже используются функции высшего порядка и, кажется, частичное применение. На самом деле, до монад Хаскель пролистывают очень быстро и думают — что за игрушечный язык?
J>Хотя, в любом случае, не очень понятно, как его сопрягать с существующими системами и инфраструктурами (которые на C/C++).
Про FFI уже Булат сказал. Я, к сожалению, не успел
Здравствуйте, Sinclair, Вы писали:
A>>Нету. Представьте себе. Снег — это то что мы таковым назвали исходя из определенных характеристик свойственных такому состоянию среды. S>Ну, начинается.
Продолжается. Кидаясь не привязанными к контексту обсуждения понятиями, вы просто обязаны ожидать соотвтетствующих ответов.
S>>>Вот это утверждение хотелось бы как-то обосновать. Кто гибче — С или С++? А ведь С++ лаконичнее! A>>Обосновывать это можно до бесконечности. Для этого как минимум должны быть взаимосогласованные определения. Их не было и не будет. Всех нас всегда будет что то не устраивать. Здесь нечего ответить, поскольку поставьте вопрос на абстракцию выше и вы поймете почему все от всего зависит и выиграть во всем абсолютно не возможно. Каждый выбирает обязательные критерии сам. Главное чтобы выбор был. Вы еще помните концепцию начала и в чем конечный вывод должен состоять? S>Перечитал три раза, ничего не понял. Попробуй сосредоточиться и ответить на два вопроса: какой из языков гибче — С или С++? Какой из языков лаконичнее?
Смотря что вы хотели понять и сочетается ли это с тем, что я хотел объяснить.
Для меня это вообще не вопрос, а для вас лишь скажу, что проанализировав все выше или ранее сказанное, вам достаточно информации для того чтобы сделать свой собственный вывод.
S>Поясняю: все эти "условно-одинаковые" подходы одинаковы только математически, при пренебрежении стоимостью разработки. На практике выигрывает та техника, которая позволяет сделать разработку дешевле. В основном за счет сокращения объема кода (в лексемах, естественно, а не в байтах) и автоматизации QA. S>Нельзя отвлекаться от цели при анализе языков программирования. Все эти class, private, protected, namespace — они не сами по себе. Они только для того, чтобы сделать разработку дешевле.
Поясняю: все эти "условно-одинаковые" подходы одинаковы только математически, при пренебрежении стоимостью разработки. При пренебрежении стоимостью разработки, качество не константно, поэтому только данный аргумент никакого отношения к абсолютному определению коэффциента выиграша не имеет. За счет сокращения кода в лексемах, выиграет только адресное пространство жесткого диска. Автоматизация QA вообще к используемому средству не привязана никак. Если этот вывод не очевиден кому либо, то и я здесь помочь не смогу. Такова селяви.
Все эти class, private, protected, namespace — они не сами по себе. Они только для того, чтобы сделать разработку дешевле.
Вау. А я думал что для определения пользовательских типов, уровней доступа и локализации пространств имен. За уточнение спасибо. И они не эти. Я их уважаю.
S>Это обязательно? Сильна страсть к математике? Или неочевидно, что из этого компактнее: S>
obj->>class->method(obj, 1);
obj->>method(1);
S>
При наличии условия или мне достаточно ответить на один из вопросов условия? Отвечаю. Сильна страсть к математике. Если что то не так, то я тогда вас не понимаю аналогично тому, как вы меня. Неочевидно?
S>? Или непонятно, вызов какой из функций будет лучше проверен компилятором: S>
S>add(a, b)
S>{
S> int a;
S> int b;
S> return a+b;
S>}
S>
S>или S>
S>int add(a, b) { return a + b; }
S>
Вообще исходя из условия выше, я мог не отвечать на эту часть общего вопроса, но ладно. Мне понятно. Только я три раза прочитал и так и не понял, к какому компилятору то вопрос. Я вроде бы не говорил, что я компилятор.
A>>Запросто. Помимо человеко-лет есть набор составляющих уравнения, которые позволяют откатить человеки годы до вменяемой составляющей с учетом определенного уровня владения. S>А можно то же самое по-русски? Ниче ведь не понятно: что такое "откатить"? Эаплатить откат? И что такое "вменяемая составляющая"? А что значит "учет определенного уровня владения"? Это что-то из бухгалтерии?
А я на каком языке написал. Странно. С кодировкой проблем не замечено. Не нравится откатить, закатывайте. О деньгах речи не было. Это не из бухгалтерии, а из юриспруденции. Уровень владения теми или иными вещами напрямую зависит от уровня занимаемой должности.
Не смешно? А мне смешно. Что будем делать?
Антон. Я сказал, что хотел уже давно. Ни в ваших словах, ни в моих откровенной лжи или некомпетентности замечено не было. Еще вопросы? Все всем давно ясно. От флейма я устал.
Чтобы вы не воспринимали все на личный счет еще раз поднимем бакалы
Не нужно так ставить вопросы, если вы не готовы принять такие же ответы. Ничего личного, только конструктивное общение.
Здравствуйте, BulatZiganshin, Вы писали:
BZ>create_archive_structure | read_input_files | compress | write_to_archive
BZ>в свою очередь, compress разделяется ещё на несколько тредов, последовательно сжимающих данные. разве это не красиво? и позволило мне это реализовать именно наличие higher-order funcs. я думаю о своей программе не в плане отдельных значений которые нужно обработать, а в плане алгоритмов, из которых конструируются более сложные алгоритмы, при этом средства их конструирования также являются алгоритмами. вот это и есть метаподход к программированию на уровне хаскела
BZ>при этом одновременно я пишу и на C, так что могу сравнивать
Ты один работаешь или в команде?
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен