Re[10]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.08.04 11:18
Оценка: +3 :))) :)
Здравствуйте, dshe, Вы писали:

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


D>Что касается "формошлепания", то -- это просто признак молодости. Оно проходит само собой с появлением новых, интересных, увлекательных задач.


К сожалению, зачастую эта "болезнь молодости" прогрессирует и превращается в итоге в старческий маразм.

Мой опыт не велик. Но все же прослеживается тенденция. Если человек начинал программировать как формошлеп или на каком-нибудь ВБ и потом не сделал значительного усилия чтобы изучить другие языки, технологии, подходы, то он так и остается "гуёвой мышевозилой бзе проблесков разума".
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: C# для школьников - а где смысл?!
От: cvoronin Россия  
Дата: 23.08.04 14:03
Оценка: :))) :))
A>Компания MS придумала еще один шаг в процессе популяризации .Net
A>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.

С моей точки зрения, программа эта интересна исключительно MS. Ничего нового школьникам не даёт.
1. Абсолютно без разницы, на чем учить школьников — на Delphi, Java или C#. В первом приближении эти вещи довольно похожи. Декларация перехода с Delphi на C# — исключительно попытка пиара.
2. На мой взгляд, если уж и думать о замене Делфи на что-то другое, то этим чем-то другим могла бы оказаться Java. Причин несколько, главные:
(1) это мэйнстрим
(2) плохому Java не научит
(3) на порядок большая защищенность инвестиций. За время жизни java успел родиться и умереть VB, а java живёт себе и хорошеет.
(4) наличие бесплатных средств разработки, включая очень неплохие (Eclipse, JBuilder Foundation и др.)
3. Тот факт что я их не знаю, еще не означает, что нет других достойных кандидатов из серии Питона и т. п.
Re[4]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 18:05
Оценка: +1 -2 :)
Здравствуйте, J-peg, Вы писали:

JP>Что-то всё это сильно на агитацию смахивает.


Гораздо больше на неё смахивает идея MS вбить эту формотаскательно-мышекликательную дурь (sorry за резкость) ещё в школе

Не, я, конечно, понимаю, что C# — не дельфи, но:

Новичку обычно трудно понять разницу между программой и её интерфейсом. Обычно "чайникам" кажется, что выпадающее полупрозрачное меню — это супер, потому что сложно, а, скажем, картинку на произвольный угол переверуть (будем считать, что стандартной функции для этого нет) — "а чего тут такого-то?.."

Отсюда мораль: "чайник", которого учат программированию, будет, в первую очередь, ваять интерфейс. И вряд ли займётся чем-нить более серьёзным. И если ваяние интерфейса будет делом простым — то и программирование будет восприниматься "да как нефиг делать".

Не так давно в институте столкнулся с одним товарищем с 1го курса. Он не мог написать strrev() или что-то в этом духе, но при этом заявлял, что "С — дурацкий язык, вот на Delphi я всё что угодно написать могу!..". На вопрос, а почему ты, такой весь из себя крутой, не можешь strrev() написать, ответ был такой — дык это программа не для практического применения, вот в Дельфи можно одну функцию вызвать, и она всё сделает (про #include <string.h> он тоже не в курсе был). И вообще, что он всё что угодно на Delphi сделает. Моя попытка с ходу подобрать простую "практическую" задачку, которая не решается с помощью готовых компонент, успехом не увенчалась. Парень так и остался в уверенности, что он — крутой программер, а в институте глупостям учат.

Вывод: простота создания пользовательского интерфейса плодит не будущих программеров, а таких вот кулхацкеров, которые всё что угодно напишут.
Ещё вывод: чтобы, с одной стороны, программистскую искру не потушить, и, с другой, не растить мышкотаскателей, обучение должно вестись на программах с возможностью создания GUI. Но создавать его должно быть СЛОЖНО. Нужно, чтобы это самое создание GUI учило программированию.

Я начинал с TurboPascal, и даж однажды писал что-то типа оконной библиотеке на тамошнем egavga.bgi. Теперь понимаю, что всё это было не зря.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re: C# для школьников
От: orangy Россия
Дата: 12.02.05 16:52
Оценка: +4
Здравствуйте, Alik, Вы писали:

A>Компания MS придумала еще один шаг в процессе популяризации .Net

A>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.

Прочитал (почти) все ветки обсуждения и не нашел одного важного аспекта. Если пропустил — простите. Этот аспект — правило 80%/20%.

1. 80% материала будет усвоено 20% учеников, остальными 80% учеников будет усвоено лишь 20% материала (из тех же 80%, что и первой группой). 20% материала не будет усвоено никем.
2. 80% учеников никогда не станут профессиональными программистами. Возможно, они смогут написать программку расчета кривой в своей последующей экономической деятельности, но не будут зарабтывать деньги непосредственно программированием. Из оставшихся 20% хорошими программистами станут едва ли половина, остальные будут теми самыми "мышевозителями", как их обозвал Влад.

И от этого никуда не деться. Поэтому программу обучения надо составлять так, чтобы она что-то полезное дала всем категориям.
Чтобы 20% "простого" материала было полезно всем и сразу. Это формулы, вычисления, решение уравнений, етк — вобщем прикладуха чистой воды. Формочки без зауми. Веб без подробностей. Простые типы. Методы решения конкретных задач.

Чтобы 60% оставшегося усвоенного "средней сложности" материала теми 20% процентами заложило фундамент для самообучения. Это типы, переменные, вообще более глубокий материал. Принципы и абстракции. Стандартные примеры иерархий типа фигура — замкнутая.кривая — овал — круг. Простейший полиморфизм. Алгоритмы более глубоко. Понятия О(f(x)) в простом виде.

Остальные 20% совершенно неусвоенных процентов должны быть особенно интересны и доступны "на потыкать", пусть даже без понимания и усвоения. Игрушки — самое подходящее для этой части. Сложные идеи поведения объектов, зоны ответственности, полиморфизма и т.п. Детектор коллизий (столкновение).

Главное — 100% учеников должны научиться думать, а не копировать. Согласен с Владом: обязательно учить работать с информацией, c MSDN/man/info/web/news/rss искать её, перерабатывать. Имеет смысл делать мини-курс по поиску в сети.

Такая вот моя нехитрая арифметика. Возможно, реальные проценты слегка другие, но суть остается той же. Замечу, что выбор платформы никак не влияет на результат. Предпочтительная платформа будет определяться ВУЗом и/или самообучением.
"Develop with pleasure!"
Re[5]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 15:41
Оценка: 51 (2) +1
Здравствуйте, Alik, Вы писали:



A>Так в чем преимущество (в данном контексте)?


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



A>Ученик всегда зависит от знаний учителя. И это не повод не учиться.


сто пудов

A>Если ты сможете обосновать преимущество, можно перейти и на ASP.NET. Я всегда открыт для новых идей.


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


G>>С окошечками тоже обречена на провал, потмоу что там сплошь и рядом инкапсуляция наследование и полиморфизм


A>Ты понимаешь, что такое ток? Действительно понимаешь, ан епросто знаешь формулы и определение? Отсутствие понимания что такое ток мешает людями пользоваться розетками? Не только пользоваться, но и менять, а то и самим выпиливать их лобзиком?


См выше относительно трехбуквенных технологий
Хотя! С точки зрения пиара нужно окнечно преподавать окошечки.


A>Я вот не пойму. Ты предлагаешь вместо winforms давать asp.net или просто ради спортивного интереса обсуждаешь "почему бы не"?


Именно

G>>Да, слава МС — все-таки маркетологи у них молодцы.


A>Кстати, это не маркетологи МС, а один отдельно взятый энтузиаст в отдельно взятом регионе

A>(Это чтобы закрыть разговоры о вселенском заговоре МС )

Я как раз очень "ЗА" заговор МС : )) хорошие пацаны, и вот эта их инициатива (пусть и в отдельно взятом энске) в который раз заставляет меня подумать о том что на работу они набирают людей с головой.
Удачи тебе, браток!
Re[2]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 07:54
Оценка: 2 (2) -1
Здравствуйте, Nuald, Вы писали:

Да какая алгоритмизация — МС на этот х.й клали! Им главное привить слабым и неориентирующимся пока молодым людям некоторые идеи относительно того, по какому пути развития следует идти — чистой воды коммерция — причем мегавыгодная.
Удачи тебе, браток!
Re[13]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.05 21:05
Оценка: 2 (2) +1
Здравствуйте, Astaroth, Вы писали:

VD>>Да и фигня все это. Главное что дело вы затеяли очнь правильное. Шарп — это как раз тот язык на котором нужно учить импиративных программистов. Он привьет им правильные навыки и позволит избежать перегрузки мозгов.


A>Навыки рисования окошек?


У тебя серьезные проблемы с комплексами. Учти, что эта болезнь прогрессирует.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: C# для школьников
От: dimitry_dimitry  
Дата: 22.08.04 16:32
Оценка: -3
Здравствуйте, Alik, Вы писали:

A>Доброе время суток.


лучше это в юмор%)
... << Rsdn@Home 1.1.4 beta 1 >>
Re[4]: C# для школьников
От: orangy Россия
Дата: 12.02.05 21:17
Оценка: 9 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Если детям нужно дать создать окошко в начале их изучения (чтобы заинтерисовать), то нужно сделать это не вдаваясь в подробности. Просто — Дети. запустили студию... Открыли меню Фвйл\Нью выбрали ВинФормсПриложение... Нашли кнопку в тулбоксе. Бросили ее на форму... Написали MessageBox.Show("Дарова усе!");. Вот дети вы и создали первое в своей жизни приложение. А теперь я вам объясню как это чудо работает. Обещаю вам, что те кто не будет халтурить через квартал смогут писать любые программы самостоятельно. Ну, а далее теорию.


Именно так! Сначала надо вызвать у детей "Ух ты!", потом "Я тоже так могу!", потом "А как мне это изменить?" и т.п. Голая теория приводит к заучиванию, "лишь бы сдать", "когда наконец это закончится", и "ну наконец-то спихнули этот курс".

Помнится, мой преподаватель говорил: "Есть одна секретная ячейка...", а потом начиналось программирование в системных регистрах (PDP-11 + RT11FB)...
"Develop with pleasure!"
Re[3]: C# для школьников
От: J-peg  
Дата: 20.08.04 12:23
Оценка: 1 (1) -1
A>Основная задача — привить детям алгоритмическое мышление. Это делается при помощи языков программирования.

Имхо, спорное утверждение. В 90% случаев у детей прививается не какое-то там мышление, а стремление побыстрее переписать код из учебника. Уж сколько я не видел примеров обучения программированию и информатике — всё суть одна ерунда, только с разным уровнем квалификации преподавателей. Без алгоритмического мышления писать хороший код невозможно, но само алгоритмическое мышление изучением программирования не развивается. Для развития алгоритмического мышления компьютер вообще не нужен, он только мешает.



A>Разные учителя (школы) подходят к выбору языка по-разному. Встречается и бейсик, и алгол, и блок-схемы, и некоторые псевно-языки (довольно часто встречаются);


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



A>Поскольку языковую базу давать в любом случае надо, я предпочел бы C#, а не блок-схемы. По многим причинам, например:


A>1. Можно посмотреть на результат своих усилий. Причем, при грамотно построенной программе, можно в результате прийти к выводу, что "хорошо весьма".

A>2. Перспективный язык. В случае "лююбви с первого взгляда" можно продолжать его изучать

A>Можно, конечно, и C++ (этот вопрос обдумывался неоднократно), но с методологической точки зрения его достаточно трудно преподнести школьнику. Наибольшую сложность вызывают указатели. Кстати, в паскале, конечно, есть указатели, но в школах их, как правило, обходят стороной (читай "не заостряют внимания").


Не буду оспаривать. Я не знаю ни C++, ни С#, ни паскаль, не могу сравнить, и не могу себе представить чтобы эти языки в дальнейшем мне хоть как-то понадобились (если только суровая жизнь насильно не заставит меня пересесть на Windows).


З.Ы.
Как-то раз я сдавал в институте зачёт по информатике. Мне поставили "удовлетворительно". Дело в том, что я неправильно указал каким функциям "Ёкселя" соответсвует та или иная иконка меню. В связи с чем у меня появляется резонный вопрос: а уровень квалификации гонщика тоже проверяют по знаниям названий всех моделей акустических автомобильных систем?
Re[4]: C# для школьников
От: Larm Украина  
Дата: 21.08.04 09:39
Оценка: 1 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Итак. Для начала нужно определить глобальный план.


VD>1. Нужно объяснить людям что такое алгоритм и вообще пояснить какие задачи можно решать с помощью программ.

VD>2. Нужно дать понятие процедурного программирования и структурного подхода.
VD>3. Нужно объяснить что такое типы и описать идеии ООП.
VD>4. Нужно продемонстрировать что такое библиотека, модульный подход и компонет.
VD>5. Рассказ о библиотеках и обучение использования самых часто используемых.
VD>6. В заключении нужно провести ликбез о том как нужно добывать знания и дать понятия культуры программирования.

VD>Собственно все! Вот так просто можно сотварить программиста.

VD>О визуализации и примерах на таком уровне думть рано.

Круто. Сколько, как ты думаешь, учеников будут продолжать тебя случать через полторы минуты после начала такой лекции?

VD>

Для начала нужно понимать, что люди уже должны уметь работать на компьютере. Если они не умеют набивать текст и открывать приложения, то есть огромная вероятность, что с этой точки им не сдвинутся. Причем обязательно найдутся те кто имеет дома компьютер и им учиться нажимать на кнопки будет скучано. Оптимально если ученики уже владеют компьютером на некотором уровне.


VD>2. Нужно дать понятие процедурного программирования и структурного подхода.


VD>2.1. Заостряем внимание учеников на том, что в приведенных примерах нам сейчас важны толко метод Main и вызов метода WriteLine.

VD>2.2. Объясняем что цель прогаммы произвести некоторые рассчеты и дать компьютеру какие-то приказы. WriteLine — это как раз приказ вывести строчку на консоль (опять же про консоль они обязаны знать).
VD>2.3. Объясняем на пальцах, что любой рассчет или приказ компьютеру можно и нужно выносить в методы.
VD>2.4. Объясняем что методы можно определять и вызывать. Короче даем понятие метода, его определение и вызова.

Вот это да, это правильно. В общем. идеи здравые, но не забываем, что учим детей. Приведенная ниже программа ориентирована на изначально заинтересованных подростков, а задача школы состоит именно в том, чтобы заинтересовать изначально не интересующихся. ИМХО так.
The God who walks is among us...
Re[5]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 11:34
Оценка: +2
Здравствуйте, Larm, Вы писали:

L>Круто. Сколько, как ты думаешь, учеников будут продолжать тебя случать через полторы минуты после начала такой лекции?


Думаю, что все. Интересность зависит не от того что излагают, а от того как и под каким соусом излагают.

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


Знчит нужно разбавлять ее аналогиями из жизни. Интересными задачами. Байками в конце концов.

Я просто хочу заострить внимание на последовательности изложения. А то в попытке сделать изложение проще получится сумбур и в итоге бессмысленно проведенное время. Ну, и как всегда выучат язык и научатся программировать только те кто этого очень хотел, и вопреки обучению неждели в следствии.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.04 08:33
Оценка: +2
Здравствуйте, Alik, Вы писали:

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


Это концептуальная основа Шарпа. Ни в коем случае не опускйте ее.

A>По нашему мнению, за 8 часов можно только рассказать и показать ученикам, что представляют собой каждый из перечисленных типов. При этом ученики не смогут использовать эти типы для написания конкретных программ, что противоречит основным принципам школьной педагогики.


Значит дайте 16, 24, 32... В общем, столько сколько нужно. Это очень важный аспект.

VD>>3.4. Даем понятие влью-типов и ссылочных типов.

VD>> 3.4.1. Объясняем, что такое хип и сборка мусора.
VD>> 3.4.2. Объясняем что такое стек.
VD>> 3.4.3. Обясняем, что вэлью типы могут храниться в хипе тлько будучи помещенные в массивы или экземпляры других типов, а ссылочные всегда хранятся в хипе.

A>Об этом можно рассказать обзорно. Скорее всего в голове оно не останется, т.к. практического применения не найдет и проиллюстрировать крайне сложно.


Практическое применение — это полиморфизм. Вы датете практический пример на самом первом уроке:
Console.WriteLine(1 + 2);

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

VD>> 3.4.4. Объячняем что такое боксинг.


A>Здесь очень трудно объяснить, что такое боксинг, т.к. не понятно, зачем он нужен.


Кому? Вам? Вот по этому я и говорю, что нужно дават цельную концепцию типа, а не обзорное введение в классы.

A> Кроме того, поскольку все предыдущие пункты были обзорные, без выработки умений и навыков, у ученика не сложилось четкое представление о том, чем простой тип отличается от класса.


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

A>Мы вообще против того, чтобы вводить формальныое понятие "абстракция". Безусловно это слово использоваться будет, т.к. оно понятно на интуитивном уровне. Но не дальше.


Мне кажется это грубешая ошибка. Без понимания того что такое абстракция и без четкого понимания ее значимости ни о каком ООП говорить нельзя. Да и не только об ООП.

A>Наследование с нашей точки зрения давать рано, потому что в предыдущих темах не было сформировано понятия методов класса.


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

A>Для того, чтобы хотя бы обзорно дать понятние инкапсуляции (а подробнее ученикам усвоить не под силу), надо сформировать понятие интерфейса и прав доступа к членам класса. В предыдущих пунктах об этом не упоминалось.


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

Все, и интерфейс, и интерфесы (как часть языка), и модификаторы доступа, все это долно быть дано как раз в этих двух уроках. И это очень важно. И очень важно чтобы дети связывали все это с терминами наследования, полиморфизма и инкапсуляции. Это столпы ООП. Если вы не дадите их, то лучше вообще не мучить детей. Так как время оти проведут зря.

A>Для того, чтобы объяснить полиморфизм, надо дать понятия перегрузки методов,


перегрузки не надо. Вернее надо, но к полиморфизуму это отношение не имеет.

A> переопределения методов, виртуальных методов, абстракных классов.


А так же интерфейсов...

A> Мы думаем, что ни за 2, ни за 4, ни даже за 10 часов такие понятия школьники усвоить не смогут.


Значит пусть усваивают за 20. Это в конце концов цель вашего курса. Какое ООП без базовых знаний?

VD>>[q]Короче, тут очень важно объяснить что без абстрагирования нельзя решать сложные задачи. И что все идеи ООП в основном нацелены на то самое упрощение решения конкретных проблем.


A>Как раз без абстрагирования можно решать задачи.


Внимательнее почти то что я написал. Сложные задачи.

