Comments 197
Пожалуйста: http://www.bhv.ru/books/book.php?id=201192
Никаких секретов, весь упомянутый курс вышел в виде книги. Доступен всем желающим.
Список деталей с артикулами из ЧИП и ДИП — вот он: yadi.sk/i/L9DZRGzA1C0TFg
Наборы с деталями — лично я не заинтересован. Много возни, а выхлоп маленький.
Будет сильно мешать основной работе, а я ее люблю и не хочу лишиться.
За приглашение спасибо!
ftp.bhv.ru/9785977540100.zipЗнакомый сайт :) Интересно, а BHV до сих пор платит авторам порядка 6% от сумм продаж?
Я как-то работал с ними давным-давно, в итоге пришел к выводу что проще книгу самому написать и самому на бесплатный файлообменник выложить, возни меньше, а чтобы что-то реальное заработать, тиражи и объемы должны быть как у Донцовой.
Если рядом будет преподаватель, разбирающийся в теме проектирования на вентилях и микросхемах средней степени интеграции, то он может и сам двинуть учеников дальше, чем в книжке материал дается. А вот на транзисторном уровне дать верное базовое понимание в состоянии далеко не каждый кружковод. Мне-то проще, я всю жизнь в заказном проектировании IP-блоков варюсь, транзисторы — мое родное :) Вот и поделился с общественностью знаниями таким образом.
Но это мое мнение и опыт, у вас он может быть другим.
Надо, что ли, издать сборник аналоговых схем и плат к ним для самых маленьких! :)
Вот что я написал пару лет назад в некоей переписке с обсуждением преподавания по Петзольду:
Я посмотрел Петзольда. Все до двоичного сумматора можно использовать (причем сумматор построить из вентилей на верилоге), RS-триггеры можно сократить (оставить только D-триггер как черный ящик), петзольдовский процессор в принципе можно легко написать на верилоге (глава «автоматизация»), но я не уверен, что он существенно проще, чем одноцикловый процессор в H&H. Выбор 8080 и 6800 как процессоров для примера в главе 19 был сомнительный даже для 1988 или 2001 года, но сейчас более чем сомнителен (см. напр страницу 328 – ну зачем школьнику объяснять, почему есть mov b, [hl], но нет mov b, [de] – у этого нет никакой образовательной ценности). Исторические примеры на алголе и бейсике тоже стоит обновить, написать на чем-нибудь другом (не обязательно лучше, просто новее – C, Python, Go).
.......
Взял в библиотеке оригинал Петзольда и пролистал его внимательнее, чтобы проанализировать возможность его использования в качестве рекомендуемой литературы в курсе для школьников. Подтвердил вывод, что использовать его можно, но примерно наполовину. Дополнительные комментарии к предыдущему емейлу:
1. Обнаружил интересный момент, которые ранее (не видя оригинала) полагал возможной ошибкой перевода. А именно: для хранения текущего состояния своего простейшего процессора («Глава 17 Автоматизация») Петзольд использует не D-триггеры (D-flip-flops), а защелки (latches). Я понимаю, почему он это делает – он все-таки не хардверный инженер, а знаменитый автор книг по программированию Windows, и смотрит на это высокоуровнево, и для него объяснить, что что-то защелкивается по уровню (level-triggered) – это интуитивно проще, чем по изменению уровня (edge-triggered). Я считаю, что вводить защелки в курс для детей неправильно. Лучше их пропустить и вводить D-триггеры, или упомянуть походу, при переходе от изложения SR-latches к изложению D-flip-flop. Дело в том, что защелки в современной практической жизни возникают либо в самом начале курса цифровой электроники, либо в редких асинхронных уголках сильно продвинутых дизайнов (и при gated clock), и показывать их детям как мейнстрим – это неправильно. Тем более что синтезатор Verilog-а при попытке создать latch генерирует warning или ошибку. При этом надо сказать, что Петзольдовский процессор можно без проблем переделать с использования защелок на использование D-триггеров, и если кто-нибудь захочет реализовать его на Verilog, это стоит делать именно так.
2. При том, что реализация петзольдовского процессора на верилоге – это хорошее упражнение, но он не намного сложнее версии однотактного процессора в Harris & Harris – если выкинуть из процессора в H&H обмены с памятью данных (load/store) и оставить только регистровый файл. Тогда сложность одного и второго процессора уравнивается, и на них можно исполнять простые программы типа вычислений чисел Фибоначчи или взятие целочисленного квадратного корня итерациями. В принципе, в курсе можно сделать пример и первого и второго простого процессоров – если мы вообще хотим доводить курс до изготовления школьниками процессоров, а не решаем ограничить его простой проследовательностной логикой (счетчики и сдвиговые регистры) и конечными автоматами (улитка на ленте и светофор).
3. Нашел ценную идею в «Глава 13 А как же вычитание?». А именно – реализовать вычисление отрицательной величины на сумматоре и инвертере (это можно сделать как на микросхемах малой интеграции, так и на ПЛИС). Просто исходя из формулы “–a == (~ a) + 1”. Это хорошее упражнение.
4. Сумматор с последовательным переносом (ripple-carry adder) из главы «Глава 12 Двоичный сумматор» также стоит сделать как на логических микросхемах малой интеграции, так и на ПЛИС. Это полезное упражнение. Для особо талантливых школьников (типа победителей олимпиад) можно факультативно добавить сумматор с ускоренным групповым переносом (carry-lookahead adder), последовательностный сумматор (прибавляющий бит за битом каждый такт) и конвейерный сумматор – все на верилоге.
5. Небольшое пояснение, почему использовать как примеры процессоры 8080 и 6800 неудачны для современных школьников. Про 8080 я уже сказал, скажу про 6800. Он представляет собой случай так называемой аккумуляторной архитектуры. Она имела смысл в до 1980-х годов, причем не только из-за ограниченных размеров, но и из-за того, что скорость арифметики была медленнее, чем скорость обмена с памятью. Процессоры такого типа трудно делать конвейерными (для этого лучше использовать register-rich load-store процессоры). Любые современные альтернативы – ARM, MIPS, AVR, которые появились после или в процессе RISC-революции 1980-х годов, в этом смысле лучше.
Короткие комментарии по главам:
Эти главы можно использовать в курсе по желанию преподавателя:
Глава 1 Верные друзья… 1
Глава 2 Коды и комбинации… 9
Глава 3 Брайль и двоичные коды… 15
Глава 4 Анатомия фонарика… 23
Глава 5 Там, за поворотом… 35
Глава 6 Телеграф и реле… 45
Глава 7 Великолепная десятка… 53
Глава 8 Альтернативы десяти .............................61
Глава 9 За битом бит… 77
Глава 10 Логика и переключатели… 99
Глава 11 Вентили, которые не протекают… 119
Эти главы полезны, и с ними стоит сделать дополнительные примеры на верилоге:
Глава 12 Двоичный сумматор… 153
Глава 13 А как же вычитание?… 169
Глава 14 Обратная связь и триггеры… 185
Можно по желанию:
Глава 15 Байты и шестнадцатеричные числа… 215
Глава 16 Сборка памяти… 229
Если процессор из этой главы будет использован для примера, у него стоит как минимум поменять защелку на D-триггер. В качестве второго (или первого примера) добавить однотактовый MIPS без load-store:
Глава 17 Автоматизация… 249
Глава 18 От счетов к микросхемам… 289
Если мы вообще будем включать в курс ассемблер, то его стоит взять ARM, MIPS, AVR, RISC/V, но не 8080 и 6800:
Глава 19 Два классических микропроцессора… 321
Глава 20 ASCII — символы нашего времени… 357
Это нужно заменить на очень краткое обсуждение шин AXI (на чипе) и SPI/I2C/UART (между чипами).
Глава 21 Под шорох шин… 377
Я не уверен, что историю CP/M стоит рассказывать школьникам, хотя в 1978 году это было бы круто.
Глава 22 Операционная система… 403
По желанию преподавателя:
Глава 23 Фиксированная точка,
плавающая точка… 423
Заменить Algol-60 на Python и Go:
Глава 24 Языки высокие и низкие… 439
По желанию преподавателя:
Глава 25 Графическая революция… 459
Предметный указатель… 486
В принципе, можно сделать поддержку курса выжимками из Петзольда и выжимками из Харрис & Харрис. Будет немного лоскутно, но работоспособно.
Стековые процессоры и занимают мало ресурсов FPGA и достаточно эффективны для задач реального времени.
P.S. Тот же процессор RTX2010, вроде, достаточно широко использован в разработках NASA. У Atmel был и стековый контроллер MARC4, но его развитие не состоялось.
Только при этом нужно иметь в виду, что ардуино IDE — это не обучение электронике. Это своеобразная форма обучения программированию встроенных систем, причем даже для этой цели ардуино IDE не годится для будущих профессионалов из-за чрезмерной изоляции от memory-mapped I/O registers и прерываний, а также (до недавних времен и сейчас частично) отсутствия RTOS-а, совместимого с ардуино IDE. Чтобы проиллюстрировать гуманитарию, что внутри робота или кофеварки небольшой компьютер — ардуино IDE пойдойдет.
Если человек собирается когда-нибудь получать за программирование микроконтроллеров зарплату, ему неизбежно прийдется изучать профессиональный IDE. Например чтобы правильно использовать прерывания при приеме и передаче данных из нескольких устройств. И для проектов, где нужна RTOS. Я не вижу, зачем сначала учить Ардуино, а потом переучиваться на профессиональное IDE, вместо того, чтобы выучить профессиональное IDE сразу.
Вообще я занимаюсь разработкой микросхем на верилоге, но в 2012-2013 написал пару введений в использование IDE, вы можете оценить, что порог входа не выше, чем в Ардуино — panchul.com/2013/02/27/microchip_pic32_1
Например, что сложного при работе с memory-mapped регистрами без объектов-аксессоров, напрямую?
char spi_put_get_char (char c)
{
SPI2BUF = c; // send data to slave
while (SPI2STATbits.SPIBUSY); // wait until SPI transmission complete
return SPI2BUF;
}
Я неправильно выразился. Я имел в виду не IDE, а библиотеку и настройки. Мне не нравится Ардуино по трем причинам:
1. Он «заворачивает» обращения к регистрам в вызовы методов объекта. Из-за этого заворачивания пользователю доступна только часть функциональности memory mapped registers, которая есть в datasheet. То же самое в еще большей степени относится к обработчикам прерываний.
Помимо ограничения доступа к функциональности, это уменьшение эффективности и скорости реакции системы. Одна инструкция ассемблера (uncached memory write) превращается в вызов функции, который компилятор не всегда inline.
Я не вижу, как «заворачивание» существенно облегчает программирование.
2. Напишите на ардуино код двух параллельно работающих задач, которые без глюков выводят свои данные в две разные области экрана. Если использовать скажем FreeRTOS, задача пишется запросто, с использованием задач и семафоров.
3. У меня есть претензии к лидершипу Ардуино коммьюнити. Я знаком с ардуинским офисом в Калифорнии и с тем, как они ведут себя в рамках образовательных программ, взаимодействуя с университетами, школами и городскими властями. Они постоянно стараются, чтобы любые конкурирующие с ними хоть в каком-то виде инициативы задвигались, не упоминались и всюду было сплошное ардуино.
Пока это касалось только микроконтроллеров, это еще вписывается в какие-то рамки. Но когда они решили сделать официальное ардуино-совместимое FPGA — это просто смешно — мало того, что он дорогой для заявленной функциональности, так он еще и используется в качестве сопроцессора к ардуино. Ну это как купить мотоцикл и ездить на нем только прицепляя его к телеге с лошадью.
hackaday.com/2018/07/30/hands-on-with-new-arduino-fpga-board-mkr-vidor-4000
Главная проблема — в том, что ардуина всю эту механику стремится максимально спрятать от пользователя, по возможности так, чтобы он её не нашёл, даже если очень захочет.
Из этого моментально вырастают две вещи, регулярно наблюдаемые в ардуино-проектах:
1) полное отсутствие понимания, как делать правильно, которое позволило бы осмысленно выбирать между, например, loop(), тредами, прерываниями и прочими средствами обеспечения условной многозадачности, а тем более — сочетать их для получения нужной функциональности.
2) магическое мышление, для которого многое происходит «само» — программа сама компилируется под нужный контроллер, библиотеки сами опрашивают датчики, и так далее. При возникновении любых проблем с этой магией не только сам разработчик, но всё доступное ему комьюнити тупо не понимает, что теперь делать.
Всё это кое-как работает на проектах из дерьма и палок, но как только эти люди начинают пытаться свои поделия продавать — а они начинают — быстро становится страшно.
И, кстати, иногда «настоящие профессионалы», игнорирующие свысока «любительский» Arduino (с огромной базой open source кода на «все случаи жизни»), дают estimate на простенький проект, в котором (к сожалению для них), требуется поддержка BLE, WiFi direct, TCP/IP + HTTP stack, порядка года, а проект делается (до стадии бета) за пару недель, садятся откровенно в лужу. Случай взят из real life; проект, реализованный на ESP32, уже два года пашет, без сбоев и ошибок, в самом, что ни на есть, production
А теперь давайте сравним с числом проектов на ардуине, в том числе продаваемых за деньги, но при этом сляпанных на коленке из готовых библиотек, вызовы которых просто засунуты в любимый Arduino-профессионалами loop() в том порядке, в котором им виделось выполнение программы — с плохо предсказуемыми таймингами выполнения, с абсолютно никаким риалтаймом, с абсолютно никакой надёжностью, и главное, с абсолютно минимальным пониманием, что там вообще под капотом происходит. Сданных по принципу «у меня всё работает».
Arduino в её текущем виде предельно плоха для обучения не потому, что на ней из дерьма и палок нельзя быстренько слабать проектик, а потому, что Arduino не даёт понимания правильных концепций работы с микроконтроллером и правильных навыков написания встраиваемого ПО.
На этом обсуждение роли ардуины в образовании можно завершить.
Что же касается профессионалов, то для любого человека, имеющего какой-то вменяемый опыт программирования микроконтроллеров, Arduino просто не несёт никакой ценности, а несёт одни проблемы. И с тем же ESP32 вы в следующий раз запросто вляпаетесь в проблему, критичную для проекта, на которую всё т.н. опенсорс-сообщество на форумах поддержки будет только молча шлёпать ртом и советовать «попробовать другую плату с другой либой».
Извините, но это абсолютно бездоказательно, и основано лишь на голословных допущениях. «Вляпаетесь», «молча шлёпать ртом», «у меня все работает», а также безапелляционность утверждений, не говорят о вашей правоте, отнюдь…
Вы будете далеко не первым, кого я в ответ попрошу показать эти замечательные Arduino-проекты, написанные красиво и аккуратно.
И тоже, полагаю, не покажете.
Упомянутые вам «правильные концепции и навыки» это вовсе не «закон природы», а лишь привычные или нравящиеся вам технологии
Нет. Это технологии, которые позволяют писать надёжный, предсказуемо работающий код. Точно так же, как мытьё рук — оно может нравиться или не нравиться, но от инфекционных заболеваний спасает очень хорошо.
или «ардуиной» (или любым бэйсик-стэмпом)
А гвоздь в стену можно забить не только молотком, но также пассатижами, кирпичом и вообще любым твёрдым тяжёлым предметом. И он даже будет в стене держаться.
Это является поводом на уроках труда вместо молотка дать детям гвоздь и пассатижи?
Arduino значительно понизил уровень «вхождения» в бизнес
В бизнес? Можно примеры этих компаний, созданных благодаря Arduino, и при этом не занимающихся продажей ардуинщикам готовых модулей?
можно лишь имея какую-то статистику, иначе это просто голословное утверждение
Чушь. Выше объяснено, почему.
Полагаю, как профессионал, вы про существование NDA слышали? И, надеюсь, вряд ли нарушаете свое слово, чтобы доказать, «что в интернете кто-то не прав»?
Но ведь наверняка же на гитхабе есть сотни и тысячи прекрасных проектов на Arduino с прекрасным кодом внутри?
В упомянутых случаях речь идет о мелкосерийных, но достаточно дорогостоящих (для покупателей ;) ) проектах
Вроде того проекта для Boeing, который два самолёта с пассажирами в землю вогнал? Или кардиоимплантов, в которых забыли сделать защиту от постороннего подключения? Или кода автомобилей Toyota, в котором более 80 тысяч нарушений MISRA C нашли?
Понимаете ли, к несчастью для вас, все присутствующие здесь в курсе, что громкое имя не говорит о качестве примерно ничего.
Касательно ваших примеров: вы можете подтвердить, что Boeing, производители кардиоимплантантов, и Toyota использовали Arduino?
А вы вообще пытаетесь как-то вдумываться в смысл того, что я вам пишу?
Вы тут пытались потрясти регалиями — так вот, я вам сообщаю, что место трудоустройства не всегда код украшает. Независимо от того, на ардуине он или нет.
И я ничего не имею против RTOS (скорее, я «за»), но только для каждой задачи нужно выбирать соответствующие инструменты
Совершенно согласен с вами, что Arduino полностью адекватна для решения задачи «соорудить на коленке из дерьма и палок».
Для других задач она не нужна, а для образовательных — попросту вредна.
Я вовсе не пытался «трясти регалиями», а, всего лишь, ответил на ваш прямой вопрос, если вы не заметили
Нет, вы не ответили. Вы выпятили грудь и сообщили нам, что вы необычайно круты.
в корне и принципиально не согласен
Ок. Расскажите нам, почему именно при обучении программированию микроконтроллеров не надо изучать многозадачность, не надо изучать правильное структурирование проекта по файлам, не надо изучать принципы работы HAL…
P.S. Кстати, хотелось бы узнать про судьбу Black Swift, и для чего вы его сделали: сколько единиц вам удалось реализовать, и насколько успешным был этот проект?
4,5 тыс. штук примерно. Делал его не я, а другой человек, у него были свои причины — я эти причины находил неинтересными, в связи с чем проект закрыл.
Так, чисто в плане «потрясти регалиями»…
Я смотрю, этот вопрос вам всё же не даёт покоя.
Да на кой чёрт мне вообще знать, что у вас там какие-то NDA где-то существуют, если к теме беседы они не имеют никакого отношения?
Не можете свой код показать — ну так просто промолчите про него (хотя, впрочем, его качество из ваших слов примерно понятно).
Перед тем, как на это отвечать, прошу привести мои слова, где я именно это утверждал. Либо — извиниться за голословные обвинения и ложь.
Давайте попробуем медленнее.
1) Вы не согласны с тем, что Arduino нельзя использовать в образовании — следовательно, вы считаете, что Arduino можно использовать в образовании.
2) Платформа Arduino не имеет нормальной организации структуры проекта, тщательно прячет от программиста HAL, не имеет средств организации многозадачности, etc.
3) Ergo, для использования платформы Arduino в образовании необходимо, чтобы со всеми этими вопросами учеников знакомить не требовалось, потому что при использовании в образовании платформы Arduino ни с чем из этого их познакомить не получится.
Это несложное логическое построение вам под силу?..
И это не отдельное мое, «непрофессиональное» мнение, а текущий тренд в образовании, поддерживаемый многими всемирно знаменитыми коллеждами, включая MIT и CalTech!
А ведь без регалий вы всё-таки не можете.
Грубо говоря, вы, с вашими «пальцами», сроками и прайсом и нах никому не нужны в современном мире; столь презираемые вами «уроды, ваяющие из говна и палок», заработают миллионы, а вы… будете дальше постить на хабре :)
Миллиарды, чего уж там. Забавно, кстати, у вас крышку с чайника стало напором пара приподнимать.
Платформа Arduino имеет абсолютно нормальную структуру организации проекта; если ваше невежество и отсутствие практического опыта не позволяют в этом убедиться, то это ваши личные проблемы, которые мало кого интересуют
Запостите, пожалуйста, прямо сюда скриншот Arduino IDE, в которой одновременно открыты два файла исходников и два заголовочных.
Многозадачность, равно как и hard real time — это весьма специфические подзадачи; наличие или отсутствие их поддержки «из коробки» не говорит абсолютно ни о чем!
То есть учить в 2019 году тому, что на микроконтроллерах бывает многозадачность, всё-таки не надо?
Это, как говорится, the matter of fact, а вовсе не «регалии» (вам бы, по поводу «регалий», к психиатору бы сходить, а? До дискуссии с вами, я это слово раз в пять лет слышал, честное слово!)
Почему мне кажется, что если я вас попрошу сейчас попродробнее рассказать, где, как и в каких учебных программах Калтех использует ардуину, у вас не получится?
Если бы вы дали себе труд прочесть эту дискуссию более внимательно, то узнали бы, что я предпочитаю Visual Studio 2017 + Visual Micro
Ваши личные предпочтение меня волнует столь же сильно, как количество подписанных вами NDA.
Дискуссия — про Arduino, а не про Visual Studio 2017.
Касательно многозадачности: ей нужно «озабачиваться», когда она стоит в requirements
Requirements в школьном учебном курсе — это, простите, как?
Вытирайте губы, «это другой человек» ;)
Но ведь вы же не знаете, сколько и когда получил я.
Попробуйте, для развлечения, прогуглить сами — эти колледжи имеют кучу открытой информации (традиционно)
Вам не кажется удивительным, что за всю дискуссию вы не сказали от своего имени по теме вообще ничего, кроме ряда банальных глупостей?
Не в «школьном учебном курсе», а в конкретной прикладной задаче
У вас удивительная способность бурно дискутировать с радио, громко играющим в вашей голове, при этом перескакивая с темы на тему так, как вам хочется.
Дискуссия была про использование Arduino в образовании.
взаимодействие с «облаками» и социальными сетями, а как правильно проинициализировать DRAM — это, уж извините, не проблема прикладных программистов IoT!
Всё больше убеждаюсь, что та сложная цепочка, по которой я должен был пройти, чтобы познакомиться с вашим творчеством, привела бы меня к колекции наколенного говнокода, который вы умудрились впарить заказчику.
Дык, уже который пост безуспешно пытаюсь узнать!
В отличие от вас, я не очень люблю публично потрясать своими NDA перед малознакомыми людьми.
О чем я умоляю уже три или четыре сообщения подряд: позвольте мне, «криворукому ламеру», ознакомить «всемирного гуру» со своим вонючим, копипащенным «говнокодом», и приобщиться к великому, исходящему из под десниц гения! :D Жду линк на гитхаб билгейца-вирта-возняка-гроува-кто-там-еще-в-одном-лице?!
facepalm.jpg
Кстати, я правильно понял про Tymewear — вы нам сообщили, что во всей команде проекта нет ни одного embedded-программиста с какой-то минимально вменяемой квалификацией?..
Просто, конечно, рад, что вам удалось присосаться к какому-то фонду, но третий год разработки и при этом ни одного минимально опытного программиста в команде — полагаю, если мы этот продукт вообще когда-либо увидим в продаже, то это будет явление краткое и печальное. Но скорее всего так и будут прототипы показывать следующие года два, пока деньги не кончатся.
Вам-то есть что показать? Уже в четвертый раз спрашиваю… Ну, что-то реально существующее, а не «тот парень продал 450 штук»
Зачем? Зачем мне в дискуссии о том, пригодна ли ардуина для образования, показывать какие-то свои контракты, устройства и всё остальное, не имеющее вообще никакого отношения к теме дискуссии? Почему мне не показать, например, свою квартиру или машину, и если она окажется больше и дороже вашей, то мы признаем, что про Arduino я прав, а вы — нет?
Ну то есть я заранее знаю, что мой инвестор — он жирнее вашего, мои контакты и клиенты — они лучше ваших, но на кой чёрт мне размахивать этим в дискуссии про Arduino?..
Чтобы что?
В MIT есть и курс по Scratch, но как ни удивительно поиск по их сайту по слову Forth дал только 1-2 малоинтересных упоминания связанных с Форт языком.
P.S. Даже в Российских вузах Форт можно больше найти. :)
В MIT есть и курс по Scratch
Вообще в таких случаях факты без контекста попросту не имеют смысла. В том же MIT, например, есть курс «Collaborative Design and Creative Expression with Arduino Microcontrollers», про который даже по названию понятно, что это такая развлекушка для студентов нетехнических специальностей, из которой никак не следует, например, что «программистам встраиваемых систем важнее учиться творческому самовыражению, чем тонкостям работы DMA» — он для них просто не предназначен.
Причин появления таких курсов — их вообще масса, начиная с того, что Arduino — это вполне себе баззворд, так что если курс сделать недорого и ненапряжно, то его подготовка окупается хотя бы чисто с маркетинговой точки зрения (в России это менее привычно, но цель западного вуза — продавать себя, и те же онлайн-курсы в первую очередь появились как эффективный способ эту задачу решать).
Надо смотреть, кому курс читается, сколько времени, какие курсы читаются до и после — в общем, целостную картину.
Конканетавивные языки программирования
P.S. Про обучение на Форт программированию, это Вы сами придумали (моё сообщение не об этом) :) Хотя, школьники, могут и данное языковое направление понять и использовать т.к. много примеров его использования для программирования микро контроллеров (и не только)
Андрей Черезов: «Слово о Форте». (Попытка формализации сути языка 29.07.1999)
P.S. Википедия не достаточно адекватный источник информации. Форт — построен на обобщённом использовании понятия СЛОВО.
А.Черезов автор SP-Forth (системы используемой русскоязычными Форт программистами)
параметра. При замене семантики имени слова переменной на слово процедуру достаточно сохранить только контекст количества и понимания параметров после выполнения выбранного слова.
P.S. Если есть необходимость в алгебраической форме записи программного кода, то данное расширение Форт языка добавляется к системе. (также как и если есть необходимость в ООП)
7 2 3 * — (но в С, например, есть операторы ++ — )
Проектов с задействованием «архаичного» Forth языка достаточно на Github. :)
но можно : 2 3; 2 2 * (будет 6)
Форт язык, это далеко не язык программирования используемый для БЗ-34 (МК-54) и имеет много особенностей выводящих его в отдельное направление программирования.
P.S. Здесь есть и например расширение Форт языка — транслятор формул.
Про «ископаемое» — это Вы немного погорячились, но
oн, конечно, отличен от того чему учат в школе.
В моих сообщениях из профиля можно найти ещё некоторые полезные ссылки для ознакомления с Форт. :)
Если Вы в знании о нём не заинтересованы, то это только Ваш выбор.
Tакже, например, как в ассемблере сначала формируется условие, а потом команда перехода по этому условию. (тоже «обратная польская запись» :)
P.S. Стек в Форте, это прежде всего кэш и использование его в чём то более оправдано чем именованных локальных переменных. (в Форте они тоже есть) таким образом нет необходимости в создании связи формальных с фактическими параметрами слов (функций в классике языков программирования) + компактность решений на данном языке.
Знакомство с Форт у меня началось с прочтения книги авторов Баранова, Ноздрунова «Язык Форт и его реализации» в возрасте недалеко ушедшем от школьного (параллелльно читал и про Аду, Пролог, Лисп ...)
P.S. Вот эта причинно-следственная связь и есть прямой порядок слов Форт языка! Привычная запись алгоритма и выражение алгоритма в заданном языке немного разные вещи. Когда программы записываются на языке математиков? У Форт тоже достаточна обширна библиотека реализованных алгоритмов.
В БЗ-34 фактически нет нормального стека и также нет второго стэка-возвратов.
P.S. Но, почему то, такой проект Forth for Artificial Intelligence in Robots реализован не на Фортране, а на Форт. :)
P.S. @ «Видишь суслика? А он есть!» :)
Один из
В платe Pololu Maestro Servo (PIC18F4550) в качестве скриптового языка применён Forth.
Mosaic Industries inc: Embedded multitasking RTOS supports programming in the Forth and C languages
ES-ForthLogic ПЛК контроллеры
…
P.S. Не для всех данный язык устарел и забыт. :)
И зачем Вы пытаетесь отнести Форт к brainfuck? (почему не к Befunge)
P.S. Тот, кто его использует может наоборот сказать — применяющийся и простой язык и для его использующего — популярный. :)
Может проще понять где его реально использовать и для каких задач? Начав с прочтения данной «устаревшей» книги Л.Броуди «Cпособ мышления — Форт язык и философия для решения задач»
1. Скорость логики и арифметических устройств росла быстрее скорости обращений к памяти, что потребовало развития кэшей. Сейчас в типичном high-end процессоре за 1 промах кэша при загрузке из памяти можно выполнить порядка 100 простых арифметических или логических операций типа сложения или and. Поэтому чтобы реализовать память для стека в Форте, недостаточно простого интерфейса к чипу памяти, нужна сложная комбинация из регистрового файла, кэшей и памяти как таковой.
2. Исследования использования операция в программах, проведенные в Стенфорде Джоном Хеннесси в конце 1970-х — начале 1980-х годов показали преимущества использования регистрового файла (при наличии оптимизирующего компилятора) перед стеком. Это преимущество было даже в споре между MIPS и SPARC (у которого был стек регистровых окон).
Это я так думаю, но вы можете погуглить и найти какие-нибудь альтернативные объяснения. Хотя стек действительно легко реализовать и это элегантная модель для программиста (см. мой старый пример стекового калькулятора).
Технические аспекты и детали реализации модулей, процесоров у Хариса вполне могут быть лучше. Суть в том, что мы говорим о контексте новичка. К примеру, молодого человека который хочет понять как и зачем создавать компьютер?
Петсольд раскрывает фундамент. Что такое электрон? Какую проблему пытались решить люди изобретая реле, телеграф, логические вентили, и как они это сделали? Как "заставить" электричество сложить два числа? Как "заставить" энергию природы выполнять необходимые бытовые задачи? То есть Петсольд предлагает новичку идеалогическую базу для будущих знаний. Сначала показывает желание, а потом как достигать реализации этого желания. Это здорово в контексте школьника. Харрис же начинает с сухого изложения материала. Так нельзя поступать с новичками, а особенно со школьниками. Нужно разжигать разум школьника и рождать интерес в нём, а тогда уже подкидывать в этот огонь практические знания. Но никак не наоборот. Именно поэтому я использовал слово "сомнительно", в отношении Хариса для новичков. Харрис приводит историческую выжимку развития компьютеров, и упоминает, что какая-то там ракета за 7 миллиардов долларов разбилась из-за переполнения регистров. И это вызывает во мне волны негодования. То есть люди посчитали уместным вставлять в книгу подобные данные о странах, годах и финансовых показателях затрат
на создание ракеты. Эти мелочи весьма красноречиво говорит нам об их неумении без лишних отступлений ответить на вопрос "как и зачем создавать компьютеры?" Какая ирония! Они отлично разбираются в вопросе создания компьютеров, но не чувствуют неуместности вышеупомянутых данных в своей книге.
Все, что я могу по этому поводу сказать — миру нужен новый Петзольд. Пока его нет, можно попробовать слепить винегрет из Петзольда и Харрисов и применять для школьников его.
Вы кстати можете посмотреть мой онлайн курс (ссылки ниже) и высказать что вы про него думаете? Он сейчас запускается РОСНАНО для профориентации школьников и мне интересны разные мнения и оценки — habr.com/ru/post/443234 и про семинар по ПЛИС в апреле по поводу этого курса — habr.com/ru/post/444476
Я не пытался заменить ни Петзольда, ни Харрисов, а обрисовал все на пальцах для школьников со своей точки зрения инженера в микроэлектронной промышленности.
Вот как выглядит пару моих исторических справок из сценария к курсу (они есть на слайдах). Она сухая (курс не об истории), но мне интересно, не вызывает ли она у вас негодование?
1.2. Историческая справка: 70 лет развития
Первые цифровые устройства появились еще в середине XX века. Но на физическом уровне ранние компьютеры использовали не микросхемы. Такие машины как ENIAC (США, 1946) и МЭСМ (СССР, 1950), состояли из тысяч электровакуумных ламп-триодов. Другие ранние устройства использовали электромеханические реле. В конце 1950-х появились компьютеры на индивидуальных корпусированных транзисторах, и только в середине 1960-х — компьютеры на интегральных схемах.
[Картинки реле, ламп, корпусированных транзисторов, интегральных микросхем]
В ранних интегральных схемах поначалу было всего несколько транзисторов, поэтому их чертежи на уровне дорожек и транзисторов рисовали вручную или склеивали из кусков цветного картона. Разными цветами обозначали области чистого поли-кремния, области с примесями из фосфора и бора, а также дорожки из алюминия.
В начале 1970-х годов на рынке появились первые микропроцессоры от Intel, Texas Instruments, MOS Technology и других компаний. Их стали использовать в калькуляторах, первых микрокомпьютерах и игровых приставках. Началась жесткая конкуренция между микроэлектронными компаниями. Микропроцессоры стали расти, и проектировать их вручную стало невозможно.
[Картинки ранних калькуляторов, первых компьютеров — Altair 8800 или Apple I, игры Atari Pong]
Чтобы повысить производительность труда инженеров, компании стали использовать компьютерные программы для автоматизации проектирования. Сначала это были графические редакторы все тех же геометрических областей на кристалле. Затем появились умные программы, которые сами решали, как разместить транзисторы и соединить их дорожками. Человеку достаточно было нарисовать принципиальную схему, без привязки к физическому размещению.
К началу 1980-х годов программ для проектирования микросхем появилось так много, что возник термин Electronic Design Automation (EDA) Industry — промышленность по автоматизации электронного проектирования. Некоторые из компаний 1980-х остались лидерами отрасли до сих пор — Synopsys и Cadence Design Systems.
Одновременно пошла волна внедрения персональных компьютеров во все сферы жизни, в первую очередь офисы больших и малых компаний. Микропроцессоры, видеопроцессоры и другие чипы стали еще больше, рынок требовал выпуска новых изделий все быстрее и быстрее. Теперь инженерам стало тяжело даже рисовать принципиальные схемы мышкой на экране, как за 10 лет до этого стало тяжело рисовать дорожки и прямоугольники слоев на чертежах поверхности кремниевого кристалла. Требовались новые технологии, и они появились в середине и конце 1980-х: языки описания аппаратуры, моделирование на так называемом уровне регистровых передач (Register Transfer Level, RTL) и программы логического синтеза. Эти технологии и образовали так называемый маршрут RTL-to-GDSII, который используют и современные разработчики микросхем.
2.1 Историческая справка
Разделение электронных систем на аппаратуру и программы изобрели в середине 20 века. В 1946 году американский исследователь Джон фон Нейман опубликовал статью, в которой описал устройство компьютера с хранимой в памяти программой. С того времени эту организацию вычислений называют «архитектурой фон Неймана». Хотя правильнее было бы называть ее «архитектурой Экерта-Мочли-фон-Неймана», так как статья фон Неймана основывалась на компьютерах ENIAC и EDVAC, которые разработали в Университете Пенсильвании Преспер Экерт и Джон Мочли. Причина, по которой в названии остался только Джон фон-Нейман: компьютеры ENIAC и EDVAC заказала армия США и участники этих проектов на момент публикования статьи фон Неймана были засекречены.
Одновременно или довольно скоро после проекта ENIAC в мире стартовало несколько похожих проектов, включая советские проекты: «Макет электронно-счетной машины» (МЭСМ), возглавляемый Сергеем Алексеевичем Лебедевым, и проект машины М-1, под руководством Исаака Семеновича Брука. К концу 1950-х годов развились общие принципы программирования, которые мы используем до сих пор.
Историческая справка не требуется в материалах для новичков. Вместо этого лучше продемострировать возможности современных компьютеров и сказать за какой короткий срок мы достигли подобного технологического величия. Суть в том, что школьник не будет инвестировать своё внимание в то, что скучно.
Меня интересует исключительно то, как у вас происходит введение школьника в основу создания компьютеров. Например как объясняется про электричество, двоичную систему счисления, сложение двоичных чисел и применения электричества для сложения двоичных чисел.
Я не пытался повторить Петзольда, просто дал минимум, чтобы школьник гарантированно понял материал второй части (про логический синтез языков описания аппаратуры) и третьей (про физической размешение схемы на кристалле и применяемых при этом алгоритмах). Это разумеется не для всех школьников, это для профориентации школьников, у которых возникла идея пойти в вуз типа МИЭТ или на соотвествующие специальности в МИФИ, ИТМО итд.
Оглавление первой части выглядит вот так:
Оглавления второй и третьей частей есть в habr.com/ru/post/443234
Да, и меня ваши комбинации транзисторов кажутся сложными для школьников — тут вопрос как смотреть. Нужно просто попробывать все.
Исходно целевая аудитория была неочевидна, или я просмотрел. Если на олимпиадников, то может пойти успешно.
Ну да, так и задумывалось, спасибо за отзыв. Именно это было обкатано на живых юных организмах, прежде чем изложено на бумаге. Собственно, про то и заметка.
Кстати, замкнутый круг с сайта MIPS и под виндой получается.
А ведь это интересно не только школьникам, но и взрослым, которые хотят побольше узнать об электронике.Я пытался в свободное время написать (бесплатную) книгу по радиоэлектронике для начинающих — уровня Arduino,Raspberry Pi и пр.
Кое-что получилось, кому интересно flibusta.site/b/515361 (если ссылка не открывается то здесь).
Так-то да, согласен, современных книг типа «Искусства схемотехники», но на новой элементной базе, я не видел.
Arduino + Raspberry Pi позволяет делать кучу всего, от роботов до машинного зрения. Можете распознавание лиц запустить или даже нейросеть через Intel Compute Stick. Это же полноценный Linux, там в принципе все работает, хоть кластер многопроцессорный на Hadoop можно поднять. Так что вопрос про дебилов тут не стоит, смотря на каком уровне подойти к задаче :)
Новая база — это те транзисторы/компоненты, которые можно просто купить в ближайшем магазине, а не искать в антикварных лавках. Впрочем я специально не проверял, может то что написано у Хоровица еще есть в продаже.
запуск какой-либо задачи на готовом Linux никак не отличается от запуска подобной программы на десктопе. Каким образом связана схемотехника и raspberry?
Именно тем, что на Raspberry Pi легко работать с внешними устройствами — хоть serial port, хоть i2c, хоть обычный GPIO. Можно подключить датчики, моторы, да что угодно, хоть с квадрокоптера видеотрансляцию в полете делать или управлять роботом через интернет. По-моему для кружков или для хобби, то что надо. На рассыпухе сейчас много не соберешь — тот же акселерометр или bluetooth я бы дома сам не стал паять, слишком муторно.
Разумеется, от студентов радиотехнических вузов требуется большее, чем просто соединить 2 макетные платы проводами, тут согласен. Но еще по моему опыту учебы в ВУЗе, есть 2 категории студентов — те, кто заинтересованы сами и делают больше стандартной программы, и те кто просто отсиживает часы и знает что пойдет работать менеджером или продавцом в Медиамаркт и ему эти транзисторы/диоды нафиг не сдались. Для первой категории модульность это плюс — можно сделать что-то интересное, вторые соединят светодиод с платой проводами, свою «3» получат, и бог с ними.
«Сейчас» очень мало что можно спаять на коленке, чтобы было интересно, даже не все компоненты в DIP и удобных для пайки корпусах вообще есть. Хотя спасибо китайцам, отладочные платы есть на любой вкус и кошелек.
Я вовсе не против преподавания детям аналоговой схемотехники, дай бог если найдется преподаватель способный творчески и интересно это рассказать, но все интересные и современные технологии сейчас в «цифре», и любая поделка все равно упрется в необходимость хотя бы микроконтроллера. Ну не на голой логике же все делать.
Про кружки не знаю, я их не вел. Думаю, туда все же идут по призванию, а не из-за денег, какие там деньги в современном образовании… Да и мне на месте современного школьника было бы интереснее робота с питоном делать, чем светодиодом на транзисторе мигать. Времена поменялись, и то что было круто в 70е, сейчас уже не будет интересно. Ну можно сделать это 1-2 раза, но целый год, увольте :)
То что «сейчас ничего нет» это имхо брюзжание предыдущего поколения :) Современные дети сейчас могут собрать столько всего, сколько в 70е и не снилось, и современный радиокружок может быть ничуть не менее интересным чем тогда. Но технологии другие, конечно, материальная база другая.
Опять же, повторю свою мысль из другого сообщения. Если найдется педагог, способный интересно и творчески преподавать аналоговую схемотехнику, я был бы только рад. Но в реале, мало верится что этим детей можно надолго завлечь.
А питон издавна используется как для научной так и математической работы, конечно mathlab наше все, но и на питоне все можно посчитать. Да, порог вхождения стал ниже, не используется IDL и тп. Но люди решают задачи.
Питерский selectel пополной до недавнего времени python везде использовал. Железные проекты тоже на python работают, тот же gnu radio по полной использует. Вы его можете на малинку закатать и реализовать sdr приемник, поиграться с либами, написать свой обработчик и тд пакетов, кодер/декодер и тд.
Малой сделает телеграмм бота на малинке и питоне, это уже здорово, вдруг этот бот поможет людям больше чем железка с софтом от звездной команды. Ребята из JetBrains сделали Kotlin, там далеко не дураки работают, сделали очередной язык коих тысячи. Но они сделали, google и другие пользуются.
Сейчас в мире наблюдается тенденция, много кода уже написано, много программ уже придумано, потому все чаще становятся нужными люди на вакансию software architecture, со знанием паттернов и языков программирования, а важным скилом является умение взять готовое и адаптировать под свое решение, дописать если нужно, и выкатить продукт.
Простая комбинаторика, да не спорю. Не гениально, нет компиляции того, что еще не придумано в природе и обществе. Не так много в мире задач, где требуется Перельман.
Это позволяет решать задачу, быстро и с минимальными затратами, что зачастую бизнесу и нужно.
Сейчас важнее решать задачи, а написание кода, реализация железа и тд это вторичные вопросы. Мир слишком быстро меняется, а код и железо делается крайне долго, он может оказаться ненужным, к этому моменту задачу уже решат по-другому.
Вы слишком жесткий к себе и людям. Сейчас, как мне кажется, нужно всем больше любви.
«Лучше быть оптимистом и ошибиться, чем быть пессимистом и оказаться правым.»
1. Миллионы поднимаются не на кикстартерах, а в традиционных VC-funded стартапах. Среди 651 проекта на ардуино на сайте кикстартера ни один проект не поднял даже один миллион долларов — см. www.kickstarter.com/discover/advanced?term=Arduino&sort=most_funded&seed=2589293&page=1
2. Даже в кикстартерных компаниях, которые я видел, для встроенных проектов используются чаще не ардуино, а обычные тулчейны.
3. Кикстартерные проекты (с ардуино или без) — это конечно милая ниша для молодых людей, которые хотят что-то попробовать на грани с хобби, но погоды кикстартерные компании не делают, и подавляющее большинство проектов в больших и малых компаниях требуют более строго подхода к программированию микроконтроллеров и встроенных систем, чем используется с ардуино. В самых разных областях — контроллеры лазеров, холодильники, военно-космические проекты, массовые гаджеты итд итп.
Кикстартерные проекты (с ардуино или без) — это конечно милая ниша для молодых людей, которые хотят что-то попробовать на грани с хобби, но погоды кикстартерные компании не делают
Там вообще модель «молодые стартаперы вышли с идеей отличного продукта и собрали миллионы» в общем и целом мертва года три как. Большинство таких проектов бултыхается со сборами в единицы тысяч долларов при таргетах 10-100К.
Значительная часть успешных стартапов на кикстартере не зарабатывает, а тратит: открывается кампания, вкладываются тысячи, иногда десятки тысяч долларов в продвижение, результат подшивается к инвестиционной презентации и несётся в большие фонды за настоящими деньгами. В фейсбучной рекламе под это аж целый новый жанр появился — фейковый high-tech обозреватель бурно восхищается продуктом.
А если мы говорим про микроэлектронику где изучаются все переходы, дырки, электроны и кулоны, то с этим еще сложнее. Вчера у меня был в гостях приятель, закончивший университет по направлению микроэлектроника, просил помочь ему со схемой. Говорит, понимаешь, я все знаю, как это устроено, как там все внутри работает и тд, но в схеме я не понимаю как мне это все применить. Мы с ним познакомились на производстве, он управлял техпроцессом автоматического монтажа и сборки печатных плат.
Напишите компаниями типа Nordic Semiconductor, возможно они скажут, какие знания нужно иметь чтобы можно было попытаться устроиться Digital IC Designer. Вот это, может хоть как-то помочь сделать их жизнь качественной.
Зачем бы мне кому-то писать, я сам на Интел несколько лет отработал. С теми знаниями, что в МИФИ получил и за три года работы в отечественной фирме приобрел.
Я надеюсь что для большинства тех детей, все это направление останется только как хобби.
Я надеюсь что они не потратят кучу времени на это, чтобы как основная часть моих друзей (по всей стране, я очень много выступал на конференциях по железу и софту), не переучивались потом на Java и Go, столкнувшись с объективной реальностью.
Скажите а почему же ты этим занимаешься? Мне скорее не повезло, из-за дикой любви к электричеству с 4-х лет. Мелкого не пустили на радиокружок. А как заставить примата заниматься чем-то? Показать, завлечь, а потом запретить.
Все новшества и разработки тянут на своих плечах увлекающиеся люди, а не манагеры, для которых важна только личная прибыль. Именно манагерский подход убил (и убивает) и творчество, и идеи, и стремление к улучшению.
И ни кто не говорит, что дети после этих занятий сразу побегут поступать в институты. Для кого-то это может стать работой жизни, для кого-то хобби, для кого-то просто останется приятным опытом из детства. И очень приятно, что есть люди, которые предоставляют возможность сделать этот выбор.
Все разработки тянут на себе увлекающиеся люди, да и компании, я посещал все хакатоны Intel Edison в Питере и Москве, там действительно много умных и талантливых ребят было, делали проекты, ребята из emlid посути сделали первый RTK GNSS устройство на Edison и у них получилось сделать стартап, большие молодцы.
Но больше Intel не делает хакатоны, и проект Intel Edison закрылся. Я тоже попробовал сделать свое устройство, сделал, даже образцы продал, год тестировали, почти 2 года на все ушло, более 2,5 млн.руб, и всем все нравилось, но манагерский подход руководителей, убил проект. Скоро расскажу о нем на хабре. Пока еще осталось немного денег, попробую продвинуть проект.
А когда денег не останется, то скорее всего я пойду на работу, где мое творчество, врят-ли кому-то нужно будет, а нужно будет выполнение конкретных задач.
Да и сами вы не будете думать о творческих задачах, если вам банально поесть нечего или заплатить за квартиру.
Конечно
Go, Java, Python, Anrdoid, IOS, С/С++, ИИ и Data Scientistвероятно более востребованы на рынке, даже на локальном, но вот лично мне тяжело заниматься более прибыльными, но абсолютно не интересными мне вещами. Но если решиться заниматься неинтресным делом, то есть еще более выгодные (и востребованные рынком труда!) позиции, чем Го-программист — менеджер по продажам например :)
Ну и в случае полного упадка экономики уже и программировать ничего не придется, и продвать друг другу будет нечего, а вот на отремонтировать что-нибудь сломавшееся всегда будет спрос, а значит будет и хлеб, и масло, и ресурсы на квартплату. В крайнем случае, можно будет паять айфончики в каморке под лестницей за доширак в странах первого мира :)
Востребованы и работники клининговых компаний, их тоже это кормит…
Но есть конкретный измеримый результат, в электронике это устройство работает, потребляет определенный ток, и тд.
В биологическом представлении, вы потратили N своего времени (невозобновляемого ресурса), поменяли его на деньги. Купили дом, машину, квартиру и тд.
Я все понимаю когда, ребята вот есть Go, Java, Python, Anrdoid, IOS, С/С++ и там вы будете зарабатывать X2-4. Вы сможете работать в крупных компаниях, над крупными проектами, в худшем случае в частных компаниях писать приложения, либо свои, а есть вот электроника, там вас в лучшем случае ждет КБ, X1 зарплата, а в худшем будете чайники и телевизоры со стиралками ремонтировать. Если вы согласны, значит это осознаный выбор. Если человек готов к этому, то я не против.
Вот можно в одной и той же компании можно копаться в железячках АСУТП за х1, а можно программировать 1С за х2. Почему то у нас в городе 95% вакансий программиста это как раз 1С, с очень вкусными предложениями по зарплате, но спрос не рождает предложение, так как вакансии эти висят годами.
Ну и в электронике можно найти свою нишу, с достойной материальной компенсацией потраченного времени. А вот как раз ремонт чайников в эту категорию не попадает, но на черный день сгодится.
Релевантен ли ваш пример вообще, вы подумали?
запрос не верный, ищите "радиотехник", в отличие от программистов, радиотехник более широкая профессия, он не имеет право узкоспециализироваться…
нас в городе зп радиотехника выше программиста и вакансий в разы больше…
Зп радиотехника выше программиста — да ладно, это где?
Есть еще одна большая разница между бугром и нашими. Например, за бугром не очень круто делать работу, за другого человека. Тоесть если вы старший инженер, вы не будете делать работу за электромеханика. У нас же, руководство так поставит вопрос, что у тебя неостанется выбора.
Кроме того я видел как технический директор, крупнейшев в России компании по производству мяса, давал задание главному инженеру подыскать электрика за 15-20 тысяч.
Потому в россии многие мамкины инженеры, и в различных пабликах постят как и дом построил, и розетку починил, и холодильник, и свет провел, машинку подключил и плитку уложил, и тд. В европе же, есть специальный человек, которому нужно заплатить и все будет сделано. Э-экономия
радиотехников занимающихся действительно разработками больше чем Сколково,
приезжайте, хотя зп в общем ниже чем в мск, но радиотехники больше ценятся, тк их не хватает
Чтобы не ломать судьбы детей, начните новый лагерь с обзора зарплат, электронщиков, микроэлектронщиков, программистов плис, мк и тд
Давайте-ка я вам судьбу сломаю и намекну обозреть зарплаты американских лойеров… Страдайте теперь всю оставшуюся никчёмную теперь доя вас жизнь. :)
Да и обычные адвокаты по семейным делам, отлично зарабатывают и в РФ, тут можете послушать истории Джанго
Юристы, все же, это другой слад ума, не требующий сильных знаний физики, математики и тд.
Я говорю о тех сферах, где применимы знания, программиста, электронщика или радиотехника.
Я как человек с детства занимающийся электроникой, от схемотехники до программирования, с опытом более 12 лет, пишу вам как все из-нутри выглядит, получаю минусы, пишите хотябы с чем не согласны, приводите доказательства, сссылки и тд.
А вообще, всё очень сильно зависит от страны. Ваше мнение ни к чему, кроме коллапса на рынке труда не приводит. Перекос в любую сторону дестабилизирует систему. Специалисты всякие нужны.
Тенденция да, есть, что на одного реально работающего электронщика нужно 2-3 программиста (по крайней мере в embedded-системах). Но это не говорит о том, что работа электронщика никому не нужна.
Следуя вашей логике, в нашей стране кроме мастера и помбура вообще больше никто не нужен.
Моя мама работает операционной мед.сестрой с зп ~22 т.р. в районной больнице. Стаж овер 30 лет. Недавно от-туда уволилась бригада скорой помощи целиком и пошла работать в индюшатник (индилайт), потому что зарплата на скорой 15 тысяч, а в индюшатнике 45 тысяч. Таже бригада скорой помощи в США или Европе, получала бы другие деньги.
К коллапсу на рынке труда приводит не мое мнение, а экономика посути, кто требуется, на того и спрос, там и оплата больше, сейчас спрос на backend/Frontend/mobile, потому больше вакансий, большие ЗП.
Специалисты то всякие нужны, это так, но кто-то нужен больше, а кто-то меньше, только время жизни одних стоит на рынке занятости больше, а других меньше. Россия это капиталистическая страна, а значит мы здесь меняем один ресурс на другой, и у всего есть цена. Мы не живем с вами в Швеции например где «социал-демократия», и вроде-бы все получают примерно поровну.
Электронщик может вытянут спокойно 2 проекта, или даже на две команды 1 электронщик. От старта проектирования схемы, до получения опытного образца, обычно проходит до 1 месяца у опытного электронщика, заточненного под embedded системы, и дальше его работа, в допиливании найденных косяков (если такие будут), а вот писать код, это реально гораздо дольше, особенно если проект большой.
Я разбираюсь и в проектирование схем и печатных плат, так и в коде. Последнее мое устройство, около 150 компонентов схемы, ARM + ADC + GSM + GPS + RS485 + CAN, сложная система питания, DC/DC и тд. Первую версию платы выкатил уже через 3 недели, в следующей поправил косяки и отдал на тесты заказчику, в третьей еще пару нюансов исправил и продал небольшим тиражом. На все провсе на плату ушло 1,5 месяца. Но код к этому устройству, с бутлоадером и прошивкой, сейчас более 80 тысяч строк, я его менее полгода писал каждый день по 12-15 часов, чтобы успеть в срок.
Ахахаха, 3 недели на плату со 150 компонентами?)) После такого крайне смешной выглядит фраза:
Я разбираюсь и в проектирование схем и печатных плат, так и в коде.
Я вас спешу огорчить — вы не разбирайтесь ни в электронике, ни тем более в конструирование ПП, иначе бы эта задача заняла 2 рабочих дня по 8 часов. Как можно было это растянуть на 3 недели — загадка…
Если мы говорим о задаче, предварительно проработанной то:
Несколько дней мы проектируем схему, несколько дней мы делаем дизайн PCB, далее производство печатных плат, закупка компонентов, сборка опытного образца. Это занимает в среднем 3-4 недели. Я об этом сроке говорил.
Проект инвертора это куда сложнее, там без опыта необойтись, подбора зачастую правильных компонентов, в том числе и выбора компонентов, одного наименования но разных производителей. Множество расчетов и тд. Тут точно работы больше.
Я показал пример из ХХ, он простой и наглядный, как EMC2. Это говорит о том что такие проекты недоступны либо обычному соискателю, либо в России. А процессы и производственные процессы у всех разные, и говорить что ты этого и того не знаешь это странно. Пока не погрузишься — не узнаешь.
вы как минимум не знаете и 10% рынка
Вы потратив 3-4 года на каждого работодателя, даже пусть по 2-3 проекта в год, вы все равно не узнаете всех проектов. Вы никогда не выпьете весь алкоголь и не попробуете всех женщин в мире. Это плохой аргумент.
Основная масса даже в Мск сидит на 80-120к, а про «замкадье» и говорить не стоит, в моем родном миллионнике зп у синьора всего 100к, эти же 100к я зарабатывал АСУшником и потом схемотехником.
Что и требовалось доказать. У меня есть приятель с вуза, я пошел в программирование под железки, он пошел в андройд, в 500к население городе, 150к поднимает.
А что требовалось? Изначально речь шла, что зп в железе ниже, а вакансий меньше.
На практике их сильно меньше, HH показывает это.
Т8.
Опыт Arria 10GX и DDR4 этого мало, потребуют еще знание DWDM систем, сети связи, коммутации, проводные, оптические, интерфейсы, а у программистов помимо знаний ПЛИС еще и теорию массовго обслуживания обслуживания и спецовые алгоритмы. Знать будешь ВООО, и считать себя умнее других, а получать будешь как сеньер у джавы.
И получается ты должен быть выпускником Бонча, кафедры СС где как раз эта DWDM от T8 стоит, ну и паралельно ходить на плис. Это слишко узко.
Из джавы легко уйдешь в другой проект, а там тебе весь мозг вынесут типа, тыже с альтерой работал, а у нас зайлинкс.
Фигня короче, будьте программистами высокоуровневыми и будет счастье, спокойная семейная сытая жизнь, с доступной работой, и без гемороя, со всяким DWDM.
кто требуется, на того и спрос, там и оплата больше
Мне представляется, что ЗП программистов выше (у нас) в основном из-за того, что многие люди с такой профессией могут спокойно (по сравнению с железячником, например) работать удаленно на заказчика с оплатой за доллары. Из-за этого, компании, которые хотят привлекать к своей работе качественные кадры, вынуждены платить равноценную зарплату в рублях.
От старта проектирования схемы, до получения опытного образца, обычно проходит до 1 месяца у опытного электронщика, заточненного под embedded системы
Ха-ха, повеселили. Сферический проект в вакууме. Как, впрочем, и NordicEnergy со своими рассуждениями о двух рабочих днях.
Я разбираюсь и в проектирование схем и печатных плат, так и в коде.
Код, фото плат в
А мешает как раз физический гемор (паяльное место, хранение комплектующих и прочее). Программисту для работы нужен только компьютер. Железячнику — куча физически существующего барахла, которое не всегда есть где разместить.
Анализатор DSA832E-TG - 150к
БП DP832 - 30к
Полевой осцил SDS1202 20к
Полевой БП Manson 10к
Норм осцил DSOX2012A 100к
Антенный анализатор 10к
Паяльник Ersa 25к
Фен 8к
Fluke мультиметер за 10к
Два стелажа с компонентами бесценно!
Генератора не хватает, последний встал на таможне, и уехал назад.
Надо бы два, DDS до 100мгц, за 30к от сиглента, и что-то типа Anritsu MG3700A за 150к
Сферический проект в вакууме
Согласен, все проекты разные. Там где я варюсь, IoT и автоматизация, у меня столько уходит. При 100% доступности на складе в компеле получается быстрее. Максимальный срок получения собранной или самостоятельно собранной железки 3-4 недели, без мыльной попы, в спокойном режиме.
Код, фото плат в студию!? :)
Скоро будет статья, обязательно увидите.
начните новый лагерь с обзора зарплат, электронщиков, микроэлектронщиков, программистов плис, мк и тд. И сравните их с Go, Java, Python, Anrdoid, IOS, С/С++
Я изучал микроэлеткронику, «переходы, дырки, электроны и кулоны» на физико-техническом факультете, из Go и Python знаю только названия, 15 лет отработал в Европе в полупроводниковом производстве, сейчас директор небольшой МЭМС фабрики в России. Зарплата устраивает (больше, чем я получал в Европе). Что я сделал не так?
Считаю, что автор поста все делает правильно. Если интересно, могу для школьников организовать экскурсию по МЭМС производству. Лекции по технологии производства тоже можем прочитать.
Но вы сами сказали что поехали реализовываться в европу. А быть Embedded или Design инженером, на территории США, Европы это другой разговор и другие цифры, я же приводил HH в России.
А после того как опыт и контакты были собраны, организовали это в России. Сколько у вас специалист в 3-5 летнем стажем зарабатывает, который непосредственно дизайном ИС занимается? Сильная ли разция с европейскими зарплатами? Есть ли разница по спросу и предложению в России и Европе? По масштабу проектов?
Смысл моего предыдущего комментария в том, что не надо молодежи говорить: «Вот это деньги приносит, а это нет. Программирование высокооплачиваемая профессия, а схемотехник (или технолог) — нет.» Нужно показывать все варианты, кому-то одно интересно, кому-то другое. Кто-то найдет работу в России, кто-то за границей. Кроме того, сегодня сложно предсказать, какие специалисты будут востребованы через 20 лет, когда нынешние школьники достигнут карьерной зрелости. В 90-х, когда я учился в ВУЗе, самой популярной и высокооплачиваемой профессией были бухгалтеры и экономисты, на студентов технических вузов смотрели с сожалением. Мой друг пошел на радиотехнический факультет и специализировался на антеннах. Казалось бы — вообще тупик, кому сейчас нужны антенны (конец 80-х начало 90-х)? А потом вдруг появилась мобильная связь и спецы по антеннам стали на вес золота — как правильно рассчитать покрытие сигнала и расположение базовых станций таким образом, чтобы минимизировать их количество?
Я с вами полностью согласен, что наша задача показать максимально большое количество вариантов применения себя (раскачать маятник восприятия). Вот я от автора и хотел чтобы он в том числе показывал и разность зарплат, и чем богатый от бедного инженера отличается.
Прежде чем освоить stm32, пришлось пописать и под атмеги, под пикушки, at91 и nxp, ad blackfin, и только потом stm32. Потому, что именно этого требовал рынок, покрайнее мерее от меня. Это UM LPC1768 Там 851 страница, это только проц UM, а вы используете еще периферию, а там своя немалая документация. Помимо этого, нужны базовые знания: программирование, алгоритмы и структуры данных, логические элементы, принципы работы периферии и тд. Документация на SIM800C для IoT ох какая немаленькая. Школьник за месяц не выучит точно, а вот помереть от скуки в поцессе обучения это вполне реально.
Что нужно для программирования на Go? 2 книги: — Язык программирования Go (Алан А. А Донован...), Алгоритмы (Род стивенс), каждая по 500 страниц, и вуаля, ты программист Go, пару лет назад туда без опыта брали людей.
Кросс-компилить я могу, а вот пошить без IDE или софта программатора, Segger или st-link, через OpenOCD или GDB нет. Не понимаю, зачем изобретать велосипед, если есть простой, правильный и рабочий метод. Все современное программирование под android например, это давно достижение целей методами, предусмотренными google программистами. Для gcc можно использовать как make, cmake так и msbuild. Я сейчас последним посльзуюсь, он многопоточную компиляцию тянет, купил рязань 2700x проц, и на нем все бысnро компилю. А прошить контроллер можно и без GDB, через встроенный загрузчик например. Ваше требование к кандидатам странное, это как знание ассемблера в 2к19, вроде знять круто под конкретный проц, но практической ценности 0, так как все пишут на с/с++. Вообще у меня есть идея написать плагин для intellij idea для работы с arm, тогда разберусь как ocd и gdb работают. Люди просто так многие не изучают это, тк это на практике ненужно. Для чего вам нужно просить помигать светодиодом с помощью gcc и блокнота? Какая в этом практическая ценность?
В СПБ будет семинар по i.MXRT1050, будете присутствовать?
У нас уровень электроники в стране крайне низкий, отсюда и средняя зп не очень высокая, т.к. платить за просто так никто не будет.
Я так несчитаю. У нас кто этим действительно плотно занимался, работают и успешно в своих направлениях. Обычно такие ребята крайне вредные и на остальных как на идиотов смотрят, но они молодцы в своих направлениях. Я считаю что у нас одни из самых лучших программистов и электронщиков. Последних крайне мало, тк нет инвестиций, нет интересных проектов, сложность, необходимость оборудования, в компаниях его-то нет, а дома не каждый готов выделить в квартире комнату под оборудование. Я с вами согласен, что в россии нет крутых проектов, нет проектов — нет денег, потому вы и считаете что все кто тут этим занимается — балбесы, ничего не знающие. Кто не балбес, работает либо с европейским рынком. Что и требовалось доказать, в России сейчас электронщики ненужны.
это сложившийся склад мышления, Изучение инструментов это важно, но не главное.
Тогда бы тех-же самых программистов с/с++ брали в embedded, но нет просят и linux kernel знать и bare-metal и тд. А значит просят конкретный опыт. Да вы и сами на него обращаете внимание. А склад ума и мышление, о котором вы говорите ставят в наших вузах это точно.
Я же говорил про Go, где несколько лет назад брали с опытом программирования но без опыта Go. Один мой приятель, закончивший вуз с красным дипломом, поработав embedded разработчиком пару лет, после рождения 2х детей понял что денег не хватает, ушел в Go в Wildberries, чему безмерно рад. А я был не рад, потому что показал ему embedded и завлек в него, на который он впустую потратил лет 5 своей жизни.
Сломалась TrueStudio/keil!ну бывает сломалась. Поноет, поноет, да и разберется что не так. Почитает про препроцессор, компилятор и линковщик. Просто у вас галочка определенная, человек может быть талантлив но не знать именно этого, подсистему Makefile например, и не сможет собрать проект в котором больше одной main функции. И не устроится на работу, тк просто не потратил пару вечером на то чтобы разобраться как, там все собирается. Вобщем это не првильно отбирать человека по знаниям, которые можно получить по одному клику из википедии или за вечер. Важно мышление и опыт.
В тоже самое превращалась работа плисовиков, реализовывать механизм из алгоритма и математики. Эти ребята, вообще постоянно в тенис играли и кофе пили, у них проект компилился 3-4 часа, даже на самых мощных ПК. Пару раз за рабочий день, в лучше случае они его собирали.
а там электронщики зарабатывают как минимум столько же, а люди, пилящией проекты под космос и энергетику сильно выше, чем те же явисты
Какие ваши доказательства? Особенно про космос.
Если кто-то после этого захочет двигаться дальше, то все пути открыты.
P.S. Вспоминается, например, Р.Тонхейм «Основы цифровой электроники».
У меня именно Токхейм из старичков в списке литературы. Очень хорош для своего времени. Но он тоже не лезет внутрь вентилей, что мне не нравится. Именно вот книжки с разбором кишок вентилей в железе я не нашел нигде. Счёл это неправильным. Ну и исправил этот недостаток.
По поводу иллюстраций. Вверху есть мой комментарий со ссылкой на бесплатный цветной ПДФ с иллюстрациями. Почему издательство выпустило книгу без цветных вклеек, я не в курсе. Мне как никому не известному новичку в этом деле не с руки было выпендриваться: книга вышла, и прекрасно. Дальше жизнь покажет.
Спасибо за книгу, с большим удовольствием её прочёл. Смело рекомендую её школьникам и кружководам. Издательство, как всегда, сэкономило на цветной печати, это единственный минус бумажной книги. Пишите ещё!
Спасибо вам и другим комментаторам за добрые слова. Минус книги является ее диалектическим плюсом при этом — она получилась дешёвой, то есть доступной даже небогатым семьям. Это тоже одна из задач была, которую перед собой сам ставил. С этой же целью прорабатывал все схемы с точки зрения минимизации зоопарка деталей.
А какие темы из книги требуют продолжения по вашему мнению?
PS. Только в качестве пожелания,
Микроэлектроника для школьников от самого истока