89b6d7a6
Поиск:  
  
Мастерская
Фотогалерея
Поставщики
Доска объявлений
Форумы
Контакты

  






Логин:

Пароль:



  ***

16.03.2005 - На чем же им учиться?


РобоКлуб/Проекты/Tutorial/16.03.2005 - На чем же им учиться?



На чем же им учиться?

Эта статья Джека Крэншоу (Jack W. Crenshaw) посвящена проблеме обучения детей работе с механическими и не только устройствами.

Как жаль мне сегодняшних бедных, обделенных школьников. О да, конечно, у них есть Х-Box, PlayStation и Gameboy. Они могут смотреть образовательные каналы по телевизору, такие как Discovery, Learning, Cartoon Network, Science и подобные им. Они могут играть в хоккей (на льду, в поле или на роликах), заниматься гимнастикой, футболом, причем отвозить и забирать их будут мамы на своих внедорожниках.

Но могут ли они учиться, что-либо делая?

В мои дни все было по-другому. Мне еще не исполнилось и шести, а я уже разбирал на части двигатель моей игрушечной железной дороги, машинки и мамины часы. К тому моменту, когда мне стукнуло семь, я уже мог собрать их обратно, да так, что они работали лучше, чем раньше. К 12 годам я уже успел разобрать трехскоростную втулку заднего колеса моего велосипеда, выяснить, как она работает, и собрать обратно (если вы когда-нибудь видели изнутри хоть один из этих планетарных механизмов, то вы поймете, какое это достижение: когда вы открываете ее, маленькие пружины разлетаются во все стороны, и дюжины шариков из подшипников начинают прыгать по рабочему месту).

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

Когда я был ребенком, я много раз обжигался и не меньшее количество раз прищемил палец, но зато я многому научился.

А теперь сравните меня того с нынешними детьми. Скажем, ребенок открывает часы – и что он видит? Он видит батарейку, чип и цифровой дисплей, не более того. И как же ему, бедняге, понять, как это работает?

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

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

DigiComp

Желание научить детей разбираться в цифровых устройствах, вдохновило компанию ESP Inc. изобрести машину, которая вела бы себя как компьютер. В руководстве по эксплуатации своего первого изобретения они объяснили, что электронные схемы на самом деле просто слишком безличные для того, чтобы дети смогли их понять. Даже если вы снизите скорость их работы с нано- и микросекунд до секунд, вы все равно не сможете уловить, что же они такое делают. Сначала они включены, потом выключены, но у вас нет никакого ключа к пониманию того, что же произошло, чтобы их состояние изменилось.

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

ESК Inc. давно уже нет, а имена ее руководителей канули в лету. Но интерес к ним до сих пор сохранился. Зайдите в Yahoo группу: там вы сможете увидеть фотографию первого DigiComp. Там же вы найдете всякого рода справочную информацию. Просмотрите также руководство по эксплуатации, чтобы увидеть подробные картинки. Я даже не буду пытаться нарисовать здесь это устройство, но я могу дать краткий обзор и описание.

Примечание редактора: Этот сайт содержит фотографии DigiComp I и II: http://www.csparks.com/gallery/Digi-comp/digicomp1

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


Рисунок 1: Внешний вид DigiComp в общих чертах

Логическая схема DigiComp является верхом упрощения. Это просто плоская пластина, которая может находиться в двух состояниях (можем ли мы сказать бистабильная?). Три пластины логической схемы скользят сквозь прорези в опорной конструкции, а упоры на концах не позволяют им выскользнуть. К каждой логической схеме прикреплено число, 0 или 1. В зависимости от положения логической схемы, в окошке (на рисунке - белое) показывается одно из этих чисел. Справа 0, слева 1. На рисунке 1 логическая схема показывает 101, что могло бы означать число 5 в двоичном исчислении, или любой набор трех двоичных чисел. DigiComp может представлять любое состояние логической схемы, которое может быть закодировано тремя битами.

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


Рисунок 2: Генератор тактовых импульсов DigiComp

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

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

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

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

К передней части логической схемы прикреплены шесть контактов примерно 3 мм шириной. Они расположены таким образом, чтобы контактировать с проводами считывания. Еще один набор аналогичных контактов расположен с задней стороны схемы.

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

