Re[6]: Какой язык начинать учить в 12 лет?
От: Павел Кузнецов  
Дата: 10.01.05 21:12
Оценка: +1
0xDEADBEEF,

>>> Если же использовать C++-style строки, то придется обьяснить что такое обьекты и шаблоны


> ПК>Это не совсем так. Новичку совершенно все равно, что запоминать: string или std::string.


> ...Если рассмотреть строчку "std::string s2 = 0.25;" Сразу возникнет вопрос "а почему это не сработало".


Если это начало занятий, то: "типы несовместимы". Точка. Впрочем, пожалуй, еще добавить почему так сделано. Углубляться в вопросы того, как это реализовано, имхо, в начале совершенно лишнее. Дальше — больше: на более поздних занятиях можно информацию добавлять. Представь, что std::string — встроенный тип, и все встанет на свои места

Если пытаться в учебном курсе объяснить все до самых основ, то ничего не получится ни в одном языке. Вот, поди-ка, объясни, почему это не работает:
enum E { a = 1, b = 2 };
int i = 1;
E e = i;

или это:
E f = 0.25;

причины те же самые. Типы несовместимы. А уж какими механизмами это обеспечивается — разговор отдельный.

> Тут хошь не хошь, а придется обьяснять про обьекты и конструктора. Ученик же, полистав справку по обьекту и его конструкторам увидит там помимо всего прочего заклинания типа "template<class InputIterator>" <...>


Ну это уже вообще никуда не годится. Для обучения должен быть учебник, а не справочник. Попробуй-ка объяснить, скажем, векторную алгебру на основе Математической энциклопедии в 5 томах. Либо ученик соображает, что делает, и ему "никакие трудности нипочем", либо не надо перегружать учащихся ненужной им в данный момент информацией.

> И на эти вопросы придется хоть как-то отвечать — т.к. ответ "тебе еще рано" обладает мерзкой тенденцией отвлекать от текущей задачи — то есть написания "кульного приложения".


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

> Короче, для того чтобы "офигение" новичка не превысило критической массы, ему придется все разжевывать и стараться держать от языкового справочника на как можно более далеком расстоянии. Что не есть гуд с точки зрения привития навыков РТФМить.


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

> Хотя, если взять на вооружение толковую книжку для начинающих, "кривую обучения" может быть и удастся как-то выровнять...


Уже ближе

> Вполне согласен что диагностика в como и g++ более или менее читабельна. Но проблема состоит еще и в том, что данные компиляторы не поставляются с развитой средой программирования, которая тоже ой как нужна.


Для обучения языку и программированию? Имхо, не только не нужна, а даже и вредна. Достаточно самого минимума. Не уверен, нужен ли отладчик на этапе обучения языку. Когда пойдут более сложные программы (алгоритмы + структуры данных ) — отладчик, пожалуй, уже пора давать И то вопрос, в каком случае учащиеся научатся большему: с отладчиком, или без.

> И способов подключения их к развитой среде програмирования, насколько мне известно, нету.


Есть. Но, имхо, это не нужно.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[6]: Какой язык начинать учить в 12 лет?
От: Павел Кузнецов  
Дата: 10.01.05 21:15
Оценка:
Astaroth,

> ПК> Про шаблоны, пространства имен, объекты, разницу между локальным размещением объектов и размещением на куче можно при этом не объяснять:


> Не забудьте, что придётся объяснить, почему не работает такой код:

>
> std::string a = "hw";
> std::string b;
> b = "ggg" + a;
>


А почему он не работает? Точнее, в чем именно то, что он делает, расходится с твоими ожиданиями?
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[7]: Какой язык начинать учить в 12 лет?
От: Павел Кузнецов  
Дата: 10.01.05 21:20
Оценка:
P.S.

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


Точнее, чтобы сталкивались в степени достаточной для развития и поддержания интереса, но не приводящей к необходимости "объять необъятное".
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[4]: Какой язык начинать учить в 12 лет?
От: GarryIV  
Дата: 10.01.05 21:26
Оценка: :)
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, GarryIV, Вы писали:


GIV>>Только не Пролог. Ему же только 12 лет! Вот станет совершеннолетним и пусть сам решает а пока никаких психотропных штучек.

Т>Моему 10, а он уже убежден, что Haskell — самый крутой язык.

