Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2021-01-31 | 81 |
5.00
из
|
Заказать работу |
|
|
Наиболее распространенная практика прикладного программирования на основе императивного управления и процедурно-операторного стиля постро- ения программ получила популярность более шестидесяти лет назад в сфере узко профессиональной деятельности специалистов по организации вычис- лительных и информационных процессов. Специалисты в области теорети- ческого и экспериментального программирования исследовали значимость и фундаментальность формальных математических моделей в программирова- нии и эффективных средств их реализации. Последние десятилетия резко расширили географию информатики, распространив ее на сферу массового общения и досуга. Это меняет критерии оценки информационных систем и предпочтения в выборе средств и методов обработки информации.
|
|
ИТ-технологиями на уровне Windows-Word, создавать компилятор для сво- его ЯП, абстрактной машиной для которого будет аналог gcc. Это повышает уровень средств прикладного программирования, но не меняет его пара- дигмы.
|
|
|
В наши дни признают в качестве основных парадигм программирования: ИП, ФП, логическое программирование (ЛП) и объектно-ориентированное
|
Важно отметить, что основные ПП по-разному проявляют себя на разных классах задач, и выбор ПП влияет на трудоемкость программирования, успешность технологии программирования и надежность применения про- грамм.
Учебное программирование
Переход к параллельным вычислениям намного осложняет изначально весьма непростую задачу обучения программировании. Ознакомление с об- разовательными проблемами параллельного программирования и моделями параллелизма, встречающимися в учебных и экспериментальных языках и системах программирования, показывает, что в практике обучения програм- мированию предстоит преодолеть дистанцию от уровня базовых средств управления взаимодействующими процессами до уровня разработки про- грамм высокопроизводительных вычислений.
Мир программирования и его техническая основа претерпели значитель- ные изменения за последние двадцать лет. Возрастает актуальность обучения параллельному программированию, что требует развития языковой и систем- ной поддержки введения в программирование. В середине 1970-х годов ак- тивное исследование методов параллельного программирования рассматри- валось как ведущее направление преодоления кризиса технологии програм- мирования. Теперь рост интереса к параллельному программированию связан с переходом к производству многоядерных архитектур. Прежде всего следует упомянуть бурное развитие суперкомпьютеров и распределенных информационных систем, а также переход на многоядерные процессоры и массовое распространение многопроцессорных графических ускорителей.
|
|
по-видимому, достаточно сравнения их по аналогии с задачами из ранжиро- ванных серий.
Применение компьютерных игр и тренажеров быстро выводит некоторых учащихся за пределы пространства легко ранжируемых задач и типовых ва- риантов решений. Более сложные задачи характеризуются резким возраста- нием неожиданных вариантов решений с разным уровнем алгоритмизации. Программирование и отладка решений таких задач – итеративный процесс, каждый шаг которого повышает уровень изученности решаемой задачи и уточняет пространство ее возможных решений. На разных фазах этого про- цесса в зависимости от достигнутого уровня изученности действуют свои критерии качества программы, что увеличивает число оценочных критериев, влияющих на оценку решения задачи, и даже провоцирует преждевременный переход к производственным критериям.
|
|
|
Karel – появившийся в начале 1980-х язык Karel назван в честь Карела Чапека, предложившего слово «робот». Учебный мир для начального озна- комления с программированием устроен как управление роботом Karel, уста- навливающим звуковые сигналки в разных местах сетки улиц и проспектов. Робот вооружен тремя видеокамерами, компасом и корзиной для сигналок. Видеокамеры позволяют видеть установленные сигналки. У робота имеется
механическая рука для сбора и установки сигналок. Учащийся должен, всмотревшись в заданную ситуацию на сетке улиц и проспектов, запрограм- мировать робота так, чтобы он выполнил задание по установке или удалению сигналок.
|
Робик – идея программируемых роботов в языке начального языка про- граммирования РОБИК, созданного Г. А. Звенигородским, обобщена до уровня коллекции роботов, каждый из которых обладает своей системой ко- манд, но при этом они могут выполнять общую программу. Такой подход позволял определять специализированных роботов на каждый класс задач, нацеленный на освоение конкретных понятий. Выбор роботов обеспечивал пошаговое методически обусловленное, возможно, безмашинное изучение основных концепций программирования с последующим переходом к при- менению стандартных языков программирования. Мостиком такого пере- хода служили специальные синтаксические диаграммы, позволяющие пере- лагать программы на разные языки практически без синтаксических ошибок. Grow – несколько в стороне от магистральной линии обучения програм- мирования лежит идея учебного конструктора игр Grow, созданного в начале 1980-х годов в Калифорнии. В этом языке конструирование программ допус- кает использование при организации ветвлений текстовых шаблонов и веро- ятностей срабатывания ветви, что позволяет снизить стартовый барьер пони-
|
мания предикатов.
A++ – поддерживает изучение функционального, объектно-ориентиро- ванного, императивного и логического программирований, включая рекурсию и функции высших порядков.
|
информационных систем для различных применений. Языки XXI века, осо- бенно учебные языки программирования, характеризуются мультпарадиг- мальностью, отражающей нацеленность на обучение специалистов под- держке ПЖЦП и ознакомление с параллелизмом.
Oz – более амбициозный мультипарадигмальный язык программирова- ния, реализованный в учебной системе программирования Mozart, создан для ознакомления студентов с 8 наиболее важными парадигмами программиро- вания, обеспечивающими рациональное применение современных ИТ и пер- спективы их усовершенствования на базе полного спектра доступных меха- низмов, включая параллелизм, сети, реальное время и т. д., без претензий на предварительное изучение теории программирования. Автор языка настаи- вает, что в определении учебного ЯП парадигмы должны быть четко разде- лены.
|
|
Переменные пишутся с заглавной буквы и подчинены дисциплине одно- кратного присваивания. Значения переменных могут быть неизвестны или объявлены вычисляемыми в будущем, что приводит к откладыванию завися- щих от них вычислений подобно ленивым вычислениям. Конструирование программы основано на введении процедур и функций, включении модулей
|
Параллельные вычисления поддержаны в стиле разделения времени между потоками программы, способными взаимодействовать в терминах со- общений или общей памяти. Дисциплина разделения времени учитывает приоритеты, задающие пропорции выделения времени с профилактикой пол- ного оттеснения какого-либо потока. Для решения задач переборного типа имеется механизм программирования стратегии поиска в рамках ограничен- ной области. Потоки, из которых строится многопоточная программа, обла- дают своей памятью и могут иметь доступ к внешним данным, включая до- ступ к сторонним сайтам. Потоки устроены как традиционная императивно- процедурная программа. Новые потоки запускаются в стиле развилка как в UNIX. Авторы утверждают, что это происходит в 60 раз быстрее, чем в Java JDK 1.2. Систем программирования Mozart доступна через Emacs.
|
Параллельное программирование на уровне процессов выглядят как не- что среднее между программированием на макроассемблере и языках высо- кого уровня. Различие проявляется в понимании данных и команд. В резуль-
тате разработка программ для организации взаимодействия процессов отли- чается от подготовки обычных последовательных программ на весьма глубо- ком уровне, что можно показать на модели интерпретирующего автомата для языка управления процессами. Такой автомат требует реализации дополни- тельной таблицы событий и структуры данных для очередей, регулирующих доступ к данным.
Термин «процесс» используется для обозначения поведения «объекта». Описание процесса начинается с определения класса событий, представляю- щих интерес для участвующих в нем объектов. Первая абстракция при моде- лировании процессов – исключение времени, т. е. отказ от ответов на вопрос происходят ли события строго одно за другим. Это обеспечивается следую- щими договоренностями:
– элементарные действия исполняются мгновенно;
–
|
– нет точной привязки действий к моменту времени;
– определены отношения «раньше–позже», «одновременно», «незави- симо»;
– совместность событий понимается как отношение «синхронизация»;
– одно событие из независимых возникает в любом порядке, без при- чинно-следственной связи.
В середине 1980-х годов вышла в свет сразу ставшая библиографической редкостью книга Г. А. Звенигородского «Первые уроки программирования», вводившая школьников в мир программирования для ЭВМ. В этой уникаль- ной книге была выстроена практичная схема начального ознакомления с ос- новными понятиями программирования, причем последовательность изло- жения была тщательно методически обусловлена постановками задач, пока- зывающими недостаточность ранее освоенных средств. Каждый шаг усложнения понятий на недоуменный вопрос: Зачем? cодержал ответ:
Чтобы решать вот такие задачи!
|
Для более старших школьников методика Г. А. Звенигородского в Ново- сибирске получила развитие в виде учебно-производственного языка Рапира
– он похож на бестиповый Паскаль с более универсальными структурами
данных и управления – и проекта интегрированной учебной среды «Школь- ница». Большую роль на этом уровне сыграла компьютерная графика – си- стема Шпага для программирования прорисовки любимых картинок в понят- ных детям терминах.
Следует отметить, что система понятий языка начального обучения про- граммированию Робик изначально была приспособлена, содержала резерв, для изучения параллельных программ, но этот резерв не был востребован. В наши дни он обретает актуальность.
|
Типичные «проколы» при организации обучения программированию сво- дятся к слишком прямолинейным попыткам следующего типа:
– преподавать «чистое» программирование;
– формировать одновозрастные группы;
– отбирать исключительно способных к учебе;
– выстраивать «сквозной» учебный план на много лет;
– снижать трудоемкость и сложность учебных работ;
– форсировать приобретение практических навыков. Все это нужно, но следует учесть, что:
–
|
– в разновозрастных группах легче происходит смена ролей, многие из которых желательно испытать на этапе учебы;
– рядом должны быть будущие пользователи, чтобы будущий програм- мист учился их понимать;
– темп «созревания» психологических структур может требовать при- остановок в учебе;
– многие явления производственного программирования не понятны без повышенной сложности, трудоемкости и работы в ограниченных условиях;
– навыки, приобретенные на ранних этапах обучения, потребуется уметь заменять на новые.
Разработка учебного языка программирования, приспособленного к озна- комлению студентов со сложными моделями вычислений, с параллельным программированием и с методами верификации программ, без которых надежность и производительность программирования весьма проблема-
|
Полноценное решение проблем параллельного программирования тре- бует создания более специализированного инструментария, некоторые меха- низмы реализации которого могут быть изучены в форме экспериментальной разработки учебного языка параллельного программирования. Для этого здесь рассматривается последовательность ознакомления с явлениями парал- лелизма, схема языково-системной поддержки обучения методам организа- ции параллельных процессов и примеры конструирования учебных роботами в терминах учебного языка Синхро.
Привлекает внимание рост числа программ обучения параллельному программированию через робототехнику. Этот путь несколько осложнен инженерно техническими проблемами, которые можно смягчить созданием программно визуализируемого конструктора роботов, допускающего оперативную настройку на спектр учебного материала.
Далее будет рассмотрен язык Синхро, при создании которого учтены фак- торы успеха наиболее известных учебных языков программирования, таких как Basic, Pascal, Logo, Grow, а главное – методически обусловленное введе- ние программистских понятий в языке начального обучения программирова- нию Робик.
Рассмотрим язык Синхро как учебный язык программирования. Проект язык Синхро специально ориентирован на начальное обучение параллельному программированию в терминах управления взаимодействием роботов на небольших игровых примерах, показывающих типичные проблемы создания и отладки параллельных программ.
|
|
Следует отметить, что изначально система понятий языка начального обучения программированию Робик содержала резерв для изучения парал- лельных программ. Программа могла включать/выключать разных исполни- телей, обладающих своими системами команд, и назначать исполнителей от- дельных действий. Этот резерв не был востребован в конце 1970-х годов, в наши дни он обретает актуальность.
Чуть позже, в конце 1980-х, увидел свет перевод на русский язык превос- ходной книги блестящего ученого-исследователя проблем правильности про- грам Т. Хоара «Взаимодействующие последовательные процессы», в кото- рой на простых примерах управления автоматами показано, что параллель- ные композиции внешне не сложнее последовательных, если не акцентировать внимание на том, что отладка взаимодействующих процессов много сложнее. Важно, что модель Хоара чувствительна к обнаружению до- статочно тонких ошибок при создании программ. Поэтому для целей обуче- ния примеры Хоара дополнены рассмотрением вопросов отладки и методов минимизации ее объема с помощью выделения типовых, многократно ис- пользуемых фрагментов, реализуемых с учетом синтаксической правильно- сти результата подстановки фрагментных переменных.
Ведущее понятие языка Синхро – исполнитель, способный выполнять ко- манды29, исполнителей может быть много и они могут обладать разными си- стемами команд.
|
Кроме того, из бинарных операций можно конструировать фильтры. Ре- зультат фильтрации исчезает из аргумента – он переносится в другую струк- туру данных или сохраняется как промежуточное значение. Структура из фильтров дает структуру из результатов их применения к одному и тому же аргументу. Кроме обычных присваиваний имеются и пересылки, при кото- рых пересылаемые данные могут исчезать.
29 Унаследовано от языка Робик и школьного курса информатики. Используется как общий синоним терминов «автомат», «процессор», «робот».
|
учет = ( n b ~~ { b: |, b) })
\\ параметризация барьера в заголовке функции
ЕСЛИ n ТО b: учет (n – 1, b)
\\ использование барьера в определении функции
учет (10 контр)
\\ задание имена барьера при вызове функции
Язык не поддерживает статической иерархии определений и областей действия имен. Локализация имен используется лишь при определении ис- полнителей и функций. Текст программы формируется как композиция дей- ствий и фрагментов. При организации сложных данных и действий исполь- зуются общие структуры или средства композиции, такие как списки, вектора и множества, обеспечивающие представление отношений «после», «одновре- менно» и «взаимоисключено», причем последовательность вычисления ком- понентов может не зависеть от порядка их размещения в программе или в памяти:
(a; b) – последовательный доступ к результатам вычисления a; b в по- рядке вхождения.
(a, b) – последовательный доступ к результатам вычисления a, b в про- извольном порядке.
(a | b) – первый из результатов успешного вычисления a; b в порядке вхождения.
[a, b] – индексный доступ к результатам вычисления a, b в произвольном порядке.
|
[a | b] – пара из номера и первого успешно вычисленного результата a или
b.
{a; b} – произвольный доступ к различимым результатам вычисления a;
b в порядке вхождения.
{a, b} – доступ к различимым результатам вычисления a, b в произволь- ном порядке.
|
Все команды допускают безусловное и условное выполнение. Действия в языке Синхро приспособлены к варьированию дисциплины доступа к дан- ным и схемы управления процессами обработки комплексов с помощью схемы обхода, выглядящей подобно оператору IF без ELSE. Действия, изме- няющие состояния памяти, подчинены механизму транзакций, т. е. призна- ние их безуспешными влечет восстановление памяти в состояние, предше- ствующее этому действию.
При отладке формируется ряд контекстов, на которых демонстрируются конкретные свойства фрагментов, из которых собирается полная программа. Это контексты для отдельных потоков, для пар синхронизованных потоков, для интегрированной из потоков программы, а кроме того, контексты для удостоверения наличия-отсутствия информационных связей между фрагмен- тами. Потоки могут отлаживаться и выполняться независимо друг от друга в предположении, что каждый из них можно располагать отдельно. Механизм разложения программы на потоки дает полигон для формирования навыков аспектно-ориентированной декомпозиции программ.
Барьеры выполняют роль точек синхронизации, разбивающих программу на слои. Каждый слой начинает выполняться одновременно и завершается до выполнения следующего слоя. Выражения одного слоя из разных потоков, помеченные одинаковыми барьерами, выполняются одновременно.
|
Показ общих моделей параллельных вычислений и связанных с их при- менением явлений выполнен на задачах, описанных в книге Хоара [16], олим- пиадных задачах, примерах программ из описаний языков параллельного программирования и учебных примеров из школьных и факультативных кур- сов информатики. При подго
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!