A> Это, конечно, ключевой момент ООП, но его пока можно обойти стороной.


Ни в коем случае! Вы можете им не дать пол языка, но это понятие обязаны. Или вы сделаете из детей потенциальных коллек.

A> Позже, когда школьник столкнется с этим понятием, он вспомнит, что сталкивался с ним и раньше, просто не называл еготак. Этот прием в педагогике называтеся пропедевтика и применяется сплошь и рядом при изучении практически всех школьных предметов.


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

A>Было бы здорово, если бы ты описал, что должна делать эта программа. Т.е. несколько вариантов использования (use cases) с точки зрения пользователя.


Да какя будет программа в общем-то не важно. Важена сама иллюстрация. Возможно таких программ будет множетсво (на каждй урок). Я все же шел по верхам.

A>На это действительно можно потратить время, если оно останется.


Так не трате много времени на ерунду вроде if-ов, которые они и так знают. А потратьте на то что нужно. Хотя если вы хотите экономить на принципах ООП, то зря. Лучше уж отказаться от библиотек. Организация модульности и компонентности — это всео лишь технологические решпния. Они могут измениться, а вот если вы толково обясните детям понятия инкасуляции, наследования и полиморфизма, то они вам по гроб будут благодарны.

A>Мы считаем, что практически невозможно объяснить за 2 часа школьнику, что такое динамическая загрузка. И уж тем более зачем она нужна.


Если вы до этого обяснили что такое полиморфизм и инкапсуляция, то объяснить зачем нужна динамическая загрузка ничего не стоит. Весь код то:
Assembly assembly = Assembly.LoadFrom("путь\имя сборки");
IНекийИнтерфейс некийИнтерфейс = (IНекийИнтерфейс)assembly.CreateInstace("имя типа");
некийИнтерфейс.НекийМетод();

А уж рассказ про компоненты без этго будет подбен шаманской сказке.

VD>>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).

VD>>4-8 часов.

A>Для этого у ученика еще слишком мало знаний: у него не сформированы понятия переменная класса, свойство класса. Кроме того, сама идея рефлекшина ломает представление про ООП, которое мы только еле-еле сформировали.


Вообще-то это не первый пункт. Если конечно проигнорировать все что было выше, то да. Но если они освоили все что было выше, то никаких проблем нет. А понятие метоописания, хотя и не обязательно но очень ползно.

A>С нашей точки зрения эту тему стоит пропустить.


Возможно. Но если есть время, то лучше хотя бы поверхносно коснуться.

A>За один час можно будет объяснить понятие "отчуждаемый код", но никак не больше . И вообще на наш взгляд ученикам это рассказывать не имеет смысла из-за сложности


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

VD>>5.1. Рассказать о FCL. Сказать, что количество уже готового кода огромно и нужно научиться эффективно его использовать.

VD>>1-2 часа.

A>Это можно сделать за 5 минут.


Странные у вас оценки времени. На ФЦЛ можно убить и 100 часов.

A> Если речь идет об обучении каким-то конкретным часто испольщуемым классам, то 1-2 часа крайне мало.


Нужно учить не конкретным классам, умению изучать новые классы и применять их на практике. Если времени мало, значит увеличивать его.

VD>>5.2. Дать введение в коллекции. Достаточно остановиться на ArrayList и HashTable. Прикрасным примером к данному разделу будет подсчет слов в файле.

VD>>4 часа.

A>Не слишком ли поздно?


Нет. В самый раз. Это как раз и будет иллюстрацией использования классов из ФЦЛ.

A> Впрочем, на эти две коллекции достаточно потратить и 2 часа.


Ошибаетесь. Как минимум хэш-таблица заслуживает своих 2 часов. И потом вам нужно учит не конкретной реализации (она кстати, уже новая есть, во втором фрэймворке введены List<T> и Dictionary<K, V>, т.е. дженерик-классы.

VD>>5.3. Рассказать о WinFors. Дать примеры программ.

VD>>8 часов.

A>Здесь, конечно, стоило немного подробнее. Не совсем понятно, как рассказать, что именно рассказывать, на что тратиить 8 часов. Это может быть и мало, и много.


Значит можно расписать отдельно. Но я бы не стал уж очень сильно упираться в них. С практическо точки зрения это совсем не важные сведения. Когда ученики начнут рельную работу, все ГИУ изменится до неузноваемости и знание конкретных классов будет бессмысленным.

VD>>5.4. Расказать про GDI+. Это кстати, всего лишь библиотека, а не графические возможности Шарпа. Шарп язык универсальный. Он может и без GDI+ обойтись.

VD>>2 часа.

A>Опять же стоило бы расписать подробнее. Что рассказывать, что показывать (или не показывать).


Ну, значит можно по позже сесть и попытаться расписать примерный план по библиотекам.

A>Впрочем, за 2 часа можно только показать, и то очень мало. Что уж говорить о практическом задании...


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

VD>>5.5. Рассказать об ASP.NET. Создать пример простенького веб-сайта.

VD>>2 часа.

A>За 2 часа?


Можно и за 10 минут. Ты меня не слушаешь и отрицаешь необходимость очевидных вещей. А именно они дадут возможность быстро познакомить детей с технологией. Изучить конечно ее им не удастся. Но это будет хороший быстрый старт и применение полученных знаний на практике.

Создать простенькое веб-приложение не сложнее чем форму. Особенно если исползовать второй фрэймворк (а именно его лучши и использовать, так как иначе вы будет учить детей устаревшей информации).

A> Т.е. учитель создает, а ученики смотрят?


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

A>Опять же, что рассказать, какие элементы должны быть на сайте. Следует учитывать, что незнакомых елементов быть не должно.


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

VD>>5.6. Рассказать о БД и о ADO.NET (в общем о библиотеке доступа к данным).

VD>>2 часа.

A>Но у учеников же еще нет понятие про базы данных вообще.


Нда. Логично. Ну тогда или отказаться вообще, или уделить этому вопросу болше времени.

A>С этим мы безусловно согласны. И про RSDN не забудем!


Ну, хоть в чем-то мы сошлись.

A>Для нас сомнительно, что ученики смогут это сделать. Большинство вопросов изучалось обзорно. Ни один материал не был отработан...


Можете не сомневаться как минимум один точно напишит. А вообще чем болше практики тем лучше. Вы как раз должны стараться чтобы после курса ученик мог уметь программировать.

A>1. Мы ведем речь о школьном курсе изучения основ языка программирования C#.


Тогда меньше библиотек и больше тиории. Но это же скушно.
И кстати, лучше делайте упор на ООП, а не на языке. Язык им возможно прийдется сменить, но принцпы неизменны. Так что пользы будет больше.

A> Если ты вспомнишь школьный учебник по любому предмету, то после каждого параграфа идут вопросы, задачи и упражнения. Именно в ответах на эти вопросы и решении этих задач или упражнений есть суть усвоения учениками изучаемого материала. До сегодняшнего дня я не видел ни одного такого учебника ни по какому языку программирования.


Очень странно. Еще раз отсылаю к Кернигану и Ричи. У них язык изучался именно на примерах. Они просто реализовывали функции стандартной библиотеки С. Я вот до сих пор помню, хотя читал его много лет назад.

A> Наша цель — попытаться создать его.


Здорово. Примеры и упражнения — это очень правильно. Но заметь, в учебнике математики упражнения за разделом используют только те понятия которые уже были изучены к этому моменту. А вы пытаетесь залезать вперд. Это неприемлемо.

На счет примеров... Вам все равно создавать более детальный план. Так? Так вот когда будет создавать план, залезайте на сайт и предлагайте придумать примеры и программы иллюстрирующие конкретную проблему. Это не будет напрягать с точки зрения времени и вы получите хорошую подборку примеров.

A>2. Исходя из п.1, школьникам мало показать, надо еще и научить сразу же реализовывать это своими руками (и головой). Только тогда ученик может быть заинтересован в обычении, когда он сам видит его результат.


Согласен что это полезно. Но... та же алгебра оказвается вообще не нужной 90% учеников, но тем неменее ее учат и веселого в этом не много.

A> Он стимулирует его к дальнейшей работе. Поэтому на практическую часть курса всегда уходит болше времени, чем на теоретическую часть.


А их не должно быть. Совмещайте! Дали теории... сделали программку ее применающую. Тут все просто.

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


Дык, вот пусть и изучают на практике.

A>3. Всегда возникает дилемма: в рамках имеющихся часов изучить меньше материала, но детальнее и с выработкой умений его применения, или больше материала, но обзорно. Для студентов и профессиональных программистов, наверное, больше подходит второй вариант, а для школьников безусловно первый.


Для всех лучше первый варинт. Вам же нужно просто правильно раставить акценты. ООП приоритет, а остальное по возможности.

A>4. Поэтому мы и не согласны с включением в программу некоторых вопросов, безусловно очень важных и с точки зрения языка, и с точки зрения практического программирования, но трудных для понимания школьниками. Если мы нашим курсом научим их чему то и заинтересуем, они начнут читать дальше сами или их это научат в институте или другой вариант.


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

Понятия инкасуляции, полиморфизма, наследования и бастрации нужно дать любой ценой. Отлично если вы дадите их легко и не принужденно. Но без этого все ваши рассказы будут похожи на шаманство. Дети просто не будет понимать зачем им все это.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: C# для школьников
От: WolfHound  
Дата: 22.08.04 10:07
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Это в корне не верный подход. А мучиться потом с его плодами рийдется нам. Уже как кость в глотке торчат бедари научившиеся писать операторы и возить мышкой контролы, но нифига не помнимающие в принципах ООП и проектирования.


2Alik как ты думаешь почему распространено мнение что не дельфих пишут только ламеры? Хотя это не так.
Это происходит именно по тому что подавляющие большинство дельфи "программистов" только и умеют кдать на форму кнопки и писать операторы.

ЗЫ "бедари" я конечно понимаю что это очепятка но термин классный получился.
... << RSDN@Home 1.1.4 rev. 142 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: C# для школьников
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.02.05 18:27
Оценка: 18 (1)
Здравствуйте, Astaroth, Вы писали:
http://gzip.rsdn.ru/article/dotnet/values.xml#EJA
Автор(ы): Андрей Мартынов
Дата: 08.04.2003
Начиная программировать в среде .Net, довольно часто сталкиваешься с трудностями, в основе которых лежит недостаточно чёткое понимание различий в свойствах ссылочных типов (reference based types) и типов-значений (value based types). Между тем, мотивация применять типы-значения велика, т.к. умелое применение типов-значений может существенно повысить эффективность программного кода. Однако необходимо постоянно помнить, что типы-значения имеют ряд особенностей, которые необходимо учитывать как при разработке (определении) этих типов, так и при их использовании. Эти особенности value-типов и их отличия от ссылочных типов рассмотрены ниже.

http://gzip.rsdn.ru/article/dotnet/mcpp.xml#EDXA
Автор(ы): Игорь Ткачёв
Дата: 05.02.2002
До сих пор трудно ответить на вопрос, что такое .Net. Эта статья, являясь введением в Managed Extensions for C++ (MC++), содержит описание ряда смелых экспериментов советских ученых, наконец-то позволяющих понять, что же такое .Net вообще, и место MC++ в нем, в частности.

http://gzip.rsdn.ru/article/dotnet/refl.xml#EBHA
Автор(ы): Андрей Мартынов
Дата: 14.03.2003
В различных технологиях программирования используются метаданные разной степени подробности и разной степени универсальности. Но в технологии .Net метаданные играют совершенно особую роль. Это роль "универсального клея", на который возложены функции поставщика информации о типах как во время компиляции программы, так и во время её исполнения.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
и солнце б утром не вставало, когда бы не было меня
Re[2]: C# для школьников
От: Alik Украина  
Дата: 21.08.04 18:17
Оценка: 16 (1)
Здравствуйте, dshe, Вы писали:

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


A>>Доброе время суток.


D>Пока VladD2 и Andre разрабатывают более систематизированную программу , я хочу задать вопрос к методистам.


D>Насколько я помню свое образование, если школа уделяет достаточно внимания развитию у детей индивидуального мышления, то развитию командного -- пренебрежительно мало (если вообще ни воспринимается как попытка списывать, и, как следствие, пресекается).


D>В связи с этим такой вопрос: каким образом можно восполнить это пробел? Как можно научить детей работать в команде? Как стимулировать профессиональное общение и обмен своим опытом, своими наработками? Каким образом оценивать вклад каждого члена команды? И при этом, что бы это было не в ущерб развитию способности мыслить самостоятельно. Когда нужно приучать детей работать в команде (и нужно ли это вообще)?


D>Может кто-то это уже практиковал? Поделитесь опытом и своими результатами.


Развитию навыков работы в команде в современных (продвинутых) учебных заведениях служат проведение мат и инф боев, регат, брейн-рингов, ICM-турниров, групповых проектов. Более сложно обстоит дело с оцениванием вклада каждого. Здесь все поступают скореее интуитивно или же все получают одинаковые оценки. Некоторые пытаются оценить вклад каждого путем опроса самой команды. Некоторые проводят дополнительное собеседование с каждым. Но все это пока мало эффективно или очень громоздко.
С уважением. Алик.
Re[10]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 21:43
Оценка: 8 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

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


ГВ>>>Хм. И что? Они не согласовывали свои действия с heading office? Если ответ — "да", то затея, ИМХО, обречена на провал, а если — "нет", то утверждение Globus-а весьма недалеко от истины.


VD>>Наоборот. Если согласуют, то рашьше чем в следующем тысячелетии ответа не будет.


ГВ>Ну, я думаю, что если не согласовывали, то это тоже... кхм. Подождём ответа от Alik.


Я уточнил. Действильно идея была согласована с вышестоящим начальством Microsoft Ukraine.
С уважением. Алик.
Re[3]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 02:52
Оценка: 8 (1)
Здравствуйте, Alik, Вы писали:

A>А часы брались не с подолка, а из опыта преподавания Делфи. Это хоть и не С# и ОО подходу там уделялось не такое уж большое внимание, но тем не менее...


И все же мне кажется, что часы не соотвествуют сложности понимаемых вопросов.

A>Нам очень интересен любой вариант такого курса для школьников. Мы готовы к обсужданию вашего варианта и комментариев к нашему.


ОК. Только чур не воспринимать критику и предложение на личный счет. Мы преследуем целью создать удачный процесс обучения современному языку.

A>Мы можем продолжать общаться в форуме или, если удобнее, можем перейти в почту.


Лучше в форуме. Здесь много опытных и не очень программистов советы и оценки которых могут очень помочь. К тому же наш Янвс намного удобнее чем любые Оутлуки.


Сначала я попробую изложить алтенативный план. А в другом сообещнии покритикую ваш.

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

Итак. Для начала нужно определить глобальный план.

1. Нужно объяснить людям что такое алгоритм и вообще пояснить какие задачи можно решать с помощью программ.
2. Нужно дать понятие процедурного программирования и структурного подхода.
3. Нужно объяснить что такое типы и описать идеии ООП.
4. Нужно продемонстрировать что такое библиотека, модульный подход и компонет.
5. Рассказ о библиотеках и обучение использования самых часто используемых.
6. В заключении нужно провести ликбез о том как нужно добывать знания и дать понятия культуры программирования.

Собственно все! Вот так просто можно сотварить программиста.
О визуализации и примерах на таком уровне думть рано.

Теперь расписываем по этапам.
1. Нужно объяснить людям что такое алгоритм и вообще пояснить какие задачи можно решать с помощью программ.

Для начала нужно понимать, что люди уже должны уметь работать на компьютере. Если они не умеют набивать текст и открывать приложения, то есть огромная вероятность, что с этой точки им не сдвинутся. Причем обязательно найдутся те кто имеет дома компьютер и им учиться нажимать на кнопки будет скучано. Оптимально если ученики уже владеют компьютером на некотором уровне.


1.1. Даем приложение "Дарова, мир!". Тут Шарп очень неудачный язык потому как без классов и методов это сделать не удастся. Однако пример прост:
using System;

class Test
{
    static void Main()
    {
        Console.WriteLine("Привет, орлы!");
    }
}


Говорим, что это самая примитивная программа. Но в ней есть главное — Алгоритм. Собственно тут вы все лучше меня знаете. Только один совет... Ненужно много теории. Совсем ненужны блоксхемы и прочая лабуда которую обычно талкают в учебных заведениях. Все должно быть просто и быстро. Можно сразу же привести второй пример:
using System;

class Test
{
    static void Main()
    {
        Console.WriteLine(1 + 2 - 30 / 6);
    }
}


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

На это можно отвести одно занятие. Честно говоря и того много. Но там без разных умных слов не обойдется.


2. Нужно дать понятие процедурного программирования и структурного подхода.

2.1. Заостряем внимание учеников на том, что в приведенных примерах нам сейчас важны толко метод Main и вызов метода WriteLine.
2.2. Объясняем что цель прогаммы произвести некоторые рассчеты и дать компьютеру какие-то приказы. WriteLine — это как раз приказ вывести строчку на консоль (опять же про консоль они обязаны знать).
2.3. Объясняем на пальцах, что любой рассчет или приказ компьютеру можно и нужно выносить в методы.
2.4. Объясняем что методы можно определять и вызывать. Короче даем понятие метода, его определение и вызова.

На это тоже одно занятие. Видимо час по вашему. Или у вас там в школах уже парами учат?

2.5. — 2.х — даем описание: переменной, стуктурных операторов и т.п. В общем учим писать структурные программы. Тут все как в Паскале, по этому я опускаю подробности. Галвное постораться не заострять внимание на типах (хотя умные орлы обязаны сами задать вопрос о них, ведь в примерах без них ниауда.).

3. Нужно объяснить что такое типы и описать идеии ООП.

Собственно почти цель всего курса. Причем важно дать понятие именно типа, а не класса.


3.1. Заостряем внимание на целом числе и строке, как на самых часто используемых представителях типов. Вспоминаем что в примерах мы как раз использовали их.
1 час.
3.2. Объясняем, понятие типа и экземляра типа. Это очень важный момент, по этому ни времени, ни красок тут жалеть нельзя. Любые аналогии будут кстати. Например, легковые автомобили и Мерседас, Жигули, ... Объясняем ученикам, что любой экземляр обладает типом.
2-4 часа.
3.3. Крассификация типов:
    * Встроенные.
        * Числовые.
        * Строковые.
    * Массивы.
    * Классы.
    * Структуры.
    * Делегаты.

даем краткое описание того что представляет из себя каждый из пунктов, чем они отличаются и где применяются.
~8 часов.
3.4. Даем понятие влью-типов и ссылочных типов.
3.4.1. Объясняем, что такое хип и сборка мусора.
3.4.2. Объясняем что такое стек.
3.4.3. Обясняем, что вэлью типы могут храниться в хипе тлько будучи помещенные в массивы или экземпляры других типов, а ссылочные всегда хранятся в хипе.
3.4.4. Объячняем что такое боксинг.
4 часа.
3.5. Объясняем что такое абстракция.
1 час.
3.6. Объясняем что такое наследование и как оно позволяет создавать абстракции.
2-4 часа.
3.7. Объясняем что такое инкамсуляция и как она помогает абстрагироваться от реализации.
1 час.
3.7. Объясняем что такое полиморфизм и опять же говорим об абстрагиировани.
2-4 часа.

Короче, тут очень важно объяснить что без абстрагирования нельзя решать сложные задачи. И что все идеи ООП в основном нацелены на то самое упрощение решения конкретных проблем.

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


4. Нужно продемонстрировать что такое библиотека, модульный подход и компонет.

В общем-то развитие прошлой темы. Но на новм уровне. Тут главное объяснить принципы повтоного использования кода, динамическую загрузку и визуализацию работы с кодом (низайн компонетов).


4.1. Объяснить зачем нужно повторно испоьзовать код.
1 час.
4.2. Объчнить что такое модуль и библиотека. Пояснить, что в дотнет их роль играют сборки.
2-4 часа.
4.3. Обяснить что такое динамическая загрузка и зачем она нужна.
2 часа.
4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).
4-8 часов.
4.5. Плавно подвести к тому, что эти вещи дают нам возможность работать с отчуждаемым кодом визуально, просто и комфортно. Поснить, что визвальность не связана с постоением ГУИ хотя построение гуи обычно основано на компонетном подходе. Сделать приложение со стандартыными компонентами, напрмер, с таймером.
1 час.
5. Рассказ о библиотеках и обучение использования самых часто используемых.

