Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
материалы к экзамену ПБ.doc
Скачиваний:
17
Добавлен:
18.09.2019
Размер:
795.65 Кб
Скачать

Основная

  1. Безручко, В.Т. Практикум по курсу «Информатика». Учебное пособие. – 3е изд./ В.Т. Безручко.– М.: Финансы и статистика, 2005. – 544 с.

  2. Симонович, С.В. Информатика: Базовый курс / С.В.Симонович и др./ - СПб: Питер, 2007. - 640 с.

  3. Ляхович, В.Ф. Основы информатики. Учебное пособие. / В.Ф. Ляхович. - Ростов н/д: Феникс, 2006. – 608 с.

Дополнительная литература:

  1. Попов, В.Б. Основы компьютерных технологий, /В.Б. Попов М.: Финансы и статистика, 2002. – 703с.

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

2.1. История развития языков программирования.

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

Чтобы упростить общение человека с компьютером, были разработаны языки программирования типа Ассемблер, в которых переменные величины стали изображаться символическими именами, а числовые коды операций были заменены на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, но удалился от языка машинных команд. Поэтому чтобы компьютер мог работать на языке Ассемблера, понадобился транслятор – программа, переводящая текст программы на Ассемблере в эквивалентные машинные команды. Языки типа Ассемблер являются машино-ориентированными, потому что они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имеют разный Ассемблер.

В 50-х годах XX века в связи с широким применением компьютеров и различных областях науки и техники возникла серьезная проблема: простые пользователи не могли работать с компьютером из-за сложности языков программирования, а профессиональные программисты были не в состоянии обслужить огромное количество пользователей. Решением данной проблемы явилось создание языков программирования высокого уровня, форма записи программ на которых по сравнению с Ассемблером и машинными языками ближе к традиционной математической форме и разговорному языку. Важным преимуществом языков программирования высокого уровня является машинная независимость, поэтому одна и та же программа на таком языке может быть выполнена на компьютерах различных типов, оснащенных соответствующим транслятором. К недостаткам программ, написанных на языках высокого уровня, относятся большой объем занимаемой памяти и более медленное выполнение, чем у программ на машинных языках или языках Ассемблера. Первыми популярными языками высокого уровня, появившимися в 50-х годах XX века, были Fortran, Cobol и Algol.

В 60-70-х годах XX века появилось огромное количество новых языков программирования. В 1965 году появились два новых важных языка. Для обучения программированию был разработан язык, который являлся упрощенной версией Фортрана и получил название Basic (Beginner's All-purpose Simbolic Instruction Code, многоцелевой код символических команд для начинающих). Basic предоставил пользователю разнообразные средства для диалога с компьютером во время выполнения программы. Вторым языком, появившимся в 1965 году, был PL/1 (Programming Language 1, язык программирования 1). При его создании наследовалась цель создать язык, сочетающий в себе лучшие свойства Algol, Cobol и Fortran, и в конечном итоге заменяющий своих предшественников. Однако этого не произошло, в связи с тем что PL/1 не проявил тех преимуществ, которые оправдали бы переход к нему. К тому же большое количество средств и разнообразие операторов ПЛ/1 привели к сложности в его изучении.

В 1971 году профессор Н. Вирт из института информатики Швейцарской высшей политехнической школы в Цюрихе разработал новый язык, получивший название Pascal (в честь математика XVII века Блеза Паскаля). Язык Pascal основан на Алголе и создавался как учебный язык, в нем строго соблюдена структурная линия программирования. В силу своих достоинств Pascal послужил источником для создания многих современных языков программирования, таких как Ada, С и Modula-2.

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

В развитии языков программирования выделяются два основных направления: процедурное и непроцедурное. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается способом получения его при помощи некоторой процедуры – определенной последовательности действий. Основными средствами, применяемыми в этих языках, являются величины (в том числе и табличные), присваивания, циклы, процедуры. При построении процедурной программы необходимо ясно представлять, какие действия и в какой последовательности будут производиться при ее выполнении. Среди процедурных языков можно, в свою очередь, выделить структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы. В операционных языках для этого используется несколько операций. Широкое распространение получили структурные языки Pascal, С, Ada, PL/1 и операционные языки Fortran, Basic, Focal.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов, но его развитие началось в 80-е годы в связи с проектом по созданию компьютеров пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки. В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разбиваются на еще более простые, и т.д. Один из основных элементов в функциональных языках – рекурсия, т.е. вычисление значения функции через значение этой же функции от других элементов. Наиболее распространенными среди функциональных языков являются Lisp и Refal. Lisp, являющийся языком обработки списков, давно и активно применяется в системах искусственного интеллекта. Refal, построенный на алгоритмах Маркова, удобен для обработки текстов и является единственным из распространенных в мире языков программирования, разработанным в нашей стране. Промежуточное положение занимает язык Logo, который содержит средства и процедурного, и функционального программирования. На начальном уровне он похож на классический процедурный язык, а при решении сложных задач обработки данных на первый план выходят функциональные методы.

Функциональная программа, как и процедурная, описывает действия, которые надо совершить для достижения результата (вызов функции – это тоже действие), но ее построение требует скорее математического, чем алгоритмического мышления.

В логической традиции программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого можно задавать вопросы. Машина перебирает известные (заданные в программе) данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Prolog, хотя он и содержит некоторые средства управления перебором, т.е. процедурные элементы. Построение логической программы вообще не требует алгоритмического мышления. Здесь нет динамики, нет описания действий, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.

Можно выделить еще один класс языков программирования – объектно-ориентированные языки сверхвысокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения SmallTalk. Трудно провести четкую границу между системами программирования сверхвысокого уровня и прикладным программным обеспечением. Как те, так и другие системы позволяют работать с ними неквалифицированному пользователю, не являющемуся программистом.

Языки программирования принято делить на 5 поколений.

1 поколение – это языки созданные в начале 50-х годов прошлого века (первый язык ассемблер, созданный по принципу «одна инструкция – одна строка»).

2 поколение – конец 50-х начало 60-х годов (символический ассемблер, в котором появилось понятие переменной).

3 поколение – 60-е годы, языки высокого уровня BASIC, ADA, Fortran, PASCAL, Algol, Cobol .

4 поколение – начало 70-х до настоящего времени; проблемно-ориентированные языки предназначенные для реализации крупных проектов с помощью понятий узкой предметной области (Prolog, Smalltak(Смолток), Си++, Java, C#(Си Шарп))

5 поколение – середина 90-х годов по настоящее время; языки описания для создания прикладных программ с помощью визуальных средств разработки , без знания программирования (Dbase, Visual BASIC, Delphy[визуальный Паскаль]).