Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы по изучению Си
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Страницы: 1, 2
Владимир_2010
Здравствуйте.
Месяца два назад сел за изучение микроконтроллеров 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
Но за громкими и красивыми обложками, аннотациями, часто бывают пустышки которые лучше даже не читать.
Вечные вопросы: что делать и стоит ли вообще читать или может так и ходить неграмотным и программировать методом тыка?! Как развиваться дальше, что читать, в каком порядке читать и что в первую очередь читать?!
Спасибо за внимание и советы.
_Pasha
Не начинайте с Codevision. Он портит мозг. smile.gif

Лучше сразу IAR либо WinAVR
И еще - ищите в инете и читайте живые примеры, разбирайтесь что и как написано. Даже при условии изначально плохого знания английского, будет двойная польза: анализ текстов программ можно пытаться делать и без комментариев, а параллельно и аглицкий заливается smile.gif Ищите ресурсы на русском, отмечайте ссылки на англоязычные и копайте. Постепенно у Вас сформируется лексикон, достаточный для того, чтобы эффективно гуглить интересующие Вас вопросы
zltigo
Достаточно одной - K&R второе издание. Контроллерная специфика для языка это обычно несколько страниц в документации на конкретный компилятор. "Книги по микроконтролерам" это или откровенное дерьмо, или это действительно книги по Микроконтроллерам а не по изучению языков и раcсматривать "примеры" из таких книг следует так-же, как и пример из букваря "Мама мыла раму" - не более. Для расширения кругозра - книга п.3 тоже обязателена к прочтению, но догматично ее принимать к исполнению, тем не менее, не стоит. По тонкостям языка - стандарт C99. Возможно, следует проработать чего-либо с "упражнениями" из западных авторов.
Цитата(_Pasha @ Mar 8 2009, 10:22) *
И еще - ищите в инете и читайте живые примеры, разбирайтесь что и как написано.

Только имейте ввиду, что не менее, чем в 95 случаев из 100 это будет исходник уровня "моя первая программа на C" sad.gif и скорее "это" может служить учебным пособием как НЕ надо писать. Посему относиться к найденному в интернете надо более, чем критически.
Владимир_2010
Цитата(_Pasha @ Mar 8 2009, 12:22) *
Не начинайте с Codevision. Он портит мозг. smile.gif

Насчет рака мозга, который вызывает CodevisionAVR мне уже говорил один радиолюбитель. Потихоньку думаю перейти или на Winavr или на IAR.
Начал с CodevisionAVR потому что книги по нему есть, тот же Белов для новичка как первый старт. ДА еще в какой-то из книг прочитал мнение что дескать с Winavr новичку разбираться тяжело – лучше начать с CodevisionAVR.
Вот что по микроконтроллерам AVR на Си удалось найти:
1) Белов. Создаём устройства на микроконтроллерах
2) Голубцов. Микроконтроллеры AVR от простого к сложному
3) Лебедев. Code Vision AVR
4) Хартов. Микроконтроллеры AVR. Практикум для начинающих
5) Шпак. Программирование на языке C для AVR и PIC микроконтроллеров
6) Joe Pardue. C Programming for microcontrollers, 2005
7) Steven F. Barrett and Daniel J. Pack. Atmel AVR Microcontroller Primer - Programming and Interfacing, 2008
Если что-то пропустил для AVR на Cи – дополните пожалуйста.
Хоть и не с примерами на Си, но думаю без книги
8) Евстифеев. Микроконтроллеры AVR семейства Mega
не обойтись любому начинающему осваивать семейство Mega
В рунете много радолюбителей выкладывают проектов на Winavr или на Codevision, с описаниями – это несомненно плюс для новичка. А IAR у меня тока дока на английском. Да и мудреный IAR какой-то, модный весь, с наворотами. Ни одной книги по IAR даже на английском я не встречал. Хотя пока мозг пустой наверное лучше его приучать к тому что перспективно, т.е. к IAR.
Глупый вопрос но все же: код написанный в IAR я смогу загнать в AVRStudio 4.16, прошить микроконтрллер в stk500 и использовать новую связку AVRStudio 4.16 с Proteus v7.4 SP3 (Proteus VSM Viewer)?! И использовать имитацию в AVRStudio аналоговых сигналов для АЦП в связке с Proteus?!
С другой стороны: хоть Winavr, хоть IAR, хоть Codevision – проблема незнания языка Си и фундаментальных алгоритмов все равно остается.
ARV
Лично мое мнение такое: программирование - это не знание языка, это способ или стиль мышления. Научиться программировать можно вообще не зная ни одного языка программирования - с моей точки зрения это означает научиться раскладывать решение задачи на необходимые этапы, т.е. алгоритмизация. Вот умению выделять из поставленной задачи отдельные элементы, которые можно (или нужно) выполнять в определенной последовательности (или наоборот, параллельно) для того, чтобы добиться требуемого результата, мало какие книги учат... Язык Си (или другой какой) - это всего лишь набор красок и кистей, которыми мы рисуем картины... Но результат зависит от того, как именно мы воспринимаем мир и как умеем отразить его на холсте.
К сожалению, мне неизвестны книги, которые могли бы научить алгоритмике и логическому мышлению, поэтому посоветовать ничего не могу... Но уверен, что начинать нужно именно с этого.
Владимир_2010
Цитата(zltigo @ Mar 8 2009, 12:36) *
Достаточно одной - K&R второе издание.

