Вопреки тому, что вы говорите, обычно DROP SWAP и т. Д. Считаются основными операциями Forth. Причина в том, что если вы реализуете их, используя операции с памятью, как вы предлагаете, общая система становится более, а не менее сложной.
Также нет четкого различия в Forth между тем, что является основным, а что нет. В 80-х годах поиск по словарю был бы базовым и кодировался на ассемблере для скорости, в то время как современный Linux-хостинг может позволить себе кодировать это на так называемом высоком уровне.
Также Forthers обычно перекодируют слова ассемблера на высоком уровне и слова высокого уровня на ассемблере. Я автор ciforth и yourforth.
Можно определить <= как "> не", как я сделал в ciforth. Но в дальнейшем я решил, что все <<=>> = как одинаковые, одинаково выглядящие маленькие подпрограммы на ассемблере были значительно проще. Это призыв к суждению и вопрос вкуса, конечно, не принципиальный.
В этом контексте я интерпретирую вопрос как: «Каков разумный размер для числа примитивных операций, чтобы достичь разумного мощного Форта с разумной скоростью?»
Ясно, что вы не заинтересованы в хитрых уловках, позволяющих избавиться от одного слова на ассемблере за счет огромных накладных расходов, которые можно найти в некоторых темах, обсуждающих эту тему.
Теперь вы можете взглянуть на ряд маленьких Фортов, как на Джонсфорт, далее на четыре и заключить, что в основном один достигает примерно 50-100 примитивов.
Эти форты определены в ассемблере. Если вы хотите определить свои примитивы в c, python или Java, ситуация снова другая. Теперь, например, При поиске по словарю у вас есть выбор между c и Forth. Соображения, которые не имеют ничего общего с языковым дизайном, вступают в игру. Вы можете быть плодовитым c-программистом или можете настаивать на его написании на Forth, потому что это учебный проект.