Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конпект лекций по ТЯПиМТ.docx
Скачиваний:
222
Добавлен:
27.01.2015
Размер:
329.63 Кб
Скачать

1. Языки и кризис программирования.

Программирование существенно отстаёт от возможностей аппаратного обеспечения. В результате возможности аппаратуры используются примерно на 30%. С одной стороны сложность программирования, а с другой сложность комплексной отладки уже написанных программ. Отсюда известная поговорка, что в каждой хорошо отлаженной программе есть хотя бы одна ошибка.

Программисты ошибаются по субъективным и объективным причинам. Субъективные причины оставим на совести конкретных персон, а объективные причины в следующем. Человеческое мышление основано на языке. Без использования языка мышление неконкретно и расплывчато. Любая мысль обязана облачиться в языковую форму для того чтобы стать доступной человеку. Наше мышление не определяет язык, но без языка оно не возможно. Любая идея может быть выражена на любом языке, но вначале идея должна родиться в принятой языковой среде. Язык направляет мысли, но не предписывает их.

Языки программирования – искусственные языки, и они существенно отличаются от естественного языка. Естественный язык многозначен. Ему свойственно опираться на контекст. Он допускает интуитивное толкование. Программа, записанная на языке программирования, по сути, является алгоритмом, предписывающем ЭВМ определённый порядок действий. И поэтому на неё переносятся основные свойства алгоритмов: детерминизм, массовость и результативность. Детерминизм означает, что для одних и тех же исходных данных всегда будет получаться один и тот же результат. Массовость означает, что алгоритм можно применить к множеству исходных данных, и он даст верный результат. Результативность означает, что по алгоритму можно получить результат за приемлемое время. Но между ЭВМ и человеком существует языковой барьер. Человек мыслит на естественном языке, который ЭВМ не воспринимает вообще. При этом человеку свойственно подразумевать очевидное как само собой разумеющееся, для ЭВМ это не возможно. Алгоритмические языки однозначны. Но ЭВМ не воспринимает и их, только двоичный машинный код. Поэтому необходим переводчик с алгоритмического языка в машинный код – транслятор. Кроме задачи перевода транслятор находит ошибки программирования: лексические, синтаксические и семантические, причём все 100% ошибок. Программисту остаётся выявить и устранить только те ошибки, которые не нарушают грамматические правила языка и общие соглашения, принятые в языке. Это существенно облегчает процесс отладки программ.

Описание языка можно представить себе в виде полного словаря слов данного языка, но такое описание слишком громоздко и мало пригодно для формализации. Предпочтительнее задавать язык грамматикой – правилами образования слов данного языка. Грамматики достаточно компактны и универсальны. Они позволяют получать любые слова языка по заданным правилам как употребляющиеся в языке, так и нет, но соответствующие правилам их образования. Примечателен в этом случае пример образования неологизмов в детских стихотворениях Льюиса Керрола из «Приключения Алисы в стране чудес и Алиса в зазеркалье». Эти стихи переведены с английского на многие языки мира и они понятны как взрослым, так и детям, поскольку неологизмы в них соответствуют грамматике языка. Вот пример из стихотворения Бармаглот:

Варкалось. Хливкие шорьки

Пырялись по наве,

И хрюкотали зелюки,

Как мюмзики в мове.

О бойся Бармаглота, сын!

Он так свирлеп и дик,

А в глуше рымит исполин –

Злопастный Брандошмыг!

Но взял он меч, и взял он щит,

Высоких полон дум.

В глущобу путь его лежит

Под дерево Тумтум.

Он стал под дерево и ждёт,

И вдруг граахнул гром –

Летит ужасный Бармаглот

И пылкает огнём!

Раз-два, раз-два! Горит трава,

Взы-взы – стрижает мечь,

Ува! Ува! И голова

Барабардает с плечь!

О, светозарный мальчик мой!

Ты победил в бою!

О, храброславленный герой,

Хвалу тебе пою!

Варкалось. Хливкие шорьки

Пырялись по наве.

И хрюкотали зелюки,

Как мюмзики в мове.

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