понедельник, 8 сентября 2008 г.

Робототехника и полезность ненужных дел

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

Оригинал статьи находится в англоязычном блоге «The NXT STEP», а сам робот, как нетрудно догадаться из названия блога, сделан из робототехнического конструктора LEGO Mindstorms NXT.

Теперь посмотрим, для чего этот робот может пригодиться на практике. Даже если предположить его применимость и полезность в дальнем походе, ну скажите честно, не проще ли взять гораздо примитивнее устроенные (и следовательно более надежные) обыкновенные часы? Если есть теоретическая вероятность выхода часов из строя - можно взять 10 часов :). Робот, даже если его размеры значительно уменьшить, в любом случае будет габаритнее и менее надежным, чем часы. Просто потому, что он сложнее устроен, содержит движущиеся части и т.д.

Де факто, этот робот был сделан энтузиастами просто для галочки. Что, мол, это реально. Что, скажем прямо, Lego Mindstorms NXT, это как бы здорово, и какой только фигничто только с его помощью не сделаешь!

Итак, робот бесполезен. Вопрос: зачем люди тратили время (а время, как известно - это потенциальные деньги)? Дак вот, зачем же люди тратили деньги? Зачем все это?

Расскажу другую историю, на этот раз лично про меня. Буквально пару дней назад сидел и адаптировал код бэйсиковской игрушки "Hamurabi" (Хаммурапи) для собственного интерпретатора языка tiny Basic. Интерпретатор этот был написал на придуманном мною языке XM, и скомпилирован в обычный exe-шник с помощью собственноручно написанного компилятора этого моего языка...

Вышеупомянутый компилятор, кстати сказать, имеет еще одну особенность. Он позволяет писать программки для моей собственной операционной системы под названием SOS. Ее я когда-то написал на ассемблере...

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

Снова позволю себе поставить перед вами тот же самый вопрос: оно нужно? Оно полезно? Компиляторов самых различных языков существует на сегодняшний день просто масса. Их сопровождают мощные среды программирования, в том числе такие монстры, как Microsoft Visual Studio. В то же время я, кроме редактора Notepad++, или какого нибудь самодельного редактора с встроенным компонентом SciLexer - предложить ничего не могу... Да, придуманный мной язык позволяет писать программы как на высоком, так и на очень низком уровне, благодаря чему можно избежать в теле программы обращений к функциям специфической операционки, заменив их на функции другой (моей собственной) операционки. Но на самом деле, благодаря ассемблерным вставкам - такой же фокус можно провернуть, например, и в Pascal/Delphi, и в C/C++...

Да, мой компилятор генерирует чудовищно компактные exe-шники, главным образом благодаря тому, что не использует множество ненужных библиотек. Но вот вопрос: при современных объемах жестких дисков, есть ли разница между программой размером 1Мб, и программой размером 10Кб? Разницы этой - пшик...

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

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

Да, моя ОС загружается и работает при отсутствии Windows... Умеет работать с файловыми системами FAT12, FAT16, FAT32, и ограниченно - с ext2. Умеет выполнять специально под нее написанные программы. Но какая в этом польза? В принципе, можно бы сделать компактную, умещающуюся на дискетку операционку для управления роботом. Ведь в роботе это очень практично, - использовать вместо жесткого диска или USB-флэшки, - старенький флоповод, никому уже не нужный и стоящий копейки. Вся проблема состоит в том, что операционка такая уже есть - это, например, QNX. И если поискать - можно найти еще пару таких же крохотных операционных систем. Наконец, всегда есть возможность подработать некоторые особенно компактные дистрибутивы Linux...

Итак, убито три месяца времени, которое можно было бы потратить на что-либо другое. В чем же состоит она, пресловутая «полезность ненужных дел»?

Во-первых, приобретен опыт. Во-вторых, получено удовольствие (по этому поводу я уже писал статью Хобби и робототехника). В-третьих, что бы значила для нас сейчас фамилия Энштейн, если бы один молодой парень в свое время не пытался сделать то, что уже вроде бы давным давно уже сделано?!

Всегда можно и всегда нужно пробовать, пытаться. Лучше, конечно, чтобы Вы пытались сделать что-то действительно полезное. Но как минимум это должно быть интересным лично для Вас. А уж полученные навыки никогда не поздно применить!

1 комментарий:

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

    ОтветитьУдалить

Внимание! Реклама и прочий спам будут беспощадно удаляться.