Язык программирования и среда разработки. Цели курса. Язык программирования и среда программирования


Что такое среда программирования? | Компьютер для начинающих

января 31, 2015 Светлана Козлова

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

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

Интегрированная среда включает все необходимое для написания:

Среда программирования

• редактор синтаксиса (а часто и подсветкой ошибок синтаксиса и большим количеством подсказок, главное уметь читать) конкретного языка программирования. Здесь и создается программный код;

• компилятор. Отвечает за трансляцию программы, переводит написанную на приближенном к человеческом языку код в символы, понятные компьютеру, машинный код. Язык С++ относится языкам компиляции, поэтому для того, чтобы обработать текст программы необходим компилятор, зачастую вместо компилятора используется интерпретатор;• отладчик. Является инструментом для отладки написанной программы. Известно, что ошибки в программах допускают все поголовно: от синтаксических (как правило, еще на стадии компиляции они должны быть выявлены) и, что гораздо важнее, логическими. Выявить и устранить последний тип ошибок помогает отладчик программ.

Здесь был приведен базовый набор среды программирования. Иногда могут добавляться такие элементы, как, например, управление версиями, всякие программы (инструментарий) для создания графического интерфейса программы (Visual Studio) или инспектор объектов.

Как правило, для того, чтобы успешно выполнить написанную программу на С++, надо пройти благополучно преодолеть шесть этапов:

– редактирование;– предварительная (препроцессорная) обработка;– компоновка;– компиляция;– загрузка;И в итоге, выполнение.

Редактирование выполняется посредством редактора программ, который, по сути, является самым обычным редактором текстовых файлов, такой как блокнот, word, но встроенный в ту или иную среду программирования. Программист создает в этом редакторе свою программу на С++ и, по мере необходимости, вносит в нее различные поправки, корректировки.

Имена файлов программ на С++ имеют расширения *.с или *.срр. Код для просмотра можно открыть обычным текстовым редактором.

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

Также рекомендую изучить следующие уроки этого раздела:

Понравился урок - поделитесь с друзьями! (Для этого нажмите одну из кнопок ниже)

Также рекомендую изучить следующие уроки этого раздела:

Комментирование и размещение ссылок запрещено.

www.kurs-pc-dvd.ru

НОУ ИНТУИТ | Лекция | Язык программирования и среда разработки. Цели курса

Аннотация: Обзорная лекция, в которой вводятся основные понятия курса, рассматривается среда разработки – Visual Studio 2008 и Framework .Net 3.5. Рассматриваются типы проектов, и строится пример достаточно большого проекта.

Проект к данной лекции Вы можете скачать здесь.

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

В этом курсе в качестве языка программирования выбран язык C# и его версия 3.0, в качестве среды разработки программных проектов - Visual Studio 2008, Professional Edition и Framework .Net в версии 3.5.

Язык C#

Язык C# является наиболее известной новинкой в области языков программирования. По сути это язык программирования, созданный уже в 21-м веке. Явившись на свет в недрах Microsoft, он с первых своих шагов получил мощную поддержку. Язык признан международным сообществом. В июне 2006 года Европейской ассоциацией по стандартизации принята уже четвертая версия стандарта этого языка: Standard ECMA-334 C# Language Specifications, 4-th edition - http://www.ecma-international.org/publications/standards/Ecma-334.htm.

Международной ассоциацией по стандартизации эта версия языка узаконена как стандарт ISO/IEC - 23270. Заметим, что первая версия стандарта языка была принята еще в 2001 году. Компиляторы Microsoft строятся в соответствии с международными стандартами языка.

Язык C# является молодым языком и продолжает интенсивно развиваться. Каждая новая версия языка включает принципиально новые свойства. Не стала исключением и версия 3.0, рассматриваемая в данном учебном курсе.

Руководителем группы, создающей язык C#, является сотрудник Microsoft Андреас Хейлсберг. Он был известен в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки - Delphi. В Microsoft он участвовал в создании версии языка Java - J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, C# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, дающее возможность повторного использования созданных компонентов. Создаваемые компилятором компоненты являются само-документируемыми, помимо программного кода содержат метаинформацию, описывающую компоненты, и поэтому могут выполняться на различных платформах.

Из других важных факторов отметим следующие:

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

В каком направлении развивается язык C#? Назовем новинки, появившиеся в версии 3.0.

