
- •Содержание
- •Глава 1 Теоретические основы алгоритмизации и программирования___ 5
- •Глава 2 Создание программного продукта__________________________17
- •Глава 1.Теоретические основы алгоритмизации и программирования
- •1.2. Языки программирования
- •Глава 2. Создание программного продукта
- •2.1 Системы программирования
- •2.2 Методы программирования
- •11) Системы программирования
1.2. Языки программирования
Для предоставления алгоритма в виде, понятном компьютеру, служат языки программирования. Сначала всегда разрабатывается алгоритм действий, а потом он записывается на одном из таких языков. В итоге получается текст программы – полное, законченное и детальное описание алгоритма на языке программирования. Затем этот текст программы специальными служебными приложениями, которые называются трансляторами, либо переводится в машинный код, либо исполняется.
Самому написать программу в машинном коде весьма сложно, причем эта сложность резко возрастает с увеличением размера программы и трудоемкости решения нужной задачи. Поэтому сегодня практически все программы создаются с помощью языков программирования, Теоритически программу можно написать и средствами обычного человеческого языка – это называется программированием на метаязыке (подобный подход обычно используется на этапе составления алгоритма), но автоматически перевести такую программу в машинный код пока невозможно из-за высокой неоднозначности естественного языка.
Языки программирования
– искусственные языки. От естественных
они отличаются ограниченным числом
слов, значение которых понятно транслятору,
и очень строгими правилами записи команд
(операторов). Совокупность подобных
требований образует синтаксис языка
программирования, а смысл каждой команды
и других конструкций языка – его
семантику. Нарушение формы записи
программы приводит к тому, что транслятор
не может понять назначение оператора
и выдает сообщение о синтаксической
ошибке, а правильно написанное, но не
отвечающее алгоритму использование
команд языка приводит к семантическим
ошибкам (логическим или ошибкам времени
выполнения).
С помощью языка программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, надо этот текст либо автоматически перевести в машинный код (для этого служат программы-компиляторы) и затем использовать отдельно от исходного текста, либо сразу выполнять команды языка, указанные в тексте программы (этим занимаются программы-интерпретаторы).
Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня / 2 стр.571/. Операторы такого языка близки к машинному коду и ориентированы на конкретные команды процессора.
Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью символьных уловных обозначений, называемых мнемониками /2 стр. 571/. Однозначное преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией / 2 стр.571/.
Каждой конкретной компьютерной архитектуре соответствует свой язык ассемблера, а написанная на нем программа может быть использована только в этой среде, т.к. наборы инструкций для каждой модели процессора отличаются друг от друга.
Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше.
Языка высокого уровня бывают четырех видов:
Императивные (процедурные),
Функциональные,
Логические,
Объектно-ориентированные.
Основными объектами в императивных языках являются переменные, операторы присвоения, стандартные алгоритмические конструкции.
В функциональных языках программирования используются функции, значения которых определяются по заданным параметрам. Традиционные переменные и операторы присвоения при этом уже не нужны или, по крайней мере, не обязательны (LISP).
В программах, написанных на логических языках, нет определенно, фиксированного порядка выполнения правил и шагов алгоритма. Выбор подходящей последовательности возлагается на систему (Prolog).
Объектно-ориентированные языки упрощают программирование с использованием технологии объектно-ориентированного программирования (Java, C ++) / 5 стр.47/.
Языки высокого уровня – это:
FORTRAN (Фортран). Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е годы. Программисты, разработавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться во многих организациях.
COBOL (Кобол). Это компилируемый язык для применения в экономической области и решения бизнес-задач, разработанный в начале 60-х годов. Он отличается большой «многословностью» - его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сегодня.
Algol (Алгол). Компилируемый язык, созданный в 1960 году. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.
Pascal (Паскаль). Паскаль, созданный в конце 70-х годов Никлаусом Виртом, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов.
Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении.
С (Си). Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора. Он во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix).
С++ (Си++). Это объективно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки.
Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора – виртуальной Java-машины JVM, версии которой созданы сегодня для любых платформ. Благодаря наличию множества Java-машин программы на Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Ява сегодня занимает второе место в мире после Бейсика.
Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini) и созданию платформно-назависимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans). Пока основной недостаток этого языка – невысокое быстродействие, т.к. язык Ява интерпретируемый.
С# (Си Шарп). В конце 90-х годов в компании Mikrosoft под руководством Андерса Хейльсберга был разработан язык С#. В нем воплотились лучшие идеи Си и Си++, а так же достоинства Java. Правда, С#, как и другие технологии Microsoft, ориентирован на платформу Windows. Однако формально он не отличается от прочих универсальных языков. Он предназначен для быстрой разработки .NET-приложений, и его реализация в системе Microsoft Visual Studio .NET содержит множество особенностей, привязывающих Си# к внутренней архитектуре Windows и платформы .NET.
Помимо алгоритмических языков существуют так же языки программирования баз данных. Они отличаются от алгоритмических прежде всего решениями задач.
Для управления большими базами данных и их эффективной обработки разработаны СУБД (Системы Управления Базами Данных). Практически в каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык, ориентированный на особенности этой СУБД и не переносимый на другие системы. Сегодня в мире насчитывается три ведущих производителя СУБД: Microsoft (SQL Server), IBM (DB2) и Oracle. Их продукты нацелены на поддержку одновременной работы тысячи пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. В каждой из этих СУБД реализован собственный диалект SQL, ориентированный на особенности конкретного сервера, поэтому SQL-программы, подготовленные для разных СУБД, друг с другом, как правило, не совместимы.
Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase, язык который был интерпретируемым. Затем для него были созданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня самой распространенной настольной СУБД стала система Microsoft Access.
С активным развитием глобальной сети было создано немало реализаций популярных языков программирования, адаптированных специально для Интернета. Все они отличаются характерными особенностями: языки являются интерпретируемыми, интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах. Такие языки называются скрипт-языками:
HTML. Общеизвестный язык для оформления документов, Он очень прост и содержит элементарные команды форматирования текста, добавления рисунков, задания шрифтов и цветов, организации ссылок и таблиц. Все Web-страницы написаны на языке HTML или используются его расширения.
Perl. Был разработан в 80-х годах Ларри Уоллом. Он задумывался как средство эффективной обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. По мощности Perl значительно превосходит языки типа Си. В нем введено много часто используемых функций работы со строками, массивами, всевозможные средства преобразования данных, управления процессами, работы с системной информацией и др.
РНР. Расмус Лердорф, активно использовавший Perl-скрипты, в 1995 году решил улучшить этот язык, упростив его и дополнив встроенными средствами доступа к базам данных. В результате появилась разработка Personal Contents Page/Forms Interpreter (PHP/FI). Уже через пару лет программы на его основе использовались на 50 тыс. сайтов. В 1997 году его значительно усовершенствовали Энди Гутманс и Зив Сураски, и под названием РНР 3.0 этот язык быстро завоевал популярность у создателей динамических сайтов во всем мире.
Tcl/Tk. В конце 80-х годов Джон Аустираут придумал популярный скрипт-язык Tcl и библиотеку Tk. В Tcl он попытался воплотить видение идеального скрипт-языка. Язык ориентирован на автоматизацию рутинных процессов и состоит из мощных команд, предназначенных для работы с абстрактными не типизированными объектами. Он не зависим от типа системы и при этом позволяет создавать программы с графическим интерфейсом.
VRML. Язык был создан в 1994 году для организации виртуальных трехмерных интерфейсов в Интернете. Он позволяет описывать в текстовом виде различные трехмерные сцены, освещение и тени, текстуры (покрытия объектов), создавать свои миры, путешествовать по ним, «облетать» со всех сторон, вращать в любых направлениях, масштабировать, регулировать освещенность и т.д.
XML.В 1996 году WWW-консорциум, ответственный за стандарты на Интернет-технологии, приступил к подготовке универсального языка разметки структуры документов, базировавшегося на достаточно давно созданной в IBM технологии SGML. Новый язык получил название XML. Сегодня он служит основой множества системных, сетевых и прикладных приложений, позволяя представлять в прозрачном для пользователей и программ текстовом виде различные аспекты внутренней структуры иерархически организованных документов.
Из универсальных языков программирования сегодня наиболее популярны следующие:
-Бейсик (Basic) – для освоения требует начальной подготовки (общеобразовательная школа);
-Паскаль (Pascal) – требует специальной подготовки (школы с углубленным изучением предмета и общетехнические вузы);
-Си++ (С++), Ява (Java), Си Шарп(C#) – требуют профессиональной подготовки (специализированные средние и высшие учебные заведения).