Il ressemble très fortement au langage de première génération, c’est un langage assembleur dans sa forme finale. Il ne fournit que peu ou pas d’abstraction à partir de l'architecture du jeu d’instruction d’un ordinateur.

Si le code est encore trop proche du processeur pour être portable, il devient néanmoins lisible, et compréhensible. Il reste utilisé dans le cadre d’optimisations, mais a été supplanté en popularité par les langages des générations suivantes, beaucoup plus accessibles et auquel il cède la place.
Un langage de programmation de seconde génération a les propriétés suivantes :
- Le code peut être lu et écrit par un programmeur.
- Pour fonctionner sur un ordinateur il doit être au préalable converti sous une forme exploitable par une machine, ce processus est appelé l’assemblage.
- Le langage est spécifique à une famille précise de processeurs et à un environnement particulier.
A la différence des langage de programmation de première génération, les programmes peuvent être écrits symboliquement en utilisant des mots en anglais (la mnémotechnique), d’une manière qu'un humain peut comprendre. Il est par la suite converti dans le langage-machine par un assembleur.




