- 1
- 2
- 3
i := -7; // если после этой строчки загнать в отладчик i shr 1, то отладчик покажет -4
i := i shr 1; // после этой строчки i становится равно 2147483644
i := (-7) shr 1; // после этой строчки i становится равно 4
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+101
i := -7; // если после этой строчки загнать в отладчик i shr 1, то отладчик покажет -4
i := i shr 1; // после этой строчки i становится равно 2147483644
i := (-7) shr 1; // после этой строчки i становится равно 4
Delphi7 такой Delphi7...
http://www.gamedev.ru/code/forum/?id=138759&page=25#m367
Тарас любит дельфи.
3D треугольники у меня не пойдут, и вообще софтрендер всегда самый стабильный и надёжный.
Особенно стабильна у него низкая скорость работы, качество и филрейт.
Задач, где нужна именно простая графика - дофига.
Уже сейчас многие расчёты делают на типичной домашней видеокарте и распараллеливают на многоядерные системы. Без шейдеров видяху встретить без шансов. Когда вы будете учитывать наличие видяхи у пользователей, давая им приемлемое качество картинки и разумной скорости при низкой загрузке ЦП?
Это серьёзный повод писать свой квадратноколёсый велик.
>я пишу не только игры
Что например?
>Видеокарта есть не у всех.
Да, согласен. У бомжей, например. Электричество в канализацию не провели и комп не поставить.
Ты так говоришь, будто вывести треугольник дико сложно.
> Что например?
На работе программки.
> Да, согласен. У бомжей, например. Электричество в канализацию не провели и комп не поставить.
Это считать сливом?
У вас на работе нет видеокарты? Это считать сливом? Что-за бомж-организация?
У меня на работе топовая видяха стоит. 8 ядер. 16 гб памяти.
Только не надо ляля, что типа у всех на работах топовые компы.
Можно конкретно услышать про то, что вы делаете? Что эти программки делают?
Но топовые компы только в модных офисах, а на производстве и 400 мгц неплохо.
Зачем заниматься не интересным делом, тем более что за него вам совершенно не платят?
Ну страна тут не причём, но я тоже рад. (:
Но все же вы могли бы найти какую-нибудь более удачную комбинации, где хотя бы оплата была высока.
Вы так говорите, будто каждый день пишите новый софтрендер на работе...
Не пидарас?
Вот, читай: http://www.gamedev.ru/code/forum/?id=152068&page=5#m65
Все эти модные опенглы и директы годятся только для игрушек, в которых пофигу, если что-то заглючило.
Блин, ну НЕТ в софтрендере ничего сложного!
Просто для тебя треугольник нарисовать - это что-то непосильное, вот и пишешь фигню.
Если ты не умеешь писать софтрендеры, то не надо думать, что тут у всех такой же маленький опыт.
Ошибка.
Надеюсь вы не считаете написание софтрендера чем-то выдающимся?
Довольно простенькое дельце. Никакие знания, кроме школьных, для этого не нужны. Только вот время на него, кроме как ради развлечения - тратить не нужно. Займитесь лучше чем то действительно сложным, интересным и оплачиваемым. Хватит работать за еду.
КАКОЕ ВРЕМЯ?
Ты не умеешь писать софтрендеры, если считаешь, что на них надо дохрена времени.
Не трать ни минуты на пустое.
Софтрендеры - простейшая задача. Мы уже это обсудили, она не может занять много времени. Но каждая минута дорога.
Не то оптимизировать пытаешься.
Если никакие преимущества опенгла (типа скорость и навороты картинки) мне нахрен не нужны, то зачем я должен использовать опенгл? Только для того, чтобы не дай бог, не навелосипедить? Тогда зачем вообще быть программистом - все программы давно написаны, мы все тупо велосипедим.
Но они и не помешают если вопрос ставить таким образом.
>зачем я должен использовать опенгл?
Мы же уже решили, что опенгл вам не подходит и нужен софтрендер. Зачем опенгл снова вспоминать?
Просто возьмите готовое решение, а не пишите бесполезный код.
>Тогда зачем вообще быть программистом - все программы давно написаны
Написаны элементы программ. Их нужно просто собрать в единую конструкцию и настроить.
Умение писать велосипеды не ценится ни одним работодателем. Вот почему вы до сих пор пользуетесь компом в 600МГц. (Читал ваше признание на геймдев.ру).
Иногда "Лучше день потерять, а потом за пять минут долететь" (с)
Это как раз относится к использованию готовых средств, а ни к написанию своих.
День разбираешься со средством, за 5 минут пишешь работающую программу.
А не как это бывает у велосипедистов:
Месяц пишешь велосипед. Полмесяца пишешь программу, тк велосипед не удобный и 4 месяца отлаживаешь, потому что велосипед кривой.
Это говорит о том, что вы не знаете предметную область.
Много времени отнимает разбирательство с инструментом, только если нормальные инструменты вы не знаете или не умеете читать чужой код\иностранную документацию.
Если не умете читать код и поддерживать чужие продукты, то такой кодер, кроме как для написания простых программок никуда не годится.
С другой стороны, если у @TarasB есть в наличии собственный движок, уже написанный, отлаженный и пригодный к использованию, почему бы не использовать его? Не нужно тратить время на изучение, написание тикетов и прочие лишние телодвижения. К тому же, он наверняка легче и включает только то, что действительно необходимо именно Тарасу.
Программисты - народ упрямый, вряд ли вам удастся переубедить Тараса. Зачем тратить время? :)
Не. Есть много умных людей, которые могут поменять свою точку зрения, если она не верна.
Практика показывает, что при дальнейшей поддержке, модификации и разрастании продукта, в используемый в нем велосипед приходится добавлять новый функционал, который по прежнему есть в готовом решении, которое мы ранее отбросили, тк в нем есть "лишние", на момент начала проекта, возможности.
Так, каждый раз дописываются новые возможности и новые ошибки в проект.
Готовые решения уже протестированы, а к своему велосипеду приходится каждый раз дописывать все новые и новые Unit-тесты. Это дополнительная трата времени при разработке проекта.
А ведь часто в проекте не один велосипед, а много. В результате затраты времени ещё больше увеличиваются на создание юнит-тестов, поиск ошибок и постоянное допиливание своего велосипеда.
Кстати, убейся со своими минусами.
С какими моими минусами?
Это получается во многих промышленных играх или академических\промышленных исследованиях, притом даже на давно устаревших видеокартах. Вам то этого, не знать TarasB, столько времени проводите на геймдев.ру...
Стандарт не соблюдаются.
> неоправданных тормозов.
Какие тормоза, софтрендер даже на первопнях рисовал сцену в реальном времени (первоквака).
> В данном случае совершенно не оправдано создание велосипеда
У вас велосипедофобия? Тогда не пишите программ вообще.
Это не даёт приоритета софтовому рендереру, когда можно использовать аппаратное решение.
> рисовал сцену в реальном времени (первоквака)
Вне всякого сомнения. Фотореализм нужен школьникам с крайзисами, а для всего остального как раз подойдёт неспешный почти-спрайтовый движочек.
> Тогда не пишите программ вообще.
А я и не пишу.
Я хотел было ответить на остальную часть твоего поста, но после этого я могу только сказать "идите на хуй".
Печально. А я только что рассказывал товарищу выше, что TarasB может быть умным программистом...
Движок кваки у него "неспешный", ага.
Если так, то у него есть все основания учить даже меня.
Молодой человек, не зазнавайтесь :)
Вы уверены? (:
>не зазнавайтесь
И вам того же. (:
После появления @LucidFox я уже ни в чём не уверен.
И ви таки не болейте.
Ага, только графика была далеко не чита современным играм.
>У вас велосипедофобия?
Да, особенно не люблю кривых., полученных в наследство на поддержку от кривописателей, таких как вы, сударь.
>Тогда не пишите программ вообще.
Нормальный процесс написания программ не как не связан с велосипедостроением.
Под велосипедом я понимаю клон некого средства, которое уже есть, при этом оригинал обладает схожими или более хорошими характеристиками.
Но велосипедом не является средство, оригинал которого уже есть даже с гораздо более хорошими характеристиками, но внедрять в проект его нельзя или не желательно по каким то причинам.
Писать велосипеды (в соответствии с приведенном выше понятии) весьма глупо и иррационально.
Ещё глупее писать свой кривой велосипед, кои традиционно и выходят у горе-изобретателей.
Цель настоящего инженера-программиста решить задачу качественно (поддерживаемый код с минимумом ошибок) и с минимальной затратой ресурсов(время и денежных средств).
Дабы было дешевле с точки зрения времени нужно использовать готовые решения, чтобы не писать своё и не тратить время.
Дабы было меньше ошибок и проект было легче поддерживать, нужно использовать проверенное временем и многими людей - готовое решение.
Если решение использовалось многими людьми - оно вылизано с точки зрения удобства использования, а значит дополнительная экономия времени.
Если нет ошибок, тк мы использовали проверенное решение, то опять же меньше времени тратим на отладку - экономия времени.
_______
Цель инженера-программиста достигнута.
А если мне эффекты не нужны?
> Да, особенно не люблю кривых., полученных в наследство на поддержку от кривописателей, таких как вы, сударь.
Процедура вывода треугольника занимает около 100 строк, в ней нечего поддерживать.
> Дабы было меньше ошибок и проект было легче поддерживать, нужно использовать проверенное временем и многими людей - готовое решение.
А вот нифига, не факт. В готовом решении могуть быть свои ограничения.
На то и нужно быть опытным программистом и знать предметную область, чтобы правильно подобрать готовое решение.
Че вы тут флудите?
>Тарас, я держу вас за дурака.
Повторяю, это исключительно ваше мнение.
>Че вы тут флудите?
Оффтопите и флудите здесь Вы. Я лишь устроил конструктивный спор, притом не с вами.
>Че вы тут флудите?
Это не запрещено правилами нашего уютненького форума (:
Вот нафиг оно надо, разбираться в движках, думать, как их соединить, если проще, как говорится, переписать с нуля?
Тем более умение поддерживать чужой код - одна из отличительных черт настоящего программиста, а не кодера.
http://lurkmore.ru/Умение_разбираться_в_чужом_коде
Если в средстве, которое выбрали для использования в проекте, код - полное говно, то средство не верно выбрали. Сами виноваты.
Более того, можно написать велосипед с таким же говнокодом. Жалко должно быть людей, которые его станут поддерживать после вас.
Представляю, увольняется любой работник и каждый раз за ним вновь пришедший работник полностью с нуля переписывает велосипед предыдущего, тк он не понятен. (:
Проект вообще никогда не завершится, тогда. (:
Короче, я тут нечаянно пришёл к тому, что надо вообще всё делать самому, но это не так - просто иногда, в простых случаях, велосипед оправдан. Софтрендер - это простой случай.
Я все же за автомобиль.
Мне кажется, вам не хватает опыта. Предлагаю закончить спор, тк больше я не слышу аргументов.
Большое спасибо.
Первый признак нехватки опыта - это бездумное следование правилам и непонимание того, что из них бывают исключения. Например, "нельзя использовать ГОТО", "нельзя изобретать велосипеды" и так далее. Так как тут народ взрослый, то тут можно, не стесняясь, говорить, что иногда таки можно.
С чего вы взяли, что я всегда следую правилам? Есть такие ситуации, где этого не достаточно. Я говорил про часто появляющиеся в разработке случаи. Конечно есть исключения. Только вот когда вместо применения правила всегда используют исключение из него, то в этот момент все проекты начинают попахивать и плохо кончать.
Ну если вы не знаете предметную область достаточно хорошо (не знаете хороших средств), то я с вами согласен. Разбираться в предметной области будет гораздо сложнее, чем написать свое небольшое говнецо. Хотя это не отменяет затрату времени на его тестирование, но если оно действительно не большое, то это не должно быть слишком долго.
про велосипеды же - видел как случаи оправданного использования велосипедов, так и неоправданного.
хотя, все случаи оправданного использования подпадают под "по каким-то причинам использовать нельзя" или "в данном конкретном случае является существенно более эффективным, но менее универсальным". последнее вообще велосипед?
Однако в процессе ознакомления с готовыми решениями был получен опыт, который позволил четко поставить задачу и решить ее. без этого свое решение оказалось бы типичным убогим велосипедом.
Горе-проектировщик. Что сказать ещё...
а проектирование да, было никакое, а пнуть тогда не мог - только начал работать
Ну требования к ПО изменились и все - что сделать? не делать, бья пяткой в грудь, что это не было обговорено (и конечно не предусмотрено) - так доплачивают же. начальство пинает и вперед. Сами скорее всего с таким сталкивались, если за живые деньги софт писали.
И ещё одна польза есть от готовых решений. Использовать готовое решение как временную затычку ещё не написанного функционала при ограничении на время выпуска первой версии продукта.
Тогда это не велосипед. Я уже говорил.
Велосипед есть велосипед независимо от того, насколько оправдана его разработка. А вот спор об необходимости написания именно велосипеда - это уже другая тема.
Да. "Велосипед" оправдан обычно только в том случае, если нет других его аналогов, подходящих для проекта. Если аналогов других у данного средства нет, то и назвать это велосипедом нельзя, тк ты не изобретаешь его повторно. Этого средства раньше ведь не было.
В идеальном мире - да, только аналоги не всегда есть, подходящие для разрабатываемого проекта. К сожалению...
опенгл без шадеров последней версии беспроблемно запускается практически на любой платформе уже как лет десять; там и софтверная реализация есть, если карта не поддерживает вдруг.
сам себе злой.
Про глюки видях фирмы "Интел" внимательно читал?
школьник, которому мама купила высокопроизводительную платформу класса «Писюк» детектед
> не качественный
унд конфирмед.
:-P
Или вы хотите, чтобы я вам тоже посочувствовал?
Просто почаще заходите в тред и привыкайте к смайлоатмосфере.
На худой конец можете уйти с говнокода, но этот вариант я не рекомендую.
Капча 6667, почти
Я просто применил идиоматическое выражение.
>У тебя вот фобия к софтрендеру
Не. У меня фобия к квадратноколёсым велосипедам.
DD7 Blt хотел сказать.
в строке 3 сдвиг происходит средствами среды, а в компилированном коде готовый результат.
Можно заставить некоторые из этих выражений вычисляться одинаково в неоптимизированном коде, переписав модуль System.
i:=-7;
i:=integer(i) shr 1 = 2147483644;
integer(-7) shr 1 даст -4
const a = -7;
i = -7;
i shr 1 = 2147483644
a shr 1 = -4
i shr 1 приводит к генерации кода, сдвигающего значение i. Прикол в том, что код, вычисляющий значения во время компиляции, и генерируемый код не совпадают.
Что об этом пишут в спецификации?
Будет, очевидно, целое с разрядностью платформы, то есть 32 бита.
В C, C++ и некоторых других языках константы разного типа отличаются и вычисления с ними идут как с целыми этого типа. В Go явно сказано, что все целые константы и константные вычисления идут с неограниченной длиной, а обрезаются уже потом. И это правильно.
int j = -7;
j=j >> 1; //-4
-7 >> 1 = -4
В каком-то говнокоде вроде обсуждалось переполнение целых?
В новых версиях этот прикол "исправили" - теперь отладчик тоже показывает 2 миллиарда. Короче, по-прежнему для знаковых чисел делается shr бля.
Будет сравнение на отрицательность, прибавление единицы в случае отрицательности, и только потом сар. И всё это для того, чтобы совпасть с блядским делением по-интеловски.
ну тогда пишите на асме:)
ибо (i and $80000000) or (i shr 1) совсем уж уродливо
http://62.166.198.202/view.php?id=17710