gudleifr писал(а):
Виноват, думал, из контекста понятно.
Например, как у Мура (объект - таблица БД):
Совсем не очевидно. Что такое все эти слова? Требуется ли DEPT перед всем этим? Только ли DEPT (может, там еще есть другие подразделения, которые обозначаются не DEPT). Видно, что LIST - это точно слово с каким-то действием внутри. А остальное? Слова, константы, модификаторы? LIST способно самостоятельно подстроиться под разные комбинации, или же данный синтаксис - просто мимикрия под языки запросов к БД? Так что вопрос сложности открыт. Он и вообще открыт (чем мерить сложность?), а в данном случае требует уточнения. Это сложность реализации? Или сложность работы с системой? Или сложность сопровождения и отладки?
gudleifr писал(а):
Нужно ли придумывать лексиконы под каждую задачу? Да, так проще! Какова доля "уникальности", вопрос открытый (сейчас я, например, экспериментирую со словарями, содержащими одни и те же слова, но по-разному реализованные).
Подозреваю, что речь идет не столько о лексиконах, сколько о просто наименовании регулярных слов...
gudleifr писал(а):
"Упрощение разработки" против "демонстрации навыков"? Единственный способ отличить одно от другого - ввести "местечковые Ван-Тасселы". Полезно для имитации полезной деятельности, но вредно для сложного программирования.
Единственный критерий - к какому минимальному набору придет программист, имеющий свободу выбора методов, и при этом реализующий конкретное изделие. Листинги программ и список новшеств никому не интересен, писать можно хоть на Бейсике, но и ссылаться на то, что "Бейсик это не поддерживает, потому делать не будем" нельзя. Практика показывает, что шелуха отваливается сама.
gudleifr писал(а):
"Форт... не заставляет использовать именно это"? Боюсь, заставляет. FORTH диктует решение задачи единственным способом - "как будет работать, так и пишем". Напишете по-другому - оно и работать будет по-другому.
Код:
0
0
BEGIN
X[] OVER -TH @ SWAP + SWAP
1 +
DUP SIZE =
UNTIL
DROP
Визуальное впечатление другое. DO LOOP не используется.
Я уже не говорю о различиях кода, построенного вокруг КА, и кода из цепочек IF THEN. Они могут быть логически эквивалентными, но писаться и отлаживаться в разных стилях.
gudleifr писал(а):
Впрочем подобные шаблоны никак не помогут в борьбе с указанными мной парой ограничений. Разве что на уровне, где до этих "границ" еще далеко, но программист уже уперся в "свои границы".
"Ограничения" уровня логики кодирования являются сугубо тактическими и решаются не волшебными лексиконами (вариант: сборкой мусора, статической типизацией, фреймворками), а выработкой четкого ТЗ и его детализацией в нужных местах. Далее программист может сам решить, в каких местах ему добавить тесты, в каких разработать вспомогательные инструменты (в том числе серию CREATE-определений), а в каких просто внимательно следить за тем, что на стеке.