Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, мыщъх, Вы писали:
EP> Вполне нормальный подход — преподаватель убирает типичные грабли EP> и обрезает всё лишнее из API, оставляя только необходимое для изучаемых тем.
подход -- нормальный. микроконтроллер так же обрезает все лишнее, причем обрезает так, что у нас нет ни оси, ни защищенного режима ЦП. причем, каждый компонент системы можно потрогать руками и заменить на другой. писюк же это черный ящик.
М>>Почему бы не использовать для обучения Си и микроконтроллеры? EP>Что дадут микроконтроллеры начинающим программистам кроме дополнительных сложностей (типа отладки железа)?
во-первых, отладочную печать никто не отменял (и именно так и отлаживают программы все нормальные программисты на никсах, не испорченные студией), во-вторых, микроконтроллеры дают простоту. как простоту схемотехники, так и простоту программирования. даже формат ELF/PE файлов объяснять не надо. это как com файл в старые добрые времена ms-dos...
М>>К тому же у многих микроконтроллеров буквально несколько килобайт (!) оперативной памяти на борту, что учит бережно относится к каждому байту. EP> Усложнение на ровном месте. Если уж брать экономию памяти, то нужно показать почему EP> и когда это необходимо в компьютерных программах — то есть в том что эти самые студенты и будут создавать в будущем.
в священных войнах сплошной мат и стон сколько памяти отжирают лис и хром. и не только они... это не усложение. это как раз упрощение. потому что когда hello world на выходе компилятора превращается в огромный файл -- возникает вопрос: почему так много и что компилятор туда положил? давайте уберем ненужные слои абстракции и будем работать с цп напрямую.
EP> Например показать что производительность линейного обхода (самой типовой операции) EP> часто упирается в memory throughput, и уменьшив sizeof(T) можно получить практически кратное ускорение.
на микроконтроллере разница будет еще значительнее. кстати, как вы уменьшите sizeof? если это указатель на, то просто так его не уменьшить. можно использовать индексы -- это да. но тогда и память нужно выделять заранее, чтобы индексы "прыгали" в пределах одного блока. в идеале -- юзать укзатели, но с различной разрядностью, чтобы для кодирования соседних элементов использовать всего один бит, но тогда нам нужно делать map для указателелей, хранящийся отдельно от данных и это даже для профи совсем непросто и зачастую ненужно.
EP> вытравил плату методом лазерного утюга, воткнул туда ATmega168 и ST232,
DIP можно воткуть и в макетник, да и утюг нам не нужен. можно и руками нарисовать рейсфедером нитрокраской.
> сделал прошивку на asm,
можно и си использовать...
> сделал плагин к Winamp'у, и по COM-порту гонял управляющие команды для этой цветомузыки.
можно USB. или прямо к выходу звуковухи подрубиться, собрав простейший АЦП на коленках.
EP> И при всём при этом, я бы не стал начинать обучение программированию с микроконтроллеров.
мое дело -- предложить.
EP> Это касается именно программистов, если же брать например EP> electrical engineering, то думаю можно начать и с микроконтроллеров
все-таки я не пойму почему вы против.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.