深奥的编程语言
编程语言的范型可以分为若干类别，这些类别可以用来大致了解特定语言的操作方式。其中包括命令式语言，如brainfuck，其指令描述了如何修改数据；函数式语言，如Unlambda，其中的数据和代码都或多或少地可交换，而程序的执行是通过重复迭代调用函数实现的；和重写语言，如Thue，其中可以使用变换函数使状态初始化。
面向对象程序设计
支持部分或绝大部分面向对象特性的语言即可称为基于对象的或面向对象的语言。Simula (1967)被視為第一個具有物件導向]特性的語言。早期，完全面向对象的语言主要包括Smalltalk等语言，目前较为流行的语言中有Java、C#、Eiffel等。随着软件工业的发展，比较早的程序導向的语言在近些年的发展中也纷纷吸收了许多物件導向的概念，比如C→C++，C→Objective-C，BASIC→Visual Basic→Visual Basic .NET，Pascal→Object Pascal，Ada→Ada95。「純粹」的物件導向語言, 因為所有的東西都是由物件所組成，例如：Eiffel, Emerald, JADE, Obix, Ruby, Scala, Smalltalk, Self.