Почему школьники не любят уроки программирования
vk f t

Почему школьники не любят уроки программирования

Поче­му обу­че­ние осно­вам про­грам­ми­ро­ва­ния в шко­лах такое ужас­ное и что с этим мож­но сде­лать.

Когда речь захо­дит о школь­ном про­грам­ми­ро­ва­нии, уче­ни­ки смот­рят на всех как на безум­ных: о чём вы вооб­ще гово­ри­те? Что­бы вы поня­ли всю глу­би­ну про­бле­мы, ска­жем, что боль­ше поло­ви­ны рос­сий­ских выпуск­ни­ков не зна­ют, что такое алго­рит­мы и логи­че­ские опе­ра­ции. Напи­сать про­грам­му хоть на каком-нибудь язы­ке могут толь­ко уче­ни­ки про­филь­ных клас­сов в шко­лах с углуб­лён­ным изу­че­ни­ем физико-математических дис­ци­плин.

Мы спе­ци­аль­но не рас­смат­ри­ва­ем в этом мате­ри­а­ле ква­ли­фи­ка­цию пре­по­да­ва­те­ля и его педа­го­ги­че­ские спо­соб­но­сти. Будем исхо­дить из того, что у нас есть обыч­ный учи­тель инфор­ма­ти­ки, кото­рый зна­ет свой пред­мет, но дей­ству­ет в усло­ви­ях, кото­рые часто от него не зави­сят.

Вот в чём про­бле­ма и как тут быть.

Старые компьютеры

В боль­шин­стве школ нет совре­мен­но­го желе­за. И речь не о самых новых и наво­ро­чен­ных ком­пью­те­рах, а хотя бы о тех, кото­рые могут запу­стить бра­у­зер Chrome и не завис­нуть на пару минут.

На устрой­ствах, кото­ры­ми обыч­но рас­по­ла­га­ют шко­лы, слож­но пре­по­да­вать что-то совре­мен­ное, пото­му что оно баналь­но не запу­стит­ся. В ито­ге прак­ти­че­ская рабо­та пре­вра­ща­ет­ся в муче­ние и про­вер­ку тер­пе­ния уче­ни­ков. Мож­но, конеч­но, поста­вить какой-нибудь лёг­кий Linux и настро­ить его для необ­хо­ди­мых задач, но чаще все­го такой ква­ли­фи­ка­ции у учи­те­ля нет.

Что делать: воз­дей­ство­вать на руко­вод­ство шко­лы, что­бы обнов­ля­лись ком­пью­те­ры.

Древние языки программирования

Если спро­сить детей, какой язык они про­хо­дят на инфор­ма­ти­ке, рей­тинг отве­тов будет таким:

Про­бле­ма в том, что во мно­гих шко­лах дают­ся зна­ния по язы­кам, кото­рые не исполь­зу­ют­ся сей­час в про­фес­си­о­наль­ной раз­ра­бот­ке.

С точ­ки зре­ния кад­ров это, навер­ное, пра­виль­но, пото­му что не нуж­но пере­учи­вать учи­те­лей и пере­пи­сы­вать учеб­ни­ки. Но ни Пас­каль, ни Бей­сик, ни блок-схемы сей­час не нуж­ны в про­фес­си­о­наль­ном про­грам­ми­ро­ва­нии — раз­ра­бот­че­ская мысль дав­но шаг­ну­ла впе­рёд.

Ещё это тес­но свя­за­но с воз­рас­том школь­ных ком­пью­те­ров, о кото­рых мы гово­ри­ли. Совре­мен­ная сре­да раз­ра­бот­ки для какого-нибудь мод­но­го Go или даже клас­си­че­ско­го язы­ка C# на них про­сто не запу­стит­ся. Вот и при­хо­дит­ся исполь­зо­вать Пас­каль, кото­рый рабо­та­ет на чём угод­но, но кото­рый пол­но­стью уста­рел для прак­ти­че­ско­го при­ме­не­ния.

Пас­каль пре­крас­но помо­га­ет пре­по­да­вать алго­рит­ми­ку, но писать совре­мен­ные про­грам­мы на нём крайне слож­но, и вот поче­му:

Что делать: пред­ла­гать ребён­ку само­сто­я­тель­но изу­чать более совре­мен­ные язы­ки — C, JavaScript, Swift, Go, Python и дру­гие.

Нет единой методической базы

Каж­дый учи­тель сам реша­ет, как рас­ска­зы­вать о сво­ём пред­ме­те. Один подой­дёт к вопро­су твор­че­ски и заин­те­ре­су­ет детей, дру­гой отне­сёт­ся фор­маль­но и про­чи­та­ет мате­ри­ал по учеб­ни­ку. Но и здесь есть под­вох: учеб­ни­ков по инфор­ма­ти­ке мно­го, все они одоб­ре­ны Мино­бром, и все дают раз­ные пред­став­ле­ния о про­грам­ми­ро­ва­нии. Кни­га автор­ства Семаш­ко для 10 клас­са рас­ска­зы­ва­ет про блок-схемы и абстракт­ный язык, Угри­но­вич пред­ла­га­ет изу­чать Visual Basic, а Босо­ва и Поля­ков вооб­ще ниче­го не гово­рят про про­грам­ми­ро­ва­ние в 10 клас­се.

