Последние пару месяцев я занимаюсь тем, что никто, как я думаю, еще пока не сделал - пытаюсь написать книгу, в которой будет описание РаsсаlАВС.NЕТ, пусть поверхностное, но все же достаточно полное, а также руководство для начинающих по этой системе программирования.
Попытка описать язык, пока что частичная - я не дошел и до середины - позволила уже сейчас взглянуть на РаsсаlАВС.NЕТ в целом и понять, насколько он стал “раздутым” в сравнении с другими языками. Оставив в основе “унаследованный от предков” Паскаль, неся в себе груз частичной совместимости с Delphi и Free Pascal, прихватив “все лучшее” из Python, Haskell, C# и т.д, щедро сдобренный синтаксическим сахаром, язык стал просто огромен. Да, писать на нем быстро и комфортно, каждый может взять из него некоторое подмножество и работать с ним. Получилось как бы много языков в одном.
Причем, продолжает получаться. У языка нет жесткой спецификации и это делает проблематичной попытку его даже просто описать. Сегодня в языке чего-то нет, а завтра оно оно уже есть. Бывает и наоборот, вот оно было - и нет. Это неплохо, что язык совершенствуется, я повторюсь: это делает затруднительным его описание. Иногда мне кажется, что разработчики уже сами начали прогибаться под объемом языка. А чем иначе объяснить ситуацию, когда одно и то же делается двумя или даже тремя разными способами? Когда одно и то же дают вызов статического метода класса, функция и расширение? Я могу понять, что это просто так получилось, но это же утраивает описание! Не всегда получается написать об этих, таких разных средствах в одном месте пособия для начинающих.
В языке есть конструкции, которые я пока что даже объяснить не могу. Возможно, они пришли из каких-то глубин С++/С# (более того, продолжают приходить, если их вовремя не отфутболивают разработчики). Тем более, я не могу объяснить потенциальному читателю, зачем нужны эти конструкции, почему он должен тратить время на знакомство с ними и их осмысление. Ощущение, что введено “на всякий случай, а вдруг кому-то понадобится?”.
К чему я это все пишу? К тому, что у меня предложение есть такое. Пусть каждый, кто предлагает что-то добавить или удалить из языка, свое предложение будет сопровождать внятными ответами на следующие вопросы:
- что это новшество даст?
- насколько оно будет востребовано целевой аудиторией?
- какие изменения это потребует сделать в синтаксисе языка (что еще оно затронет?)
- насколько хуже писать программу сейчас, без предлагаемого новшества?
- привести пример программы.
P.S. А если коротко, Хотите оценить язык - попробуйте сделать его описание.