Чух-чух
АрхивReaditorialВо все времена находятся люди, знающие толк в недоброй шутке. Такой вот умелец и отлил в каком-нибудь замшелом "Блокноте агитатора" лукавую формулу, вошедшую во все лекции как доходчивая картина светлого будущего.
Во все времена находятся люди, знающие толк в недоброй шутке. Такой вот умелец и отлил в каком-нибудь замшелом "Блокноте агитатора" лукавую формулу, впоследствии вошедшую во все лекции, курсы и брошюры как доходчивая картина светлого будущего. "Коммунизм – общество, в котором от каждого по способностям, и каждому по потребностям". При этом находчивый пропагандист ничем не рисковал. Он явно догадался, что потребности определяются в первую очередь способностью. Способностью эти самые "потребности" иметь.
Поначалу мне рекламный ролик показался не более чем смазливым. Юная парочка за столиком в детской песочнице. У них одно звездное небо, одна кола, один бигмак, один мобильник и одна пара наушников на двоих. Можно было бы растроганно пособолезновать и забыть, если бы не авторский посыл. Из сюжета, довольно убедительно, выходило, что ребятам экзистенциональный выбор из газировки, бутерброда и венчающего этот мизеробилизм музыкального скороговорника пришелся реально в кайф.
Такой "благовест" от рекламщиков озадачил, но нисколько не задел. Я отнял от экранчика покета пустую гелевую ручку с насаженной на неё половинкой гигиенической ватной палочки и огляделся. Если, скажем, кока-кола мне "не очень", то что до остального, почти полная идентичность фактуры с рекламной парочкой (та же шинель, та же бататовая каша). Впору риторически, в никуда, вопросить: "А мне?"
Увы,- риторически.
Согласен, прикольно каждое утро выходить в поле, имея при себе два-три свежих альбома в мп3. В глазах попутчиков по маршрутке, да и в конторе, вкладыши в ушах прибавляли некой паблисити и сексапилити. Еще оказалось, что громыхающим Бетховеном очень ловко отгораживаться от вечно голодных упырей, в избытке шакалящих в любом сообществе. А уж как забавно приклеивать звуковую дорожку к окружающему тебя зачуханному видеоряду. Почти без усилий в прохожих на улице начинаешь видеть персонажей Босха, работа древнего, по лэндлизу, фрезерного станка приобретает вселенское значение и звучание Баха, что до девушек… под чувственный перебор струн любая приобретает ореол причастности к твоей жизни.
Всё кончилось в один день. График работы нашей команды изменился. Коллега, запавший на единственное приличное, но заигравшееся в "эту страну" радио, унес FM-бумбокс в другую смену. Необходимость затыкать уши отпала, и я даже как-то и не сразу заметил исход Нибелунгов из своей жизни.
А вот с мобильным кино у меня связывались особые надежды и сомнения. Сначала отступили сомнения. Выяснилось, что почти четыре дюйма хоть и не широкоформатная плазма, вытесняющая зрителей жить на балкон, но позволяют без потерь следить за сюжетной линией фильма. А плеер TCPMP просто шедевр. Без перекодирования поднимать файлы в иезуитских кодеках, с исходным битрейтом в 3 мбс! Глядя на такое чудо в ладони, то и дело норовишь другой рукой сдернуть шляпу или отдать честь.
Однако и за утратой иллюзий тоже не заржавело. Я давно не бегаю по дому со стиплером, пытаясь усадить домочадцев смотреть кино, предполагающее готовность к некоторому напряжению мысли или седалищного нерва. Махнув рукой, я вознамерился смотреть это дело "про себя". Но, как известно, слабость к претенциозному кинематографу требует полтора-два часа свободы от всех видов сторонних паразитных раздражителей. В моем случае это оказалось невозможным. В дверь начинают колотить, норовят просунуть под неё мобильник, в конце концов,- просто ноги затекают. Оказалось, что ни дома, ни на работе (у нас не АЭС, но вникать в чужие кучерявые искания эмоционального опыта, глубокой ночью,- занятие несовместимое с жизнью) у меня этих часов отсутствия в обыденности нет. Нет. Я по-прежнему вынужден не смотреть, а только читать о непростом авторском кино.
Читать между делом. В транспорте. В очереди к присутственному окошку. И все реже о "смятениях чувств". Сетевая оперативная периодика совершенно вытеснила интерес к беллетристике. Не берусь судить почему. Наговорить гадостей, еще бы, соблазн есть, но есть и риск попасть на этом деле под каток Большой Литературы. "Чур меня". Сошлюсь на позорно поздно открытого для себя Ч.Поланика. Дредноутище! (Опять же, уцелев, удалось, наконец, свести застарелое пятно на любимой халявной футболке от "Петр I").
Вот если бы стало возможным просматривать на покете поток технической литературы, обыкновенно выкладываемой в форматах PDF и DJVU. К сожалению, даже в разброшюрованном виде, хоккея на защитной пленке экранчика сейчас в таком просмотре больше, нежели чтения. Единственный способ сколько-нибудь комфортного ознакомления с книжками подобных форматов, это предварительный их OCR. Что я и сделал с "Кратким справочником молодого сантехника". В недобрый час.
Взлетевшая свечой кранбукса упала назад, с околоземной орбиты, только вечером, аккуратно к незатейливому семейному ужину на "руинах". Пока мои девки перемигивались друг с другом нервными тиками, мне удалось стремительно замахнуть за "успешное окончание работ" и за жирный крест на надеждах иметь карманный источник энергетических подпиток. В последующем, все мои занятия с покетом свелись к нагуливанию комплекса неполноценности игрой в шахматы и кубик Рубика.
Под этой горькой звездой меня и застал обнадеживающий рекламный ролик. Не просто застал, но и подвиг на следующий рывок. Ведомый веселым предчувствием небезнадежности усилий (у ребят же получилось!), на первом же игровом софт развале, продравшись через колдунов и центурионов имеющих обыкновение разъезжать на танках "Клим Ворошилов", я наткнулся на скриншот от которого восторженно ёкнуло сердце. Это было ОНО. Сейчас, даром, для меня.
.
В моем далеком детстве, наш многоквартирный дом, по нынешним меркам - барак, стоял недалеко от Центральной Котельной и железной дороги. Из притороченного к черной трубе котельной динамика-рупора "в рабочий полдень" частенько лился полонез Огинского (кочегары тащились от него). Еще чаще, чаще частого, мимо проносились поезда в неведомые гайдаровские дальние страны, составляя повседневный шумовой фон нашей жизни. Я и сейчас на слух, с закрытыми глазами, мог бы определить тип проходящего по нашему перегону состава. Повагонно. Даже если его бы его толкали руками.
Как это делали мы, когда редкие в наших местах батарейки "Крона" садились и, вопреки ожиданиям юных химиков, не заряжались в отработанном фотопроявителе. Отец моих приятелей, инженер-путеец, расходным материалом не баловал. Подозреваю, что и полдюжины комплектов игрушечной железной дороги он навозил из командировок больше для себя, не предполагая, что в его отсутствие их огромная квартира покрывается сетью из путей, стрелок, тупиков и полустанков. В нашем распоряжении были несколько локомотивов и куча вагонов к ним. В обычное отсутствие батареек мы водили их руками, самостоятельно озвучивая и "choo choo" и стук колес на стыках рельс, отождествляя себя с машинами и сетью.
Конечно я не забыл, конечно я с интересом присматривался к попадавшим в руки симуляторам жанра. Наверное, я опробовал их не один десяток. Встречались порой просто шикарные. Но играть в них не хотелось. Всем им недоставало (боюсь, право слово, и выговорить) любви и... и "choo choo". Программы не оставляли сомнений в том, что их разработчикам повезло в детстве чуть меньше.
Странный факт того, что я пропустил ДОС игрушку 1992 года легко объясним. Я стоял в то время на Невском и торговал нашим башкирским медом в железных расписных банках "с медведями". Выдавать себя за знатока и ценителя воспетого продукта (который я физиологически не переношу) было очень уж утомительно. По этой причине творение Andrey Snegov и Ludmila Churinova прошло тогда мною незамеченным.
Я не смог бы оценить программу по достоинству и сейчас, если бы взамен универсальному, но досадно на ней заглючевшему VirtualBox, не имелся легкий и эффективный эмулятор старорежимной эйтишки DosBox. Под ним в настольных Windows можно запустить и поиграть в "Short Line". Но не только. Мои субъективные восторги и вовсе грозили вылиться в обретение собственных Гималаев после того, как обнаружилась версия этого эмулятора и для Windows Mobile!
Авторами самого стойкого и продвинутого порта DosBox для WM является группа из потустороннего мира представляемая Nop’ом [http://n0p.tonych.info/ru/]. Я едва успел скачать с его сайта программу и подробности по ее настройке, как хостинг-центр РБК закрыл к страничке доступ (сейчас она доступна и обзавелась зеркалом). От базовой, авторской версии от mamaich (мамаич?) программу выгодно отличают способы управления мышью в ДОС. Недотянули только с эмуляцией одновременного нажатия на левую и правую кнопки. В "Short Line" этот аккорд необходим для переключений режимов путеец<=>диспетчер. Играть без него невозможно.
Попытки найти альтернативу не задались. Опробованный следом коммерческий, скорее имитатор, PocketDOS, игрушку вовсе не поднял. Но показал себя очень хорошо в работе в неграфическом режиме. Настолько хорошо, что я разложил в нем комплект DOS отладчиков. С помощью Turbo Debugger я получил неожиданное продолжение несказанного удовольствия от игры. На этот раз от того, как она сделана. Мало преувеличу, если назову созданную на излете MS DOS программу средоточием или "апофигеем" программных решений того времени.
..
Долго ли, коротко ли, но двигаясь по коду в TD под PocketDOS, удалось порешать с неадекватностью переключения ролевых режимов (задействовав среднюю кнопку мыши) и набрать горстку "чит-кодов" для возможности не столько гоняться за очками, сколько предаваться созерцательной медитации. Наступил день щастья. В который выяснилось, что пока я прилаживал "паровозики" к покету, я уже успел и наиграться, и насытиться ностальгической трогательностью "ShortLine". Горизонт светлого настоящего опять отодвинулся. Рельсы кончились и по инерции меня бросило в тяжкие.
Дело в том, что обладая восхитительно оригинальной графикой (я не про текстуры и рендеринг), "ShortLine" имеет весьма ограниченный геймплей. Что-то можно было бы поправить и из отладчика, но скукоженность игрового пространства и хаотичность отправления поездов не позволяют играющему подняться из рядового переключателя стрелок и семафоров. Игре явно недостает "креатива".
Я загорелся сделать свои покет-паровозики и быстренько обзавелся транслятором с ассемблера из известного семейства FASM. Клон для процессоров ARM привлек наличием версий работающих в Windows и DOS. Теоретически, это позволяло вести разработку и на десктопе, и на покете под эмулятором. В качестве желанного расширения геймплея виделись: увеличение и скроллинг игрового поля, появление тоннелей для сетевой игры, планирование движения поездов и, главное, возможность погрузки их числами, булевыми значениями, строками, скриптами с последующей обработкой в пунктах транзита.
Как водится, практика скорректировала прекраснодушные намерения. Во-первых, не надо быть графологом, чтобы по почерку (синтаксису ассемблера) определить в процессоре ARM редкостного задрыгу. Чтение тысячностраничного мануала только укрепляет это впечатление. Во-вторых: транслятор FASMARM оказался результатом курсовой работы и на протяжении нескольких последних лет им неизменно оставался. Т.е. годным только для вывода окошка со строкой "Полный привет!".
Но дожидаться наступления эры Atom на карманных устройствах никакого терпения не было, пришлось обратиться к более абстрактным и кроссплатформным средствам разработки. И еще… Рассматривая диковинный язык ассемблера ARM, сначала в pdf документации, а потом в окошке IDA, в первый раз подумалось, что впредь, пожалуй, стоит быть чуть скромнее в начинаниях.
Отказавшись от безумной идеи кодировать в native ассемблере, можно было позволить себе и некое сибаритство. Основным требованием к инструментарию стала возможность вести разработки в двух средах, и под большой Windows и под CE (Mobile). Имелась в виду полная совместимость исходников, плюс компиляция исполняемых файлов в текущей среде разработки.
Так как ничего лучше Visual Basic 3.0 в своей жизни я не встречал, то и начал с поиска его аналога. Выбор оказался невелик, но достоин. Уверяю, транслятора более соответствующего "техзаданию" чем Basic4PPC на сегодняшний день не существует. С VB у него не больше общего, чем с любым другим диалектом языка, но и в нем имеется IDE, а встроенный и библиотечный функционал делают его конкурентным инструментом прикладного программирования для платформы MS .NET Framework и в большой Windows.
Интегрированная среда разработки Basic4PPC позволяет нарисовать форму с кнопками, запустить исходник на выполнение в любой из сред. А вот сбилдить исполняемый в WM файл позволительно только на десктопе: а) при установленном в системе .NET SDK; б) установленном из недр SDK пакете Compact Framework. И это еще не все. Необходим файл с лицензией на транслятор. Увы, - отсутствие последнего не восполнят никакие SDK.
Мне этот файл достался привычными неправедными путями. Но если с манерой Basic4PPC лезть в сеть, сверятся с базой данных зарегистрированных копий, еще можно было как-то сосуществовать, то пренебречь ритуально-мемориальным посвящением на домашней странице разработчиков я не смог. Отчасти из того же мутного бессознательного пиетета к Неизвестному (мне) Кодеру я не закрываю приложения Windows XP вульгарным нажатием на крестик, а ищу пункт меню File-> Exit. Впрочем, не без прагматических резонов: очень часто эти две операции не совсем одно и тоже, несмотря на всю самоотверженность усилий авторов.
Привлекательность платформы .NET, в целом, столь велика, что отступить окончательно заставили только два образца мобильных трансляторов с C# (без комментариев) и он-лайновый бета сервис компиляции исходников в духе WEB 2.0 (Compact Framework не поддерживается). На прощание с технологиями MS я качнул Visual Studio 2008. Теплилась слабая надежда на то, что впопыхах они забыли в нем ILAsm работающий под WM. Не забыли. А от взгляда на их Си стало и вовсе грустно. Неужели для того чтобы ТАК опошлиться, надо было обязательно ТАК изничтожить Borland?
Упоминавшийся сервис он-лайн компиляции открыл дополнительное направление поисков. Мечтательно сложилась картинка: я лабаю на покете в браузере, по сети подчищаю синтаксис, компилирую и скачиваю готовый результат. В виде Jar файла.
Когда говорят о Яве применительно к WM, чаще всего имеют в виду возможность запуска мидлетов. В самом деле,- если бы не игрушки для мобильников, быть бы Яве еще одним perlом междусобойчиков. Попав в индустрию игрового ПО, подтягиваясь к ее требованиям, ява и мышцы нарастила, и из кунсткамерной банки выбралась.
С появлением Айфона java2me теряет актуальность. Но ведь есть и другая, не пошедшая по рукам производителей устройств Ява. И есть виртуальная машина для нее. На одной из персональных страничек японского аналога народ.ру обнаружилась работоспособная версия java2se для Windows Mobile.
GUI интерфейс Mysaifu JVM позволяет запускать на покете java SE приложения, в том числе графические AWT. Оказавшиеся у меня под руками несколько готовых jar и class отработали на ней почти без нареканий. Но вот попытка пустить Apache Ant, который представляет собой комплект средств разработки ява ПО и на ней же написан, не удалась. Причиной тому традиционная для "левых" мобильных яв реализация виртуальной машины воспринимающей java приложения как воровато-чужеродные системе объекты. Видимо, ничего не остается, как только ждать когда Sun окстится.
Грезы о разработке в он-лайн тоже оказались трудно реализуемыми. Виды на вэб-два-ноль разбились о сложившуюся ситуацию с мобильным интернетом. 3G у нас толком еще нет, а GPRSа, судя по местам где он бывает мне нужен, уже нет. Иметь дело с местным EV-DO от компании, чьи горячие телефоны, подобно автоинформаторам в кинотеатрах, вещают о предоставляемых услугах с 16.30 пятницы до 8.30 понедельника, я зарекся еще со времен их же CDMA.
Помимо объективных причин неудачи с java затеей, есть и субъективная. Пресловутый "человеческий фактор", который, честно сказать, и явился определяющим. Совсем не случайно последним транслятором в моей блеклой карьере прграммиста оказался Visual Baisic 3.0. Не знаю какого рожна, на самом деле, не доставало самому Строуструпу, но администраторы программостроения разглядели в ООП и не упустили своего: удешевление труда и нивелирование личности программиста. Мне же, некий обидный дефектик моего мышления помешал легко въехать в валом повалившие в какой-то момент средства объектно ориентированного программирования. Я и сейчас не могу отделаться от ощущения противоестественности при объектном кодировании (и недоумения при просмотре результирующих бинарников, мало чем отличающихся от исполняемых файлов на БК-0010М). И так как java плоть от плоти ООП, мне было бы не избежать над собой насилия с элементами извращений.
К тому же ненужного. Еще кляня кинувшую меня на gprs тарифе "Коннект (один)" МТС, я осознал, что вовсе ни к чему городить огород со спрайтами вагонов и рельс. Желаемой сложности, масштабируемости, увлекательности можно добиться и вовсе без рисованных паровозиков, даже в текстовом режиме черного окна. Не без потерь в наглядности, но и без риска услышать вкрадчивое "Милый, в бирюльки играешь?", и, как следствие, без необходимости в ответ складывать за спиной фигу из Das Glasperlenspiel.
Но изменение концепции "проекта" нисколько не коснулось условий техзадания. По прежнему требовалась кроссплатформная среда разработки. И так как чудеса этого света были исчерпаны, ничего не оставалось как осторожно заглянуть в мир потусторонний. В мир GCC.
Это только в обзорах "на безрыбье" сторона противоположная Windows представляется косяками *nix систем. Только в неспешной беседе за жизнь, в курилке, можно посчитать ее сутью форумные махаловки спятивших гостарбайтеров вавилонской башни. Истинные столпы вокруг которых зиждется все непотребство и светочи того мира -это GNU C Compiler и его жрецы.
Красота этого "города солнца" равных прав и возможностей сколь бесспорна, столь и утопична. Гнусность ситуации заключается в том, что все примкнувшие к ордену страстно, жестоко хотят заработать. Но не хотят и не любят в этом признаваться. Отсюда проистекает тотальная незавершенка и брошенка всего и вся, вербальная поножовщина, множество мелких культов обращенных хоть к точке в номере версии библиотеки, хоть к не вызывающим влечение даже у дальнобойщиков обнаженным эльфам. Все так запущено, что и благополучно обретшие имплоймент в коммерческих проектах отступники, уносят с собой бактерии этого невроза. (Интересно, в штатных расписаниях Google, да и Apple, прописаны специальные менеджеры, бегающие с каленым железом или отравой- присыпкой по офисным закуткам в поисках пришлой заразы?)
Мне повезло. Упоминавшийся выше Мамаич, еще в 2004 году спортил на WM свой же ARM целевой отросток GCC. И если оригинал требует для себя окружение *nix системы или установки в Windows паллиатива такого окружения -CygWin, то мобильный GCC в группе поддержки не нуждается и работает в полный рост сам по себе.
Благодаря тому, что Windows CE, в отличии от своей старшей сестры, не только технологическая удача, но и технологический подвиг MS, разработку ПО можно вести в любой из этих систем с получением исполняемых файлов для текущей среды разработки. Все что для этого понадобится, это учесть при компиляции разницу в названиях библиотек (CORE в мобильном GCC против KERNEL в GCC/CygWin), вывести из логики программы уникальные функции и свойства присущие каждой из систем в легко подменяемые файлы. Ну, и готовность кодировать в классическом C. Программировать придется на кондовом уровне Windows, с бесчисленными операторами CASE, строками из функций, длины которых позволили бы обмотать ими покет поперек несколько раз.
Кодирование с учетом истинных реалий функционирования Windows довольно хлопотно, хотя и чрезвычайно эффективно в плане производительности результирующего кода. Существует кроссплатформная библиотека SDL заметно облегчающая создание приложений интенсивно использующих графику. В качестве утешительного бонуса можно упомянуть и принятую в GCC трансляцию C-исходника сначала в ассемблерный листинг, а уж только потом в объектный и исполняемый файлы. Т.е. текст на ассемблере можно поправить, оптимизировать, наставить авторских зарубок и потом успешно сбилдить.
И на посошок. Не смотря на то, что с "подвигом" я слегка соврамши, вряд ли кто возьмется оспаривать одинокое лидерство Windows CE как мобильной системы не потребления, но генерации контента. Надеюсь, новомодные тенденции не сведут на нет годы внутренней эволюции, и MS ограничит дрейф системы в невнятное опциональной распальцовкой интерфейса и какой-нибудь popz приставкой в названии.
Однако, я упомянул посошок гугляра не только для красного словца. Эта незаменимая для странствующих вещь, видимо, еще не скоро обретет покой у меня на антресолях. Пора признаться: интерес к бейсику, яве, си, к самой железнодорожной затее я потерял еще в начале истории. Сразу после того, как попал в поисках описания ARM процессора на Малый Преобразователь Глагола. Есть и Большой. Преобразователь.
Если вкратце, то суть проекта "Глагол" заключается в разработке транслятора с паскалеподобного языка программирования. Все операторы и зарезервированные слова состоят из кириллических символов и представляют собой этакий basic russian. Явственно ощущаемый, едва ли не богоборческий, и, уж точно, патриотический (с элементами пафоса) дух разработки не мог меня по первому разу не отпугнуть.
Но я туда вернулся. Потоптался. Ушел и почему-то снова вернулся. "Что за хрень?"
Осознать и принять невероятное получилось не сразу. С игрушечным рельсом в руках я стоял перед мощнейшим "choo choo", несравнимым, и шутки ради, с моим. И если бы только так. Мне стало потрясающе очевидным, что она, "чье имя мы не называем", сюда заходит. Теперь-то у меня нет сомнений в ее присутствии и там, и здесь. И вообще, только в предчувствии ее можно придумывать Маки, только занимаясь ею можно сделать TCPMP, только жертвенно вопреки ей можно рубить Глагол. А что же тогда можно сделать, если просто любить?! У кого-нибудь есть ответ на этот вопрос?
...
У меня, скажем, его нет. Другое дело, что упертость мастерового, считающего гарантией успеха в деле справный инструмент, не позволила мне ковырять в носу и погнала таковой инструмент искать.
....
В результате с покетом все сложилось более чем славно. Веселовский Lexicon 1.2 под PocketDOS оказался мне ближе SoftMaker. Для отставного кодера отсутствие модуля проверки "синтаксиса" оказалось решающим. А вот Лексикон для Windows у меня 97ой. Последний, версии 5.1, ну никак найти не удается. Но я не теряю надежды. Я ищу его сидя у раскрытых окон. В одном из них "все так же бегают трамваи". И никакого (благодарю_тебя_смотритель), никакого коммунизма.