Императивные языки иногда разбивают на две подгруппы: процедурные языки, такие как C, и объектно-ориентированные языки. Тем не менее, объектно-ориентированные языки немного ортогональны группам, поскольку существуют объектно-ориентированные функциональные языки (например, OCaml и Scala).
Вы также можете сгруппировать языки, набрав: статический и динамический. Языки со статической типизацией — это языки, в которых типизация проверяется (и обычно принудительно) перед запуском программы (обычно на этапе компиляции); языки с динамической типизацией откладывают проверку типов до времени выполнения. C, C++ и Java — это языки со статической типизацией; Python, Ruby, JavaScript и Objective-C — это языки с динамической типизацией. Существуют также нетипизированные языки, к которым относится язык программирования Forth.
Вы также можете сгруппировать языки по их дисциплине типизации: слабая типизация, которая поддерживает неявные преобразования типов, и строгая типизация, которая запрещает неявные преобразования типов. Границы между ними немного размыты: согласно некоторым определениям, C является слабо типизированным языком, в то время как другие считают его строго типизированным. В любом случае дисциплина набора текста не является полезным способом группировки языков.
Прикрепляю к посту несколько видео по теме: