<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


17 Мая 1999

Yahoo сообщает, что Hitachi разработала какой-то новый вариант памяти, который вытеснит всё на свете от оперативки до винчестеров. Правда, лишь к 2005-му году. В отличие от DRAM новый тип памяти требует двух транзисторов на бит информации и допускает весьма высокое наращивание ёмкости, недостижимое для DRAM.

Больше информации пока не нашёл, увы. Впрочем, до 2005-го - полно времени, куда торопиться-то...

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

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

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

Слово "старики", впрочем, не совсем уместно, так как речь идёт о возрасте пенсионном, но не обязательно уж запредельном. Мне эта тенденция представляется довольно естественной и неудивительной - в итоге все возрастные группы будут представлены в Интернете равномерно, чего сейчас нет. Значит довольно просто предсказать развитие событий, а значит - спланировать присутствие в Интернете сообразно составу пользователей.

Правда, это им там всё это легко планировать, а нам с нашей экономической непредсказуемостью...

Реклама

Принтер растет вместе с Вами!

Семейство принтеров Lexmark Optra S - это гибкие решения от $1000, 1200 dpi, от 12 до 32 стр/мин. Начните с Optra S 1255 и наращивайте принтер по мере необходимости!

Optra S1255, Optra S1855, Optra S2455, Optra S3455... Вырасти из мухи слона!

Надо же, какую сильную реакцию вызвал рассказ о WinCE - письма идут и идут.

Следующее письмо следует, фактически, считать статьёй. Статьёй о практическом опыте использования WinCE программистом.

   
From: Fedor Sherstyuk
Subject: Windows CE. Developer's impressions

Дмитрий, добрый день.

Прочитал в dz-online заметку о Windows CE и решил поделиться некоторыми впечатлениями от сего продукта.

Немного о себе. Я программирую под CE уже почти год. С нестандартным (т.е. отличным от карманных компьютеров) оборудованием я впрямую дела не имею, однако прошел тренинг по генерации CE для нестандартного оборудования, почитываю список рассылки в котором тусуются в основном как раз разработчики оного и даже виртуально поприсутствовал на прошлогоднем CE Developers Conference (прослушал полтора десятка аудиокассет с докладами - это они здорово придумали с этим кассетами).

Так вот, мои впечатления.

Мне CE, вообще-то, нравится. Не как продукт, годный к приятному потреблению уже сейчас, а как тенденция (таковым продуктом через несколько лет CE может стать) и как разумная альтернатива прочим OS-ам для встроенных систем, которые либо безбожно дороги (как, скажем, VxWorks - меньше чем с $50000 к нему вообще можно не подходить, да плюс нехилые royalties) либо безнадежно нефункциональны (многопоточность+прерывания+управление памятью+рудиментарные коммуникации - и хорошо еще если есть хоть какой-нибудь отладчик), либо откровенно склепаны на колене. Да и вообще я люблю продукты Microsoft (честно!)

А вот от восторгов я далек. Система сырая во многих отношениях. Но все по порядку.

Цена. Да, royalties там смешные. Но потратиться все равно придется. Разрабатывать надо под NT (я бы рекомендовал ~100MB ОЗУ). Visual C++ 5 или 6 Professional ~$500, CE Toolkit (дополнение к VC, предназначенное для разработки под CE) еще ~$500 - это для разработки под имеющуюся платформу (скажем, под карманный компьютер). Чтобы разрабатывать под нестандартную платформу (скажем, под самый обычный PC) надо потратить еще несколько сот долларов (не помню сколько) на Platform Builder. Ну и всякий дополнительный инструментарий придется закупить (см. ниже) - это еще несколько сотен (или тысяч) долларов.

Среда разработки. Для прикладного программирования - обычный Developer Studio. Для 'системного программирования' (т.е. 'генерации' ОС под свою платформу) - командная строка плюс терминальчик для CE-шного отладочного shell-а.

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

Отлаживаться можно либо в эмуляторе (работает под NT), либо на целевом устройстве. Оба подхода имеют недостатки. Эмулятор практически не поддерживает RS-232 (стандартная поддержка просто не работает, говорят есть какие-то самодельные хаки, но мне не удалось ни один из них заставить работать - тем самым эмулятор не совсем подходит для программ, работающих со внешними устройствами) и, поскольку используется NT-шный GDI, в GUI-вом отношении эмулятор ведет себя не совсем так, как CE. Отладка на целевом устройстве крайне медлительна, даже при использовании Ethernet (каковая возможность была легитимизирована совсем недавно, альтернатива - отладка через RS-232 - убойно медлительна и отьедает последовательный порт) - во-первых, медленно загружается сама программа, во-вторых, отладчик регулярно (по нескольку раз на дню) падает, DevStudio приходится перезагружать - а это требует нескольких минут времени на Pentium 233.

Профайлера нет. Что ОЧЕНЬ неудобно, ибо производительность действительно держит. Особенно когда программировать садятся ребятки, которые ни с чем, хуже Pentiumа, работать не пробовали (о времена!) Ребятки эти, впрочем, и профайлера-то в руках почти не держали. Если речь идет о карманных компьютерах, то их (RISC-овые) мегагерцы - совсем не тоже самое, что Pentium-ные (надо на 1.5 - 2 делить), да и аппаратной поддержки плавающей точки нет (она эмулируется).

