[Freeschool] [JT] Re: чему стоит учить в школе
Denis Kirienko
=?iso-8859-1?q?dk_=CE=C1_altlinux=2Eru?=
Сб Окт 25 17:56:53 MSD 2008
Anton Farygin пишет:
> Правильно. Но как можно "попробовать", не зная про типы данных и про
> различную с ними работу ?
> Разве это не основной элемент программирования ?
Понятно. Флейм выходит на новый виток - что мы подразумеваем под
обучением программированию.
В очередной раз отмечу, что стандарт образования не предусматривает
обучения программированию вообще всех. Есть обучение алгоритмизации. То
есть развитие общего представления о том, что такое алгоритм, какие
бывают алгоритмы, из чего они состоят и как писать простейшие алгоритмы.
Типы данных и различная с ними работа в это никак не вписывается.
Отходим от базового курса и смотрим на курс профильный, смотрим на
кружки-факультативы и прочее дополнительное образование (ой, ничего, что
я начинаю казенным языком говорить). И тут уже единого мнения быть не
может. Для одних программирование - это одно, для других - это другое.
Можно учить детей тому, как писать оконные приложения, можно учить тому,
как писать графику в OpenGL, можно писать тому, как что-то
низкоуровневое писать на ассемблере, а можно учить тому, как писать
алгоритм Дейкстры и быструю сортировку Хоара.
Антон, по-видимому, является как раз приверженцем низкоуровневого
системного программирования. Для него важны биты-байты, типы данных,
выделение памяти, ввод-вывод и прочие тонкости низкого уровня. Поэтому
ему кажется, что школьник должен разбираться в таких вещах (как устроен
компьютер изнутри?) и для него язык Си - идеальный выход.
Я являюсь математиком. Я учу в основном матшкольников. Для меня на
первом месте стоят алгоритмы: всякие быстрые сортировки Хоара и поиски
кратчайших путей в графах. Для решения этих задач мне низкоуровневые
тонкости не нужны, поэтому я беру язык Си, как наиболее популярный в
научной среде в настоящее время и прячу самые ненужные низкоуровневые
его вещи под личиной Си++. Ну да, мне гораздо важнее объяснить детям,
что параметры в функцию можно передавать по ссылке или по значению, как
это делается в Си++, чем объяснять им, что передача параметра по ссылке
это на самом деле передача в функцию адреса, где хранится переменная.
Есть люди с другими взглядами на программирование. С их точки зрения
наилучшими языками будут другие.
То, что мы не сможем договориться о выборе идеального языка для школы
настолько очевидно, что не вижу причины спорить.
>> Python в необходимом для школы объеме я изложу в двух страницах. Вся
>> мощь этих языков в школе не нужна. При этом она не мешается, если ее
>> не трогать. В С многое мешается --препроцессор, функции, указатели,
>> компиляция -- все это не имеет к основам программирования никакого
>> отношения, а в С, это надо использовать с самого начала.
>
> а вы не используйте то, что мешается.. какие проблемы ?
Ну вот мне, как математику, это может мешать. Как я могу не использовать
то, что мне не нужно, если:
int a=100000;
int b=100000;
int c=a*b;
и в результате оказывается, что c это вовсе не 10.000.000.000, как
хотелось бы математику.
Точно так же и с вопросом о "классический массив в Си vs. динамический
вектор в Си++". Мне, как математику, нужно иметь массив изменяющегося
размера. А как там память выделяется меня, как математика, не интересует.
--
Денис
Подробная информация о списке рассылки Freeschool