На первое место я бы поставил возможности создания качественно новых типов проектов на C#. Конечно, новые типы проектов нельзя отнести к новинкам языка C#. Эти возможности предоставляет каркас Framework .Net 3.5 и Visual Studio 2008. Но поскольку язык, среда разработки и каркас среды тесно связаны, то с точки зрения программистов, работающих на C#, возможности построения программных проектов на C# существенно расширились.

Введение в язык инструмента, получившего название LINQ (Language Integrated Query). Сегодня ни один серьезный проект на C# не обходится без обмена данными с внешними источниками данных - базами данных, Интернет и прочими хранилищами. В таких ситуациях приходилось использовать специальные объекты (ADO .Net или их более ранние версии). При работе с ними нужно было применять SQL - специальный язык запросов. Благодаря LINQ язык запросов становится частью языка программирования C#. Тем самым реализована давняя мечта программистов - работать с данными, находящимися в различных внешних источниках, используя средства, принадлежащие языку программирования, не привлекая дополнительные инструментальные средства и языки.

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

Новые возможности появились при реализации параллелизма в программных проектах.

Будущее С#

Следующая версия языка С# 4.0 должна появиться параллельно с выходом новой версии Visual Studio 2010. Продолжается работа над версией C# 5.0. Можно отметить три основные тенденции в развитии языка - декларативность, динамичность и параллельность. Разработчики пытаются придать языку C# свойства, расширяющие традиционные возможности процедурных языков. Явно заметен тренд к функциональным языкам с их декларативным стилем. Такие свойства появились уже в C# 3.0, в следующих версиях они только расширяются.

В новой версии Visual Studio 2010 должны появиться новые динамические языки программирования: "железный змей" - Iron Python и Iron Ruby. Эти языки проще устроены, во многом из-за того, что не являются строго типизированными и потому не позволяют проводить контроль типов еще на этапе компиляции. В C# 4.0 введена возможность задания динамических переменных, аналогично тому, как это делается в динамических языках.

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

Компилятор как сервис, программирование на лету, - такие возможности должны появиться в C# 5.0. Можно не сомневаться, что C#-программистам в ближайшие годы скучать не придется.

Visual Studio 2008

Как уже отмечалось, принципиальной новинкой этой версии является возможность построения новых типов программных проектов, что обеспечивается новой версией каркаса Framework .Net 3.5. Если не считать этой важной особенности, то идейно Visual Studio 2008 подобна предыдущим версиям Visual Studio 2005 и Visual Studio 2003.

Рассмотрим основные особенности среды разработки Visual Studio.

Открытость

Среда разработки программных проектов является открытой языковой средой. Это означает, что наряду с языками программирования, включенными в среду фирмой Microsoft - Visual C++ .Net (с управляемыми расширениями), Visual C# .Net, Visual Basic .Net, - в среду могут добавляться любые языки программирования, компиляторы которых создаются другими фирмами.

Таких расширений среды Visual Studio сделано уже достаточно много, практически они существуют для всех известных языков - Fortran и Cobol, RPG и Component Pascal, Eiffel, Oberon и Smalltalk.

Новостью является то, что Microsoft не включила в Visual Studio 2008 поддержку языка Java. Допустимые в предыдущих версиях проекты на языке J++ в Visual Studio 2008 в настоящее время создавать нельзя, ранее созданные проекты в студии не открываются.

Открытость среды не означает полной свободы. Все разработчики компиляторов при включении нового языка в среду разработки должны следовать определенным ограничениям. Главное ограничение, которое можно считать и главным достоинством, состоит в том, что все языки, включаемые в среду разработки Visual Studio .Net, должны использовать единый каркас - Framework .Net. Благодаря этому достигаются многие желательные свойства: легкость использования компонентов, разработанных на различных языках; возможность разработки нескольких частей одного приложения на разных языках; возможность бесшовной отладки такого приложения; возможность написать класс на одном языке, а его потомков - на других языках. Единый каркас приводит к сближению языков программирования, позволяя вместе с тем сохранять их индивидуальность и имеющиеся у них достоинства. Преодоление языкового барьера - одна из важнейших задач современного мира. Visual Studio .Net, благодаря единому каркасу, в определенной мере решает эту задачу в мире программистов.

Framework .Net - единый каркас среды разработки приложений

В каркасе Framework .Net можно выделить два основных компонента:

  • статический - FCL (Framework Class Library) - библиотеку классов каркаса;
  • динамический - CLR (Common Language Runtime) - общеязыковую исполнительную среду.
