Войти
ФлеймФорумОбщее

Как у вас дела с движками? (58 стр)

Страницы: 157 58 59 60124 Следующая »
#855
15:12, 5 апр. 2019

FlyOfFly
> Разжигать огонь палками, когда всю жизнь пользовался зажигалкой это как раз
> возможность сойти с ума
В чем же отличие "BASIC-палок" от "BC-зажигалки"?
C умеет две суперважные вещи:
1. Масштабировать данные/код, собирая крупные структуры и ф-ии из мелких...
2. Свободно оперировать адресами данных/кода, позволяя создавать объекты с динамически изменяемым поведением...
Но нужно ли это для такой простой задачи? Нет. Как я показывал в своих заметках, фантазия игродела иссякает в RPG раньше, чем слабые возможности BASIC. И это нормально, т.к. компьютерные RPG - лишь упрощенная версия настольных. Даже Эдвенчуры и Квесты более требовательны к языку.

FlyOfFly
> сейчас писать на basic даже такой уровень это возможность сойти с ума.
Дык, какая разница, если, все равно, никто ничего не пишет?


#856
15:13, 5 апр. 2019

beejah
> Это больше для вывода.
Гм, а почему? Строку можно рассматривать как десятичную плавучку (переменной точности); собственно, IEEE-754 её отчасти так и рассматривает. Соответственно, почему в преобразовании двоичная<->десятичная плваучка должна быть асимметрия?

> И вот понятия не имею, что это за такие задачи, где флотовые данные, с одной стороны, гоняются текстом, с другой - погрешность этого перегона в принципе может быть соизмерима с известной, заданной и необходимой к определению априори погрешностью решения прикладной задачи.
Ну, банально, round-trip. Т. е. раз мы (по каким-то жизненным причинам; например, живём в стране победившего JSON) сдампили плавучку текстом - хочется прочитать обратно то, что сдампили.
Да, для round-trip не требуется correctly-rounded, там более щадящие требования.

Одно из следствий correctly-rounded - детерминизм, чего иногда хочется.

Т. е. вот тупо парсинг констант в компиляторе - если в коде написана какая-то константа, таки хочется, чтобы компилятор её однозначно преобразовывал в один и тот же double (чего на практике нет; разные компиляторы делают по-разному). Благо математически задача "найти ближайшее в выбранном направлении округления представимое плавучее число к данной конечной десятичной дроби" имеет однозначно определённое решение, и хочется именно его и получить.
Пример, когда значения констант важны - ну хоть бы и математические библиотеки, где их значения выверены по последнего бита для обеспечения заявленной точности функций. Да, там опять же (если константы "правильно" выводить) требования более мягкие чем correctly-rounded. Но они есть.

#857
15:13, 5 апр. 2019

gudleifr
> Весь прогресс свелся к наполнению контентом.
Да, ковырятелей пальцем в заднице он почему-то обошел сороной.

#858
15:15, 5 апр. 2019

beejah
> Да, ковырятелей пальцем в заднице он почему-то обошел сороной.
Опять Вас кинули?

#859
15:18, 5 апр. 2019

gudleifr
>
> Но нужно ли это для такой простой задачи? Нет. Как я показывал в своих
> заметках, фантазия игродела иссякает в RPG раньше, чем слабые возможности
> BASIC. И это нормально, т.к. компьютерные RPG - лишь упрощенная версия
> настольных. Даже Эдвенчуры и Квесты более требовательны к языку.
А я не говорил про возможности. А Про удобство и читабельность при увеличение кода .

#860
15:24, 5 апр. 2019

В общем.
Кроме практических соображений, отчасти correctly-rounded - это эстетство, да.

Но в данном случае (float<->string) требовать его мне кажется более осмысленным, чем во многих других случаях (sin, atan2, и т. д.). Потому что:
1. Детерминизм. Который имеет больше шансов быть важным.
2. Правильный ответ однозначно определён и не слишком дорого находится (казалось бы для, например, sin то же самое, но при повышении точности до quad - уже сложнее).
3. Round-trip всё-равно нужен. А чем его специфицировать (что требует определения одновременно пары функций, или обтекаемых формулировок "будучи прочитан обратно любой нормальной реализацией, даёт то же значение"), можно тупо потребовать correctly-rounded.

Ну и есть функции, для которых требовать correctly-rounded - прямо-таки необходимо. Например, некорректно округленный floor мне не слишком интересен. Или fmod (благо там то, что результат точно представим - основная причина вообще существования этой функции). Да и базовые арифметические операции хотелось бы correctly-rounded.

#861
(Правка: 15:28) 15:25, 5 апр. 2019