Теперь самая лучшая часть из всех: Система может быть запрограммирована путем толкания маленьких пластиковых трубочек – они выглядят как кусочки соломинок для содовой – на контакты на каждой логической схеме. Контакты сами по себе слишком короткие, чтобы напрямую взаимодействовать с проводами; провод считывания удерживается только в случае, если программирующая трубочка толкается на контакт. Аналогичным образом, трубочки на задней стороне определяют, делает ли что-нибудь провод привода на самом деле. Если трубочка находится на задней стороне, логическая схема перемещается соответствующим проводом привода влево или вправо.

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

Самая простая «схема» DigiComp ровным счетом ничего не делает. В какое бы состояние не была приведена система, в нем она и останется. Это достигается простым способом: на заднюю сторону не помещаются трубочки действия.

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

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

Но логические схемы, так же как и лампы накаливания, не обязательно должны представлять только двоичные числа. Может быть использовано любое состояние ввода и вывода, и они вовсе не обязательно должны означать одно и то же. Например, я запрограммировал «схему» для создания эмуляции системы контроля за домашней средой. Вот некоторые из правил:

  • Если жарко снаружи и жарко внутри, закрыть окна и включить кондиционер
  • Если внутри жарко, а снаружи холодно, выключить кондиционер и открыть окна
    • при условии, что снаружи не идет дождь.

Уловили мысль? Данные ввода - это температура внутри, температура снаружи и дождь. Данные вывода – это кондиционер, отопление и окна. К сожалению, ESR с нами больше нет – они долго не продержались. Но те из нас, кто любил их продукцию, оплакивают их исчезновение.

DigiComp II

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

DigiComp II был настоящим компьютером. В отличие от DigiComp I, он не мог быть запрограммирован кроме как в том смысле, что он был бы способен выполнять различные математические операции. Его целью было показать детям, как выполняются операции вычисления на настоящем компьютере.

У DigiComp II была наклонная панель, очень похоже на автомат для игры в пинбол. Он приводился в действие не вручную, а с помощью стеклянных шариков, которые катились вниз по его поверхности. Операции на данном устройстве были скорее асинхронны, чем синхронны; интерпретация каждой логической схемы зависела от состояния предыдущей схемы. В терминах счетчиков, мы бы назвали это устройство счетчиком со сквозным переносом.

Так же как и в случае с DigiComp I, сердцем этой машины была логическая схема. Только она активизировалась не тактовым генератором, а стеклянным шариком. Логическая схема DigiComp II была гораздо более простой, чем схема GigiComp I. Из Рисунка 3 вы можете получить основное представление о ней.


Рисунок 3: Логическая схема DigiComp

Логическая схема – это просто пластмассовая деталь, вращающаяся вокруг своей оси. Она утяжелена для того, чтобы оставаться стабильной в любом положении (фиксаторы не позволяют ей двигаться дальше). Маленькие цифры (не показаны) на ней обозначают состояние 0 или 1.

Когда шарик катится сверху вниз, состояние логической схемы меняется. Далее шарик отклоняется вправо или влево, в зависимости от текущего состояния. Это позволяет нам сделать две вещи. Первое – мы можем изменять состояние; второе – мы можем узнать, каким было предыдущее состояние, или, если вам так больше нравится, каким является новое состояние. Теперь посмотрите на таблицу истинности (Таблица 1), которая показывает состояния двоичного счетчика.

Таблица 1: Таблица истинности двоичного счетчика

До После
0000 0001
0001 0010
0010 0011
0011 0100
0100 0101
0101 0110
0110 0111
И т.д. И т.д.

Если бы мы хотели создать такую таблицу для счетчика со сквозным переносом, а не для синхронного, тогда операция стала бы до смешного простой: данный бит меняется только в том случае, если бит младшего порядка только что изменился с 1 на 0. Эта особенность позволяет нам построить двоичный счетчик из набора логических схем, таких, какие показаны на рисунке 3. Я покажу только два бита таких счетчиков. Расширение до большего числа бита – очевидно. У DigiComp было 7 таких битов (жаль, что не 8).

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

Но если логическая схема находится в состоянии 1, тогда шарик устанавливает ее на 0, потом катится дальше на следующий уровень. И вот, в итоге вы имеете работающий двоичный счетчик, воплощенный в стеклянных шариках и пластике. Поверьте, что просто сидеть и наблюдать за тем, как счетчик проходит сквозь цикл – само по себе огромное удовольствие.