Что неужели по Си ничего кроме Керниган&Ритчи и Керниган&Пайк читать не надо?! Что с книгой Седжвик и трюком в названии «С++»?!
По поводу трудов Керниган и Ритчи. У меня две книги. Первая в pdf называется на русском «Керниган, Ритчи. Язык программирования Си/Пер. с англ. 3е издание. 2001 – 352 с», однако двумя страницами ранее на картинке написано по английскому «The C programming Language. Second Edition». Вторая книга тоже в pdf но не понятно что за издание и что за год. На первой странице написано просто «Б.В. Керниган, Д.М. Ричи. Язык С». в книге 229 страниц.
Как учить Си по этим книгам?! Какую программулю на компьютер ставить и на чем примеры прогонять?!
zltigo
Цитата(Владимир_2010 @ Mar 8 2009, 12:10) *
Что неужели по Си ничего кроме Керниган&Ритчи

Раньше, чем K&R понимать начнете - не надо.
Цитата
По поводу трудов Керниган и Ритчи. У меня две...

Я же даже жирным шрифтом выделил второе издание. Если с английским так плохо, что надпись «The C programming Language. Second Edition» воспринимается, как картинка, то надо начинать с английского языка.



Цитата(Владимир_2010 @ Mar 8 2009, 12:10) *
Что с книгой Седжвик и трюком в названии «С++»?!

Думаю, что совсем "ничего". Алгоритмы это Кнут, а не седжвики и иже с с ним рождающие "для С", "для С++", "для Java", "для VBA smile.gif"....
Владимир_2010
Цитата(zltigo @ Mar 8 2009, 14:17) *
Я же даже жирным шрифтом выделил второе издание. Если с английским так плохо, что надпись «The C programming Language. Second Edition» воспринимается, как картинка, то надо начинать с английского языка.

Спасибо.
Second Edition - это всем понятно что второе издание. Только смущает что в книге при переводе на русский издатели написали «Язык программирования Си/Пер. с англ. 3е издание» (на 4ой странице), а двумя страницами ранее "The C programming Language. Second Edition". Вот и уточнил – та ли эта книга.
Цитата(zltigo @ Mar 8 2009, 14:17) *
Думаю, что совсем "ничего". Алгоритмы это Кнут, а не седжвики и иже с с ним рождающие "для С", "для С++", "для Java", "для VBA

Седжвик привлекает тем что на первый взгляд книга достойная и на Си, а Си нужен для освоения микроконтроллеров.
До детального изучения «Кнут. Искусство программирования» руки все не доходят. Хотя понимаю что надо. Из классики по алгоритмам что еще обязательно к прочтению?! «Томас Кормен и др. Алгоритмы: построение и анализ»?!
vshemm
Цитата(ARV @ Mar 8 2009, 11:57) *
К сожалению, мне неизвестны книги, которые могли бы научить алгоритмике и логическому мышлению, поэтому посоветовать ничего не могу... Но уверен, что начинать нужно именно с этого.

http://mitpress.mit.edu/sicp/
Есть в русском переводе: http://newstar.rinet.ru/~goga/sicp/sicp.pdf.
zltigo
Цитата(Владимир_2010 @ Mar 8 2009, 12:24) *
Седжвик привлекает тем что на первый взгляд книга достойная и на Си, а Си нужен для освоения микроконтроллеров.

Вы английский, как, по учебникам изучать предпочитаете, или по анголоязычным комментариям шекспироведов к Королю Лиру?
Если первое, то причем тут наличие примеров на С или любом другом языке в учебнике по алгоритмам?
Владимир_2010
Вначале любой язык предпочитаю изучать через примеры. От простого к сложному.
И любую новую дисциплину только через примеры и опять же от простого к сложному. Спасибо за ссылку на K@R.
zltigo
Цитата(Владимир_2010 @ Mar 8 2009, 13:07) *
Вначале любой язык предпочитаю изучать через примеры.

