КИТА unofficial

Компьютерный => Программирование => Тема начата: LazarusLong от Январь 28, 2008, 11:15:00



Название: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 28, 2008, 11:15:00
Тут мне намедни предложили позаниматься программированием с одним человеком. Человек этот учится в 11-м классе. Представления об информатике и программировании у него весьма смутные, хотя с математикой, физикой и т.п. - проблем нет. У меня есть вообще некоторый опыт обучения программированию с нуля, но хотелось бы услышать мнения форумчан как лучше организовать учебный процесс. Заниматься мы будем, скорее всего два раза в неделю по 1.5 часа. Лично мне кажется лучше начать вообще без привязки к конкретному языку программирования объяснить базовые понятия. Основы алгоритмизации. На первых порах может быть даже алгоритмы писать не в виде блок-схем, а в виде словесного описания.

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


Название: Re: Обучение программированию с нуля
Отправлено: Alder от Январь 28, 2008, 11:19:26
LazarusLong, а ты как будешь - сразу учить какому-то алгоритмическому языку или с самого начала - биты, байты и т.п.?


Название: Re: Обучение программированию с нуля
Отправлено: Kenny от Январь 28, 2008, 11:22:33
Как по мне, блок схема проще словесного описания. Начинать думаю лучше в паскале, www.pascaler.ru вам в помощь:)
PS можно научить переводить в системы исчисления.


Название: Re: Обучение программированию с нуля
Отправлено: Alder от Январь 28, 2008, 11:31:12
Начинать думаю лучше в паскале, www.pascaler.ru вам в помощь:)
Начинать учить азы алгоритмики можно и на обычном АлгЯзе - языке словесных конструкций вида "нач","если" и т.п. А потом перевести на С. От Pascal я бы рекомендовал уходить.


Название: Re: Обучение программированию с нуля
Отправлено: Polyakov от Январь 29, 2008, 12:05:11

Начинать учить азы алгоритмики можно и на обычном АлгЯзе - языке словесных конструкций вида "нач","если" и т.п. А потом перевести на С. От Pascal я бы рекомендовал уходить.

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

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


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 29, 2008, 12:13:52
На первых порах мне хочется вообще абстрагироваться от конкретного языка и научить человека мыслить самостоятельно и находить решения хотя бы простейших задач в общем виде. Я просто помню, когда преподавал на курсах: потратил час на то, что бы объяснить на пальцах нахождение большего из трёх чисел. Предложил задачку: найти большее из четырёх. Результат - полный ступор. Меня интересует как преодолеть вот это? Как научить человека понимать, привить некоторую способность к обобщениям, что ли? Я бы мог подумать, что это я дурак и не в состоянии объяснить, но ведь среди тех, кого я учил(два года преподавания на курсах + еще два года репетиторства) были и такие, кого, я таки чему-то таки научил.


Название: Re: Обучение программированию с нуля
Отправлено: Zimburella от Январь 29, 2008, 12:15:34
LazarusLong, меня в свое время тоже знакомый учил програмить на Паскале. В школе очень слабо давали и надо было очень быстро выучить. Но это долго объяснять зачем.
Поэтому подойду скорей с позиции того, как мне было проще воспринять как усенику.
В общем, сперва меня научили таки алгоритмизации. В виде блок-схем, словесное описание - это все же слишком. ИМХО, язык словесных конструкций излишен.. Хотя зависит от ученика, наверное. Если уж совсем всё плохо - то может и стоит.
Главное, давай ему побольше программ писать. Маленьких, нетрудных, но побольше. И домой, чтобы сам делал, без тебя. Тогда будет эффект.
А как язык Паскаль.. Не знаю, мне он нравился. Я думаю, его понять будет легче. К тому же почему уходить от него? Потом вполне можно научить мальчика Делфи. Мне очень нравилось программировать в школе. Графика особенно увлекла сильно. Кстати, при изучении Си почему-то интерес к программированию пропал напрочь. Не знаю, может, виной то, что так я в нем и не разобралась.. Но просто перестало быть интересно.


