metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-08-03 11:49 pm

Обучение программированию с нуля.

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

[identity profile] g-rub.livejournal.com 2013-08-03 09:13 pm (UTC)(link)
В порядке бреда -- линукс, CLI, автоматизация консольных задач...

Хотя, конечно, правильнее всего начать с вопроса "а для чего данного конкретного человека надо обучать программированию? и кто и почему решил, что его надо обучать?"

Ведь пока по условиям задачи "нет практического применения", то нет и собственно цели. А если нет цели -- к чему двигаться-то?

[identity profile] bydlorus.livejournal.com 2013-08-03 09:35 pm (UTC)(link)
MIT же лекции выложил, можно подсмотреть у них.

[identity profile] berezovsky.livejournal.com 2013-08-03 09:38 pm (UTC)(link)
Нельзя так делать, нужно всесторонее образование давать с малых лет. Потом, возможно, уклоняться в специализацию, но уже с солидной базой за спиной. Иначе вырастут однобокие калеки.
Если база уже какая-то есть за плечами, например, универ по несмежной специальности, можно попробовать получить второе высшее.
А натаскивать на конкретные операции - размывать профессию, которая и так уже размыта донельзя.
Ну или брать и составлять свою программу обучения на несколько лет. Возможно, на основе какой-нибудь потогоной западной.

[identity profile] Дима Тихвинский (from livejournal.com) 2013-08-03 10:01 pm (UTC)(link)
В принципе, когда приходят учиться — уже понимают, что надо "писать", остаются три больших вопроса — куда, что, и как это потом запустить.

Основы синтаксиса хоть си, хоть JS показываются за пол-часа, простые задачки тоже показать недолго. Но это студенты-первокурсники, вошедшие в темп жизни университета, в школе — точно медленнее. Я это видел в кружке для школьников (Аничков ДТЮ) и в своём кружке для первокурсников (в ИТМО).

Школьников кстати учили проще — вот вам 30 строк кода на VB, вбейте, запустите, разберитесь что изменить чтобы поведение изменилось с X на Y.

[identity profile] divine-assass1n.livejournal.com 2013-08-03 10:08 pm (UTC)(link)
Вот с этого курса можно начинать https://www.coursera.org/course/proglang

[identity profile] juan-gandhi.livejournal.com 2013-08-03 11:52 pm (UTC)(link)
У нас интёрн есть - ну вроде полный лох, что-то кропал убогое нога за ногу на си, ленив и нелюбопытен. Я его направил на projecteuler - теперь он сутками программирует сидит.

Вот.

[identity profile] megomao.livejournal.com 2013-08-04 06:33 am (UTC)(link)
я вожу только одну проблему, время. его может заберать семья, основная работа.

[identity profile] vp.livejournal.com 2013-08-04 07:47 am (UTC)(link)
Уверен, что нужно действовать так:

Глубокое изучение администрирования целевой ОС + один развитый современный ООП язык.

Например, винда + сишарп,
винда + Qt,
линукс + питон.
линукс + Qt

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

[identity profile] vit-r.livejournal.com 2013-08-04 07:56 am (UTC)(link)
Практика показывает, что совершенно пофиг с чего и по какой методе начинать, если выполнено основное правило: изучаться сразу должны два языка разной философии. Разве что бейсик и подобное безобразие не стоит показывать сразу.

[identity profile] exemok.livejournal.com 2013-08-04 08:31 am (UTC)(link)
С алгоритмов надо начинать. Кнута читать не предлагаю, ибо толстый слишком, но что нить такое обязательно
Edited 2013-08-04 08:32 (UTC)

[identity profile] tzirechnoy.livejournal.com 2013-08-04 08:51 am (UTC)(link)
Предлагаю с микроконтроллеров. Сейчас -- с армовских. Бутстрэп, все дела, диодики.

Потом можно либо схему под это дать, либо предложыть написать форт.

[identity profile] permea-kra.livejournal.com 2013-08-04 08:55 am (UTC)(link)
Я бы предложил начать с хаскеля и численных методов. Без IO поначалу или давать его чисто феноменологически.
Просто, наглядно и т.п.

[identity profile] bydlorus.livejournal.com 2013-08-04 09:08 am (UTC)(link)
Я бы предложил начать с детских книжек про алгоритмы, например, какой-нибудь путешествие Маши и Коли в стране Эвээм. Где-то через год можно браться за более серьёзные задания - скажем, искать букву Ы на клавиатуре.

[identity profile] peric.livejournal.com 2013-08-04 09:27 am (UTC)(link)
начинать с художественной литературы.
само по себе программирование - несложный процесс, любой более-менее мозговитый перец осилит любую задачу, тяжело только выбрать, чем именно заниматься.

