Языки второго поколения (2GL) создавались для того, чтобы облегчить
тяжёлую работу по программированию, перейдя в выражениях языка от
низкоуровневых машинных понятий ближе к тому, как обычно мыслит
программист. Эти языки появились в 1950-е годы, в частности, такие языки
как Фортран и Алгол.
Наиболее важной проблемой, с которыми столкнулись разработчики языков
второго поколения, стала задача убедить клиентов в том, что созданный
компилятором код выполняется достаточно хорошо, чтобы оправдать отказ от
программирования на ассемблере. Скептицизм по поводу возможности
создания эффективных программ с помощью автоматических компиляторов был
довольно распространён, поэтому разработчикам таких систем должны были
продемонстрировать, что они действительно могут генерировать почти такой
же эффективный код, как и при ручном кодировании, причём практически
для любой исходной задачи.
101010.111 =42.875101010.111=52.7101010.111=2A.E
X=R2C2=RC[-4]
y=R2C3=RC[-3]
z=R2C4=RC[-2]
1. =3,4*RC[-3]+RC[-2]
2. =(R[-1]C[-3]+R[-1]C[-2])*R[-1]C[-1]
3. =0,8*R[-2]C[-3]+0,9*R[-2]C[-2]-R[-2]C[-3]*R[-2]C[-2]
4. =(R[-3]C[-3]+R[-3]C[-1])*R[-3]C[-2]+0,1*R[-3]C[-3]
5. =(R[-4]C[-3]-R[-4]C[-1])*R[-4]C[-1]+R[-4]C[-2]*R[-4]C[-1]
6. =6*((R[-5]C[-3])^3-5*R[-5]C[-2]/6)/((R[-5]C[-3])^3-6*R[-5]C[-2])
7. =(15*(R[-6]C[-3])^2-7*R[-6]C[-2]/12)/(18*R[-6]C[-2]+(R[-6]C[-3])^2)
8. =(40*(R[-7]C[-2])^3+4*R[-7]C[-3]/9)/(6*(R[-7]C[-3])^2-18*R[-7]C[-3]*R[-7]C[-2])
9. =(((5*(R[-8]C[-3])^(3*R[-8]C[-2])-2))/(10*R[-8]C[-3]*R[-8]C[-2]))/((12*R[-8]C[-3]+R[-8]C[-2])/(3*R[-8]C[-3]-(R[-8]C[-2])^(5+2*R[-8]C[-3])))
<span>10. =((5*(R[-9]C[-3])^(3+R[-9]C[-2])-2)/(10-R[-9]C[-3]*R[-9]C[-2]))/(12*R[-9]C[-3]*R[-9]C[-2]/(3*R[-9]C[-3]+(R[-9]C[-2])^2*R[-9]C[-3])))
</span>