Я знаю, вопрос часто задавался в прошлом, и, возможно, информация была дана в предыдущих публикациях переполнения стека. Но изучение Forth - очень сложная задача, и повторение помогает понять преимущества конкатенативного языка программирования по сравнению с альтернативными языками, такими как C.
Из уроков Forth я узнал, что Forth не предоставляет команды для создания 2D-массива, но пользователь должен реализовать все с нуля в программе. Я нашел два варианта в памяти Forth. Сначала создав новое слово:
: namelist s” hello” s” world” ;
или, во-вторых, оператором CREATE:
create temperature 10 allot
temperature 10 cells dump
Пока все хорошо; мы создали массив из 10 ячеек, в котором можно хранить целочисленные переменные. Но что, если мне нужно сохранить числа с плавающей запятой? Должен ли я всегда преобразовывать float в int или они могут быть сохранены в обычные ячейки?
Другая открытая проблема - как хранить строковые значения в массиве. Насколько я знаю, строка содержит указатель плюс размер. Так что теоретически я могу хранить только 5 строк в массиве из 10 ячеек, и дополнительно мне нужна память где-то еще, которая содержит саму строку. Это не имеет особого смысла.
Существует ли какая-либо более высокая абстракция для хранения значений в массивах, которые можно использовать для написания легко читаемых программ? Я имею в виду, что если каждый программист использует свой собственный метод Forth для хранения чего-либо в памяти, другим программистам будет трудно читать код.