Как насчет арифметики?

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

Ключом к пониманию арифметической части устройства является знание того факта, что счет и сложение очевидным образом связаны. Одним из простых способов сложить два числа было бы включение второго счетчика, в котором мы могли бы устанавливать значение второго слагаемого. А потом считать второе слагаемое в обратном направлении, тогда как первое - в прямом. Но это занимает некоторое время. Однако, еще хуже то, что для того, чтобы все происходило синхронно, нам необходимо, чтобы один шарик катился сразу через два счетчика (даже если путь должен быть различным, когда биты равны 0 или 1).

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

При таком устройстве, второе слагаемое не надо считать, так как каждый бит используется только один раз. Таким образом, для регистра слагаемых не нужны логические схемы, а только рычажной переключатель, который направляет шарики в правильном направлении. Если данный бит второго слагаемого равен 1, тогда шарик этой колонки идет в соответствующий логический блок суммирующего регистра. Если он равен 0, тогда шарик просто выпадает из поля рассмотрения.

Следующий шаг показывает всю степень гениальности конструкторского мышления. Для того чтобы сложить два числа, нам необходимо послать шарик в желоб для каждого бита второго слагаемого. Но это бы означало, что нам придется направлять их вручную, что не есть хорошо. Поэтому ребята, придумавшие DigiComp, дали нам еще один регистр. Он представляет собой трехбитный счетчик, который считал в обратном порядке, начиная с семи, а потом цикл повторялся. При каждом счете, он направлял шарик в один из семи желобов, тем самым прибавляя сразу все семь бит. Это же гениально, не так ли?

Вычитание

Если вы считаете, что операция сложения, выполняемая с помощью шариков, это здорово, посмотрим, что вы скажете, когда увидите операцию вычитания. Ключом к вычитанию является использование арифметики двоичного дополнения. Так же, как и в настоящих компьютерах, любое число с набором старших битов интерпретируется как отрицательное. Для того чтобы вычесть одно число из другого, поменяйте знак одного из них, а потом сложите.

Большинство из нас помнят, что для получения двоичного дополнения числа необходимо сначала найти дополнение до 1, а потом прибавить 1. Для того чтобы получить дополнение до 1, просто измените все 1 на 0, и наоборот.


Рисунок 4: Счетчик DigiComp II

Счетчик, изображенный на рисунке 4, не может вычислить дополнение до 1, потому что шарик выпадает из рассмотрения, если бит равен 0. В том, каким способом получается дополнение до 1, опять видна гениальность создателей DigiComp. Они добавили второй набор логических схем и желобов, соединенный с первым с помощью коротких стержней и располагающийся под видимым суммирующим регистром. Для того чтобы получить дополнение числа, необходимо два шарика: один меняет все 0 на 1 и наоборот, второй добавляет 1 к полученному результату. Еще один однобитный счетчик следит за последовательностью выполнения действий.

Умножение и деление

Операция умножения производилась достаточно сложным способом: через последовательное сложение. Множимое набиралось в дополнительном регистре, который отсчитывался назад, так же, как мы это делали со вторым слагаемым. Множитель набирался в регистре второго слагаемого, и регистр множимого «кормил» его шариками, пока счетчик не достигал 0.

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

Автоматизация процесса

Вы могли подумать, что необходимость направлять все эти шарики по нужным каналам и следить за тем, когда необходимо прекратить их движение, могла быть весьма утомительной, не говоря уже о том, что этот метод приводил к ошибкам. Расслабьтесь. DigiComp II делал все это сам, автоматически. На верху нашей машины, похожей на автомат для игры в пинбол, располагался желоб, в котором хранились пара дюжин шариков. Механизм, выпускающий шарики, управлялся с помощью рычага и выпускал только по одному шарику за раз. Внизу устройства, шарик выкатывался из желоба, что заставляло рычаг подниматься и выпускать новый шарик.

А теперь мы дошли до самой потрясающей идеи: у каждой операции, будто то сложение, образование дополнения или же умножение, было условие завершения. В случае с умножением, например, условие завершения выполнялось, когда множитель отсчитывался до 0, и прибавлялся последний бит второго слагаемого. Когда это происходило, шарик попадал в другое отверстие, что позволяло ему обойти триггер и завершить последовательность вычислений.

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

