лекция 2 (Языки программирования (лекции) (2008))

2019-09-19СтудИзба

Описание файла

Файл "лекция 2" внутри архива находится в папке "Языки программирования (лекции) (2008)". Документ из архива "Языки программирования (лекции) (2008)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "лекция 2"

Текст из документа "лекция 2"

Языки программирования. Лекция 2.

Определение языка программирования – инструмент планирования поведения исполнителя. Рассмотрели виды программирования и постулировали, что мы будем заниматься исключительно языками индустриального программирования, т.е. языками, на которых собственно и пишутся программные продукты (программы, которые пишутся с целью их отчуждения). Интересно, что практически все современные языки индустриального программирования относятся к императивным языкам (такие как Си) либо к императивно-объектным языкам. Императивные языки расширены объектной парадигмой – C++, Java, C#, Delfi и многие другие. И так мы начали рассматривать концептуальную схему ЯП, ввели 5 позиций рассмотрения ЯП. Конструкции языков программирования мы будем рассматривать в следующей схеме:

1.Базис ЯП.

Базисные конструкции – это те конструкции, которые встроены в язык, иначе говоря, это то, что понимает компилятор. И семантика базиса поддерживаться компилятором.

А) С этой точки зрения мы различаем скалярный базис, то есть те конструкции, которые являются неделимыми. С этой точки зрения все простые типы данных являются простыми, так как являются скалярными, неделимыми. Тип данных integer с машинной точки зрения имеет некоторую структуру, а именно это последовательность либо битов, либо байтов. Но в большинстве ЯП целый тип представляет собой именно скалярную величину, и преобразование его в последовательность байтов и битов это исключительно уже вопрос преобразования типов.

Б) Структурный базис. К структурному базису относятся, например все конструкции, которые с одной стороны определяются языком, а с другой стороны имеют внутреннюю структуру. С этой точки зрения большинство операторов языка, за исключением совершенно тривиальных типа break или continue, они имеют внутреннюю структуру. Начиная с оператора присваивания, который, безусловно, состоит из одной совершенно сложной структуры, включая понятия левой и правой части, а так же большинство управляющих операторов, типа оператора цикла и так далее, ну и составные типы данных, к числу которых, прежде всего, относятся массивы и структуры в традиционных языках программирования.

Ну и вот с этой точки зрения мы увидим, что все императивные ЯП очень сильно похожи друг на друга. Есть некоторые различия, которые прежде всего проявляются в трактовке массивов, а в основном с базисной точки зрения ЯП, именно индустриальные, очень похожи друг на друга. И то, что появляются новые, а старые еще живут, обусловлено различиями, но различиями не в базисе. Различия, прежде всего в средствах развития.

2.Средства развития.

Механизм, который позволяет добавлять в программы на этом языке новые понятия, которых не было в базисе. Самым мощным средством развития из тех, которые мы будем рассматривать, является понятие класс. Есть и другие средства развития, и интересно, что уже в самом первом ЯП (Фортране) появилось такое средство развития, как понятие подпрограммы. Для такого чтобы говорить о средствах развития необходимо: понятие модуля, понятие подпрограммы и понятие общих данных. Все это в зачаточном виде было в языке Фортран, и именно поэтому язык Фортран смог развиваться, и сам по себе Фортран ничего бы не стоил, если бы на нем небыли написаны миллионы строк полезного кода. Все это относиться и к языку Си, есть и модульность, есть средства определения новых типов данных, есть понятие функций – это тот минимум, на котором может развиваться язык, и, разумеется, на языке Си написаны мощные библиотеки стандартных программ. Но все-таки, для того чтобы быть именно базисным языком индустриального программирования одних средств развития недостаточно. Во-первых, они должны быть более мощными, нежели просто понятия функции и определения нового типа данных. Во-вторых, что существенно с современной точки зрения понятию надежности и безошибочности программных средств уделяется все больше внимания.

3.Средства защиты.

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

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

Все языки в нашем курсе мы будем рассматривать по указанной схеме. И почему именно по этой схеме. Основная проблема в современном программировании – это сложность, именно создание современных программных комплексов - одна из самых сложных задач. В современных технических системах, одной из составляющих частей обязательно является программный компонент. Не даром, что одной из самых сложных задача является проектирование самолетов, что в настоящем невозможно без проектирования соответствующих компьютерных систем, которые в свою очередь являются очень сложными. Так вот, в чем проблема? На прошлой лекции мы уже начали об этом говорить – понятие кризиса программного обеспечения. Эта тема обсуждалась еще в 70-х года, и одной из первых книг являлась - книга Брукса «Мифический человекомесяц». В которой была высказана следующая весьма интересная идея «если одна женщина вынашивает ребенка 9 месяцев, то это не значит, что 9 женщин смогут выполнить эту работу за один». Это как раз к вопросу о том, на сколько корректно измерять сложность и трудоемкость программных систем во временных единицах типа человекогод и т.д. собственно кризис отразился в том, что все более менее сложные программные системы, которые начали выпускаться с 60-ых годов, требовали значительно больше времени и средств, чем планировалось, и в конечном итоге программные комплексы не выполняли свою роль. И пример первой такой программы, где все эти свойства проявились впервые – это была операционная система OS360 для машин фирмы IBM. По мотивам создания этой ОС Брукс и написал свою книгу. Сейчас о кризисе уже не пишут, а что изменилось? Сейчас аналогом OS360 является система Windows, ни одна из ее версий в срок не выходила. Service Pack – это отражение того, что заранее признано, что ОС это такая сложная программа – она не может не выйти без ошибок, поэтому практически всегда первая версия программы – это бета-версия, которая тестируется пользователями. Пользователь работающей с некоторой программой заранее должен быть готов обновлять ее. Последнее время обновление ОС Windows связано в основном со средствами защиты, но если вспомнить первые service рack это, по сути, исправление ошибок. Можно сказать, что кризис превратился из кризиса в вяло текущую шизофрению.

