Doka 1 29 мая, 2021 Опубликовано 29 мая, 2021 · Жалоба вообще сферический МК в вакууме интересно обсуждать, но если добиться конкретики, выяснится что вариантов не так много. Creative Mango, что же у вас за мк? для 8051 и какого-нить RISC-V сильно разный выбор тулов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 29 мая, 2021 Опубликовано 29 мая, 2021 · Жалоба 19 минут назад, Doka сказал: для 8051 и какого-нить RISC-V сильно разный выбор тулов Да, но эти множества пересекаются. И в пересечении находится понятно что. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 29 мая, 2021 Опубликовано 29 мая, 2021 · Жалоба 43 минуты назад, one_eight_seven сказал: Выбор нормальнный. Сам сейчас в фоне лекции разные слушаю. Обещают много, но изделия если и есть, то все энтузиастские. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба Начинать на C. Но использовать компилятор C++, параллельно изучая C++ и по мере изучения применять полученные знания, т.е. стараться писать на плюсах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Herz 4 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 6 минут назад, Сергей Борщ сказал: т.е. стараться писать на плюсах. А с какой целью? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 1 час назад, Herz сказал: А с какой целью? Потому что во-первых это удобнее, а значит на написание тратится меньше времени и сил (плюсы позволяют делать все, что умеют "голые" Си, плюс куча плюсовых вкусностей - классы, перегрузка операторов, шаблоны), а во-вторых за счет более строгого контроля типов компилятор уберегает от многих глупых ошибок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 32 30 мая, 2021 Опубликовано 30 мая, 2021 (изменено) · Жалоба 1 час назад, Herz сказал: А с какой целью? Согласен полностью, знаю некоторых любителей "плюсов", так никто не смог объяснить, в чем лучше, в основном так "я привык под виндой на плюсах, на обычном не умею"... Это по моему детский сад оправдания, по мне на простом Си программа выглядит гораздо понятнее и проще для понимания тогда, когда ее придется дорабатывать лет через несколько, ИМХО разумеется.. Изменено 30 мая, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 46 минут назад, mantech сказал: так никто не смог объяснить, в чем лучше Много раз объясняли несколько человек на этом форуме. Может вы не захотели понять? Какой из трех фрагментов кода, на ваш взгляд, удобнее, и понятнее? На написание какого (включая реализацию этих функций) уйдет меньше времени? Мне лично очевидно, что на оба вопроса ответ - "третий". //---------- 1 --------------- USART2_write_string(string_var); USART2_write_char(char_var); USART2_write_int(int_var); //---------- 2 --------------- write_string(USART2, string_var); write_char(USART2, char_var); write_int(USART2, int_var); //---------- 3 --------------- USART2.write(string_var); USART2.write(char_var); USART2.write(int_var); 46 минут назад, mantech сказал: по мне на простом Си программа выглядит гораздо понятнее и проще Для меня тоже программа на Си выглядит гораздо понятнее и проще, чем программа на питоне - просто потому, что я не знаю питона. Но я это понимаю и не кричу везде, что Си лучше питона. Как вы можете сравнивать языки, одного из которых вы не знаете и не умеете применять? Вы можете писать на чем угодно, но почему вы тянете за собой других, не даете им развиваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба А почему не "string_var.write(USART2);" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 129 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 1 час назад, Leka сказал: А почему не "string_var.write(USART2);" ? Этот вопрос не должен возникать после декомпозиции задач при ОО-проектировании программы. Но я слабо представляю, как должна была выглядеть декомпозиция, в которой принцип разделения ответственности породил в качестве классов/объектов некие строки с вариативными выводами куда-либо методом write()... Хотя, всякое может быть, наверное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 17 30 мая, 2021 Опубликовано 30 мая, 2021 (изменено) · Жалоба 4 hours ago, Сергей Борщ said: Много раз объясняли несколько человек на этом форуме. Может вы не захотели понять? Какой из трех фрагментов кода, на ваш взгляд, удобнее, и понятнее? На написание какого (включая реализацию этих функций) уйдет меньше времени? Мне лично очевидно, что на оба вопроса ответ - "третий". Второй и третий не отличаются существенно, при простой ожидаемой реализации. Но проблема третьего варианта, если это C++, может оказаться в том, что за вызовом метода может скрываться гора шаблонов, наследований, виртуальных таблиц, переопределенных операторов и надо просмотреть значительный объем кода, чтобы понять что происходит. В случае анализа дампа памяти при исключении, например. Шаблоны и перегрузка операторов даёт много больше выразительности коду, чем одиночный класс с методами вместо функций, а реализация какой-нибудь алгебры на операторах была бы полезным примером, ну или STL. Изменено 30 мая, 2021 пользователем amaora Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 31 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 28 минут назад, amaora сказал: Но проблема третьего варианта, если это C++, может оказаться в том, что за вызовом метода может скрываться гора шаблонов, наследований, виртуальных таблиц, переопределенных операторов и надо просмотреть значительный объем кода, чтобы понять что происходит. Достаточно посмотреть определение типа объекта UART2. Приличный программерский редактор умеет быстро перейти к место определения функции (достаточно встать на неё курсором и нажать соответствующей хоткей). А то, что функция не шаблон, видно сразу из этого же примера. И то, что вызов не виртуальный, тоже видно сразу. Пример демонстрирует перегрузку функций, что позволяет не плодить имена и иметь код простым и наглядным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба Однако, умело ТС закинул "приманку": Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 32 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 8 часов назад, Сергей Борщ сказал: Но я это понимаю и не кричу везде, что Си лучше питона. Да не надо кричать, я вообще-то не утверждал, что плюсы круче обычного Си, или наоборот, но в контексте программирования для МК, считаю последний понятнее и всего-то. Ну а про использование вэб-языков и подобного просто вообще промолчу... 8 часов назад, Сергей Борщ сказал: Мне лично очевидно, что на оба вопроса ответ - "третий". А мне нет, ибо я по этой строчке (USART2.write) не вижу, какой тип переменной она может принять... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 30 мая, 2021 Опубликовано 30 мая, 2021 · Жалоба 7 минут назад, mantech сказал: ибо я по этой строчке (USART2.write) не вижу, какой тип переменной она может принять А это не нужно видеть. Достаточно того, что USART2 умеет ее напечатать. А если не умеет - компилятор выругается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться