[image]

История одного байта

 
+
-
edit
 

Balancer

администратор
★★★★★
Супер :) - [W A S M . R U] СТАТЬИ > Программерский дZен > История одного байта

Как это (хотя, конечно, не в такой запущенной степени) напоминает времена программирования на программируемых калькуляторах... 98/105 шагов программы, 14/15 ячеек памяти и - целые миры. Полёты в космосе и подземные лабиринты, авиасимуляторы и шахматы... Эх, блин... :D

// Найдено на Форум - Talks - История одного байта
   
LT Bredonosec #19.01.2008 07:22
+
-
edit
 

Fakir

BlueSkyDreamer
★★★★☆
"Это вещь посильнее "Фауста" Гёте" (с) И.В.Сталин
   
RU Серокой #19.01.2008 14:43
+
-
edit
 

Серокой

координатор
★★★★
И где он нашёл однокристаллку без команды вычитания? )

// А стек я тоже никогда не использовал, на ассемблере когда писал. )
   

au

   
★★☆
Я как-то вынужден был писать под 96 прогу без использования стека, а также джампов и ещё каких-то совершенно нужных вещей. И написал! :) Но автор просто маэстро, а не "программист".
   

Fakir

BlueSkyDreamer
★★★★☆
Не знаю, каков он программист (половины слов и событий в тексте ваще не понял :F ), но с литературной точки зрения он определённо маэстро - всякие Гибсоны перед ним дети сопливые :lol:
   

hcube

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

Так что се - пропаганда героической борьбы с граблями путем затаптывания.
   

Vale

Сальсолёт
★☆
Последнего абзаца не хватает.

Я таки нашел, как сэкономить байт. И сделал ЭТО.
А на следующий день после празднования - мне принесли рекламу следующей версии моей микросхемы. Совместимой по разъёмам. С вдвое бОльшей памятью,и командой вычитания... :p
   
+
-
edit
 

Balancer

администратор
★★★★★
hcube> Ужас. Именно для этого делают запас функционала (с). Оно конечно круто под стотонным прессом впихивать код в контроллер, но

А у него изначально запас и был. Только маленький :) А когда кончился - то производство было запущено. Там же всё расписано, ты, вообще, всё читал? :D

hcube> куда 'дешевле' взять следующую модель, которая стоит на полбакса дороже.

Ты, кстати, уже избалован. Лет 15 назад не было ещё этих "следующих моделей на полбакса дороже" (схемотехнически совместимых). Это сейчас их как грибы штампуют...
   

hcube

старожил
★★
Запас - это не проценты, это РАЗЫ. Либо заказчик четко знает, чего хочет, все чего он хочет, отражено в ТЗ и изменения ТЗ идут как до, а может и переработка изделия. Либо надо закладывать запас на дурость заказчика - причем двухкратный как минимум. Потому как заложить запас и потом его не использовать выходит дешевле, чем не заложить запас и попасть вот в такую ситуацию. Ну хорошо, в этот раз человек справился, нашел этот байт. Сроки по изделию - заметьте - сьехали на две недели вместо получаса в случае когда запас есть. Но что будет в СЛЕДУЮЩИЙ раз, когда тому же заказчику в голову придет доработать еще что-то, а? Запас-то уже того, тю-тю, выбран до упора.

А лучше всего - применить некое типовое серийное решение, которое избыточно уже раз в 5, но УЖЕ отработано и обладает нужным функционалом.

Кстати, я бы в данной ситуации действовал по другому. Я бы вынес часть функционала за пределы контроллера - поставил второй. Скажем, модуль индикации/клавиатуры может быть абстрагирован настолько, что для его подключения достаточно будет одного провода. Тогда и уже заказанное устройство не уходит в корзину, и одновременно оно разгружается настолько, что добавление функционала не представляет проблемы. Конечно, получается дороже, да. Но это уже проблемы заказчика - если бы он включил требование в ТЗ изначально, было бы дешевле - т.е. все равно дороже, чем спроектированное изделие, поскольку контроллер был бы другой, но дешевле чем дополнительная плата с дополнительным контроллером.
   
+
-
edit
 

Balancer

администратор
★★★★★
hcube> Запас - это не проценты, это РАЗЫ.

М... Что-то мне подсказывает, что ты коммерческое проектирование даже не изучал никогда :D Не то, что б на практике заниматься.
   
+
-
edit
 