В чем причина сложности разработки программного обеспечения – их две.

1. Слабость базиса. С точки зрения базиса ЯП никакого отношения к реальной действительности не имеют, в моделях реального мира никто не оперирует с битами, байтами и т.д. Как следствие, чтобы построить соответствие между моделями реального мира и базисными конструкциями – требуется долгая работа.

2. Отсутствие модели реального мира в компьютерах. Иначе говоря, при наличии модели реального мира возможен контроль и прогноз. Все это в компьютерах отсутствует, а контроль без прогноза невозможен.

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

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

Исторически очерк развития ЯП.

Можно выделить 3 периода развития ЯП, и в основном интересующие нас ЯП возникли в третьем или в конце второго периода.

  1. Эмбриональный период (1950ые-1960-ые годы)

Фортран

Первым компилируемым ЯП был Фортран (1954 - 1957 года в IBM под руководством Джона Бэкуса). Фортран - "транслятор формул", Formulae Translator. До сих пор программируют на этом языке. Фортран – это язык, создатели которого достигли поставленных целей. В определенном смысле Фортран является контрпримером во многих монографиях по ЯП – обычное упоминание – «как плохо что-то сделано в Фортране», и, тем не менее, Фортран является одним из самых успешных ЯП в истории.

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

Так Фортран первым занял свою нишу – язык научно-технических расчетов (НТР) для разнообразных математических и физических моделей, используется интегро-дифференциальное исчислении, разностные методы. До Фортрана было следующее – ученые сами не могли программировать, они писали некоторые блок-схемы, программа писалась совместно с программистом, потом программист в одиночку превращал переменные в адреса памяти, операторы – в машинные команды, набивал все это на перфоленте. Итог – либо численный результат, либо некоторая ошибка исполнения. Слабым звеном являлся программист.

У Фортрана появились:

1. оператор присваивания V:=E, причем на месте Е можно было писать математические формулы

2. можно было использовать вещественные, целочисленные и комплексные типы данных

3. появился условный оператор if с переходом на три направления, если значения флага <0, >0, =0.

4. было 4 разновидности операторов безусловного перехода

5. средства ввода-ввывода

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

Появился термин мобильность или переносимость (Portability). Рассматриваются два аспекта мобильности.

  1. Мобильность программного обеспечения.

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

  1. Мобильность знаний.

До появления Фортрана при появлении новой или просто другой модели компьютера приходилось изучать новую систему команд, привыкать к новой ОС, переписывать все программы. После появления Фортрана при переходе с одной машины на другую надо было учитывать только различия в языках – что упростило смену работы для программистов. Хотя на тот момент оборудование стоило гораздо дороже, чем услуги программиста. Сейчас все наоборот, и на это повлияло наличие мобильности знаний. И именно как аспект мобильности знаний рассматривается то требование, что на новой архитектуру переносились старые программы.

Фортран весьма устраивал прикладных специалистов и являлся весьма адекватным языком. Хотя были и некоторые казусы, такие как, например, взрыв при старте американской ракеты. И считается, что проблема была в операторе цикла на Фортране.

Do(не является ключевым словом, могут идти пробелы, а могут и нет)5(
метка, номер оператора, который является последним в цикле) далее управляющая переменная цикла

т.е

do 5 i=1,3 (ошибка состояла в том, что здесь вместо запятой поставили точку)

5 continue

аналог на Паскале

for i:=1 to 3 do

Такую ошибку было трудно рассмотреть, а у Фортрана такие особенности, что пробелы ничего не значат, ключевых слов нет, а переменные могут не объявляться (все, что начинается с I,j,k,l,m,n считается целым, с остальных букв вещественным). Компилятор с Фортрана понимал эту ситуацию так а=1.3, где а –переменная (do 5 i). Поэтому данный оператор цикла был интерпретирован как оператор присваивания со всеми вытекающими отсюда последствиями. На многих других более современных языках программирования такая ситуация в силу ряда требований невозможна. Таким образом, Фортран в других ниша функционировал неэффективно.

Дальнейшие версии Фортрана:

1964 Фортран 4

1966 Фортран 66 (стандарт ANSI) –первый стандартизированный в мире и в отдельных странах язык

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
426
Средний доход
с одного платного файла
Обучение Подробнее