Обсуждение:RedPower 2/Программирование

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Непоследовательное изложение и неточности[править код]

изначально у компьютера 600 байт памяти.

Не совсем так. 600 байт свободной памяти. Всего памяти 8 Кбайт. К тому же в Prerelease 6 свободной памяти остается вовсе не 600 байт.

Что бы первый раз запустить компьютер, нам потребуется дискета с операционной системой — Загрузочный диск FORTH

Если этот компьютер – первый в мире, то да. Но ведь можно сохранить форт-систему на простую дискету и загрузится с нее, более того – на простую дискету можно записать не только форт, а например бейсик.

@ — помещает в стек значение переменной

Конечно, можно сказать и так, но это будет не совсем правильно. Слово @ берет из стека один элемент – адрес, и кладет в стек два байта, находящиеся в памяти по этому адресу.

! — присваивает переменной значение из стека

Та же ошибка. Все бы ничего, но вот как человек, прочитавший такое, сообразит, как сделать массив? Надо объяснять как-то так: VARIABLE <имя> резервирует в памяти 2 байта и создает новое слово <имя>, исполнение которого кладет в стек адрес зарезервированной памяти.

Чтобы получить нужный элемент массива, мы должны обратиться к памяти по адресу *начало массива*+i * *размер элемента*, 
i — номер нужного элемента.

Это верно, но:

Строки идентичны массивам, только каждый элемент — это символ, и строка всегда на один символ короче, чем создавалась, 
это связано с использованием особого символа — конец строки, он используется автоматически.

Все бы ничего, но вот только один символ кодируется одним байтом. А слова @ и ! работают с двумя байтами. Так что если получать символы из строки таким образом, то прочитается из памяти не один символ, а сразу два. И неплохо бы написать, что этот особый символ, указывающий на конец строки – это нулевой байт. Считывать отдельные символы из строки нужно словом C@, а записывать словом C!

В основном это операции проверки на истинность, все логические операции возвращают TRUE(1) или FALSE(0).

Что тут значат 1 и 0 ? За истину в форте принимается любое отличное от нуля значение, за ложь – ноль. Также в форте есть логические константы TRUE и FALSE. TRUE кладет в стек -1 (то есть все биты 1), но не 1.

Самое ужасное – не написано, какая разрядность у элементов стека!--37.190.51.16 10:02, 3 мая 2013 (UTC)

Ну так возьмите и исправьте.--Bloodhit 12:52, 3 мая 2013 (UTC)
По факту, сколько байт отводит система, зависит от разрядности это не всегда 2 байта, и еще, TRUE - как известно логическая единица, FALSE - соответственно логический 0, эти названия не я придумал и они обще-употребимы, странно, что человек знающий столь много подробностей FORTH, этого не знает. По поводу создания массива, я написал отдельно. Про обращение к элементу строки, да упустил.
По остальному, я не писал учебника по программированию, такой задачи не стояло, я писал статью, прочтя которую, человек может поймет и не все подробности, но того, что он прочтет ему будет достаточно для написания программы, и ему не особо будет интересно сколько там байт и какой код у того символа на конце строки.
А теперь дефакт, я программист и то, что я пропускаю я идеально понимаю, возможно я пропустил здоровенный подводный камень в который упрется обычный человек, такое разумеется подлежит не оспоримой правке. --Kris13 23:29, 3 мая 2013 (UTC)