5.1. Рассказать о FCL. Сказать, что количество уже готового кода огромно и нужно научиться эффективно его использовать.
1-2 часа.
5.2. Дать введение в коллекции. Достаточно остановиться на ArrayList и HashTable. Прикрасным примером к данному разделу будет подсчет слов в файле.
4 часа.
5.3. Рассказать о WinFors. Дать примеры программ.
8 часов.
5.4. Расказать про GDI+. Это кстати, всего лишь библиотека, а не графические возможности Шарпа. Шарп язык универсальный. Он может и без GDI+ обойтись.
2 часа.
5.5. Рассказать об ASP.NET. Создать пример простенького веб-сайта.
2 часа.
5.6. Рассказать о БД и о ADO.NET (в общем о библиотеке доступа к данным).
2 часа.

6. В заключении нужно провести ликбез о том как нужно добывать знания и дать понятия культуры программирования.

6.1. Объяснить что все дополнительные данные можно узнать из таких источников как:
    * MSDN.
    * Книги и журналы (не забыть упомянуть наш RSDN Magazine :) ).
    * Рассказать о форумах и программистских сайтах 
      (Опять таки не забыть про RSDN :)) ).

постараться научить их правильно формулировать вопросы для форумов и составлять запросы в поиске МСДН-а.

2-4 часа.

6.2. Обяснить важность соблюдения правли хорошего тона в программирвоании и стиля кодирования.
2 часа.

Ну, и в конце дать возможность создать собственные, интересные им программы.

ЗЫ

Возможно понятие типа можно давать перед расширенным понятием методов и структурного программирования.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: C# для школьников
От: Larm Украина  
Дата: 21.08.04 08:54
Оценка: 8 (1)
Здравствуйте, VladD2, Вы писали:

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


VD>Дык. Керниган прекрасно показал как нужно начинать. Показать примеры реальных программ очень верная идея. Но их можно а) показать не вдаваясь в подробности вроде форм и кнопок, б) вообще показать в консоли. Например:

VD>using System;

VD>
VD>class Sample
VD>{
VD>    static void Main()
VD>    {
VD>        Console.WriteLine(3 + 5 - 20 / 2);
VD>    }
VD>}
VD>


A>> т.к. из паскаля школьники прекрасно понимают, что это такое и достаточно показать небольшие отличия;


VD>Это какие же? Замену begin/end на {/}? Сдается мне, это они поймут за минуту.

A>>- После этого изучить синтаксис языка (он все же несколько отличатся от паскаля, хотя многие вещи заново "учить" не надо: так, например, нет необходимости тратить много времени на if,

VD>А у вас на него 4 часа отводится! Вот это и странно.


Научили аналогу WriteLn? Супер . И не надо забывать, что это мы тут здоровенные дядьки, из-за компов не вылазящие , а дети и с begin/end трех лаптей не свяжут, а тут заменить их на {/}. Услышать-то они услышат, но через три минуты забудут. Если не раньше . Им объяснять и показывать надо. А насчет формочек — могу сказать на примере своего брата, что интерес к изучению языка существенно возрос, когда появилась возможность оформлять все не в убогой консоли, а с помощью виндового интерфейса. Он даже пошел и раскошелился на книжку по GUI
The God who walks is among us...
Re[2]: C# для школьников
От: dshe  
Дата: 20.08.04 07:04
Оценка: 2 (1)
Здравствуйте, Andre, Вы писали:


A>>Было бы очень интересно узнать мнение других людей. Любая конструктивная критика и рекомендации по улучшению приветствуется.


A>ИМХО здесь немного спутаны понятия. Стоило бы разделить понятия язык C# + .NET Framework и конкретные технологии.

A>Например, почти сразу же начинается параллельное изучение WinForms. Возникает вопрос, а почему, например, не ASP.NET?
A>Думаю стоило бы больше времени уделить языку и особенно ООП. Под конец сделать обзор технологий с практическими примерами: WinForms, ASP.NET, ADO.NET, WebServices и т.д. чтобы подчеркнуть широкий спектр возможностей применения платформы. В данной программе C# позиционируется только как средство рисования окошек что не есть правильно.

Может быть для опытных программистов, но для школы -- самое оно. Задача школы -- не дать исчерпывающее описание платформы или языка, а сделать предмет занимательным. Практические примеры надо давать как можно раньше. И не сильно запариваться с ООП. Можно сколько угодно философствовать о прелестях каких-то парадигм, подходов, технологий; но пока не будет прочувствована необходимость в них -- это будет без толку. Детям надо дать возможность творить, самовыражаться, пусть даже сначала это будет концептуально неправильно.

Из своего опыта: в школе у нас было что-то вроде кружка по программированию. И его вел предователь из ВУЗа (которого специально для этого пригласили). Месяц или два он нам рассказывал о блок-схемах, о технологии программирования, о том как правильно писать программы и тому подобное. Я никогда не думал, что программирование может быть таким скучным! И я ничего не помню из того, что он нам рассказывал. Хотя, возможно, он говорил правильные вещи. Самым стОящим занятием (надо сказать, что не все до него "дожили" -- большинство бросило эти занятия) было то, на котором мы наконец-то дорвались до компьютеров, и наконец написали что-то на ФОРТРАНЕ, о котором нам так долго рассказывал препод.

A>Главное заинтересовать человека за эти 100 часов, а тот кто заинтересуется, в дальнейшем сам изучит необходимую ему технологию опираясь на прочные базовые знания.


Согласен.
--
Дмитро
C# для школьников
От: Alik Украина  
Дата: 19.08.04 21:38
Оценка: 1 (1)
Доброе время суток.

Компания MS придумала еще один шаг в процессе популяризации .Net
В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.

Предполагается, что преподавать C# будут школьникам в 10м классе, выделено на это ориентировочно 100 часов. Учитывается также, что школьники уже к этому времени освоили основы паскаля и алгоритмики (потрачено на это было достаточно много — примерно 100 часов).

Сразу оговорюсь, что программу составляло 2 человека: один, подходящий с позиции опытного программиста ; второй — на основе солидных методологических знаний и опыта преподавания информатики в специализированной школе. Поэтому получилось нечто среднее.

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

В результате долгих прений между авторами получилось следующая программа:

Программа С#

1. Понятие про язык программирования. Трансляторы, компиляторы, интерпретаторы. Понятие про интегрированную среду программирования. Классификация языков программирования. История развития технологии программирования. Программирование в машинных кодах. Языки программирования низкого и высокого уровня, нисходящее проектирование (структурное и модульное). Понятие про ООП. Microsoft.NET , CIL, CLR. Язык программирования С# (2 часа).

2. Первые программы на языке программирования С#. Понятие консольного приложения. Основные простые типы числовых переменных (int, double). Основные арифметические операции. Команда вывода на экран. Начальные сведения про среду редактирования. Сборка программы, запуск программы. Сообщения об ошибках или об их отсутствии во время сборки программы. Редактирование текста программы, исправление ошибок. Способы быстрого ввода. Всплывающие подсказки. Структура программы (обзор): решения, проекты, классы, ресурсы. (4 часа)

3. Постоянные и переменные величины. Оператор присваивания, составной оператор присваивания. Арифметические операторы, операторы инкремента и декремента. Операторы сравнения. Логический тип переменных. Логические операторы. Приоритет оператора. Особенности действий с целыми и действительными числами. Приведение целого типа к действительного и наоборот. (4 часа)

4. Символьный и строковый типы переменных. Ввод данных с клавиатуры. Преобразование текста в число и наоборот (методы Convert.ToDouble, Convert.ToInt32, Convert.ToString). (2 часа)

5. Условный оператор if и его использование. Операторы switch и ?. (4 часа)

6. Цикл for, его использование. Операторы break & continue. Циклы while и do-while. (4 часа)

7. Понятие Windows-приложения. Понятие формы, компонентов. Компоненты TextBox, Label, Button. Переменные textbox, label, button и их типы. Свойства компонентов (простые и сложные), два режима их показов в окне Properties. События, методы (процедуры) их обработки. Метод обработки события "кнопка нажата". (2 часа)

8. Составление программ для создания Windows-приложений с ручным и программным изменением значений свойств компонент и созданием методов обработки разных событий. (4 часа)

9. Понятие класса, как типа. Понятие экземпляра класса. Примеры классов (Form, TextBox, Button, Label) и их экземпляров. Команда создания экземпляра класса, оператор new. Понятие конструктора класса и его предназначение. Члены класса: переменные, методы, свойства. (4 часа)

10. Microsoft.NET Framework: описание, примеры существующих классов (System.Int32, System.Double, System.Char, System.String, System.Boolean). Понятие пространства имен. (2 часа)

11. Компоненты RadioButton и CheckBox, их свойства и использование для организации ветвления. (4 часа)

12. Решение задачи использованием классов, содержащих описание переменных, методов и конструкторов. Методы без результатов (void), с результатами, с аргументами и результатами. Модификаторы доступа public и private. (6 часов)

13. Область видимости переменных. (2 часа)

14. Передача объектов методу. (4 часа)

15. Возврат из метода нескольких значений. Модификатор out. (2 часа)

16. Перегрузка методов. (4 часа)

17. Коллекции. Примеры коллекций System.Collections.ArrayList и System.Collections.HashTable. Оператор цикла foreach. (2 часа)

18. Ввод из файла и вывод в файл. (4 часа)

19. Компоненты OpenFileDialog и SaveFileDialog, их использование при работе с файлами. (2 часа)

20. Одномерные массивы. Класс System.Array. (4 часа)

21. Перечисления. (2 часа)

22. Класс System.String, операции со строками. Компонент RichTextBox. (4 часа)

23. Наследование. Создание многоуровневой иерархии классов. Модификатор доступа protected. (4 часа)

24. Создание программ с несколькими формами (использование наследования). (4 часа)

25. Интерфейсы. Абстрактные классы. (2 часа)

26. Обработка ошибок, исключения. Существующие и собственные классы исключений. Сравнение исключений с возвратом кода ошибки. (4 часа)

27. Составление программ с использование компонентов: GroupBox, PictureBox, MainMenu, ContextMenu, ListBox, ComboBox, DataGrid, Timer, ProgressBar, NumericUpDown. (8 часов)

28. Графические возможности C#. (8 часов)
С уважением. Алик.
Re: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка: 1 (1)
Здравствуйте, Alik, Вы писали:

Откровенно говоря по-моему это никуда не годится. Никакой системности в излажении. Часы взяты явно с потолка (на сложные вещи 2-4 часа на фигню до 8).

Если вы действительно хотите получить программу после которой школьники смогут назвать себе программистами, то давайте составим ее вместе. Могу придложить свой вальтернативный вариант и обосновать почему нужно делать именно так.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: C# для школьников
От: Andre Украина  
Дата: 20.08.04 21:46
Оценка: 1 (1)
A>Поскольку все это будет делаться впервые, то участие большего числа конструктивных идей может только улучшить результат. Одна из целей этого эксперимента — понять, на сколько ООП воспринимаемо школьниками 10 класса, пусть даже продвинутыми.

A>Мы можем продолжать общаться в форуме или, если удобнее, можем перейти в почту.


Лучше в форуме. Может и я чем помогу так как есть опыт создания программ адаптации людей приходящих в команду. Имеется в виду изучение .NET
... << RSDN@Home 1.1.4 :: rev. 164 >> :: ...
Я бы изменил мир — но Бог не даёт исходников...
Re: C# для школьников
От: Andre Украина  
Дата: 19.08.04 22:37
Оценка: +1
A>Было бы очень интересно узнать мнение других людей. Любая конструктивная критика и рекомендации по улучшению приветствуется.

ИМХО здесь немного спутаны понятия. Стоило бы разделить понятия язык C# + .NET Framework и конкретные технологии.
Например, почти сразу же начинается параллельное изучение WinForms. Возникает вопрос, а почему, например, не ASP.NET?
Думаю стоило бы больше времени уделить языку и особенно ООП. Под конец сделать обзор технологий с практическими примерами: WinForms, ASP.NET, ADO.NET, WebServices и т.д. чтобы подчеркнуть широкий спектр возможностей применения платформы. В данной программе C# позиционируется только как средство рисования окошек что не есть правильно.

За это время все равно WinForms не изучить, только путаницы в голове прибавит. А вот базу заложить можно и нужно. Главное заинтересовать человека за эти 100 часов, а тот кто заинтересуется, в дальнейшем сам изучит необходимую ему технологию опираясь на прочные базовые знания.

А вообще начинание интересное. Хочу пожелать удачи в этом нелегком деле
... << RSDN@Home 1.1.4 :: rev. 164 >> :: eek — ganja smuggling
Я бы изменил мир — но Бог не даёт исходников...
Re: C# для школьников
От: Nuald Россия http://nuald.blogspot.com
Дата: 20.08.04 07:31
Оценка: -1
Бедные школьники — такая замудренная программа. ИМХО, они точно ничего не запомнят, если вы им весь такой список предложите. В данном случае я бы акцентировал внимание на выработке алгоритмического мышления и базовых алгоритмах. К сожалению, визуальное программирование, основанное на использовании готовых компонентов к этому не особо располагает. Так что, наверное, я бы взял какой-нить простой язык (даже скриптовый, типа Python), в котором нет прямой работы с типами (т.к. одни лишь типы предполагают кучу времени на их изучение), и лишь акцентировал бы внимание на нужных вещах. А присобачить разработку GUI к тому же Python-у не проблема — живет же связка Tcl/Tk до сих пор.
А если говорить о том, чтобы они сразу получали практические знания — это вряд ли можно уложить в 100 часов для среднестатического школьника, у которого голова забита совершенно другими вещами. Я как-то смотрел свои программы, написанные, когда я только начинал знакомится с компьютером и долго смеялся... Хоть с точки зрения языка все было нормально, но с точки зрения алгоритмов — полный бред...
Re[2]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 07:41
Оценка: +1
Здравствуйте, Nuald, Вы писали:

N>Бедные школьники — такая замудренная программа. ИМХО, они точно ничего не запомнят, если вы им весь такой список предложите. В данном случае я бы акцентировал внимание на выработке алгоритмического мышления и базовых алгоритмах.


Ты наверное не обратил внимание на начало письма. Эти школьники УЖЕ потратили достаточное время на алгоритмы. Кроме того (об этом я не писал, но раз интересно...), у них еще впереди целый год (11-й класс) на программирование некоторых мат-методов. Так что даже альтернативы такой не стоит: "алгоритмы или язык программирования".

N>К сожалению, визуальное программирование, основанное на использовании готовых компонентов к этому не особо располагает. Так что, наверное, я бы взял какой-нить простой язык (даже скриптовый, типа Python), в котором нет прямой работы с типами (т.к. одни лишь типы предполагают кучу времени на их изучение), и лишь акцентировал бы внимание на нужных вещах. А присобачить разработку GUI к тому же Python-у не проблема — живет же связка Tcl/Tk до сих пор.


И чем это лучше, чем использовать все тот же процедурный паскаль? Отсутствие типизации я считаю недостатком, а не достоинством (не надо начинать holy war, я говорю про данный конкретный случай).

N>А если говорить о том, чтобы они сразу получали практические знания — это вряд ли можно уложить в 100 часов для среднестатического школьника, у которого голова забита совершенно другими вещами.


А на чем основывается это утверждение?
С уважением. Алик.
Re: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 07:50
Оценка: +1
Снимаю шляпу перед Мс. В который раз доказали, что они идут впедери всей ИТ-индустрии. Реально сильнейший коммерческий шаг по популяризации своих продуктов — взращивают чуть ли не в теплицах будущих носителей и продвигателей своих технологий.
Удачи тебе, браток!
Re[3]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 13:55
Оценка: +1
Здравствуйте, Alik, Вы писали:

A>Наверное потому что MS предложила C#, кроме того я не настолько хорошо знаком с ASP.NET

A>А если серьезно, то какие преимущества (с точки зрения обучения школьников у ASP.NET перед C#)?

Не asp.net перед C# а asp.net перед winforms. В вопросе имелось в виду — почему рассматривается только одна часть технологии.
Относительно выделенного — то есть товарищи учащиеся становяться заложниками вашего незнания?

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


С окошечками тоже обречена на провал, потмоу что там сплошь и рядом инкапсуляция наследование и полиморфизм

A>Полностью согласен. Но именно заинтересовать, согласитесь, можно как раз при помощи WinForms. И базу заложить: никто же не собирается последовательно давать все классы из фреймворка, дать некоторые элементы — а там сами уже доучат то, что надо.


А почему именно winforms — asp.net не заинтересует? Там такие же кнопочки можно рисовать. А тем более "архитектура клиент-сервер" — если уж хотите познакомить с чем-то.

A>>А вообще начинание интересное. Хочу пожелать удачи в этом нелегком деле


A>БОльшое спасибо. Будем стараться


Да, слава МС — все-таки маркетологи у них молодцы.
Удачи тебе, браток!
Re[6]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 22:28
Оценка: +1
Здравствуйте, Glоbus, Вы писали:

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


A>>Так в чем преимущество (в данном контексте)?


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


Спасибо за идею.
Тут фокус в том, что формочки как раз могут помочь в изучении концепции. В данном случае винформс — это не цель, а инструмент. А если попутно еще и будет заложена база для винформс, так что тут плохого?

Хочу повториться про алгоритмы и структуры данных. Эти задачи НЕ стоят. Следовательно решать их нет необходимости.


A>>Если ты сможете обосновать преимущество, можно перейти и на ASP.NET. Я всегда открыт для новых идей.


G>Да я ваще против того чтобы в учебных заведения преподавали трехбуквенные технологии. Это все просто инструменты — их освоить — как два пальца об асфальт. Нуджно научить думать, алгоритмизировать — для этого вполне можно заюзать шарп, ну ооп можно еще почитать в том же курсе. А всякие там навороты только приведут к распылению внимания.


Прекрасно. Это и есть наша цель. И именно шарп мы и собираемся использовать. Ты считаешь, что из программы следует убрать винформс? Т.е. ограничиться консольными приложениями? Я был бы благодарен, если ты выделил части программы, которые ты считаешь "наворотами". Мы с удовольствием обсудим эти изменения.

G>>>С окошечками тоже обречена на провал, потмоу что там сплошь и рядом инкапсуляция наследование и полиморфизм

G>Хотя! С точки зрения пиара нужно окнечно преподавать окошечки.

Окошечки нужны для наглядности. Для увеличения заинтересованности. Для мотивации. Много ли удовольствия получит ученик, написав программу, считающую арифметическое выражение? А теперь сравним с программой, которая выводит диалоговое окошко с кнопками ДА и НЕТ и "глупым вопросом", причем НЕТ будет убегать от мышки. Уверен, что он эту программу покажет всем знакомым, а те будут считать его кул хацкером.

A>>Я вот не пойму. Ты предлагаешь вместо winforms давать asp.net или просто ради спортивного интереса обсуждаешь "почему бы не"?


G>Именно


Я обычно говорю бизнес аналистам, что ответы ДА и НЕТ на вопрос ИЛИ всегда трактую в свою пользу. Это помогает им давать более точные ответы.
С уважением. Алик.
Re[7]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 02:52
Оценка: +1
Здравствуйте, Alik, Вы писали:

A>При этом никто не говорит, в чем эта бессистемность проявляется, что он бы изменил и пр., а вместо этого заводят разговор "а почему не ХХХ".


Ну, почему же не говорит? Тебя как раз не даром спросили "почему WinForms?". Дело в том, что WinForms всунут в процесс обучения явно не по месту (рано и как-то неуклюже).

A>В основу была положена такая логика изложения:


A>- Начать с примера простой программы, например, на сложение двух чисел.


Хорошая мысль. Но первым пунктом у вас история не имеющая никакого отношения к делу, но запудривающая мозги молодым не опытным ученикам.

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


Дык. Керниган прекрасно показал как нужно начинать. Показать примеры реальных программ очень верная идея. Но их можно а) показать не вдаваясь в подробности вроде форм и кнопок, б) вообще показать в консоли. Например:
using System;

