Файл: Классификация языков программирования . Критерии выбора среды и языка разработки программ.pdf
Добавлен: 04.04.2023
Просмотров: 67
Скачиваний: 1
Например, при написании информационной системы института требуются абстрактные структуры данных студент, курс, профессор, расписание и абстрактные операции записать студента па курс и спланировать расписание для курса. Программист должен создать программные реализации этих абстракций с использованием реального языка программирования, в котором изначально они отсутствуют. После этого программные абстракции можно использовать как новые элементы и в других частях программы, не вникая в их фактическую реализацию. Ясно, что язык должен обеспечивать такую возможность. Например, в языке C++ поддержка абстракций существенно выше, чем в языке С [18, с. 20].
9. Выразительность. Выразительность языка может характеризовать две возможности. С одной стороны, она означает наличие очень мощных средств для представления структур данных и действий, описывающих большой объем вычислений с помощью очень маленькой программы (языки APL, Snobol, Icon. SETL) [20, с. 34].
С другой стороны, выразительность позволяет записывать вычисления в более удобной и компактной форме. Например, в языке С запись х++ удобнее и короче записи х = х + 1. Аналогично, булевы операции and then и or else в языке Ada позволяют указать сокращенное вычисление булевых выражений. В языке Pascal циклы с известным количеством повторений проще создавать с помощью оператора for, чем с помощью оператора while. Несомненно, что все эти возможности облегчают разработку программ.
10. Надежность. В общем случае, надежность – это способность программы выполнять требуемые функции при заданных условиях и в течение определенной) периода времени. Обычно уровень надежности характеризуется степенью автоматического обнаружения ошибок, которую обеспечивают транслятор и операционная среда выполнения программы. Надежный язык позволяет выявлять большинство ошибок во время трансляции программы, а не во время ее выполнения, поскольку это минимизирует стоимость ошибок [20, с. 34].
Опишем факторы, имеющие сильное влияние на надежность программ.
- Проверка типов. Принципиальным средством достижения высокой надежности языка является система типизации данных. В ходе проверки типов анализируется совместимость типов в программе. Разные языки обеспечивают разную полноту проверки типов. Достаточно слабой считают проверку типов в языке С [17, с. 86].
Языки с динамической типизацией вообще относят эту проверку только к периоду выполнения программы. Наиболее полную проверку гарантирует языка Ada: в процессе компиляции программы проверяются тины практически всех переменных и выражений. Такой подход фактически устраняет ошибки типов при выполнении программы.
В языках Pascal, Ada и Java диапазон изменения индексов является частью объявления массива и тоже подвергается проверке. Такая проверка очень важна для обеспечения надежности программы, поскольку индексы, выходящие за пределы допустимого диапазона, часто создают серьезные проблемы [17, с. 86].
- Обработка исключений. Исключением называют аварийное событие, которое обнаруживается во время выполнения программы (аппаратом исключений). В результате авария устраняется и программа продолжает работу. Подобный механизм значительно повышает надежность вычислений. Языки Ada, C++, C# и Java позволяют обрабатывать исключения, хотя во многих других языках этот механизм отсутствует [20, с. 35].
- Совмещение имен. Совмещением имен называют наличие нескольких разных имен у одной и той же ячейки памяти. Во многих языках переменным разрешается иметь но паре имен: обычное прямое имя и косвенное имя (на базе указателя). С одной стороны, совмещение имен может приводить к понижению надежности программы. С другой стороны, эта возможность повышает гибкость программирования и компенсирует недочеты жестких схем типизации.
11. Стоимость. Суммарная стоимость языка программирования складывается из нескольких составляющих.
- Стоимость выполнения программы. Она во многом зависит от структуры языка. Язык, требующий многочисленных проверок типов во время выполнения программы, будет препятствовать быстрой работе программы [22, с. 60].
Взгляды на этот фактор стоимости претерпели существенную эволюцию. В середине прошлого века фактор был решающим в силу высокой стоимости аппаратных средств компьютера и их низкой производительности. Большое значение придавалось применению оптимизирующих компиляторов, эффективному распределению регистров и механизмам эффективного выполнения программ.
Сейчас считают, что стоимость (и скорость) выполнения программы существенна лишь для программного обеспечения систем реального времени. Программы реального времени должны обеспечивать быстрые вычисления управляющих воздействий на разнообразные управляемые объекты [11, с. 933].
Поскольку необходимо гарантировать определенное время реакции, следует избегать языковых конструкций, ведущих к непредсказуемым издержкам времени выполнения программы (например, при сборке мусора в схеме динамического распределения памяти). Для обычных приложений все снижающаяся стоимость аппаратуры и все возрастающая стоимость разработки программ позволяют считать, что скорость выполнения программ уже не столь критична [9, с. 218].
- Стоимость трансляции программы. Размер этой стоимости зависит от возможностей используемого компилятора. Чем совершеннее методы оптимизации, тем дороже стоит трансляция. В итоге создается эффективный код: резко сокращается размер программы и/или возрастает скорость ее работы.
- Стоимость создания, тестирования и использования программы. Этот фактор стоимости удобно проиллюстрировать на примере среды для языка Smalltalk. Данная среда состоит из окон, меню, механизма ввода данных с помощью мыши и набора средств, позволяющих свободно оперировать со Smalltalk-программой. Здесь программное решение может быть спроектировано, закодировано, протестировано, изменено и использовано с минимальными затратами времени и сил программиста [20, с. 36].
По современным представлениям, наличие в языке развитых конструкций и структур является лишь одним аргументом, влияющим на широту его использования. Наличие же подходящей среды программирования существенно усиливает применимость слабого языка. Прежде всего, в среде программирования должна присутствовать надежная, эффективная и хорошо документированная реализация языка программирования. Специализированные текстовые редакторы, средства моделирования и управления конфигурацией, а также утилиты тестирования, отражающие особенности как самого языка, так и порядка его использования, – это мощные ускорители всех этапов разработки программ. В итоге минимизируются время и затраты, требуемые программисту на решение какой-либо задачи [5, с. 134].
- Стоимость сопровождения программы. Многочисленные исследования показали, что значительную часть стоимости используемой программы составляет не стоимость разработки, а стоимость сопровождения программы. Сопровождение – это процесс изменения программы после ее поставки заказчику. Сопровождение включает в себя [20, с. 36]:
- исправление ошибок (17% времени и стоимости);
- изменения, связанные с обновлением операционного окружения (18% времени и стоимости);
- усовершенствование и расширение функций программы (65% времени и сто- имости).
И. Соммервилл утверждает, что соотношение между стоимостью сопровождения и стоимостью начальной разработки может быть разным в зависимости от предметной области, где эксплуатируется программа. Для прикладных программ, работающих в деловой сфере, стоимость затрат на сопровождение в основном сравнима со стоимостью разработки. Для программного обеспечения встроенных систем реального времени затраты на сопровождение могут в четыре раза превышать стоимость самой разработки. Высокие требования в отношении производительности и надежности таких программ предполагают их жесткую структуру, которая труднее поддается модификации [9, с. 238].
Связывая сопровождение программ с характеристиками языка программирования, следует выделить, прежде всего, зависимость от читабельности. Обычно сопровождение выполняется не авторами программы, а другими лицами. В силу этого, плохая читабельность может крайне усложнить задачу усовершенствования и расширения функций программы.
Обобщая вышесказанное, мы приходим к выводу, что в качестве основных критериев выбора языка разработки программ выступают: читабельность; простота; ортогональность; структурированность потока управления в программе; легкость создания программ и ряд других критериев.
ЗАКЛЮЧЕНИЕ
Цель курсового исследования было изучить классификацию языков программирования и критерии выбора среды и языка разработки программ.
Анализ материалов по проблеме исследования показал, что язык программирования представляет собой знаковую систему, предназначенную для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и т.п.
Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
В ходе исследования мы выяснили, что на данный момент нет четкой классификации языков программирования, охватывающей все признаки и рассказы вающей о «переплетениях» различных классификаций между собой.
Анализ источников позволил определить следующие критерии выбора среды разработки программ:
1) сложность и трудоемкость процесса проектирования программного обеспечения для конкретной среды;
2) наличие инструментальных средств разработки программного обеспечения;
3) возможность внесения корректив в программу в процессе эксплуатации;
4) наличие средств проектирования пользовательского интерфейса;
5) скорость выполнения программы;
6) надежность работы программы и защищенность от программных сбоев.
Относительно критериев выбора языка разработки программ, то здесь на первый план выходят: 1) читабельность; 2) простота; 3) ортогональность; 4) структурированность потока управления в программе; 5) легкость создания программ; 6) концептуальная целостность языка; 7) естественность для приложений; 8) поддержка абстракций; 9) выразительность; 10) надежность и 11) стоимость.
В завершение отметим, что читабельность и легкость создания прямо влияют на надежность программы. Чем выше значения этих показателей, тем надежнее будет программа.
Ортогональность приемлема в разумных пределах. Чрезмерная степень ортогональности усложняет применение языка. Если разрешена любая комбинация элементарных конструкций, то логические ошибки программы могут просто остаться незамеченными, их не сможет выявить компилятор.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Баженова И.Ю. Языки программирования: Учебник / Под ред. В.А. Сухомлина. – М.: Академия, 2012. – 368 с.
- Бен-Ари М. Языки программирования. Практический сравнительный анализ: Учебник по языкам программирования / Пер. с англ. В.С. Штаркмана, М.Н. Яковлевой; Под ред. В.С. Штаркмана. – М.: Мир, 2000. – 366 с.
- Быканов Н.П. Классификация языков программирования // Международный журнал социальных и гуманитарных наук. – 2016. – Т. 5. №1. – С. 229-232
- Бьянкуцци Ф., Уорден Ш. Пионеры программирования: Диалоги с создателями наиболее популярных языков программирования // Пер. сангл. С. Маккавеева. – СПб.; М.: Символ, 2011. – 603 с.
- Головин И.Г., Волкова И.А. Языки и методы программирования: Учебник. – М.: Академия, 2012. – 304 с.
- Дешко И.П., Кряженков К.Г., Цветков В.Я. Системная и программная инженерия: Учебное пособие. – М.: МАКС Пресс, 2018. – 79 с.
- Душкин Р.В. Квантовые вычисления и функциональное программирование. – М.: ДМК-Пресс, 2015. – 232 с.
- Егоров А.Н., Крупенина Н.В. Языки программирования: Учебное пособие. – СПб.: Изд-во Гос. ун-т морского и речного флота им. адм. С.О. Макарова, 2014. – 240 с.
- Иванова Г.С. Технология программирования: Учебник. – 3-е изд., стер. – М.: КноРус, 2013. – 333 с.
- Идрисов Р.И., Одинцов С.П., Шилов Н.В. Онтологический подход к проблеме классификации компьютерных языков: состояние и перспективы // Системная информатика. – 2013. – №1(1). – С. 63-78.
- Ильичев М.В. Эволюция языков программирования // Экономика и социум. – 2016. – №10 (29). – С. 931-933.
- Керниган Б., Ритчи Д. Язык программирования С // Пер. с англ. и ред. В.Л. Бродового. – 2-е изд., перераб. и доп. – М.: Вильямс, 2017. – 288 с.
- Кинзябулатова Р.А., Маврина А.Ю. Классификация языков программирования // Наука: прошлое, настоящее, будущее: Сборник статей: Международной научно-практической конференции // Отв. ред. А.А. Сукиасян. – Уфа: Аэтерна, 2016. – С. 68-69.
- Кобелев И.А., Иванова Л.В., Чекушина В.Е. Два типа языков программирования // Современные проблемы науки и образования. – 2014. – №4. – С. 56-63.
- Колисниченко Д.Н. PHP и MySQL. Разработка веб-приложений. – 6-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2017. – 640 с.
- Лазарева И.М. Теория языков программирования и методы трансляции: Учебное пособие. – Мурманск: Изд-во МАГУ, 2018. – 97 с.
- Ляхович В.Ф., Молодцов В.А., Рыжикова Н.Б. Основы информатики: Учебник. – М.: КНОРУС, 2018. – 346 с.
- Наумов В.Ю. Информатика и программирование: Основы программирования на языке С++. – Волгоград: Изд-во ВолгГТУ, 2017. – 246 с.
- Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции: Учебное пособие. – СПб: БХВ-Петербург, 2014. – 471 с.
- Орлов С.А. Теория и практика языков программирования: Учебник. – СПб.: Питер, 2014. – 688 с.
- Пахунов А.В. Языки программирования: классификация, особенности, критерии выбора // Современная наука. – 2015. – №4. – С. 89-91.
- Пономарев О.П. Языки программирования: Учебное пособие. – Белгород: Изд-во Белгородского ун-та кооп., экономики и права, 2013. – 107 с.
- Пратт Т., Зелковиц М. Языки программирования: Разработка и реализация // Пер. с англ. А. Михайловой. – 4-е изд. – СПб.: Питер, 2002. – 688 с.
- Стативко Р.У., Лазебная Е.А. Языки программирования: Учебное пособие. – Белгород: Изд-во БГТУ, 2015. – 131 с.
- Черпаков И.В. Основы программирования: Учебник и практикум. – М.: Юрайт, 2018. – 219 с.
- Чурсин В.Б. Системное программное обеспечение. Трансляторы: Учебное пособие. – Орск : Изд-во ОГТИ, 2017. – 102 с.