### Введение

В прежние времена под языками подразумевалось исключительно средство общения между людьми, т.е. имелись в виду только естественные языки – русский, немецкий, английский и пр. В начале ХХ века это представление претерпело серьёзные изменения и в настоящее время под языком понимается всякое средство общения, состоящее из знаковой системы, множества смыслов этой системы и имеющее установленное соответствие между последовательностями знаков и смыслами. Особенно широкий (и все более увеличивающийся) класс составляют языки программирования, изучению которых и посвящен наш курс.

Стремительное развитие вычислительной техники сделало возможной компьютерную обработку текстов, относящихся к самым различным языкам – естественным языкам, языкам формул, языкам программирования.

Существует великое множество программных средств такой обработки. Это и различные редакторы с самыми разными возможностями, и архиваторы, и трансляторы для языков программирования или программы-переводчики для естественных языков.

При обработке текстов возникает ряд задач. Это задачи, связанные с проблемой задания языка, или генерации его цепочек, задачи определения принадлежности некоторого множества слов заданному языку, задачи идентификации цепочек. Для их решения разработано множество методов, причем некоторые из них работают только с определенным классом языков (например, с языками программирования), другие же являются универсальными.

В нашем курсе будут рассматриваться различные методы решения задач генерации и распознавания цепочек языка, основные элементы теории перевода текстов с одного языка на другой, схема трансляции программ и основные этапы трансляции.