Название: Re: Обучение программированию с нуля
Отправлено: KyDECHuK от Январь 29, 2008, 12:24:20
 :offtopic: Ненавижу блок-схемы! :D Именно чертить их не люблю, нуднее занятия не придумаешь.

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


Polyakov - С\С++ не так сложен, как это может показаться на первый взгляд. Вообще в мире очень много сложных вещей, но Си точно не из них.

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


Название: Re: Обучение программированию с нуля
Отправлено: Alder от Январь 29, 2008, 12:27:27
Off-Topic - помечено автором как "не соответствует обсуждаемой теме"
Для того чтобы рекомендовать что-то нужно хотя бы самому знать и уметь.
Абсолютно и полностью с вами согласен. Именно потому и рекомендую :)


Название: Re: Обучение программированию с нуля
Отправлено: Polyakov от Январь 29, 2008, 12:32:45
Polyakov - С\С++ не так сложен, как это может показаться на первый взгляд. Вообще в мире очень много сложных вещей, но Си точно не из них.

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

(Отправлено в: 28 Января 2008, 23:30:44)

Абсолютно и полностью с вами согласен. Именно потому и рекомендую

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


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 29, 2008, 12:38:31
Я просто понимаю, что будет туго, раз он за 10 и половину 11-го класса из школьного курса информатики мало чему научился. Это свидетельствует как минимум о том, что нет интереса. А может быть нет и способностей вообще. Хотя хорошие его результаты по математике и физики обнадёживают. Насчет паскаля - таки да. Я в принципе согласен с тем, что практической полезности для современного программиста он не представляет, но всё же и разделяю мнение, что паскаль весьма хорош для первичного обучения программированию. Но к паскалю, да и вообще к любому языку программирования, как мне кажется, стоит подходить после усвоения основ алгоритмизации.

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

ЗЫ. Кстати знаю одного человека который использует при обучении в качестве первичного языка программирования - python. В чём-то я его понимаю. Хотя это и перегиб)


Название: Re: Обучение программированию с нуля
Отправлено: KyDECHuK от Январь 29, 2008, 01:15:22
Смею Вас заверить я знаю С лучше чем Вы. (первый взгляд я на него кинул лет этак 18 назад)
Не сомневаюсь. НО в чем собственно вопрос? Я где-то утверждал обратное про Вас ?  Нет, не утверждал? Так к чему это сказано?

Но в отличии от Вас я понимаю насколько этот язык по-настоящему труден и трудоемок.
Может через десяток лет и Вы это поймете, если будете на нем работать.
Сам язык, его синтаксис и правила трансляции кода? Ну может и сложны, но согласитесь есть задачи, которые решаются с помошью программ на С\С++, которые сложенее самого языка в десятки раз.
Якобы сложность языка это не повод отказаться его учить или не преподавать в университете. За многолетнюю практику программирования на С можно составить весьма не плохую базу знаний и "подводных камней", а кое-чем делится из этого со своими студентами. На то они и студенты, чтобы чему-то учиться у Вас ;)
Насчет сложности добавлю только одно: сложно разбираться с компилятором и массой дополнительных библиотек, когда в них попадаются ошибки (редко, но метко).

Polyakov - по теме что-то скажете? По вопросам автора темы поднятом в первом сообщении ?

Off-Topic - помечено автором как "не соответствует обсуждаемой теме"
А я как раз считаю это занятие весьма полезным. Может быть не столько даже в практическом плане, сколько в методическом.
Я два смайлика поставил не зря ;) Одно дело набросать БС от руки собственно для решения задачи, совсем другое - начертить для оформления лабы перед сдачей преподавателю (это почти всегда делалось на перерыве до пары) :)

Я просто понимаю, что будет туго, раз он за 10 и половину 11-го класса из школьного курса информатики мало чему научился. Это свидетельствует как минимум о том, что нет интереса.
Мало-ли какой чепухе учили пацана в школе на информатике. На своем примере знаю, что школьному курсу по информатике очень далеко до совершенства.
Начни с основ алгоритмизации, а дальше видно будет есть\нет интерес.


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 29, 2008, 01:21:05
Мало-ли какой чепухе учили пацана в школе на информатике. На своем примере знаю, что школьному курсу по информатике очень далеко до совершенства.
Начни с основ алгоритмизации, а дальше видно будет есть\нет интереса.

