Google Группы больше не поддерживают новые публикации и подписки в сети Usenet. Опубликованный ранее контент останется доступен.

Программисты [1/4]

129 просмотров
Перейти к первому непрочитанному сообщению

Dmitry Galuscenko

не прочитано,
10 дек. 1999 г., 03:00:0010.12.1999
История одного байта
====================
(c) Дмитрий Галущенко Программистам...


Мне не хватало байта. Всего одного. Да, да. Того самого, что из
восьми бит состоит.
Что? Hет, я не псих, хотя одному богу известно, сколь тонкой была
граница отделявшая меня от этого состояния. Hо все по порядку.

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

Мы программируем чипы однокристаллки, грубо говоря, это когда весь
комп в одном кристалле. Программная память и память данных разделены и не
взаимодействуют между собой. Программа не может быть запущена в
оперативке. Глубина програмного стека ограничена. Максимум на что я могу
расчитывать, это восемь уровней вложения, причем я не могу изменять
предельную глубину стека. О, вы не подумайте чего! У меня бездна
ресурсов. Оперативки аж 128 байт! Это на все про все. Переменные, там то
да се.. Представили, да?
С программной памятью тоже неплохо. Аж восемь килобайт. И
пользоваться ей совсем несложно. Сначала нужно программно врубить нужный
банк памяти, запустить в нем нужную процедуру, а по выходе из нее не
забыть вернуться где был. Да еще надо иметь в виду, что в пределах банка
я могу перемещаться только джампами и вызовами процедур, а переходы по
условиям возможны только в пределах одной страницы, т.е. 256 байт. Это
значит, если я сравниваю два байта и надо ветвиться, но если метка не
находится в пределах 256 байт, то это письмо на деревню дедушке, причем
компилятор только в половине случаев предупредит, мол широко шагаешь
парень, штаны бы поберег. И это только цветочки! Ягодки я вам счас
выложу, что б вы ими в полной мере могли насладиться.
У меня нет команды вычитания. Вообще! только add. Уж про такую
роскошь, как умножение или деление я вообще молчу, это для лентяев. Зато
мне нужно обеспечить десятичную математику. Вы проникаетесь потихоньку?
Коды таких игрушек вылизываются так, что вам и не снилось, особенно если
приходиться решать задачи на пределе оперативной и программной памяти.
Исходники переписываются далеко не один раз.

Мне мало просто решить задачу. Я должен впихнуть ее в этот чертов
кристалл! Ограничение по переменным, по размеру кода в целом, по размеру
каждой процедуры и по числу вызовов. Малейший недосмотр и.. стек
продавлен, и тебя вышвыривает черт знает куда. И компилятор не поможет.
Такое он не ловит.. Вы думаете это все? ;-) H-е-ет, дорогие мои. Моя
игрушка работает в реал-тайме.. Это когда, напротив каждой крохотной
процедурки моего кода нужно подсчитать и проставить время ее исполнения
в миллисекундах. Мои модули не должны работать более жестко
фиксированного времени, потому, что мне надо еще сканировать киборду и
дисплей, поспевать за датчиками и выдавать управляющие сигналы, а все
остальное должно работать никак не мешая сканнингу, иначе я прозеваю
нажатие кнопки или дисплей станет неприятно мерцать меняя яркость. Hо и
это еще не все! У меня есть интерфейс. Обычный писишный RS232C, так
называемый ком-порт. Hо если вы думаете, что это отдельный чип, мол сунул
ему байт, принял из буфера байт, то вы заблуждаетесь. Себестоимость. Я
это делаю ручками, телипая единственный бит порта. Ручками кручу
диаграмму стартов, стопов и данных.

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

Любой средней руки программер, поставь его в подобные условия,
застрелиться на второй день. Вообще, по моему убеждению, парни работающие
в этой области имеют стальные нервы и неукротимую волю к победе.
Мы редко общаемся с обычными программерами. Hам в общем не о чем
разговаривать. И не потому, что мы снобы или гордецы. Совсем
необязательно.
Hам трудно представить себе программирование под неисчерпаемыми
ресурсами на языках высокого уровня. Мало винта? Купи другой, в чем
проблема? Мало рамы? Купи еще, торкни в слот. Меги кодов? А я причем?
Это компилятор виноват. Купите машину побольше. Это как разные планеты и
я надеюсь, вы поняли почему.
Это как красивый белый океанский круизер в бескрайних океанских
просторах, плыви куда хочешь. А вы попробуйте на нем в финских шхерах
порулить. ;-) Или вдевать нитку в иголку среди ночи. Причем, _черную_
нитку.

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

Hу что ж. Я ввел вас в предметную область и могу продолжить свой
рассказ.

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

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


Dmitry

■ Wait don't do away with the nukes, they keep the peace remember!


Max Bashirov

не прочитано,
18 дек. 1999 г., 03:00:0018.12.1999
Хорошая погода для прогулки на каноэ, Dmitry...

10 Дек 99 07:26, Dmitry Galuscenko писал(а) all:

DG> История одного байта
DG> ====================
DG> (c) Дмитрий Галущенко Программистам...

текст отформатировал, а на спелл-чекер сил не хватило?

p.s.
кстати, "напиться вдребезги" ── это как?

Don't complicate your mind, Dmitry
[ICQ#22086802] [ma...@binfo.zp.ua] [bash...@altavista.net]

... в чем смысл пpихода Бодхидхаpмы с Запада?

Dmitry Galuscenko

не прочитано,
21 дек. 1999 г., 03:00:0021.12.1999
Hello Max!

Saturday December 18 1999 16:37, you wrote to me:

MB> текст отформатировал, а на спелл-чекер сил не хватило?

Кстати это и обpаботано спелл-чекеpом ispell. Линyксовым. :-(
По yвеpению автоpов емy была скоpмлена кyча хyдожественной литеpатypы.
Hо похоже его еще yчить и yчить. Или хyд. литеpатypа такой стала?
А гpамматики он, инфекция, не понимает. :-(

MB> p.s.
MB> кстати, "напиться вдребезги" ── это как?

Бyквально. ;-)

Dmitry


Milvus Ater

не прочитано,
22 дек. 1999 г., 03:00:0022.12.1999
Hi Dmitry.

21 Dec 99 13:52, Dmitry Galuscenko wrote to Max Bashirov:

MB>> p.s.
MB>> кстати, "напиться вдребезги" ── это как?

DG> Бyквально. ;-)
%-)

WBR, Kite. Будь текуч, как вода, покоен, как зеркало,
отзывчив, как эхо, и невозмутим, как тишина.

0 новых сообщений