class Sample
{
    static void Main()
    {
        Console.WriteLine(3 + 5 - 20 / 2);
    }
}


Просто и несет реальную пользу. Сразу видно, что калькулятор отдыхает.

A>- После этого изучить синтаксис языка (он все же несколько отличатся от паскаля, хотя многие вещи заново "учить" не надо: так, например, нет необходимости тратить много времени на if,


А у вас на него 4 часа отводится! Вот это и странно.

A> т.к. из паскаля школьники прекрасно понимают, что это такое и достаточно показать небольшие отличия;


Это какие же? Замену begin/end на {/}? Сдается мне, это они поймут за минуту.

A> это же относится к for и т.д.). Поэтому и часов на это немного.


Немного? 8 часов на то что они уже знают — это немного? Они со скуки будут помирать.

Я вообще не понимаю зачем изучать два языка. Шарп полностью воспроизводит функционал паскаля. Только намного более стойным образом. Да и дельфи лэнг. тоже ООП-язык. Уж если вы отказываетесь от паскаля, то можно было бы упростить детям жизнь.

A>- Дальше, на основе уже имеющегося материала можно перейти к основам ООП. Это самый сложный момент: как вводить понятие класса, его структуры и т.п.


Дык нужно вводить не понятие класса, а понятие типа. А класса как одного из его разновидностей. Это тесболее актуально для Шарпа. В Шарпе была предпринята удачная попытка унифицировать работы с типами.

A> Памятуя один из основных принципов педагогики — принцип наглядности — наша идея заключается в том, чтобы вводить понятие класса на формах, компонентах и др. объектах, которые можно визуализировать:


A>* Сначала рассматриваются форма и 1-2 компонента, и поясняется, что с каждым из них связаны переменные некоторого типа. У формы и компонентов есть свойства, которые можно задавать (изменять) при помощи процедур. Так вводятся понятие события и метода.


Мне кажется, что тут вы сделате для детей только хуже. Самя идея продемонстрировать примеры классов очень првильная. Но они должны быть именно иллюстрацией.

A>* И только теперь, когда есть визуальная опора понимания и усвоения, вводится понятие класса как типа, примеры классов (Form, TextBox, Button, Label), экземпляров класса (с ними, оказывается, уже работали: изменяли их свойства и др.) команда создания экземпляра.


А теперь попробуйте встать на место бедного учиника... Он рельно не понимает, что такое класс, тип и т.п. Но ему показывают какую-то слжную кракозябру с тысячей свойств и методов... Откуда они? А ведь о наследовании мы будем говорить только в п. 23.

A>* Здесь же уместно поговорить о конструкторе, как методе, который может задать начальные значения свойствам экземпляра класса (и это тоже уже имело визуальную поддержку)


Тогда форма очень плохой пример. Ее конструктору параметры обычно не передаются, а ее инициализация ведется в отдельном методе (из-за особенностей дизайнера) вызываемом из констуктора.

A>* Дальше пояснения продолжаются на примерах нескольких стандартных классов Microsoft.NET Framework.


А не лучше ли пойти по классическому пути и создать какие-нибудь аналоги объектов из жизни? Ну, машины, животные... И главное! Сделать это на на 23 уроке. А на 3-5.

A>- В дальнейшем изучение методологии ООП продолжается параллельно с изучением компонентов, которые уместно использовать в тех или иных задачах.


Опять зря. Компоненты сущьность особая. Не нужно их мешать пока люди не освоили понятие классов и типов.

В общем, попробую дать более развернутый ответ в посте рядом. Но уж за полноту извените. Все же это не моя прямая задача. К тому же я имел опыт обучения только более-менее взрослых людей и в двольно компактных коллективах (до 15 человек, обычно 10). Но все же. Шарп и дотнет я знаю довольно хорошо.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: C# для школьников
От: gribunin Россия  
Дата: 22.08.04 11:25
Оценка: +1
Здравствуйте, Alik, Вы писали:

A>Доброе время суток.


A>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.


Программирование в Delphi вовсе не процедурно-ориентированное, кстати.
----------------
Кирилл Грибунин
Re[8]: C# для школьников
От: WolfHound  
Дата: 22.08.04 20:44
Оценка: +1
Здравствуйте, Alik, Вы писали:

WH>>2Alik как ты думаешь почему распространено мнение что не дельфих пишут только ламеры? Хотя это не так.

WH>>Это происходит именно по тому что подавляющие большинство дельфи "программистов" только и умеют кдать на форму кнопки и писать операторы.

A>У меня, к сожалению, нет статистики, но я лично знаю двух "дельфистов" очень высокой квалификации, которые создали систему документооборота и перевели на нее ГлавКиевАрхитектуру. Было это лет 5 назад. Насколько я знаю, система до сих пор там в работе.

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

Вобще я это к тому чтобы из ваших учеников не получились "кнопка, форма шлепатели" которые мнят себя программистами.
... << RSDN@Home 1.1.4 rev. 142 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 18:05
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Ну, час. Нельзя же такой примитивщене посвящать 4 и более часов? Детям будет просто скучно. Что там объяснять?

VD>

for состоит из четырех частей:
VD>1. Инициализация. В ней можно объявить переменные некоторого типа или выполнить некоторое действие, например, проинициализировать уже имеющуюся переменную.
VD>2. Условие продолжения цикла. Булево выражение проверяемое перед каждой итерацией. Если оно возвращает true цикл должен сделать еще одну итерацию. Если false прекратить выполнение и перейти к следущей инструкции.
VD>3. Итератор. Инструкция выполянемая после каждой итерации цикла. Обычно в ней приращивают или уменьшают переменную-итератор.
VD>4. Инструкци выполняемая при каждой итерации цикла. Может быть как отдельной инструкцией, так и блоком инструкций.


Кстати, надо не забыть перевести это для них на русский
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[8]: C# для школьников
От: Sergey Россия  
Дата: 10.02.05 10:03
Оценка: :)
Hello, Astaroth!
You wrote on Wed, 09 Feb 2005 18:05:31 GMT:

A> Там была такая чудная штука под названием egavga.bgi Никаких

A> окошек-кнопок — всё сам И вот это действитеьно было интересно.

egavga.bgi — ацтой . Слишком высокоуровневая и тормознутая. Вот через
порты EGA программировать было действитеьно интересно. Но быстро надоело.

With best regards, Sergey.
Posted via RSDN NNTP Server 1.9
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: C# для школьников
От: J-peg  
Дата: 20.08.04 01:52
Оценка:
A>Компания MS придумала еще один шаг в процессе популяризации .Net

Ню-ню.


A>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.



А смысл? Неужели на C# уже требуются кадры?
Re: C# для школьников
От: Terber Россия  
Дата: 20.08.04 02:28
Оценка:
Не знаю, что это за "продвинутые" школы.. но у меня одноклассники некоторые с васиком не в ладах.. я еще не говорю о девушках
Re[3]: C# для школьников
От: Larm Украина  
Дата: 20.08.04 07:10
Оценка:
Здравствуйте, dshe, Вы писали:

Абсолютно согласен. Если детей не заинтересовать реальными результатами, типа окошко нарисовал и кнопочку на него положил, то очень быстро это всем надоест . А вот на фоне интересных вещей, когда видно результата труда, можно и теорию толкать. ИМХО, неплохая программа.
The God who walks is among us...
Re[2]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 07:26
Оценка:
Здравствуйте, J-peg, Вы писали:

A>>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.


JP>А смысл? Неужели на C# уже требуются кадры?


Пациент: Доктор, я жить буду?
Доктор: А смысл?



Основная задача — привить детям алгоритмическое мышление. Это делается при помощи языков программирования. Разные учителя (школы) подходят к выбору языка по-разному. Встречается и бейсик, и алгол, и блок-схемы, и некоторые псевно-языки (довольно часто встречаются); но самым распространенным все же является паскаль (именно процедурный паскаль, а не делфи).

Поскольку языковую базу давать в любом случае надо, я предпочел бы C#, а не блок-схемы. По многим причинам, например:

1. Можно посмотреть на результат своих усилий. Причем, при грамотно построенной программе, можно в результате прийти к выводу, что "хорошо весьма".
2. Перспективный язык. В случае "лююбви с первого взгляда" можно продолжать его изучать

Можно, конечно, и C++ (этот вопрос обдумывался неоднократно), но с методологической точки зрения его достаточно трудно преподнести школьнику. Наибольшую сложность вызывают указатели. Кстати, в паскале, конечно, есть указатели, но в школах их, как правило, обходят стороной (читай "не заостряют внимания").
С уважением. Алик.
Re[2]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 07:34
Оценка:
Здравствуйте, Terber, Вы писали:

T>Не знаю, что это за "продвинутые" школы.. но у меня одноклассники некоторые с васиком не в ладах.. я еще не говорю о девушках


Продвинутые школы — это на самом деле лицеи, школы с уклоном в математику и информатику.
Я (к счастью?) никогда не учил васик, пожтому сказать ничего не могу, но паскаль в среднем дается школьникам неплохо. Хотя, наверняка все дело в преподавателе.
С уважением. Алик.
Re[2]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 08:00
Оценка:
Здравствуйте, Andre, Вы писали:


A>>Было бы очень интересно узнать мнение других людей. Любая конструктивная критика и рекомендации по улучшению приветствуется.


A>ИМХО здесь немного спутаны понятия.


Можно подробнее?

A>Стоило бы разделить понятия язык C# + .NET Framework и конкретные технологии.


Зачем? Цель — дать базовые знания и хорошие умения. Фундаментализмом будут заниматься в институте. Я вообще не сторонник забивания детских голов излишней терминологией (тем более, мы все прекрасно знаем, как в мире IT ей спекулируют ).

A>Например, почти сразу же начинается параллельное изучение WinForms. Возникает вопрос, а почему, например, не ASP.NET?