НИКАКИХ библиотек C++ (не считая MFC) нет. Нет (не поддерживается компилятором) также RTTI и C++ exception handling (есть Win32 structured exceptions, но это все-же совсем не то). RTTI и exception handling пришлось проэмулировать вручную (слава Страуструпу, C++ достаточно выразителен для этого). STL (вместе с ANSI strings) пришлось покупать ($500) и портировать вручную (STL из VC 5 и 6 слишком глюкав, перспектива послепортировочного лечения как-то не вдохновляла, STL от SGI - вообще полное недоразумение, хотя и бесплатный. В общем мы не настолько богаты чтобы ...). Хорошо еще, что потоки (iostreams) оказались ненужными, а то ведь и их руками тащить бы пришлось.

Есть Bounds Checker (надо покупать отдельно) - но только для эмулятора. Есть несколько вариаций на тему баз данных (не моя это епархия, ничего особенного сказать не могу).

Когда-то был дешевенький ($15, кажется) инсталятор NStall. Был он очень хорош, посему его купил InstallShield и теперь за него надо выложить $800. Альтернатив пока нет, хотя работы в этом направлении идут.

CE действительно написана с нуля. Посему, хотя формально имеет Win32 API, фактически от Win 95/NT довольно сильно отличается. Как уже упоминалось, GDI (графика, окошки-менюшки и т.п.) местами ведет себя существенно не так, как в 'обычных' Windows. Поддержка RS-232 существенно отличается от традиционной (API все те же, а вот их семантика совсем другая - неприятно).

Кстати о GUI. Он ощутимо тормозит. Что не удивительно - 'рисует' процессор, который эмулирует плавающуе точку (нужна для поддержки TTF-ов) и работает в режиме little endian (для совместимости с Win 32 API), в котором не очень-то порисуешь. Да, когда-нибудь процессоры станут быстрее и 'плавучнее', а рисовать будут графические акселераторы - но пока этого нет.

И, кстати, о коммуникациях. На прошлогоднем CE DevCon-е один из Microsoft-овских менеджеров честно признался, что им было как-то недосуг серьезно разобраться в вопросе о том, какими должны быть коммуникационные возможности CE. Вот он прямо на DevCon-е и стал разбираться. Молодец. Посему я надеюсь, что версии к 3-й или 4-й с коммуникациями в CE все будет хорошо. Сейчас их не то, чтобы совсем нет (и RS-232 какой-то есть, и IrDA, и даже (фанфары!) TCP/IP), но все какое-то вопиюще недоделанное.

И уж, кстати, о DevCon-е. Несколько докладов были сделаны разработчиками (т.е. не менеджерами, а именно программистами) из Microsoft. Я был приятно удивлен. Эти ребята определенно удовлетворяют критерию Дейкстры (компетентный программист должен прежде всего владеть родным языком). Доклады были внятными и содержательными.

Отвлекаться так отвлекаться. C++ - это понятно, а как там с прототипированием? Плоховато! Формально имеется Visual Basic для Windows CE. Но это совсем не тот Visual Basic, к которому привыкли те, кто им пользуется на PC. Генеалогически - это портированный VBScript, фактически - нечто крайне баговитое и немощное. Программку на пару (CE-шных) экранов склепать можно, но для работы непригоден (а стоит при этом ~$1000) - хотя, по слухам, Microsoft намерена это исправить. А на прошлогоднем DevCon-е доклад по VB CE был наиболее отвратным - вышла пара клоунов (менеджеры этого продукта) и бросилась веселить публику. М.б. живьем это было приятно, но на аудиокассете - не очень.

Кроме C++ и VB там имеется какой-то интерпретируемый C, Python, NS-Basic (это тоже какой-то клон VB). Утилиту склепать на этом, наверное, можно, а вот прототип серьезного продукта - вряд-ли. Это, разумеется, моя личная точка зрения.

Вернемся к баранам. Генерация ОС под нестандартную платформу (напоминаю, что PC - именно нестандартная платформа).

Во-первых, 300Kb - это какой-то миф. Все-таки ОС в разумой конфигурации (даже без GUI) - это начиная от мегабайта и кончая парой десятков оных (это уже с GUI, утилитами и приложениями). Речь при этом идет не о потребляемом ОЗУ, а о размере образа системы (обычно хранящемся в ПЗУ).

Во-вторых, сама эта генерация являет собой невообразимый салат из мэйкфайлов, BAT-файлов, переменных среды и бетономешалки под названием BUILD.EXE (это такой любимый Microsoft-ом инструмент, предназначенный исключительно для запуска мэйкований в странном порядке, с удивительными ключами и невообразимыми результатами - блин! Когда же появится разумная альтернатива доисторическому мэйку). Все это очень плохо документировано. В общем это занятие похоже на хождение кругами по полю, обильно усыпанному граблями. В CE-шном списке рассылки стоит сплошной стон по этому поводу (стонут, кстати, очень неглупые люди, причем стон носит чисто практический, а никак не флеймовый характер).