Balancer

администратор
★★★★★
hcube> Кстати, я бы в данной ситуации действовал по другому. Я бы вынес часть функционала за пределы контроллера - поставил второй.

Гы. Какое там, проектирование... Ты даже по ссылке рассказ прочитать не удосужился, а уже делаешь выводы :D

Или читай, или не пиши не в тему :)
   

hcube

старожил
★★
Читал, читал. Гимн оптимизации. Впихиванию невпихиваемого. Романтично, но очень неправильно. На микроконтроллеры закон Мура тоже распространяется, знаете ли.

Коммерческое же проектирование - это не как СЭКОНОМИТЬ на производстве железяки, а как получить от ее внедрения максимальный эффект. Есть некоторая разница ;-).
   
+
-
edit
 

Balancer

администратор
★★★★★
hcube> Читал, читал. Гимн оптимизации. Впихиванию невпихиваемого.

Плохо читал :)
   

hcube

старожил
★★
Кстати, забавная мысль. Нельзя ли программировать подобный код чем-то типа эволюционного алгоритма? Или вообще случайным перебором? Т.е. берем модель кристалла, берем требуемый функционал... допустим, не ограничиваем в обьеме стека и кода. Получаем некое решение и потому его эволюционно совершенствуем. Современный комп может смоделировать сотни ванриантов кода в секунду. Пара дней - и есть прошивка, она РАБОТАЕТ, но КАК работает - никто не знает.
   
+
-
edit
 

Balancer

администратор
★★★★★
hcube> Нельзя ли программировать подобный код чем-то типа эволюционного алгоритма?

Не хватит вычислительных мощностей для обозримых сроков разработки.

hcube> Или вообще случайным перебором?

Не хватит вычислительных мощностей для сроков существования Вселенной, ИМХО :D

hcube> Современный комп может смоделировать сотни ванриантов кода в секунду.

Мало моделировать. Нужно ещё тестировать функционал того, что вышло. Со всеми его RS232, клавиатурами и реальным временем.
   
RU andry_p #19.01.2008 18:02  @Серокой#19.01.2008 14:43
+
-
edit
 

andry_p

втянувшийся

Серокой> // А стек я тоже никогда не использовал, на ассемблере когда писал. )
Это что же, без call и без прерываний? ;)

А вообще согласен с hcube - грубая ошибка в начале и геройство в конце.
Получился девайс типа "сделали и забыли". Если потом поребуется новая версия с немного изменёнными или расширенными ф-ми придётся переделывать вообще всё - и плату, и переписывать ВЕСЬ код.

ИМХО такая экономия 5 копеек на процессоре и большие затраты на разработку и "дорогой" апегрейд может быть выгодно только при очень больших сериях - наверное сотня тысяч изделий, как минимум. Дело в том, что такая экономия имеет смысл только в достаточно дешевом изделии, когда стоимость контроллера значительна в общей себестоимости изделия.
   

hcube

старожил
★★
Ну, под моделировать, я как раз и имел в виду испытание кода под все возможные ситуации. Процессоры-то современные несколько того... продвинулись в смысле производительности. Т.е. функционал выступает в роли штраф-функции. Обьем кода и занимаемой памяти - целевой функции. А алгоритм реализует градиентный спуск. Т.е. программирование сводится к заданию требования к функционалу и запуску синтезатора кода. Тот генерит код, который реализует заданную функцию. Затем код подвергается оптимизации. Собственно, частично такую штуку делают компиляторы высокого уровня - но они просто генерируют код соответствующий программе, с некоторой оптимизацией структуры бинарника, не более того. Операции местами они не переставляют.

Кроме того, на мой взгляд хорошим тоном является использование аппаратных ресурсов. Реализовывать времянки RS-232 в КОДЕ - это допустимо ТОЛЬКО в том случае, если на свете ВООБЩЕ нет других контроллеров, а времянку сделать надо. Фактически - это только младшие модели, совсем уж копеечной стоимости. Даже в 8 меге, которая на что уж младшая, ком-порт есть. Равно как куча других аппаратных ресурсов. В пиках - да, может не быть. Но это опять же к вопросу об избыточности - помянутая мега сейчас стоит примерно как 5 простейших логических микросхем, или же как половина печатной платки. Причем НИКАКИХ ограничений на функционал-в-размере ТОЖЕ нету - мелкий арм имеет тот же размер что 8 мега, стоит всего в 3 раза дороже (т.е. изделие подорожает процентов на 20), и имеет несопоставимый обьем кода и производительность.
Поэтому если хочется покрасоваться - то да, можно писать код на ассемблере, выгадывать микросекунды, и вообще изображать из себя болид Ф-1. А если надо получить результат - проще заложить требуемый уровень избыточности.
   