И хотя DigiComp II олицетворял собой большое достижение в области обучения арифметическим операциям с числами, все же он не был совершенен. Ахиллесовой пятой DigiComp II была его конструкция. Для того чтобы все должным образом работало, были необходимо переключатели, которые направляли шарики в нужном направлении. Эти переключатели были встроены в оболочку из вакуумформованного пластика, которая была приклеена к более тяжелой картонной поверхности.

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

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

Современный DigiComp – предложение

Я много думал о DigiComp за прошедшие годы. Одно время я мечтал о создании исключительно точного DigiComp с «игровой панелью», скажем, из алюминия. Нет нужды говорить, что это была бы слишком дорогая игрушка для всех, кроме Билла Гейтса.

Однако есть возможность разработать бездефектные версии DigiComp I и II – смоделировать их на компьютере. В этом случае, мы могли бы сделать суммирующий регистр каким угодно длинным, а логические схемы сколь угодно многочисленными. Пожалуй, мы могли бы начать с заданного набора – три логических схемы и семибитный суммирующий регистр, однако пользователь мог бы добавлять биты в свое удовольствие. Мы также могли бы задать любую скорость тактового генератора. Замедлить его работу так, чтобы рассмотреть детали, или же повысить ее до килогерца и даже выше, если бы нам не терпелось увидеть результат.

Если бы я собирался написать такую программу, я думаю, что обязательно бы захотел создать больше чем один тип таких машин. Какие-то могли быть серьезными, как шарики или даже электронные логические схемы, другие же могли быть фантастическими, такими как машины Руба Голдберга (Rube Goldberg).

Несколько лет назад в Scientific American появилась первоапрельская статья, в которой несколько исследователей утверждали, что они нашли остатки древнего компьютера, созданного ацтеками из больших камней и веревок из виноградной лозы. Я уже забыл детали, но, например, логический элемент ИЛИ состоял из камня и двух привязанных к нему веревок. Логический элемент НЕ представлял собой просто веревку, протянутую через блок. Если бы я решил создать программную модель вычислительного устройства, то я непременно бы включил туда компьютер ацтеков.

Вы могли заметить определенную иронию по отношению к этому разделу. Вначале я сокрушался, что современные дети никогда больше не запачкают свои ручки. У них нет ни часов, ни коробок передач от велосипедов, которые можно было бы разобрать на части. А в итоге я предлагаю создать еще одно компьютерное объяснение, почему можно и не выходить из дома.

Да, признаю, в этом разделе действительно содержится доля иронии. Но я думаю, что в этом случае удовольствие и возможность обучения могут легко перевесить потерю витамина D.

Задача: DigiComp III

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

Однако аналитическая машина Бэббиджа была чудовищно сложной, и все из-за решения Чарлза Бэббиджа пользоваться десятичной арифметикой. DigiComp I и II были великолепны, но можем ли мы сделать лучше?

Вот интересная задача: Как бы вы сконструировали самые простые элементы механического компьютера?

Может ли механический компьютер быть проще, чем DigiComp II?

Если бы у нас было только два элемента, элемент НЕ и элемент с двумя входами, то мы могли бы создать что-нибудь еще. Вот мое первое решение для получения элемента И:

 

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

Сработало ли бы это? Да, я думаю, сработало бы. Простое ли это решение? Безусловно, нет. Вот более простая версия, снова основанная на штоках толкателя. Здесь шток используется в качестве вывода. Эта модель включает и элемент ИЛИ.

 

Наконец, вот модель элемента ИЛИ-НЕ, основанная на использовании рычагов. Кто хочет попробовать создать еще более простые элементы?

 

Джек Крэншоу (Jack Crenshaw) является главным разработчиком программного обеспечения в Spectrum-Astro и автором книги Инструментарий математики для программирования систем реального времени (Math Toolkit for Real-Time Programming). Он получил степень кандидата наук в университете Оберна (Auburn University). Написать ему письмо можно по адресу jcrens@earthlink.net.



 


gale
Embedded.com

Комментарии

Добавить комментарий
ArtemedoN art_arteom@mail.ru
Првиет всем из Ростова!! http://swar.com.ru/