Вкратце есть общие критерии оценки языков программирования:
- Безопасность;
- Простота чтения и простота записи;
- Ортогональность;
- Выразительность;
- Уровень, который характеризуется способом описания намерений данном языке, уровень абстракции наших мыслей;
Замечательно то, что система типов почти во все аспекты вкладывается: она повышает безопасность наших программ путём проверки типов во время компиляции (если вспомнить, что типы — это спецификация поведения программы, спецификация взаимодействия между модулями), система типов — также материал для создания новых конструкций в языке (его расширение), которые могут повысить безопасность, выразительность, простоту чтения и записи и т.д.
Ортогональность — это сколькими способами данная конструкция в ЯПе может быть скомбинирована с другими. Например, язык Си крайне неортогонален, потому что массивы имеют совершенно другую семантику при передаче их как аргументов в функцию, возвращать их тоже нельзя. Нотация для типов крайне неортогональна:
int a;
float b;
MyType c;
int d[10]; // WTF ???
Причём тип у переменной
d здесь
int[10], а запись
int[10] d; не по стандарту.
Простоту чтения и записи ещё может повысить языкоориентированное программирование — это когда языки — такой же строительный блок, такая же абстракция, как и модули, функции и другие программные компоненты. Rust реализует языкоориентированное программирование с помощью макросов, потому что синтаксис в вызове макросов — это можно воспринимать как другой язык, eDSL (embedded domain-specific language).
По поводу последнего пункта — также может понизить риск ошибок, повышая безопасность, удобство чтения и записи и т.д.
Это только самая вершина айсберга. Если вопрос более подробно хочется познать — лучше почитать полноценные книги:
-
Type-driven development with Idris (о роли системы типов в разработке ПО)
-
Programming language design concepts (в первых главах предоставляется этот неформальный фреймворк для оценки ЯПов)
Поэтому я говорю, что тема явно не для чата, здесь можно словить лишь крупицы из огромной вселенной.