• Программирование 24/7?

    @DarCKoder
    Работать нужно не по 12 часов день, а головой.
    Ответ написан
    Комментировать
  • Можно ли "подглядывать" Junior'у?

    EvgeniyKvasyuk
    @EvgeniyKvasyuk
    Я больше скажу, даже не джуниор постоянно подглядывает. Чтение документации - 60% времени работы любого разработчика
    Ответ написан
    Комментировать
  • Как научиться изящно и грамотно программировать МК?

    @d-stream
    Готовые решения - не подаю, но...
    Ну ровно так же как человек учится ходить: вначале фигово и падая на попу, потом - получше, но косолапя и уже только потом начинает бегать...

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    "Интересует за что конкретно нужно взяться в практическом плане, ничего лишнего, чтобы успешно приступить к будущей работе хотя бы на C, С++ или C#, а может на чём-то ещё."

    Возьмитесь хотя бы за С, С++ или С#, а может еще за что-то.

    P.S. Математику нужно изучать хотя бы за то, что она приводит мозг в порядок (С) Ломоносов.
    Ответ написан
    Комментировать
  • Как подключить внешнее устройство к Arduino?

    @pfg21
    ex-турист
    оптическая развязка нужна, когда земли разных схем имеют разный потенциал или есть возможность проскакивания высоковольтного шума и т.д.
    Если земли этих двух схем можно объединить, то сигнал +24в можно подключить через резистор ~100кОм прямо к входу ардуины.
    Входное напряжение выше VCC срежет внутренний защитный диод, 100 кОм ограничит проходящий ток, кмоп вход сигнал примет на ура.
    Ответ написан
    Комментировать
  • Как научиться думать как программист?

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

    Вот пустишь в production свой код, за год добавишь еще over999 строк. А потом у тебя возникнут баги. Ты посмотришь на то, что написал год назад, потратишь на решение простой задачи неприлично много времени, перекрестишься и постараешься переписать, чтобы добиться более поддерживаемого кода. При условии, конечно, что ты будешь совершенствоваться и не обманывать в первую очередь самого себя.
    Ответ написан
    Комментировать
  • Нужен хороший и понятный онлайн/оффлайн симулятор простых электрических схем (аналоговых и цифровых)?

    @evgeniy_lm
    Один из самых простых симуляторов Proteus, но он больше заточен на работу с цифровыми схемами, может автоматом разводить платы.
    Хвалят Multisim, но я его не понял.
    Старичок Electronics Workbench может на что-то сгодится.
    EasyEDA прикольный онлайн симулятор, нашел недавно еще не разобрался
    Ответ написан
    2 комментария
  • Знаете ли вы хороший ресурс (форум) по аналоговой/цифровой электронике?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Когда я ещё был в школе, читал radiokot.ru, там есть раздел где объясняются совсем основы для совсем новичков, да и вообще много статей.
    Ответ написан
    Комментировать
  • Как стать hardware разработчиком?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Называется embedded.

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

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

    Но в институте не учат программировать железо. В лучшем случае базовое понимание электроники и механики. Поэтому то, куда поступаете не так критично важно, как то, что вы изучите самостоятельно. Поступите на любой физико-математический или ИТ факультет. МОжете поискать насколько жива кафедра робототехники в заведении.
    Ответ написан
    Комментировать
  • Почему за основу для Arduino выбрали Atmega328P, когда STM32 и дешевле до двух раз, и лучше до двух раз?

    Под stm32f103c8t6 есть загрузчик ардуино.
    А вообще это скорее всего из разряда: так исторически сложилось.
    Да и они в дип корпусах есть, что способствовало продвижению данных МК среди любителей.
    Ответ написан
    Комментировать
  • Что значит выражение "выстрелить себе в ногу?" (в виде кода)?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Это означает, что на языке можно написать команду или конструкцию, которая сломает нормальное поведение программы или системы (или будет выполняться совершенно не так, как можно было бы логически предположить), и при этом компилятор/интерпретатор это скомпилирует и не ругнется.

    Почитайте тут:
    lurkmore.to/%D0%92%D1%8B%D1%81%D1%82%D1%80%D0%B5%D...
    Ответ написан
    Комментировать
  • Что значит выражение "выстрелить себе в ногу?" (в виде кода)?

    @nirvimel
    *((int *) 0) = 1;
    Ни в одном другом языке это не осуществляется так просто.
    Ответ написан
    3 комментария
  • Как называется дизайнер интерфейсов на профессиональном языке?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Дизайнер интерфейсов или UI-дизайнер.
    Обычно, UI-дизайнер и UX-дизайнер - это один человек, но это не всегда так.
    UI - только прорисовка/визуализация графических элементов интерфейса
    UX - интуитивно-понятное (для мозга пользователя) расположение графических элементов интерфейса и их поведение
    Ответ написан
    Комментировать
  • Правильная ли последовательность разработки проекта?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Создание технического задания - какие фичи есть и как они работают.
    2. Создание частного технического задания - подробное описание каждой фичи, особенности, поведения и прочего (кнопки, меню, апи вызовы и прочее).
    3. Разработка архитектуры проекта под требования и ограничения ТЗ.
    4. Проработка архитектуры на более низком уровне - модули, подсистемы и прочее.
    5. Проектирование пользовательского интерфейса и его дизайн прочее.
    А далее уже более детальная разработка частей/модулей проекта и написание кода - независимые части/модули можно делать параллельно. От проекта к проекту детали могут меняться - но в целом логика примерно такая.
    Ответ написан
    Комментировать
  • Продолжать обучение?

    longclaps
    @longclaps
    Синтаксис общий в той мере, что аккуратно написаный код на C будет компилироваться на всех популярных компиляторах C/C++.
    Этот курс гораздо лучше, чем ничего, а то, что ты приобретешь некоторые познания в C++, тебя не испортит.
    Ответ написан
  • Как правильно составить диаграмму классов?

    @red-barbarian
    Вообще, это правильный подход к диаграммам. )
    Вот что писал Боб Мартин:
    "Возьмите за правило выбрасывать ненужные UML-диаграммы. А еще
    лучше, не создавайте их на постоянном носителе. Рисуйте на доске или
    на клочках бумаги. Почаще стирайте с доски и выбрасывайте эти об-
    рывки. Не привыкайте к инструментарию CASE или к графическим ре-
    дакторам. Для таких инструментов есть свое время и место, но жизнь
    большинства UML-диаграмм недолговечна."
    Хотя, далее, некоторые полезно и сохранять. Общий дизайн системы (идея) или те моменты которые из текста программы будет сложно понять.

    Упрощенно можно так подходить к выделению классов и интерфейсов.
    Есть два реальных объекта. Они относятся к разным классам. Со своими особенностями. Но у них есть некие одинаковые свойства. Например шаблоны функций. пример в общем случае быстрая сортировка это шаблон реализующий алгоритм, но этот шаблон не знает как реально сравнивать объекты. То есть это абстрактный класс объединяющий конкретные быстрые сортировки конкретных объектов. Можно сказать, что абстрактный класс это вынос общих методов и полей их своих потомков. При том что реально мы никогда не создадим экземпляр этого класса.
    Выделение интерфейса. Обычно применяется для разделения систем на отдельные на зависимые части. Например кнопка включает лампу. В программе это реализуется так
    кнопка имеет поле лампа. т.е. реализация кнопки зависит от лампы. Если тип (или код) лампы поменялся, то и часть кода ответственная за кнопку тоже меняется. По крайней мере должна протестироваться. Но можно договориться разделить все устройства которые могут что-то включать (кнопки) и могут быть включены (лампы, двигатели, телевизоры...) и указать как им взаимодействовать.
    Т.е. примерно так:
    Кнопка управляет устройствами.
    Устройство должно иметь метод "включить".
    Лампы, телевизоры, двигатели должны реализовать это метод у себя.
    Итого одна и та же кнопка (без изменения кода) управляет целой группой разнородный устройств (но реализующих общие правила взаимодействия)

    По картинкам:
    у нас есть объекты
    связь 0, связь 1, ...связь 3
    так же объект шина из связей.
    общее для них это они все имеют имя.
    также они имеют некоторые правила передачи сигналов.
    Это дает нам два класса Net и Bus. Кроме того Bus включает в себя много Net.
    Далее хотелось бы , что бы эти классы были независимы от правил. т.е что бы правила мы могли назначать сами. возможно динамически. Поэтому net и bus имеют метод назначающий правила rule (с общим интерфейсом) (которые можно менять, и не менять реализацию net, bus ).
    Итого Выделили общие свойства из net, bus в абстрактный класс AbstractNet. bus включает много net. Вынесли правила (которые будут часто меняться и которые мы возможно еще не знаем) за общий интерфейс.
    примерно так. упрощенно.
    Ответ написан
    6 комментариев
  • Зачем делают так много методов в классе?

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

    Правило хорошего тона: API класса должен быть доступен только через методы или properties (что, по сути - синтаксический сахар над методами), а поля должны быть только private/protected.
    Ответ написан
    1 комментарий
  • Как научиться писать код быстро?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Методика есть и она стара как мир:

    Семь раз подумай, один раз напиши.
    Чем меньше напишешь, тем меньше будет работы.

    А каким образом осуществлять мыслительный процесс - это вам виднее :-)

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

    Что касается механики, то быстро вводить код - это не то, к чему стоит стремиться, конечно если целью не является желание стать секретаршей :-)
    Ответ написан
    5 комментариев