Моделирование парадигм программирования
Создание и использование коллекций изученных задач, решения которых представлены в виде готовых компонентов, накапливаемых в общей информационной среде, дают основание перехода от библиотек к языкам КП. Нужна лишь подходящая парадигма программирования, допускающая эволюцию не только области применения ИС, но и пространства реализационных решений по созданию самой ИС. Ведущие парадигмы структурированного и объектно-ориентированного программирования ограничивают такую эволюцию рамками стандартных вычислительных моделей [41]. При необходимости это ограничение преодолевают привлечением ФП, о чем свидетельствует рост рейтинга систем функционального программирования (СФП), используемых в самодеятельных проектах, доведенных до завершения. Выигрыш дает приспособленность СФП к быстрой отладке, верификации, лаконизм, гибкость и моделирующая сила. Все это позволяет рассматривать СФП как эффективную инструментально-методическую основу информационной среды обучения современному программированию [[8],[22], [23],[37],[54]].
Исторически практика программирования складывается, можно сказать кристаллизируется, вокруг мощных библиотек подпрограмм и коллекций типовых компонентов, разрабатываемых на базе сравнительно узкого круга языков и в рамках технологий программирования, сложившихся почти полвека назад. Эти полвека не прошли даром. Появились технические возможности, дающие новое звучание методам работы с данными, что открывает перспективу более комфортабельной организации труда для очередного поколения программистов, особенно на этапе обучения профессии.
Современные ИТ сделали доступным для практики богатейший материал, само обилие которого является серьезной проблемой для его освоения и применения [[82]]. Этот материал является базой для оттачивания профессионального мастерства по определению ИС из готовых компонентов. Работа с компонентами подразумевает многократность использования, вариативность реализации и повторность разработки. Это влечет необходимость учета разных критериев и требований, подвергающихся непредсказуемой эволюции.
Функциональный подход к компонентному программированию позволяет формализовать на метауровне особенности разных технологий программирования, что дает основания для методики активного обучения программированию и конструированию ИС из компонентов СФП.
Сборка программы из автономно развиваемых компонентов требует формулировки достигаемой ими цели, понимание которой гарантирует корректность полученного результата. Формулировать цели частей программы - процесс отнюдь не тривиальный. В его основе лежат разные, трудно сопоставимые, подходы к классификации понятий, отчасти преставимые как парадигмы программирования.
В данном ознакомительном курсе не рассмотрены такие парадигмы, как учебное и теоретическое программирование, программирование баз данных, сайтов, сервисов, языки разметки и ряд других, освоение которых происходит естественно на практике при начальном обучении программированию. В таблице 15.1. указаны курсы Интернет-Университета информационных технологий, дополняющие материал лекций данного курса.
1 | Многоликое программирование | Баженова И.Ю., Сухомлин В.А. Введение в программирование http://www.intuit.ru/department/pl/plintro/ Непейвода Н.Н. Стили и методы программирования http://www.intuit.ru/department/se/progstyles/ |
2 | Определение языков программирования | Вояковская Н.Н., Москаль А.Е., Булычев Д.Ю., Терехов А.А. Разработка компиляторов http://www.intuit.ru/department/sa/compilersdev/ |
3 | Ассемблер | Новиков Ю.В., Скоробогатов П.К. Основы микропроцессорной техники http://www.intuit.ru/department/hardware/mpbasics/6.2.1. Ассемблер MPASM |
4 | Машинно ориентированное программирование | Галатенко В.А. Программирование в стандарте POSIX http://www.intuit.ru/department/se/pposix/ Язык программирования C http://www.intuit.ru/department/pl/cpl/ Якушева Н.М. Visual Basic http://www.intuit.ru/department/pl/vb/ |
5 | Макрообработка текстов | Храмцов П.,Б., Брик С.А., Русак А.М., Сурин А.И. Введение в HTML http://www.intuit.ru/department/internet/htmlintro/ |
6 | Языки управления процесс | Курячий Г.В., Маслинский К.А. Операционная система Linux http://www.intuit.ru/department/os/linux/ Костромин В.А.Основы работы в ОС Linux http://www.intuit.ru/department/os/baselinuxwork/ Оболочка bash |
7 | Функциональное программирование | Городняя Л.В. Основы функционального программирования http://www.intuit.ru/department/pl/funcpl/ |
8 | Стандартное системное программирование | Страуструп Бьерн Язык программирования C++ для профессионалов http://www.intuit.ru/department/pl/cpp2/ Биллиг В.А. Основы программирования на C# http://www.intuit.ru/department/pl/csharp/ Андреева Т.А. http://www.intuit.ru/department/pl/plpascal/ Программирование на языке Pascal |
9 | Декларативное программирование | Алексеев В.Е., Таланов В.А. Структуры данных и модели вычислений http://www.intuit.ru/department/algorithms/dscm/ Шрайнер П.А. Основы программирования на языке Пролог http://www.intuit.ru/department/pl/plprolog/ |
10 | Объектно-ориентированное программирование | Мейер Бертран http://www.intuit.ru/department/se/oopbases/ Основы объектно-ориентированного программирования http://www.intuit.ru/department/se/ooad/Основы объектно-ориентированного проектирования |
11 | Языки параллельного программирования. | Барский А.Б. Параллельное программирование http://www.intuit.ru/department/se/parallprog/ |
12 | Функции высших порядков | Сузи Р.А. http://www.intuit.ru/department/pl/python/ Язык программирования Python Верещагин Н.К., Шень А.Х. Языки и исчисления http://www.intuit.ru/department/calculate/lancalc/ |
13 | Оптимизация программ. | Чеповский А.М., Макаров А.В. Скоробогатов С.Ю. Common Intermediate Language и системное программирование в Microsoft .NET http://www.intuit.ru/department/pl/cil/ |
14 | Разработка программ | Терехов А.Н. Введение в технологию программирования http://www.intuit.ru/department/se/introprogteach/ Леоненков А.В. Нотация и семантика языка UML http://www.intuit.ru/department/pl/umlbasics/ Котляров В.П. http://www.intuit.ru/department/se/testing/ Основы тестирования программного обеспечения |
15 | Перспективы парадигм программирования | Кулямин В.В. Компонентный подход в программировании http://www.intuit.ru/department/se/compprog/ |