Наверное потому что MS предложила C#, кроме того я не настолько хорошо знаком с ASP.NET
А если серьезно, то какие преимущества (с точки зрения обучения школьников у ASP.NET перед C#)?
Интересным был бы вопрос: почему C#, а не Java... Но тут я бы ответил, что уже давно думал про внедрение Java, еще когда C# не существовал в природе, но как-то с ним все не складывалось. А тут пришел MS — и дело пошло...

A>Думаю стоило бы больше времени уделить языку и особенно ООП. Под конец сделать обзор технологий с практическими примерами: WinForms, ASP.NET, ADO.NET, WebServices и т.д. чтобы подчеркнуть широкий спектр возможностей применения платформы. В данной программе C# позиционируется только как средство рисования окошек что не есть правильно.


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

A>За это время все равно WinForms не изучить, только путаницы в голове прибавит. А вот базу заложить можно и нужно. Главное заинтересовать человека за эти 100 часов, а тот кто заинтересуется, в дальнейшем сам изучит необходимую ему технологию опираясь на прочные базовые знания.


Полностью согласен. Но именно заинтересовать, согласитесь, можно как раз при помощи WinForms. И базу заложить: никто же не собирается последовательно давать все классы из фреймворка, дать некоторые элементы — а там сами уже доучат то, что надо.

A>А вообще начинание интересное. Хочу пожелать удачи в этом нелегком деле


БОльшое спасибо. Будем стараться
С уважением. Алик.
Re[2]: C# для школьников
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 20.08.04 08:20
Оценка:
Здравствуйте, Glоbus, Вы писали:

G>Снимаю шляпу перед Мс. В который раз доказали, что они идут впедери всей ИТ-индустрии. Реально сильнейший коммерческий шаг по популяризации своих продуктов — взращивают чуть ли не в теплицах будущих носителей и продвигателей своих технологий.


Как бы только в момент выхода из теплиц "носители и продвигатели" не узнали, что несомые ими технологии уже объявлены "устаревшими и ошибочными" (как это произошло с COM, например)...

P.S.
Это не наезд на .NET, это так... вольная экстраполяция...
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[3]: C# для школьников
От: WolfHound  
Дата: 20.08.04 08:30
Оценка:
Здравствуйте, Alik, Вы писали:

A>Можно, конечно, и C++ (этот вопрос обдумывался неоднократно), но с методологической точки зрения его достаточно трудно преподнести школьнику. Наибольшую сложность вызывают указатели. Кстати, в паскале, конечно, есть указатели, но в школах их, как правило, обходят стороной (читай "не заостряют внимания").

Ну С++ это не С и указатели тоже можно обойти стороной. Например берем "Эффективное программирование на С++" Эндрю Кёниг Барбара Му в этой книге 16 глав об указателях и массивах первый раз заикаются только в 10й главе.

Хотя для школьников я бы всетки использовал C# ибо при ошибках типа выход за приделы массива .НЕТ генерирует нормальное исключение в том месте где произошол выход за придела массива. Или как вариант можно использовать C++/CLI получаем почти классический С++ с рантайм проверками.
... << RSDN@Home 1.1.4 rev. 142 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 08:48
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:



SDB>Как бы только в момент выхода из теплиц "носители и продвигатели" не узнали, что несомые ими технологии уже объявлены "устаревшими и ошибочными" (как это произошло с COM, например)...


SDB>P.S.

SDB>Это не наезд на .NET, это так... вольная экстраполяция...

Маловероятно Не думаю, что МС такие лохи, что будут вбухивать бабло в то, что заведомо устареет к моменту появления подготовленных специалистов. А специалисты эти выйдут лет через 5-7. Тут же задел какой? Посеять в слабых и подвтливых душах носителей и продвигателей мысль о том что вот оно, правильное направление, вот она правда — шою упаси бог к юниксам не метнулись. Очень хорошее коммерческое решение на мой взгляд. Просто первое впечатление ведь самое сильное — ну дык давайте-де преподнесем этот весь нет в красивой оберточке. Понятное дело что никто там никого учить не будет — дальше упорядочивания массивов дело не пойдет.
Удачи тебе, браток!
Re[4]: C# для школьников
От: Terber Россия  
Дата: 20.08.04 09:32
Оценка:
Я где — то читал, что задумка самой технологии существует чуть ли не 5 — 7 лет
Re[4]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 10:50
Оценка:
Здравствуйте, Glоbus, Вы писали:

G>Маловероятно Не думаю, что МС такие лохи, что будут вбухивать бабло в то, что заведомо устареет к моменту появления подготовленных специалистов. А специалисты эти выйдут лет через 5-7. Тут же задел какой? Посеять в слабых и подвтливых душах носителей и продвигателей мысль о том что вот оно, правильное направление, вот она правда — шою упаси бог к юниксам не метнулись. Очень хорошее коммерческое решение на мой взгляд. Просто первое впечатление ведь самое сильное — ну дык давайте-де преподнесем этот весь нет в красивой оберточке.


Я в школе паскаль учил. И тем не менее сейчас (и уже довольно давно) пишу на С++. Паскаль в качестве основного языка продержался не дольше первого курса. Так что это "хорошее коммерческое решение на мой взгляд" не обязательно даст ожидаемый результат.

К тому же не забывай, что те, кто решат стать программистами, пойдут на соответствующий факультет, где им прочитают отдельными предметами: паскаль, С, С++, ООП, lisp/prolog, спец. языки программирования (примерный список того, что мне читали), — не говоря уже о том, что они сами будут изучать. Так что выбор у них будет большой и сделают они его явно не в школе.

G>Понятное дело что никто там никого учить не будет — дальше упорядочивания массивов дело не пойдет.


Это следует воспринимать как наезд? Ты сомневаешься в профессионализме преподавателя? Ты что-то знаешь про конкретный лицей, в котором это будут преподавать?
И вообще, что значит "дальше упорядочивания массивов"? Оно, межде прочим, не заканчивается на "сортировке пузырьком".
Так, к сведению: некоторые олимпиадные задачи по информатике уже на городском уровне решаются с использованием потоков в графах.
С уважением. Алик.
Re[3]: C# для школьников
От: J-peg  
Дата: 20.08.04 12:31
Оценка:
D>Может быть для опытных программистов, но для школы -- самое оно. Задача школы -- не дать исчерпывающее описание платформы или языка, а сделать предмет занимательным. Практические примеры надо давать как можно раньше. И не сильно запариваться с ООП. Можно сколько угодно философствовать о прелестях каких-то парадигм, подходов, технологий; но пока не будет прочувствована необходимость в них -- это будет без толку. Детям надо дать возможность творить, самовыражаться, пусть даже сначала это будет концептуально неправильно.

Что-то всё это сильно на агитацию смахивает.
Re[4]: C# для школьников
От: genre Россия  
Дата: 20.08.04 13:05
Оценка:
Здравствуйте, J-peg, Вы писали:


JP>Я помню, когда сам ещё был маленьким , мы изучали какую-то ерунду с букашкой на экране, которую надо было зачем-то куда-то двигать и которую надо было заставить что-то рисовать. Я уже не помню как назывался пакет, но то был полнейший маразм. Развивалось всё что угодно, только не логическое мышление. Нас также бэйсику в пятом классе пытались обучать ещё на MSX-ах. Всё опять заканчивалось переписыванием с доски непонятной абракадабры и введением этой абракадабры в машину, после чего рисовался, например, квадратик или домик. И это называется информатикой?

Еще как называется. Этот "маразм" предназначен для усвоения основных понятий, таких как "переменная, ее значение", "цикл", "операция присваивания", "условный оператор","подпрограма" итд. для 10 летних детей это совсем не очевидные вещи. Ну и скажу вам в итоге у продвинутых детей отнюдь не домик получается, а весьма сложные вещи.
... << RSDN@Home 1.1.4 beta 2 >>
Re[5]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 13:37
Оценка:
Здравствуйте, Alik, Вы писали:


A>Я в школе паскаль учил. И тем не менее сейчас (и уже довольно давно) пишу на С++. Паскаль в качестве основного языка продержался не дольше первого курса. Так что это "хорошее коммерческое решение на мой взгляд" не обязательно даст ожидаемый результат.


A>К тому же не забывай, что те, кто решат стать программистами, пойдут на соответствующий факультет, где им прочитают отдельными предметами: паскаль, С, С++, ООП, lisp/prolog, спец. языки программирования (примерный список того, что мне читали), — не говоря уже о том, что они сами будут изучать. Так что выбор у них будет большой и сделают они его явно не в школе.


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


A>Это следует воспринимать как наезд? Ты сомневаешься в профессионализме преподавателя? Ты что-то знаешь про конкретный лицей, в котором это будут преподавать?


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

A>И вообще, что значит "дальше упорядочивания массивов"? Оно, межде прочим, не заканчивается на "сортировке пузырьком".


А я че-то сказал про сортировку пузырьком? Ваще не будь формалистом — высказывание было образным, я думаю ты понял это.

A>Так, к сведению: некоторые олимпиадные задачи по информатике уже на городском уровне решаются с использованием потоков в графах.


С чем их (графы и задачи) и поздравляем А к чему ты это сказал кстати? То есть как это относится к теме топика?
Удачи тебе, браток!
Re[5]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 13:37
Оценка:
Здравствуйте, Terber, Вы писали:

T>Я где — то читал, что задумка самой технологии существует чуть ли не 5 — 7 лет


Задумка и реализация с внедрением — разные вещи
Удачи тебе, браток!
Re[4]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 15:07
Оценка:
Здравствуйте, Glоbus, Вы писали:

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


A>>Наверное потому что MS предложила C#, кроме того я не настолько хорошо знаком с ASP.NET

A>>А если серьезно, то какие преимущества (с точки зрения обучения школьников у ASP.NET перед C#)?

G>Не asp.net перед C# а asp.net перед winforms. В вопросе имелось в виду — почему рассматривается только одна часть технологии.


Так в чем преимущество (в данном контексте)?

G>Относительно выделенного — то есть товарищи учащиеся становяться заложниками вашего незнания?


Ученик всегда зависит от знаний учителя. И это не повод не учиться.
Если ты сможете обосновать преимущество, можно перейти и на ASP.NET. Я всегда открыт для новых идей.

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


G>С окошечками тоже обречена на провал, потмоу что там сплошь и рядом инкапсуляция наследование и полиморфизм


Ты понимаешь, что такое ток? Действительно понимаешь, ан епросто знаешь формулы и определение? Отсутствие понимания что такое ток мешает людями пользоваться розетками? Не только пользоваться, но и менять, а то и самим выпиливать их лобзиком?

A>>Полностью согласен. Но именно заинтересовать, согласитесь, можно как раз при помощи WinForms. И базу заложить: никто же не собирается последовательно давать все классы из фреймворка, дать некоторые элементы — а там сами уже доучат то, что надо.


G>А почему именно winforms — asp.net не заинтересует? Там такие же кнопочки можно рисовать. А тем более "архитектура клиент-сервер" — если уж хотите познакомить с чем-то.


Я вот не пойму. Ты предлагаешь вместо winforms давать asp.net или просто ради спортивного интереса обсуждаешь "почему бы не"?

A>>>А вообще начинание интересное. Хочу пожелать удачи в этом нелегком деле


A>>БОльшое спасибо. Будем стараться


G>Да, слава МС — все-таки маркетологи у них молодцы.


Кстати, это не маркетологи МС, а один отдельно взятый энтузиаст в отдельно взятом регионе
(Это чтобы закрыть разговоры о вселенском заговоре МС )
С уважением. Алик.
Re[6]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 15:18
Оценка:
Здравствуйте, Glоbus, Вы писали:

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



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


Ты забыл упомянуть еще один немаловажный для начинающего программера фактор: "что такое круто". А про это ему расскажут растрепанные одногрупники с отпечатком клавиатуры на лвой щеке
Как в известной песенке

...Винда — остой для дурака
И если не пуста башка
Нужна коммандная строка.
Плесни пивка...

A>>Это следует воспринимать как наезд? Ты сомневаешься в профессионализме преподавателя? Ты что-то знаешь про конкретный лицей, в котором это будут преподавать?


G>Нет, это не следует воспринимать как наезд.А ты уже готов был ринуться в бой за каких-то мифических преподавателей ? Вспомни себя в 10м классе. Не знаю о чем ты думал, а я думал только о спорте, девках и том как бы их пожать на дискотеке . Программинг был просто милым увлечением, которое если надо вполне могло потесниться.


В том то и дело, что преподаватели не мифические (кстати, в составлении программы учавствовал преподаватель; я бы не вытянул такую задачу на одном знании предметной области). И школа не мифическая. Не то чтобы я настолько хорошо помнил 10й класс, но курсовую на паскале с графикой помню. И численные методы решений систем уравнений помню. И задачи из теории игр помню.

A>>И вообще, что значит "дальше упорядочивания массивов"? Оно, межде прочим, не заканчивается на "сортировке пузырьком".

G>А я че-то сказал про сортировку пузырьком? Ваще не будь формалистом — высказывание было образным, я думаю ты понял это.

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

A>>Так, к сведению: некоторые олимпиадные задачи по информатике уже на городском уровне решаются с использованием потоков в графах.

G>С чем их (графы и задачи) и поздравляем А к чему ты это сказал кстати? То есть как это относится к теме топика?

Опять же к тому, что на сортировке все не заканчивается. В школе учат много чему (разумеется, в разных школах по-разному). Поэтому и программы надо составлять и расчасовку делать, и нагрузку распределять, и жертвовать фундаменатльными понятиями ради понимания. И при этом не вдолбить нечаянно какую-то неправильную концепцию, чтобы переучивать потом не пришлось.
С уважением. Алик.
Re[5]: C# для школьников
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.08.04 15:24
Оценка:
Здравствуйте, Alik, Вы писали:

A>Кстати, это не маркетологи МС, а один отдельно взятый энтузиаст в отдельно взятом регионе

A>(Это чтобы закрыть разговоры о вселенском заговоре МС )

А это:

Компания MS придумала еще один шаг в процессе популяризации .Net
В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.

как понимать?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 15:27
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


A>>Кстати, это не маркетологи МС, а один отдельно взятый энтузиаст в отдельно взятом регионе

A>>(Это чтобы закрыть разговоры о вселенском заговоре МС )

ГВ>А это:

ГВ>

ГВ>Компания MS придумала еще один шаг в процессе популяризации .Net
ГВ>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.

ГВ>как понимать?

Так и понимать. Есть отделение МС в городе энске. Лицо, обладающее достаточными полномочиями, приняло решение о проведение экперимента в некоторых школах города энска.
С уважением. Алик.
Re[4]: C# для школьников
От: Glоbus Украина  
Дата: 20.08.04 15:45
Оценка:
Здравствуйте, J-peg, Вы писали:



JP>Я помню, когда сам ещё был маленьким , мы изучали какую-то ерунду с букашкой на экране,


Лого
Удачи тебе, браток!
Re[7]: C# для школьников
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.08.04 15:48
Оценка:
Здравствуйте, Alik, Вы писали:

A>Так и понимать. Есть отделение МС в городе энске. Лицо, обладающее достаточными полномочиями, приняло решение о проведение экперимента в некоторых школах города энска.


Хм. И что? Они не согласовывали свои действия с heading office? Если ответ — "да", то затея, ИМХО, обречена на провал, а если — "нет", то утверждение Globus-а весьма недалеко от истины.

Кстати то, о чём ты говоришь, весьма коррелирует с пробегавшими в печати некоторое время назад сообщениями о предполагавшемся массовом внедрении MS Office в школьном учебном процессе. Так что, ИМХО, не стоит горячиться — не ты первый.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 15:57
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


A>>Так и понимать. Есть отделение МС в городе энске. Лицо, обладающее достаточными полномочиями, приняло решение о проведение экперимента в некоторых школах города энска.

ГВ>Хм. И что? Они не согласовывали свои действия с heading office? Если ответ — "да", то затея, ИМХО, обречена на провал, а если — "нет", то утверждение Globus-а весьма недалеко от истины.

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

ГВ>Кстати то, о чём ты говоришь, весьма коррелирует с пробегавшими в печати некоторое время назад сообщениями о предполагавшемся массовом внедрении MS Office в школьном учебном процессе. Так что, ИМХО, не стоит горячиться — не ты первый.


Я не горячусь.
Если я не первый, то мне очень интересно было бы пообщаться с тем, кто уже пробовал внедрить любой ОО-язык в школе.

Кстати MS Office в школе и так изучают (в гуманитарных классах) довольно давно без всякого вмешательства МС. Просто дань существующей реальности — то, что скорее всего пригодится рядовому пользователю.
С уважением. Алик.
Re[9]: C# для школьников
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.08.04 18:24
Оценка:
Здравствуйте, Alik, Вы писали:

A>Ответ: не знаю Но я уже заинтересовался. Обязательно выясню.

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

Ну скажем так — всё зависит от того, что именно согласуется и как этот процесс происходит. Вобщем — это уже оффтопик.

ГВ>>Кстати то, о чём ты говоришь, весьма коррелирует с пробегавшими в печати некоторое время назад сообщениями о предполагавшемся массовом внедрении MS Office в школьном учебном процессе. Так что, ИМХО, не стоит горячиться — не ты первый.


A>Я не горячусь.

Извини, это фигура речи.

A>Если я не первый, то мне очень интересно было бы пообщаться с тем, кто уже пробовал внедрить любой ОО-язык в школе.

A>Кстати MS Office в школе и так изучают (в гуманитарных классах) довольно давно без всякого вмешательства МС. Просто дань существующей реальности — то, что скорее всего пригодится рядовому пользователю.

Ну тут ничего сказать не могу — не имел возможности наблюдать.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка:
Здравствуйте, dshe, Вы писали:

D>Может быть для опытных программистов, но для школы -- самое оно. Задача школы -- не дать исчерпывающее описание платформы или языка, а сделать предмет занимательным. Практические примеры надо давать как можно раньше.


Это не практические примеры. Это каша.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка:
Здравствуйте, Alik, Вы писали:

A>Наверное потому что MS предложила C#, кроме того я не настолько хорошо знаком с ASP.NET

A>А если серьезно, то какие преимущества (с точки зрения обучения школьников у ASP.NET перед C#)?

Очень смешно. Не настолько — это означает "не имею ни малейшего поняти что это такое". Может быть лучше говорить здесь правду? Иначе потом совсем плохо выйдет.

АСП.НЭТ — это библиотека для построения Веб-интерфейса. Практически аналог WinForms, но не для GUI, а для WUI.

Человек имел в виду, что изложение безсистемное. Не сказав о том, что такое класс (да и метод) начинают пудрить мозги формами. Да еще к тму же приписывают компоненты к формам.

Если детям нужно дать создать окошко в начале их изучения (чтобы заинтерисовать), то нужно сделать это не вдаваясь в подробности. Просто — Дети. запустили студию... Открыли меню Фвйл\Нью выбрали ВинФормсПриложение... Нашли кнопку в тулбоксе. Бросили ее на форму... Написали MessageBox.Show("Дарова усе!");. Вот дети вы и создали первое в своей жизни приложение. А теперь я вам объясню как это чудо работает. Обещаю вам, что те кто не будет халтурить через квартал смогут писать любые программы самостоятельно. Ну, а далее теорию.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка:
Здравствуйте, Alik, Вы писали:

A>Если ты сможете обосновать преимущество, можно перейти и на ASP.NET. Я всегда открыт для новых идей.


Тут уже трое говорят о бессистемности изложения. А ты все про АСП.НЭТ. Это просто пример. С тем же успехом можно изучить любой другой фрэймворк. Дело не в этом. Дело в том, что после такого изложения (будь оно трижды веселым) у детей в голове будет каша. И они скорее не станут программистами, нежели станут.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Хм. И что? Они не согласовывали свои действия с heading office? Если ответ — "да", то затея, ИМХО, обречена на провал, а если — "нет", то утверждение Globus-а весьма недалеко от истины.


Наоборот. Если согласуют, то рашьше чем в следующем тысячелетии ответа не будет.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка:
Здравствуйте, J-peg, Вы писали:

JP>А смысл? Неужели на C# уже требуются кадры?


1. Требуются. Но все равно со школьной скамьи это не кадры.
2. Шарп прекрасный язык для изучения. Он концептуально чист и прост в понимании. Отличная замена Паскалю.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.04 20:08
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Ну С++ это не С и указатели тоже можно обойти стороной. Например берем "Эффективное программирование на С++" Эндрю Кёниг Барбара Му в этой книге 16 глав об указателях и массивах первый раз заикаются только в 10й главе.


Не. Так ты из детей инвалидов сделашь.

WH>Хотя для школьников я бы всетки использовал C# ибо при ошибках типа выход за приделы массива .НЕТ генерирует нормальное исключение в том месте где произошол выход за придела массива. Или как вариант можно использовать C++/CLI получаем почти классический С++ с рантайм проверками.


Да им до границ массива еще пилить и пилить. Шарп лучше тем что его проще понять.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 20:37
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>Откровенно говоря по-моему это никуда не годится. Никакой системности в излажении. Часы взяты явно с потолка (на сложные вещи 2-4 часа на фигню до 8).


Если можно, поясните мысль относительно отсутствия системности в изложении.

А часы брались не с подолка, а из опыта преподавания Делфи. Это хоть и не С# и ОО подходу там уделялось не такое уж большое внимание, но тем не менее...

VD>Если вы действительно хотите получить программу после которой школьники смогут назвать себе программистами, то давайте составим ее вместе. Могу придложить свой вальтернативный вариант и обосновать почему нужно делать именно так.


Нам очень интересен любой вариант такого курса для школьников. Мы готовы к обсужданию вашего варианта и комментариев к нашему.

Поскольку все это будет делаться впервые, то участие большего числа конструктивных идей может только улучшить результат. Одна из целей этого эксперимента — понять, на сколько ООП воспринимаемо школьниками 10 класса, пусть даже продвинутыми.

Мы можем продолжать общаться в форуме или, если удобнее, можем перейти в почту.
С уважением. Алик.
Re[9]: C# для школьников
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.08.04 20:45
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>Хм. И что? Они не согласовывали свои действия с heading office? Если ответ — "да", то затея, ИМХО, обречена на провал, а если — "нет", то утверждение Globus-а весьма недалеко от истины.


VD>Наоборот. Если согласуют, то рашьше чем в следующем тысячелетии ответа не будет.


Ну, я думаю, что если не согласовывали, то это тоже... кхм. Подождём ответа от Alik.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 21:40
Оценка:
Здравствуйте, VladD2, Вы писали:

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


A>>Если ты сможете обосновать преимущество, можно перейти и на ASP.NET. Я всегда открыт для новых идей.


VD>Тут уже трое говорят о бессистемности изложения. А ты все про АСП.НЭТ. Это просто пример. С тем же успехом можно изучить любой другой фрэймворк. Дело не в этом. Дело в том, что после такого изложения (будь оно трижды веселым) у детей в голове будет каша. И они скорее не станут программистами, нежели станут.


При этом никто не говорит, в чем эта бессистемность проявляется, что он бы изменил и пр., а вместо этого заводят разговор "а почему не ХХХ".

В основу была положена такая логика изложения:

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

— После этого изучить синтаксис языка (он все же несколько отличатся от паскаля, хотя многие вещи заново "учить" не надо: так, например, нет необходимости тратить много времени на if, т.к. из паскаля школьники прекрасно понимают, что это такое и достаточно показать небольшие отличия; это же относится к for и т.д.). Поэтому и часов на это немного.

— Дальше, на основе уже имеющегося материала можно перейти к основам ООП. Это самый сложный момент: как вводить понятие класса, его структуры и т.п. Памятуя один из основных принципов педагогики — принцип наглядности — наша идея заключается в том, чтобы вводить понятие класса на формах, компонентах и др. объектах, которые можно визуализировать:

* Сначала рассматриваются форма и 1-2 компонента, и поясняется, что с каждым из них связаны переменные некоторого типа. У формы и компонентов есть свойства, которые можно задавать (изменять) при помощи процедур. Так вводятся понятие события и метода.

* И только теперь, когда есть визуальная опора понимания и усвоения, вводится понятие класса как типа, примеры классов (Form, TextBox, Button, Label), экземпляров класса (с ними, оказывается, уже работали: изменяли их свойства и др.) команда создания экземпляра.

* Здесь же уместно поговорить о конструкторе, как методе, который может задать начальные значения свойствам экземпляра класса (и это тоже уже имело визуальную поддержку)

* Дальше пояснения продолжаются на примерах нескольких стандартных классов Microsoft.NET Framework.

— В дальнейшем изучение методологии ООП продолжается параллельно с изучением компонентов, которые уместно использовать в тех или иных задачах.
С уважением. Алик.
Re[8]: C# для школьников
От: Andre Украина  
Дата: 20.08.04 21:46
Оценка:
ГВ>Хм. И что? Они не согласовывали свои действия с heading office? Если ответ — "да", то затея, ИМХО, обречена на провал, а если — "нет", то утверждение Globus-а весьма недалеко от истины.

Думаю все согласовано. Если речь о том городе что у Alika в профиле (привет землякам), то насколько я лично слышал от представителя микрософт все это одобрено и действительно изучение дотнета в виде экперимента двигается в вузы и лицеи.
... << RSDN@Home 1.1.4 :: rev. 164 >> :: ...
Я бы изменил мир — но Бог не даёт исходников...
Re[4]: C# для школьников
От: Alik Украина  
Дата: 20.08.04 22:11
Оценка:
Здравствуйте, Andre, Вы писали:

A>>Поскольку все это будет делаться впервые, то участие большего числа конструктивных идей может только улучшить результат. Одна из целей этого эксперимента — понять, на сколько ООП воспринимаемо школьниками 10 класса, пусть даже продвинутыми.


A>>Мы можем продолжать общаться в форуме или, если удобнее, можем перейти в почту.


A>Лучше в форуме. Может и я чем помогу так как есть опыт создания программ адаптации людей приходящих в команду. Имеется в виду изучение .NET


Будем считать, что договорились Заранее спасибо.

Кстати, есть также идея порекомендовать интересующимся какую-то литературу (учебников-то нет). На данный момент кроме "Thinking in C#" by Larry O'Brien and Bruce Eckel ничего подходящего не нашел. К сожалению (насколько я знаю) ее пока не перевели...
С уважением. Алик.
Re[11]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 02:51
Оценка:
Здравствуйте, Alik, Вы писали:

A>Я уточнил. Действильно идея была согласована с вышестоящим начальством Microsoft Ukraine.


Открою тебе сикрет, что это значит не согласовали.

Да и фигня все это. Главное что дело вы затеяли очнь правильное. Шарп — это как раз тот язык на котором нужно учить импиративных программистов. Он привьет им правильные навыки и позволит избежать перегрузки мозгов.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 02:52
Оценка:
Здравствуйте, Alik, Вы писали:

A>Кстати, есть также идея порекомендовать интересующимся какую-то литературу (учебников-то нет). На данный момент кроме "Thinking in C#" by Larry O'Brien and Bruce Eckel ничего подходящего не нашел. К сожалению (насколько я знаю) ее пока не перевели...


Рекомендовать можно только Рихтера. Но он наверно окажется тяжеловатым для детей.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 02:52
Оценка:
Здравствуйте, Alik, Вы писали:

A>Тут фокус в том, что формочки как раз могут помочь в изучении концепции. В данном случае винформс — это не цель, а инструмент. А если попутно еще и будет заложена база для винформс, так что тут плохого?


Откровенно говоря очень многие начавшие с создания ГУИ, так на этом и останавливаются. Я скорее согласен с Glоbus нужно учить детей программировать, а мышой двигать они научатся и сами.

A>Хочу повториться про алгоритмы и структуры данных. Эти задачи НЕ стоят. Следовательно решать их нет необходимости.


Но та же FCL — это куча алнгоритмов и структур данных. Коллекции ведь тоже структуры и алгоритмы.

A>Прекрасно. Это и есть наша цель. И именно шарп мы и собираемся использовать. Ты считаешь, что из программы следует убрать винформс?


Убрать акцент на них. Как пример сложной библиотеки компонентов которые легко использовать она просто прекрасна.

A> Т.е. ограничиться консольными приложениями? Я был бы благодарен, если ты выделил части программы, которые ты считаешь "наворотами". Мы с удовольствием обсудим эти изменения.


Ну, например, до обсуждения классов и наследования серьезно разбирать примеры с формами не стоит.

A>Окошечки нужны для наглядности. Для увеличения заинтересованности. Для мотивации.


Тогда уж лучше не окошки, а графику использовать. Примитивную игрушку сделать и т.п.

A> Много ли удовольствия получит ученик, написав программу, считающую арифметическое выражение?


Дык если при этом они смогут сократить время на алгебру...

Да и любое занятие можно сделать интересным если вложить в него душу.
Еще раз повторю. Не стоит подменять программирование работой с контролами. И то, и то важно. Но ваша задача давать именно основы программирования. И до момента осознания что такое компонент и т.п. углубляться в формы и контролы просто нельзя.

A> А теперь сравним с программой, которая выводит диалоговое окошко с кнопками ДА и НЕТ и "глупым вопросом", причем НЕТ будет убегать от мышки. Уверен, что он эту программу покажет всем знакомым, а те будут считать его кул хацкером.


Убегающая кнопка это гора кода. В начале программирования такие примеры неприемлемы. Конечно можно показать примеры готовых приложений. Но без заглядывания в код.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: C# для школьников
От: dshe  
Дата: 21.08.04 07:31
Оценка:
Здравствуйте, Alik, Вы писали:

A>Доброе время суток.


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

Насколько я помню свое образование, если школа уделяет достаточно внимания развитию у детей индивидуального мышления, то развитию командного -- пренебрежительно мало (если вообще ни воспринимается как попытка списывать, и, как следствие, пресекается).

В связи с этим такой вопрос: каким образом можно восполнить это пробел? Как можно научить детей работать в команде? Как стимулировать профессиональное общение и обмен своим опытом, своими наработками? Каким образом оценивать вклад каждого члена команды? И при этом, что бы это было не в ущерб развитию способности мыслить самостоятельно. Когда нужно приучать детей работать в команде (и нужно ли это вообще)?

Может кто-то это уже практиковал? Поделитесь опытом и своими результатами.
--
Дмитро
Re[6]: C# для школьников
От: Alik Украина  
Дата: 21.08.04 08:03
Оценка:
Здравствуйте, VladD2, Вы писали:

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


A>>Кстати, есть также идея порекомендовать интересующимся какую-то литературу (учебников-то нет). На данный момент кроме "Thinking in C#" by Larry O'Brien and Bruce Eckel ничего подходящего не нашел. К сожалению (насколько я знаю) ее пока не перевели...


VD>Рекомендовать можно только Рихтера. Но он наверно окажется тяжеловатым для детей.


Ну так и подмывало в предыдущем письме попросить не рекомендовать Рихтера
Спасибо за совет, но я практически уверен, что для детей он неподъемен.
С уважением. Алик.
Re[4]: C# для школьников
От: Alik Украина  
Дата: 21.08.04 08:20
Оценка:
Здравствуйте, VladD2, Вы писали:

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


A>>А часы брались не с подолка, а из опыта преподавания Делфи. Это хоть и не С# и ОО подходу там уделялось не такое уж большое внимание, но тем не менее...

VD>И все же мне кажется, что часы не соотвествуют сложности понимаемых вопросов.

Как я уже сказал, мы заинтересованы в альтернативных вариантах. Очень надеюсь, что в результате компиляции всех идей мы сделаем приемлемую программу.

A>>Нам очень интересен любой вариант такого курса для школьников. Мы готовы к обсужданию вашего варианта и комментариев к нашему.

VD>ОК. Только чур не воспринимать критику и предложение на личный счет. Мы преследуем целью создать удачный процесс обучения современному языку.

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

A>>Мы можем продолжать общаться в форуме или, если удобнее, можем перейти в почту.

VD>Лучше в форуме. Здесь много опытных и не очень программистов советы и оценки которых могут очень помочь. К тому же наш Янвс намного удобнее чем любые Оутлуки.

Мозиллы
Но форум действительно удобнее. Несмотря на то, что дерево время от времени отображается кривовато

VD>Сначала я попробую изложить алтенативный план. А в другом сообещнии покритикую ваш.


[skipped]

Большое спасибо. Нам нужно некоторое время, чтобы изучить ваш вариант. Думаю сегодня ближе к ночи мы сможем дать вразумительный ответ.
С уважением. Алик.
Re[5]: C# для школьников
От: WolfHound  
Дата: 21.08.04 09:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не. Так ты из детей инвалидов сделашь.

Почему ты так думаешь?

VD>Да им до границ массива еще пилить и пилить. Шарп лучше тем что его проще понять.

Ну это зависит от того с какой стороны начать преподовать С++. Если с стороны С то да там черт ногу сломит. А если по началу игнорировать низкоуровневые возможности то получается довольно понятный язык. Например строки это исключительно std::string ни каких strcpy, strcmp... и прочей ереси. Ввод/вывод это исключительно std::cin/std::cout все просто и понятно. В этой книге вобще про наследие С не расказывают.
А начинается эта книга с

Нашим студентам,
благодаря которым мы поняли,
как нужно учить других.

... << RSDN@Home 1.1.4 rev. 142 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: C# для школьников
От: WolfHound  
Дата: 21.08.04 09:51
Оценка:
Здравствуйте, Alik, Вы писали:

A>Мозиллы

A>Но форум действительно удобнее. Несмотря на то, что дерево время от времени отображается кривовато
Он имел в виду FAQ по RSDN@Home aka Janus!
Автор: Andre
Дата: 14.06.04
(правда FAQ слегка устарел)
Программа мегарулез Я в веб вылезаю только за статьями или для того чтобы помодераровать.
... << RSDN@Home 1.1.4 rev. 142 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: C# для школьников
От: Alik Украина  
Дата: 21.08.04 10:07
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


A>>Мозиллы

A>>Но форум действительно удобнее. Несмотря на то, что дерево время от времени отображается кривовато
WH>Он имел в виду FAQ по RSDN@Home aka Janus!
Автор: Andre
Дата: 14.06.04
(правда FAQ слегка устарел)

WH>Программа мегарулез Я в веб вылезаю только за статьями или для того чтобы помодераровать.

Да, я понял. Суть-то вопроса была в том, какой вариант предпочтительней: приватный или публичный. Решили выбрать публичный.

Против программы ничего не имею, но после пары попыток перейти на нее (справделивости ради следует заметить, что это были довольно старые версии) предпочел продолжать использовать мазилку.
С уважением. Алик.
Re[7]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.04 11:34
Оценка:
Здравствуйте, Alik, Вы писали:

VD>>Рекомендовать можно только Рихтера. Но он наверно окажется тяжеловатым для детей.


A>Ну так и подмывало в предыдущем письме попросить не рекомендовать Рихтера

A>Спасибо за совет, но я практически уверен, что для детей он неподъемен.

С другой стороны, а почему бы не попробовать. Не с самого начало конечно... А вдруг пройдет?!
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: C# для школьников
От: Alik Украина  
Дата: 21.08.04 19:49
Оценка:
Здравствуйте, VladD2, Вы писали:

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


A>>В основу была положена такая логика изложения:


A>>- Начать с примера простой программы, например, на сложение двух чисел.


VD>Хорошая мысль. Но первым пунктом у вас история не имеющая никакого отношения к делу, но запудривающая мозги молодым не опытным ученикам.


Спасибо за похвалу мысли второго пункта. А целью первого пункта является повторение и обобщение имеющихся знаний. Напомню, что к началу изучения ученики усвоили:
1) понятие алгоритма, исполнителя, команды;
2) виды алгоритмов;
3) основы алгоритмизации и программирования с использованием Паскаля.
Они достаточно много программировали на паскале, создавали, редактировали, исполняли, тестировали и др.

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


