Ответить
  • 2261156 Neophyte PosterАвтор темы
    офлайн
    2261156 Neophyte Poster Автор темы

    0

    8 лет на сайте
    пользователь #2261156

    Профиль
    Написать сообщение

    0
    # 16 июля 2017 13:04

    Ищу напарника для совместного изучения Си.

    Недавно решил изучать язык Си. Я не программист, просто юзер, который интересуется предметом. Хочу разнообразить обучение, сделать его интереснее и эффективнее, научится программировать в коллективе. Профессия, возраст, пол, национальность - никакого значения не имеют. Уровень знания языка Си - несущественен (все-таки нужен напарник, а не учитель).

  • Compiller Senior Member
    офлайн
    Compiller Senior Member

    10909

    22 года на сайте
    пользователь #10514

    Профиль
    Написать сообщение

    10909
    # 17 июля 2017 11:29

    Вы бы русский для начала выучили - Здесь, а не сдесь.

    IT сантехник-ассенизатор
  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 22 июля 2017 20:35

    Вместо поисков напарника, давайте просто откроем здесь ветку вопросов-ответов по языку Си. Трафик будет еще тот... )))

    Et si tu tombes 7 fois Toujours se relever 8
  • Неизвестный кот Senior Member
    офлайн
    Неизвестный кот Senior Member

    1017

    16 лет на сайте
    пользователь #248351

    Профиль

    1017
    # 22 июля 2017 21:31
    2261156:

    Ищу напарника для совместного изучения Си.

    Язык программирования --- не самоцель... ---- Нужна реальная задача/проблема, которую следует автоматизировать. Постановка задачи определит выбор наиболее подходящего языка...

    ЗЫ А просто так, чтобы побаловаться... ---- С таким же успехом Вы можете Эсперанто изучать.

  • ip-red Senior Member
    офлайн
    ip-red Senior Member

    2437

    13 лет на сайте
    пользователь #746795

    Профиль
    Написать сообщение

    2437
    # 27 мая 2018 11:13

    Tau_0, а чем плох язык Эсперанто? Живой язык, даже нигер поймёт, и все же лучше чем целыми днями пытаться стать «прогерами» которых пруд пруди

    Skarbonka.eu
  • Махасаматман Member
    офлайн
    Махасаматман Member

    274

    13 лет на сайте
    пользователь #721530

    Профиль
    Написать сообщение

    274
    # 27 мая 2018 13:37

    Чистый Си? Интересуетесь микроконтроллерами? xD

  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 27 мая 2018 18:51
    Махасаматман:

    Чистый Си? Интересуетесь микроконтроллерами? xD

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

    Et si tu tombes 7 fois Toujours se relever 8
  • Махасаматман Member
    офлайн
    Махасаматман Member

    274

    13 лет на сайте
    пользователь #721530

    Профиль
    Написать сообщение

    274
    # 27 мая 2018 20:47 Редактировалось Махасаматман, 1 раз.

    Чистый Си — это я имел в виду с без плюсов. Который да, я знаю, тоже в микроконтроллерах можно юзать.
    И, честно говоря, мне сложно себе представить применение С wothout pluses кроме как в низкоуровневом программировании. Имеется в виду современное время, давайте не будем про историю, как вы, Корбен, очень любите.
    p.s. Микроконтроллеры, это про микроконтроллеры (MCU), а не про SoC. Там Си выделяется, однако.

  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 27 мая 2018 22:33 Редактировалось Korben_Dallas, 4 раз(а).

    Под "чистым Си" я привык понимать именно педантичный стандартный Си - ISO С - именно так как он описан в стандарте языка. То есть без расширений, примочек и прочих студенческих выдумок, реализованных в конкретных компиляторах. В этом и заключается "чистота" языка - именно сам язык Си, а не Си-подобный "расширенный" и "улучшенный" суржик от GCC, MS или кого то еще.

    Применением "чистого Си" для низкоуровневого программирования ограничиться не получится: на стыке аппаратуры и языка всегда возникает необходимость завязки на особенности конкретной платформы. А это уже выход за пределы "чистого Си".

    Продукты моей компании - прикладное ПО из области САПР СБИС (ака EDA) в самое что ни на есть "современное время", написаны на чистом Си. И это совсем не низкоуровневое программирование. Модули на С++ и у нас появляются, но скорее где-то во front end.

    Et si tu tombes 7 fois Toujours se relever 8
  • Неизвестный кот Neophyte Poster
    офлайн
    Неизвестный кот Neophyte Poster

    0


    пользователь #6965

    Профиль

    0
    # 28 мая 2018 00:57
    Korben_Dallas:

    Применением "чистого Си" для низкоуровневого программирования ограничиться не получится: на стыке аппаратуры и языка всегда возникает необходимость завязки на особенности конкретной платформы. А это уже выход за пределы "чистого Си".

    Завязки под конкретную платформу реализуются с помощью библиотек, написанных на ассемблере, также как и startup код. Чистота языка "С" никак не страдает в данном случае. Конечно вендоры компиляторов добавляют свои расширения - но можно и без них, настолько язык хорош в плане переносимости.

    Добавлено спустя 9 минут 26 секунд

    Махасаматман:

    И, честно говоря, мне сложно себе представить применение С wothout pluses кроме как в низкоуровневом программировании. Имеется в виду современное время, давайте не будем про историю, как вы, Корбен, очень любите.

    Первый пример который пришел в голову - большинство известных мне реализаций протоколов маршрутизации и сетевых стеков используемых в продакшене - только на "C", без плюсов.

  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 28 мая 2018 02:54
    gooblin:

    Korben_Dallas:

    Применением "чистого Си" для низкоуровневого программирования ограничиться не получится: на стыке аппаратуры и языка всегда возникает необходимость завязки на особенности конкретной платформы. А это уже выход за пределы "чистого Си".

    Завязки под конкретную платформу реализуются с помощью библиотек, написанных на ассемблере, также как и startup код. Чистота языка "С" никак не страдает в данном случае. Конечно вендоры компиляторов добавляют свои расширения - но можно и без них, настолько язык хорош в плане переносимости.

    Ну это то, "как должно быть".

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

    Вот эту вакханалию почему-то зачастую называют "чистым си".

    Et si tu tombes 7 fois Toujours se relever 8
  • Неизвестный кот Neophyte Poster
    офлайн
    Неизвестный кот Neophyte Poster

    0


    пользователь #6965

    Профиль

    0
    # 28 мая 2018 08:10
    Korben_Dallas:

    Но по моему опыту в большинстве случаев под неким программированием "на чистом си для микроконтроллеров" подразумевается некая стремная эклектичная манера использования языка в качестве т.наз. "портабельного ассемблера" с полным игнорированием правил контроля соответствия типов, константной корректности и т.п.

    Ну не знаю. Ошибки разрядности, знаковости и преобразования типов по умолчанию в embedded обычно приводят к тому что вся система становиться колом (в лучшем случае идет на перезагрузку по watchdog).

    То есть если для прикладухи это выстрел себе в ногу (segfault например), то для embedded это выстрел в голову.

  • Сергей1734 Senior Member
    офлайн
    Сергей1734 Senior Member

    1112

    20 лет на сайте
    пользователь #56271

    Профиль
    Написать сообщение

    1112
    # 3 июня 2018 21:34

    Ну я как-то решил выучить СИ, чтобы эффективно писать программы для микроконтроллеров. До этого ассемблером баловался, использовал также Дельфи как среду разработки весьма сложных инструментов.
    СИ в итоге пошёл легко, выучил основы за 2 дня, через 2 недели написал на нём учебный проект по эмуляции протокола i2c на МК для радиомодулей и эквалайзеров. Очень понравился язык, и он очень лёгкий.
    Попробовал также Питон - тот же си, только ООП, и нет дурацких скобок и точек с запятыми. Читается ещё проще, случайных ошибок ещё меньше.

    Вильма-102
  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 3 июня 2018 21:38
    Сергей1734:

    СИ в итоге пошёл легко, выучил основы за 2 дня, через 2 недели написал на нём учебный проект по эмуляции протокола i2c на МК для радиомодулей и эквалайзеров. Очень понравился язык, и он очень лёгкий.

    Вот эта последняя фраза говорит о том, что языка-то вы и не выучили.

    Et si tu tombes 7 fois Toujours se relever 8
  • Сергей1734 Senior Member
    офлайн
    Сергей1734 Senior Member

    1112

    20 лет на сайте
    пользователь #56271

    Профиль
    Написать сообщение

    1112
    # 3 июня 2018 21:39 Редактировалось Сергей1734, 1 раз.
    Korben_Dallas:

    Применением "чистого Си" для низкоуровневого программирования ограничиться не получится: на стыке аппаратуры и языка всегда возникает необходимость завязки на особенности конкретной платформы. А это уже выход за пределы "чистого Си".

    Даю Вам честное слово, что в моей программе для микроконтроллеров всё, что касается инициализации самого контроллера, его периферии и работы с ним, написано на чистом СИ. Однако, в исходном тексте есть две строчки на ассемблере - это команды sleep и nop. Так проще было.

    Вильма-102
  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 3 июня 2018 21:48
    Сергей1734:

    Даю Вам честное слово, что в моей программе для микроконтроллеров всё, что касается инициализации самого контроллера, его периферии и работы с ним, написано на чистом СИ.

    И каким же образом вы общались с микроконтроллером на чистом Си? Приведите хоть небольшой пример кода.

    Et si tu tombes 7 fois Toujours se relever 8
  • Сергей1734 Senior Member
    офлайн
    Сергей1734 Senior Member

    1112

    20 лет на сайте
    пользователь #56271

    Профиль
    Написать сообщение

    1112
    # 3 июня 2018 21:59 Редактировалось Сергей1734, 1 раз.
    Korben_Dallas:

    И каким же образом вы общались с микроконтроллером на чистом Си? Приведите хоть небольшой пример кода.

    Вильма-102
  • Korben_Dallas Senior Member
    офлайн
    Korben_Dallas Senior Member

    2843

    14 лет на сайте
    пользователь #395360

    Профиль
    Написать сообщение

    2843
    # 3 июня 2018 22:19 Редактировалось Korben_Dallas, 1 раз.
    Сергей1734:

    Korben_Dallas:

    И каким же образом вы общались с микроконтроллером на чистом Си? Приведите хоть небольшой пример кода.

    Ну по этому коду не видно никакого "чистого си".

    Что скрывается за макросами `GPIO` и т.п.? "Чистый Си"? Нет, конечно. За ним скрывается платфторменно-зависимый хак - приведение целочисленного значения (адреса регистра) к указательному типу. А это уже семантически выходит за пределы "чистого Си".

    А далее идут библиотечные вызовы типа `lcd_init`, т.е. то, о чем и говорилось выше. Т.е. для общения с устройством вы используете HAL, который внутри, разумеется, рано или поздно выйдет за пределы "чистого Си".

    Et si tu tombes 7 fois Toujours se relever 8
  • Сергей1734 Senior Member
    офлайн
    Сергей1734 Senior Member

    1112

    20 лет на сайте
    пользователь #56271

    Профиль
    Написать сообщение

    1112
    # 3 июня 2018 23:55 Редактировалось Сергей1734, 2 раз(а).
    Korben_Dallas:

    Ну по этому коду не видно никакого "чистого си".

    Что скрывается за макросами `GPIO` и т.п.? "Чистый Си"? Нет, конечно. За ним скрывается платфторменно-зависимый хак - приведение целочисленного значения (адреса регистра) к указательному типу. А это уже семантически выходит за пределы "чистого Си".

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

    Korben_Dallas:

    А далее идут библиотечные вызовы типа `lcd_init`, т.е. то, о чем и говорилось выше. Т.е. для общения с устройством вы используете HAL, который внутри, разумеется, рано или поздно выйдет за пределы "чистого Си".

    Здесь Вы строите лишь предположения без оснований.
    Реальность же такова: библиотечные вызовы - это просто подпрограммы на том же чистом СИ, которые просто оформлены отдельно (для облегчения читабельности исходника).

    P.S. Korben_Dallas, Вы тролль?

    Вильма-102
  • Неизвестный кот Neophyte Poster
    офлайн
    Неизвестный кот Neophyte Poster

    0


    пользователь #6965

    Профиль

    0
    # 4 июня 2018 00:00

    Korben_Dallas, там объявление переменной по абсолютному адресу, используя директивы языка, не входящие в стандарт.

    //==============================================================================
    // GPIO Bits

    extern __at(0x0005) __sfr GPIO;