C или ASM

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Я ни как не опеределяю - посто выполняю техзадание самодельное и всё. Стараюсь не занимать более 50% памяти программ МК.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

можно просто провести эксперимент... написать одну и ту же прогу на асме и на си...
выложить исходник си дизасма...
и выложиь код написанный на асме... и сравнить... потом кто это будет писать скажет на чём проще писать...

з.ы. считаю что каждый разработчик или программист должен знать архитектуру проца под который пишет свои программы... и желательно знать основы асма... а ещё лучше уметь на нём программить... но си гораздо облегчает труд...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Эта тема все равно просится в МЯЯЯУ, так что встряну еще разик в нее :)
Лично я Си не люблю, просто не перевариваю, и вовсе не за то, что у него менее оптимальный код или еще что-то... Просто синтаксис Си с моей точки зрения - это кошмар! И вообще, я уверен, что Си стал популярным именно из-за своего ужасающего синтаксиса: те, кто все же мог его освоить и привыкнуть к нему, чувствовали себя (и чувствуют) некими гуру, а остальных в некотором смысле презирали за скудоумие - раз Си не освоил, какой ты программер? Вот такой имиджевый аспект и заставляет по сей день все новых и новых честолюбивых товарищей учить Си и всякие плюс-плюсы, хотя мороки и гемора море!!! Но надо ж выделиться из разряда лохов и приблизиться к вершинам посвященных...
При этом большинство так и остается темными лохами, т.к. знание синтаксиса еще не делает тебя спецом-программистом. И в результате на Си появляются такие шедевры - любо-дорого! Поищите в гугле или яндексе по словам "индийский стиль программирования" - найдете чудные образчики! (примечание - шедевры бывают и на других языках, естественно, но на Си они смотрятся куда интереснее: ведь как бы на Си пишут крутые профи!)
И вот эта самая надуманная, навязанная популярность Си забивает другие прекрасные языки. Пример: для микроконтроллеров практически нет других альтернатив, кроме Си (только не кидайте в меня камни Бейсиков и Паскалей - это песчинки в море)...
Мне возрязят, что Си - это кроссплатформеннный язык... Если бы так! Увы, кроссплатформенность любых языков - не более чем усиленно поддерживаемый миф. Ни одна программа Windows на Си или Си++ не будет работать, если ее просто перекомпилировать в Unix, придется вносить множество переделок! Точно такая же дутая кросплатформенность у Java, DotNet, С# и других... Все это не более, чем замануха для доверчивых.
Все это я веду к тому, что с точки зрения разработки программ нет никакой разницы, на каком языке писать - Си, С++, Pascal, Forth, Java и другие - в сущности все равны. Ассемблер стоит несколько особняком, если речь идет о Windows и других ОС. Но для микроконтроллеров и он стоит в ряду РАВНЫХ.
Поверьте: гораздо важнее умение строить алгоритм решения задачи, а средство выражения его (т.е. язык) - совершенно неважно! Трагедии и комедии Шекспира не перестают быть гениальными на любом языке, и хорошему программисту абсолютно пофигу, на каком языке писать хорошие программы! А плохому программисту язык всегда мешает :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Алексей П
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Сб фев 24, 2007 06:26:18
Откуда: г.Нижний Тагил
Контактная информация:

Сообщение Алексей П »

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

Полностью согласен.
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

гораздо важнее умение строить алгоритм решения задачи, а средство выражения его (т.е. язык) - совершенно неважно!

ну скажем что да...
прочитал в книге... что важно не решение ибо оно уже готовы в виде доп модулей, объектов, классов, структур и пр. важна скорость написания программ...
знаю "старых" прогаммеров считают каждый битик... я тоже дошёл до этого маразма... это наз оптимизацией и ей надо заниматься если есть критические места по быстродействию... и если есть ограничение в памяти как для МК... то каким средством не писали не пишите придётся писать на асме...

з.ы. а си просто красивый яык...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Mozart писал(а):я тоже дошёл до этого маразма...


теперь мне всё стало ясно ...

"А я смотрю: Иван грозный, царь" тут Моцарт ...
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Artem333
Встал на лапы
Сообщения: 119
Зарегистрирован: Вт апр 17, 2007 15:24:47
Откуда: Новосиб

Сообщение Artem333 »

