Перейти к содержанию
    

На чем лучше программировать мк

вообще сферический МК в вакууме интересно обсуждать, но если добиться конкретики, выяснится что вариантов не так много.

Creative Mango,

что же у вас за мк?

для 8051 и какого-нить RISC-V сильно разный выбор тулов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 минут назад, Doka сказал:

для 8051 и какого-нить RISC-V сильно разный выбор тулов

Да, но эти множества пересекаются. И в пересечении находится понятно что. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 минуты назад, one_eight_seven сказал:

Выбор нормальнный.

Сам сейчас в фоне лекции разные слушаю. Обещают много, но изделия если и есть, то все энтузиастские.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начинать на C. Но использовать компилятор C++, параллельно изучая C++ и по мере изучения применять полученные знания, т.е. стараться писать на плюсах. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Сергей Борщ сказал:

т.е. стараться писать на плюсах.

А с какой целью?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Herz сказал:

А с какой целью?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Herz сказал:

А с какой целью?

Согласен полностью, знаю некоторых любителей "плюсов", так никто не смог объяснить, в чем лучше, в основном так "я привык под виндой на плюсах, на обычном не умею"... Это по моему детский сад оправдания, по мне на простом Си программа выглядит гораздо понятнее и проще для понимания тогда, когда ее придется дорабатывать лет через несколько, ИМХО разумеется..

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 сказал:

по мне на простом Си программа выглядит гораздо понятнее и проще

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Leka сказал:

А почему не "string_var.write(USART2);" ? 

Этот вопрос не должен возникать после декомпозиции задач при ОО-проектировании программы. Но я слабо представляю, как должна была выглядеть декомпозиция, в которой принцип разделения ответственности породил в качестве классов/объектов некие строки с вариативными выводами куда-либо методом write()... Хотя, всякое может быть, наверное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Сергей Борщ said:

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

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

 

Шаблоны и перегрузка операторов даёт много больше выразительности коду, чем одиночный класс с методами вместо функций, а реализация какой-нибудь алгебры на операторах была бы полезным примером, ну или STL.

Изменено пользователем amaora

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, amaora сказал:

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

Достаточно посмотреть определение типа объекта UART2. Приличный программерский редактор умеет быстро перейти к место определения функции (достаточно встать на неё курсором и нажать соответствующей хоткей). А то, что функция не шаблон, видно сразу из этого же примера. И то, что вызов не виртуальный, тоже видно сразу. Пример демонстрирует перегрузку функций, что позволяет не плодить имена и иметь код простым и наглядным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Сергей Борщ сказал:

Но я это понимаю и не кричу везде, что Си лучше питона.

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

8 часов назад, Сергей Борщ сказал:

Мне лично очевидно, что на оба вопроса ответ - "третий". 

А мне нет, ибо я по этой строчке (USART2.write) не вижу, какой тип переменной она может принять...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, mantech сказал:

ибо я по этой строчке (USART2.write) не вижу, какой тип переменной она может принять

А это не нужно видеть. Достаточно того, что USART2 умеет ее напечатать. А если не умеет - компилятор выругается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...