Информация об изменениях

Сообщение Re[3]: язык и железо для обучения от 05.04.2015 12:10

Изменено 05.04.2015 16:53 Pavel Dvorkin

Здравствуйте, мыщъх, Вы писали:

PD>> Почему я не хочу С в качестве начального языка обучения — уже писал в предыдущем топике.

М>си это паскаль со скобками. кстати, именно микроконтроллеры позволяют обойти отсутствие поддержки строк в си. там нам не нужны строки. точнее, не сильно нужны.



PD>>Насчет микроконтроллеров (независимо от языка) — я против, потому что это весьма специфическая область,

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

Совсем не обязательно при начальном обучении давать событийно-ориентированное программирование. Консольные программы есть и в Windows, и в Linux.

PD>> и при программировании для них не избежать решений, не носящих универсальный характер,

М>например? базовый ввод-вывод у нас есть из коробки. это чтение запись в последовательный порт, который можно смотреть терминалом. специфических расширений компилятора не используется. программа собирается и заливается на микроконтроллер по щелчку мыши.

М>привести хотя бы пару примеров решений "не носящих универсальных характер", плз.


Ну хотя бы проблемы с ограниченным объемом АП. Этого порой достаточно для того, чтобы применять всякие хитрости, которые лучше бы не применять. Я непосредственно с микропроцессорами не работал, но досовскме проблемы с сегментами в 64 К помню, и huge указатели тоже помню, и не надо их больше.


PD>> Напоминаю, я по-прежнему веду речь о начальном этапе. Начальное обучение должно

PD>> быть как можно меньше привязано к специфическим особенностям среды исполнения.
М>блин. я помню как в трту (таганрогский радик) нам сначала схематично рисовали эвм. вы тоже ее рисуете? надо же объяснить людям что это такое, верно? вот ЦП, вот память, вот перефирия (шина и порты). такая простая модель. и микроконтроллер ей соответствует чуть больше чем полностью. разве что память там внутри. но это ж мелочь. главное, что вот они ПОРТЫ.

Я не рисую. Объяснить про память можно, порты в первоначальном курсе совсем не нужно затрагивать.

М>а меня знакомые студенты постоянно просят объяснить как так по одним и тем же адресам памяти в разных процессах разные данные. приходится совсем все упрощать и говорить: вас же не удивляет, что у двух массивов по одному и тому же индексу разные данные? забудьте про память. вас обманули. указатель это как индекс, то... указатель. но и индекс тоже. это идекс в таблице которую руками не трогать. тем более, что она там не одна...


Они после такого объяснения что-то понимамют ?

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

М>ну и как работает видео-карта и как она ложиться на схему ЭВМ -- это тоже встречает непонимание. слишком много слоев абстракций. слишком сложно все это. объяснить, что консоль это точно такое же графическое окно, только это консоль -- сложно. объяснить графический вывод еще сложнее. а вот если подцепить к микроконтроллеру небольшой графический дисплей, то там все понятно. можно зажигать точки. из точек составлять отрезки. из отрезков -- графические примитивы.


А это в начальном курсе вообще лишнее. Есть дисплей, на него строки выводятся с помощью printf/cout/writeln. Для начала вполне хватит. А потом будет курс по устройству всего на нижнем уровнеЮ там и объяснить.

В общем, всему свое время. Начальный курс программирования базируется на изучении языка, алгоритмов и исполняется в той среде программирования, которую выбрали , без погружения внутрь. Остальное потом, вот там можно и пдробности привести.
Re[3]: язык и железо для обучения
Здравствуйте, мыщъх, Вы писали:

PD>> Почему я не хочу С в качестве начального языка обучения — уже писал в предыдущем топике.

М>си это паскаль со скобками. кстати, именно микроконтроллеры позволяют обойти отсутствие поддержки строк в си. там нам не нужны строки. точнее, не сильно нужны.



PD>>Насчет микроконтроллеров (независимо от языка) — я против, потому что это весьма специфическая область,

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

Совсем не обязательно при начальном обучении давать событийно-ориентированное программирование. Консольные программы есть и в Windows, и в Linux.

PD>> и при программировании для них не избежать решений, не носящих универсальный характер,

М>например? базовый ввод-вывод у нас есть из коробки. это чтение запись в последовательный порт, который можно смотреть терминалом. специфических расширений компилятора не используется. программа собирается и заливается на микроконтроллер по щелчку мыши.

М>привести хотя бы пару примеров решений "не носящих универсальных характер", плз.


Ну хотя бы проблемы с ограниченным объемом АП. Этого порой достаточно для того, чтобы применять всякие хитрости, которые лучше бы не применять. Я непосредственно с микропроцессорами не работал, но досовскме проблемы с сегментами в 64 К помню, и huge указатели тоже помню, и не надо их больше.


PD>> Напоминаю, я по-прежнему веду речь о начальном этапе. Начальное обучение должно

PD>> быть как можно меньше привязано к специфическим особенностям среды исполнения.
М>блин. я помню как в трту (таганрогский радик) нам сначала схематично рисовали эвм. вы тоже ее рисуете? надо же объяснить людям что это такое, верно? вот ЦП, вот память, вот перефирия (шина и порты). такая простая модель. и микроконтроллер ей соответствует чуть больше чем полностью. разве что память там внутри. но это ж мелочь. главное, что вот они ПОРТЫ.

Я не рисую. Объяснить про память можно, порты в первоначальном курсе совсем не нужно затрагивать.

М>а меня знакомые студенты постоянно просят объяснить как так по одним и тем же адресам памяти в разных процессах разные данные. приходится совсем все упрощать и говорить: вас же не удивляет, что у двух массивов по одному и тому же индексу разные данные? забудьте про память. вас обманули. указатель это как индекс, то... указатель. но и индекс тоже. это идекс в таблице которую руками не трогать. тем более, что она там не одна...


Они после такого объяснения что-то понимают ?

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

М>ну и как работает видео-карта и как она ложиться на схему ЭВМ -- это тоже встречает непонимание. слишком много слоев абстракций. слишком сложно все это. объяснить, что консоль это точно такое же графическое окно, только это консоль -- сложно. объяснить графический вывод еще сложнее. а вот если подцепить к микроконтроллеру небольшой графический дисплей, то там все понятно. можно зажигать точки. из точек составлять отрезки. из отрезков -- графические примитивы.


А это в начальном курсе вообще лишнее. Есть дисплей, на него строки выводятся с помощью printf/cout/writeln. Для начала вполне хватит. А потом будет курс по устройству всего на нижнем уровне, там и объяснить.

В общем, всему свое время. Начальный курс программирования базируется на изучении языка, алгоритмов и исполняется в той среде программирования, которую выбрали , без погружения внутрь. Остальное потом, вот там можно и пдробности привести.