АСМ мой первый язык программирования, тем более он позволяет полностью контроллирует железо, так что я за АСМ! Хотя нетребовательные к производительности задачи прще решить на языке высокого уровня.
Всё просто как самогонный аппарат
Аватара пользователя
Lestat
Встал на лапы
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv
Контактная информация:

Сообщение Lestat »

я тут поделил в две переменные(16-ти битные), в С етот процес занял 3-и строчки включая объявление переменных, и потом открыл асемблер код, так там голову можна поломать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

интересно, а что сможет сделать программа на Си для, предположим attiny13 или attiny15, кроме как поделить 2 переменные 16 бит? ;)

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

Мой уютный бложик... заходите!
Аватара пользователя
Lestat
Встал на лапы
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv
Контактная информация:

Сообщение Lestat »

ARV писал(а):интересно, а что сможет сделать программа на Си для, предположим attiny13 или attiny15, кроме как поделить 2 переменные 16 бит? ;)

и вообще, см.выше: главное не программа, а программист. т.е. результат не от языка зависит, а от того, кто им пользуется. вы б еще завели тему "умный vs тупой"

:)
я имел введу что в С меньше на клавиши нужно нажымать чтобы поделить чем на асемблере.
Аватара пользователя
Сэр Мурр
Модератор
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Сообщение Сэр Мурр »

М-Мя-у! Прошу высказывать за и против, достоинства и недостатки. Тема вечная, есть огромное желание перенести её в "мяу!"
Ну ладно, пусть немного здесь побудет... Всё равно не договоритесь..
Опечаленный Сэр Мурр :cry:
Аватара пользователя
Tohey
Грызет канифоль
Сообщения: 257
Зарегистрирован: Сб сен 09, 2006 19:00:18
Откуда: СССР

Сообщение Tohey »

Lestat писал(а):я имел введу что в С меньше на клавиши нужно нажымать чтобы поделить чем на асемблере.

:)))
Лень никогда ни к чему хорошему не приводила! :wink:
Программы писать, это не текст набирать...
Аватара пользователя
Migray
Потрогал лапой паяльник
Сообщения: 305
Зарегистрирован: Чт июн 07, 2007 12:05:08
Откуда: Санкт-Петербург, Россия
Контактная информация:

Сообщение Migray »

Позвольте и мне вставить в ваш спор несколько слов.
Надо знать и Си и 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 только потому, что на мерс у него пока бабков нет! :)))

Так, что в МЯЯЯУ! товарищи! :) Непременно, дружными рядами с подобными темами — в МЯЯЯУ! :)) Потому, как тот, кто делает, подобных вопросов не ставит, а изучает очередной язык. 8)
Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Все, навреное, знают уже мое мнение на счет Си для микроконтроллеров... вот яркое подтверждение моим мыслям: http://radiokot.ru/forum/viewtopic.php?p=81169#81169

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

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

Вот теперь, как говорит tych, думайте сами, решайте сами... :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

Подумаешь, какая проблема - размер кода увеличился. Прошли те времена, когда надо было трястись над каждым байтом. Если программа не влезет - возьму кристалл побольше, да и дело с концом!
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

ASM - это круто !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Cfyz
Родился
Сообщения: 6
Зарегистрирован: Пн июл 30, 2007 03:16:15

Сообщение Cfyz »

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
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Cfuz, ни с одним твоим аргументом, кроме чудовищности синтаксиса, спорить не стану, ибо согласен :) надфили и прочее - я никогда не говорил что-то противоречащее твоим словам. Про синтаксис - как хочешь, но он ужасен :)
И заметь: все мои рассуждения - это уровень любителя, а твои - профессионала. Ты здесь как кто? выбирай соответствующий уровень :) иначе тебя не поймут. Как профи - я с тобой согласен, как любитель - нет. Любитель ogg-плейер не пишет :)

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

Мой уютный бложик... заходите!
Аватара пользователя
Lestat
Встал на лапы
Сообщения: 111
Зарегистрирован: Сб мар 31, 2007 13:53:07
Откуда: Lviv
Контактная информация:

Сообщение Lestat »

Tohey писал(а):
Lestat писал(а):я имел введу что в С меньше на клавиши нужно нажымать чтобы поделить чем на асемблере.

:)))
Лень никогда ни к чему хорошему не приводила! :wink:
Программы писать, это не текст набирать...

здесь не лень, а время! :idea:
Ответить

Вернуться в «МЯЯЯУ!»