2018/10/26 10:15:08

Методология программирования

Методология программирования — это совокупность идей, понятий, принципов, способов и средств, определяющая стиль написания, отладки и сопровождения программ.

Содержание

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

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

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

Самые популярные и быстрорастущие языки программирования

2018

В октябре 2018 года GitHub опубликовал результаты ежегодного исследования Octoverse, в котором анализирует показатели активности участников сервиса. В частности, приводятся данные по наиболее популярным и быстрорастущим языкам программирования.

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

На второе место в рейтинге GitHub поднялся Java, опередив Python. Десятка наиболее востребованных языков программирования среди разработчиков-участников GitHub выглядит следующим образом:

  1. Javascript
  2. Java
  3. Python
  4. PHP
  5. C++
  6. C#
  7. TypeScript
  8. Shell
  9. C
  10. Ruby

Наибольший подъем в лидирующей группе продемонстрировал проект TypeScript, который не просто вошел в топ-10, а расположился сразу на 7-й позиции. Наихудшая динамика оказалась у Ruby: этот язык скатился с 5-го места на 10-е.

Самым энергично развивающимся языком программирования администрация GitHub признала Kotlin, у которого число сторонников в 2018 году выросло в 2,5 раза во многом благодаря сходству с Java и способности к быстрой разработки приложений для Android. Следом за Kotlin идут HCL и TypeScript, а вся десятка языков программирования, демонстрирующих самые высокие темпы роста популярности в 2018 году, приведена ниже:

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

Статистика GitHub вполне может отражать реальное положение дел в части востребованности тех или иных языков программирования. К октябрю 2018 года сервисом пользуются 31 млн программистов из 200 стран. Они разместили на портале около 96 млн репозиториев, что соответствует примерно 95% в общем размере кодовой базы программного обеспечения с открытым исходным кодом.[1]

Парадигмы программирования

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

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

В качестве парадигм - единиц выступают:

  1. определения (декларативное программирование),
  2. предикаты (логическое программирование),
  3. функции функциональное программирование),
  4. действие (императивное программирование),
  5. правило (продукционное программирование),
  6. диаграмма переходов (автоматное программирование) и др.

Software 2.0: Как новый подход к разработке ПО заставит компьютеры поумнеть

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

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

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

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

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

Программные средства

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

Свободно распространяемые инструментальные средства можно устанавливать и использовать на любых компьютерах с операционными системами семейства Windows и Linux.

На олимпиадах по информатике и программированию с успехом используются только свободно распространяемые инструментальные средства в среде Windows и Linux, позволяющие разрабатывать программное обеспечение без ошибок. На олимпиадах по программированию последние годы использовались языки программирования Pascal, C/C++ и Java.

Для ведения документации при разработках программ вполне могут использоваться лицензионные и свободно распространяемые офисные пакеты программ Open Office и Microsoft Office. Файлы документации, создаваемые в лицензионных и свободно распространяемых офисных, информационно совместимы.

Интернет-технологии

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

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

Гипертекстовые подпрограммы включаются в гипертексты вместе с гипертекстовыми формами и подпрограммами, которые называются скриптами.

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

Язык JavaScript является расширением разметки гипертекстов HTML и по этим причинам интерпретатор языка JavaScript встроен во все браузеры и все гипертекстовые редакторы.

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

Проблемы программирования

Программный продукт в соответствии с международными требованиями ISO не должен содержат ошибок и дефектов, которые приводят к сбоям и отказам при выполнении этих программ на ЭВМ либо в сети ЭВМ. Программы с дефектами и ошибками - это не продукт.

Согласно Закону РФ "О защите прав потребителей" любой товар при обнаружении в нем дефектов подлежит замена либо возврату денежных средств за его приобретение и сопутствующие издержки.

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

Тестирование программ может выявить наличие ошибок в программах, но не может гарантировать их отсутствие. Гарантии отсутствия ошибок в алгоритмах и программах могут дать только доказательства их правильности. Алгоритм не содержит ошибок, если он дает правильные решения для всех допустимых данных.

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

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

Проблемы обучения программированию

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

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

Практика применения и изучения доказательных методов программирования показала, что эта технология вполне доступна студентам математических факультетов, которым вполне по силам написание доказательств правильности алгоритмов, после проверки и тестирования программ на ЭВМ.

Наибольший эффект в освоении технологий доказательного программирования наблюдается в олимпиадах по информатике и программированию, где победителями и призёрами становятся те студенты, которые освоили технику тестирования программ на ЭВМ и составления алгоритмов и программ без ошибок.

См. также

информатика

логика в информатике

программирование

решение задач на ЭВМ

Интернет-технологии

логическое программирование

доказательное программирование

технология программирования

Литература

  1. Наур.Наука программирования. М., Мир, 1982.
  2. Тарский М. Методология программирования. М., Мир, 1981.
  3. Дейкстра Э. Дисциплина программирования = A discipline of programming. — 1-е изд. — М.: Мир, 1978. — С. 275.
  4. Бабаев И.О., Герасимов М.А., Косовский Н.К., Соловьев И.П. Интеллектуальное программирование. Турбо-Пролог и Рефал-5 на персональных компьютерах. СПб, изд-во СпбГУ, 1992.
  5. Роберт В Себеста «Основные концепции языков программирования», 5-е издание : Пер. с англ. — М. : 2001. — 672 стр. с ил., «Вильямс»
  6. Иан Соммервилл «Инженерия программного обеспечения», 6-е издание : Пер. с англ. — М. : 2002. — 624 стр. с ил., «Вильямс»
  1. Каймин В.А. Методы разработки программ на языках высокого уровня. М., МИЭМ, 1985.
  2. Каймин В.А. Основы доказательного программирования. М., МИЭМ, 1987.
  3. Каймин В.А. Информатика. Учебник для студентов. М., ИНФРА-М, 1998-2009.
  4. Каймин В.А. Информатика. Учебник для школьников. М., Прогресс, 2007-2009.

Интернет-ссылки