Не знаю. Для меня это нечто вроде порнографии. Сам посмотрю а ребенку своему показывать не буду. Если будет он сам заинтересуется — его дело
WBR, Igor Evgrafov
Re[7]: Какой язык начинать учить в 12 лет?
От: Astaroth Россия  
Дата: 10.01.05 21:35
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>А почему он не работает? Точнее, в чем именно то, что он делает, расходится с твоими ожиданиями?


Хм...
Если честно, то сильно удивлён тем, что всё работает

C:\src>gcc -v
Reading specs from c:/MinGW/bin/../lib/gcc-lib/mingw32/3.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=f77,c++,objc,ada --disable-win32-registry --disable-shared
Thread model: win32
gcc version 3.2 (mingw special 20020817-1)


Просто, помнится, в своё время я сильно подолбался головой о то, что char* и std::string друг к другу не всегда приводятся.

Собственно, на моём нынешнем компиляторе не заhаботало только

std::string a;
a = "ab" + "bc";


и

void f(char* p)
{
    return;
}

int main()
{
    std::string a = "hw";
    f(a);
    return 0;
}


Что, впрочем, тоже может вызвать вопросы, на которые трудно дать одновременно простой и правильный ответ.
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[3]: Какой язык начинать учить в 12 лет?
От: McSeem2 США http://www.antigrain.com
Дата: 10.01.05 21:40
Оценка: :)
Здравствуйте, LaptevVV, Вы писали:

LVV>Один наш мужик на западе живущий, написал книжку для изучения С++ как раз малышами типа до 10 лет...


Что-то это мне навевает... Иллюстрированные книжки на тему сексуального воспитания детей возраста до 10 лет...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[8]: Какой язык начинать учить в 12 лет?
От: Павел Кузнецов  
Дата: 10.01.05 21:48
Оценка:
Astaroth,

>
std::string a;
> a = "ab" + "bc";
>


Общим правилом C и C++ является отсутствие операций + — и т.п. для массивов, коими литералы и являются. По-моему, достаточно понятно...

>
void f(char* p)
> {
>     return;
> }
>
> int main()
> {
>     std::string a = "hw";
>     f(a);
>     return 0;
> }
>


Не ясно откуда в учебной программе взялась функция f(char*) с аргументом — указателем на char. Ответ, если вопрос возникнет (в чем, при правильном построении курса, я очень сомневаюсь), по-прежнему простой (и правильный): "несовместимость типов" Впрочем, как и ранее, объяснить, почему так лучше, можно достаточно просто.
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Какой язык начинать учить в 12 лет?
От: Alex Reyst Россия  
Дата: 11.01.05 04:54
Оценка: 26 (3) +2
Здравствуйте, 0xDEADBEEF, Вы писали:

DEA>Так что, при всей моей любви к C/C++, и прохладном отношении к Паскалю, я бы выбрал

DEA>Delphi/Kylix...

Мои "пять копеек" в пользу C++.
Когда речь шла
Автор: Ruff
Дата: 06.01.05
об изучении английского языка, все сошлись на том, что читать нужно "натуральные", не адаптированные для изучающего иностранный язык книги. Не вижу особенной причины, чтобы отказываться от этого принципа при изучении языка программирования. В отличие от преимущественно кулуарно проектировавшихся Delphi, etc. современный С++ является результатом в значительной мере "естественной эволюции" и несет на себе отпечаток опыта, практики, ошибок и идей множества специалистов. Возможность увидеть в пределах одного языка историю развития "программистской мысли" за достаточно продолжительный период, возможность показать в пределах одного языка различные приемы программирования — мне кажется, это стоит того, чтобы "смириться" с отсутствием красивой обертки и "рафинированности".
Да, учить при этом языку трудновато — но большая часть проблем в обучении падает здесь на учителя, а не на ученика.
Все, что здесь сказано, может и будет использоваться против меня...
Re[9]: Какой язык начинать учить в 12 лет?
От: Astaroth Россия  
Дата: 11.01.05 05:32
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Общим правилом C и C++ является отсутствие операций + — и т.п. для массивов, коими литералы и являются. По-моему, достаточно понятно...


Я это знаю. Но тот парень, которому 12, не будет знать, что "blah" — это массив из пяти символов, а не std::string.

ПК>Не ясно откуда в учебной программе взялась функция f(char*) с аргументом — указателем на char.


Системная какая-нибудь. Не вечно же учебные программы писать.
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re: Какой язык начинать учить в 12 лет?
От: c-smile Канада http://terrainformatica.com
Дата: 11.01.05 05:57
Оценка: 17 (1)
Здравствуйте, bestix, Вы писали:

