Jump to content

    
Creative Mango

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

Recommended Posts

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

Creative Mango,

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

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

Share this post


Link to post
Share on other sites
19 минут назад, Doka сказал:

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

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

Share this post


Link to post
Share on other sites
43 минуты назад, one_eight_seven сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 час назад, Herz сказал:

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

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

Share this post


Link to post
Share on other sites
1 час назад, Herz сказал:

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

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

Edited by mantech

Share this post


Link to post
Share on other sites
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 сказал:

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

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

Share this post


Link to post
Share on other sites
1 час назад, Leka сказал:

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

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

Share this post


Link to post
Share on other sites
4 hours ago, Сергей Борщ said:

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

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

 

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

Edited by amaora

Share this post


Link to post
Share on other sites
28 минут назад, amaora сказал:

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

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

Share this post


Link to post
Share on other sites
8 часов назад, Сергей Борщ сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
7 минут назад, mantech сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.