[Freeschool] [JT] Re: чему стоит учить в школе

Denis Kirienko =?iso-8859-1?q?dk_=CE=C1_altlinux=2Eru?=
Сб Окт 25 16:25:55 MSD 2008


Dmitriy M. Maslennikov пишет:

>> Зачем в C/C++ знать что такое класс объект и метод для Hello world ???
>>
>> printf("Hello world\n"); - это уже некошерно ?
> printf("Hello world\n") -- не откомпилируется, надо:
> 
> #include<stdio.h>
> 
> int main()
> {
>     printf("Hello world\n");
>     return 0;
> }
> 
> А теперь представьте как вы будете объяснять эти конструкции человеку,
> который вообще не умеет программировать. Тут используется
> препроцессор, объявление функции с возвращаемым значением, возврат
> этого значения, потом еще компиляция... Брр... Я даже не знаю, с чего
> лучше начинать изучения С, если человек не знает ни одного языка
> программировния вообще.
> 
> Сравните с python:
> 
> print "Hello world"
> 
> c ruby:
> 
> puts "Hello world"
> 
> Ничего лишнего знать в этих языках не нужно. Именно это делает такие
> языки идеальными в качестве первого языка, или для демонстрации общих
> принципов программирования, когда сам язык не важен, а важно показать
> базовые элементы, то есть для школы.

Извините за оверквотинг, но я просто готов подписаться под всем 
вышесказанным.

Учить программированию на Java, мне кажется, невозможным. Учить 
программированию на С/C++ тяжело из-за лишней перегруженности языка 
низкоуровневыми вещами. Я бы даже сказал, что и Паскаль перегружен 
такими вещами. Простейшая программа Hello, World! должна в учебном языке 
состоять из одной строчки.

Тем не менее, я учу программированию на C++. Огромное количество вещей 
при этом приходится объяснять так: "вот пример программы. Здесь написано 
много "заклинаний". Со временем вы поймете, зачем они нужны, а пока 
считайте, что эти заклинания нужно обязательно сказать, иначе ничего 
работать не будет. Вы же будете для начала немного модифицировать ту 
часть программы, которая написана между фигурными скобками, не трогая 
все остальные заклинания". Это помогает проскочить на первых порах.

Почему нельзя учить C, а лучше учить C++. У С++ есть следующие 
достоинства, которые проявляются уже на начальном этапе:
1. Ввод-вывод (самое главное достоинство). cin>>a>>b понятней, чем 
scanf("%d%d",&a,&b).
2. Работа со строками - удобней в C++.

Есть у меня еще довольно странная мысль следующему классу вообще не 
рассказывать C-ные массивы, а сразу же говорить про C++-ные вектора - 
это же так здорово, когда у массива может меняться размер!

Тем не менее, преподавание программирования на С++ или C очень тяжело. 
Преподаватель должен иметь очень высокую квалификацию и знать массу 
тонкостей языка, а то быстро сядет в лужу на каверзном вопросе.

--
Денис




Подробная информация о списке рассылки Freeschool