C ++ или С

Тема в разделе "Микроконтроллеры AVR", создана пользователем Romjke76, 2 авг 2016.

  1. Romjke76

    Romjke76 Нуб

    Добрый вечер уважаемые члены форума хотелось бы услышать мнение на один беспокоящий вопрос:

    С недавних пор заинтересовался программированием Arduino, но поскольку не имею в программировании

    вообще никакого опыта мучаюсь одним вопросом на каком всё таки языке чаще всего программируют

    Arduino - С или С ++ я это к тому, что с какого языка мне лучше начинать, а то как я понял эти два языка не малым отличаются один процедурный, а второй объектно-ориентированный? Прошу вас внести ясности в

    вопрос.
     
  2. ANV

    ANV Гуру

    Сейчас меня закидают помидорами за фразу что С++ это надстройка над Си, но тем не менее. Сначала прочитать книжку Керниган и Ритчи "Язык Си", а потом уже переходить к С++
    Эти двое - бородатые труЪ отцы языка Си.
    А в Ардуино используется как чистый Си, так и плюсы
     
    Alex Zest нравится это.
  3. Romjke76

    Romjke76 Нуб

    Вообщем я вас услышал вы ратуйте за оба языка в порядке С потом С ++, но не ясно какую книгу или курс взять, да так чтобы информация полученная в книге по С не повторялась в книге по С ++, так сказать книгу чисто по С ++ с учётом того, что С уже освоен.
     
  4. Unixon

    Unixon Оракул Модератор

    Это будет нечитаемое нечто. Проще рассматривать C++ целиком и по ходу делать замечания, что "а вот в C это не так" и "а вот этого в C нет".
     
  5. ANV

    ANV Гуру

    По чистому Си альтернативы озвученной книги нет, если не искать варианты где глава будет начинаться словами "сегодня, дорогие мои юные читатели, мы поговорим про структуры"
     
  6. Romjke76

    Romjke76 Нуб

    Ну хорошо, а годные книги по С ++ какие например или что читали лично вы?
     
  7. CryNET

    CryNET Гик

    Если признаться честно, то конкретно ООП в С++ я не мог сразу понять, писал на нем чисто как будто на Си - без всяких классов и прочих плюшек ООП.
    ООП я начал изучать и понимать с C#, не знаю почему, но он для меня оказался легким + среда удобная под него - Visual Studio; сразу же компилишь и получаешь результат, тут же поправил что-то, breakpoint'ами побаловался и посмотрел где что и как происходит и т.д. и т.п.

    Поэтому мое "имхо" - начинать изучать ООП, да и само программирование с C#, т.к. достаточно легкий Си-подобный язык и в самый раз для понимания что к чему.
    + Огромная масса источников ( не считая оф.сайт-справочник msdn ) и видео-источников.

    //А как надоест вам WinForms, то переходите на Qt, там уже С++ ;)
     
    Последнее редактирование: 3 авг 2016
    БАРМАТОГРАФ нравится это.
  8. Romjke76

    Romjke76 Нуб

    Тему можно закрыть всё выяснено!
     
  9. Мурад

    Мурад Нерд

    Лучше c++ изучать, там по ходу и си изучиш, и ООП (обектно ориентировочное программирование).я учусь по книге Г.Шилда С++ руководство для начинающих. Пишу программы для компа, но применяю изученное и в arduino
     
    Последнее редактирование: 23 мар 2017
  10. Oled

    Oled Нерд

    Вот конспект лекций, который можно было бы назвать «Практический курс программирования на Си» — конспект востребован и широко используется как школьниками, так и выпускниками ВУЗов.
    http://kpolyakov.spb.ru/school/c.htm
     
  11. Почитай Васильев А. Н. Программирование на С++ с задачами и примерами. Очень хорошая книга.
     
  12. mcureenab

    mcureenab Гуру


    Бьерн Страуструп. Язык программирования С++.

    Если кодить не только для себя с прицелом на длительный срок, стоит сверяться со стандартом.

    Если хочется плюшек, посмотрите справочник по компилятору.
     
  13. Kelvin

    Kelvin Гик

    Для программирования ардуино особых знаний не надо, хватит начальных знаний C и активного пользования справочником. (Он есть в Arduino IDE, вкладка помощь). Ардуинка разрабатывалась для того, чтоб студенты без особых знаний программирования и электроники могли создавать проекты.
    Если говорить о программировании микроконтроллеров - это ассемблер или C. Хотя я ничего кроме AVR не изучал, по этому отвечаю только за МК AVR. Начни изучение с C, если будешь заниматься разными проектами. Ps. Хоть ты и закрыл тему, но это знать тебе будет полезно, выбор языка зависит от того, чем ты будешь заниматься. Веб-разработка: JavaScript и т.д. Для начала тебе нужно выучить базовые знания программирования, что такое алгоритмы и т.д. Тебе нужны грамотные книжки, где описывается всё с нуля. А не только особенности языка. Если ты все что я написал знаешь, то извиняюсь.
     
    Последнее редактирование: 8 июл 2017
  14. railmisaka

    railmisaka Гик

    Хоть тема и старая. вставлю свои 5 копеек.

    C и C++ совершенно друг на друга не похожи во всем, кроме. возможно, синтаксиса.
    И учиться писать на них надо отдельно. Как верно заметили выше - парадигмы разные.

    Книгу Кернигана и Ричи читал давно, так что могу ошибаться на ее счет. Но это вроде больше книга по самому языку. Она не научить программировать. Программирование это не просто знание языка. Нужно еще знать как решаются те или иные задачи, типичные приемы. Хотя, конечно, по первости можно везде писать свои велосипеды.

    Опять таки, давно дело было, но есть такая штука "Ворожцов А. В., Винокуров Н. А. Алгоритмы: Построение, анализ и реализация на языке программирования Си". Насколько я помню, так есть объяснения структур данных и алгоритмов. Это как раз то, что нужно.

    А к C++ я бы советовал переходить только если нравится писать код, и есть ощущение, что писать на си слишком.. эм.. муторно. Т.е. вы не пытаетесь выжать крохи производительности из железки, но все равно муторно. Вот тогда вам может помочь C++.
     
  15. Unixon

    Unixon Оракул Модератор

    Не соглашусь. C++ хоть и очень сильно расширен, вплоть до "другого языка", в том подмножестве языка, где они перекрываются, писать в синтаксисе C++ гораздо удобнее. Поэтому, я бы скорее C не рассматривал вообще как отдельный язык, а предложил использовать только C++, но использовать из него только тот набор инструментов, который ч-к хорошо понимает и умеет пользоваться. По началу это может вполне укладываться в возможности простого C, только с более вкусным синтаксисом.
     
    ИгорьК нравится это.
  16. railmisaka

    railmisaka Гик

    Что-то мне подсказывает, что ваш хлеб это не программирование на C++.

    Вы имеете ввиду особенности типа объявления переменной в блоке? (for(int i;;)) Или оператор new?
    Да, вы можете писать на C++ процедурном стиле. Только если не пишете классов, считайте вы пишете на C. используя C++ как синтаксический сахар. Это не программирование на C++ и для этого не нужно изучать особенности генерации шаблонных классов или высокоуровневые паттерны проектирования.

    И опять таки, знание синтаксис != умение программировать. Выучить синтаксис - пустяковое дело. А вот понять что с ним делать дальше зачастую не так просто.
     
  17. Unixon

    Unixon Оракул Модератор

    Я же говорю, все по необходимости. Если некоторую задачу проще решить в процедурном стиле, накатывать алгоритмы на шаблоны нет необходимости. Но зачем при этом менять язык? С другой стороны, если задача сложная и требует применения всего арсенала средств C++, то неплохо бы и их знать заранее, и проектированием архитектуры приложения владеть на соответствующем уровне тоже.
     
  18. railmisaka

    railmisaka Гик

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

    А про плюсы/арсеналы/архитектуры.. это просто другая песня. Нужны годы практики (причем не Ардуино - потому что Ардуино слишком ограничен) чтобы это освоить, да и для другого это все. А базовые принципы Си и программирования можно освоить за месяц.
    Разве что кто-нибудь напишет книгу "Программирование Arduino на языке C++. Подходы и принципы.". Возможно, такую книгу и можно было бы прочитать. Я бы прочитал хотя бы интереса ради.

    И вот вам еще один момент. Если вы не будете знать о C++, вы будете писать код на чистом Си, то если вам вдруг понадобится код на чистом Си, вы с этим справитесь. А я думаю, по серьезному, микропрограммы все же не пишут на C++.
     
  19. Unixon

    Unixon Оракул Модератор

    Ну я то для своих задач пишу на плюсах совсем не под микроконтроллеры, там и всякие выверты с классами есть и шаблоны отчасти, а где-то и паттерны проглядывают. Но при всем при том предпочитаю более сложные сущности в код не тащить без особой на то необходимости, чтобы не усложнять его. А на чем писать под МК - вообще все равно, лишь бы писалось быстро и правильно и компактно по ресурсам транслировалось потом в машкод.
     
  20. railmisaka

    railmisaka Гик

    Мне казалось, что ветка именно про программирование МК.

    Как раз, если нужно минимизировать издержки то лучше Си. А местами лучше даже использовать компиляторы чистого Си. А если писать под такой компилятор, то нужно, во-первых, точно знать что относится к синтаксису какого языка (плюс, если есть и там и там, то в чем отличия), во-вторых, представлять как писать программы в парадигме языка.

    Когда то я думал похожим образом. Просто писал какой-то код, иногда, может быть, классы. Но не понимал, в чем разница С/С++, кроме как malloc/new (утрирую, конечно).
    Если хотите понять, что такое ООП, именно ООП без примеси процедурщины, попробуйте писать на других языках, типа Java/C# (в Java вообще нет функций. совсем). Попробуйте также писать на чистом Си (без классов). Попробуйте писать на ассемблере (ну хотя бы чуть чуть).
    Может быть после этого вы больше начнете любить чистоту и использовать именно тот инструмент, что нужно. И не будете забивать гвозди микроскопом.

    Короче, мое имхо, если не пишете классов, то не используйте плюсовых фишек вовсе. И лучше вообще ничего не знать про плюсы, чем использовать только как сахар в чашке с Си.