VD>Дык. Керниган прекрасно показал как нужно начинать. Показать примеры реальных программ очень верная идея. Но их можно а) показать не вдаваясь в подробности вроде форм и кнопок, б) вообще показать в консоли.


При всем у важении к Кернигану, он не преподавал в школе.
Первые пограммы у нас подразумеваются именно консольные. Никаких формочек там не присутствует. Если вы еще раз посмотрите программу преподавания, то увидите, что формочки появляются только в 7м пункте. Конечно, можно было бы и дальше продолжать без формочек, но причины их "столь раннего" появления были уже изложены нами раньше.

VD>Например:

VD>using System;
VD>
VD>class Sample
VD>{
VD>    static void Main()
VD>    {
VD>        Console.WriteLine(3 + 5 - 20 / 2);
VD>    }
VD>}
VD>


VD>Просто и несет реальную пользу. Сразу видно, что калькулятор отдыхает.


Тут мы с вами полностью согласны. Впрочем, так мы и написали:

Начать с примера простой программы, например, на сложение двух чисел


2. Первые программы на языке программирования С#. Понятие консольного приложения.


A>>- После этого изучить синтаксис языка (он все же несколько отличатся от паскаля, хотя многие вещи заново "учить" не надо: так, например, нет необходимости тратить много времени на if,


VD>А у вас на него 4 часа отводится! Вот это и странно.


На if дейстивтельно можно потратить меньше времени (2 часа). На for — никак нельзя. Все таки, несмотря на то, что саму идею цикла они уже освоили, for в С# сильно отличается от своего паскального брата. Поэтому надо не просто показать, а выработать умения его использования.

A>> т.к. из паскаля школьники прекрасно понимают, что это такое и достаточно показать небольшие отличия;


VD>Это какие же? Замену begin/end на {/}? Сдается мне, это они поймут за минуту.


Про begin/end не согласен. Кроме того отличий гораздо больше. Не забывайте, что это не тренинг программистов, и не университетский курс. Это школа, где каждое новое знание надо повторять и закреплять примерами.

VD>Я вообще не понимаю зачем изучать два языка. Шарп полностью воспроизводит функционал паскаля. Только намного более стойным образом. Да и дельфи лэнг. тоже ООП-язык. Уж если вы отказываетесь от паскаля, то можно было бы упростить детям жизнь.


На сегодняшний день ситуация сложилась так, что ученики, которые будут изучать C#, уже изучили паскаль. Они начали его изучать в 7-м классе.
В дальнейшем, если опыт будет успешным, можно будет рассматривать полный переход на С#.

A>>- Дальше, на основе уже имеющегося материала можно перейти к основам ООП. Это самый сложный момент: как вводить понятие класса, его структуры и т.п.


VD>Дык нужно вводить не понятие класса, а понятие типа. А класса как одного из его разновидностей. Это тесболее актуально для Шарпа. В Шарпе была предпринята удачная попытка унифицировать работы с типами.


Напоминаю, что понятие типа у них уже есть из паскаля. Кроме того, в п.2 это понятие закрепляется на примерах простых типов int & double.
Затем понятие класса также вводится как тип. Известный прием "от частного к общему" очень эффективен в школе. Т.е. они имеют представление по сути о примитивных типах, потом получают представление о классах. Тут мы говорим, что класс — это тоже тип, только пользовательский и что с ним можно работать так же, как и с простым типом, например объяавить переменную этого типа. Тут можно плавно перейти к понятию экземпляра типа.

A>> Памятуя один из основных принципов педагогики — принцип наглядности — наша идея заключается в том, чтобы вводить понятие класса на формах, компонентах и др. объектах, которые можно визуализировать:


A>>* Сначала рассматриваются форма и 1-2 компонента, и поясняется, что с каждым из них связаны переменные некоторого типа. У формы и компонентов есть свойства, которые можно задавать (изменять) при помощи процедур. Так вводятся понятие события и метода.


VD>Мне кажется, что тут вы сделате для детей только хуже. Самя идея продемонстрировать примеры классов очень првильная. Но они должны быть именно иллюстрацией.


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

A>>* И только теперь, когда есть визуальная опора понимания и усвоения, вводится понятие класса как типа, примеры классов (Form, TextBox, Button, Label), экземпляров класса (с ними, оказывается, уже работали: изменяли их свойства и др.) команда создания экземпляра.


VD>А теперь попробуйте встать на место бедного учиника... Он рельно не понимает, что такое класс, тип и т.п. Но ему показывают какую-то слжную кракозябру с тысячей свойств и методов... Откуда они? А ведь о наследовании мы будем говорить только в п. 23.


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

A>>* Здесь же уместно поговорить о конструкторе, как методе, который может задать начальные значения свойствам экземпляра класса (и это тоже уже имело визуальную поддержку)


VD>Тогда форма очень плохой пример. Ее конструктору параметры обычно не передаются, а ее инициализация ведется в отдельном методе (из-за особенностей дизайнера) вызываемом из констуктора.


Конструктор дается не на примере формы, а на примере своих классов.

A>>* Дальше пояснения продолжаются на примерах нескольких стандартных классов Microsoft.NET Framework.


VD>А не лучше ли пойти по классическому пути и создать какие-нибудь аналоги объектов из жизни? Ну, машины, животные... И главное! Сделать это на на 23 уроке. А на 3-5.


К сожалению, классического пути преподавания ООП в школе не существует. Быть может мы именно его сейчас и разрабатываем
По нашему мнению сложность надо наращивать постепенно. Если дать с первых же уроков понятие класса, наследования, инстанциирования и пр., можно просто отпугнуть детей. И тогда их будет очень сложно учить дальше. А ведь они еще даже не успели заинтересоваться предметом. Еще сложнее будет, если сразу огорошить их терминами абстракция, инкапсуляция и полиморфизм. Тут мы их потеряем навсегда.

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

A>>- В дальнейшем изучение методологии ООП продолжается параллельно с изучением компонентов, которые уместно использовать в тех или иных задачах.


VD>Опять зря. Компоненты сущьность особая. Не нужно их мешать пока люди не освоили понятие классов и типов.


В чем заключается их особенность? Они служат прекрасной иллюстрацией классов.

VD>В общем, попробую дать более развернутый ответ в посте рядом. Но уж за полноту извените. Все же это не моя прямая задача. К тому же я имел опыт обучения только более-менее взрослых людей и в двольно компактных коллективах (до 15 человек, обычно 10). Но все же. Шарп и дотнет я знаю довольно хорошо.


Спасибо. Мы уже прочитали тот пост и сейчас напишем ответ.
С уважением. Алик.
Re[4]: C# для школьников
От: Alik Украина  
Дата: 21.08.04 22:07
Оценка:
Здравствуйте, VladD2, Вы писали:

Прежде всего большое спасибо за проделанную работу. Мы действительно ценим вашу помощь.

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


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


К сожалению все как раз наоборот. Как уже неоднократно упоминалось ранее, ученики подходят к изучению С# с целым багажом знаний: паскаль (и процедурная парадигма), алгоритмизация и уж безусловно умение работать на компьютере (можно даже рискнуть зачислить их в опытные пользователи).

VD>Итак. Для начала нужно определить глобальный план.


VD>1. Нужно объяснить людям что такое алгоритм и вообще пояснить какие задачи можно решать с помощью программ.

VD>2. Нужно дать понятие процедурного программирования и структурного подхода.
VD>3. Нужно объяснить что такое типы и описать идеии ООП.
VD>4. Нужно продемонстрировать что такое библиотека, модульный подход и компонет.
VD>5. Рассказ о библиотеках и обучение использования самых часто используемых.
VD>6. В заключении нужно провести ликбез о том как нужно добывать знания и дать понятия культуры программирования.

С учетом написанного выше, первые 2 пункта в нашем случае можно пропустить.
Безусловно, если бы мы учили "с чистого листа", то начинать надо было бы именно с алгоритмов; после этого можно было бы изучать процедурное программирование на базе С# (используя статические методы, но не признаваясь, что где-то там есть объекты).

К пункту 4. Мы согласны, что полезно проиллюстрировать работу с библиотеками. Однако модульный подход — это довольно большая нетривиальная тема и сомнительно, что она по силам школьникам, да еще с учетом ограниченного времени.

Мы безусловно благодарны за пункт 6. Этот элемент мы упустили в программе и обязательно его добавим.

[skipped]

VD>3. Нужно объяснить что такое типы и описать идеии ООП.


VD>

Собственно почти цель всего курса. Причем важно дать понятие именно типа, а не класса.


VD>3.1. Заостряем внимание на целом числе и строке, как на самых часто используемых представителях типов. Вспоминаем что в примерах мы как раз использовали их.

VD>1 час.
VD>3.2. Объясняем, понятие типа и экземляра типа. Это очень важный момент, по этому ни времени, ни красок тут жалеть нельзя. Любые аналогии будут кстати. Например, легковые автомобили и Мерседас, Жигули, ... Объясняем ученикам, что любой экземляр обладает типом.
VD>2-4 часа.
VD>3.3. Крассификация типов:
VD>
VD>    * Встроенные.
VD>        * Числовые.
VD>        * Строковые.
VD>    * Массивы.
VD>    * Классы.
VD>    * Структуры.
VD>    * Делегаты.
VD>

VD>даем краткое описание того что представляет из себя каждый из пунктов, чем они отличаются и где применяются.
VD>~8 часов.

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

VD>3.4. Даем понятие влью-типов и ссылочных типов.

VD> 3.4.1. Объясняем, что такое хип и сборка мусора.
VD> 3.4.2. Объясняем что такое стек.
VD> 3.4.3. Обясняем, что вэлью типы могут храниться в хипе тлько будучи помещенные в массивы или экземпляры других типов, а ссылочные всегда хранятся в хипе.

Об этом можно рассказать обзорно. Скорее всего в голове оно не останется, т.к. практического применения не найдет и проиллюстрировать крайне сложно.

VD> 3.4.4. Объячняем что такое боксинг.


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

VD>4 часа.

VD>3.5. Объясняем что такое абстракция.
VD>1 час.

Мы вообще против того, чтобы вводить формальныое понятие "абстракция". Безусловно это слово использоваться будет, т.к. оно понятно на интуитивном уровне. Но не дальше.

VD>3.6. Объясняем что такое наследование и как оно позволяет создавать абстракции.

VD>2-4 часа.

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

VD>3.7. Объясняем что такое инкамсуляция и как она помогает абстрагироваться от реализации.

VD>1 час.

Для того, чтобы хотя бы обзорно дать понятние инкапсуляции (а подробнее ученикам усвоить не под силу), надо сформировать понятие интерфейса и прав доступа к членам класса. В предыдущих пунктах об этом не упоминалось.

VD>3.7. Объясняем что такое полиморфизм и опять же говорим об абстрагиировани.

VD>2-4 часа.

Для того, чтобы объяснить полиморфизм, надо дать понятия перегрузки методов, переопределения методов, виртуальных методов, абстракных классов. Мы думаем, что ни за 2, ни за 4, ни даже за 10 часов такие понятия школьники усвоить не смогут.

VD>

Короче, тут очень важно объяснить что без абстрагирования нельзя решать сложные задачи. И что все идеи ООП в основном нацелены на то самое упрощение решения конкретных проблем.

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

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


Было бы здорово, если бы ты описал, что должна делать эта программа. Т.е. несколько вариантов использования (use cases) с точки зрения пользователя.

VD>4. Нужно продемонстрировать что такое библиотека, модульный подход и компонет.


VD>

В общем-то развитие прошлой темы. Но на новм уровне. Тут главное объяснить принципы повтоного использования кода, динамическую загрузку и визуализацию работы с кодом (низайн компонетов).


VD>4.1. Объяснить зачем нужно повторно испоьзовать код.

VD>1 час.
VD>4.2. Объчнить что такое модуль и библиотека. Пояснить, что в дотнет их роль играют сборки.
VD>2-4 часа.

На это действительно можно потратить время, если оно останется.

VD>4.3. Обяснить что такое динамическая загрузка и зачем она нужна.

VD>2 часа.

Мы считаем, что практически невозможно объяснить за 2 часа школьнику, что такое динамическая загрузка. И уж тем более зачем она нужна.

VD>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).

