Инструментальные средства программирования на персональных ЭВМ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО  
ПО ОБРАЗОВАНИЮ
 
 

БРЯНСКИЙ  ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
 
 

Кафедра «Информатики и программного обеспечения»

                                        
 
 
 
 
 

КУРСОВАЯ  РАБОТА

  ИНСТРУМЕНТАЛЬНЫЕ  СРЕДСТВА ПРОГРАММИРОВАНИЯ  НА ПЕРСОНАЛЬНЫХ ЭВМ  
 
 
 
 
 
 

Студент группы 09 ЭК(б)

                                                          ___________Корнеева Е.В. 

                                                   Преподаватель 

___________Седнев  А.В. 
 
 

                                                   
 
 

Брянск 2010

1. Введение. 

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

    Описать процесс — означает определить последовательность состояний заданной информационной среды. Если мы хотим, чтобы по заданному  описанию требуемый процесс порождался автоматически на каком-либо компьютере, необходимо, чтобы это описание было формализованным. Такое описание называется программой.

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

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

    Программа или логически связанная совокупность программ на носителях данных, снабженная программной документацией, называется программным средством (ПС). Программа позволяет осуществлять некоторую автоматическую обработку данных на компьютере. Программная документация позволяет понять, какие функции выполняет та или иная программа ПС, как подготовить исходные данные и запустить требуемую программу в процесс ее выполнения, а также: что означают получаемые результаты (или каков эффект выполнения этой программы). Кроме того, программная документация помогает разобраться в самой программе, что необходимо, например, при ее модификации. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     2. Системы программирования. 

      2.1. Алгоритм и программа.

  Системы программирования (инструментальные средства программирования) служат для создания новых компьютерных программ.

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

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

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

   Языки программирования – искусственные  языки. От естественных они отличаются ограниченным числом «слов», значение которых понятно транслятору, и  очень строгими правилами записи команд (операторов). Совокупность подобных требований образует синтаксис языка программирования, а смысл каждой команды и других конструкций языка – его семантику. Нарушение формы записи программы приводит к тому, что транслятор не может понять значение оператора и выдает сообщение о синтаксической ошибке, а правильно написанное, но не отвечающее алгоритму использование команд языка приводит к семантическим ошибкам (называемым еще логическими ошибками или ошибками времени выполнения).

   Процесс поиска ошибок в программе называется тестированием, процесс устранения ошибок – отладкой. 

         2.3. Компиляторы и  интерпретаторы

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

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

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

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

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

         2.4. Уровни языков  программирования

   Разные  типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает  его особенности, то он называется языком программирования низкого уровня. Операторы языка близки к машинному коду и ориентированы на конкретные команды.

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

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

   Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. 

         2.5. Поколения языков  программирования.

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

   В первое поколение входят языки, созданные  в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция – одна строка».

   Расцвет второго поколения языков программирования пришелся на конец 50-х – начало 60-х годов. Тогда был разработан символический ассемблер, в котором появилось понятие переменной. Благодаря его возникновению заметно возросли скорость разработки и надежность программ.

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

   С начала 70-х годов по настоящее время продолжается период языков четвертого поколения. Эти языки предназначены для реализации крупных проектов, повышения их надежности и скорости создания. Они обычно ориентированы на специализированные области применения, используя проблемно-ориентированные языки. Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода.

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

   2.6. Классификация языков программирования.

   Современное состояние языков программирования можно представить в виде следующей  классификации: 

     

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

   Среди процедурных языков выделяют в свою очередь структурные и операционные.

   В структурных языках одним оператором записываются целые алгоритмические  структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Среди операционных языков известны такие, как Фортран, Бейсик, Фокал.

   Методология структурного программирования основана на использовании подпрограмм и независимых структур данных. Подпрограммы позволяют заменять в тексте упорядоченные блоки команд, от чего программный код становится более компактным. Структурный подход обеспечивает создание более понятных и легко читаемых программ, упрощает их тестирование и отладку.  К структурным языкам относят: FORTRAN, Algol, COBOL, Basic, Pascal, C и т.д. 

  • Декларативные языки позволяют программисту определить как правила по решению данной задачи, так и взаимосвязи между объектами, с которыми имеет дело программа. Этот подход требует больших усилий при создании языка и представляет собой наиболее мощное средство программирования. Декларативные языки разделяются на функциональные и логические.

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

