Hi George,
Sat Jan 17 2004 05:45, George Shepelev wrote to Ilia Tarasov:
GS>>> И переносимость - зверская! Практически всё точно задано, GS>>> не то, что в си - постоянные "определяется реализацией". IT>> В Форте такого тоже хватает,
GS> Очень мало. Разница с C - на порядки.
Это если не учитывать установку самой виртуальной Форт-машины (FVM) на каждую платформу/проц. Разница с С в том, что С-компиляторы кто-то уже сделал, и их можно как-то добыть, а FVM скорей всего придется делать вручную. Конечно, можно сослаться на семейство SwiftX, которое покрывает многие процы, однако хоть и многие - но не все.
IT>> Стековая машина определена действительно очень строго.
GS> Что и даёт истинную переносимость. Вычисления на форте GS> будут идентичны (при аккуратной реализации форт-машины, GS> что несложно - её размер всего несколько килобайт кода) GS> на любом "железе". От i51 до суперкомпьютера.
А разная разрядность железа, как с этим быть? Если делать FVM 32-битной, то получишь оверхед и тормоза на 8-битной платформе. Если делать FVM с разрядностью, соответствующей разрядности железа (скажем, использовать два варианта FVM, 16- и 32-битную) - то полной совместимости не будет, полезут те же грабли что и в С.
GS> Ещё одна приятная особенность форт-машины, с которой я тоже GS> игрался - на процессорах с "сегментированной" памятью (к примеру GS> 8086, или любом с Гарвардской архитектурой) легко реализовать GS> аппаратный "защищённый режим" каждой из исполняющихся форт-программ. GS> Ядро работает в своём сегменте (или памяти кода), а шитый код GS> и данные каждой из задач - в своих индивидуальных сегментах. GS> Каждая программа при исполнении может "портить" только себя, GS> но не ядро или другие программы. GS> Мало ли, может это кому-то пригодится для эхотажной задачи GS> с повышенными требованиями к надёжности? ;)
GS>>> Hо читать исходники довольно грустно и с проверками правильности GS>>> напряжёнка. GS>>> Остаётся только использовать как инструмент для создания GS>>> высокоуровневых машинонезависимых языков программирования.
Что, в сущности, и сделано в .NET и Java. Если бы не их монстроидальность, то прекрасно бы подошли для эхотага. Мне многоязыковый .NET вельми нравится ;-) Эх, если бы можно было выкинуть из них сборку мусора и другие навороты...
Пока, Алексей