B>Доброе время суток!

B>Собственно сабж. Сам программист, вот думаю сына начать обучать. С какого языка посоветуете?
B>С уважением.

В Канаде начинают учить в школе с ActiveScript от Macromedia.
Пользы три:
1) ActiveScript (JavaScript) прост (если не трогать классы) но все концепции базовые включает.
2) Наглядный — можно быстро пробовать и смотреть.
3) Развивает також художественную составляющую (в Канаде в школе это считают важным даже выше математики — французское наследие).

Лично я не решусь рекомендовать что-то априори не видя мальца в лицо.
Тут нужно очень осторожно чтобы не отбить охоту. Склонности надо анализировать короче.

Во всяком случае ActiveScript (или нечто подобное) поможет выбрать между программированием и исскуством или развить и то и то что вообще идеально.
Re[5]: Какой язык начинать учить в 12 лет?
От: Трурль  
Дата: 11.01.05 06:08
Оценка:
Здравствуйте, bkat, Вы писали:

Т>>Моему 10, а он уже убежден, что Haskell — самый крутой язык.


B>Ничего. Вот будет ему 13-14 лет и станет он назло тебе на бейсике программировать.


На бейсике не станет, однозначно.
Вот представьте, поездил человек на вольво. Будет вполне естественно, если ему захочется пересесть на мерседес или бмв. Ничего удивительного и в желании заиметь порше или там хаммер. Можно понять даже любителей жука или горбатого запорожца. Но возжаждать москвич-2141
Re[10]: Какой язык начинать учить в 12 лет?
От: Павел Кузнецов  
Дата: 11.01.05 06:29
Оценка: +1
Astaroth,

> ПК>Общим правилом C и C++ является отсутствие операций + — и т.п. для массивов, коими литералы и являются. По-моему, достаточно понятно...


> Я это знаю.


Дык, я как бы и не сомневался

> Но тот парень, которому 12, не будет знать, что "blah" — это массив из пяти символов, а не std::string.


Если сам шаман в C++ и готов первое время водить мальца за ручку, то можно даже с C++


> ПК>Не ясно откуда в учебной программе взялась функция f(char*) с аргументом — указателем на char.


> Системная какая-нибудь. Не вечно же учебные программы писать.


Полагаю, к тому времени ему уже море будет по колено
Posted via RSDN NNTP Server 1.9
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re: Какой язык начинать учить в 12 лет?
От: Shr Россия  
Дата: 11.01.05 06:50
Оценка: 6 (1) :))) :)
Оберон:
http://www.inr.ac.ru/~info21/welcome.html
Re[3]: А сам с какого начинал?
От: SWW Россия  
Дата: 11.01.05 07:01
Оценка:
SWW>>Лично я начинал с ассемблера 8080. Это, конечно, не пример для подражания — просто тогда я был аппаратчиком. А первый язык высокого, не побоюсь этого слова, уровня был С по Кернигану-Ритчи. И до сих пор я считаю, что это лучший учебник по программированию.

A>Язык С (не С++) со времён К&Р немного изменился. Там синтаксис маленько архаичный, AFAIR.


Не намного. Самое существенное — объявление параметров функции прямо в скобках, а не после них. Но я говорю о К&Р как об учебнике программирования вообще, а не как о справочнике по синтаксису языка. Там вместо строгого формального описания конструкций приводятся примеры программ и на них разбираются конструкции языка.
Re[8]: Какой язык начинать учить в 12 лет?
От: SWW Россия  
Дата: 11.01.05 07:19
Оценка: :))
A>Собственно, на моём нынешнем компиляторе не заhаботало только

A><...>

A>и

A>
void f(char* p)
A>{
A>    return;
A>}

A>int main()
A>{
A>    std::string a = "hw";
A>    f(a);
A>    return 0;
A>}
A>


Да, неработоспособность этого примера действительно трудно объяснить новичку.
Это лишний раз потдверждает, что реализация std::string крайне уродская, поскольку ее авторы, помешанные на "безопасности" и считающие вредными любые неявные преобразования, не снабдили этот класс функцией operator const char*().
Re[4]: Какой язык начинать учить в 12 лет?
От: Dog  
Дата: 11.01.05 08:15
Оценка:
S>>>Наверное, английский.
Dog>>Это уже вчерашний день. Учить надо китайский
SWW>Пессимист, что ли?
Реалист
... << RSDN@Home 1.1.4 beta 3 rev. 241>>
Re[5]: Какой язык начинать учить в 12 лет?
От: Dog  
Дата: 11.01.05 08:15
Оценка:
ПК>0xDEADBEEF,
ПК>сразу хочу заметить, что я не рекомендую всем и каждому начинать обучение с C++. Просто хотел отметить, что приведенные тобой "проблемы" таковыми не являются. Трудности при использовании C++ в качестве первого языка обучения в другом.
[... крошки мацы ...]

