Си или Ассемблер
Си или Ассемблер
Помогите разобраться !!!
Я собираюсь изучать программирование МК AVR. И столкнулся с такой проблемой, как выбор языка программирования Си или Ассемблер. Так как я пока что не изучал программирование. Мне нужна помощь что лучше будет мне изучать первым. А что вторым я уже и сам догадаюсь )))
Заранее спасибо за ценные советы !
Я собираюсь изучать программирование МК AVR. И столкнулся с такой проблемой, как выбор языка программирования Си или Ассемблер. Так как я пока что не изучал программирование. Мне нужна помощь что лучше будет мне изучать первым. А что вторым я уже и сам догадаюсь )))
Заранее спасибо за ценные советы !
- Реклама
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Си или Ассемблер
Советую начать с ассемблера. Поищите в поиске, эта тема уже не раз поднималась.
only pure true norwegian blackx 
Re: Си или Ассемблер
Начните с ассемблера под контроллер и Си для ПК (консольные приложения, структура программы, базовые алгоритмы). А потом совместите полученные знания. 
Наилучший результат дает совмещение знаний железа, подкрепленных ассемблером, и навыков алгоритмизации, подкрепленных практикой на ПК.
ВАЖНО: если собираетесь писать под МК, поначалу не замусоривайте голову ООП и функциональщиной. Ваш главный выбор - структурное императивное программирование.
На всякий случай - С и С++ - разные языки. Помните об этом. Ваш выбор - ANSI C.
Наилучший результат дает совмещение знаний железа, подкрепленных ассемблером, и навыков алгоритмизации, подкрепленных практикой на ПК.
ВАЖНО: если собираетесь писать под МК, поначалу не замусоривайте голову ООП и функциональщиной. Ваш главный выбор - структурное императивное программирование.
На всякий случай - С и С++ - разные языки. Помните об этом. Ваш выбор - ANSI C.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Си или Ассемблер
Изучайте C. Сгодится и для микроконтроллеров и для компьютерных приложений.BGert писал(а):что лучше будет мне изучать первым.
Компилятор языка высокого уровня сделает за Вас "черновую" работу по организации структуры программы и начальных настроек, вроде инициализации указателя стека и прочих прелестей, в которых новички делают массу ошибок. Не надо будет ломать голову, какие регистры общего назначения использовать, когда пихать их в стек, и когда оттуда вытаскивать.
А вдруг понадобится, не дай Бог, разделить одно число на другое? В си просто напишете a=b/c; А в ассемблнре будете где-то искать соответствующую библиотеку, и разбираться, в какие регистры заносить исходные значения, и откуда взять результат... Оно Вам надо? За деревьями не будет видно леса... А не дай Бог, перейдёте на другие микроконтроллеры - придётся учить другой ассемблер...
Лично я не знаю ассемблера для микроконтроллеров AVR. Но это мне нисколько не мешает писать для них свои кривенькие программки на C в среде разработки CodeVisionAVR.
- Реклама
Re: Си или Ассемблер
Советую начать с ассемблера. Собственно, там и учить ничего не надо, просто поймёте, как работает контроллер.Мне нужна помощь что лучше будет мне изучать первым.
- Кефир
- Встал на лапы
- Сообщения: 131
- Зарегистрирован: Пт апр 01, 2011 20:59:47
- Откуда: Саратов
- Контактная информация:
Re: Си или Ассемблер
Советую, будет лучше всего - Практическое программирование микроконтроллеров Atmel AVR на языке ассемблераBGert писал(а):Помогите разобраться !!!
Я собираюсь изучать программирование МК AVR. И столкнулся с такой проблемой, как выбор языка программирования Си или Ассемблер. Так как я пока что не изучал программирование. Мне нужна помощь что лучше будет мне изучать первым. А что вторым я уже и сам догадаюсь )))
Заранее спасибо за ценные советы !
И конечно же - Справка по Ассемблеру для Atmel AVR
Re: Си или Ассемблер
Кривенькие программы незнание ассемблера писать и правда не мешает.Но это мне нисколько не мешает писать для них свои кривенькие программки на C в среде разработки CodeVisionAVR.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: Си или Ассемблер
... и потом чесать репу, почему на этом месте программа затыкается на несколько миллисекунд. А вот если бы автор попробовал ранее ассемблер, то сразу сообразил бы сделать пару сдвигов (или другие хитрости применил) уже на Си. Да что говорить, обычное понятие "указатель" практически ни до кого не доходит с первого раза (а до некоторых вообще никогда).А вдруг понадобится, не дай Бог, разделить одно число на другое? В си просто напишете a=b/c; А в ассемблнре будете где-то искать соответствующую библиотеку, и разбираться, в какие регистры заносить исходные значения, и откуда взять результат...
И да, мы не советуем именно писать на ассемблере, мы советуем просто знать, как работает МК. Очень много граблей потом можно обойти.
Re: Си или Ассемблер
Да и чёрт с ней. Если критические куски Вы делаете через прерывания, то никакого затыка не будет. Да пусть в фоновой задаче крутится хоть программа по расчёту сигналов от внеземных цивилизаций.ploop писал(а):почему на этом месте программа затыкается на несколько миллисекунд.
Знание, как работает МК, получается путём чтения даташита, и с ассемблером никак не связано. Лично мне наплевать слюной на все регистры общего назначения, сдвиги, и тому подобное. Зато из даташита я знаю, как инициализировать специальные регистры, которые отвечают за переферию. И их инициализация делается на си ничуть не сложнее, чем на ассемблере. А даже более наглядно.ploop писал(а):мы советуем просто знать, как работает МК
Я так и знал, что кто-то купится на слово "кривенькие". "Кривенькие" не значит, что не работающие должным образом. Это просто значит, что они, возможно, составлены не самым оптимальным образом. Да и Чёрт с ними. Лишь бы работали правильно. И они работают правильно!YS писал(а):Кривенькие программы незнание ассемблера писать и правда не мешает.
Оффтоп: Вдруг вспомнил этапы своей сложной биографии. Оказывается, я работал профессиональным эмбеддером ещё в 1986 году. Тогда и слова такого то не было. Зато был "макро" контроллер на основе микропроцессора I8080 под названием "Электроника К1-20". Жуткое уёбище без всяких средств разработки. Но к счастью, где-то украли кросс-ассемблер для операционной системы RT-11. Пишешь кусок программы, прошиваешь в УФ ПЗУ. Вставляешь в контроллер... Не работает! Ищешь ошибку. Прошиваешь снова. Гора микросхем типа К573РФ2 растёт на столе угрожающими темпами. Когда чистые микросхемы кончаются, идёшь стирать ультрафиолетом эту кучу... Господи, как мне не хватало среды разработки программ на языке высокого уровня!
- Goodefine
- Держит паяльник хвостом
- Сообщения: 906
- Зарегистрирован: Ср апр 16, 2008 13:22:54
- Откуда: Приднестровье, Тирасполь
Re: Си или Ассемблер
Не начинайте с ассемблера, люди ))) Сломаете себе мышление и будете потом на любом языке писать как на ассемблере. Вот наоборот можно, если захотите конечно ))) Ассемблер давным давно убит прогрессом, нравится это кому то или нет, но это факт.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Re: Си или Ассемблер
Так и я начинал на ассемблере (правда на Z80), но вроде ничего себе не сломал. С успехом применяю ООП, любые скриптовые языки раскурить тоже сложности не представляет, свободно работаю с БД. Только вот даже запросы можно построить логичнее, имея всесторонний опыт.Сломаете себе мышление и будете потом на любом языке писать как на ассемблере.
- КРАМ
- Друг Кота
- Сообщения: 25266
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Си или Ассемблер
Бред...Барсик писал(а):Господи, как мне не хватало среды разработки программ на языке высокого уровня!
Причем тут ЯВУ?
Если не было средств отладки и ВООБЩЕ НИКАКОГО КОМПИЛЯТОРА, то это и вызывало трудности.
Напомню, что сам по себе Ассемблер - ЭТО ТОЖЕ ЯЗЫК. И он требует программу-транслятор...
Проблемы, которые возникают с Си при незнакомом компиляторе (у разных производителей разные реализации Си, есличо) могут В НАЧАЛЕ ИСПОЛЬЗОВАНИЯ нивелировать все преимущества от использования этого языка по сравнению с АСМом. И смена платформ так же требует некоторых потерь времени на адаптацию...
Убогие программки типа "плюс-минус-умножить-разделить" с такой же убогой временной диаграммой устройства с МК можно писАть вообще на чем угодно, хоть на "бейсиках". А если устройство работает в РРВ, да еще и с использованием тех ресурсов МК, которые не поддержаны Си (из-за непереносимости кода и иных причин...), то даже при написании кода на Си использование вставок на АСМе неизбежно. И порой времени на такой "гибридный" код уходит много больше, чем на исходное кодирование в АСМе.
Re: Си или Ассемблер
Чему там сползать, тут даже по названию понятно.
Первые три поста по делу, далее сотню страниц холивара
Первые три поста по делу, далее сотню страниц холивара
Re: Си или Ассемблер
Предыдущие ( в разных форумах ) сотни раз возникавшие религиозные войны И.Х. vs пророк Мухамед ( то бишь C vs ASM ) обычно кончались тем же. Почти никому еще не удавалось убедить кого-нить сменить веру, разве что дикарей -- стекляными бусами и огненной водой .
Re: Си или Ассемблер
Чукчей-писателей всегда больше чукчей-читателей.
- Кефир
- Встал на лапы
- Сообщения: 131
- Зарегистрирован: Пт апр 01, 2011 20:59:47
- Откуда: Саратов
- Контактная информация:
Re: Си или Ассемблер
Много не мало, опыт личный каждого из вас.Goodefine писал(а):Ассемблер давным давно убит прогрессом, нравится это кому то или нет, но это факт.
Последний раз редактировалось Кефир Вт фев 05, 2013 17:17:49, всего редактировалось 2 раза.
Re: Си или Ассемблер
Эта чё за бред!!!???
Думайте... прежде чем написать!!!
Думайте... прежде чем написать!!!
"Я не даю готовых решений, я заставляю думать!"(С)


