Используемые средства программирования
Средства программирования
Классификация команд. Способы адресации и языки программирования.
Программное обеспечение микропроцессоров.
Режим прямого доступа в память.
Передача данных с прерыванием программы.
Синхронная и асинхронная передача данных.
Шина управления.
Понятие трех-шинной организации связей. Шины адресов и данных.
Понятие интерфейса.
Вопросы.
Все операции в микропроцессоре вполняются в двоичной системе счисления. Команды в программе тоже представляются в двоичной форме. Каждому типу микропроцессора присуща определенная система команд.
Однако составление программы в двоичных кодах – трудоемкая и сложная для человека задача. Программист должен знать двоичный или шестнадцатеричный код каждой команды, а таких команд бывает около сотни. Для упрощения процесса написания, отладки и чтения программы используют мнемонический или символический код. Каждую команду представляют простым трех- или четырехбуквенным мнемоническим символом (мнемоникой). Мнемоника подбирается так, чтобы она напоминала название команды. Написанную с помощью мнемоник программу транслируют в ее двоичный эквивалент. Это можно сделать вручную с помощью таблиц соответствия или использовав специальную программу, которая называется Ассемблером (программный транслятор). Каждый микропроцессор способен выполнять точно определенный для него набор команд. Программист ограничен только этим набором команд.
По числу ячеек памяти, необходимых для размещения одной команды, различают команды в одно, два или три слова. Команды длиной в два и три слова требуют для выборки соответственно два и три цикла обращения к памяти.
По функциональным признакам выделяют три большие группы команд: передачи данных, управления и обработки данных. Рассмотрим подробнее основные команды, при этом название команд приведем по-русски.
Команды передачи данных обеспечивают простую пересылку информации без выполнения каких-либо операций обработки. Существуют три вида операндов, участвующих в командах передачи: внутренние регистры микропроцессора, ячейки памяти, регистры устройства ввода-вывода, которые будем называть портами. Можно выделить следующие типы команд:
· ЗАГРУЗИТЬ (ПРОЧИТАТЬ), по которой содержимое одной из ячеек памяти засылается в регистр;
· ЗАПОМНИТЬ (ЗАПИСАТЬ), по которой содержимое регистра засылается в ячейку памяти;
· ПЕРЕСЛАТЬ, по которой содержимое одного регистра пересылается в другой;
· ЗАГРУЗИТЬ НЕПОСРЕДСТВЕННО, по которой в регистр записывается константа, указанная в коде команды;
· ВВОД, по которой содержимое порта засылается во внутренний регистр;
· ВЫВОД, по которой содержимое внутреннего регистра пересылается в порт.
Команды управления, часто называемыми командами перехода, позволяют выполнять различные действия в соответствии со значением внешних сигналов или выработанных внутри системы условий. Команды управления делятся на команды безусловного и условного перехода. К командам безусловного перехода относятся:
· БЕЗУСЛОВНЫЙ ПЕРЕХОД (БП), по которой в программный счетчик записывается содержимое адресного поля в коде команды, то есть обеспечивается переход по аресу, указанному в команде;
· ПРОПУСТИТЬ, по которой пропускается следующая команда в программе;
· БЕЗУСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ (переход к подпрограмме), по которой в программный счетчик записывается новое содержимое (адрес первой команды подпрограммы), но в отличие от команды БП в памяти сохраняется текущее содержимое программного счетчика. После выполнения подпрограммы по ее последней команде ВОЗВРАТ восстанавливается содержимое программного счетчика.
Команды условного перехода проверяют состояние какого-либо разряда регистра, триггера или другого параметра. От результата проверки зависит будет выполняться переход или нет. К командам условного перехода относятся:
· УСЛОВНЫЙ ПЕРЕХОД (УП) по адресу; в коде команды указывается проверяемое условие:нулевое или ненулевое значение результата, полжительный или отрицатедьный знак результата, наличие или отсутствие сигналов переноса, переполнения и т.д. При выполнении условия обеспечивается переход в программе по адресу, указанному в команде, при невыполнении условия управление передается следующей команде программы;
· УСЛОВНЫЙ ПЕРЕХОД С ВОЗВРАТОМ;
Команды обработки данных делятся на арифметические и логические. К арифметическим относятся команды:
· СЛОЖИТЬ содержимое двух регистров или регистра и ячейки памяти;
· ВЫЧЕСТЬ из содержимого ячейки памяти или регистра содержимое регистра;
· УВЕЛИЧИТЬ НА ЕДИНИЦУ (ИНКРЕМЕНТ) содержимое ячейки памяти или регистра;
· УМЕНЬШИТЬ НА ЕДИНИЦУ (ДЕКРЕМЕНТ) содержимое ячейки памяти или регистра;
· СЛОЖИТЬ С УЧЕТОМ ПЕРЕНОСА, по которой выполняется сложение с учетом состояния флага переноса, это позволяет легко организовать обработку чисел большой длины;
· ВЫЧЕСТЬ С УЧЕТОМ ЗАЕМА;
· СДВИГ содержимого ячейки памяти или регистра влево или вправо на один разряд.
К логическим относятся следующие команды:
· И (ЛОГИЧЕСКОЕ УМНОЖЕНИЕ) между двумя операндами;
· ИЛИ (ЛОГИЧЕСКОЕ СЛОЖЕНИЕ) между двумя операндами;
· НЕРАВНОЗНАЧНОСТЬ между двумя операндами;
· ИНВЕРСИЯ содержимого операнда.
Языки программирования для микропроцессоров можно разделить на три основные уровня: машинные, алгоритмические высокого уровня и ассемблера.
Машинные языки находятся на самом нижнем уровне иерархии языков программирования. Будучи языками цифр, они неудобны для описания вычислительных процессов, требуют от программиста больших усилий для написания и отладки программ, хотя программа, написанная на машинном языке, сразу готова для исполнения микропроцессором.
Алгоритмические языки высокого уровня занимают верхнее положение в иерархии языков программирования. Форма языков высокого уровня приближена к привычной математической нотации, обеспечивает естественную форму описания вычислительных процессов. Недостатком является применение трансляторов, неэффективность получаемых после трансляции кодов.
Языки ассемблера, занимая промежуточное положение между машинными языками и языками высокого уровня, объединяют в себе некоторые достоинства самого нижнего и самого верхнегоуровней языков программирования. Транслятор программ с языка Ассемблера гораздо проще и компактнее транслятора для программ, написанных на языке высокого уровня, а результирующая машинная программа на выходе ассемблера получается столь же эффективной, как и программа, которую написали на машинном языке.
Имеется три класса средств программирования: редактирующие программы, транслирующие программы, моделирующие и отладочные программы. Каждый из этих классов облегчает выполнение некоторого этапа разработки программ. Все эти средства программирования делятся на кросс-средства и резидентные. Кросс-средства – это программы, которые выполняются не на микроЭВМ, для которого разрабатывается программное обеспечение , а на какой-нибудь другой машине. Резидентные средства – это программы, которые выполняются на микропроцессоре, для которого разрабатывается программное обеспечение.
Редактирующие программы – это программы, облегчающие создание исходных программ. Эти программы позволяют производить набор исходных текстов, их корректировку. Эти программы оперируют с исходной программой как с текстом, совершенно не учитывая те синтаксические правила, которым должна удовлетворять программа.
Транслирующие программы обеспечивают получение объектной программы из программы, написанной на языке ассемблера в среде какой-то редактирующей программы. Имеются два вида транслирующих программ: компиляторы и интерпритаторы. Компиляторы транслируют весь текст программы в машинный код в ходе одного непрерывного процесса. При этом создается полная программа в машинных кодах, которую затем можно выполнить без участия компилятора. Интерпретатор – это программа, осуществляющая пошаговую трансляцию входной программы с последующим исполнением машинной программы, полученной на каждом шаге трансляции.
Моделирующие и отладочные программы – это программы, позволяющие отлаживать объектную программу без участия самого микропроцессора, для которого эта программа предназначена. Моделирующие программы позволяют: оперировать и выводить на дисплей содержимое памяти моделируемой микроЭВМ и регистров микропроцессора, устанавливать контрольные точки останова, выполнять программу по шагам с приостановом после каждой команды, выводить информацию о времени выполнения программы и т.д. Однако, независимо от того насколько хороша моделирующая программа, она никогда не может заменить полностью отладку программы на реальном микропроцессоре. Это объясняется тем, что специфические временные соотношения и условия внешнего окружения аппаратуры микропроцессора невозможно смоделировать полностью.
Используемые средства программирования
Программирование — в обычном понимании, это процесс создания компьютерных программ. Программирование позволяет “настроить” компьютер или иное программируемое логическое устройство на те или иные действия. В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
Стадии программирования
Программирование в широком смысле можно разбить на несколько стадий:
- Анализ,
- Проектирование — разработка комплекса алгоритмов,
- Кодирование и компиляцию — написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора,
- Тестирование и отладку — выявление и устранение ошибок в программах,
- Испытания и сдачу программ,
- Сопровождение созданных программ
Языки программирования
Единственный язык, который может непосредственно выполнять ЭВМ — это машинный язык (также называемый машинным кодом или языком машинных команд). На первых порах все программы создавались непосредственно в машинном коде, но сейчас всё сильно изменилось. Вместо создания программ в машинных кодах, программисты пишут исходный код на том или ином Языке Программирования (сокращение: ЯП), а затем, используя компилятор или интерпретатор, переводят свою программу в машинный код, готовый к исполнению на конкретном целевом процессоре/архитектуре, или в промежуточное представление, которое может быть исполнено специальным интерпретатором — виртуальной машиной (ВМ/VM). Если же программисту требуется полный низкоуровневый контроль над системой на уровне машинных команд и отдельных ячеек памяти, то программы пишут на языке ассемблера, инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ. В некоторых языках вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, некоторых реализациях Lisp, Java, Perl, Python, языках для .NET Framework.
Cредства программирования
Программные средства, используемые для разработке программ, делятся на системные/инструментальные, лицензионные/безлицензионные, свободно распространяемые/проприетарные. На практике безлицензионные средства разработки в настоящее время редкость. Все без исключения проприетарные средства разработки лицензионные, и распространяются по ограниченным лицензия, часто небесплатным. Практически все современные свободно распространяемые средства разработки лицензионные и распространяются по различныем публичным (также свободным) лицензиям разрешающим свободное распространение как самих этих средств так и их исходных кодов (в том числе их доработку).
Средства программирования
Инструменты разработки программных средств. Конструирование программных документов на различных этапах жизненного цикла. Инструментальные среды разработки и сопровождения ПС, определенная ориентация программирования. Графические средства описания.
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Инструменты разработки программных средств
программирование графический конструирование
В процессе разработки программных средств в той или иной мере используется компьютерная поддержка процессов разработки ПС. Это достигается путем представления хотя бы некоторых программных документов ПС (прежде всего, программ) на компьютерных носителях данных (например, дисках) и предоставлению в распоряжение разработчика ПС специальных ПС или включенных в состав компьютера специальных устройств, созданных для какой-либо обработки таких документов. В качестве такого специального ПС можно указать компилятор с какого-либо языка программирования. Компилятор избавляет разработчика ПС от необходимости писать программы на языке компьютера, который для разработчика ПС был бы крайне неудобен, — вместо этого он составляет программы на удобном ему языке программирования, которые соответствующий компилятор автоматически переводит на язык компьютера. В качестве специального устройства, поддерживающего процесс разработки ПС, может, служит эмулятор какого-либо языка.
Эмулятор позволяет выполнять (интерпретировать) программы на языке, отличном от языка компьютера, поддерживающего разработку ПС, например, на языке компьютера, для которого эта программа предназначена. ПС, предназначенное для поддержки разработки других ПС, будем называть программным инструментом разработки ПС, а устройство компьютера, специально предназначенное для поддержки разработки ПС, будем называть аппаратным инструментом разработки ПС. Инструменты разработки ПС могут использоваться в течении всего жизненного цикла ПС для работы с разными программными документами.
Так текстовый редактор может использоваться для разработки практически любого программного документа. С точки зрения функций, которые инструменты выполняют при разработке ПС, их можно разбить на следующие четыре группы:
— инструменты, поддерживающие процесс выполнения программ.
Редакторы поддерживают конструирование (формирование) тех или иных программных документов на различных этапах жизненного цикла. Как уже упоминалось, для этого можно использовать один какой-нибудь универсальный текстовый редактор. Однако более сильную поддержку могут обеспечить специализированные редакторы: для каждого вида документов — свой редактор. В частности, на ранних этапах разработки в документах могут широко использоваться графические средства описания (диаграммы, схемы и т.п.). В таких случаях весьма полезными могут быть графические редакторы.
На этапе программирования (кодирования) вместо текстового редактора может оказаться более удобным синтаксически управляемый редактор, ориентированный на используемый язык программирования. Анализаторы производят либо статическую обработку документов, осуществляя различные виды их контроля, выявление определенных их свойств и накопление статистических данных (например, проверку соответствия документов указанным стандартам), либо динамический анализ программ (например, с целью выявление распределения времени работы программы по программным модулям).
Преобразователи позволяют автоматически приводить документы к другой форме представления (например, форматеры) или переводить документ одного вида к документу другого вида (например, конверторы или компиляторы), синтезировать какой-либо документ из отдельных частей и т.п. Инструменты, поддерживающие процесс выполнения программ, позволяют выполнять на компьютере описания процессов или отдельных их частей, представленных в виде, отличном от машинного кода, или машинный код с дополнительными возможностями его интерпретации. Примером такого инструмента является эмулятор кода другого компьютера. К этой группе инструментов следует отнести и различные отладчики. По-существу, каждая система программирования содержит программную подсистему периода выполнения, которая выполняет наиболее типичные для языка программирования программные фрагменты и обеспечивает стандартную реакцию на возникающие при выполнении программ исключительные ситуации (такую подсистему мы будем называть исполнительной поддержкой), — также можно рассматривать как инструмент данной группы.
2. Инструментальные среды разработки и сопровождения программных средств
В настоящее время с каждой системой программирования связываются не отдельные инструменты (например, компилятор), а некоторая логически связанная совокупность программных и аппаратных инструментов поддерживающих разработку и сопровождение ПС на данном языке программирования или ориентированных на какую-либо конкретную предметную область. Такую совокупность будем называть инструментальной средой разработки и сопровождения ПС.
Для таких инструментальных сред характерно, во-первых, использование как программных, так и аппаратных инструментов, и, во-вторых, определенная ориентация либо на конкретный язык программирования, либо на конкретную предметную область. Инструментальная среда не обязательно должна функционировать на том компьютере, на котором должно будет применяться разрабатываемое с помощью ее ПС. Часто такое совмещение бывает достаточно удобным (если только мощность используемого компьютера позволяет это): не нужно иметь дело с компьютерами разных типов, в разрабатываемую ПС можно включать компоненты самой инструментальной среды. Однако, если компьютер, на котором должно применяться ПС, недоступен для разработчиков этого ПС (например, он постоянно занят другой работой, которую нельзя прерывать, или он находится еще в стадии разработки), либо неудобен для разработки ПС, либо мощность этого компьютера недостаточна для обеспечения функционирования требуемой инструментальной среды, то применяется так называемый инструментально-объектный подход. Сущность его заключается в том, что ПС разрабатывается на одном компьютере, называемым инструментальным, а применяться будет на другом компьютере, называемым целевым (или объектным).
Различают три основных класса инструментальных сред разработки и сопровождения ПС.
— рабочие места компьютерной технологии,
— инструментальные системы технологии программирования.
Среда программирования предназначена в основном для поддержки процессов программирования (кодирования), тестирования и отладки ПС. Рабочее место компьютерной технологии ориентировано на поддержку ранних этапов разработки ПС (спецификаций) и автоматической генерации программ по спецификациям. Инструментальная система технологии программирования предназначена для поддержки всех процессов разработки и сопровождения в течение всего жизненного цикла ПС и ориентирована на коллективную разработку больших программных систем с длительным жизненным циклом. Для таких систем стоимость сопровождения обычно превышает стоимость разработки.
Современные средства программирования — новое качество жизни контроллеров
Рис. 1. «Классическая» система автоматизации одиночной архитектуры
В настоящее время контроллер может быть самодостаточным звеном в небольших системах управления (уже никого не удивишь возможностью управлять климатом в загородном доме или вести видеонаблюдение через Интернет). В то же время появилась возможность более тес но интегрировать контроллеры в распределенную систему управления. За счет чего это произошло? Контроллеры, с точки зрения их физической реализации, остались практически те же. Новые качества им придают системы программирования нового поколения, характерным и особенностями которых являются высокая степень децентрализации, унификация системы визуализации и исполнительных систем на устройствах разного типа, широкое применение интернет-технологий и облачных решений. Эти возможности размывают прежде считавшиеся н езыблемыми границы между верхним и нижним уровнем, а также в классификации устройств по их функциональному назначению.
В «классической» структуре автоматизированного управления (рис. 1) у каждого устройства было строго свое функциональное назначение и для каждого из них существовали свои средства разработки. Контроллеры осуществляли опрос полевого оборудования, первичную о бработку сигналов, вычисление логики управления и выработку управляющих сигналов. Они представляли собой нижний уровень систем управления, для программирования которого применялись, как правило, специализированные средства, получившие название SoftLogic. В распределенных системах, где требуется сбор данных от устройств нижнего уровня, отображение информации на экранах мониторов, ведение баз данных, формирование журналов событий, обеспечение аварийной сигнализации, генерирование отчётов, это осуществляется с помощью SCADA, реализованной на персональных компьютерах, которая представляет собой верхний уровень. Системы программирования бывают вертикально интегрированными, т. е. сочетают в одной среде разработки и SCADA, и средства программирования контролеров — SoftLogic. В зависимости от сложности, системы построены по одиночной или по клиент-серверной архитектуре, но, независимо от этого, остается разделение на верхний и нижний уровни, каждый из которых функционирует на устройствах своего типа и программируется своими средствами.
Рис. 2. Дерево физической структуры проекта (слева) и дерево логической структуры (справа)
Системы нового поколения, благодаря кроссплатформной среде исполнения и визуализации, предоставляют возможность свободно перемещать любые компоненты проекта между устройствами не только различного типа, но и построенными на различных программно-аппаратных платформах . Например, систему визуализации (ранее принадлежавшую АРМ) можно перенести в контроллер и получить доступ к нему с помощью тонких клиентов с других устройств сети. Это позволяет сделать контроллер самодостаточным узлом для небольших систем. И на оборот , часть функций контроллера с целью экономии его ресурсов можно делегировать другим узлам, таким как виртуальный или облачный сервер. Одним из примеров системы программирования нового поколения является MasterSCADA 4D.
Исполнительная система MasterSCADA 4D является кроссплатформной и поддерживает такие операционные системы, как Windows, Linux, Android, QNX, Эльбрус и Unix не только на уровне контроллера, но и на всех уровнях систем управления — локальных HMI-панелях, АРМ оператора, серверах, облачных сервисах. Межузловое взаимодействие основано на стандарте OPC UA, что дает возможность построения систем в гетерогенных сетях и обеспечивает бесшовное (незаметное для разработчика) соединение между различными устройствами: лю бая переменная процесса, любой параметр одинаково доступны для любых компонентов проекта независимо от места их физического расположения. Средства программирования представлены хорошо знакомыми разработчикам SoftLogic языками стандарта МЭК 61131-3: ST (язы к структурного текста), FBD (язык функциональных блоков), SFC (язык функциональных последовательностей) и LD (язык релейной логики). Благодаря унификации исполнительной системы эти языки теперь используются для программирования логики не только контроллеро в , но и любых других компонентов системы, включая компоненты визуализации, в том числе исполняемые непосредственно в браузере.
Рис. 3. Структурная схема системы диспетчеризации котельной
Среда разработки реализована по принципу раздельного построения физической структуры проекта и его логической части — программной и графической (рис. 2). Такой подход позволяет легко переносить готовый проект на другую систему, имеющую не только различные аппаратные средства, но и иную структуру. Программно-логическая и визуальная часть проекта при этом остаются неизменными, требуется только переконфигурировать физическую структуру проекта — переназначить узлы и оборудование. При разработке логической части проекта традиционно используется объектный подход, суть которого состоит в объединении некоторой совокупности прикладных программ, данных, графических элементов и других элементов проекта, включая внутренние связи между ними, в отдельную именованную сущно сть . Это значительно упрощает работу с однотипными объектами.
Исполнительная система MasterSCADA 4D уже портирована на контроллеры многих отечественных и зарубежных производителей, среди которых ОВЕН, Ротек, ЭЛНА, TREI, MOXA, ICP DAS, Advantech и др.
Примером системы, реализованной на MasterSCADA 4D, в которой все логические компоненты проекта исполняются в контроллере, может служить система диспетчеризации котельной — одного из объектов предприятия «Орловские тепловые сети» (рис. 3, 4). Система постро ена на базе контроллера bTune серии BT6000 производства компании «Ротек». Опрос периферийного и полевого оборудования производится по протоколу MODBUS. В контроллере реализована логическая часть проекта и система визуализации.
Рис. 4. Среда разработки MasterSCADA 4D. Проект диспетчеризации котельной
Логическая часть проекта производит опрос и обработку переменных процесса, их хранение в краткосрочном архиве, выработку аварийных сообщений, отправку их по электронной почте и формирование журнала событий
Рис. 5. Мнемосхема технологического процесса котельной
Рис. 6. Структурная схема системы на базе сервера
Система визуализации построена на базе веб-сервера, работающего в контроллере. Графическая часть интерфейса содержит мнемосхему (рис. 5), тренды переменных и журнал событий. Для доступа к веб-серверу используются штатные браузеры операторских станций, подк люченных к контроллеру по сети Ethernet. К контроллеру также подключен ADSL-модем, благодаря чему одинаковый графический интерфейс доступен как на операторских станциях, так и через Интернет — с любых мобильных устройств, например планшетов или телефонов. Таким образом, в рассмотренной системе все необходимые функции реализованы непосредственно в контроллере и он является самодостаточным звеном.
Разумеется , исполнение всех функций в контроллере возможно лишь для относительно небольших систем. В случаях, когда требуется накапливать долгосрочные архивы для большого количества переменных, интегрировать данные от нескольких устройств и иметь для них о бщую визуализацию, необходима более сложная архитектура системы [1]. Например, логика управления реализована в контроллере, а основные операции сбора, хранения и обработки данных производятся на сервере (рис. 6). Возможен также вариант переноса части функц ий (в том числе архивирования и визуализации) в облачный сервис. Тогда контроллер соединяется непосредственно с облачным сервером (рис. 7).
Важно отметить, что, независимо от архитектуры и сложности системы, все компоненты программируются в одной среде и одними и теми же средствами. Благодаря унификации исполнительной системы любой компонент, будь то программа, база данных или мнемосхема, один аково выполняется как на контроллере, так и в облаке или на любом другом устройстве.
Рис. 7. Структурная схема системы на базе облачного сервера
Развитие ИТ и современные средства программирования наделяют контроллеры новыми качествами, что предоставляет разработчику большую гибкость архитектурных решений в построении систем, а также дает возможность использовать одни и те же логические компоненты проекта для устройств различного типа и располагать их на различных уровнях в иерархии систем управления. Благодаря этому расширяется спектр применения наработок, а сами решения становятся более унифицированными, что сокращает затраты на создание систем уп равления и делает труд инженера более эффективным и плодотворным.
Арсенал программиста. 7 инструментов для эффективной работы
Работа программиста очень сложна. Поэтому любой инструмент, который ее облегчает, следует только приветствовать. Теоретически можно кодить, имея под рукой только блокнот и компилятор, но на практике программист пользуется специальными инструментами для ускорения работы.
Разберем семь инструментов программиста, которые нужны для повседневной работы.
1. Интегрированная среда программирования (IDE)
Среда разработки — это основной инструмент, который программист запускает сразу же, как только приходит на работу. Типовая среда включает:
- Редактор с подсветкой кода
- Компилятор
- Отладчик
- Управление проектами
Существуют универсальные IDE, которые поддерживают много языков программирования:
Существуют специализированные IDE, которые нацелены на один язык программирования:
К сожалению, практика работы программиста такова, что знания одного языка программирования и одной среды программирования явно недостаточно. Постоянно приходится использовать разные языки или среды в зависимости от задачи. Поэтому рекомендую пробовать и изучать разные IDE. Вы никогда не знаете, где это может пригодиться.
Есть много сравнительных таблиц IDE. Например, здесь. Ниже фрагмент сравнительной таблицы IDE для C/C++.
В качестве основного IDE лучше выбрать ту среду разработки, которая вам наиболее комфортна и удобна. И ее уже изучить досконально. Это существенно повысит вашу производительность.
2. Профилировщик кода (профайлер, профилер)
Профилировщик кода, или как часто на жаргоне его называют профилер (от слова profiler) — это инструмент, который собирает информацию о работе программы. Как правило, профилер требуется в тех случаях, когда ваша программа работает не так быстро, как хотелось бы.
Чтобы найти узкое место программы запускают профилер, который фиксирует время выполнения различных фрагментов программы.
Существует много профилеров, как универсальных, так и специализированных. Большой список можно найти здесь (en).
Но самым популярным профилером является GNU Gprof. Он есть в сборке Си-экспресс. Чтобы его использовать, нужно сделать следующие действия:
1. Включить профилирование в параметрах сборки проекта. Щелкнуть правой кнопкой на проекте и выбрать соответствующий пункт меню.
2. Перекомпилировать и запустить программу.
3. Запустить профилер. Меню — Модули — Code profiler
3. Система контроля версий
Часто бывает, что программист внес правки в исходный код и программа перестала работать. Для быстрого возврата к работающей версии используются системы контроля версий (SVN). Они ведут учет изменений в файлах и позволяют откатить изменения до нужной точки.
Наиболее популярными являются:
Раньше SVN работали на компьютере разработчика, но в последнее время используются веб-серверы для SVN. Это дает много преимуществ, можно работать на разных компьютерах и иметь копию программы в облаке.
Существенных отличий между этими системами нет. Базовый функционал одинаковый, разница только в способах реализации. Поэтому можете выбрать ту систему, которая вам больше понравится.
Самыми популярными серверами SVN являются:
- GitHub (сервис платный, но бесплатен для проектов с открытым исходным кодом).
- Bitbucket (бесплатный сервис)
4. Визуальный редактор интерфейса
Хотя интерфейс программы можно полностью написать в коде, но это подходит только для совсем простых программ. Программирование интерфейса вручную — это чрезвычайно долгий и трудоемкий процесс.
Есть еще одна причина, чтобы это процесс сильно ускорить — общение с заказчиком. Самый первый разговор с заказчиком станет намного продуктивнее, если вы сможете быстро набросать макет программы. Заказчики ничего не понимают в программировании, но интерфейс понимают все. Чем более быстро вы покажет макет будущей программы, тем быстрее получите заказ.
Существуют множество редакторов интерфейса, которые помогают набросать внешний вид программы простым перетаскиванием виджетов. Другое их название GUI-конструкторы. Они могут как отдельными программами, например, Glade. А могут быть плагинами к IDE, как, например wxSmith для CodeBlocks.
Как правило, задача визуального редактора — задать расположение элементов интерфейса, а код обработки сообщений программист пишет уже в программе.
5. Редактор баз данных
Для прикладных программ работа с базами данных (БД) является обязательным условием. Если вы пишете программу для автоматизации бизнеса, то вам потребуются работа с базами:
- Сотрудников
- Товаров
- Покупателей
- Счетов и т.д.
Базы данных — это основа автоматизации любой компании. Поэтому программисту в той или иной форме нужно будет взаимодействовать с базами данных. В этом ему помогают редакторы БД, которые позволяют управлять информацией в базах данных.
Самым мощной и удобной системой управления базами данных (СУБД) является Microsoft Access, который входит в состав Microsoft Office. Возможности Access очень велики. Эта СУБД позволяет разработать автоматизацию небольшую компании. Но полученный продукт не очень удобно тиражировать из-за особенностей лицензирования Microsoft Office.
Самыми распространенными редакторами БД являются:
6. Инструмент тестирования ПО
Как только программист написал программу, то нужно убедиться в том, что она работает. Для этого существует отдельный процесс, который называется тестирование ПО.
Суть тестирования состоит в том, что тестировщик выполняет пакет тестов и проверяет соответствие реального поведения программы с заданным.
Проблема тестирования заклюается в том, что предвидеть заранее все возможные варианты использования программы невозможно. Поэтому тестирование ПО — это больше искусство, чем наука.
Пока программы были не очень сложными, использовалось так называемое «исчерпывающее тестирование», то есть проверялась работа программы на всех возможных ветках в ыполнения. Но очень скоро количество комбинаций веток стало превышать возможности тестировщиков, и сейчас проводится выборочное тестирование. Выбирается некоторый основной вариант использования программы и для него пишутся тесты.
Трудно найти универсальные инструменты автоматического тестирования. Как правило, программист ищет инструмент тестирования под конкретную задачу. Если же такого инструмента не находится, то приходится его писать самому.
7. Фреймворк
Многие программы имеют общие модули. Отсюда приходит желание не писать каждый раз программу с нуля, а использовать какой-нибудь каркас. Так появилось понятие фреймворка, что в переводе означает «каркас».
Фреймворк отличается от библиотеки тем, что библиотека никак влияет на работу программиста. Ему достаточно подключить библиотеку и он может произвольно вызывать функции библиотеки.
Фреймворк диктует принцип построения программы. Обычно при работе с фреймворком сразу генерится некоторый прототип программы, а программист должен развивать этот прототип до готовой программы.
Так как принципы разработки едины, то на фреймворке можно достаточно быстро построить вполне рабочую программу. Но есть и серьезный недостаток в использовании фреймворка.
Если функционал программы сильно отличается от тех принципов, которые использует фреймворк, то программисту приходится постоянно изобретать разные приемы, чтобы согласовать требования заказчика и ограничения фреймворка. Иногда бывает, что использование фреймворка не только ускоряет, а, наоборот, замедляет программирование.