Почему то у меня в школе интерес был несмотря на совсем другое компьютерное оснащение класса в то время (Поиск-1), изучали какой-то диалект Бэйсика, кажется Джи-Ви и отсутствие компьютера дома. И кое-какие основы алгоритмизации мне заложили уже тогда, хотя и университет дал мне в этом плане гораздо больше.


Название: Re: Обучение программированию с нуля
Отправлено: Sochin от Январь 29, 2008, 01:39:03
И таки соглашусь с Поляковым, действительно языки С/С++ это достаточно сложные язык, тем паче для первичного обучения. С сложен своей низкоуровневостью. С++ чрезмерно отягощен наследием С, с которым по стандарту доложен обеспечивать совместимость, при всем при том что вобрал в себя такие средства как поддержка ООП, обобщенного программирования. Вобщем, для первичного обучения языки С/С++далеко не самый лучший вариант.
Если идет речь о прикладном программировании, то сейчас я бы начинал обучение вообще с базовых понятий ООП без привязки к языкам. После чего переход к кодированию на  ОО-языках для написания управляемого кода - Java/С#. Т.е. минимум платформозависимых низкоуровневых нюансов, максимум алгоритмизации и ОО-парадигмы.


Название: Re: Обучение программированию с нуля
Отправлено: Storm от Январь 29, 2008, 08:44:05
В школьную программу, по которой учили меня, входили Лого, АлгЯз, Паскаль.

Лого это для самых мелких класс 7-8, но при этом позволяет творить весьма прикольные вещи.
АлгЯз (по нему есть классный учебник Савченко, в ДонИИИ выпустили, специально для школ с уклоном в информатику) позволяет сделать упор именно на алгоритмы. Именно на нем и научили программировать /me.

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

Язык С имеет слишком мало ограничений, чтоб на нем учили с нуля - это как прогулка по минному полю. Сапер пройдет целым и невредимым, а не сапер. ..... Очень многое остается на совести программиста. Для того кто знает и умеет это хорошо. Его приближенность к аппаратному уровню - он задумывался как замена ассемблеру. А в ассемблере своих ограничений нет - есть ограничения процессора и программиста ;)


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 30, 2008, 07:47:34
Сегодня провел первое занятие. Похоже случай не безнадежный. Дальше будем смотреть )))


Название: Re: Обучение программированию с нуля
Отправлено: Alder от Январь 30, 2008, 08:07:51
LazarusLong, расскажи с чего начал.


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 30, 2008, 08:43:31
Да начали с самых общих понятий: алгоритмы, последовательности команд и ветвление. Разобрали несколько простейших алгоритмов (нахождение большего из трех чисел, из четырех, решение квадратного уравнения, площадь треугольника и т.п.). Радует что все алгоритмы, кроме самого первого он написал сам. Пускай с небольшими подсказками, но в общем сам. А на информатике в школе их учат рисовать в Paintе.


Название: Re: Обучение программированию с нуля
Отправлено: Alder от Январь 30, 2008, 08:52:07
Радует что все алгоритмы, кроме самого первого он написал сам. Пускай с небольшими подсказками, но в общем сам.
Это гут. Если у него есть интерес к этому, то обучение будет продуктивным. Алгоритмы он рисовал или писал на АлгЯзе?


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Январь 30, 2008, 08:53:33

Алгоритмы он рисовал или писал на АлгЯзе?
Нет, мы блок схемы использовали.


Название: Re: Обучение программированию с нуля
Отправлено: zer_owlet от Январь 30, 2008, 09:37:11
LazarusLong, что-то мне кажется что у тебя тут побольше опыта подготовки школьников чем у остальных ;) и даже хорошие результаты были, если не подводит меня память... так что просто продолжай в том же духе ))

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