Библиотека классов FCL - статический компонент каркаса

Понятие каркаса приложений - Framework Applications - появилось достаточно давно, оно широко использовалось еще в четвертой версии Visual Studio. Библиотека классов MFC (Microsoft Foundation Classes) играла роль каркаса приложений Visual C++.

Несмотря на то, что каркас был представлен только статическим компонентом, уже тогда была очевидна его роль в построении приложений. Уже в то время важнейшее значение в библиотеке классов MFC имели классы, задающие архитектуру строящихся приложений. Когда разработчик выбирал один из возможных типов приложения, например, архитектуру Document-View, то в его приложение автоматически встраивались класс Document, задающий структуру документа, и класс View, задающий его визуальное представление. Класс Form и классы, задающие элементы управления, обеспечивали единый интерфейс приложений. Выбирая тип приложения, разработчик изначально получал нужную ему функциональность, поддерживаемую классами каркаса. Библиотека классов поддерживала и традиционные для программистов классы, задающие расширенную систему типов данных, в частности, динамические типы данных - списки, деревья, коллекции, шаблоны.

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

Единство каркаса

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

Встроенные примитивные типы

Важной частью библиотеки FCL стали классы, задающие примитивные типы - те типы, которые считаются встроенными в язык программирования. Типы каркаса покрывают основное множество встроенных типов, встречающихся в языках программирования. Типы языка программирования проецируются на соответствующие типы каркаса. Тип, называемый в языке Visual Basic - Integer, а в языках С++ и C# - int, проецируется на один и тот же тип каркаса - System.Int32. В языке программирования, наряду с "родными" для языка названиями типов, разрешается пользоваться именами типов, принятыми в каркасе. Поэтому, по сути, все языки среды разработки могут пользоваться единой системой встроенных типов, что, конечно, способствует облегчению взаимодействия компонентов, написанных на разных языках.

Структурные типы

Частью библиотеки стали не только простые встроенные типы, но и структурные типы, задающие организацию данных - строки, массивы; динамические типы данных - стеки, очереди, списки, деревья. Это также способствует унификации и реальному сближению языков программирования.

Архитектура приложений

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

Модульность

Число классов библиотеки FCL велико (несколько тысяч), поэтому понадобился способ их структуризации. Логически классы с близкой функциональностью объединяются в группы, называемые пространством имен (Namespace). Основным пространством имен библиотеки FCL является пространство System, содержащее как классы, так и другие вложенные пространства имен. Так, уже упоминавшийся примитивный тип Int32 непосредственно вложен в пространство имен System и его полное имя, включающее имя пространства, - System.Int32.

В пространство System вложен целый ряд других пространств имен. Например, в пространстве System.Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов - списками, очередями, словарями. В пространство System.Collections, в свою очередь, вложено пространство имен Specialized, содержащее классы со специализацией, например, коллекции, элементами которых являются только строки. Пространство System.Windows.Forms содержит классы, используемые при создании Windows-приложений. Класс Form из этого пространства задает форму - окно, заполняемое элементами управления, графикой, обеспечивающее интерактивное взаимодействие с пользователем.

По ходу курса мы будем знакомиться со многими классами библиотеки FCL.

Общеязыковая исполнительная среда CLR - динамический компонент каркаса

Важным шагом в развитии каркаса Framework .Net стало введение динамического компонента каркаса - исполнительной среды CLR. С появлением CLR процесс выполнения приложений стал принципиально другим.

Двухэтапная компиляция. Управляемый модуль и управляемый код

Компиляторы языков программирования, включенные в Visual Studio .Net, создают код на промежуточном языке IL (Intermediate Language) - ассемблерном языке. В результате компиляции проекта, содержащего несколько файлов, создается так называемый управляемый модуль - переносимый исполняемый файл (Portable Executable или PE-файл). Этот файл содержит код на IL и метаданные - всю информацию, необходимую для CLR, чтобы под ее управлением PE-файл мог быть исполнен. Метаданные доступны и конечным пользователям. Классы, входящие в пространство имен Reflection, позволяют извлекать метаинформацию о классах, используемых в проекте. Этот процесс называется отражением. Об атрибутах классов, отображаемых в метаданные PE-файла, мы еще будем говорить неоднократно. В зависимости от выбранного типа проекта, PE-файл может иметь разные уточнения - exe, dll, mod или mdl.

