C или ASM
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Я ни как не опеределяю - посто выполняю техзадание самодельное и всё. Стараюсь не занимать более 50% памяти программ МК.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Mozart
- Мучитель микросхем
- Сообщения: 413
- Зарегистрирован: Пт мар 10, 2006 12:23:05
- Откуда: Moscow
- Контактная информация:
можно просто провести эксперимент... написать одну и ту же прогу на асме и на си...
выложить исходник си дизасма...
и выложиь код написанный на асме... и сравнить... потом кто это будет писать скажет на чём проще писать...
з.ы. считаю что каждый разработчик или программист должен знать архитектуру проца под который пишет свои программы... и желательно знать основы асма... а ещё лучше уметь на нём программить... но си гораздо облегчает труд...
выложить исходник си дизасма...
и выложиь код написанный на асме... и сравнить... потом кто это будет писать скажет на чём проще писать...
з.ы. считаю что каждый разработчик или программист должен знать архитектуру проца под который пишет свои программы... и желательно знать основы асма... а ещё лучше уметь на нём программить... но си гораздо облегчает труд...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Эта тема все равно просится в МЯЯЯУ, так что встряну еще разик в нее
Лично я Си не люблю, просто не перевариваю, и вовсе не за то, что у него менее оптимальный код или еще что-то... Просто синтаксис Си с моей точки зрения - это кошмар! И вообще, я уверен, что Си стал популярным именно из-за своего ужасающего синтаксиса: те, кто все же мог его освоить и привыкнуть к нему, чувствовали себя (и чувствуют) некими гуру, а остальных в некотором смысле презирали за скудоумие - раз Си не освоил, какой ты программер? Вот такой имиджевый аспект и заставляет по сей день все новых и новых честолюбивых товарищей учить Си и всякие плюс-плюсы, хотя мороки и гемора море!!! Но надо ж выделиться из разряда лохов и приблизиться к вершинам посвященных...
При этом большинство так и остается темными лохами, т.к. знание синтаксиса еще не делает тебя спецом-программистом. И в результате на Си появляются такие шедевры - любо-дорого! Поищите в гугле или яндексе по словам "индийский стиль программирования" - найдете чудные образчики! (примечание - шедевры бывают и на других языках, естественно, но на Си они смотрятся куда интереснее: ведь как бы на Си пишут крутые профи!)
И вот эта самая надуманная, навязанная популярность Си забивает другие прекрасные языки. Пример: для микроконтроллеров практически нет других альтернатив, кроме Си (только не кидайте в меня камни Бейсиков и Паскалей - это песчинки в море)...
Мне возрязят, что Си - это кроссплатформеннный язык... Если бы так! Увы, кроссплатформенность любых языков - не более чем усиленно поддерживаемый миф. Ни одна программа Windows на Си или Си++ не будет работать, если ее просто перекомпилировать в Unix, придется вносить множество переделок! Точно такая же дутая кросплатформенность у Java, DotNet, С# и других... Все это не более, чем замануха для доверчивых.
Все это я веду к тому, что с точки зрения разработки программ нет никакой разницы, на каком языке писать - Си, С++, Pascal, Forth, Java и другие - в сущности все равны. Ассемблер стоит несколько особняком, если речь идет о Windows и других ОС. Но для микроконтроллеров и он стоит в ряду РАВНЫХ.
Поверьте: гораздо важнее умение строить алгоритм решения задачи, а средство выражения его (т.е. язык) - совершенно неважно! Трагедии и комедии Шекспира не перестают быть гениальными на любом языке, и хорошему программисту абсолютно пофигу, на каком языке писать хорошие программы! А плохому программисту язык всегда мешает
Лично я Си не люблю, просто не перевариваю, и вовсе не за то, что у него менее оптимальный код или еще что-то... Просто синтаксис Си с моей точки зрения - это кошмар! И вообще, я уверен, что Си стал популярным именно из-за своего ужасающего синтаксиса: те, кто все же мог его освоить и привыкнуть к нему, чувствовали себя (и чувствуют) некими гуру, а остальных в некотором смысле презирали за скудоумие - раз Си не освоил, какой ты программер? Вот такой имиджевый аспект и заставляет по сей день все новых и новых честолюбивых товарищей учить Си и всякие плюс-плюсы, хотя мороки и гемора море!!! Но надо ж выделиться из разряда лохов и приблизиться к вершинам посвященных...
При этом большинство так и остается темными лохами, т.к. знание синтаксиса еще не делает тебя спецом-программистом. И в результате на Си появляются такие шедевры - любо-дорого! Поищите в гугле или яндексе по словам "индийский стиль программирования" - найдете чудные образчики! (примечание - шедевры бывают и на других языках, естественно, но на Си они смотрятся куда интереснее: ведь как бы на Си пишут крутые профи!)
И вот эта самая надуманная, навязанная популярность Си забивает другие прекрасные языки. Пример: для микроконтроллеров практически нет других альтернатив, кроме Си (только не кидайте в меня камни Бейсиков и Паскалей - это песчинки в море)...
Мне возрязят, что Си - это кроссплатформеннный язык... Если бы так! Увы, кроссплатформенность любых языков - не более чем усиленно поддерживаемый миф. Ни одна программа Windows на Си или Си++ не будет работать, если ее просто перекомпилировать в Unix, придется вносить множество переделок! Точно такая же дутая кросплатформенность у Java, DotNet, С# и других... Все это не более, чем замануха для доверчивых.
Все это я веду к тому, что с точки зрения разработки программ нет никакой разницы, на каком языке писать - Си, С++, Pascal, Forth, Java и другие - в сущности все равны. Ассемблер стоит несколько особняком, если речь идет о Windows и других ОС. Но для микроконтроллеров и он стоит в ряду РАВНЫХ.
Поверьте: гораздо важнее умение строить алгоритм решения задачи, а средство выражения его (т.е. язык) - совершенно неважно! Трагедии и комедии Шекспира не перестают быть гениальными на любом языке, и хорошему программисту абсолютно пофигу, на каком языке писать хорошие программы! А плохому программисту язык всегда мешает
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Алексей П
- Вымогатель припоя
- Сообщения: 615
- Зарегистрирован: Сб фев 24, 2007 06:26:18
- Откуда: г.Нижний Тагил
- Контактная информация:
ARV писал(а):Поверьте: гораздо важнее умение строить алгоритм решения задачи, а средство выражения его (т.е. язык) - совершенно неважно! Трагедии и комедии Шекспира не перестают быть гениальными на любом языке, и хорошему программисту абсолютно пофигу, на каком языке писать хорошие программы! А плохому программисту язык всегда мешает
Полностью согласен.
- Mozart
- Мучитель микросхем
- Сообщения: 413
- Зарегистрирован: Пт мар 10, 2006 12:23:05
- Откуда: Moscow
- Контактная информация:
гораздо важнее умение строить алгоритм решения задачи, а средство выражения его (т.е. язык) - совершенно неважно!
ну скажем что да...
прочитал в книге... что важно не решение ибо оно уже готовы в виде доп модулей, объектов, классов, структур и пр. важна скорость написания программ...
знаю "старых" прогаммеров считают каждый битик... я тоже дошёл до этого маразма... это наз оптимизацией и ей надо заниматься если есть критические места по быстродействию... и если есть ограничение в памяти как для МК... то каким средством не писали не пишите придётся писать на асме...
з.ы. а си просто красивый яык...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Mozart писал(а):я тоже дошёл до этого маразма...
теперь мне всё стало ясно ...
"А я смотрю: Иван грозный, царь" тут Моцарт ...
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
интересно, а что сможет сделать программа на Си для, предположим attiny13 или attiny15, кроме как поделить 2 переменные 16 бит?
и вообще, см.выше: главное не программа, а программист. т.е. результат не от языка зависит, а от того, кто им пользуется. вы б еще завели тему "умный vs тупой"
и вообще, см.выше: главное не программа, а программист. т.е. результат не от языка зависит, а от того, кто им пользуется. вы б еще завели тему "умный vs тупой"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Lestat
- Встал на лапы
- Сообщения: 111
- Зарегистрирован: Сб мар 31, 2007 13:53:07
- Откуда: Lviv
- Контактная информация:
ARV писал(а):интересно, а что сможет сделать программа на Си для, предположим attiny13 или attiny15, кроме как поделить 2 переменные 16 бит?
и вообще, см.выше: главное не программа, а программист. т.е. результат не от языка зависит, а от того, кто им пользуется. вы б еще завели тему "умный vs тупой"
я имел введу что в С меньше на клавиши нужно нажымать чтобы поделить чем на асемблере.
- Migray
- Потрогал лапой паяльник
- Сообщения: 305
- Зарегистрирован: Чт июн 07, 2007 12:05:08
- Откуда: Санкт-Петербург, Россия
- Контактная информация:
Позвольте и мне вставить в ваш спор несколько слов.
Надо знать и Си и ASM
Выбор языка программирования, как и выбор микроконтроллера,очень сильно зависит от решаемой задачи.
Если задача быстро что-то написать на хорошо знакомом МК, и что-бы код был минимальным - чаще всего берут ASM
Если надо сделать большой проект - удобнее Си, особенно если будут работать несколько человек.
Если надо срочно перейти с одного ядра на другое - очень удобен Си, даже незаменим.
Но Си ведь тоже разный, и если пользоваться родным компилятором от производителя МК, то переход от ядра к ядру может оказаться не таким простым.
В то-же время есть фирма IAR, которая делает среду разработки для всех МК. Основа там естественно Си.
При переходе от одного производителя к другому нужно только управление периферией подправить, а среда разработки и язык остаются едиными и не зависят от ядра.
Причем потом, по мере продвижения вглубь проекта, ASM учится на автомате, т.к. отладка в IAR, всекие там пошаговые выполнения программы все равно заставят открыть окно дизасемблера и смотреть туда.
А то при проходе по Си коду не понятно, почему жмешь "шаг", а курсор стоит на одной строчке
А глянешь на ASM код и сразу все видно, каждый шаг - новая команда.
Тем более в Си есть разные уровни оптимизации, и иногда код получается лучше, чем у многих программеров, которые только на ASMe работают.
Когда мне пришлось срочно, в течении испытательного срока, изучить мелкочип, причем не просто так изучить, а через 2 месяца сделать полностью готовое устройство, то мне Си очень помог.
Математика на мелкочипе - это жуть, в конторе кроме ASM ничего не признают, а мне в программе делить надо
Взял Си, написал А=В/С, скомпилил, поставив "галку" вывода кода в ASM и вот она готовая подпрограмма деления
Ну естественно что компилил без оптимизации, а затем код уже вручную подправил. Потом мне это так понравилось, что я весь проект в Си сделал, халявных 30 дней, которые IAR дает на пробу, вполне хватило.
Но еще раз повторю, ASM бросать не стоит.
Оптимизация оптимизацией, но несколько процентов грамотный разработчик в конкретной задаче выиграть сможет.
И оформить отлаженную ASM библиотеку для ее совместной компиляции в составе Си проекта всегда полезно будет.
Надо знать и Си и ASM
Выбор языка программирования, как и выбор микроконтроллера,очень сильно зависит от решаемой задачи.
Если задача быстро что-то написать на хорошо знакомом МК, и что-бы код был минимальным - чаще всего берут ASM
Если надо сделать большой проект - удобнее Си, особенно если будут работать несколько человек.
Если надо срочно перейти с одного ядра на другое - очень удобен Си, даже незаменим.
Но Си ведь тоже разный, и если пользоваться родным компилятором от производителя МК, то переход от ядра к ядру может оказаться не таким простым.
В то-же время есть фирма IAR, которая делает среду разработки для всех МК. Основа там естественно Си.
При переходе от одного производителя к другому нужно только управление периферией подправить, а среда разработки и язык остаются едиными и не зависят от ядра.
Причем потом, по мере продвижения вглубь проекта, ASM учится на автомате, т.к. отладка в IAR, всекие там пошаговые выполнения программы все равно заставят открыть окно дизасемблера и смотреть туда.
А то при проходе по Си коду не понятно, почему жмешь "шаг", а курсор стоит на одной строчке
А глянешь на ASM код и сразу все видно, каждый шаг - новая команда.
Тем более в Си есть разные уровни оптимизации, и иногда код получается лучше, чем у многих программеров, которые только на ASMe работают.
Когда мне пришлось срочно, в течении испытательного срока, изучить мелкочип, причем не просто так изучить, а через 2 месяца сделать полностью готовое устройство, то мне Си очень помог.
Математика на мелкочипе - это жуть, в конторе кроме ASM ничего не признают, а мне в программе делить надо
Взял Си, написал А=В/С, скомпилил, поставив "галку" вывода кода в ASM и вот она готовая подпрограмма деления
Ну естественно что компилил без оптимизации, а затем код уже вручную подправил. Потом мне это так понравилось, что я весь проект в Си сделал, халявных 30 дней, которые IAR дает на пробу, вполне хватило.
Но еще раз повторю, ASM бросать не стоит.
Оптимизация оптимизацией, но несколько процентов грамотный разработчик в конкретной задаче выиграть сможет.
И оформить отлаженную ASM библиотеку для ее совместной компиляции в составе Си проекта всегда полезно будет.
- ИРБИС
- Держит паяльник хвостом
- Сообщения: 978
- Зарегистрирован: Пн ноя 27, 2006 07:52:01
- Контактная информация:
Поддерживаю Migray'а. Было бы что программировать, а на чём программировать — дело наживное. Трудно изучить первый язык программирования. Остальные идут уже как по маслу. Потому как по сути они одинаковые и часто различаются только синтаксисом или основным набором команд/операторов. Но отсутствие или различие команд/операторов в разных языках прекрасно дополняют библиотеки, как стандартные, так и пользовательские, которые сам и создаёшь.
И ещё раз скажу, какая разница, на чем вам из пункта A в пункт B ехать, если вам надо быстро, и из пункта A в пункт В идёт семь маршрутов? Ведь врядли будете раздумывать, что лучше: Газель, ПАЗ, большой автобус, троллейбус, маршрут № 5 или № 25. С другой стороны, если времени у вас достаточно, можно и повыбирать. скажем: один маршрут из A в B через пункт С идёт, а это 15 минут лишних, в ПАЗик влезть невозможно, ГАЗель в аварии большому автобусу проиграет и т.д.
Да и с собственным автомобилем тоже: кому-то Тойота нравится, кому-то BMW, кому-то - мерс, а кто-то продолжает ездить на ВАЗ-2110 или даже на 2106 только потому, что на мерс у него пока бабков нет!
Так, что в МЯЯЯУ! товарищи!
Непременно, дружными рядами с подобными темами — в МЯЯЯУ!
Потому, как тот, кто делает, подобных вопросов не ставит, а изучает очередной язык. 
И ещё раз скажу, какая разница, на чем вам из пункта A в пункт B ехать, если вам надо быстро, и из пункта A в пункт В идёт семь маршрутов? Ведь врядли будете раздумывать, что лучше: Газель, ПАЗ, большой автобус, троллейбус, маршрут № 5 или № 25. С другой стороны, если времени у вас достаточно, можно и повыбирать. скажем: один маршрут из A в B через пункт С идёт, а это 15 минут лишних, в ПАЗик влезть невозможно, ГАЗель в аварии большому автобусу проиграет и т.д.
Так, что в МЯЯЯУ! товарищи!
Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Все, навреное, знают уже мое мнение на счет Си для микроконтроллеров... вот яркое подтверждение моим мыслям: http://radiokot.ru/forum/viewtopic.php?p=81169#81169
смотрите: всего одна крохотная неаккуратность в Си приводит к многократному разрастанию размера кода! А ведь внешне ничего существенного, все нормально... Совершенно очевидно, что та же самая программа на ассемблере мало того, что была бы еще меньше размером, но и никогда не вызвала бы такие удивительные ситуации.
Так что получается, что для использования Си с микроконтроллерами надо быть гораздо более продвинутым программистом, чем для работы с ассемблером...
Вот теперь, как говорит tych, думайте сами, решайте сами...
смотрите: всего одна крохотная неаккуратность в Си приводит к многократному разрастанию размера кода! А ведь внешне ничего существенного, все нормально... Совершенно очевидно, что та же самая программа на ассемблере мало того, что была бы еще меньше размером, но и никогда не вызвала бы такие удивительные ситуации.
Так что получается, что для использования Си с микроконтроллерами надо быть гораздо более продвинутым программистом, чем для работы с ассемблером...
Вот теперь, как говорит tych, думайте сами, решайте сами...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
ASM - это круто !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
AVR писал(а):Лично я Си не люблю, просто не перевариваю, и вовсе не за то, что у него менее оптимальный код или еще что-то... Просто синтаксис Си с моей точки зрения - это кошмар! И вообще, я уверен, что Си стал популярным именно из-за своего ужасающего синтаксиса: те, кто все же мог его освоить и привыкнуть к нему, чувствовали себя (и чувствуют) некими гуру, а остальных в некотором смысле презирали за скудоумие - раз Си не освоил, какой ты программер? Вот такой имиджевый аспект и заставляет по сей день все новых и новых честолюбивых товарищей учить Си и всякие плюс-плюсы, хотя мороки и гемора море!!! Но надо ж выделиться из разряда лохов и приблизиться к вершинам посвященных...
Ересь =) ужасающий синтаксис субъективен; аргумент не для инженера. Си стал популярным из-за своей гибридности - возможности писать откровенно ООП код вперемешку с весьма низкоуровневым и потому предсказуемым поведением в мелочах (I/O, память); и стал он популярным куда как не пять лет назад, а когда оборудование уже выросло из килобайтных программ (что можно/нужно было писать на ассемблере) но еще не доросло до аппаратной ресурсной абстракции. То засилье С/С++, что мы наблюдаем сейчас - планомерный результат объективной инертности общества, которое не в состоянии "за вечерок" переписать огромное количество унаследованного кода.
ARV писал(а):интересно, а что сможет сделать программа на Си для, предположим attiny13 или attiny15, кроме как поделить 2 переменные 16 бит?
Программа на Си под attiny15 - с высокой степенью вероятности - бред сумасшедшего. Никто не запрещает забивать гвозди паровозами, хоть это и требует определенных и уникальных навыков.
Программа (полноценно использующая) на Asm под ARM9 - с высокой степенью вероятности - бред сумасшедшего. Никто не запрещает изготовлять паровозы набором алмазных надфилей, хоть это и требует определенных и уникальных навыков.
ARV писал(а):Так что получается, что для использования Си с микроконтроллерами надо быть гораздо более продвинутым программистом, чем для работы с ассемблером...
Ни разу. Хорошо если AVR-чипы, которые CISC (хотя Atmel уверяет что RISC =)). Но прогать 100+ Кб кода на ARM-ассемблере, где всего 40 инструкций, и половина - пересылки данных...
Напиши мне на ассемблере прошивку-аудиоплеер (но - mp3 / ogg vorbis / ...) для at91sam7s256. В принципе, достаточно даже блок-схемы, ибо речь не про навыки кодирования, а про неподъемность разработки "с нуля" некоторых задач.
Мысль, которую хотелось бы донести - универсальных решений нет, универсальных инструментов - тем более.
Барсик писал(а):Подумаешь, какая проблема - размер кода увеличился. Прошли те времена, когда надо было трястись над каждым байтом. Если программа не влезет - возьму кристалл побольше, да и дело с концом!
Глупость. Программа не влезет - полбеды. Обычно не влезает кристалл: ни на плату, ни в бюджет.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Cfuz, ни с одним твоим аргументом, кроме чудовищности синтаксиса, спорить не стану, ибо согласен
надфили и прочее - я никогда не говорил что-то противоречащее твоим словам. Про синтаксис - как хочешь, но он ужасен
И заметь: все мои рассуждения - это уровень любителя, а твои - профессионала. Ты здесь как кто? выбирай соответствующий уровень
иначе тебя не поймут. Как профи - я с тобой согласен, как любитель - нет. Любитель ogg-плейер не пишет
P.S. Думаю, что после твоих слов еще с десяток любителей напишут программу на Си, типа бегущих огней, которая не будет влезать в память меги8 - ну, забудут просто где-нибудь какой-то значек поставить, и компилятор выдаст кучу щастья

И заметь: все мои рассуждения - это уровень любителя, а твои - профессионала. Ты здесь как кто? выбирай соответствующий уровень
P.S. Думаю, что после твоих слов еще с десяток любителей напишут программу на Си, типа бегущих огней, которая не будет влезать в память меги8 - ну, забудут просто где-нибудь какой-то значек поставить, и компилятор выдаст кучу щастья
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!