|
Вопросы по изучению Си |
|
|
|
Mar 8 2009, 07:13
|
Частый гость
 
Группа: Участник
Сообщений: 120
Регистрация: 16-02-08
Пользователь №: 35 087

|
Здравствуйте. Месяца два назад сел за изучение микроконтроллеров AVR. Почитал книгу «Белов А. В. Создаём устройства на микроконтроллерах. 2007», проделал примерчики в CodeVisionAVR, пощупал аврстудию, погонял схемки в протеусе, попрошивал мегу8 на stk500, на макетке собрал. Чувствую что знаний по языку Си не хватает. Имеет ли смысл на некоторое время забыть про микроконтроллеры, установить что-нибудь вроде Microsoft Visual Studio и начать изучать язык Си по книге про чистый Си без привязки к микроконтроллерам, например, по книге 1) Керниган&Ритчи в списке?! Но не знаю, хватит ли на чистый Си сил и энтузиазма, без привязки к микроконтроллерам читать тяжело, да и времени на чтение мало – микроконтроллеры это пока хобби. Или может быть продолжать читать книги по микроконтроллерам?! Но там язык Си рассмотрен поверхностно – пролетарская суть не ясна. Поискал в сети книги по чистому Си (без плюсов), литературы на русском – мало. Вот что удалось найти: 1) Керниган, Ритчи. Язык Си 2) Керниган, Ритчи. Язык программирования Си 3) Керниган, Пайк. Практика программирования 4) Шилдт. Полный справочник по C Остальная доступная в сети литература по Си с первого взгляда менее привлекательна: 5) Афанасьев. Программирование на языке Си 6) Богатырев. Руководство полного идиота по программированию на C 7) Болский. Язык программирования Си 8) Бочков. Язык программирования Cи для ПК 9) Голицина. Основы алгоритмизации и программирования 10) Крупник. Изучаем Си 11) Подбельский. Программирование на языке Си 12) Фьюэр. Задачи по языку С 14) Хэзфилд. Искусство программирования на C 13) Шилтд. С для профессиональных программистов Отдельный вопрос по классической книге: 15) «Роберт Седжвик. Фундаментальные алгоритмы на C. Части 1 - 5. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах» Книга того же автора с тем же названием встречались мне для С++ - изучать ли ее или попытаться найти эту книгу для чистого Си в бумажном виде?! Верно ли утверждение: «Седжвика можно брать и с "C++" в названии. На самом деле там все равно чистый C». Что еще из книг маскирующихся в названии под «С++» пригодно для изучения про чистый Си?! Если что-то из доступных в сети электронных книг по чистому Си пропустил, пожалуйста, дополните. Может быть есть что то из достойных «бумажных» книг по Си, что не выложено в сеть и стоит найти?! Наверное, нужны книги не просто справочник и не с примитивом, а книга учебная, что бы много различных примеров разобрано, приложений, от простого к сложному и через них вся суть и обобщения. Вот например книги с громкими и многообещающими аннотациями: 16) Прата. Язык программирования C (Си). Лекции и упражнения h**p://www.livelib.ru/book/1000163060 17) Кочан. Программирование на языке C (Си) h**p://www.williamspublishing.com/Books/5-8459-1088-9.html Но за громкими и красивыми обложками, аннотациями, часто бывают пустышки которые лучше даже не читать. Вечные вопросы: что делать и стоит ли вообще читать или может так и ходить неграмотным и программировать методом тыка?! Как развиваться дальше, что читать, в каком порядке читать и что в первую очередь читать?! Спасибо за внимание и советы.
Сообщение отредактировал Владимир_2010 - Mar 8 2009, 07:15
|
|
|
|
|
 |