VD>4-8 часов.

Для этого у ученика еще слишком мало знаний: у него не сформированы понятия переменная класса, свойство класса. Кроме того, сама идея рефлекшина ломает представление про ООП, которое мы только еле-еле сформировали.
С нашей точки зрения эту тему стоит пропустить.

VD>4.5. Плавно подвести к тому, что эти вещи дают нам возможность работать с отчуждаемым кодом визуально, просто и комфортно. Поснить, что визвальность не связана с постоением ГУИ хотя построение гуи обычно основано на компонетном подходе. Сделать приложение со стандартыными компонентами, напрмер, с таймером.

VD>1 час.

За один час можно будет объяснить понятие "отчуждаемый код", но никак не больше . И вообще на наш взгляд ученикам это рассказывать не имеет смысла из-за сложности

VD>5. Рассказ о библиотеках и обучение использования самых часто используемых.


VD>5.1. Рассказать о FCL. Сказать, что количество уже готового кода огромно и нужно научиться эффективно его использовать.

VD>1-2 часа.

Это можно сделать за 5 минут. Если речь идет об обучении каким-то конкретным часто испольщуемым классам, то 1-2 часа крайне мало.

VD>5.2. Дать введение в коллекции. Достаточно остановиться на ArrayList и HashTable. Прикрасным примером к данному разделу будет подсчет слов в файле.

VD>4 часа.

Не слишком ли поздно? Впрочем, на эти две коллекции достаточно потратить и 2 часа.

VD>5.3. Рассказать о WinFors. Дать примеры программ.

VD>8 часов.

Здесь, конечно, стоило немного подробнее. Не совсем понятно, как рассказать, что именно рассказывать, на что тратиить 8 часов. Это может быть и мало, и много.

VD>5.4. Расказать про GDI+. Это кстати, всего лишь библиотека, а не графические возможности Шарпа. Шарп язык универсальный. Он может и без GDI+ обойтись.

VD>2 часа.

Опять же стоило бы расписать подробнее. Что рассказывать, что показывать (или не показывать). Впрочем, за 2 часа можно только показать, и то очень мало. Что уж говорить о практическом задании...

VD>5.5. Рассказать об ASP.NET. Создать пример простенького веб-сайта.

VD>2 часа.

За 2 часа? Т.е. учитель создает, а ученики смотрят?
Опять же, что рассказать, какие элементы должны быть на сайте. Следует учитывать, что незнакомых елементов быть не должно.

VD>5.6. Рассказать о БД и о ADO.NET (в общем о библиотеке доступа к данным).

VD>2 часа.

Но у учеников же еще нет понятие про базы данных вообще.

VD>6. В заключении нужно провести ликбез о том как нужно добывать знания и дать понятия культуры программирования.


VD>6.1. Объяснить что все дополнительные данные можно узнать из таких источников как:

VD>
VD>    * MSDN.
VD>    * Книги и журналы (не забыть упомянуть наш RSDN Magazine :) ).
VD>    * Рассказать о форумах и программистских сайтах 
VD>      (Опять таки не забыть про RSDN :)) ).
VD>

VD>постараться научить их правильно формулировать вопросы для форумов и составлять запросы в поиске МСДН-а.

VD>2-4 часа.


С этим мы безусловно согласны. И про RSDN не забудем!

VD>6.2. Обяснить важность соблюдения правли хорошего тона в программирвоании и стиля кодирования.

VD>2 часа.

Это было бы полезно. Если на это останется время, можно включить в программу.

VD>Ну, и в конце дать возможность создать собственные, интересные им программы.


Для нас сомнительно, что ученики смогут это сделать. Большинство вопросов изучалось обзорно. Ни один материал не был отработан...

В заключение, хотим высказать несколько общих замечаний и рассуждений.
1. Мы ведем речь о школьном курсе изучения основ языка программирования C#. Если ты вспомнишь школьный учебник по любому предмету, то после каждого параграфа идут вопросы, задачи и упражнения. Именно в ответах на эти вопросы и решении этих задач или упражнений есть суть усвоения учениками изучаемого материала. До сегодняшнего дня я не видел ни одного такого учебника ни по какому языку программирования. Наша цель — попытаться создать его.
2. Исходя из п.1, школьникам мало показать, надо еще и научить сразу же реализовывать это своими руками (и головой). Только тогда ученик может быть заинтересован в обычении, когда он сам видит его результат. Он стимулирует его к дальнейшей работе. Поэтому на практическую часть курса всегда уходит болше времени, чем на теоретическую часть. Не хочется сводить обучение к тому, что учитель все прекрасно и толково рассказал, а в результате ученик ничего не умеет сделать самостоятельно.
3. Всегда возникает дилемма: в рамках имеющихся часов изучить меньше материала, но детальнее и с выработкой умений его применения, или больше материала, но обзорно. Для студентов и профессиональных программистов, наверное, больше подходит второй вариант, а для школьников безусловно первый.
4. Поэтому мы и не согласны с включением в программу некоторых вопросов, безусловно очень важных и с точки зрения языка, и с точки зрения практического программирования, но трудных для понимания школьниками. Если мы нашим курсом научим их чему то и заинтересуем, они начнут читать дальше сами или их это научат в институте или другой вариант.
С уважением. Алик.
Re[9]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.04 07:29
Оценка:
Здравствуйте, Alik, Вы писали:

A>1) понятие алгоритма, исполнителя, команды;


А это что такое?

A>2) виды алгоритмов;

A>3) основы алгоритмизации и программирования с использованием Паскаля.
A>Они достаточно много программировали на паскале, создавали, редактировали, исполняли, тестировали и др.

Здорово. Тогда можно после простеших программ почти сразу перейти к ООП. На демонстрацию разницы в операторах я бы положил не боле двух часов.

A>При всем у важении к Кернигану, он не преподавал в школе.


А черт его знает. Но я учился по его книге с полного нуля. И вроде как выучился. Правла я сам этого хотел.

A>Первые пограммы у нас подразумеваются именно консольные. Никаких формочек там не присутствует. Если вы еще раз посмотрите программу преподавания, то увидите, что формочки появляются только в 7м пункте. Конечно, можно было бы и дальше продолжать без формочек, но причины их "столь раннего" появления были уже изложены нами раньше.


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

VD>>А у вас на него 4 часа отводится! Вот это и странно.


A>На if дейстивтельно можно потратить меньше времени (2 часа).