Совершенно не эффективный путь для ВЗРОСЛЫХ людей имеющих за спиной опыт получения хотя-бы приличного школьного образования sad.gif. Что-то вроде попыток приготовления блюд по рецептам из отрывного календаря с последующей заливкой получившегося "майонезом" из ближайшего гастронома.
Herz
Вот, пользуюсь, как справочником. О "художественной" ценности судить не стану - не имею права... Как и о том, с каких книг правильно начинать обучение программированию. Но именно в практике работы с МК мне помогает больше, чем "библия" Кернигана и Ритчи. Может, исключительно из удобного HTML-представления. rolleyes.gif
zltigo
Цитата(Herz @ Mar 8 2009, 14:48) *

Типа "методичка" для студентов всяких разных специальностей - прочитать, сдать зачет и забыть sad.gif. Такого типа методичек в интернете довольно много. Из "справочников" в свое время активно пользовал СЭВ-овский стандарт языка - очень неплохо был написан и строго, и нюансировка компиляторов присутствовала, да и те-же примеры для неочевидных вещей были со вкусом подобраны и растолкованы.
sergeeff
Цитата(Herz @ Mar 8 2009, 14:48) *
Вот, пользуюсь, как справочником. О "художественной" ценности судить не стану - не имею права... Как и о том, с каких книг правильно начинать обучение программированию. Но именно в практике работы с МК мне помогает больше, чем "библия" Кернигана и Ритчи. Может, исключительно из удобного HTML-представления. rolleyes.gif


Что-то меня сильно настораживают книги, в которых используются термины типа "инициатор", или несколькими строками ниже объявленная переменная:
const long megabute = (1024 * 1024);

Наверное в Тамбове народ что-то считает в мегабутах?
DpInRock
Присоединяюсь к Герцу. K&R - мало полезен. Более полезен даже не справочник, а маленьких листочек, на котором выписаны примеры ходовых конструкций. For, while, if else, ++, --, да примеры оформления функций. Языком Си не пользуюсь, а использую его. Как замену ассемблеру.
А для реальных задач в микроконтроллерах обычно возникает много разных проблем, что добавлять побочные эффекты самого Си не имеет смысла. Разве что ты - тащишься от процесса именно программирования. Я - не тащусь.
zltigo
Цитата(DpInRock @ Mar 8 2009, 15:52) *
в микроконтроллерах обычно возникает много разных проблем....

Ну если "программировать" по шпаргалке сделанной из чего-нибудь типа поминаемого курса (не важно C, ASM, ....), то конечно "проблем" будет действительно "много и разных" smile.gif Только это будет следствием небрежения.
sergeeff
Цитата(DpInRock @ Mar 8 2009, 15:52) *
Присоединяюсь к Герцу. K&R - мало полезен. Более полезен даже не справочник, а маленьких листочек, на котором выписаны примеры ходовых конструкций. For, while, if else, ++, --, да примеры оформления функций. Языком Си не пользуюсь, а использую его. Как замену ассемблеру.
А для реальных задач в микроконтроллерах обычно возникает много разных проблем, что добавлять побочные эффекты самого Си не имеет смысла. Разве что ты - тащишься от процесса именно программирования. Я - не тащусь.


Так в том то и прелесть С, что "ходовых инструкций" меньше десятка.
zltigo
Цитата(sergeeff @ Mar 8 2009, 16:25) *
Так в том то и прелесть С, что "ходовых инструкций" меньше десятка.

Словарь "Эллочки-Людоедки" составлял, согласно Ильфу с Петровым, 30 слов, но ими она могла выразить практически любую свою мысль. Вопрос только в том, владелала-ли Эллочка русским языком и насколько ценны ее мысли?
DpInRock
Чтобы научиться ездить на автомобиле нужно читать теорию двигателей ВС? Нет. Нужна маленькая шпаргалка.

Так вот, чтобы топикастер начал программировать контроллеры совсем необязательно вообще знать Си. Вот я его не знаю. Хотя написал на нем пару десятков программ (у многих из вас дома и на работе устройства стоят с моими программами). Не в том смысле, что я круче бублика, а что на самом деле можно так делать. А если уж интерес будет - то можно и книжку почитать. Разумеется.

