[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