История изменений
Исправление mister_VA, (текущая версия) :
Долгие раздумья натолкнули меня на мысль о принципиально ином подходе к обучению программитрованию.
Итак, основная претензия к Си как учебному языку окромя его клинописного синтаксиса – необходимость в библиотеках, причём как раз стандартная и не подходит, см. начало по отношению к printf.
Тут у мя подумалось, а может есть путь проверки, что делает прога, без организации вывода и диалоговых режимов? Так ведь есть! Дебагер!
Но тут путь будет начинаться с чтения программ, причём исполняемых файлов в дебагере. Понятно, что элементарных.
Поясняю: создаётся набор учебных программ вида
int main() {return 0;}
int main()
{
int a;
a=0;
return 0;
}
int main()
{
int a;
a=0;
return a;
}
и т.д. Компилите их неоптимизирующим tcc, запускаете в дебагере и смотрите c объяснением падавану, как там что работает, а потом смотрите листинг Си с объяснением.
Потом проги сложения 1+0, 1+1, с переполнением целочисленой переменной, вычитание, умножение, деление и с делением на нуль и т.д.
Потом с плавающей точкой разной трчности, символьные.
Потом ветвление, область видимости и т.д. Но всё простейшее и через дебаггер.
Поясню педагогический и методологический моменты. Может показаться, что такой подход удлинняет путь, но максима обучения гласит, что достаточно большой объём знаний без разницы каким маршрутом изучать, время будет затрачено одинаковое.
Текущий подход сформирован во времена, когда проги писали ручкой на бумаге, бо машинное время было дорого и малодоступно. Но сейчас да ещё при индивидуальных занятиях падавану сразу доступна ЭВМ и внимание учителя.
Возможно почти вживую видеть, как работает исполняемый код, будет достаточно долго интересно даже для примитивных прог, поскольку что-то сложное так изучать получится неского.
Исходная версия mister_VA, :
Долгие раздумья натолкнули меня на мысль о принципиально ином подходе к обучению программитрованию.
Итак, основная претензия к Си как учебному языку окромя его клинописного синтаксиса – необходимость в библиотеках, причём как раз стандартная и не подходит, см. начало по отношению к printf.
Тут у мя подумалось, а может есть путь проверки, что делает прога, без организации вывода и диалоговых режимов? Так ведь есть! Дебагер!
Но тут путь будет начинаться с чтения программ, причём исполняемых файлов в дебагере. Понятно, что элементарных.
Поясняю: создаётся набор учебных программ вида int main() {return 0;}
int main()
{
int a;
a=0;
return 0;
}```
```int main()
{
int a;
a=0;
return a;
}```
и т.д. Компилите их неоптимизирующим tcc, запускаете в дебагере и смотрите c объяснением падавану, как там что работает, а потом смотрите листинг Си с объяснением.
Потом проги сложения 1+0, 1+1, с переполнением целочисленой переменной, вычитание, умножение, деление и с делением на нуль и т.д.
Потом с плавающей точкой разной трчности, символьные.
Потом ветвление, область видимости и т.д. Но всё простейшее и через дебаггер.
Поясню педагогический и методологический моменты. Может показаться, что такой подход удлинняет путь, но максима обучения гласит, что достаточно большой объём знаний без разницы каким маршрутом изучать, время будет затрачено одинаковое.
Текущий подход сформирован во времена, когда проги писали ручкой на бумаге, бо машинное время было дорого и малодоступно. Но сейчас да ещё при индивидуальных занятиях падавану сразу доступна ЭВМ и внимание учителя.
Возможно почти вживую видеть, как работает исполняемый код, будет достаточно долго интересно даже для примитивных прог, поскольку что-то сложное так изучать получится неского.