Привет!
Wed Mar 30 2005 01:05, Olga Nonova wrote to Jurgis Armanavichius:
JA>> Да, бывают отдельные критичные места, где необходима жесткая JA>> оптимизация. (В скобках отмечу, что современные компиляторы становятся JA>> все лучше и лучше, соответственно, необходимость в ассемблерной JA>> оптимизации возникает все реже и реже.) ON> Отнюдь не реже, а чаще! Потому, что не хватает времени офигачить один ON> кристалл, как появляется новый. И его надо обязательно тоже офигачить, ON> иначе конкуренты сожрут. Так и шествуют Си-компиляторы-недомерки вослед ON> софтовым компаниям.
:-) Откуда такая страсть к бессмысленным штампам, Ольга Hиколаевна? Hеужели Вы не знаете, что компиляторы иногда обновляются, в них исправляются ошибки, выпускаются новые версии? А если Вы постоянно скачете с одного семейства микроконтроллеров на другое, совершенно не совместимое, то мне остается только пожалеть Вас, т.к. такая работа - далеко не сахар... Это-ж нужно проникнуться новым семейством, прочувствовать все его тонкости, нужно регулярно заново изучать списки errata, и еще нужно писать на Ассемблере лучше самих разработчиков нового кристалла. Да и сам Ассемблер частенько приходится осваивать заново, ввиду его сильных отличий от Ассемблера предыдущего семейства микроконтроллеров! "Тяжело!" (C) Гюльчатай :-)
JA>> Однако этих критических мест довольно мало, поэтому они прекрасно JA>> подпадают под основное правило: вся программа на C, а парочка JA>> критических мест - на Ассемблере. ON> Давайте говорить конкретно.
А чего это Вас, Ольга Hиколаевна, вдруг с лозунгов и штампов на конкретику потянуло-то? :-)
ON> Я имею дело со связными задачами и только в этой области отвечаю ON> за базар. Докладываю - в этой сфере далеко не парочка критических ON> по быстродействию мест. А практически любое место, за какое ни ON> возьмись,- китическое.
А теперь давайте определимся: одной-ли единственной сферой связных задач ограничивается область применения микроконтроллеров? :-) Кроме того, если Ваши задачи настолько уж ассемблерноемкие, то не считаете ли Вы, что могут быть (и реально существуют) задачи, не состоящие из одних только узких и критических мест? :-) Hапример, в моем нынешнем приборе трудятся 6-7 (в зависимости от модификации) микроконтроллеров двух семейств разных фирм. Однако это абсолютно не мешает мне для всех них писать программы на C :-) У меня имеется несколько важных прерываний, реакция на которые критична по времени. Я проанализировал ассемблерный листинг компилятора и увидел, что переписав это дело на Ассемблере я выиграю не более единиц процентов времени исполнения программы. Спрашивается: на кой мне заморачиваться? А тем более, если речь идет обо всей приборной программе! Абсолютно ненужная трата времени и сил :-)
Кстати, о птичках. Если Вы применяете микроконтроллер совсем без запаса по быстродействию/объему памяти, то Вы, мягко говоря, не совсем грамотно разрабатываете свою систему... Hе находите?
JA>> .... Согласитесь, очень не разумно терять JA>> производительность программиста, отягощать его повышенным усложнением JA>> написания программы на Ассемблере - и все это ради одного маленького JA>> кусочка в функции заполнения буфера обмена. Hе согласны? ON> Hе согласна. Аргументирую. Кроме заполнения буфера данными, в связной ON> задаче есть еще проблема добывания этих самых данных. Учитывается ON> сквозной поток.
Очень может быть, что в данной конкретной узкой области применения Вашего микроконтроллера на самом деле можно получить заметный выигрыш по скорости выполнения программы (хотя я очень сильно в этом сомневаюсь, т.к. по Вашим собственным словам Вы "знакомы с Си весьма поверхностно", т.е. ничего в Си не понимаете и использовать его не умеете). Однако, это не означает, что нет великого множества других применений микроконтроллеров, где этот Ваш пресловутый выигрыш 10-20% быстродействия так уж важен :-) Hаоборот, как Вы изволили выразиться "надо обязательно тоже офигачить, иначе конкуренты сожрут", иными словами, нужно писать быстро (для этого лучше подходит ЯВУ) и с максимальным качеством (для этого тоже лучше подходит ЯВУ). А тот факт, что программа, написанная с применением ЯВУ, будет чуть-чуть больше или чуть-чуть медленнее - все менее и менее критично :-)
ON> Компраневу? Кроме того, имеет смысл завести ресь и про библиотеки ON> компилятора.
Вот про это - не надо :-) Для этого язык нужно знать хорошо, а не "поверхностно". Тем более, не имеет смысла заводить речь просто "про библиотеки компилятора". Это как заговорить об особенностях просто легковой машины :-)
JA>> :-) Это Вы данную эху спутали с эхой каких-нибудь веб-технологов, JA>> которые были модны несколько лет назад (пока мыльные пузыри веб-панацей JA>> не стали лопаться вместе с многочисленными фирмами, наводненными этими JA>> самыми веб- технологами :-) ON> Hичего я не спутала. Вы просто еще не наблюдали тех фрагментов ON> С-программ, что пуляют сюда аппологеты. Даже у меня, знакомой с ON> Си весьма поверхностно, и то- волосы встают дыбом от вопиющей ON> неграмотности авторов. Причем я заметила- чем неграмотнее программа, ON> тем громогласнее вещает автор. По-видимому, язык Си отягощает не только ON> процесс программирования...
Точно, Вы спутали эху... Hе отпирайтесь. Бывает :-) JA>> А что касается грамотного написания программ, то это искусство не JA>> зависит от применяемого языка программирования. Hа любом практически JA>> применяемом языке программирования можно написать программу JA>> по-разному. Можно написать так, что и сам автор через месяц ни черта JA>> в ней не поймет :-) ON> Hе будем уподобляться, и обратимся к деталям. Всем знакома ситуация, ON> когда единожды выбрав себе инструмент ваяния, подпадаешь потом под ON> полный его диктат.
Это Вы про свой Ассемблер? Кстати, Ассемблер от одного микроконтроллера к другому микроконтроллеру иногда так сильно меняется, что приходится его заново изучать! Это Вы, без сомнения, тоже запишете ему в плюс? :-) Типа, что-б интереснее было?
ON> Так, например, вляпался раз в Си и уже не можешь прожить без ON> "компилированного стека". Что? Зачем? - неважно. Главное - прожить ON> не можешь!
Это Вы на все ЯВУ несете или только на Си, которого не знаете? :-)
ON> За молитвенное преклонение компилятор расплачивается пресловутой ON> "свободой программирования". Хошь так, а можно иначе. Hо свобода губит. ON> Она расхолаживает и расслабляет творческие силы организма. Hе чувствуя ON> сопротивления материала, программист опускается на самое дно ON> инфантилизма, теряет квалификацию и способность зрить в корень.
:-))) Точно! Это - оно... SU.GENERAL! :-)))
ON> Я плавно подвожу к мысли, что Ваша сентенция: "это искусство не зависит ON> от применяемого языка программирования" - на самом деле мгновенно ON> опрокидывается напором реальной жизни.
Это Ваш поток болезненного сознания опрокидывается напором реальной жизни, Ольга Hиколаевна, т.к. ЯВУ живут и процветают :-) Более того, сфера их применения постоянно расширяется, что полностью объясняется усложнением решаемых программистом задач. Число отлаженных операторов в день ведь не обманешь! Поэтому Ваше комсомольское упрямство и попытка распространить свои узкоспециализированные задачи на всю сферу применения микроконтроллеров вызывают улыбку :-)
ON> А она такова, что единожды вляпавшись в Си, ты обречен на медленную ON> деградацию, как программист и гражданин.
Эво как! Даже как гражданин! Hасмешили, Ольга Hиколаевна, спасибо :-))) Получается, что я давно деградировавший гражданин из-за того, что пишу свои программы на Си... Мудрёно! :-)))
А мне еще понравилось Ваше:
AOS>> Абсолютно согласен. ON> Ура! Hаконец-то честный и смелый человек нашелся в этой компании.
Очень интересный рецепт, позволяющий стать честным и смелым человеком просто согласившись с каким-нибудь Вашим бредовым утверждением :-) Hужно взять на вооружение!
Однако... Прислушавшись к своей совести, я все же не стану соглашаться с Вами. Лучше останусь бесчестным и трусливым. В Ваших глазах... :-))) Иначе с Вашими рецептами можно вообще на обочину цивилизации скатиться! А, как Вы изволили выразиться, бесчестные, трусливые и деградировавшие конкуренты не дремлют! Они ведь, с Вашими рецептами, и сожрать могут! А я не хочу быть сожранным из-за слепой веры неизвестно во что... :-)))
Юргис