Заметьте, PE-файл, имеющий уточнение exe, хотя и является exe-файлом, но это не обычный исполняемый Windows файл. При его запуске он распознается как PE-файл и передается CLR для обработки. Исполнительная среда начинает работать с кодом, в котором специфика исходного языка программирования исчезла. Код на IL начинает выполняться под управлением CLR (по этой причине код называется управляемым ). Исполнительную среду следует рассматривать как виртуальную IL-машину. Эта машина транслирует "на лету" требуемые для исполнения участки кода в команды реального процессора, который в действительности и выполняет код.

Виртуальная машина

Отделение каркаса от студии явилось естественным шагом. Каркас Framework .Net перестал быть частью студии и стал надстройкой над операционной системой. Теперь компиляция и создание PE модулей на IL отделено от выполнения, и эти процессы могут быть реализованы на разных платформах.

В состав CLR входят трансляторы JIT (Just In Time Compiler), которые и выполняют трансляцию IL в командный код той машины, где установлена и функционирует исполнительная среда CLR. Конечно, в первую очередь Microsoft реализовала CLR и FCL для различных версий Windows, включая Windows 98/Me/NT 4/2000, 32 и 64-разрядные версии Windows XP , Windows Vista и семейство .Net Server. Облегченная версия Framework .Net разработана для операционных систем Windows CE и Palm.

Framework .Net развивается параллельно с развитием языков программирования, среды разработки программных проектов и операционных языков. Версия языка C# 2.0 использовала версию Framework .Net 2.0. Операционная система Windows Vista включила в качестве надстройки Framework .Net 3.0. Язык C# 3.0 и Visual Studio 2008 работают с версией Framework .Net 3.5.

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

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

Дизассемблер и ассемблер

Для проекта, построенного на C#, иногда полезно провести анализ построенного PE-файла, его IL кода и связанных с ним метаданных. В состав Framework SDK входит дизассемблер - ildasm, выполняющий дизассемблирование PE-файла и показывающий в наглядной форме метаданные и IL код с комментариями. Мы иногда будем пользоваться результатами дизассемблирования. У меня на компьютере кнопка, вызывающая дизассемблер, находится на рабочем столе. Вот путь к папке, в которой обычно находится дизассемблер: C:\Program Files\Microsoft Visual Studio .Net\FrameworkSDK\Bin\ildasm.exe

Профессионалы, предпочитающие работать на низком уровне, могут программировать на языке ассемблера IL. В этом случае в их распоряжении будет вся мощь библиотеки FCL и все возможности CLR. У меня на компьютере путь к папке, где находится ассемблер, следующий: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ildasm.exe

В этом курсе к ассемблеру мы обращаться не будем, упоминаю о нем для полноты картины.

www.intuit.ru

Среда программирования. На пути к созданию собственного ПО

 

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

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

Существует среды программирования, которые позволяют работать с несколькими языками. Примером таких универсальных программных комплексов может служить Embarcadero RAD Studio, Eclipse, NetBeans, Qt Creator или Microsoft Visual Studio. Но обычно среда программирования «затачивается» под конкретный язык. В этом ряду яркими представителями являются следующие: Dev-C++, Visual Basic, Delphi.

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

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

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

Разработка новых языков программирования позволяет вносить в них некоторые изменения. Так, среда программирования Delphi, за основу которой взят Pascal, является по своему функционалу и возможностям новым языком программирования.

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

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

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

 

fb.ru

Выбор среды и языка программирования

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

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

Интегрированная среда программирования содержит в себе следующие модули для разработки программ:

  • редактор с подсветкой синтаксиса конкретного языка программирования. В нем программист пишет текст программы, так называемый программный код;

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

  • отладчик служит для отладки программ. Ошибки в программах допускают абсолютно все: и новички, и профессионалы - они могут быть синтаксическими (обычно они выявляются еще на стадии компиляции) и логическими. Для тестирования программы и выявления в ней логических ошибок служит отладчик. Программы на С++ обычно содержат ссылки на функции, определенные где-либо вне самой программы, например, в стандартных библиотеках или в личных библиотеках групп программистов, работающих над данным проектом. Объектный код, созданный компилятором, обычно содержит «дыры» из-за этих отсутствующих частей. Отладчик связывает объектный код с кодами отсутствующих функций, чтобы создать исполняемый загрузочный модуль (без пропущенных частей). Получаем в итоге файл с расширением .exe (для Windows), либо .out (для Linux).