Ответов
|
Mar 9 2009, 14:18
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(DpInRock @ Mar 8 2009, 22:53)  Нужна маленькая шпаргалка. Тут вот в чем дело: шпаргалка не научит мыслить, не даст нужную теорию! Т.е. знания будут ограничены 3 - 10 пунктами шпаргалки, а когда возникнет ситуация, в шпаргалке не описанная, что произойдет? ИМХО теорию нужно учить сразу. Пусть не в полном объеме (да это и не возможно), но разумными порациями и теорию правильную! Чтобы уже на самом начальном этапе формировался прочный фундамент знаний. Цитата(zltigo @ Mar 9 2009, 18:41)  В голове + у компиляторов хелпы в комплекте неплохие бывают, ну а вообще стандарт С99 языка существует для полных и окончательных разборок А что бы Вы могли порекомендовать для чтения по Си++? Как я понимаю, Си уже мало используется...
--------------------
Выбор.
|
|
|
|
|
Mar 9 2009, 14:49
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(zltigo @ Mar 9 2009, 22:24)  Аллах его ведает  тот-же первоисточник С++ от Бьерна Страуструпа написан по сравнению с творением профессионального технического писателя Кернигана по С просто ужасно  Ну ладно... Скачал книгу, что Вы рекомендовали топикстартеру (именно второе издание), может быть свой уровень подниму хочь чуть. Цитата(zltigo @ Mar 9 2009, 22:24)  С чего-бы это вдруг  Может быть мне и память изменила, но где-то давно я видел на это форуме информацию, что компиляторы Си уже не развиваются. Из этого сделал вывод (в большей степени благодаря "удобствам и сервисам" Си++). Выходит, что вывод неверный. А если не секрет, что Вы используете больше? Си или Си++?
--------------------
Выбор.
|
|
|
|
|
Mar 9 2009, 18:31
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(haker_fox @ Mar 9 2009, 20:17)  Но ведь сейчас-то Си++ компиляторы есть. Чем можно объяснить Ваш случай в настоящее время? Не сочтите за издевку (или что-нибудь в этом роде), это действительно интерес для меня! Так это было в прошлое время  . Начинал с борландовского компилятора - первое творение на плбсах - на спор быстренько написал оконную библиотеку выигравшую соревнование у аналогичной сишной - уж больно классно все ложилось на плюсы, потом начались усовершенствования и с учетом накопления опыта удалось на С и ASM сделать круче  . Потом стало возможным писать на C, но не на C++ не только для PC, но и контроллеров. Первые операционки на смеси C/ASM..... Как-то отошел от C++, много пришлось на ASM писать, замаматерел, закостенел.... Писишные проекты традиционно пишу под C++ компилятор, но с минимальным использованием плюсов, остальное на C. "Ручками" на С при понимании того, что и как делать реализуются и плюсовые приемы. Цитата(A. Fig Lee @ Mar 9 2009, 20:39)  да и памяти C++ жрет больше. В принципе нет
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 10 2009, 02:17
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(zltigo @ Mar 10 2009, 02:31)  "Ручками" на С при понимании того, что и как делать реализуются и плюсовые приемы. В общем, это уже дело привычки и вкуса. Причем привычка и вкус базируются на абсолютном понимании того, что делается. Цитата(A. Fig Lee @ Mar 10 2009, 01:39)  да и памяти C++ жрет больше. Вот тут уже обсуждалось такое типичное заблуждение.
--------------------
Выбор.
|
|
|
|
|
Mar 10 2009, 23:39
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(haker_fox @ Mar 9 2009, 22:17)  Вот тут уже обсуждалось такое типичное заблуждение. и де там обсуждается "типичное заблуждение" ? расходы как минимум на конструкторы/деструкторы, виртуальную таблицу, ну и все то, что приносит с собой дженерализейшн. С Торвальдом я согласен в конкретном случае по ссылке, за исключением СТЛ - тут он пургу гонит, хотя он вообще оторвался от народа и пургу часто гонит.
Причина редактирования: Излишнее цитирование.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Mar 12 2009, 01:39
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(haker_fox @ Mar 11 2009, 05:32)  Еще раз повторюсь: даже если небольшой оверхед и есть, это мне не помешало поместить в ATmega16 ОСь + прикладную программу. Все на Си++. Сейчас занимаюсь реалтаймовским приложением. Тоже на Си++, без ОСи (она там просто не нужна). Для ATmega168. Я в свое время также и про Си считал. Только на ассемблере работал. Пока не попробывал. Удобств было... словами не описать. Верю. И в Запорожец можно человек 7 натолкать. Вопрос - еффективно ли ето? Скажите пожалуйста, что вас побудило использовать C++ a не C, и какие его особеености Вы использовали( try/catch, templates, STL, (design patterns maybe), virtual functions, operator overloading, .. etc) Интересно будет послушать. Цитата(vik0 @ Mar 11 2009, 14:12)  У Страуструпа есть весьма интересная книжка - "Дизайн и эволюция языка С++". Не читали? Рекомендую. Одна из ключевых идей книги - "вы не платите за то, что не используете". Не используете виртуальные функции - не будет никакой таблицы. Не инициализируете члены класса - не будет никаких лишних конструкторов (default ctor, инициализирующий члены default значениями, нормальный компилятор успешно соптимизирует). Нет не читал. Не читаю на русском техническую литературу. подозреваю, что ето "The Annotated C++ Reference Manual".. Лежит на работе. Почитываю иногда главки. все вместе нет смысла читать. Надо будет домой забрать, пока не украли. А че там? По сути - если мы все выбросим - ето будет C, только написанный в формате C++. Собственно тут 2 вопроса - почему хорош C++ и почему он плох с мелкими микроконтроллерами.. 1. С появлением C++ стало легче разрабатывать большие проекты - можно все разбить на обьекты, менять их, легко видна структура программы, и т.д. 2. Почему он плох для мелкоконтроллеров: он скрывает связь с ресурсами - например внутри конструктора может быть другой new, что сразу не очевидно. Операторы могут быть переопределены, и так далее.. Не очень прозрачен. Деструкторы - надо помнить что при выходе из скопа вызывается деструктор и т.д. Не, я по жизни и на работе в основном на C++ программирую, но когда дома на мелкоконтроллерах - лучше С
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Mar 12 2009, 15:47
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  Верю. И в Запорожец можно человек 7 натолкать. Вопрос - еффективно ли ето? В запорожце сколько сидячих мест? 4? Ну так зачем же туда 7 пихать? В ATmega16 сколько памяти программ? 16Кб? Ну так если мое приложение + ОСь (на Си++) занимают 8 Кб памяти программ и 500 байт ОЗУ (используются буфера, много переменных), то кто мешает мне программировать на Си++? Я же не пытаюсь запихать туда более 16 Кб. Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  Скажите пожалуйста, что вас побудило использовать C++ a не C, и какие его особеености Вы использовали( try/catch, templates, STL, (design patterns maybe), virtual functions, operator overloading, .. etc) Интересно будет послушать. Использовать Си++ меня побудила ОС scmRTOS. Увидев, что он успешно применяется для микроконтроллеров подобного класса, я решил что буду его применять в своей работе. Какие особенности использовал? Так я же ссылку давал, там все есть. Ну вот, хотябы это: http://electronix.ru/forum/index.php?s=&am...st&p=548053http://electronix.ru/forum/index.php?s=&am...st&p=548100http://electronix.ru/forum/index.php?s=&am...st&p=548240В последнем проекте активно использую наследование. Т.е. когда один класс наследуется другим. Очень удобно. Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  2. Почему он плох для мелкоконтроллеров: он скрывает связь с ресурсами - например внутри конструктора может быть другой new, что сразу не очевидно. Чем это плохо и почему только для МК? На обычном IBM PC оперативы немеренно и бездумное использование new приветствуется, подумаешь пропадет пара сотен МБ? Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  Операторы могут быть переопределены, и так далее.. Опять же, чем это плохо именно для МК? Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  Не очень прозрачен. Ну вот  Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  Деструкторы - надо помнить что при выходе из скопа вызывается деструктор и т.д. Ага, а еще надо помнить, что при создании объекта вызваются конструкторы и при вызове обработчика прерывания нужно сохранять SREG  Конструктор и деструктор можно не определять в классе, тогда ничего вызваться не будет. Деструктор, как правило вообще редко применяется (ИМХО). А вот конструктор - это сплошная выгода. Создаешь объект и не заботишься о вызове функции на подобии Init(), конструктор все сам сделает. Чем плохо? Или вручную, или автоматом. Ну елки-палки, это же неубедительно звучит. Чем это снова плохо именно для МК? Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  Не, я по жизни и на работе в основном на C++ программирую, Для ПК? Цитата(A. Fig Lee @ Mar 12 2009, 09:39)  но когда дома на мелкоконтроллерах - лучше С А почему не АСМ, ведь на нем более оптимально можно написать? Си не очень прозрачен, добавляет свои навороты, оптимизацию, решает за программиста, где и что разместить  АСМ в этом плане гораздо лучше! В общем это юмор. А если серьезно, Вы попробуйте Си++ на МК. Глядишь, и сомнения пропадут, зато получите мощный инструмент на 8 битной платформе. Ну и на последок: конечно, голову никто не отменял. Укладывать все возможности Си++ на AVR никто не собирается, но некоторые возможности почему бы не использовать?
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
Владимир_2010 Вопросы по изучению Си Mar 8 2009, 07:13 _Pasha Не начинайте с Codevision. Он портит мозг.
Лучше... Mar 8 2009, 07:22 zltigo Достаточно одной - K&R второе издание. Контрол... Mar 8 2009, 07:36 Владимир_2010 Цитата(_Pasha @ Mar 8 2009, 12:22) Не нач... Mar 8 2009, 08:42 ARV Лично мое мнение такое: программирование - это не ... Mar 8 2009, 08:57 vshemm Цитата(ARV @ Mar 8 2009, 11:57) К сожален... Mar 8 2009, 09:41 Владимир_2010 Цитата(zltigo @ Mar 8 2009, 12:36) Достат... Mar 8 2009, 09:10 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 12:10)... Mar 8 2009, 09:24 Владимир_2010 Цитата(zltigo @ Mar 8 2009, 14:17) Я же д... Mar 8 2009, 09:24 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 12:24)... Mar 8 2009, 09:54 Владимир_2010 Вначале любой язык предпочитаю изучать через приме... Mar 8 2009, 10:07 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 13:07)... Mar 8 2009, 10:21 Herz Вот, пользуюсь, как справочником. О "художес... Mar 8 2009, 11:48 zltigo Цитата(Herz @ Mar 8 2009, 14:48) Вот, пол... Mar 8 2009, 12:27 sergeeff Цитата(Herz @ Mar 8 2009, 14:48) Вот, пол... Mar 8 2009, 12:39 DpInRock Присоединяюсь к Герцу. K&R - мало полезен. Бол... Mar 8 2009, 12:52 zltigo Цитата(DpInRock @ Mar 8 2009, 15:52) в ми... Mar 8 2009, 12:57 sergeeff Цитата(DpInRock @ Mar 8 2009, 15:52) Прис... Mar 8 2009, 13:25  zltigo Цитата(sergeeff @ Mar 8 2009, 16:25) Так ... Mar 8 2009, 13:43 777777 Цитата(DpInRock @ Mar 8 2009, 15:52) Прис... Mar 10 2009, 04:34         777777 Цитата(A. Fig Lee @ Mar 11 2009, 02:39) и... Mar 11 2009, 06:05           vik0 Цитата(A. Fig Lee @ Mar 12 2009, 03:39) Н... Mar 12 2009, 19:53            Rst7 Цитата(vik0 @ Mar 12 2009, 21:53) Ну и от... Mar 13 2009, 07:16             Сергей Борщ Цитата(Rst7 @ Mar 13 2009, 09:16) Вы прос... Mar 13 2009, 07:37             vik0 Цитата(Rst7 @ Mar 13 2009, 09:16) Вы прос... Mar 13 2009, 07:41           777777 Цитата(A. Fig Lee @ Mar 12 2009, 04:39) Д... Mar 13 2009, 07:05         vik0 Цитата(A. Fig Lee @ Mar 11 2009, 01:39) р... Mar 11 2009, 18:12          singlskv Цитата(vik0 @ Mar 11 2009, 21:12) У Страу... Mar 11 2009, 20:33           vik0 Цитата(singlskv @ Mar 11 2009, 22:33) Оче... Mar 11 2009, 21:20 Владимир_2010 В том то и вопрос – знаю только базу for, wh... Mar 8 2009, 15:30 _Pasha Цитата(Владимир_2010 @ Mar 8 2009, 18:30)... Mar 8 2009, 15:51 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 18:30)... Mar 8 2009, 18:06 singlskv Цитата(Владимир_2010 @ Mar 8 2009, 18:30)... Mar 8 2009, 21:13 SergeyTT Цитата(Владимир_2010 @ Mar 8 2009, 17:30)... Mar 8 2009, 21:39 Herz Цитата(zltigo @ Mar 8 2009, 14:27) Типа ... Mar 8 2009, 17:41 Владимир_2010 Да уж, все еще более усложняется и удаляется от же... Mar 8 2009, 19:58 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 22:58)... Mar 8 2009, 20:05 _Pasha Цитата(Владимир_2010 @ Mar 8 2009, 22:58)... Mar 8 2009, 21:12 Владимир_2010 Цитата(Herz @ Mar 8 2009, 16:48) Вот, пол... Mar 9 2009, 10:00 zltigo Цитата(Владимир_2010 @ Mar 9 2009, 13:00)... Mar 9 2009, 10:41  Harvester Цитата(zltigo @ Mar 9 2009, 13:41) Нашел ... Mar 10 2009, 07:10 A. Fig Lee K&R - я бы не заморачивался его читать.
Он про... Mar 9 2009, 17:39 DRUID3 Владимир_2010, у одного из посетителей этого форум... Mar 10 2009, 07:22 Владимир_2010 Цитата(777777 @ Mar 10 2009, 09:34) ...Уч... Mar 10 2009, 12:34 sergeeff Цитата(Владимир_2010 @ Mar 10 2009, 15:34... Mar 10 2009, 20:36 Rst7 Цитатаили непереносимые расшинения гнуся?
Где Вы ... Mar 13 2009, 07:40 Rst7 Цитатанепереносимые расшинения гнуся?
Дабы закрыт... Mar 13 2009, 07:53 _Pasha Цитата(Rst7 @ Mar 13 2009, 11:53) Дабы за... Mar 13 2009, 08:15  MrYuran Цитата(_Pasha @ Mar 13 2009, 11:15) Кстат... Mar 13 2009, 08:20 Rst7 ЦитатаКстати, а в ИАРе return внутри for() как себ... Mar 13 2009, 08:19 _Pasha Цитата(Rst7 @ Mar 13 2009, 12:19) тут он ... Mar 13 2009, 08:29 Rst7 Цитаталучше break;
Конкретно в такой критической ... Mar 13 2009, 08:23 Rst7 Цитатавсегда надо помнить, из чего он сделан
В гн... Mar 13 2009, 08:33 _Pasha Цитата(Rst7 @ Mar 13 2009, 12:33) Можно и... Mar 13 2009, 08:50 Kirill24 Посоветуйте книжку для НАЧИНАЮЩЕГО(чайника) по... Oct 25 2009, 11:57 smac Цитата(Kirill24 @ Oct 25 2009, 14:57) Пос... Oct 25 2009, 21:23 chief_olimp Шпак Ю.А.
Программирование на языке С для AVR и PI... Oct 25 2009, 14:17 kurtis ЦитатаСи-программированию для микроконтроллеров
Пр... Oct 25 2009, 18:11 arm123 У меня такой вопрос:
к примеру есть функция с тако... Nov 9 2009, 11:41 sergeeff Г.Саттер, А.Александреску "Стандарты программ... Nov 9 2009, 11:58 WHALE Дык в топике вроде речь идет о С? И если компилято... Nov 9 2009, 13:02 ReAl Цитата(WHALE @ Nov 9 2009, 15:02) Дык в т... Nov 9 2009, 14:34 arm123 Я пользуюсь компилятором IAR. Сдесь вроде поддержи... Nov 9 2009, 14:05 mdmitry И не забыть про реентабельность(переносимость) код... Nov 9 2009, 14:33 arm123 С точки зрения быстродействия все таки да мне каже... Nov 9 2009, 14:37 sergeeff Цитата(arm123 @ Nov 9 2009, 17:37) С точк... Nov 9 2009, 15:30  arm123 Цитата(sergeeff @ Nov 9 2009, 18:30) Я пр... Nov 9 2009, 15:52 kurtis Не забудьте инициализировать переменную, т.е. долж... Nov 9 2009, 16:05 arm123 Цитата(kurtis @ Nov 9 2009, 20:05) У Вас ... Nov 9 2009, 19:41 Waso Добрый день! или не день =) ... Влеплю сюда во... Nov 13 2009, 15:13 AHTOXA Наследовать кнопку от клавиатуры - это, имхо, пере... Nov 13 2009, 22:34 Сергей Борщ Цитата(Waso @ Nov 13 2009, 17:13) чтоб до... Nov 13 2009, 22:40 Waso Хорошо, но тогда эти ссылки будут храниться в ОЗУ,... Nov 15 2009, 10:34 Сергей Борщ Цитата(Waso @ Nov 15 2009, 12:34) Если да... Nov 15 2009, 18:14 kurtis Встретил в исходниках такую вот конструкцию
Код#de... Nov 17 2009, 22:33 XVR Цитата(kurtis @ Nov 18 2009, 01:33) Встре... Nov 18 2009, 07:39 mdmitry Кодdo { aa(a); bb(a); } while... Nov 18 2009, 14:51 Herz Цитатаif (some) func2(a); else blablabla(a); // Sy... Nov 18 2009, 15:39 defunct Цитата(Herz @ Nov 18 2009, 17:39) Разве? ... Nov 18 2009, 15:45 rezident Цитата(Herz @ Nov 18 2009, 20:39) Разве? ... Nov 18 2009, 15:59  Herz Цитата(rezident @ Nov 18 2009, 17:59) Пот... Nov 18 2009, 20:26   XVR Цитата(Herz @ Nov 18 2009, 23:26) Хм, ну ... Nov 19 2009, 07:52    Herz Цитата(XVR @ Nov 19 2009, 09:52) Понятно ... Nov 19 2009, 08:18     Сергей Борщ Цитата(Herz @ Nov 19 2009, 10:18) Если за... Nov 19 2009, 09:38 baralgin Цитата(Сергей Борщ @ Nov 19 2009, 11:38) ... Nov 19 2009, 20:47 defunct Цитата(baralgin @ Nov 19 2009, 22:47) В с... Nov 19 2009, 23:53 baralgin Цитата(defunct @ Nov 20 2009, 01:53) Даже... Nov 20 2009, 10:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|