[identity profile] guamoka.livejournal.com 2013-08-04 09:40 am (UTC)(link)
Имхо, начинать тренероваться действительно лучше на кошках на алгоритмах. А Ку-Те/Шму-Те-- это вторично. Проблема не научить "с нуля". А не оставить "нулём" с багажем бессистемных знаний.

[identity profile] aamonster.livejournal.com 2013-08-04 10:05 am (UTC)(link)
Вообще-то надо для начала понять, кого учишь и чего от этого человека можно добиться.
Второе - чего от этого человека нужно добиться (ну, можно с этого начать).

И уже имея в голове эти знания - можно попытаться составить если не учебную программу, то хотя бы намётки - учить его Хаскелю или C#, ассемблеру или C++, а может, как тут предложили, вообще начать с микроконтроллеров (беспаечная макетка, attiny, несколько светодиодов и резисторов - доступно даже детям; AtmelStudio - это тот же Visual Studio; ну а ощущение, что ты сам сделал и запрограммировал настоящее компьютерное устройство - бесценно).

[identity profile] inhate.livejournal.com 2013-08-04 10:43 am (UTC)(link)
Зачем?
1) Научиться программировать.
2) Научиться "программировать".
3) Впихнуть на работу в ЕПАМ, чтобы не сдох с голоду.

[identity profile] belezbar.livejournal.com 2013-08-04 10:53 am (UTC)(link)
Взять предметную область, в которой человек немного шарит, и придумать ему задачу, которую можно решить с помощью компьютера. А программу пусть на псевдокоде пока пишет, хоть своими словами.

[identity profile] Дима Тихвинский (from livejournal.com) 2013-08-04 11:25 am (UTC)(link)
Расписал простыню и стёр, попробую коротко.

Проблема образовательных проста — объяснять как (физически, логически, программно) работают внутренности ПК или конкретного ЯП обычно некогда, обучаемому даётся окошко для ввода магических заклинаний, показывается пара примеров заклинаний и книжка, где описано как их составлять и из чего они состоят. В современной версии книжка может заменяться гуглом или встроенным хелпом IDE (это для MS).
,
Это — хреново и непрофессионально, но если задача — запустить процесс, то сойдёт, главное чтобы пытался что-то писать и задавал вопросы. Отсюда и обучение начиная с синтаксиса магических заклинаний.

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

---- теперь мысли

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

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

P.S. Да, я успел побыть "преподом" — два семестра IT-кружков, и семестр пед. практики физиком

[identity profile] serbod.livejournal.com 2013-08-04 11:52 am (UTC)(link)
Если учить хорошему, доброму, вечному, то советую начать с python.

Потом основы Си для грамотности и QT как пример продуманной библиотеки/фреймворка.

Если нужен фрилансер-быдлокодер - HTML, JavaScript.

Если нужен ванильно-энтерпрайзный быдлокодер - 1С.

Если нужен кроваво-энтерпрайзный быдлокодер - Java.

Если нужен хардкорно-кроссплатформенный быдлокодер - FreePascal.

[identity profile] vit0ld.livejournal.com 2013-08-04 01:06 pm (UTC)(link)
Качественных ресурсов на английском языке предостаточно, кмк.

Э.Танненбаум, как минимум

Structured Computer Organization
Computer Networks

это теория для общей грамотности и понимания как всё устроено.

ОнлайнКурсы , как тот же CS 101, тут тоже уместны .

Паралельно с общей теорией, нужно выбрать пару ЯП, оч желательно чтоб один из них был скриптовый ( какой - зависит от, Питон хорошо, Руби тоже неплохо, но Руби не так распространён в дистрибутивах, пока что, насколько я вижу ),
и тренироваться в написании кода, начиная с простейших задачек.
Задачки можно брать с уже упоминавшегося Project Euler, подсмотреть у Д. Кнута в TAOCP, кроме них есть сборники олимпиадных задачек, ....

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

[identity profile] blackyblack.livejournal.com 2013-08-04 03:25 pm (UTC)(link)
1. Пройти курс на intuit.ru или подобном ресурсе для начала лучше для Си. Обязательно прорешивать задания к курсу.
2. Выяснить, нравится ли программирование человеку. Если нет, то лучше на этом и остановиться.
3. Дать в зубы дельфи и пускай рисует формочки. Получившиеся формочки те что похуже в мусорку, те что получше в работу.
4. Через год показать лисп. Решить на нём не очень сложное задание.
5. Решить сложное задание для работы на лиспе/кложури.
6. Заставить осваивать основной язык для работы.

[identity profile] arthin.livejournal.com 2013-08-04 04:40 pm (UTC)(link)
Дык HTDP.

(Anonymous) 2013-08-04 07:48 pm (UTC)(link)
совсем-совсем с нуля - смотрите "комплект учебных миров". проверено на собственном племяннике %)
PS: там в самом начале вообще ассемлер из трех команд, исполнитель - робот, программирование драг-н-дропом %)

Page 1 of 2