А если что-то большое программировать (чтоб код был под сотню К), то да. Тут надо книжку таки почитать. Но вопрос стоит в программировании контроллеров класса мега48.
Владимир_2010
В том то и вопрос – знаю только базу for, while, else, if, switch, как объявить функцию. Как Элочка Людоедка. Программировал на matlab различные алгоритмы ориентированные на математическое моделирование, прикладную математику – база и тут такая же. Но испытываю постоянный дискомфорт от того что мелькают незнакомые конструкции Си. Кроме того все время мучает мысль и совесть что код, алгоритм написал не оптимально, что можно меньше по объему, если применить какие-нибудь другие функции и что бы быстрее работал. Вот и закрадывается мысль что может потратить некоторое время на основы и азы, а уж потом щупать микроктнроллеры. Хотя с другой стороны изучать Си без привязке к микроконтроллерам не интересно. Если бы хотя бы в книге было много математики, различных нестандартных алгоритмов + Си – дак так хоть читать интересно, а просто Си с примитивными, разрозненными примерами – тоска.
Думаю все таки поставить Borland C++ Builder и проштудировать K@R, все таки классика.
_Pasha
Цитата(Владимир_2010 @ Mar 8 2009, 18:30) *
Но испытываю постоянный дискомфорт от того что мелькают незнакомые конструкции Си.

Кстати, Си-подобный язык матлаба - это ужас, вызывающий рвоту. Концептуально. 
Herz
Цитата(zltigo @ Mar 8 2009, 14:27) *
Типа "методичка" для студентов всяких разных специальностей - прочитать, сдать зачет и забыть sad.gif. Такого типа методичек в интернете довольно много.

Да, справедливо. Но поскольку программированием пока приходится заниматься между делом и непрофессионально - почти хватает. Когда (редко) возникает нужда разобраться глубже - беру другие источники. Вот вырасту, стану писать серьёзные программы - тогда и за книжки взрослые засяду... rolleyes.gif
Цитата
Из "справочников" в свое время активно пользовал СЭВ-овский стандарт языка - очень неплохо был написан и строго, и нюансировка компиляторов присутствовала, да и те-же примеры для неочевидных вещей были со вкусом подобраны и растолкованы.
Так, может, есть в сети?


Цитата(Владимир_2010 @ Mar 8 2009, 17:30) *
Хотя с другой стороны изучать Си без привязке к микроконтроллерам не интересно.

Думаю все таки поставить Borland C++ Builder и проштудировать K@R, все таки классика.

Нелогично, ИМХО. К железу надо ближе... biggrin.gif
zltigo
Цитата(Владимир_2010 @ Mar 8 2009, 18:30) *
Думаю все таки поставить Borland C++ Builder...

Ни в коем случае - это слишком "самодельная" реализация C sad.gif. Традиция у борландовцев такая. Возьмите GCC (на нем и дальше,возможно, жить будете), ну или Watcom. Ну или сразу - MVC.... Но не борланд.


Цитата(Herz @ Mar 8 2009, 20:41) *
Так, может, есть в сети?

Не знаю sad.gif это было издание где-то 90-го года. Выглядел он стандартно для методических материалов и международных стандартов издаваемых в то время - большой формат A4, мягкая обложка вишневого цвета, клеевой переплет. Было два экземпляра - могу поискать останки одного из них..... Пока не нашел, но два подобных издания нашел - это издания "Международного центра научной и технической информации" серия "Методические материалы и документация по пакетам прикладных программ".

Цитата(DpInRock @ Mar 8 2009, 17:53) *
Так вот, чтобы топикастер начал программировать контроллеры совсем необязательно вообще знать Си.

Ну,ну sad.gif 95% процентов исходников из интернету так и написаны, но не вижу причин для гордости и для приумножении такого "добра".
Владимир_2010
Да уж, все еще более усложняется и удаляется от железяк sad.gif . Если сейчас ставить, например GCC, придется тогда не c K@R упражняться, а решать другие вопросы: где скачать (хотя вроде бы с этим проблем не должно быть, т.к. free), как запустить, как освоить программу, как скомпилировать, как в ней производить отладку, где взять книгу по GCC... А Borland C++ Builder каждый второй прохожий на улице знает, да и книг с картинками для самообучения навалом. Borland не поддерживает что ли ANSI C изложенный в книге K@R?! Мне же по идее надо только язык почувствовать, почитать K@R, поделать примеры. Дальше буду опять mega8 мучить.
Что за MVC и как он может помочь новичку в освоении микроконтроллеров и языка Си?! GCC я хотя бы буквы такие знаю (вижу при запуске avrstudio AVR GCC).

Отвлекшись и замечтавшись, наткнулся на книгу «Saul A. Teukolsky et al., Numerical Recipes in C». Есть ли что-нибудь подобное на русском?! Просто прикладная математика на Си с примерами – это уже не скучно будет читать даже на досуге, перед сном.
zltigo
Цитата(Владимир_2010 @ Mar 8 2009, 22:58) *
Что за MVC и как он может помочь новичку в освоении микроконтроллеров и языка Си?!

Microsoft Visual С - просто комплексное решение - по любому разумнее и стандартнее борлондячего творения.
Цитата
как запустить, как освоить программу, как скомпилировать, как