В-третьих, дабы сгенерировать ОС надо иметь ингредиенты. Некоторые из них входят в комплект разработчика (Platform Builder), а другие надо либо писать самому, либо закупать (за немалые деньги, ибо рынок пока узковат). Например, для любителей такой 'необычной' платформы как PC сюрприз - драйверов дискет и жестких дисков, равно как FAT-овых файловых систем в комплекте разработчика нет (на PC CE грузится прямо в память при помощи DOS-ного загрузчика - не правда-ли старым добрым RT-11 повеяло?)

Итак, в плане использования CE для кассовых аппаратов - мне почему-то кажется, что это решение в поисках проблемы. Хотя фонарь я там (в районе кассовых аппаратов) не держал. Если цена ОС действительно являет собой серьезную проблему, а времени и денег на программирование и отладку совсем не жалко - то может быть. А если дело в том, что Windows 95 или 3.1 представляется недостаточно надежной платформой, то это, скорее всего о того, что у программистов или железячников руки растут из ... того места, из которого они растут у подавляющего большинства нынешних российских программистов и железячников. И если их (программистов) пересадить на другую, не очень обжитую платформу, то для дела это будет только хуже (хотя удовольствия от самого процесса будет получено немало). Их учить программировать надо. Жаль только - негде. Да они и сами не хотят.

Это я опять отвлекся. Мне вообще-то CE нравится. Какой-никакой GUI, коммуникации, многопоточность - это НАМНОГО лучше, чем ничего (я знаю, ибо программировал и там, где ничего нет). Хотя, конечно NT или Win 95 (а кто знает, может быть и какой-никакой Unix - хотя это вряд-ли) был бы мне много приятнее. Но вот не живут они в окрестностях моих задач.

Если есть желание - можно публиковать.

С уважением Федор Шерстюк

С чем я легко соглашусь, так это с утверждением, что ненадёжность софта под Win3.1/95/DOS более обусловлена криворукостью авторов, чем дырами ОС - во всяком случае, когда речь идёт о встроенной системе, состав софта на которой изначально и на века определён авторами же.

Увы (и это к слову о повисшем благодаря NT корабле США), когда принимается решение использовать поп-платформу одновременно и неразрывно принимается решение использовать поп-девелоперские средства и поп-программистов. То есть дешёвку со всех точек зрения. Собственно, в противном случае нет и никакой причины брать поп-платформу, единственная причина - дешевизна. Предположим на минутку, что глупость как категория отсутствует и причиной быть не может. :-)

А поп-программеры на поп-софте могут склепать только то, что умеют, а надёжно они писать не обучены, а, как правило, и вообще не обучены. Я не говорю про диплом, я говорю про фактическое состояние дел.

Средний виндовый программер в принципе, к примеру (я не имею в виду присутствующих:), не в состоянии представить себе, что его программа будет работать без человека за клавиатурой и мышью. А уж о том, чтобы следить за размерами файлов и речи быть не может - даже продвинутый не всегда догадается это учесть. Мало того, поскольку он в массе своей кроме Windows ни шиша не видел, эта система его всегда и везде полностью удовлетворяет. К примеру, он не в курсе, что в других ОС, в тех, которые для решения серьёзных задач используются давно, есть понятие квот, что они могут отказать задаче в дисковой памяти, в производительность процессора, в объеме виртуальной памяти и т.п.

Поэтому когда я стебусь над использованием NT на военных судах, причина не в том, что на NT это нельзя сделать. Можно. Безусловно можно. Только для этого нужно взять программеров, которые пол-жизни писали под Юникс приложения для управления нефтяными вышками и остались после этого живы. Но вот ведь незадача - им лучше писать будет не под NT, а под Юникс - опыт больше, да и наличие выбора ОС редко когда вредит.

Вот и выходит, что не дело на корабль - NT. Хотя, действительно, эта ОС в принципе вполне пригодна для таких задач.

А вот казино "Кристалл" вполне обходится без WinCE:

   
From: Sergey Patrokhin
Subject: кассовые аппараты

Привет!

"Что касается пол-порядка, то альтернатива на сегодня - это ДОС и Windows, а это - не пол-порядка. Кассовые аппараты для серьёзных магазинов (не просто микропринтер и пачка кнопок, а приём карточек, бар-сканер, дисплей, а то и два) - просто писюки нетривиального формата, которые регулярно огребают вирус потому как продавщицы режутся на них в тетрис. :-)"

А UNIX? Кассовый аппарат в казино "кристалл" - это простой терминал с сенсорным экраном под управленим тривиального писюка, на котором крутится SCO Unix. Единственно нетривиальная штука - карточка, через которую эти терминалы к pc подключены, но на то оно и самое крутое казино, чтоб оградить продавщиц от тетриса :)

C уважением, системный администратор казино "Кристалл"

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

Приглашаем прочесть в "Прописях" вторую из серии статью о цветных струйных принтерах. Там такая победа разума над сарсапариллой - мне аж страшно. Мы такого размера статью, кажется, ещё за всю историю онлайна не выкатывали. :-)