Полностью подписываюсь.
А на счёт начинать с С++ или нет. Если есть опытный товарищ, а в данном случае надеюсь он есть , то начинать очень даже есть смысл.
... << RSDN@Home 1.1.4 beta 3 rev. 241>>
Re[6]: Какой язык начинать учить в 12 лет?
От: Dog  
Дата: 11.01.05 08:15
Оценка:
>>> Если же использовать C++-style строки, то придется обьяснить что такое обьекты и шаблоны
ПК>>Это не совсем так. Новичку совершенно все равно, что запоминать: string или std::string.
DEA>...Если рассмотреть строчку "std::string s2 = 0.25;" Сразу возникнет вопрос "а почему это не сработало".
DEA>Тут хошь не хошь, а придется обьяснять про обьекты и конструктора. Ученик же, полистав справку по обьекту и его конструкторам увидит там помимо всего прочего заклинания типа "template<class InputIterator>", "const X&" у него появится еще одна куча вопросов про template, const и загадочный знак "&" или (тьфу-тьфу) про еще более загадочный знак "*".
Ну и почему бы не объяснить ? Никто не говорит , что надо вбить это с первого раза. Очень много вещей проясняются лишь тогда, когда сталкиваешься с ними непосредственно.

DEA>И на эти вопросы придется хоть как-то отвечать — т.к. ответ "тебе еще рано" обладает мерзкой тенденцией отвлекать от текущей задачи — то есть написания "кульного приложения".

DEA>Короче, для того чтобы "офигение" новичка не превысило критической массы, ему придется все разжевывать и стараться держать от языкового справочника на как можно более далеком расстоянии. Что не есть гуд с точки зрения привития навыков РТФМить.
Это у вас не новичёк, а просто монстр какой-то получился. На самом деле на начальном этапе не возникнет столько вопросов. Ну а если всё же возникает, значит человек думает.

DEA>Хотя, если взять на вооружение толковую книжку для начинающих, "кривую обучения" может быть и удастся как-то выровнять...

По плюсам этого добра навалом.

>>> И еще один аспект проблемы. Диагностики компилятора.

ПК>>Да, здесь согласен, диагностика должна быть хорошей.
DEA>Вполне согласен что диагностика в como и g++ более или менее читабельна.
DEA>Но проблема состоит еще и в том, что данные компиляторы не поставляются с развитой средой программирования, которая тоже ой как нужна. И способов подключения их к развитой среде програмирования, насколько мне известно, нету.
Человек, по вашему, способный задать сразу столько вопросов не будет тупо сидеть и смотреть на ошибку в дебагере.
... << RSDN@Home 1.1.4 beta 3 rev. 241>>
Re[6]: Какой язык начинать учить в 12 лет?
От: bkat  
Дата: 11.01.05 08:55
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Здравствуйте, bkat, Вы писали:


Т>>>Моему 10, а он уже убежден, что Haskell — самый крутой язык.


B>>Ничего. Вот будет ему 13-14 лет и станет он назло тебе на бейсике программировать.


Т>На бейсике не станет, однозначно.

Т>Вот представьте, поездил человек на вольво. Будет вполне естественно, если ему захочется пересесть на мерседес или бмв. Ничего удивительного и в желании заиметь порше или там хаммер. Можно понять даже любителей жука или горбатого запорожца. Но возжаждать москвич-2141

А просто так, назло
Именно потому, что тебе это не нравится и ты в этом смысла не видишь.
13-14 — это же тинейджер
Re[4]: Какой язык начинать учить в 12 лет?
От: DoС  
Дата: 11.01.05 09:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ничего в нем психотропного нет. Просто заржавевшие мозги многих программеров не способны так резко развернуться. Кстати, понимание пролога хороший тест на способность воспринимать новое — я видел как гурастые программеры не могли с ним справится. После пары недель изучения они так и не могли писать что то, отличное от полных аналогов примеров.

У меня вообще ничего не получилось написать на прологе, даже полных аналогов ...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.