globalf5-240972240972 (850810), страница 35
Текст из файла (страница 35)
В их сфере приняты разные приоритетыпри оценке качества программирования, отличаются инструменты иметоды работы и соответственно — стиль мышления иизобразительные стереотипы. Нелинейность развития понятий,зависимость их обобщения от индивидуального опыта и склада ума,чувствительность к моде и внушению позволяют выбору парадигм в237Л.В. ГородняяОсновы функционального программированиясистеме профессиональной подготовки информатиков влиять навосприимчивость к новому.Ведущая парадигма прикладного программирования на основеимперативного управления и процедурно - операторного стиляпостроения программ получила популярность более пятидесяти летназад в сфере узкопрофессиональной деятельности специалистов поорганизации вычислительных и информационных процессов.Последние два десятилетия резко расширили географию информатики,распространив ее на сферу массового общения и досуга.
Это меняеткритерии оценки информационных систем и предпочтения в выборесредств и методов обработки информации.Консервирующееся в наши дни доминирование одной архитектурнойлинии,стандартногоинтерфейса,типовойтехнологиипрограммирования и т.д. чревато потерей маневренности приобновлении информационных технологий. Особенно уязвимы в этомотношении люди, привыкшие в учебе прочно усваивать все раз инавсегда.
При изучении языков программирования подобные проблемыобходят за счет одновременного преподавания различных языковпрограммирования или предварительного изложения основы,задающей грамматическую структуру для обобщения понятий,изменяемость которых трудно улавливается на упрощенных учебныхпримерах [14]. Именно такую основу дает изучение функциональногопрограммирования тем, что оно нацелено на изложение и анализпарадигм , сложившихся в практике программирования в разныхобластях деятельности с различным уровнем квалификацииспециалистов, что может быть полезно как концептуальная основа приизучении новых явлений в информатике.Общие парадигмы программирования, сложившиеся в самом началеэры компьютерного программирования, — парадигмы прикладного ,теоретического и функционального программирования в том числе,имеют наиболее устойчивый характер.Прикладноепрограммированиеподчиненопроблемнойнаправленности, отражающей компьютеризацию информационных ивычислительных процессов численной обработки, исследованныхзадолго до появления ЭВМ.
Именно здесь быстро проявился явный238Л.В. ГородняяОсновы функционального программированияпрактическийрезультат.Естественно,втакихобластяхпрограммирование мало чем отличается от кодирования, для него, какправило, достаточно операторного стиля представления действий. Впрактике прикладногопрограммированияпринятодоверятьпроверенным шаблонам и библиотекам процедур, избегатьрискованных экспериментов.Ценится точность и устойчивость научных расчетов. Язык Фортран —ветеран прикладного программирования , постепенно стал несколькоуступать в этой области Паскалю-Си, а на суперкомпьютерах — языкампараллельного программирования, таким как Sisal.Теоретическое программирование придерживается публикационнойнаправленности, нацеленной на сопоставимость результатов научныхэкспериментов в области программирования и информатики.Программирование пытается выразить свои формальные модели,показать их значимость и фундаментальность. Эти модели унаследовалиосновные черты родственных математических понятий и утвердилиськак алгоритмический подход в информатике.
Стремление кдоказательностипостроенийиоценкаих эффективности,правдоподобия, правильности, корректности и других формализуемыхотношений на схемах и текстах программ послужили основойструктурированного программирования и других методик достижениянадежности процесса разработки программ, например грамотноепрограммирование . Стандартные подмножества Алгола и Паскаля,послужившие рабочим материалом для теории программирования,сменились более удобными для экспериментирования аппликативнымиязыками , такими как ML, Miranda, Scheme, Haskell и другие. Теперь кним присоединяются нововведения в C и Java.Функциональное программирование сформировалось как даньматематической направленности при исследовании и развитииискусственного интеллекта и освоении новых горизонтов винформатике.
Абстрактный подход к представлению информации,лаконичный, универсальный стиль построения функций, ясностьобстановки исполнения для разных категорий функций, свободарекурсивных построений, доверие интуиции математика иисследователя, уклонение от бремени преждевременного решениянепринципиальных проблем распределения памяти, отказ от239Л.В. ГородняяОсновы функционального программированиянеобоснованных ограничений на область действия определений — всеэто увязано Джоном Маккарти в идее языка Лисп [11]. Продуманность иметодическая обоснованность первых реализаций Лиспа позволилабыстро накопить опыт решения новых задач, подготовить их дляприкладного и теоретического программирования .
В настоящее времясуществуют сотни функциональных языков программирования,ориентированных на разные классы задач и виды технических средств.Основные парадигмы программирования сложились по меревозрастания сложности решаемых задач. Произошло расслоение средстви методов программирования в зависимости от глубины и общностипроработки технических деталей организации процессов компьютернойобработки информации. Выделились разные стили программирования,наиболее зрелые из которых — машинно-ориентированное , системное, логическое , трансформационное , и высокопроизводительное /параллельное программирование.Машинно-ориентированноепрограммированиехарактеризуетсяаппаратным подходом к организации работы компьютера, нацеленнымна доступ к любым возможностям оборудования. В центре внимания —конфигурация оборудования, состояние памяти, команды, передачиуправления, очередность событий, исключения и неожиданности,время реакции устройств и успешность реагирования.
Ассемблер вкачестве предпочтительного изобразительного средства на некотороевремя уступил языкам Паскаль и Си даже в областимикропрограммирования, но усовершенствование пользовательскогоинтерфейса может восстановить его позиции.Системное программирование долгое время развивалось под прессомсервисных и заказных работ. Свойственный таким работампроизводственныйподходопираетсянапредпочтениевоспроизводимых процессов и стабильных программ, разрабатываемыхдля многократного использования. Для таких программ оправданакомпиляционная схема обработки, статический анализ свойств,автоматизированная оптимизация и контроль. В этой областидоминирует императивно - процедурный стиль программирования,являющийся непосредственным обобщением операторного стиляприкладного программирования . Он допускает некоторуюстандартизацию и модульное программирование, но обрастает240Л.В.
ГородняяОсновы функционального программированиядовольно сложными построениями, спецификациями, методамитестирования, средствами интеграции программ и т.п. Жесткостьтребований к эффективности и надежности удовлетворяетсяразработкой профессионального инструментария, использующегосложные ассоциативно семантические эвристики наряду с методамисинтаксически-управляемого конструирования и генерации программ.Бесспорный потенциал такого инструментария на практике ограничентрудоемкостью освоения — возникает квалификационный ценз [15].Высокопроизводительное программирование нацелено на достижениепредельно возможных характеристик при решении особо важных задач.Естественныйрезервпроизводительностикомпьютеров—параллельные процессы .
Их организация требует детального учетавременных отношений и неимперативного стиля управлениядействиями.Суперкомпьютеры,поддерживающиевысокопроизводительные вычисления, потребовали особой техникисистемного программирования . Графово-сетевой подход кпредставлению систем и процессов для параллельных архитектурполучил выражение в специализированных языках параллельногопрограммирования и суперкомпиляторах, приспособленных дляотображения абстрактной иерархии процессов уровня задач наконкретную пространственную структуру процессоров реальногооборудования [11], [16].Логическоепрограммированиевозниклокакупрощениефункционального программирования для математиков и лингвистов,решающих задачи символьной обработки. Особенно привлекательнавозможность в качестве понятийной основы использоватьнедетерминизм, освобождающий от преждевременных упорядоченийпри программировании обработки формул.
Продукционный стильпорождения процессов с возвратами обладает достаточнойестественностью для лингвистического подхода к уточнениюформализованных знаний экспертами, снижает стартовый барьер [10].Трансформационное программирование методологически объединилотехнику оптимизации программ, макрогенерации и частичныхвычислений. Центральное понятие в этой области — эквивалентностьинформации. Она проявляется в определении преобразованийпрограмм и процессов, в поиске критериев применимости241Л.В.
ГородняяОсновы функционального программированияпреобразований, в выборе стратегии их использования. Смешанныевычисления, отложенные действия, "ленивое" программирование,задержанные процессы и т.п. используются как методы повышенияэффективностиинформационнойобработкипринекоторыхдополнительно выявляемых условиях [9].Экстенсивные подходы к программированию — естественная реакциянарадикальноеулучшениеэксплуатационных характеристикоборудования икомпьютерных сетей. Происходит переходвычислительных средств из класса технических инструментов в классбытовых приборов. Появилась почва для обновления подходов кпрограммированию, а также возможность реабилитации старых идей,слаборазвивавшихсяиз-занизкойтехнологичностиипроизводительности ЭВМ. Представляет интерес формированиеисследовательского , эволюционного, когнитивного и адаптационногоподходов к программированию, создающих перспективу рациональногоосвоения реальных информационных ресурсов и компьютерногопотенциала.Исследовательскийподходсучебно-игровымстилемпрофессионального, обучающего и любительского программированияможетдатьимпульспоисковойизобретательностивсовершенствовании технологии программирования, не справившейся скризисными явлениями на прежней элементной базе.
Эволюционныйподход с мобильным стилем уточнения программ достаточно явнопросматриваетсявконцепцииобъектно-ориентированногопрограммирования, постепенно перерастающего в субъектноориентированное и даже эго-ориентированное программирование.Повторное использование определений и наследование свойствобъектовмогут удлинить жизненныйциклотлаживаемыхинформационныхобстановок,повыситьнадежностьихфункционирования и простоту применения. Когнитивный подход синтероперабельным стилем визуально-интерфейсной разработкиоткрытых систем и использование новых аудио-видео средств инестандартных устройств открывают пути активизации восприятиясложной информации и упрощения ее адекватной обработки.Адаптационныйподходсэргономичнымстилеминдивидуализируемогоконструированияперсонифицированныхинформационных систем предоставляет информатикам возможность242Л.В.














