Здравствуйте, мыщъх, Вы писали:
PD>> Почему я не хочу С в качестве начального языка обучения — уже писал в предыдущем топике.
М>си это паскаль со скобками. кстати, именно микроконтроллеры позволяют обойти отсутствие поддержки строк в си. там нам не нужны строки. точнее, не сильно нужны.
PD>>Насчет микроконтроллеров (независимо от языка) — я против, потому что это весьма специфическая область,
М>что в ней специфического? >это как раз винда и линух специфические области с точки зрения студента, который уже пишет для веб и курит понятия событийно-ориентированного программирования и stateless. а программа на паскале (си, питоне) обычно представляет упорядоченную последовательность... как, собственно, и само определение алгоритма. разрыв шаблона и взрыв мозга.
Совсем не обязательно при начальном обучении давать событийно-ориентированное программирование. Консольные программы есть и в Windows, и в Linux.
PD>> и при программировании для них не избежать решений, не носящих универсальный характер,
М>например? базовый ввод-вывод у нас есть из коробки. это чтение запись в последовательный порт, который можно смотреть терминалом. специфических расширений компилятора не используется. программа собирается и заливается на микроконтроллер по щелчку мыши.
М>привести хотя бы пару примеров решений "не носящих универсальных характер", плз.
Ну хотя бы проблемы с ограниченным объемом АП. Этого порой достаточно для того, чтобы применять всякие хитрости, которые лучше бы не применять. Я непосредственно с микропроцессорами не работал, но досовскме проблемы с сегментами в 64 К помню, и huge указатели тоже помню, и не надо их больше.
PD>> Напоминаю, я по-прежнему веду речь о начальном этапе. Начальное обучение должно
PD>> быть как можно меньше привязано к специфическим особенностям среды исполнения.
М>блин. я помню как в трту (таганрогский радик) нам сначала схематично рисовали эвм. вы тоже ее рисуете? надо же объяснить людям что это такое, верно? вот ЦП, вот память, вот перефирия (шина и порты). такая простая модель. и микроконтроллер ей соответствует чуть больше чем полностью. разве что память там внутри. но это ж мелочь. главное, что вот они ПОРТЫ.
Я не рисую. Объяснить про память можно, порты в первоначальном курсе совсем не нужно затрагивать.
М>а меня знакомые студенты постоянно просят объяснить как так по одним и тем же адресам памяти в разных процессах разные данные. приходится совсем все упрощать и говорить: вас же не удивляет, что у двух массивов по одному и тому же индексу разные данные? забудьте про память. вас обманули. указатель это как индекс, то... указатель. но и индекс тоже. это идекс в таблице которую руками не трогать. тем более, что она там не одна...
Они после такого объяснения что-то понимают ?
Не надо тут упрощать. Надо просто объяснить разницу между физической и виртуальной памятью и немного рассказать про механизм трансляции адреса. Но это не в начальном курсе.
М>ну и как работает видео-карта и как она ложиться на схему ЭВМ -- это тоже встречает непонимание. слишком много слоев абстракций. слишком сложно все это. объяснить, что консоль это точно такое же графическое окно, только это консоль -- сложно. объяснить графический вывод еще сложнее. а вот если подцепить к микроконтроллеру небольшой графический дисплей, то там все понятно. можно зажигать точки. из точек составлять отрезки. из отрезков -- графические примитивы.
А это в начальном курсе вообще лишнее. Есть дисплей, на него строки выводятся с помощью printf/cout/writeln. Для начала вполне хватит. А потом будет курс по устройству всего на нижнем уровне, там и объяснить.
В общем, всему свое время. Начальный курс программирования базируется на изучении языка, алгоритмов и исполняется в той среде программирования, которую выбрали , без погружения внутрь. Остальное потом, вот там можно и пдробности привести.