Название: Re: Обучение программированию с нуля
Отправлено: KyDECHuK от Январь 31, 2008, 11:58:08
 :offtopic:
А на информатике в школе их учат рисовать в Paintе.
Гениальная учебная программа....


Название: Re: Обучение программированию с нуля
Отправлено: LazarusLong от Февраль 01, 2008, 12:17:01
Да в школах на информатике вообще каждый учит тому, что знает. А так как нормальных спецов туда пряником не заманишь - работают сами понимаете кто и знания соответствующие. К примеру у нас в школе вела информатику женщина не то что бы без образования в области IT, но и ВООБЩЕ без высшего образования.


Название: Re: Обучение программированию с нуля
Отправлено: zer_owlet от Февраль 01, 2008, 01:00:55
Хоть и с опазданием это сообщение пишу... перечитал тему и я таки поддержу Полякова двумя руками... вопрос стоял как лучше научить 11-класника.... а тут уже Си втулили, сообщения типа "уже придется учитывать особенности архитектуры компьютеров и компилятора" и другие умночти по поводу Си и С++... Хотя, первый вопрос можно было бы задать другой -- а этот школьник комп вообще видел? )))

Кстати, а кто из советовавших имеет опыт в обучении школьников (или хоть студентов)? ))

В теме, ИМХО, больше умничали чем дельно советовали (я так вообще просто нафлудил)...

ЗЫ: Си, паскаль.... вы хоть раз пытались школьнику циклы объяснить? ))) О сортировках молчу... ))


Название: Re: Обучение программированию с нуля
Отправлено: Zimburella от Февраль 01, 2008, 01:37:47
zer_owlet, я имела опыт обучения школьников и студентов  :) Правда, программированию - не доводилось. Но опыт этот длится уже лет примерно 7-8...
Я, замечу, изначально указала, что советую больше с позиции человека, которого учили программированию.


Название: Re: Обучение программированию с нуля
Отправлено: zer_owlet от Февраль 01, 2008, 02:17:05
zer_owlet, я имела опыт обучения школьников и студентов  :) Правда, программированию - не доводилось. Но опыт этот длится уже лет примерно 7-8...
Я, замечу, изначально указала, что советую больше с позиции человека, которого учили программированию.

я же говорил не о всех высказываниях. но общее впечатление от темы именно такое :)


Название: Re: Обучение программированию с нуля
Отправлено: Inquisitor от Февраль 04, 2008, 04:59:58
Кстати, могу сказать, что в школах на информатике учат у всех по-разному.
В 7-8 классе лично у меня был бейсик, 9-11 классы мы учили винду и офис, а программирование (теперь уже на паскале) у нас значилось как "Спецкурс по программированию".

Как человек, которого учили программированию, могу сказать, что главное - научиться формализации алгоритмов, а язык - дело уже десятое. Кстати, Си (вместе с плюсами) я выучил самостоятельно еще в школе, пользуясь интернетом и попавшейся под руку литературой. Не могу хвастать, что я прямо божественно владею программированием, но то, что не "плаваю" - так это точно. Бейсик я уже довольно плотно забыл, начал подзабывать паскаль (к примеру, ставлю условие if в скобках, или же периодически возмущаюсь, что писать begin...end в 4 раза дольше, чем {} :))

Вообще, начальное знание Паскаля мне не помешало, хотя я уверен: начинай я с самого начала учить Си, я бы его преодолел, не на много больше напрягаясь, чем начиная с Паскаля. Просто некоторые конструкции Си отличаются большей гибкостью, чем конструкции Паскаля, я это понял и стал использовать в своих целях. Не обошлось, конечно, и без натыкания на всякие подводные камни типа
i = 5; i = i++ + i++;
ну, так я считаю, что в таких случаях надо просто меньше умничать, не стараться городить подобные трехэтажные конструкции, и все будет хорошо. Насчет работы с указателями и строками (где-то тут в соседних темах вопрос поднимался), могу сказать что да, поначалу было трудно это понять и осознать, что здесь все не так просто, как в паскале, но, опять же, поняв, что к чему, я начал использовать это в своих целях.

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