↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Временно не работает,
как войти читайте здесь!
Asteroid
вчера в 10:20
Aa Aa
#читательское #рекомендую
Magic is Programming
История о исекае программиста, который обнаруживает, что магия - это программирование. Что вам ещё надо, чтобы начать читать? )))
Я видел много попыток в такую идею, эта, пожалуй, наиболее соответствующая духу идеи. И да, не программистам это точно будет неинтересно.

Я не рекомендую это как историю. Тут нет увлекательного сюжета, весь сюжет вообще о политических взаимодействиях второстепенных персонажей, которые абсолютно не касаются гг (он даже не в курсе). Также не ищите тут экшен и прочее - это производственный роман.
Даже как производственному роману я бы не поставил 4. Потому что идёт только этап подготовки, и ещё не понятно, во что оно выльется. Также технологически система магии имеет пару дыр, и я не о той, которую нашел гг в местной системе - эта идея как раз-таки логичная и прикольная.
Местами неверибельное поведение персонажей, местами просто глупость. Местами не сходится теория магии, и автор пришивает куски друг к другу. (Справедливости ради, система сложная, так что это простительно. Хотя мог бы и лучше вывернуть.)
Больше всего бросается в глаза несовпадение магической парадигмы на разных уровнях: заклинания жестко формализованы в виде программ, а гораздо более сложная структуризация души, которая по сути очень сложный программный модуль, делается легко и просто - пожеланием чуда. (Понятно почему это сделано, если делать правильно, то гг к моменту последней проды ещё бы колупался в самом начале пути. Но всё же - идеологическое противоречие, есть противоречие. )

Но, если отбросить все минусы, то текст весьма интересен в технарском плане. Есть много оригинальных идей. В частности, структуры души, их свёртка и различные типы топологий этих структур.
Магическое программирование есть, но... пока что в небольшом количестве. По сути, всё до момента последней проды - подготовка гг к тому, чтобы хорошо магичить. И он как раз закончил эту подготовку, и по идее, вот-вот должно начаться самое интересное.
Суть в том, что местные магичат на аналоге Бейсика, где даже условные переходы сделаны через "goto label", от чего гг передёргивает от омерзения. Поэтому, гг делает свою IDE и высокоуровневый язык программирования как обёртку для системного.
К данному моменту он это сделал, и единственное, что мешает ему заняться заклинаниями - срочный заказ на избавление от чар саботажа на артефактах.
По идее, он должен скоро закончить, и мы наконец-то увидим в действии применение современной парадигмы программирования в отсталом мире магов Бейсика.
В общем, в тексте много вкусных идей, которые, если их до конца развить, создают весьма интересный мир.

https://www.royalroad.com/fiction/69938/magic-is-programming
вчера в 10:20
9 комментариев из 12
> Ничего плохого в goto нет

это если в рамках экрана
Asteroid
У тебя опыт создания больших проектов есть?
Ну дык так-то goto не надо использовать в больших проектах, а надо изолированно юзать. Емнип, я видел где-то список примеров, где без goto хуже, чем с ним. А if в бейсике есть и так.

Я старый бейсик имел в виду.
Ну разве что. Впрочем, никто не мешает и в старом бейсике просто использовать goto по шаблону. Т.е. не пихать, как сам хочешь, а копипастить один и тот же шаблон. Проблема goto возникает не тогда, когда ты используешь его для циклов или для if-ов, а когда ты разрешаешь себе юзать его свободно, как душа пожелает. Тогда код превращается в лапшу. Т.е. это во многом вопрос дисциплины. И я полагаю, программирование магии/реальности ну стопудово должно поддерживать копирование кода и модульность, иначе и у ГГ бы ничего не вышло, и у местных тоже вряд ли. С помощью образца "if-с-помощью-goto" и "цикл-с-помощью-goto" можно довольно легко избегать превращения кода в лапшу. Да, он всё ещё будет сложночитаемым, но программирование реальности или магии так и так будет сложночитаемым, имхо. Ну и модульность рулит, разумеется, в том, чтобы превратить гигантскую стену кода в что-то удобоваримое. Вопрос лишь в том, рефакторят ли местные; я думаю, что если они не дебилы и имеют сколько-нибудь системное образование или магоисследовательские организации, то должны.
Показать полностью
Kristall star Онлайн
А "Ник" Ясинского, где программист в фентези попал и тоже магию как программирование воспринимал и использовал, знаком? Все же русскоязычный боян жанра попаданцев судя по всему сильно старше этого вашего ранобе.
Marlagram Онлайн
Goto - это попса и удобство, хех. За которое дорого заплачено.

Только JMP!
Kristall star
А "Ник" Ясинского,
Кто же его не читал. ))
Только там особо не было реализации именно программирования магии. Без конкретики хотя бы в архитектуре. Я уж не говорю о коде. А тут есть и то, и другое.
У него можно было заменить "программирование" "рисованием", и ничего особо не изменится.
Marlagram
Я на ассемблере кодил немного в универе. Это такой ацкий ужос, шо пиздец. Маленький код, который сам же недавно написал, просто сливается в глазах в кашу.
Матемаг
Впрочем, никто не мешает и в старом бейсике просто использовать goto по шаблону
Я много использовал гото и в бейсике и в С. Поверь, со временем приходишь к тому, что он реально нужен ну очень в редких специфических случаях, которые часто упрощаются рекурсией. И без гото код гораздо легче читается.
На моей памяти был только один случай, когда гото реально был лучше замены в какой-то очень закрученной функции перебора решений. Там, вроде бы, надо было в некоторых граничных случаях прыгать извне в середину цикла (или наоборот?). А обычные операторы могут быть только вложенными, а не пересекаться. Уже не помню где конкретно это было, но я тогда поломал голову, и ничего лучше и красивее не нашел.

Вопрос лишь в том, рефакторят ли местные;
Там всё сложно. И местами тупо. Они заучивают типовые программы, созданные древними.
Marlagram Онлайн
Asteroid
Но бывает и ужас-ужас:
... Commodore BASIC suffered from four major performance issues:

- It stored numbers as text in the source, and had to parse numbers every time they were used.
- Program lines are stored as singly-linked lists, so if it branched back to a line earlier in the program, `goto` and `gosub` had to start at the top of the program and find the target line, one line at a time. Forward branches searched one line at a time, starting from the executing line.
- Variables were stored in a singly linked list, so it would iterate through the list, one by one, until it found the referenced variable.
- All computations are done as software floating point. Integer variable updates would be converted to floating point, have the computation performed, then converted back to integer.
...
Так что копнуть глубже маго-Бейсика, а не строить поверх - естественная реакция опытного программиста.
Хех, времена до JVM и .NET были, и они были суровы.
Marlagram
Commodore BASIC suffered from four major performance issues:
Мне мой научрук рассказывал, как они на перфокартах вычислительные методы делали - вот там было поистине сурово. )))
Только готовую "программу" надо было час ползать на коленях проверять, потому что склеенная из листов лента на стол не помещается.

Так что копнуть глубже маго-Бейсика, а не строить поверх - естественная реакция опытного программиста.
Там это сложно реализовать, так как маг, по сути, получает API. Как оно внутри устроено - неизвестно.
ПОИСК
ФАНФИКОВ







Закрыть
Закрыть
Закрыть