по любому этим придется заниматься.
_Pasha
Цитата(Владимир_2010 @ Mar 8 2009, 22:58) *
Мне же по идее надо только язык почувствовать, почитать K@R, поделать примеры. Дальше буду опять mega8 мучить.


Проблема решается в два клика:


1. Ставите WinAVR-20080512

2. AVRstudio 4.хх

Изучайте! В студии встроен GCC-плагин, с которым можно пробовать почти все без напрягов.
singlskv
Цитата(Владимир_2010 @ Mar 8 2009, 18:30) *
В том то и вопрос – знаю только базу for, while, else, if, switch, как объявить функцию. Как Элочка Людоедка. Но испытываю постоянный дискомфорт от того что мелькают незнакомые конструкции Си. Кроме того все время мучает мысль и совесть что код, алгоритм написал не оптимально, что можно меньше по объему, если применить какие-нибудь другие функции и что бы быстрее работал. Вот и закрадывается мысль что может потратить некоторое время на основы и азы, а уж потом щупать микроктнроллеры.
Ну все-таки без K&R никуда... но и пробовать ведь можно на симуляторе для микроконтроллера ?
Код не оптимальный ? Дык вроде здесь можно найти уйму примеров как из неоптимального делают оптимальный...
просто задавайте вопросы если где чего непонятно...
SergeyTT
Цитата(Владимир_2010 @ Mar 8 2009, 17:30) *
В том то и вопрос – знаю только базу for, while, else, if, switch, как объявить функцию.
[skipped]
Но испытываю постоянный дискомфорт от того что мелькают незнакомые конструкции Си. Кроме того все время мучает мысль и совесть что код, алгоритм написал не оптимально, что можно меньше по объему, если применить какие-нибудь другие функции и что бы быстрее работал.

Осмелюсь посоветовать взять в компанию к K&R аппноты AVR030,AVR035
Цитата(Владимир_2010 @ Mar 8 2009, 17:30) *
Вот и закрадывается мысль что может потратить некоторое время на основы и азы, а уж потом щупать микроктнроллеры. Хотя с другой стороны изучать Си без привязке к микроконтроллерам не интересно.

В этом форуме, в ветках, посвященных AVR есть масса кода и ссылок - читайте, разбирайтесь,программируйте
и отлаживайте свой кристалл. Есть еще, например, www.avrfreaks.net - много всяких несложных вещей, да и при желании в сети можно найти множество рабочего кода на С под АВР и поразбираться в нем.
Цитата(Владимир_2010 @ Mar 8 2009, 17:30) *
Если бы хотя бы в книге было много математики, различных нестандартных алгоритмов + Си – дак так хоть читать интересно, а просто Си с примитивными, разрозненными примерами – тоска.
Думаю все таки поставить Borland C++ Builder и проштудировать K@R, все таки классика.


Ну, если время девать некуда... sad.gif
Владимир_2010
Цитата(Herz @ Mar 8 2009, 16:48) *
Вот, пользуюсь, как справочником. О "художественной" ценности судить не стану - не имею права... Как и о том, с каких книг правильно начинать обучение программированию. Но именно в практике работы с МК мне помогает больше, чем "библия" Кернигана и Ритчи. Может, исключительно из удобного HTML-представления. rolleyes.gif

