![]() #читательское #рекомендую
Magic is Programming История о исекае программиста, который обнаруживает, что магия - это программирование. Что вам ещё надо, чтобы начать читать? ))) Я видел много попыток в такую идею, эта, пожалуй, наиболее соответствующая духу идеи. И да, не программистам это точно будет неинтересно. Я не рекомендую это как историю. Тут нет увлекательного сюжета, весь сюжет вообще о политических взаимодействиях второстепенных персонажей, которые абсолютно не касаются гг (он даже не в курсе). Также не ищите тут экшен и прочее - это производственный роман. Даже как производственному роману я бы не поставил 4. Потому что идёт только этап подготовки, и ещё не понятно, во что оно выльется. Также технологически система магии имеет пару дыр, и я не о той, которую нашел гг в местной системе - эта идея как раз-таки логичная и прикольная. Местами неверибельное поведение персонажей, местами просто глупость. Местами не сходится теория магии, и автор пришивает куски друг к другу. (Справедливости ради, система сложная, так что это простительно. Хотя мог бы и лучше вывернуть.) Больше всего бросается в глаза несовпадение магической парадигмы на разных уровнях: заклинания жестко формализованы в виде программ, а гораздо более сложная структуризация души, которая по сути очень сложный программный модуль, делается легко и просто - пожеланием чуда. (Понятно почему это сделано, если делать правильно, то гг к моменту последней проды ещё бы колупался в самом начале пути. Но всё же - идеологическое противоречие, есть противоречие. ) Но, если отбросить все минусы, то текст весьма интересен в технарском плане. Есть много оригинальных идей. В частности, структуры души, их свёртка и различные типы топологий этих структур. Магическое программирование есть, но... пока что в небольшом количестве. По сути, всё до момента последней проды - подготовка гг к тому, чтобы хорошо магичить. И он как раз закончил эту подготовку, и по идее, вот-вот должно начаться самое интересное. Суть в том, что местные магичат на аналоге Бейсика, где даже условные переходы сделаны через "goto label", от чего гг передёргивает от омерзения. Поэтому, гг делает свою IDE и высокоуровневый язык программирования как обёртку для системного. В общем, в тексте много вкусных идей, которые, если их до конца развить, создают весьма интересный мир.К данному моменту он это сделал, и единственное, что мешает ему заняться заклинаниями - срочный заказ на избавление от чар саботажа на артефактах. По идее, он должен скоро закончить, и мы наконец-то увидим в действии применение современной парадигмы программирования в отсталом мире магов Бейсика. https://www.royalroad.com/fiction/69938/magic-is-programming вчера в 10:20
1 |
![]() |
|
Kristall star
А "Ник" Ясинского, Кто же его не читал. ))Только там особо не было реализации именно программирования магии. Без конкретики хотя бы в архитектуре. Я уж не говорю о коде. А тут есть и то, и другое. У него можно было заменить "программирование" "рисованием", и ничего особо не изменится. |
![]() |
|
Marlagram
Я на ассемблере кодил немного в универе. Это такой ацкий ужос, шо пиздец. Маленький код, который сам же недавно написал, просто сливается в глазах в кашу. 1 |
![]() |
|
Матемаг
Впрочем, никто не мешает и в старом бейсике просто использовать 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. Как оно внутри устроено - неизвестно. |