10 минут будет в самый раз. Не думаю, что нужно долго объяснять, что вместо begin нужно ставить {.

A> На for — никак нельзя. Все таки, несмотря на то, что саму идею цикла они уже освоили, for в С# сильно отличается от своего паскального брата. Поэтому надо не просто показать, а выработать умения его использования.


Ну, час. Нельзя же такой примитивщене посвящать 4 и более часов? Детям будет просто скучно. Что там объяснять?

for состоит из четырех частей:
1. Инициализация. В ней можно объявить переменные некоторого типа или выполнить некоторое действие, например, проинициализировать уже имеющуюся переменную.
2. Условие продолжения цикла. Булево выражение проверяемое перед каждой итерацией. Если оно возвращает true цикл должен сделать еще одну итерацию. Если false прекратить выполнение и перейти к следущей инструкции.
3. Итератор. Инструкция выполянемая после каждой итерации цикла. Обычно в ней приращивают или уменьшают переменную-итератор.
4. Инструкци выполняемая при каждой итерации цикла. Может быть как отдельной инструкцией, так и блоком инструкций.


Собственно все. Дале остается дать пру примеров и двигаться дальше.

VD>>Это какие же? Замену begin/end на {/}? Сдается мне, это они поймут за минуту.


A>Про begin/end не согласен. Кроме того отличий гораздо больше. Не забывайте, что это не тренинг программистов, и не университетский курс. Это школа, где каждое новое знание надо повторять и закреплять примерами.


Какие оличия еще есть в if-е? Мне прям самому стало интересно.

A>В дальнейшем, если опыт будет успешным, можно будет рассматривать полный переход на С#.


Откровенно говоря мне кажется, что опыт был бы успешнее если бы вы сразу давали им С#. Как я уже говорил, язык более концептуально чистый и по идее должен проще восприниматься детьми.

A>Напоминаю, что понятие типа у них уже есть из паскаля. Кроме того, в п.2 это понятие закрепляется на примерах простых типов int & double.


Это не совсем то. В Шарпе типу уделено очень большое внимаение. И преподавать нужно именно теорию типа. Не забывайте что в шарпе и int, и double и любой другой тип являются проивзодными от object и лекто приводятся к нему.

A>Затем понятие класса также вводится как тип. Известный прием "от частного к общему" очень эффективен в школе.


А понятие абстракции им дается перед этим? Другими словами объясняется зачем нужен этот самый класс?

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


Ну, а как насчет структур и делегатов?

A>Да, должны быть именно иллюстрацией. Формочки — это и есть идеальная иллюстрация для школьника, а не абстракные животные, конкретный случай которых — это собаки и кошки.


Еще раз напомню, что вы проталкиваете формочки раньше чем объясните базовые принципы ООП. Так что иллюстрацией они тут быть не могут. Хотя бы совместите эти вещи. Нельзя бежать впереди паравоза.

A> Про животных можно рассказать в кабинете в качестве одного из устных примеров, но на компьютере надо показывать именно формочки.


Да все равно на чем показывать. Главное, чтобы показывать на простых примерах и вовремя. Окна коенчено тоже неплохая иллюстрация.

A>На этом этапе и вводится понятие классов, методов и т.п. (как вводится — см. выше).


Так вот и поменяйте местами урок 7 и 23. Сначало объясните людям "что", а потом продемонстрируйте "как". Иначе каша в голове гарантирована. Причем дети не знаю что кашу создали им вы, и будут думать, что это они ущербны.

A> Иллюстрацией вполне могут служить визуальные компоненты.

A>И при чем тут наследование? Никто о нем еще не говорит.

Притом что это единственное объяснение откуда взялись тысячи метдов. Да и что еще можно иллюстрировать окнами?

A>Конструктор дается не на примере формы, а на примере своих классов.


Напомню твои слова "Здесь же уместно поговорить о конструкторе". Я так понял, что "Здесь же" отностися именно к формам.

VD>>А не лучше ли пойти по классическому пути и создать какие-нибудь аналоги объектов из жизни? Ну, машины, животные... И главное! Сделать это на на 23 уроке. А на 3-5.


A>К сожалению, классического пути преподавания ООП в школе не существует. Быть может мы именно его сейчас и разрабатываем


Сдается мне, что на западе он давно пройден.

A>По нашему мнению сложность надо наращивать постепенно. Если дать с первых же уроков понятие класса, наследования,


На первых не надо. Но тянуть тоже не следует. И уж точно ненадо переворачивать изложение. нужна последовательность. Без нее каша гарантирована. И никакие рющечки тут уже ничему не помогут.

A>инстанциирования


Вот только вот таких терминов им не в коем случае не давайте. У нас и так достаточно дебильных американских транслитов (не говоря уже о калссических "лОжить". "Создание экзепляра". "Воплощение". Но не как не "инстанциия".

A>и пр., можно просто отпугнуть детей. И тогда их будет очень сложно учить дальше.


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

A> А ведь они еще даже не успели заинтересоваться предметом.


Это изучив то Паскаль?

A> Еще сложнее будет, если сразу огорошить их терминами абстракция, инкапсуляция и полиморфизм. Тут мы их потеряем навсегда.


Эти термины и нужно им изучить. Я в вашей программе вообще их незаметил. Огорошивать ими не нужно. Нужно ввести понятие и объяснять на примерах столько сколько будет нужно.

A>В качестве примера можно привести обучение школьных преподавателей на курсах по С#. Их как раз учили по той самой классической программе.


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

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


Незнаю. То ли я не те слова подбираю, то ли еще что, но ты меня не понимашь. Я указываю на непоследовательность и отсутсвие важнейших понятий. А ты мне каждый раз о легкости изучения. Ваша задача совместить эти вещи. Никто не заставляет делать занудные лекции. Но изложение, тем не менее, должно быть последовательным, полным и непротиворечивым. Это же основы логики! Кстати, а ее детям у вас преподают?

VD>>Опять зря. Компоненты сущьность особая. Не нужно их мешать пока люди не освоили понятие классов и типов.


A>В чем заключается их особенность?


В том, что они компоненты. Сущности предназначенные для динамической загрузки и интерактивного взаимодействия с ними. Это отдельная идеология собирания ПО из готовых блоков. Как говорится "бзе гвоздей".

A> Они служат прекрасной иллюстрацией классов.


Плохой они иллюстрацией служат. Они сами по себе должны объясняться.

A>Спасибо. Мы уже прочитали тот пост и сейчас напишем ответ.


ОК.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.04 17:19
Оценка:
Здравствуйте, gribunin, Вы писали:

G>Программирование в Delphi вовсе не процедурно-ориентированное, кстати.


Думаю, что они преподают детям Паскль используя Дельфи в качестве среды и компилятора.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: C# для школьников
От: Alik Украина  
Дата: 22.08.04 20:09
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


VD>>Это в корне не верный подход. А мучиться потом с его плодами рийдется нам. Уже как кость в глотке торчат бедари научившиеся писать операторы и возить мышкой контролы, но нифига не помнимающие в принципах ООП и проектирования.

WH>
WH>2Alik как ты думаешь почему распространено мнение что не дельфих пишут только ламеры? Хотя это не так.
WH>Это происходит именно по тому что подавляющие большинство дельфи "программистов" только и умеют кдать на форму кнопки и писать операторы.

У меня, к сожалению, нет статистики, но я лично знаю двух "дельфистов" очень высокой квалификации, которые создали систему документооборота и перевели на нее ГлавКиевАрхитектуру. Было это лет 5 назад. Насколько я знаю, система до сих пор там в работе.
С уважением. Алик.
Re[3]: C# для школьников
От: Alik Украина  
Дата: 22.08.04 20:12
Оценка:
Здравствуйте, VladD2, Вы писали:

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


G>>Программирование в Delphi вовсе не процедурно-ориентированное, кстати.


VD>Думаю, что они преподают детям Паскль используя Дельфи в качестве среды и компилятора.


Ты ошибаешься. Процедурную часть паскаля преподают с использованием TP7.0, хотя и делфи тоже можно использовать. Но для изучения основ алгоритмизации этого вполне достаточно.
С уважением. Алик.
Re[6]: C# для школьников
От: Alik Украина  
Дата: 22.08.04 20:18
Оценка:
Здравствуйте, VladD2,

Большое спасибо за проделанную работу. Мы получили много пищи для размышлений. Мы не со всем согласны, но постараемся извлечь из ваших предложений максимальную пользу.
С уважением. Алик.
Re[4]: C# для школьников
От: rockandroll Казахстан  
Дата: 23.08.04 05:29
Оценка:
Здравствуйте, VladD2, Вы писали:
...
VD>3.4. Даем понятие влью-типов и ссылочных типов.
VD> 3.4.1. Объясняем, что такое хип и сборка мусора.
VD> 3.4.2. Объясняем что такое стек.
VD> 3.4.3. Обясняем, что вэлью типы могут храниться в хипе тлько будучи помещенные в массивы или экземпляры других типов, а ссылочные всегда хранятся в хипе.
VD> 3.4.4. Объячняем что такое боксинг.
...
VD>4.3. Обяснить что такое динамическая загрузка и зачем она нужна.
VD>2 часа.
VD>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).
VD>4-8 часов.

А тебе не кажется что это немного не школьная программа. Скорее институтская.

VD>5. Рассказ о библиотеках и обучение использования самых часто используемых.


VD>5.1. Рассказать о FCL. Сказать, что количество уже готового кода огромно и нужно научиться эффективно его использовать.

VD>1-2 часа.
VD>5.2. Дать введение в коллекции. Достаточно остановиться на ArrayList и HashTable. Прикрасным примером к данному разделу будет подсчет слов в файле.
VD>4 часа.

Мне кажется такие вещи, равно как и одно- двухсвязные списки школьники должны сами уметь реализовывать. А про ArrayList можно потом рассказать, когда они его сами уже напишут.

...
VD>5.6. Рассказать о БД и о ADO.NET (в общем о библиотеке доступа к данным).
VD>2 часа.

Вот это по-моему точно рановато.
... << RSDN@Home 1.1.4 >>
Re[3]: C# для школьников
От: Nuald Россия http://nuald.blogspot.com
Дата: 23.08.04 06:33
Оценка:
Здравствуйте, Alik, Вы писали:

A>Ты наверное не обратил внимание на начало письма. Эти школьники УЖЕ потратили достаточное время на алгоритмы. Кроме того (об этом я не писал, но раз интересно...), у них еще впереди целый год (11-й класс) на программирование некоторых мат-методов. Так что даже альтернативы такой не стоит: "алгоритмы или язык программирования".


Извините, я наверное что-то пропустил

A>И чем это лучше, чем использовать все тот же процедурный паскаль? Отсутствие типизации я считаю недостатком, а не достоинством (не надо начинать holy war, я говорю про данный конкретный случай).


Я с вами и спорить не собираюсь. К сожалению, я знаю студентов, которые не понимают, что в int нельзя запихать 100000000000000000. Не говорю уж о преобразованиях, например: int a = "10";

N>>А если говорить о том, чтобы они сразу получали практические знания — это вряд ли можно уложить в 100 часов для среднестатического школьника, у которого голова забита совершенно другими вещами.

A>А на чем основывается это утверждение?

На собственном школьном опыте. Чтобы изучить С (не C++, тогда он еще не был общераспространенным), мне понадобился месяц непрерывного изучения (часа по 4-5 в день, может больше), притом, что у меня был опыт бейсика и ассемблера. Бейсик изучил быстро — за пару недель научился писать уже кое-какие программы, однако на изучение всех подробностей понадобилось тоже около месяца. Про ассемблер не говорю — это сегодняшним школьникам точно не надо
И это все при том, что у меня очень хорошие способности к языкам (программирования в частности), голова не была забита вещами, о которых думает теперешнее поколение (бабы, бабки, покурить/выпить).
Так что я не верю, что в 100 часов можно уложить изучение такого сложного высокоуровневого языка со статической типизацией (я не говорю про runtime возможности, в частности, reflection; аттрибутное программирование и т.п.) как C# (в этом отношении по грамматике тот же C++ проще). Но, в сущности, если рассмотреть только подмножество C# (на уровне написания прикладных программ наподобие калькулятора и блокнота), то это реально (однако тогда стоит внести поправки в программу).
Re[5]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.08.04 17:49
Оценка:
Здравствуйте, rockandroll, Вы писали:

R>А тебе не кажется что это немного не школьная программа. Скорее институтская.


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

R>Мне кажется такие вещи, равно как и одно- двухсвязные списки школьники должны сами уметь реализовывать. А про ArrayList можно потом рассказать, когда они его сами уже напишут.


Ну, вот чтобы школьники были осведомлены им и нужно расскзать, что ArrayList — это динамический массив указателеф на объекты, а не связанный список.

VD>>5.6. Рассказать о БД и о ADO.NET (в общем о библиотеке доступа к данным).

VD>>2 часа.

R>Вот это по-моему точно рановато.


Значит ежика вычеркивем (с)
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.08.04 17:49
Оценка:
Здравствуйте, Alik, Вы писали:

VD>>Думаю, что они преподают детям Паскль используя Дельфи в качестве среды и компилятора.


A>Ты ошибаешься.


Тогда почему у тебя проскакивало слово Дельфи?

A> Процедурную часть паскаля преподают с использованием TP7.0, хотя и делфи тоже можно использовать. Но для изучения основ алгоритмизации этого вполне достаточно.


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

А видовс они у вас как осваивают?
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: C# для школьников
От: Silver_s Ниоткуда  
Дата: 23.08.04 18:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А теперь попробуйте встать на место бедного учиника... Он рельно не понимает, что такое класс, тип и т.п. Но ему показывают какую-то слжную кракозябру с тысячей свойств и методов...



Тут палка о двух концах. Пощупать что-то кульное тоже полезно. Но сразу предупредить чтобы не лезли в детали. Для начала им достаточно знать что в консольном приложении одна точка входа (main). А в WinForms их много, и входим в них через кнопочки на форме.

А кто начнет приставать с расспросами что эти 5 строк ниже означают. Того сразу указкой по голове за хулиганство, и родителей к директору.

[STAThread]
static void Main() 
{
    Application.Run(new Form1());
}
Re[9]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.08.04 20:59
Оценка:
Здравствуйте, Silver_s, Вы писали:

S_>Для начала им достаточно знать что в консольном приложении одна точка входа (main). А в WinForms их много, и входим в них через кнопочки на форме.


Вообще-то точка входа и функции ввода — это разные вещи. Да и в констольком приложении точек ввода может быть куча. В них только один интерактивный поток.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: C# для школьников
От: Silver_s Ниоткуда  
Дата: 24.08.04 09:19
Оценка:
Здравствуйте, VladD2, Вы писали:

S_>>Для начала им достаточно знать что в консольном приложении одна точка входа (main). А в WinForms их много, и входим в них через кнопочки на форме.


VD>Вообще-то точка входа и функции ввода — это разные вещи. Да и в констольком приложении точек ввода может быть куча. В них только один интерактивный поток.


Тем кто начинает изучать программирование врядли удастся обьяснить что такое интерактивный поток или цикл обработки сообщений win.
Для них точка входа это то место с которого начинается выполнение программы. Это то место куда они могут впендюрить свой код и исполнить.
В консольном приложении точка входа это функция Main. И попадаем в нее когда нажимаем enter на имени exe'шника в Far manager
А в WinForms приложения нету функции Main. Там в точки входа попадаем когда жмем на кнопочки.
Re[11]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.08.04 10:59
Оценка:
Здравствуйте, Silver_s, Вы писали:

S_>Тем кто начинает изучать программирование врядли удастся обьяснить что такое интерактивный поток или цикл обработки сообщений win.

S_> Для них точка входа это то место с которого начинается выполнение программы. Это то место куда они могут впендюрить свой код и исполнить.

Так и не нужно запудривать им голову не верным применением терминов.

S_> В консольном приложении точка входа это функция Main.


В твоей формулировке нет. В твоей — это Read/ReadLine. Иначе в неконсольном прилоежении точка входа всеравно Main.

S_> И попадаем в нее когда нажимаем enter на имени exe'шника в Far manager


Попадаем в нее когда запускаем ЕХЕ-шник. А нажатие на Enter вообще будет проигнорировано если не вызваны Read/ReadLine.

S_> А в WinForms приложения нету функции Main.


Очень смешно. А вот этот пример:
[STAThread]
static void Main() 
{
    Application.Run(new Form1());
}

кто писал?

S_> Там в точки входа попадаем когда жмем на кнопочки.


Вот я и говорю. Такую неверную информацию нельзя давать ученикам в принципе, а темболее оправдывая ее благими намерениями упростить изложение.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: C# для школьников
От: Silver_s Ниоткуда  
Дата: 24.08.04 19:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот я и говорю. Такую неверную информацию нельзя давать ученикам в принципе, а темболее оправдывая ее благими намерениями упростить изложение.


Ну не знаю, так ли это плохо если они будут знать поначалу только 4 ключевых слова языка C#: int,if,for,MessageBox.Show . А потом со временем устаканят знания. Им ведь главное по началу чтобы все работало, а не то как синтаксические анализаторы и кодогенераторы обрабатывают ключевое слово MessageBox.Show
Re[9]: C# для школьников
От: dshe  
Дата: 25.08.04 07:04
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


WH>>>2Alik как ты думаешь почему распространено мнение что не дельфих пишут только ламеры? Хотя это не так.

WH>>>Это происходит именно по тому что подавляющие большинство дельфи "программистов" только и умеют кдать на форму кнопки и писать операторы.

A>>У меня, к сожалению, нет статистики, но я лично знаю двух "дельфистов" очень высокой квалификации, которые создали систему документооборота и перевели на нее ГлавКиевАрхитектуру. Было это лет 5 назад. Насколько я знаю, система до сих пор там в работе.

WH>Видимо ты не заметил выделеного. У меня друг тоже дельфист при том очень высокой квалификации. Я же говорил про большинство которое и создает репутацию.

WH>Вобще я это к тому чтобы из ваших учеников не получились "кнопка, форма шлепатели" которые мнят себя программистами.


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

Что касается "формошлепания", то -- это просто признак молодости. Оно проходит само собой с появлением новых, интересных, увлекательных задач.
--
Дмитро
Re[13]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.08.04 17:21
Оценка:
Здравствуйте, Silver_s, Вы писали:

S_>Ну не знаю, так ли это плохо если они будут знать поначалу только 4 ключевых слова языка C#: int,if,for,MessageBox.Show . А потом со временем устаканят знания. Им ведь главное по началу чтобы все работало, а не то как синтаксические анализаторы и кодогенераторы обрабатывают ключевое слово MessageBox.Show


"поначалу" у них уже есть. Им давали 100 часов Паскаля.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# для школьников
От: Yachtsman Россия  
Дата: 17.01.05 19:41
Оценка:
Здравствуйте, Alik, Вы писали:
A>Ученик всегда зависит от знаний учителя. И это не повод не учиться.
A>Если ты сможете обосновать преимущество, можно перейти и на ASP.NET. Я всегда открыт для новых идей.

А вот например...
Автор: Spidola
Дата: 09.01.05
Это не обоснование преимущества, но повод для размышлений...
... << RSDN@Home 1.1.4 beta 3 rev. 297>>
Все, что ни делается — делается к лучшему!
Re[3]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 18:05
Оценка:
Здравствуйте, Alik, Вы писали:

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


Как насчёт огранициться понятиями "переменная", "процедура", "функция"? Для basic или turbopascal хватит, а отношение к программированию как таковому заложится уже совсем другое.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[12]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 18:05
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да и фигня все это. Главное что дело вы затеяли очнь правильное. Шарп — это как раз тот язык на котором нужно учить импиративных программистов. Он привьет им правильные навыки и позволит избежать перегрузки мозгов.


Навыки рисования окошек?
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[7]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 18:05
Оценка:
Здравствуйте, Alik, Вы писали:

A>Прекрасно. Это и есть наша цель. И именно шарп мы и собираемся использовать. Ты считаешь, что из программы следует убрать винформс? Т.е. ограничиться консольными приложениями?


Помнится, когда я был в 9м классе, я начал ковырять TurboPascal. Алгоритмы и консольные приложения — это действительно скучно. Но:

Там была такая чудная штука под названием egavga.bgi Никаких окошек-кнопок — всё сам И вот это действитеьно было интересно.

Собственно, про понимание разницы между интерфейсом программы и ней самой я писал в каком-то другом сообщении.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[5]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 20:48
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Дык достаточно и хорошо — это разные понятия. Уж лучше пусть они сразу привыкают к более менее современной среде.


А зачем?
Может лучше дать возможность понять, что среда и язык — разные вещи?
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[5]: C# для школьников
От: Astaroth Россия  
Дата: 09.02.05 20:48
Оценка:
Здравствуйте, rockandroll, Вы писали:

VD>> 3.4.4. Объячняем что такое боксинг.

VD>>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).

R>А тебе не кажется что это немного не школьная программа. Скорее институтская.


Я, кстати, до третьего курса дожил, RSDN почитываю, даже поработать маленько успел — но до сих пор не в курсе
Кстати, если кто объяснит (интересующее процитировал) — не обижусь.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[6]: C# для школьников
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.02.05 13:27
Оценка:
Здравствуйте, Astaroth, Вы писали:

VD>>> 3.4.4. Объячняем что такое боксинг.

VD>>>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).

R>>А тебе не кажется что это немного не школьная программа. Скорее институтская.


A>Я, кстати, до третьего курса дожил, RSDN почитываю, даже поработать маленько успел — но до сих пор не в курсе

A>Кстати, если кто объяснит (интересующее процитировал) — не обижусь.
В смысле, ты не очень понимаешь, что такое боксинг?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: C# для школьников
От: Astaroth Россия  
Дата: 10.02.05 18:21
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В смысле, ты не очень понимаешь, что такое боксинг?


Я впервые слышу это слово. Есть подозрение, что за этим кроется какая-нить самоочевидная вещь, но термина я не знаю.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
Re[8]: C# для школьников
От: Cyberax Марс  
Дата: 10.02.05 18:34
Оценка:
Astaroth пишет:

> S>В смысле, ты не очень понимаешь, что такое боксинг?

> Я впервые слышу это слово. Есть подозрение, что за этим кроется
> какая-нить самоочевидная вещь, но термина я не знаю.

Преобразование между примитивными типами и соответствующими объектными
обертками.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[6]: C# для школьников
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.02.05 05:12
Оценка:
Здравствуйте, Astaroth, Вы писали:

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


VD>>> 3.4.4. Объячняем что такое боксинг.

VD>>>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).

R>>А тебе не кажется что это немного не школьная программа. Скорее институтская.


A>Я, кстати, до третьего курса дожил, RSDN почитываю, даже поработать маленько успел — но до сих пор не в курсе

A>Кстати, если кто объяснит (интересующее процитировал) — не обижусь.

Исторически сложилось так, что совсем-совсем все делать объектами весьма неэффективно.
Поэтому в джаве все-таки оставили примитивные типы (для арифметики) и все остальное — унаследованное от object. Но вот закавыка — иногда мы хотим использовать такой тип "указатель на что угодно". Ссылочные типы прекрасно ложатся в этот тип. А как мы получим указатель на , к примеру, int=5 в языке, где нет указателей на int? Очевидное решение — сделать простейший класс, содержащий ровно одно поле типа int. Объект этого класса будет этакой "коробочкой" для инта. Вся его функция — сохранить целое число от одного использования до другого.
Этот прием называется боксингом, от слова box. В Java для каждого из примитивных типов есть соответствующий боксящий класс (хотя ничто не мешает написать свой, если сильно охота). Обратная процедура (типа int i = myInt.Value) по доставанию содержимого из коробки называется анбоксингом.
В .Net value-типы не ограничены примитивными типами и можно создавать пользовательские типы с аналогичной семантикой. Чтобы избежать разнобоя при определении пользовательских бокс-типов данная функциональность была введена в саму платформу. В итоге box/unbox являются конструкциями IL, а C# предоставляет автоматический боксинг-анбоксинг на уровне своего синтаксиса. Т.е. попытка откастить (int)object на самом деле означает кастинг обжекта к инт-боксу и последующий анбоксинг.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: C# для школьников
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.02.05 17:10
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В .Net value-типы не ограничены примитивными типами и можно создавать пользовательские типы с аналогичной семантикой. Чтобы избежать разнобоя при определении пользовательских бокс-типов данная функциональность была введена в саму платформу. В итоге box/unbox являются конструкциями IL, а C# предоставляет автоматический боксинг-анбоксинг на уровне своего синтаксиса. Т.е. попытка откастить (int)object на самом деле означает кастинг обжекта к инт-боксу и последующий анбоксинг.


Справедливости ради в Java 1.5 так же есть автоматический боксинг.
... << RSDN@Home 1.1.4 beta 4 rev. 319>>
AVK Blog
Re[6]: C# для школьников
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.05 21:05
Оценка:
Здравствуйте, Astaroth, Вы писали:

A>А зачем?

A>Может лучше дать возможность понять, что среда и язык — разные вещи?

А зачем? Прийдет время — поймут. Надо все же понимать, что грузить частностями начинающих — это неразумное решение.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: C# для школьников
От: orangy Россия
Дата: 12.02.05 21:19
Оценка:
Здравствуйте, Glоbus, Вы писали:

JP>>Я помню, когда сам ещё был маленьким , мы изучали какую-то ерунду с букашкой на экране,

G>Лого
Ага, а еще была Рапира с её кортежами (суть множествами). Я только в универе понял, нахрена они нужны вообще.
"Develop with pleasure!"
Re[7]: C# для школьников
От: Astaroth Россия  
Дата: 22.02.05 21:20
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А зачем? Прийдет время — поймут. Надо все же понимать, что грузить частностями начинающих — это неразумное решение.


ИМХО может получиться так, что потом у них не будет необходимости использовать среду отдельно от компилятора. Из вышеупомянутое понимание (ИМХО довольно ценное) может и не прийти...
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
http://livejournal.com/users/breqwas
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.