Библию K@R сейчас нашел в формате chm (http://рапидшаре.com/files/207090745/C_Language.rar.html), а то до этого на компе книга была не OCR в формате djvu . Может быть еще кому-нибудь пригодиться.
Цитата(zltigo @ Mar 8 2009, 17:27) *
Из "справочников" в свое время активно пользовал СЭВ-овский стандарт языка - очень неплохо был написан и строго, и нюансировка компиляторов присутствовала, да и те-же примеры для неочевидных вещей были со вкусом подобраны и растолкованы.

Нельзя ли библиографическую запись более детально и четко определить, что бы поискать в библиотеке по каталогу. Если вещь хорошая и если удастся найти - отсканирую.
А сейчас каким справочником пользуетесь?! Или справочник уже в голове?!
Цитата(DpInRock @ Mar 8 2009, 17:52) *
Присоединяюсь к Герцу. K&R - мало полезен. Более полезен даже не справочник, а маленьких листочек, на котором выписаны примеры ходовых конструкций. For, while, if else, ++, --, да примеры оформления функций. Языком Си не пользуюсь, а использую его.

Встречал нечто подобное в сети в pdf, где на листочке-шпаргалке было выписано и описано все коротенечко. Файл найти не могу.
zltigo
Цитата(Владимир_2010 @ Mar 9 2009, 13:00) *
Нельзя ли библиографическую запись более детально и четко определить...

Нашел где-то в интернете в списках литературы:
Код
Методические материалы и документация по пакетам прикладных программ [Текст] : научное издание / ; Междунар. центр науч. и техн. информации. - М. : МЦНТИ, 1978 -    
      Вып. 67 : Система программирования на языке высокого уровня Си :  / Д. М. Субботин, С. О. Бочков. - 1991. - 270 с.

Цитата
А сейчас каким справочником пользуетесь?! Или справочник уже в голове?!

В голове + у компиляторов хелпы в комплекте неплохие бывают, ну а вообще стандарт С99 языка существует для полных и окончательных разборок
haker_fox
Цитата(DpInRock @ Mar 8 2009, 22:53) *
Нужна маленькая шпаргалка.

Тут вот в чем дело: шпаргалка не научит мыслить, не даст нужную теорию! Т.е. знания будут ограничены 3 - 10 пунктами шпаргалки, а когда возникнет ситуация, в шпаргалке не описанная, что произойдет?
ИМХО теорию нужно учить сразу. Пусть не в полном объеме (да это и не возможно), но разумными порациями и теорию правильную! Чтобы уже на самом начальном этапе формировался прочный фундамент знаний.


Цитата(zltigo @ Mar 9 2009, 18:41) *
В голове + у компиляторов хелпы в комплекте неплохие бывают, ну а вообще стандарт С99 языка существует для полных и окончательных разборок

А что бы Вы могли порекомендовать для чтения по Си++? Как я понимаю, Си уже мало используется...
zltigo
Цитата(haker_fox @ Mar 9 2009, 17:18) *
А что бы Вы могли порекомендовать для чтения по Си++?

Аллах его ведает sad.gif тот-же первоисточник С++ от Бьерна Страуструпа написан по сравнению с творением профессионального технического писателя Кернигана по С просто ужасно sad.gif
Цитата
Как я понимаю, Си уже мало используется...

С чего-бы это вдруг smile.gif
haker_fox
Цитата(zltigo @ Mar 9 2009, 22:24) *
Аллах его ведает sad.gif тот-же первоисточник С++ от Бьерна Страуструпа написан по сравнению с творением профессионального технического писателя Кернигана по С просто ужасно sad.gif

Ну ладно... Скачал книгу, что Вы рекомендовали топикстартеру (именно второе издание), может быть свой уровень подниму хочь чуть.
Цитата(zltigo @ Mar 9 2009, 22:24) *
С чего-бы это вдруг smile.gif

Может быть мне и память изменила, но где-то давно я видел на это форуме информацию, что компиляторы Си уже не развиваются. Из этого сделал вывод (в большей степени благодаря "удобствам и сервисам" Си++). Выходит, что вывод неверный.

А если не секрет, что Вы используете больше? Си или Си++?
zltigo
Цитата(haker_fox @ Mar 9 2009, 17:49) *
А если не секрет, что Вы используете больше? Си или Си++?

Начинал и довольно долго писал на C++, затем из-за отсутствия компиляторов пререполз на C, потом на "почти C" - под плюсовый компилятор. Сейчас практически только на C.
haker_fox
Цитата(zltigo @ Mar 9 2009, 23:45) *
Начинал и довольно долго писал на C++, затем из-за отсутствия компиляторов пререполз на C, потом на "почти C" - под плюсовый компилятор. Сейчас практически только на C.

Но ведь сейчас-то Си++ компиляторы есть. Чем можно объяснить Ваш случай в настоящее время? Не сочтите за издевку (или что-нибудь в этом роде), это действительно интерес для меня!
A. Fig Lee
K&R - я бы не заморачивался его читать.
Он простой как 3 копейки, ничего особенного, ето не Страуструп.
Чето надо выяснить - можно заглянуть.
Ну или сразу в стандарт, ну там сложней разбиратся.
Изучал бы по примерам.
Поставил задачу - и решал, искал бы решения в интернете.

Цитата(haker_fox @ Mar 9 2009, 13:17) *
Но ведь сейчас-то Си++ компиляторы есть. Чем можно объяснить Ваш случай в настоящее время? Не сочтите за издевку (или что-нибудь в этом роде), это действительно интерес для меня!


смотря на что. на PIC-и думаю нет. да и памяти C++ жрет больше.
На никроконтроллерах с 64 к и меньше нет особого смысла C++ пользовать - не развернутся
zltigo
Цитата(haker_fox @ Mar 9 2009, 20:17) *
Но ведь сейчас-то Си++ компиляторы есть. Чем можно объяснить Ваш случай в настоящее время? Не сочтите за издевку (или что-нибудь в этом роде), это действительно интерес для меня!

Так это было в прошлое время smile.gif. Начинал с борландовского компилятора - первое творение на плбсах - на спор быстренько написал оконную библиотеку выигравшую соревнование у аналогичной сишной - уж больно классно все ложилось на плюсы, потом начались усовершенствования и с учетом накопления опыта удалось на С и ASM сделать круче smile.gif. Потом стало возможным писать на C, но не на C++ не только для PC, но и контроллеров. Первые операционки на смеси C/ASM..... Как-то отошел от C++, много пришлось на ASM писать, замаматерел, закостенел.... Писишные проекты традиционно пишу под C++ компилятор, но с минимальным использованием плюсов, остальное на C. "Ручками" на С при понимании того, что и как делать реализуются и плюсовые приемы.

Цитата(A. Fig Lee @ Mar 9 2009, 20:39) *
да и памяти C++ жрет больше.

В принципе нет smile.gif
haker_fox
Цитата(zltigo @ Mar 10 2009, 02:31) *
"Ручками" на С при понимании того, что и как делать реализуются и плюсовые приемы.

В общем, это уже дело привычки и вкуса. Причем привычка и вкус базируются на абсолютном понимании того, что делается.


Цитата(A. Fig Lee @ Mar 10 2009, 01:39) *
да и памяти C++ жрет больше.

Вот тут уже обсуждалось такое типичное заблуждение.
777777
Цитата(DpInRock @ Mar 8 2009, 15:52) *
Присоединяюсь к Герцу. K&R - мало полезен. Более полезен даже не справочник, а маленьких листочек, на котором выписаны примеры ходовых конструкций. For, while, if else, ++, --, да примеры оформления функций.

Вот с этим категорически не могу согласиться. Учебник полезен тем, что он не только описывает синтаксис операторов, но и их использование, показывает такие способы, которые просто не пришли бы в голову при формальном изучении операторов. С таким же успехом можно учить иностранный язык, пользуясь только словарем. Такой подход особенно вреден тем, кто уже знаком с паскалем - увидев общее например в операторе for он будет думать, что в Си все так же как и в паскале - переменная цикла может быть только целой, и меняться только на единицу, и заканчиваться при достижении заданного числового значения. Без примеров использования он просто не догадается о необычайной гибкости языка.
Цитата(DpInRock @ Mar 8 2009, 15:52) *
Языком Си не пользуюсь, а использую его. Как замену ассемблеру.

В таком случае вам сначала не мешало бы выучить тонкости Си, прежде чем давать советы. А то получается как с тем Карузо - фиговый певец, я слышал, мне Рабинович напел.
Harvester
Цитата(zltigo @ Mar 9 2009, 13:41) *
Нашел где-то в интернете в списках литературы:
Код
Методические материалы и документация по пакетам прикладных программ [Текст] : научное издание /; Междунар. центр науч. и техн. информации. - М. : МЦНТИ, 1978 -    
      Вып. 67 : Система программирования на языке высокого уровня Си :  / Д. М. Субботин, С. О. Бочков. - 1991. - 270 с.


Полностью присоединяюсь. По большому счету я изучил язык по 2-м источникам: K&R и указанной книге. Остальные - для изучения разных "рюшечек", присущих конкретным реализациям.
DRUID3
Владимир_2010, у одного из посетителей этого форума есть очень замечательный лозунг "Правильный путь один - СВОЙ" biggrin.gif ... Потому меньше тратьте времени на чтение советов с какой книги начать - а больше на "начинание" - изучение собственно C(C++)...
Владимир_2010
Цитата(777777 @ Mar 10 2009, 09:34) *
...Учебник полезен тем, что он не только описывает синтаксис операторов, но и их использование, показывает такие способы, которые просто не пришли бы в голову при формальном изучении операторов. С таким же успехом можно учить иностранный язык, пользуясь только словарем...Без примеров использования он просто не догадается о необычайной гибкости языка.

Согласен. Мне (думаю и любому другому начинающему) после прочтения K@R хотелось бы посмотреть как делается для микроконтроллеров, с подробными комментариями. Наверняка ведь изучая подобные примеры для микроконтроллеров, возможно встретились бы способы, которые просто не пришли в голову при изучении только K@R. С учетом того что
Цитата(zltigo @ Mar 8 2009, 12:36) *
...Только имейте ввиду, что не менее, чем в 95 случаев из 100 это будет исходник уровня "моя первая программа на C" sad.gif и скорее "это" может служить учебным пособием как НЕ надо писать. Посему относиться к найденному в интернете надо более, чем критически...

и хотелось бы серьезную прикладную книгу по микроконтроллерам на Си с примерами, а не изучать разрозненные примерчики из сети. Книгу по Микроконтроллерам + примеры на Си (так сказать два в одном), но не такую
Цитата(zltigo @ Mar 8 2009, 12:36) *
..."Книги по микроконтролерам" это или откровенное дерьмо, или это действительно книги по Микроконтроллерам а не по изучению языков и раcсматривать "примеры" из таких книг следует так-же, как и пример из букваря "Мама мыла раму" - не более...

Вот наткнулся на книгу «Richard H. Barnett, et al. Embedded C Programming And The Atmel AVR.» (h**p://www.freebookspot.ws/Comments.aspx?Element_ID=11159). Только книга - переведена на китайский! На английском уже есть и второе издание – но не могу найти. Может кто-нибудь встречал нечто подобное хотя бы на английском?!
Цитата(DRUID3 @ Mar 10 2009, 12:22) *
Владимир_2010, у одного из посетителей этого форума есть очень замечательный лозунг "Правильный путь один - СВОЙ" biggrin.gif ... Потому меньше тратьте времени на чтение советов с какой книги начать - а больше на "начинание" - изучение собственно C(C++)...

Хороший лозунг, но есть и другой: при правильном подборе литературы, даже в сортире можно получить неплохое образование. Надо совмещать два этих подхода.
sergeeff
Цитата(Владимир_2010 @ Mar 10 2009, 15:34) *
даже в сортире можно получить неплохое образование


В сортире лучше заниматься тем делом, за которым туда (в сортир) пришел.
A. Fig Lee
Цитата(haker_fox @ Mar 9 2009, 22:17) *
Вот тут уже обсуждалось такое типичное заблуждение.


и де там обсуждается "типичное заблуждение" ?
расходы как минимум на конструкторы/деструкторы, виртуальную таблицу, ну и все то, что приносит с собой дженерализейшн.

С Торвальдом я согласен в конкретном случае по ссылке, за исключением СТЛ - тут он пургу гонит, хотя он вообще оторвался от народа и пургу часто гонит.
777777
Цитата(A. Fig Lee @ Mar 11 2009, 02:39) *
и де там обсуждается "типичное заблуждение" ?
расходы как минимум на конструкторы/деструкторы, виртуальную таблицу, ну и все то, что приносит с собой дженерализейшн.

Никаких лишних расходов там нет, то, что делают конструкторы/деструкторы, нужно делать в сишной программе, но там ты можешь забыть, а в С++ компилятор сделает это автоматически. Если виртуальный функций нет, то и виртуальной таблицы не будет. Опять же, если в сишной программе ты будешь делать что-нибудь наподобие перехода по таблице указателей, то это фактически то же самое с теми же расходами.
haker_fox
Цитата(A. Fig Lee @ Mar 11 2009, 07:39) *
и де там обсуждается "типичное заблуждение" ?
расходы как минимум на конструкторы/деструкторы, виртуальную таблицу, ну и все то, что приносит с собой дженерализейшн.

Еще раз повторюсь: даже если небольшой оверхед и есть, это мне не помешало поместить в ATmega16 ОСь + прикладную программу. Все на Си++. Сейчас занимаюсь реалтаймовским приложением. Тоже на Си++, без ОСи (она там просто не нужна). Для ATmega168. Я в свое время также и про Си считал. Только на ассемблере работал. Пока не попробывал. Удобств было... словами не описать.
vik0
Цитата(A. Fig Lee @ Mar 11 2009, 01:39) *
расходы как минимум на конструкторы/деструкторы, виртуальную таблицу, ну и все то, что приносит с собой дженерализейшн.

У Страуструпа есть весьма интересная книжка - "Дизайн и эволюция языка С++". Не читали? Рекомендую. Одна из ключевых идей книги - "вы не платите за то, что не используете".
Не используете виртуальные функции - не будет никакой таблицы. Не инициализируете члены класса - не будет никаких лишних конструкторов (default ctor, инициализирующий члены default значениями, нормальный компилятор успешно соптимизирует).
singlskv
Цитата(vik0 @ Mar 11 2009, 21:12) *
У Страуструпа есть весьма интересная книжка - "Дизайн и эволюция языка С++". Не читали? Рекомендую. Одна из ключевых идей книги - "вы не платите за то, что не используете".
Очень правильная "в принципе" идея, только в реальности С++ слегка провоцирует на дополнительные
накладные расходы, предоставляя взамен кучу не всегда нужных фич.
А вот людей которые могут не купиться на эти ненужные вещи не так уж и много...
vik0
Цитата(singlskv @ Mar 11 2009, 22:33) *
Очень правильная "в принципе" идея, только в реальности С++ слегка провоцирует на дополнительные
накладные расходы, предоставляя взамен кучу не всегда нужных фич.
А вот людей которые могут не купиться на эти ненужные вещи не так уж и много...

Согласен. Все упирается в поиск баланса - чем вы готовы пожертвовать ради упрощения процесса разработки. Правда это подразумевает неплохое (как минимум) знание языка. С++ - сложный инструмент. А для эффективного использования любого сложного инструмента необходимо его хорошее знание и понимание.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.