Первым  таким языком стал LISP.

      Логическое  программирование – это совокупность аксиом и правил, определяемых отношение между объектом и целью. Логические языки — это языки искусственного интеллекта. Первым таким языком стал Prolog и именно на его основе создается язык, который будет использован в компьютерах пятого поколения. 

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

     Основой объектно-ориентированного программирования (ООП) является понятие объекта. Его суть состоит в том, что объект объединяет в себе структуры данных и характерные только для него методы их обработки. Такой подход меняет стиль программирования. Он заключается в отображении физических объектов реального мира на программную среду. Работать с объектами гораздо удобней, чем с традиционными процедурами преобразования данных. ООП является более естественным, так как предоставляет возможность выбрать имеющиеся или создать новые объекты. Объектно-ориентированные языки по сравнению с процедурными являются языками более высокого уровня. К таким языкам относятся:  Smalltalk, C+ +, Java.

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

     К объектно-ориентированным системам визуального проектирования относятся: Visual Basic, Delphi, C++ Builder, Visual C++, C#. 

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

  • Delphi язык программирования, который используется в одноимённой среде разработки. Сначала язык назывался Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

     Изначально  среда разработки была предназначена  исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ GNU/Linux (как Kylix).Однако после выпуска в 2002 году Kylix 3 его разработка была прекращена и, вскоре после этого, было объявлено о поддержке Microsoft .NET. При этом высказывались предположения, что эти два факта взаимосвязаны.

     Реализация  среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как GNU/Linux, Mac OS X и Windows CE.

     Также предпринимались попытки использования  языка в проектах GNU и написания компилятора для GCC.

     Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию  располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».

     Object Pascal (Delphi) являются результатом функционального расширения Turbo Pascal.

     Delphi оказал огромное влияние на  создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.

Версия 1 была предназначена для разработки под 16-разрядную платформу Win16;

Версии  со второй компилируют программы под 32-разрядную платформу Win32;

Вместе  с 6-й версией Delphi вышла совместимая  с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему GNU/Linux;

Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);

Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET.

Delphi for .NET среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.

Первая  версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET.

     В настоящее время, в Delphi 2006, можно  писать приложения для .NET, используя  стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет  создавать .NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием библиотек VCL и CLX.

Delphi 2006 поддерживает технологию MDA с помощью  ECO (Enterprise Core Objects) версии 3.0.

     В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.[5]

     Однако  в ноябре того же года было принято  решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland.

     В августе 2006 года Borland выпустил облегченные  версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++.

     В марте 2008 года было объявлено о прекращении  развития этой линейки продуктов.

     В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

     В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.

     25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. Версия принесла множество нововведений в язык, как-то[8]:

По умолчанию  полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).

Обобщённые типы, они же generics.

     Новая директива компилятора $POINTERMATH [ON|OFF].

Функция Exit теперь может принимать параметры  в соответствии с типом функции.

     Среди многих распространённых программных  продуктов, сделанных на Delphi, можно найти:

Продукция Borland: Borland Delphi, Borland C++ Builder, Borland JBuilder 1 и 2 версии.

      Администрирование/разработка баз данных: MySQL Tools (Administrator, Query Browser), Navicat, IBExpert, TOAD.

      Инженерное  ПО: Altium Designer/Protel (проектирование электроники).

      Просмотрщики графики: FastStone Image Viewer, FuturixImager, Photofiltre.

Инструментальные средства программирования на персональных ЭВМ