|
||||||||||||||||||||||
Методика преподавания основ алгоритмизации на базе системы "КуМир". Лекция 8Пределы роста произхводительности вычислительных систем. Виртуальные и реальные исполнители в системе "КуМир". Lego-робот - программно-управляемый исполнитель "КуМира". Подготовка заданий для учащихся и их автоматическая проверка. Итоговая работа.Технологии автоматизации вычислений с помощью электронных вычислительных машин возникли в середине XX века, и сегодня этим технологиям менее 70 лет. ЭВМ моложе пушек и ракет; моложе паровозов, автомобилей и самолетов; моложе телеграфа, телефона и телевидения; моложе теории относительности, атомной бомбы и антибиотиков. С точки зрения истории нашей цивилизации 70 лет — ничтожно малый период. Но за это время производительность технологии вычислений на ЭВМ возросла в триллион раз: от тысячи арифметических операций в секунду в 1950 году до тысячи триллионов операций в 2008 году. Технология вычислений на ЭВМ — единственная в истории человечества технология, продемонстрировавшая подобный рост эффективности. Электронные вычислительные машины собираются из так называемых “СБИС” — СверхБольших Интегральных Схем, состоящих из множества однотипных элементарных ячеек, нанесенных на монолитный кристалл кремния размером от нескольких миллиметров до 1–2 сантиметров.
Экспоненциальный рост
производительности Сегодня тактовая частота стабилизировалась, но размеры элементарной ячейки продолжают уменьшаться, и на одном кристалле умещается уже не один, а несколько процессоров (их сегодня называют вычислительными ядрами, или просто ядрами, сохраняя термин “микропроцессор” за многоядерным кристаллом в целом). Таким образом, закон Мура сегодня может быть перефразирован так: количество вычислительных ядер на одном кристалле удваивается каждые несколько лет. Если речь идет о массово производимых персональных ЭВМ, то такая ЭВМ по экономическим соображениям имеет в своем составе минимальное количество “вычислительных” кристаллов (как правило, один). Еще пять лет назад на этом кристалле умещалось одно вычислительное ядро, а сегодня умещается 2–4 ядра. Микропроцессоры становятся многоядерными. Но науке и промышленности производительности персональных ЭВМ не хватает, нужны ЭВМ гораздо большей производительности — так называемые “суперЭВМ”, или “суперкомпьютеры”. Поэтому инженеры научились собирать в единой конструкции тысячи и миллионы вычислительных ядер, а программисты и математики научились задействовать это огромное множество ядер для решения сложнейших вычислительных задач. Производительность суперЭВМ измеряется во флопсах — количестве операций над дробными (плавающими) числами, выполняемыми в секунду. Для описания громадных производительностей суперЭВМ недостаточно всем известных слов “миллион”, “миллиард”, “триллион”. Приходится использовать так называемые “метрические приставки”, введенные в обиход еще во времена Великой французской революции (1793 г.) и продолжающие ряд “кило — тысяча, мега — миллион (тысяча в квадрате), гига — миллиард (тысяча в кубе)”: 1 Кфлопс = 103 Флопс; 1 Мфлопс = 106 Флопс; 1 Гигафлопс = 1 Гфлопс = 109 Флопс (гига, от греч. — “великан”); 1 Терафлопс = 1 Тфлопс = 1012 Флопс (тера, от греч. — “чудовище”); 1 Петафлопс = 1 Пфлопс = 1015 Флопс (тысяча в пятой степени, от греч. пета — “пять”); 1 Экзафлопс = 1 Эфлопс = 1018 Флопс (тысяча в шестой степени, от греч. экза — “шесть”); 1 Зетафлопс = 1 Зфлопс = 1021 Флопс (тысяча в седьмой степени, от греч. зета — “семь”). Как скоро нам придется привыкать к этим словам? Очень скоро. Тем, кто увлекается компьютерными играми (или тем, у кого есть дети), начинать придется уже сегодня: производительность игровых приставок или графических плат для игровых компьютеров сегодня начинает измеряться в терафлопсах (тысячах миллиардов операций в секунду). А вот петафлопсные производительности — это уже дело не персональное, а государственное: в ближайшие годы в России запланировано догнать Америку, Евросоюз, Японию и Китай и создать суперкомпьютер петафлопсной производительности. Следующая единица производительности — экзафлопс — только входит в обиход: в США планируется создать суперкомпьютер такой производительности к 2020 году. А про зетафлопс сегодня рассуждают в основном ученые. Скептики-экономисты размышляют о том, кто будет готов за такие компьютеры платить, оптимисты-математики размышляют над тем, как заставить компьютеры подобной производительности работать эффективно, а вот пессимисты-физики размышляют о том, не запрещают ли известные физические законы создать вычислительное устройство подобной громадной производительности. Несколько слов о физических пределах роста скорости вычислений. Человечество создало множество полезных устройств и приборов: колесо, ветряная мельница, паровой двигатель, автомобиль, космический корабль. Идеи новых конструкций, устройств и приборов вначале возникают в головах изобретателей. Не все придуманное изобретателем превращается в реальность. Мысленный анализ придумок показывает, что некоторые изобретения оказались бы слишком дорогими в производстве, некоторые оказались бы слишком капризными или опасными в эксплуатации. Некоторые изобретения имеют столь малую область применения, что просто нет смысла тратить время, силы и деньги на их разработку. Но ряд изобретений оказывается нереализуемым принципиально, поскольку их реализация противоречила бы известным законам физики. Общеизвестный пример нереализуемой идеи — вечный двигатель. Каждый год появляются идеи все новых и новых конструкций вечных двигателей, но для доказательства невозможности их осуществления специалисту нет необходимости разбирать детали конструкции. Достаточно лишь заметить, что работоспособность конструкции нарушала бы закон сохранения энергии. По аналогичным причинам невозможны конструкции космических кораблей, перемещающих путешественников быстрее скорости света. Теория относительности утверждает, что такое быстрое движение невозможно в принципе. Вычисление в конечном счете является физическим процессом, а вычислительная машина является физическим прибором, подчиняющимся законам физики. Пытаясь придумать конструкции сверхпроизводительных компьютеров, мы должны спросить себя, не окажется ли сам факт существования таких конструкций противоречащим тем законам физики, в справедливости которых мы сегодня убеждены. Оказывается, что законы физики действительно налагают некоторые принципиальные ограничения на производительность компьютеров данного размера, работающих при данной температуре. Эти ограничения были поняты на заре зарождения компьютерных технологий, но практическую значимость стали обретать лишь в наши дни. На русском языке довольно мало публикаций на данную тему. Назовем три из них. Первая — статья Г.Жувикина “Нанокомпьютеры” в журнале “Компьютерра”: http://offline.computerra.ru/2005/575/37386/. Вторая — короткая реферативная заметка А.Семенова в журнале “Знание — сила”: http://www.znanie-sila.ru/online/issue_399.html. И, наконец, перевод на русский язык статьи двух основоположников физических аспектов теории вычислений, опубликованный в журнале “В мире науки” в сентябре 1985 года: Шарль Г. Бенне, Рольф Ландауэр “Физические пределы вычислений”: http://vivovoco.rsl.ru/VV/PAPERS/NATURE/CALC/CALC.HTM. Вот, вкратце, что можно извлечь из этих и других публикаций. Вычисление, независимо от того, выполняется оно электронными устройствами, на обычных счетах или биологической системой, такой, как мозг, — это физический процесс. К нему применимы те же понятия, что и к другим физическим процессам. Какое количество энергии необходимо, чтобы выполнить то или иное вычисление? Сколько времени потребуется на это? Каких размеров должно быть вычисляющее устройство? Другими словами, каковы физические ограничения, накладываемые на процесс вычисления? Станем на точку зрения физика, для которого информация — это не математическая абстракция, а физическая сущность, независимо от того, где она содержится — на наших российских счетах или перфокартах ЭВМ. Один из изобретателей ЭВМ, известный математик и физик Джон фон Нейман, обдумывая принципы работы ЭВМ, поставил вопрос: сколько энергии потребляет каждый шаг компьютерных вычислений? Фон Нейман был уверен, что каждый элементарный шаг вычислений, вычисление одного бита, требует, как минимум, затрат “теплового кванта” энергии, а именно затрат энергии в размере kB·T·ln2, где kB — константа Больцмана1, a T — абсолютная температура физического устройства, выполняющего вычисление. При комнатной температуре (Т = 300K) “тепловой квант” примерно равен 5 x 10–21 Дж, а значит, компьютер, вычисляющий тысячу 64-битных чисел в секунду, по фон Нейману должен был бы рассеивать не менее 3 x 10-15 Дж/сек. = 3 x 10–15 Ватт. Подход Неймана оказался плодотворным,
но не вполне верным. Молодой физик Р.Ландауэр,
пришедший в компанию IBM в 1952 году, в знаменитой
статье 1961 года подправил утверждение фон Неймана
следующим парадоксальным образом: “минимальных
затрат энергии в размере “теплового кванта”
требует не вычисление бита, а, наоборот, его
забывание, стирание”. Точка зрения Ландауэра
состоит в том, что по определению, при любом
вычислении выходная информация уже содержится
неявным образом во входной. Поэтому можно
считать, что никакое вычисление не порождает
информации. А целью вычисления является, как это
ни удивительно, не генерация новой информации, а
уничтожение лишней, бесполезной информации.
Например, выражение “2 + 2” содержит больше
информации, чем выражение “= 4”. Если нам
известно лишь то, что число 4 было получено в
результате сложения двух чисел, то мы не сможем
определить, какие именно числа складывались: 1 + 3, При сложении двух n-значных двоичных чисел мы получаем одно (n + 1)-значное число, так что на первый взгляд кажется, что любое сложение уничтожает, как минимум, (n – 1) бит информации и потому проведение в процессе вычисления любого сложения n-значных чисел потребует затрат энергии, пропорциональных n. Оказывается, этот пессимистический вывод неверен. В 1972 году другой сотрудник компании IBM (США), Шарль Г. Бенне, показал следующее. Ценой усложнения конструкции вычислительного устройства можно добиться того, что при любом вычислении энергетические затраты на любые промежуточные этапы окажутся близки к нулю, и энергию придется потратить лишь на запись окончательного результата в память (то есть на стирание содержимого памяти в той области, куда записывается результат). Этот подход называют “обратимые вычисления”, и в последние годы им стали интересоваться не только теоретики, но и компьютерные инженеры. Если бы удалось изготовить нано-суперкомпьютер зетафлопсного класса (1021 операций в секунду), кодируя каждый бит информации состоянием одного атома, работающий по принципам обратимых вычислений при комнатной температуре (Т = 300К) и записывающий 64-битный результат каждой арифметической операции в память, то согласно формуле фон Неймана – Ландауэра теоретически неизбежная рассеиваемая мощность такого компьютера составила бы всего лишь около 300 Ватт. Даже если считать, что практически рассеиваемая мощность была бы на 2 порядка выше, получилась бы приемлемая технически и экономически рассеиваемая мощность 30 кВатт. Если же предположить, что зетафлопсный компьютер будет изготовлен по используемой сегодня (необратимой) логике и в кодировании одного бита будет задействован фрагмент кристалла, содержащий 10 тысяч атомов, то теоретически неизбежная рассеиваемая мощность составит 70 мВатт. И если принять, что практически рассеиваемая мощность окажется на два порядка выше, то получится, что путь к экономически и технически приемлемому зетафлопсу могут открыть только новые технологии, нацеленные на радикальное понижение энергопотребления: обратимые вычисления, одноэлектронные переключательные устройства, неэлектронные принципы хранения и обработки информации, квантовые вычисления, размещение суперкомпьютеров в космосе (T = 3K) и другие изобретения XXI века, о которых мы сегодня даже не подозреваем. Виртуальные и реальные исполнители в системе “КуМир”Курс преподавания информатики, использующий систему “КуМир”, как и многие подобные курсы, имеет специфический недостаток. Несмотря на то что курс информатики вполне “настоящий”2, исполнители, которыми управляют школьники непосредственно или из программы на “КуМире”, в реальном мире не существуют. Можно сказать, что все изучаемые в курсе исполнители — виртуальны. Здесь речь идет совсем не об ограниченности набора исполнителей. Кроме упомянутых в лекциях исполнителей Робот и Чертежник (а также Черепаха), в комплекте Учебных Миров существует еще множество других программных исполнителей. Например, простейшие исполнители Водолей и Кузнечик, Двуног и другие. Кроме того, преподаватель или ученик могут самостоятельно создать исполнителя, просто написав его на алгоритмическом языке.
Но и исполнители из Миров “КуМира”, и исполнитель, созданный самим учеником, по-прежнему будут лишены материального воплощения. Этот недостаток смогут пережить старшие школьники, не говоря уже о студентах вузов. Но младшеклассники и школьники 5–6-х классов еще не успели растерять свой запас креативности. Поэтому им просто необходим исполнитель, которого можно потрогать, разобрать и вновь собрать и, конечно, запрограммировать. В качестве такого реального исполнителя в “КуМире” можно использовать Lego-робота из хорошо известного комплекта Mindstorm s NXT. Mindstorms NXT — это конструктор для сборки программируемого робота, впервые представленный компанией LEGO (Дания)3 в 1998 году. В 2006 году в свет вышла модель Lego Mindstorms NXT. Набор состоит из микрокомпьютера с жидкокристаллическим монохромным экраном, к которому через порты подключаются датчики (света, звука, контактный датчик), а также управляемые с микрокомпьютера Mindstorms сервомоторы и лампочка. Сам микрокомпьютер умеет осуществлять вывод на свой дисплей и даже издавать звуки, похожие на речь, и проигрывать мелодии. Программируется Робот в среде NXT-G. И конечно же в набор входят всевозможные Lego-детали для сборки робота, автомобиля и других экзотических машин. Чем больше у вас деталей Lego, тем больше различных устройств можно собрать. Методическая ценность этой игрушки состоит не только в самостоятельном проектировании задуманной машины, но и в ее программировании. Благодаря возможности загрузки программы в центральный блок Mindstorms игрушка-робот становится полностью автономной и выполняет запрограммированные действия. Программирование ее подобно программированию Вертуна, который был описан в лекциях: сначала составляется программа, потом она загружается в исполнитель и запускается. Несмотря на всю игрушечность, Lego Mindstorms — достойное занятие и для настоящих мужчин. Швейцарец Ханс Андерссон собрал из этого конструктора машину, которая решает головоломки судоку. Робот не только считывает с бумаги цифры (то есть программа распознает символы) и не только умеет играть в судоку (то есть решает задачу), но рисует на бумаге найденное решение головоломки. Автор разработки обещает раскрыть свои секреты, выложив в Интернете программу для своего робота. Однако, несмотря на всю “дружественность” среды программирования робота Lego Mindstorms для ребенка, не мечтающего посвятить свою жизнь роботостроению, запрограммировать робота достаточно сложно. При этом пиктографический интерфейс, конечно, немного облегчает процесс программирования, но каждый блок представляет собой достаточно сложный функционал. И дело даже не в большом количестве управляющих блоков-конструкций и не в элементах параллельного программирования, а в том, что, программируя, например, перемещение робота, вам потребуется управлять сразу несколькими моторами, задавая или меняя большое количество параметров: от скорости вращения или угла поворота до мощности, с которой будет запущен мотор. Эти параметры зачастую сильно зависят от обстановки робота, то есть от поверхности, по которой он поедет (или пойдет). Кроме того, поведение робота Lego Mindstorms в корне отличается от его виртуального собрата в системе “КуМир”. Виртуальный робот, выполнив два раза команду влево и затем два раза команду вправо, вернется в исходную точку. А Lego-робот не сможет этого сделать (Упражнение. Объясните, почему). Итак, перед нами возникла дилемма: Робота легко собрать (это могут даже дети 5–6 лет), но тяжело программировать. Одно из решений этой проблемы состоит в использовании робота Lego в более старшем возрасте. Другой выход — в упрощении системы программирования. В приведенном ниже примере собранный Lego-робот достаточно прост (его можно собрать за 10–15 минут) и очень похож на своего виртуального собрата — исполнителя Робот системы “КуМир”. У Lego-робота есть два мотора для движения по прямой (когда они крутят колеса в одну сторону с равными угловыми скоростями) и поворота (когда моторы крутят колеса в противоположных направлениях), а также датчик касания, для определения, есть ли перед роботом препятствие. Эту простую функциональность мы подключили к “КуМиру”, и при помощи системы “КуМир” (и исполнителя Лего) можно создавать и загружать программы в созданную машину Lego Mindstorms. У нашей машинки-робота всего 6 команд, доступных к программированию из “КуМира”: вперед (цел n) — перемещение вперед примерно на n сантиметров; назад (цел n) — перемещение назад примерно на n сантиметров; лог стена — датчик коснулся стены; вправо (цел n) — поворот на угол примерно n градусов вправо; налево (цел n) — поворот на угол примерно n градусов влево; звонок — робот играет веселую мелодию. Попробуем решить простейшую задачу. Пусть на некотором расстоянии перед роботом находится стена. Робот должен пройти до стены. А затем повернуть направо, остановиться и сыграть победную мелодию. Текст программы выглядит так: В случае с исполнителем Лего в “КуМире” нет привычной интерактивности, когда можно было выполнять программу по шагам. Написанную программу можно просто загрузить в Lego Mindstorms, пользуясь командой из меню Передать. И выбрать объект приема программы — Lego. Далее загруженная в робота программа будет выполнена, и мы увидим результат: Конечно, в “КуМире” совсем мало команд для Lego-робота. Но команд в виртуальном Роботе не больше, а класс задач, которые можно с ним решать, значителен. Самый важный момент использования Lego-робота в “КуМире” — это показать ученикам возможность управления реальными исполнителями из окружающей их жизни. А возможности игрушки Lego поистине безграничны. И также безграничны возможности в создании и программировании собственных исполнителей в системе “КуМир”. Подготовка заданий для учащихся и их автоматическая проверкаИспользуя систему “КуМир”, можно существенно увеличить число и качество задач, которые сможет решить школьник. Однако в процессе преподавания учитель столкнется с проблемой проверки решения. Так как задач будет больше, то и времени на проверку педагог должен тратить больше. Но еще требуется объяснять школьникам новый материал. И тут учитель попадет в цейтнот. В предыдущей версии “КуМира” для упрощения проверки заданий был использован механизм тестирования, который, видоизменившись, перешел и в новую версию. Рассмотрим, как он устроен. Учитель должен подготовить файл-задание для ученика. Задание учитель готовит в специальном “учительском” режиме системы “КуМир”. Для этого “КуМир” надо запустить с параметром “–t”. В “учительском” режиме можно делать невидимыми или неизменяемыми строки алгоритма. Файл-задание будет состоять из шаблона — заготовки программы, которую ученику нужно дописать, и блока (алгоритма) тестирования. Обычно учитель делает блок тестирования невидимым для ученика. В учительском режиме, выделив строки, можно нажать правую кнопку мыши и, выбрав “Скрыть эту строку”, сделать строки невидимыми для ученика. Скрытые строки выделяются серым фоном, а в обычном (не учительском) режиме они не видны. Тестирующий блок (алгоритм) должен называться @тестирование. Этот алгоритм не имеет параметров и не возвращает каких-либо значений. Он должен содержать вызовы тестируемого алгоритма и проверять корректность полученных результатов. Как правило, для контроля полученных значений используют команду утв. В этом случае, если при выполнении тестирования условие в команде утв окажется неверным, ученику будет выдано сообщение “Ошибка выполнения тестирования”. Обычно, даже если программа состоит из двух алгоритмов (главного и вспомогательного), главный алгоритм (может не иметь собственного имени) в своем теле содержит вызовы вспомогательного алгоритма. При этом главный алгоритм осуществляет только ввод-вывод данных, а вспомогательный алгоритм выполняет основную работу. В таком случае тестировать нужно не всю программу, а вспомогательный алгоритм. В своей заготовке учитель придумывает заранее заголовок такого алгоритма. Если щелкнуть правой кнопкой мыши по строке заголовка в “КуМире”, то можно выбрать в контекстном меню пункт “Защитить строку от изменения” и защитить строку от изменения. Защищенные строки выделяются в редакторе зеленоватым фоном. Подготовленный файл учитель выдает ученику для решения. Открыв его в “КуМире”, ученик не видит тестирующей программы. Он меняет алгоритм там, где ему разрешил учитель, и по готовности запускает алгоритм на тестирование. Выбирает пункт меню Программа — Запустить тестирование либо нажав комбинацию клавиш + T. Если задача решена правильно, то после окончания тестирования в поле ввода-вывода запишется строка “Тестирование завершено успешно”. Напротив, если при выполнении тестирующей программы произойдет ошибка, то тестирование прервется с сообщением “Ошибка выполнения тестирования”.
1Константа (постоянная)
Больцмана (k или kB) —
физическая постоянная, определяющая связь между
температурой и энергией. Названа в честь
австрийского физика Людвига Больцмана. Ее
экспериментальное значение в системе СИ равно 2 “Курс должен быть “настоящим”. Слово “настоящий” означает, что в процессе упрощения понятий информатики мы должны не “выплеснуть вместе с водой и ребенка”, т.е. упрощать можно лишь до тех пор,пока не теряется содержание, суть дела”, — писал Г.В. Лебедев в брошюре “12 лекций о том, для чего нужен школьный курс информатики и как его преподавать”. 3 Компания LEGO была основана в 1932 году датчанином Оле Кирк Кристиансеном. Слово “LEGO” происходит от выражения “leg godt”— “увлекательная игра”. Начиная с 1949 года элементы LEGO во всех своих сериях остаются совместимыми друг с другом. Так, LEGO-кирпичики, созданные более полувека тому назад, по-прежнему можно соединять с элементами, выпущенными сегодня, несмотря на все изменения в дизайне и форме.
Ан. Ге. Кушниренко ;
| ||||||||||||||||||||||