Далее происходит загрузка программы в оперативную память компьютера и ее выполнение. С момента начала выполнения компьютер под управлением своего ЦПУ (центральное процессорное устройство) начинает последовательно выполнять в каждый момент времени по одной команде программы. Эти моменты времени носят название такт, каждый процессор имеет свою тактовую частоту, которую задает его внутренний тактовый генератор. Чем более высокая частота работы вашего процессора, тем, соответственно, лучше и тем быстрее выполняются ваши программы.

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению сред программирования, ориентированных на так называемую "быструю разработку". В основе систем быстрой разработки или RAD-систем (Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования. Суть RAD-систем заключается в том, что среда разработки берет на себя большую часть рутины, позволяя программисту уделить больше времени и внимания на разработку логики приложения и на создание функций обработки событий, а не на создание и «рисование» интерфейса и кнопок. Производительность программиста при использовании RAD-систем очень велика. Одной из широко используемых RAD-систем является Borland C++Builder. Builder позволяет создавать различные программы: от простейших однооконных приложений до программ управления распределенными базами данных. В качестве языка программирования в среде Borland C++Builder используется C++. Borland C++Builder использует богатую библиотеку готовых компонентов VCL (Visual Component Library), которая постоянно расширяется с выходом каждой новой версии продукта. Библиотека визуальных компонентов VCL инкапсулирует сложные, трудоемкие интерфейсы Windows API в удобные, расширяемые компоненты многократного применения. Она полностью интегрирована в среду разработки и это облегчает управление свойствами и методами компонентов через программный код.

Другой известной RAD-системой является Microsoft Visual Studio. Microsoft разработали свои модели компонентов – windows forms, с# которые являются конкурентом модели VLC.

Однако каждая из этих сред имеет свои достоинства и недостатки. И для каждого программиста они индивидуальны. Кому-то важна VCL с богатым выбором функционала, а для кого-то – быстродействующая и мощная windows forms или c#.

Для разработки пакета прикладных программ РПДП было решено в качестве среды разработки выбрать среду Borland C++Builder, так как эта среда позволяет разрабатывать приложения в наикратчайшие сроки и обладает богатым функционалом.

    1. Структура регистрации

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

В течение следования поезда из одного депо в другое (можно принять это за один сеанс работы), каждые несколько миллисекунд, происходит запись информации от основных блоков системы «Витязь» в регистрацию, которая находится в памяти регистратора параметров движения поезда. РПДП перехватывает эту информацию, подключаясь к головной и поездной шине CAN, по которым информация курсирует между этими «прослушиваемыми» блоками и блоком управления поезда. Информация в РПДП записывается строками по 17 байт. Строки имеют следующий формат:

Таблица 3.3.1 Структура одной записи (строки) информации

№ Байта

Описание

1

Час

2

Минута

3

Секунда

4

Милисекунда

5

Резерв

6,7

Идентификатор устройства CAN

8

Резерв

9

мч-кол. Байт в CAN, сч-номер CAN

10-17

Информация

Как видно из структуры, 6 и 7 байт отводятся под идентификатор устройства, от которого пришла информация, а 10-17 байты отвечают непосредственно за саму информацию. Эта информация описывает состояние устройства в момент времени, который хранится в 1,2,3,4 байтах. Существуют протоколы, по которым можно расшифровать принятые 8 байт информации и определить, в каком состоянии находилось устройство, какие значения выдавали датчики этого устройства, а также было ли оно исправно или нет.

Таким образом, каждые несколько миллисекунд в РПДП записывается информация от ряда устройств, а потом все повторяется заново. Перед каждым новым циклом записи в РПДП поступает сообщение с идентификатором 0х0011, который обозначает начало нового цикла записи. Один цикл записи называется кадром. Получается, что одна регистрация состоит из множества кадров, которые, в свою очередь, состоят из строк размером 17 байт. Размер кадра может быть разным, так как количество одновременно работающих и опрашиваемых устройств может в разные моменты времени отличаться. Ниже представлен фрагмент регистрации, состоящий из двух полных кадров. Первый кадр очень короткий, он состоит всего из одной строки с идентификатором начала кадра. Такое часто случается в самом начале регистрации, когда включается питание поезда, но основные устройства еще не успевают начать работу.

Рис. 3.3.1 Пример регистрации

    1. Вывод

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

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

При проектировании ППП были изучены существующие концепции программирования и выбраны наиболее подходящие для осуществления поставленной задачи, после изучения концепций был выбран язык программирования – C++. Помимо этого был произведен обзор существующих сред программирования, после чего было решено производить разработку ППП в среде Embarcadero RAD STUDIO XE2 Professional (C++ Builder XE2).

studfiles.net

Глава 4. Что такое среда программирования

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

  • редактор с подсветкой синтаксиса конкретного языка программирования. В нем программист пишет текст программы, так называемый программный код;
  • компилятор. Он, как мы уже с вами знаем, транслирует программу, написанную на высокоуровневом языке программирования в машинный язык (машинный код), непосредственно понятный компьютеру. Язык С++ относится к компилируемым языкам, поэтому для обработки текстов его программ служит компилятор, иногда вместо компилятора (либо вместе с ним) используется интерпретатор, для программ, написанных на интерпретируемых языках программирования;
  • отладчик. Служит для отладки программ. Как мы все знаем, ошибки в программах допускают абсолютно все: и новички, и профессионалы - они могут быть синтаксическими (обычно они выявляются еще на стадии компиляции) и логическими. Для тестирования программы и выявления в ней логических ошибок служит отладчик.
  • Мы рассмотрели базовую комплектацию среды программирования, но иногда в них присутствуют еще и такие компоненты, как система управления версиями, различные инструменты для конструирования графического интерфейса программы, браузер классов, инспектор объектов и другие.

Общее описание работы среды программирования

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

  • Первый этап - редактирование;
  • Второй этап - предварительная (препроцессорная) обработка;
  • Третий этап - компиляция;
  • Четвертый этап - компоновка;
  • Пятый этап - загрузка;
  • Шестой этап - выполнение.

Мы остановимся на системе С++, ориентированной на UNIX, чтобы лучше понять этот процесс. В Windows некоторые из этих этапов будут проходить автоматически без участия программиста.

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

Предварительная (препроцессорная) обработка. На этом этапе программист дает команду компилировать программу. Но прежде чем компилятор приступит к компиляции вашей программы, производится предварительная обработка программы. Что это значит? Любая программа в С++ подчиняется специальным командам, именуемым директивами препроцессора (обычно начинаются они со специального символа "#") , которые указывают, что в программе перед ее компиляцией нужно выполнить определенные преобразования. Обычно эти преобразования состоят во включении других текстовых файлов в файл, подлежащий компиляции, и выполнении различных текстовых замен. Создается файл с расширением .i .В нашей первой программе в следующей главе уже будет присутствовать подключение такого файла с помощью директивы препроцессора.

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

Компоновка. Следующий этап называется компоновка. Программы на С++ обычно содержат ссылки на функции, определенные где-либо вне самой программы, например, в стандартных библиотеках или в личных библиотеках групп программистов, работающих над данным проектом. Объектный код, созданный компилятором, обычно содержит «дыры» из-за этих отсутствующих частей. Компоновщик связывает объектный код с кодами отсутствующих функций, чтобы создать исполняемый загрузочный модуль (без пропущенных частей). Получаем в итоге файл с расширением .exe (для Windows), либо .out (для Linux).

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

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

Среда CodeBlocks

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

  • Распаковываем скачанный архив и запускаем инсталляционный файл, соглашаемся с лицензией. В окошке выбора компонентов для установки выбираем либо standart, либо full (принципиальной разницы нет).
  • Выбираем путь установки, либо оставляем по умолчанию, ставим.
  • Процесс установки благополучно завершен.

Запомнить:

  1. Среда программирования - это программа, в которой программисты разрабатывают свои программы.
  2. Основные компоненты среды программирования - это редактор, компилятор и отладчик.
  3. В редакторе набирается текст программы. Редактор имеет подсветку синтаксиса конкретного языка программирования.
  4. Компилятор переводит программу, набранную в редакторе, в машинный язык, непосредственно понятный компьютеру.
  5. Отладчик служит для нахождения ошибок в программе. А без ошибок в программах не бывает даже у очень опытных программистов.

iguania.ru

1.8. Среды и реализации языков программирования

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

Старейшей средой программирования считается UNIX - ма­шинно-независимая операционная система с разделением времени. Она предоставляет многочисленные мощные инструментальные средства для производства ПО и эксплуатации разнообразных язы­ков. Работа с этой средой осуществляется с помощью графического интерфейса, устанавливаемого поверх нее. Во многих случаях этим интерфейсом является Common Desktop Environment (CDE).

Последнюю стадию развития сред разработки ПО представляют Microsoft Visual C++, Visual BASIC, Delphi и Java Development Kit, которые предлагают легкий способ создания графических интер­фейсов для программ пользователя.

Ключевой вопрос реализации языка программирования заклю­чается в том, какое представление имеет программа во время ее выполнения на реальном компьютере, является ли этот язык машинным языком данного компьютера или нет? В зависимости от ответа на этот вопрос языки (вернее, их реализации) делятся на компилируемые и интерпретируемые.

Компилируемые языки. Компилируемыми принято счи­тать такие языки как С, C++, FORTRAN, Pascal и Ada. Это означает, что программы, написанные на этих языках, транслируются в ма­шинный код данного компьютера перед началом выполнения. Про­граммная интерпретация при этом ограничивается только интер­претацией набора программ поддержки выполнения, которые мо­делируют элементарные операции исходного языка, не имеющие близкого аналога в машинном языке.

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

Интерпретируемые языки. Реализуются с использова­нием программного интерпретатора. К таковым относятся языки LISP, ML, Perl, Postscript, Prolog и Smalltalk. При такой реализации транслятор выдает не машинный код используемого компьютера, а некую промежуточную форму программы. Эта форма легче для выполнения, чем исходная программа, но все же она отличается от машинного кода.

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

Развитие Всемирной паутины WWW и появление языка Java внесли изменения в описанную схему. Язык Java похож скорее на Pascal и C++, чем на LISP, но в большинстве случаев реализуется как интерпретируемый язык. Компилятор Java вырабатывает про­межуточный набор байт-кодов для виртуальной машины Java. Пе­редача байт-кодов на локальный компьютер (даже если он медлен­нее, чем web-сервер) выгоднее в отношении временных затрат, чем передача результатов выполнения программы на web-сервере. Од­нако web-сервер не в состоянии предугадать машинную архитекту­ру хост-компьютера. Поэтому браузер создает виртуальную маши­ну Java, которая и выполняет стандартный набор байт-кодов Java.

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

studfiles.net

Выбор среды и языка программирования

Пакет прикладных программ было решено писать на языке программирования С++, так как он сочетает в себе функционал низкоуровневых и высокоуровневых языков. Сегодня C++ является одним из наиболее популярных универсальных языков программирования. Он был написан на основе языка C, поэтому многие программы на C могут запускаться с помощью компиляторов для C++. Перечень сфер применения C++ впечатляет своим разнообразием. С++ является универсальным языком, на нем пишутся операционные системы, драйверы для различных устройств, прикладное программное обеспечение, программы для высокопроизводительных серверов[4]. Целью создателя языка C++, Бъёрна Страуструпа, было добавление в язык поддержки объектно-ориентированного и обобщенного программирования.

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

Интегрированная среда программирования содержит в себе следующие модули для разработки программ:

  • редактор с подсветкой синтаксиса конкретного языка программирования. В нем программист пишет текст программы, так называемый программный код;

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

  • отладчик служит для отладки программ. Ошибки в программах допускают абсолютно все: и новички, и профессионалы - они могут быть синтаксическими (обычно они выявляются еще на стадии компиляции) и логическими. Для тестирования программы и выявления в ней логических ошибок служит отладчик. Программы на С++ обычно содержат ссылки на функции, определенные где-либо вне самой программы, например, в стандартных библиотеках или в личных библиотеках групп программистов, работающих над данным проектом. Объектный код, созданный компилятором, обычно содержит «дыры» из-за этих отсутствующих частей. Отладчик связывает объектный код с кодами отсутствующих функций, чтобы создать исполняемый загрузочный модуль (без пропущенных частей). Получаем в итоге файл с расширением .exe (для Windows), либо .out (для Linux).

Далее происходит загрузка программы в оперативную память компьютера и ее выполнение. С момента начала выполнения компьютер под управлением своего ЦПУ (центральное процессорное устройство) начинает последовательно выполнять в каждый момент времени по одной команде программы. Эти моменты времени носят название такт, каждый процессор имеет свою тактовую частоту, которую задает его внутренний тактовый генератор. Чем более высокая частота работы вашего процессора, тем, соответственно, лучше и тем быстрее выполняются ваши программы[5].

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению сред программирования, ориентированных на так называемую "быструю разработку". В основе систем быстрой разработки или RAD-систем (Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования. Суть RAD-систем заключается в том, что среда разработки берет на себя большую часть рутины, позволяя программисту уделить больше времени и внимания на разработку логики приложения и на создание функций обработки событий, а не на создание и «рисование» интерфейса и кнопок. Производительность программиста при использовании RAD-систем очень велика. Одной из широко используемых RAD-систем является Borland C++Builder. Builder позволяет создавать различные программы: от простейших однооконных приложений до программ управления распределенными базами данных. В качестве языка программирования в среде Borland C++Builder используется C++. Borland C++Builder использует богатую библиотеку готовых компонентов VCL (Visual Component Library), которая постоянно расширяется с выходом каждой новой версии продукта. Библиотека визуальных компонентов VCL инкапсулирует сложные, трудоемкие интерфейсы Windows API в удобные, расширяемые компоненты многократного применения. Она полностью интегрирована в среду разработки и это облегчает управление свойствами и методами компонентов через программный код.

Другой известной RAD-системой является Microsoft Visual Studio. Microsoft разработали свои модели компонентов – windows forms, с# которые являются конкурентом модели VLC.

Однако каждая из этих сред имеет свои достоинства и недостатки. И для каждого программиста они индивидуальны. Кому-то важна VCL с богатым выбором функционала, а для кого-то – быстродействующая и мощная windows forms или c#.

Для разработки пакета прикладных программ РПДП было решено в качестве среды разработки выбрать среду Borland C++Builder, так как эта среда позволяет разрабатывать приложения в наикратчайшие сроки и обладает богатым функционалом.

    1. Структура регистрации

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

В течение следования поезда из одного депо в другое (можно принять это за один сеанс работы), каждые несколько миллисекунд, происходит запись информации от основных блоков системы «Витязь» в регистрацию, которая находится в памяти регистратора параметров движения поезда. РПДП перехватывает эту информацию, подключаясь к головной и поездной шине CAN, по которым информация курсирует между этими «прослушиваемыми» блоками и блоком управления поезда. Информация в РПДП записывается строками по 17 байт. Строки имеют следующий формат:

Таблица 2.6.1

Структура одной записи (строки) информации

№ Байта

Описание

1

Час

2

Минута

3

Секунда

4

Милисекунда

5

Резерв

6,7

Идентификатор устройства CAN

8

Резерв

9

мч-кол. Байт в CAN, сч-номер CAN

10-17

Информация

Как видно из структуры, 6 и 7 байт отводятся под идентификатор устройства, от которого пришла информация, а 10-17 байты отвечают непосредственно за саму информацию. Эта информация описывает состояние устройства в момент времени, который хранится в 1,2,3,4 байтах. Существуют протоколы, по которым можно расшифровать принятые 8 байт информации и определить, в каком состоянии находилось устройство, какие значения выдавали датчики этого устройства, а также было ли оно исправно или нет.

Таким образом, каждые несколько миллисекунд в РПДП записывается информация от ряда устройств, а потом все повторяется заново. Перед каждым новым циклом записи в РПДП поступает сообщение с идентификатором 0х0011, который обозначает начало нового цикла записи. Один цикл записи называется кадром. Получается, что одна регистрация состоит из множества кадров, которые, в свою очередь, состоят из строк размером 17 байт. Размер кадра может быть разным, так как количество одновременно работающих и опрашиваемых устройств может в разные моменты времени отличаться. Ниже представлен фрагмент регистрации, состоящий из двух полных кадров. Первый кадр очень короткий, он состоит всего из одной строки с идентификатором начала кадра. Такое часто случается в самом начале регистрации, когда включается питание поезда, но основные устройства еще не успевают начать работу.

Рис. 2.6.1 Пример регистрации

    1. Вывод

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

Для обеспечения автоматизации процесса передачи информации от поездного блока РПДП на стационарный сервер архивирования информации было решено использовать выделенный Wi-Fi радиоканал. В качестве средства инициирования передачи по Wi-Fi решено использовать RFID-технологии.

При проектировании ППП были изучены существующие концепции программирования и выбраны наиболее подходящие для осуществления поставленной задачи, после изучения концепций был выбран язык программирования – C++. Помимо этого был произведен обзор существующих сред программирования, после чего было решено производить разработку ППП в среде Embarcadero RAD STUDIO XE2 Professional (C++ Builder XE2).

studfiles.net