Murkt

Pythoneer

hcube, я думаю, что теоретически сделать такое можно, но никто ещё не брался. Это очень трудоёмкая математическая задача. А вычисления для решения этой задачи в конкретных условиях - это уже другое дело, ИМХО.
   

andry_p

втянувшийся

hcube> Кроме того, на мой взгляд хорошим тоном является использование аппаратных ресурсов. Реализовывать времянки RS-232 в КОДЕ - это допустимо ТОЛЬКО в том случае, если на свете ВООБЩЕ нет других контроллеров, а времянку сделать надо. Фактически - это только младшие модели, совсем уж копеечной стоимости. Даже в 8 меге, которая на что уж младшая, ком-порт есть. Равно как куча других аппаратных ресурсов.

Даже at90s2313 (современная инкарнация называется tiny2313) заметно больше по возможностям, чем описанный загадочный контроллер. А ему больше 10 лет. В частности аппаратный RS-232 там есть ;)
Стоит в розницу поштучно в России около 35 рубрей, т.е. оптом будет, наверное где-то $0.5. Что там можно ещё заметно наэкономить - мне представить сложно.

Ой, пардон, там памяти программ меньше :( Ну пусть будет 8 мега...
   
Это сообщение редактировалось 19.01.2008 в 18:56
+
-
edit
 

Balancer

администратор
★★★★★
andry_p> А ему больше 10 лет. В частности аппаратный RS-232 там есть ;)

По тексту очень хорошо видно, что события описываются самого начала 1990-х. Так что надо искать смотреть бюджетные массовые доступные решения 15-летней давности :)
   
EE Татарин #19.01.2008 20:28
+
-
edit
 

Татарин

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

hcube, andry_p
Попробуйте найти аналог PIC16C84A в тини-корпусе на середину 90-х.
Кстати говоря: там не было никаких коммуникаций, а аналоги с КОМ-портом имели совсем другие размеры и стоили совсем другие деньги.

Блин, да что там говорить... в то время внутрикристалльный программатор и флэш были ЧУДОМ, а из альтернатив были только вариации на тему 80х1.
   
RU Серокой #19.01.2008 20:35  @andry_p#19.01.2008 18:02
+
-
edit
 

Серокой

координатор
★★★★
Серокой>> // А стек я тоже никогда не использовал, на ассемблере когда писал. )
andry_p> Это что же, без call и без прерываний? ;)
Ну нет, конечно, я имел в виду, без явного использования, команд push и pop.

andry_p> Даже at90s2313 (современная инкарнация называется tiny2313) заметно больше по возможностям, чем описанный загадочный контроллер. А ему больше 10 лет. В частности аппаратный RS-232 там есть ;)
Описываемый МК очень похож на ангстремовский "Тесей".
Хотя нет, и в нём есть вычитание! может, автор имел в виду вычитание константы? Которое мало где есть, ибо легко компилятором преобразуется в сложение с константой же?
   
Это сообщение редактировалось 19.01.2008 в 20:51
RU ZaKos #21.01.2008 01:10  @Серокой#19.01.2008 14:43
+
-
edit
 

ZaKos

аксакал
★☆

Серокой> И где он нашёл однокристаллку без команды вычитания? )
Серокой> // А стек я тоже никогда не использовал, на ассемблере когда писал. )

Intel 8035 и т.д.
Был с тем-же контроллером, примерно в то-же время в похожей ситуации.
Все как написано...
Все программно, с учетом времени.
   
Это сообщение редактировалось 21.01.2008 в 01:23
17.02.2008 19:30, tarasv: +1: За то что не дал помереть от склероза

tarasv

аксакал

Серокой>> И где он нашёл однокристаллку без команды вычитания? )
Серокой>> // А стек я тоже никогда не использовал, на ассемблере когда писал. )
ZaKos> Intel 8035 и т.д.

Спасибо! Это оно 1850ВЕ35 :) мучительно пытался идентифицировать что мужик из рассказа пользовал потому что помнил что такое (без вычитания) таки было.
   

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru