Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Языки программирования).pdf
Добавлен: 31.03.2023
Просмотров: 112
Скачиваний: 1
Достоинства восходящего тестирования:
- нет трудности задания тестов, т.к. нет промежуточных модулей;
- нет необходимости совмещать проектирование с тестированием;
- отсутствие препятствий, вызывающих желание перейти к тестированию следующего модуля, не завершив проверку предыдущего.
Недостаток восходящего тестирования:
- проверка всей структуры разрабатываемого программного комплекса на завершающей стадии тестирования.
Однозначного вывода о преимуществах в различных видах тестирования нет, но в большинстве случаев разработчики отдают предпочтение восходящему тестированию. [18]
Ошибки на стадии выполнения возникают, когда компилируют полную программу, которая при её выполнении делает что-то недопустимое. Это значит, что программа содержит допустимые операторы, но при их выполнении происходит что-то неверно. Деление на ноль или попытка открыть несуществующий файл – являются примерами семантических ошибок.
Семантическая отладка – процесс нахождения и исправления ошибок, связанных с неправильным указанием логических страниц данных. [4]
На данный момент широко распространены 3 способа отладки программы:
- пошаговая отладка программ с заходом в подпрограммы;
- пошаговая отладка программ с выполнением подпрограммы как одного оператора;
- выполнение программы до точки остановки.
Пошаговая отладка программ состоит в том, что выполняется один оператор программы, а затем контролируются переменные, на которые должен был воздействовать данный оператор. [4]
Когда в программе существует уже отлаженный ранее большой участок программы, то его можно выполнить, не контролируя переменные, на которые он воздействует. При использовании точек остановки есть возможность пропускать уже отлаженную часть программы. Точку остановки устанавливают в тех местах, где необходимо проверить содержимое переменных или просто проконтролировать, передаётся ли управление данному оператору. [6]
Последней составляющей процесса программирования является документирование. Оно включает в себя широкий спектр описаний, облегчающих процесс программирования и обогащающих результирующую программу. Постоянное документирование должно составлять неотъемлемую часть каждого шага программирования. Постановка задачи, проектные документы, алгоритмы и программы – все это документы. Внутренняя документация, включенная непосредственно в программу, облегчает чтение кода. Назначение учебного пособия (еще одной формы документации) – научить пользователя применять новую программу; справочное руководство позволяет ознакомиться с описанием команд программного обеспечения. [2]
При разработке программы создается большой объем разнообразной документации. Она необходима как средство передачи информации между разработчиками программы, как средство управления разработкой программы и как средство передачи пользователям информации, необходимой для применения и сопровождения программы.
2.2. Выбор среды и языка разработки программ
Среда разработки (IDE) – это сочетание текстового редактора и компилятора. Разработка, компиляция и запуск своих программ осуществляется непосредственно в IDE. Интегрированные среды разработки упрощают процесс составления программ, так как написание кода компиляция и запуск программ выполняются в одной программе – IDE. Ещё одной важной особенностью IDE является то, что IDE помогает быстро найти и исправить ошибки компиляции. [5]
При выборе среды разработки необходимо учитывать ряд критериев. Поэтому было решено создать экспертную систему для помощи в выборе IDE. Основным назначением готовой экспертной системы является формирование мнения о предпочтительности выбора той или иной среды разработки для пользователя.
Экспертная система – это система искусственного интеллекта, построенная на основе глубоких специальных знаний о некоторой предметной области (полученных от экспертов-специалистов этой области). Экспертные системы – один из немногих видов систем искусственного интеллекта, которые получили широкое распространение, и нашли практическое применение. [21]
Каждая экспертная система имеет базу данных, хранящую все необходимые для данной предметной области знания.
Для понимания выбранной предметной области следует знать значение следующих понятий:
Операционная система (ОС):
- Windows;
- Mac OC;
- Linux;
- Unix.
Разрядность ОС:
- 86;
- 64;
- 32.
Язык программирования:
- Pascal;
- Basic;
- Scala;
- Cobol;
- Ruby;
- MatLab;
- SQL;
- Perl;
- Lisp;
- Fortran;
- Python;
- PHP;
- Java;
- C#;
- C++;
- C;
- Assembler.
Назначение:
- Для обучения;
- Для работы.
Доступ:
- Платный;
- Свободный.
Компилятор:
- Встроенный;
- Внешний.
Эти понятия являются наиболее значимыми и основными, позволяющими сделать тот или иной выбор.
Разрабатываемая экспертная система должна выбирать оптимальную IDE, на основе предъявляемых к ней требований. [5]
В процессе функционирования система использует значения следующих параметров, вводимых пользователем:
1. выбор языка программирования;
2. выбор операционный системы;
3. выбор разрядности ОС;
4. выбор назначения;
5. выбор доступа;
6. выбор компилятора.
К сожалению, языки программирования сложно сравнивать и оценивать. [19]
Критерии для их сравнения и оценки плохо определены и не всегда учитывают цели, которые были поставлены при разработке того или иного языка программирования.
Какие же факторы должны учитываться при выборе языка программирования?
Ясно, что на первое место ставится соответствие языка программирования типу решаемой задачи. Если оказывается, что несколько языков подходит для решения данной задачи, то следует отдать предпочтение языку, которым программист лучше владеет, поскольку трудно написать хорошую программу на языке, который плохо усвоен. [18]
Фактор знакомства с языком не должен превалировать над всеми другими факторами. Если для решения задачи несколько языков одинаково хороши, и программист одинаково успешно может ими пользоваться, то предпочтение отдается языку, обладающему более быстродействующим транслятором, с лучшей системой отладки, или создающему более эффективный код. Такая информация не всегда имеется в распоряжении программиста, но это дело практики и времени. [10]
Компактность компилятора и скорость компиляции, длина и быстродействие объектной программы относятся к важнейшим характеристикам языка, но они останутся всего лишь благим пожеланием, если он не будет обладать таким весьма важным свойством, как простота.
Простота языка программирования, в первую очередь, нужна его разработчику и программисту. Простота ведет к более простому и более надежному компилятору.
Исторически наиболее простыми языками считают машинные языки и языки ассемблера первых ЭВМ. Речь идет не о простоте изучения, а о простоте реализации языка для машины. [5]
В настоящее время машинные языки значительно усложнились, число команд, содержащихся в арсенале машины, превышает сотню; появились мощные операционные системы и программист, хорошо знающий язык ассемблера, встречается не часто. Теперь наблюдается тенденция к росту сложности самих языков программирования. Однако будущее – за простыми, хорошо структурированными языками. Разработчики языков должны перенять опыт у инженеров-конструкторов ЭВМ, которые давно используют такие средства достижения простоты и четкости организации сложных систем, как модульность, иерархичность, стандартизация.
Простота в некоторых языках программирования подменяется свойством «модульность», под которым понимается возможность работать, используя лишь подмножество языка. Иными словами, программист может не изучать язык полностью, а овладеть только теми его элементами, которые он считает необходимыми для своих задач. [18]
Основным признаком языка высокого уровня является не то, что он позволяет писать программы в сжатой форме с использованием привычных слов, букв вместо цифр, как это имело место при программировании на машинном языке, а то, насколько он соответствует законам нашего мышления, нашим интеллектуальным возможностям. Насколько глубоко конструкции языка уходят от действительной реализации в машинных кодах является мерой высоты уровня языка.
Ключевые (зарезервированные) слова облегчают синтаксический анализ языка, однако их не должно быть слишком много. [7]
Простоте языка способствует единообразие в символике. Негативный пример: в языках семейства dBase знак «=» – это и присвоение, и проверка на равенство; а «;» – это и разделитель операторов, и перенос на другую строку.
Надежность языка – это свойство, которое характеризуется вероятностью безошибочного написания и трансляции программы. Ошибки при написании программы зависят не только (и не столько) от свойств языка, сколько от квалификации программиста. Понятие надежности относительное. Надежность транслятора связана со свойствами языка, а способность обнаруживать ошибки тоже в значительной мере зависит от конструкций языка. [3]
Быстрота трансляции в период зарождения и первых шагов языков программирования считалась несущественным показателем качества языка, поскольку планировалось, что этап трансляции однократный, однако со временем стало ясно, что этот этап в процессе разработки программы используется довольно часто (например, при обучении наблюдается обратная ситуация – программа много раз транслируется, а исполняется один раз).
Методы трансляции очень быстро развиваются, а теория трансляторов еще далека от завершения. В настоящее время самый «быстрый» транслятор – фирмы Borland.
Широко распространено мнение, что при разработке языка не обязательно заботиться об эффективности машинного кода, поскольку можно построить оптимизирующий транслятор, решающий эту задачу. Но это плохо подтверждается практикой. [15]
Если оптимизация программы компилятором предусмотрена, то с помощью механизма указаний можно давать указания компилятору относительно того, что является критерием оптимизации – быстродействие или объем занимаемой памяти. Не следует пренебрегать таким показателем качества языка, как эффективность объектного кода, достаточно учесть следующее: сложность задач, решаемых с помощью ЭВМ, растет быстрее, чем производительность и ресурсы вычислительных систем. [2]
Как бы ни было велико быстродействие ЭВМ и сколько бы не снижалась ее стоимость, оба качества проявляются при рациональном использовании.
Быстродействие ЭВМ не может расти неограниченно, хотя бы потому, что электромагнитные сигналы распространяются с конечной скоростью. Производительность ЭВМ растет главным образом за счет роста производительности процессора и оперативного запоминающего устройства. Совершенствование внешней памяти, периферии идет медленнее.
Критерий удобочитаемости для человека нередко приносится в жертву «удобочитаемости» для машин. Иногда ради сокращения текста программы от нее отказываются за счет соглашений об умолчании и неявных допущений. Естественно, компилятор или специальный программный модуль могут восстановить все сокращения. [7]
Одним из важных элементов, способствующих удобочитаемости, являются комментарии. Оформление комментариев остается полностью в руках программиста. От того, насколько удачны комментарии и сколь удобно они размещены, существенно зависит скорость понимания программы.
Продуманный выбор имен в программе облегчает чтение программы.
Достижением в этой области можно считать «венгерскую нотацию», которая названа в честь родины ее создателя Charles Simonyi. Согласно ей имена функций строят по принципу «глагол – существительное». Например: Creat Window – создать окно. [15]
Программа воспринимается лучше, когда имена переменных и других объектов раскрывают их содержание, т. е. язык для этого должен позволять достаточно длинные имена.
Блочность структуры завоевала широкое признание благодаря очевидным выгодам, ощущаемым как в процессе реализации языка, так и при программировании. Идеи структурного программирования наиболее естественным образом реализуются именно в языках с блочной структурой. Ясность структуры программы дает программисту большие преимущества. Структурную программу легче проектировать, понимать, сопровождать. В настоящее время по ряду объективных причин сложилась ситуация, когда первым языком программирования, с которым сталкивается начинающий, является Бейсик, который имеет слаборазвитую структуру данных, а также метки и условные переходы как средство реализации сложных алгоритмов. Все это не позволяет рекомендовать Бейсик в качестве учебного средства при изучении программирования. Его считают «вредным» языком, прививающим плохой стиль. Однако Бейсик имеет и положительные качества как самый распространенный и достаточно простой язык. [3, 7]