Языки программирования
Курсовая работа
на тему: “Языки программирования”
Содержание
Введение
1. Языки программирования
1.1 История развития языков программирования
2. Обзор современных языков программирования
2.1 Си его разновидности
2.2 Паскаль
2.3 Фортран
2.4 Бейсик
Выводы и предложения
Список использованной литературы
Введение
На современном этапе
развития компьютерных технологий невозможно
представить какого–либо
Актуальность данной темы обусловлена тем, что прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования.
Объектом исследования послужили языки программирования и история развития языков программирования.
Целью курсовой работы является изучение классификации языков программирования и их развития.
Цели исследования:
1. Просмотреть общее сведения и уровни языков программирования.
2. Просмотреть историю развития языков программирования.
3. Сделать обзор современных языков программирования.
Задачи исследования:
1. Ознакомления с языками программирования.
2. Рассмотрение истории развития языков программирования.
3. Обзор современных языков программирования.
В первой главе рассматриваются общие сведения о языках программирования и история развития их.
Во второй главе рассматривается обзор современных языков программирования.
В данной курсовой работе использовался
научно-исследовательские
Применяемые технические средства: ПЭВМ: Core 2 Duo E6600 2.4 ГГц 2 x 4 Мб L2; 2 x 1024 Мб DDR3-1333МГц; NVIDIA GeForce 8600 GT 512 Мб; HDD Hitachi Deskstar 7K1000 1 Тб; Принтер: Canon LBP3010.
Программные средства ОС Windows XP Professional SP3. Данная курсовая работа выполнена в программе Microsoft Word 2003, а также были использованы другие программы: Microsoft PowerPoint, Nero StartSmart.
1. Языки программирования
Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.
Можно сформулировать ряд требований к языкам программирования и классифицировать языки по их особенностям.
Основные требования, предъявляемые к языкам программирования:
наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;
единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;
гибкость - возможность относительно удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;
модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;
однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач [2].
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
· машинные;
· машинно-оpиентиpованные (ассемблеры);
· машинно-независимые (языки высокого уровня).
Машинные языки и машинно-
Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае “низкий уровень” не значит “плохой”. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. [2]
При программировании на машинном
языке программист может
Поэтому в случае, когда
нужно иметь эффективную
Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде. [2]
Язык ассемблера позволяет
программисту пользоваться текстовыми
мнемоническими (то есть легко запоминаемыми
человеком) кодами, по своему усмотрению
присваивать символические
С помощью языков низкого
уровня создаются очень эффективные
и компактные программы, так как
разработчик получает доступ ко всем
возможностям процессора. С другой
стороны, при этом требуется очень
хорошо понимать устройство компьютера,
затрудняется отладка больших приложений,
а окончательная программа не
может быть перенесена на компьютер
с другим типом процессора. Подобные
языки обычно применяют для написания
небольших системных
Таким образом, программы, написанные
на языке ассемблера, требуют значительно
меньшего объема памяти и времени
выполнения. Знание программистом языка
ассемблера и машинного кода дает
ему понимание архитектуры
Языки высокого уровня - были разработаны для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров, их архитектуры. Уровень языка характеризуется степенью его близости к естественному, человеческому языку. Машинный язык не похож на человеческий, он крайне беден в своих изобразительных средствах. Средства записи программ на языках высокого уровня более выразительны и привычны для человека. Например, алгоритм вычисления по сложной формуле не разбивается на отдельные операции, а записывается компактно в виде одного выражения с использованием привычной математической символики. Составить свою или понять чужую программу на таком языке гораздо проще.
Важным преимуществом языков высокого уровня является их универсальность, независимость от ЭВМ. Программа, написанная на таком языке, может выполняться на разных машинах. Составителю программы не нужно знать систему команд ЭВМ, на которой он предполагает проводить вычисления. При переходе на другую ЭВМ программа не требует переделки. Такие языки – не только средство общения человека с машиной, но и людей между собой. Программа, написанная на языке высокого уровня, легко может быть понята любым специалистом, который знает язык и характер задачи.
Таким образом, можно сформулировать основные преимущества языков высокого уровня перед машинными:
алфавит языка высокого уровня значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;
набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;
требуемые операции задаются с помощью общепринятых математических обозначений;
данным в языках высокого уровня присваиваются индивидуальные имена, выбираемые программистом;
в языке может быть предусмотрен
значительно более широкий
Таким образом, языки высокого уровня в значительной мере являются машинно-независимыми. Они облегчают работу программиста и повышают надежность создаваемых программ.
Основные компоненты алгоритмического языка:
· алфавит,
· синтаксис,
· семантика.
Алфавит — это фиксированный
для данного языка набор
Синтаксис — это правила
построения фраз, позволяющие определить,
правильно или неправильно
Семантика определяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
Языки высокого уровня делятся на:
· процедурные;
· логические;
· объектно-ориентированные.
Процедурные языки предназначены для однозначного описания алгоритмов. При решении задачи процедурные языки требуют в той или иной форме явно записать процедуру ее решения.
Первым шагом в развитии
процедурных языков программирования
было появление проблемно-
Разнообразие классов
задач привело к тому, что на
сегодняшний день разработано несколько
сотен алгоритмических языков. Правда,
широкое распространение и
В то же время в середине 60-х годов начали разрабатывать алгоритмические языки широкой ориентации – универсальные языки. Обычно они строились по принципу объединения возможностей узко-ориентированных языков. Среди них наиболее известны PL/1, Pascal, C, C+ , Modula, Ada. Однако, как любое универсальное средство, такие широко-ориентированные языки во многих конкретных случаях оказываются менее эффективными [2].
Логические языки- (Prolog, Lisp,
Mercury, KLO и др.) ориентированы не на
запись алгоритма решения задачи,
а на систематическое и
Объектно-ориентированные языки (Object Pascal, C++, Java, Objective Caml. и др.). Руководящая идея объектно-ориентированных языков заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое - объект.
Объектно-ориентированный подход использует следующие базовые понятия:
· объект;
· свойство объекта;
· метод обработки;
· событие;
· класс объектов.
Объект — совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).
Свойство — это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, совокупность которых выделяют (определяют) объект.
Метод — это набор действий над объектом или его свойствами.
Событие — это характеристика изменения состояния объекта.
Класс — это совокупность объектов, характеризующихся общностью применяемых к ним методов обработки или свойств.
Существуют различные
объектно-ориентированные
· инкапсуляция;
· наследование.
Под инкапсуляцией понимается скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса (т. е. скрытие деталей, несущественных для использования объекта). Инкапсуляция (объединение) означает сочетание данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение.
Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса. [2]
Фактически объектно-
Программа на объектно-ориентированном
языке, решая некоторую задачу, по
сути, описывает часть мира, относящуюся
к этой задаче. Описание действительности
в форме системы
1.1 История развития языков программирования
Программа – алгоритм, записанный на языке программирования. Программа – последовательность операторов языка. Языки программирования – искусственные языки, строго формализованные; существует правила записи операторов языка – синтаксис языка.
1. Машинный язык (40-50 годы XX в.).
Программы на машинном языке
– очень длинные
2. Ассемблер (начало 50-ых годов XX в.).
Вместо 1 и 0 программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые похожи на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код использовался компилятор (спец. программа – переводчик в машинный код).
3. Первые языки программирования высокого уровня.
С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня (high-level language). Эти языки были Машино независимыми (не привязаны к опред. типу ЭВМ). Но для каждого языка были разработаны собственные компиляторы.
Примеры таких языков: FORTRAN (FORmula TRANslator; 1954) предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – Common Business-Oriented Language); язык BASIC (Beginner’s All Purpose Instuction Code – универсальный язык символьных инструкций для начинающих) (1964 г.)
4. Алгоритмические языки программирования.
С начала 80-ых г. XX в. начали создаваться
языки программирования, которые
позволили перейти к
5. Языки объектно-ориентированного программирования
(90-ые г. XX в.). В основу
этих языков положены
язык С++ (1983) - продолжение алгоритм. языка Си;
язык Object Pascal (1989) был создан на основе языка Pascal. После создания среды программирования – Delphi (1995);
язык Visual Basic(1991) был создан
корпорацией Microsoft на основе языка Qbasic
(1975) для разработки приложений с
графическим интерфейсом в
6. Языки программирования для компьютерных сетей.
В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными ОС (Windows, Linux, Mac OS и др.) могли выполняться одни и те же программы. Исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной:
язык Java - объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения (1995);
язык JavaScript – язык сценариев Web-страниц (компания Netscape). (1995)
7. Языки программирования на платформе .NET.
Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:
на языке Visual Basic .Net ( на основе Visual Basic) - 2003 г.;
на языке Visual C# (С-шарп) – на основе языков С++ и J – 2003 г.;
на языке Visual J# (J-шарп) – на основе Java и JavaScript – 2003 г.
Интерпретаторы и компиляторы
Для того, чтобы процессор мог выполнить программу, программа и данные должны быть загружены в оперативную память. Необходимо, чтобы в ОП был размещена программа - транслятор, автоматически переводящий с языка программирования в машинные коды. Трансляторы бывают двух типов: интерпретаторы и компиляторы. Интерпретатор – программа, которая обеспечивает последовательный перевод операторов программы с одновременным их выполнением. Достоинством интерпретатора является удобство отладки (поиск ошибок), недостаток – сравнительно малая скорость выполнения. Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением .exe).
Системы объектно-ориентированного
программирования содержат программу-транслятор
и позволяют работать в режиме
как интерпретатора, так и компилятора.
На этапе разработки и отладки
проекта используется режим интерпретатора,
а для получения готовой
2. Обзор современных языков программирования
Алгоритмический язык (язык программирования) представляет собой один из способов записи алгоритма. Язык программирования является строго формализованным, то есть все команды записываются по определенным правилам и отступления от этих правил не допускаются. Например, в русском языке можно при разделении элементов перечисления поставить запятую (, ) или точку с запятой (;). А в языке программирования при записи команд нельзя изменить ни одного знака - возникает ошибка.
Правила записи команд на конкретном языке называются синтаксисом языка. Синтаксис определяет, какая команда будет считаться правильной, а какая нет. Например, в языке Basic команды CLS и FOR I=1 TO 10 считаются правильными, а команды CLERSCREEN и FOR I FROM 1 TO 10 - неправильными.
Каждая команда, записанная на языке программирования, имеет определенное значение, то есть заставляет компьютер выполнять те или иные действия. Правила, определяющие смысл команд, называются семантикой языка. Например, команда CLS вызывает очистку экрана.
Каждый язык имеет алфавит
– набор символов, которые можно
использовать при записи программ на
этом языке. Разнее версии одного и
того же языка могут немного
Программа, написанная на языке программирования, состоит из команд (операторов), задающих последовательность действий. Эти действия выполняются над некоторыми объектами. Объектами могут быть числа, текстовые строки, переменные и другие. Языки отличаются друг от друга множеством допустимых объектов и набором операций, которые можно выполнять над этими объектами. [7]
Программа, написанная на языке программирования, представляет собой просто текст. Чтобы компьютер мог выполнять команды, содержащиеся в этой программе, надо перевести программу в набор понятных компьютеру инструкций, записанных в двоичной форме (в код). Такой перевод называется трансляцией.
По способу трансляции языки делятся на:
· компиляторы
· интерпретаторы
В компиляторах перевод всего
текста программы в код осуществляется
сразу, и создаются исполняемый
файл, который затем можно
В интерпретаторах при запуске программы каждая ее строчка последовательно переводится в код и выполняется; затем переводится в код и выполняется другая строчка, и так далее.
По уровню (особенностям построения) языки делятся на:
Машинно-ориентированные (ассемблеры).
Первым значительным шагом представляется переход к языку ассемблера. Не очень заметный, казалось бы, шаг — переход к символическому кодированию машинных команд — имел на самом деле огромное значение.
Программисту не надо было
больше вникать в хитроумные способы
кодирования команд на аппаратном уровне.
Более того, зачастую одинаковые по
сути команды кодировались совершенно
различным образом в
Появилась также возможность использования макросов и меток, что также упрощало создание, модификацию и отладку программ. Появилось даже некое подобие переносимости — существовала возможность разработки целого семейства машин со сходной системой команд и некоего общего ассемблера для них, при этом не было нужды обеспечивать двоичную совместимость.
Вместе с тем, переход
к новому языку таил в себе и
некоторые отрицательные (по крайней
мере, на первый взгляд) стороны. Становилось
почти невозможным
Кроме того, здесь впервые
в истории развития программирования
появились два представления
программы: в исходных текстах и
в откомпилированном виде. Сначала,
пока ассемблеры только транслировали
мнемоники в машинные коды, одно
легко переводилось в другое и
обратно, но затем по мере появления
таких возможностей, как метки
и макросы, дизассемблирование становилось
все более и более трудным
делом. К концу ассемблерной эры
возможность автоматической трансляции
в обе стороны была утеряна
окончательно. В связи с этим было
разработано большой количество
специальных программ-
Каждый оператор языка представляет собой мнемоническое (условное) обозначение машинной команды. Естественно, что каждый тип процессора имеет свой набор команд, а значит, свой ассемблер. Ассемблеры используются для создания драйверов, программирования различных устройств, а также для написания фрагментов программ, где очень важно время выполнения (так как на ассемблере можно написать максимально эффективную программу [8].
Универсальные.
Иногда их делят на процедурно-ориентированные и объектно-ориентированные, но в настоящее время граница между этими видами стерлась. Эти языки используются чаще всего для решения самых разнообразных задач. И хотя каждый из языков имеет свои особенности, что делает его наиболее эффективными для решения определенного вида задач, но в принципе для решения любой задачи можно выбирать любой язык программирования.
Среди универсальных языков программирования в настоящее время наиболее распространены:
2.1 Си его разновидности
· Си [C] - Многоцелевой язык программирования высокого уровня, разработанный Денисом Ритчи в начале 1970-х гг. на базе языка BCPL. Используется на миниЭВМ и ПЭВМ. Является базовым языком операционной системы Unix, однако применяется и вне этой системы, для написания быстродействующих и эффективных программных продуктов, включая и операционные системы. Для IBM PC имеется ряд популярных версий языка Си, в том числе - Turbo C (фирмы Borland), Microsoft C и Quick C (фирмы Microsoft ), а также Zortech C (фирмы Symantec). Многие из указанных версий обеспечивают также работу с Си и Си++.
· Си++ [C++] - Язык программирования высокого уровня, созданный Бьярном Страустрапом на базе языка Си. Является его расширенной версией, реализующей принципы объектно-ориентированного программирования. Используется для создания сложных программ. Для IBM PC наиболее популярной является система Turbo C++ фирмы Borland (США).
· C# (C Sharp) – “ Си Шарп ”: объектно-ориентированный яык программирования, о разработке которого в 2000 г. объявила фирма Microsoft . По своему характеру он напоминает языки C++ и Java и предназначен для разработчиков программ, использующих языки C и С++ для того, чтобы они могли более эффективно создавать Интернет-приложения. Указывается, что C # будет тесно интегрирован с языком XML[1].
2.2 Паскаль
Паскаль [PASCAL - акроним с французского - Program Applique a la Selection et la Compilation Automatique de la Litterature] - Процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Назван в честь французского математика XVII века Блеза Паскаля.
В своей начальной версии
Паскаль имел довольно ограниченные
возможности, поскольку предназначался
для учебных целей, однако последующие
его доработки позволили