FlyOfFly
> А Про удобство и читабельность при увеличение кода .
Это мы уже проходили. Я выкложил 8 строк на одном из самых убогих BASIC и получил в ответ несколько забагованных и неуправляемых 100-строчников на С++. И никто из отписавшихся на Форуме не смог хоть как-то что-то сделать "удобно и читаемо". (Хотя, по электронке я получил один достаточно симпатичный вариант на Python).
"Увеличение кода" на С++ - это не следствие сложности задачи, а невозможность записать простые вещи коротко.

#862
15:27, 5 апр. 2019

FordPerfect
> Соответственно, почему в преобразовании двоичная<->десятичная плваучка должна
> быть асимметрия?
Она не должна. Она допустима.

> Да, для round-trip не требуется correctly-rounded, там более щадящие
> требования.
Для round-trip correctly-rounded (на уровне представления чисел) не достаточно.
У тебя вполне себе представимые и детерминированные числа могут превратить прикладную систему в осциллятор только так. И обязательно превратят, если действовать по принципу "а, ну там ребята-то все уже сделали".

> Одно из следствий correctly-rounded - детерминизм, чего иногда хочется.
Детерменизм поведения тебе любой, даже самый кривой, алгоритм даст. Просто просрешь определенную точность, и все. Которую ты и так просираешь, потому что она конечна. Какая разница, какого рода вычисления имели место быть.

Т.е на самом деле то - задача тот еще хардкор. А на хрена и кому он вообще нужен? "Хочется" - это очень сомнительная декларация необходимости. Currency во флотах не хранят.  И вот хоть жопу поставь за детерминизм - не будут.
И это правильно.

Имхо.
#863
15:30, 5 апр. 2019

gudleifr
> Опять Вас кинули?
И в штаны тебе насрали?

#864
15:31, 5 апр. 2019

gudleifr
>
> Это мы уже проходили. Я выкложил 8 строк на одном из самых убогих BASIC и
> получил в ответ несколько забагованных и неуправляемых 100-строчников на С++. И
> никто из отписавшихся на Форуме не смог хоть как-то что-то сделать "удобно и
> читаемо". (Хотя, по электронке я получил один достаточно симпатичный вариант на
> Python).
> "Увеличение кода" на С++ - это не следствие сложности задачи, а невозможность
> записать простые вещи коротко.
Ты как маленький ребенок. 8Строк как раз и будет удобнее на Basic, а 8000 уже удобнее на C/C++

#865
(Правка: 15:49) 15:48, 5 апр. 2019

FlyOfFly
> 8Строк как раз и будет удобнее на Basic, а 8000 уже удобнее на C/C++
Вы не поняли сути. 8000 строк на С++ - это 80 строк на BASIC.

Первая версия Star Trek на BASIC - ок. 500 строк вместе со всей документацией, FORTH (хреновая реализация) - полторы тысячи строк, Си - 7 тыс.строк только в Си-файлах, Python - столько же в основном файле.

8000 строк - это 100 страниц текста. Хорошая повесть. А Вы что в эти 8000 строк C++ уложите? Преобразование числа в строку?

#866
(Правка: 16:04) 15:48, 5 апр. 2019

FordPerfect
> Round-trip всё-равно нужен. А чем его специфицировать (что требует определения
> одновременно пары функций, или обтекаемых формулировок "будучи прочитан обратно
> любой нормальной реализацией, даёт то же значение"), можно тупо потребовать
> correctly-rounded.
Требовать можно что угодно. Но 1 и 0,999(9) - это одно и тоже число. Вот хоть усрись. И вот хоть закопайся в битофажество, введи гигабайтные флоты - за всеми этими плясками в конечном итоге всегда стоит конкретный тупорылый ушлепок с менструациями в мозгу, у которого сегодня это число - 1.0, завтра - 0.999999, и всегда "это разные числа, они же пишутся по разному!!! дайте мне детерминизм!!!".

Я не к тому, что этой задачей занимаются тупорылые ушлепки, а к тому, что они будут заниматься ей до бесконечности.

#867
15:55, 5 апр. 2019

gudleifr
В Delphi я уложу в 8000 строк только объявления

#868
16:06, 5 апр. 2019

monobogdan
> В Delphi я уложу в 8000 строк только объявления
А Mike Wiering в 8000 строк Pascal уложил Марио (еще 10000 - картинки). А мой real-time интерфейс влез в 2000 строк Pascal... Тяжко проклятие ООП...

#869
(Правка: 16:16) 16:16, 5 апр. 2019

Ivashka
> Вы обсуждаете всё но только не движки, архитектуру движков, логику и т.д.
Вот Вы и поняли главное: "движок" - это фикция. Это что-то вроде "геймлея" - красивое слово, которое переводится просто как "мне (не)нравится, как сделано".

Страницы: 157 58 59 60124 Следующая »
ФлеймФорумОбщее