А теперь добавь­те сюда уро­ки по замене, когда в парал­лель­ных груп­пах дети зани­ма­ют­ся по раз­ным про­грам­мам, воз­мож­ный пере­вод в дру­гую шко­лу с дру­ги­ми стан­дар­та­ми, а так­же экс­пе­ри­мен­таль­ные мето­ди­ки от самих учи­те­лей. В ито­ге в голо­ве полу­ча­ет­ся каша из зна­ний, а ребё­нок вырас­та­ет уве­рен­ным в том, что про­грам­ми­ро­ва­ние — очень слож­ная шту­ка, про кото­рую он что-то слы­шал.

Это при­мер­но как если бы детей в шко­ле учи­ли вожде­нию: где-то на «тойотах»-автоматах, где-то на уби­тых «запо­рож­цах», где-то на тет­ра­дях в клет­ку, а где-то ещё их бы учи­ли соби­рать и раз­би­рать танк. И ребё­нок, к при­ме­ру, пере­вёл­ся с уро­ков в тет­рад­ке на раз­бор тан­ка.

Что делать: воз­дей­ство­вать на руко­вод­ство школ, что­бы все пре­по­да­ва­те­ли рабо­та­ли по еди­ной про­грам­ме.

Непонятно, как применять знания в жизни

Когда выпуск­ник начи­на­ет изу­чать про­грам­ми­ро­ва­ние глуб­же, чем в шко­ле, то пони­ма­ет, что меж­ду его зна­ни­я­ми и совре­мен­ны­ми язы­ка­ми — про­пасть. Про­ще начать всё зано­во или вооб­ще не зани­мать­ся этим, чем опи­рать­ся на ста­рые све­де­ния.

Даже если он уме­ет хоро­шо писать код на алго­рит­ми­че­ском язы­ке или даже на Visual Basic, то в мире совре­мен­ной раз­ра­бот­ки он будет чув­ство­вать себя как авто­лю­би­тель из сере­ди­ны про­шло­го века. Перед тем как поки­нуть гараж, он каж­дый раз обя­за­тель­но вруч­ную про­ве­рит дав­ле­ние в каж­дой шине, линей­кой изме­рит люфт руле­во­го коле­са и будет искать кар­бю­ра­тор­ную заслон­ку. Сей­час же мож­но про­сто сесть и поехать, маши­на мно­гое уме­ет сама, и к ней уже совер­шен­но дру­гие тре­бо­ва­ния.

В совре­мен­ных язы­ках про­грам­ми­ро­ва­ния точ­но так же мно­гое уже встро­е­но в язык и не тре­бу­ет слож­ных дей­ствий. Возь­мём про­стую зада­чу: отсор­ти­ро­вать эле­мен­ты мас­си­ва по поряд­ку, рас­ста­вить их от боль­ше­го к мень­ше­му. На Пас­ка­ле код выгля­дит так:

    
language: Pascal
Program SortMas;

var

i, j, k: integer;

 mas: array[1..20] of integer;

Begin

 randomize;

 for i := 1 to 20 do mas[i] := random(100);

 writeln;

 writeln('массив до сортировки');

 for i := 1 to 20 do write(mas[ i], ' ');

 for i := 1 to 19 do

   for j := i + 1 to 20 do

     if mas[i] < mas[j] then

     begin

       k := mas[i];

       mas[i] := mas[j];

       mas[j] := k;

     end;

 writeln('массив после сортировки');

 for i := 1 to 20 do write(mas[ i], ' ');

End.


Ско­пи­ро­вать код
Код ско­пи­ро­ван

А теперь посмот­рим на код JavaScript, кото­рый дела­ет то же самое:

    
language: JavaScript
var arr = [];

for (var i = 0; i < 20; i++ ) {

  arr.push( Math.round( Math.random() * 100 ));

}

for (i = 0; i < arr.length; i++) {

  console.log(arr[i]);

}

arr.sort((a, b) => a - b);

console.log('Массив после сортировки');

for (i = 0; i < arr.length; i++) {

  console.log(arr[i]);

}


Ско­пи­ро­вать код
Код ско­пи­ро­ван

Как види­те, код стал ком­пакт­нее и про­ще. Это бла­го­да­ря тому, что совре­мен­ные язы­ки уже уме­ют сами сор­ти­ро­вать мас­си­вы, рабо­тать с пере­мен­ны­ми, раз­мер кото­рых зара­нее неиз­ве­стен, и объ­яв­лять их в том месте, где они пона­до­би­лись.

Что делать: сти­му­ли­ро­вать в детях само­сто­я­тель­ное изу­че­ние про­грам­ми­ро­ва­ния. На десят­ке при­ме­ров со Stack Overflow мож­но иной раз узнать боль­ше, чем в целом пред­ла­га­ет шко­ла.

Как разжечь в ребёнке интерес к программированию

Луч­ший спо­соб при­влечь детей к любо­му заня­тию, в том чис­ле про­грам­ми­ро­ва­нию, — лич­ный при­мер. Когда в семье мама и папа увле­ка­ют­ся кодом, пусть даже и непро­фес­си­о­наль­но, ребён­ку тоже будет инте­рес­но попро­бо­вать. Робо­то­тех­ни­ка, про­грам­ми­ру­е­мые кон­трол­ле­ры, Arduino и Raspberry Pi, про­грам­мы на Scratch и робо­кон­струк­то­ры — всё это помо­га­ет раз­жечь инте­рес.

Если про­сто застав­лять ребён­ка зани­мать­ся, в то вре­мя как в семье никто не инте­ре­су­ет­ся кодом, эта затея ско­рее про­валь­ная. Лич­ный при­мер — луч­ший путь.

Ещё по теме