Програмски језици друге генерације (2ГЈ) јесу генерацијски начин категоризације асемблерских језика[1] Термин је настао да обезбеди разлику између вишег нивоа треће генерације програмског језика (3ГЈ), као што су Кобол и ранијих језика машинског кода. Програмски језици друге генерације имају следеће карактеристике:
Језици друге генерације се понекад користе у језгрима и драјверима уређаја (мада се C углавном користи за то у модерним језгрима), али чешће налазе примену у веома интензивној обради као што су игре, видео уређивање, графичка манипулација / приказивање.
Једна метода за стварање таквог кода је тако што се преводиоцу дозвољава генерисање машинско-оптимизираних верзија асемблерског језика одређене функције. Овај код се затим ручно подешава, стичући и насилни увид у машински оптимизирајући алгоритам и у интуитивне способности људског оптимизера.