Обучение программированию с нуля.
Aug. 3rd, 2013 11:49 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Последнее время часто возникает такой вопрос: как обучить человека программированию вообще с нуля. Т.е., например, человек умеет работать на компьютере и все, пользователь - с чего начинать, чтобы он смог хоть как-то понять, например, книги по программированию "для начинающих".
Если по хорошему, то начинать, конечно, надо с таненбаума, ассемблера, сишечьки, SICP и прочего такого - но, само собой, за короткое время это не осилишь, да и, честно говоря, когда не видишь практического применения - оно даже с базовыми знаниями нихрена не осиливается. Разве что для сдачи экзамена, когда над душой стоит препод с дубиной.
Если по хорошему, то начинать, конечно, надо с таненбаума, ассемблера, сишечьки, SICP и прочего такого - но, само собой, за короткое время это не осилишь, да и, честно говоря, когда не видишь практического применения - оно даже с базовыми знаниями нихрена не осиливается. Разве что для сдачи экзамена, когда над душой стоит препод с дубиной.
no subject
Date: 2013-08-03 09:13 pm (UTC)Хотя, конечно, правильнее всего начать с вопроса "а для чего данного конкретного человека надо обучать программированию? и кто и почему решил, что его надо обучать?"
Ведь пока по условиям задачи "нет практического применения", то нет и собственно цели. А если нет цели -- к чему двигаться-то?
no subject
Date: 2013-08-03 09:21 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-03 09:35 pm (UTC)no subject
Date: 2013-08-03 09:38 pm (UTC)Если база уже какая-то есть за плечами, например, универ по несмежной специальности, можно попробовать получить второе высшее.
А натаскивать на конкретные операции - размывать профессию, которая и так уже размыта донельзя.
Ну или брать и составлять свою программу обучения на несколько лет. Возможно, на основе какой-нибудь потогоной западной.
no subject
Date: 2013-08-04 04:47 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-03 10:01 pm (UTC)Основы синтаксиса хоть си, хоть JS показываются за пол-часа, простые задачки тоже показать недолго. Но это студенты-первокурсники, вошедшие в темп жизни университета, в школе — точно медленнее. Я это видел в кружке для школьников (Аничков ДТЮ) и в своём кружке для первокурсников (в ИТМО).
Школьников кстати учили проще — вот вам 30 строк кода на VB, вбейте, запустите, разберитесь что изменить чтобы поведение изменилось с X на Y.
no subject
Date: 2013-08-03 10:47 pm (UTC)(no subject)
From:no subject
Date: 2013-08-03 10:08 pm (UTC)no subject
Date: 2013-08-04 11:07 am (UTC)(no subject)
From:no subject
Date: 2013-08-03 11:52 pm (UTC)Вот.
no subject
Date: 2013-08-04 02:22 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 06:33 am (UTC)no subject
Date: 2013-08-04 07:47 am (UTC)Глубокое изучение администрирования целевой ОС + один развитый современный ООП язык.
Например, винда + сишарп,
винда + Qt,
линукс + питон.
линукс + Qt
То нибудь такое, чтобы у человека не было от входа иллюзии дикой сложности и он не застрял на входном пороге и второстепенных вопросах. Чтобы у него все получалось.
no subject
Date: 2013-08-04 08:00 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 07:56 am (UTC)no subject
Date: 2013-08-04 08:31 am (UTC)no subject
Date: 2013-08-04 10:29 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 08:51 am (UTC)Потом можно либо схему под это дать, либо предложыть написать форт.
no subject
Date: 2013-08-04 08:55 am (UTC)Просто, наглядно и т.п.
no subject
Date: 2013-08-04 09:58 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 09:08 am (UTC)no subject
Date: 2013-08-04 12:22 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 09:27 am (UTC)само по себе программирование - несложный процесс, любой более-менее мозговитый перец осилит любую задачу, тяжело только выбрать, чем именно заниматься.
no subject
Date: 2013-08-04 12:17 pm (UTC)человекпериц, закончивший юрфак?(no subject)
From:no subject
Date: 2013-08-04 09:40 am (UTC)на кошкахна алгоритмах. А Ку-Те/Шму-Те-- это вторично. Проблема не научить "с нуля". А не оставить "нулём" с багажем бессистемных знаний.no subject
Date: 2013-08-04 10:06 am (UTC)no subject
Date: 2013-08-04 10:05 am (UTC)Второе - чего от этого человека нужно добиться (ну, можно с этого начать).
И уже имея в голове эти знания - можно попытаться составить если не учебную программу, то хотя бы намётки - учить его Хаскелю или C#, ассемблеру или C++, а может, как тут предложили, вообще начать с микроконтроллеров (беспаечная макетка, attiny, несколько светодиодов и резисторов - доступно даже детям; AtmelStudio - это тот же Visual Studio; ну а ощущение, что ты сам сделал и запрограммировал настоящее компьютерное устройство - бесценно).
no subject
Date: 2013-08-04 10:43 am (UTC)1) Научиться программировать.
2) Научиться "программировать".
3) Впихнуть на работу в ЕПАМ, чтобы не сдох с голоду.
no subject
Date: 2013-08-04 10:53 am (UTC)no subject
Date: 2013-08-04 11:25 am (UTC)Проблема образовательных проста — объяснять как (физически, логически, программно) работают внутренности ПК или конкретного ЯП обычно некогда, обучаемому даётся окошко для ввода магических заклинаний, показывается пара примеров заклинаний и книжка, где описано как их составлять и из чего они состоят. В современной версии книжка может заменяться гуглом или встроенным хелпом IDE (это для MS).
,
Это — хреново и непрофессионально, но если задача — запустить процесс, то сойдёт, главное чтобы пытался что-то писать и задавал вопросы. Отсюда и обучение начиная с синтаксиса магических заклинаний.
По хорошему, это нужно делать объясняя границы черного ящика — "как работает X описано вот здесь, а как оно сделано внутри — вот здесь, а почему оно так сделано — вот эти пять томов." При правильном темпе подачи круг знаний расширяется от прикладного до общеобразовательного.
---- теперь мысли
Непродолжительноле обучение в принципе не может довести человека от нуля до уровня, когда его можно пускать в индустрию, проблема в объёмах того, что надо выучить и в длительности практики и её задачах (от "прорешать элементарные задачи" до "научиться программировать не включая мозг").
Возможно где-то это реализовано в нужной пропорции, но я такого не видел — либо лютое дрочево на машину Тьюринга и формальную логику, либо "курсовая работа — написать интернет-магазин". И нигде — длительной практики с постоянным контролем и корректировкой. Такое обучение — полный капец для индустрии, но пока есть запас прочности в виде возможности доучивать, направлять, ревьюить код — перевариваем тех, кого дают.
P.S. Да, я успел побыть "преподом" — два семестра IT-кружков, и семестр пед. практики физиком
no subject
Date: 2013-08-04 11:32 am (UTC)(no subject)
From:no subject
Date: 2013-08-04 11:52 am (UTC)Потом основы Си для грамотности и QT как пример продуманной библиотеки/фреймворка.
Если нужен фрилансер-быдлокодер - HTML, JavaScript.
Если нужен ванильно-энтерпрайзный быдлокодер - 1С.
Если нужен кроваво-энтерпрайзный быдлокодер - Java.
Если нужен хардкорно-кроссплатформенный быдлокодер - FreePascal.
no subject
Date: 2013-08-04 12:18 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 01:06 pm (UTC)Э.Танненбаум, как минимум
Structured Computer Organization
Computer Networks
это теория для общей грамотности и понимания как всё устроено.
ОнлайнКурсы , как тот же CS 101, тут тоже уместны .
Паралельно с общей теорией, нужно выбрать пару ЯП, оч желательно чтоб один из них был скриптовый ( какой - зависит от, Питон хорошо, Руби тоже неплохо, но Руби не так распространён в дистрибутивах, пока что, насколько я вижу ),
и тренироваться в написании кода, начиная с простейших задачек.
Задачки можно брать с уже упоминавшегося Project Euler, подсмотреть у Д. Кнута в TAOCP, кроме них есть сборники олимпиадных задачек, ....
Но одному всё равно слишком сложно, на мой взгляд, нужен наставник, учитель, мотиватор, или на худой конец "поводырь" :)
no subject
Date: 2013-08-04 02:58 pm (UTC)эээ? нахуя? первая для совсем дибилов а вторая нихуя не основы.
>Паралельно с общей теорией, нужно выбрать пару ЯП, оч желательно чтоб один из них был скриптовый
лисп же. один. можно елисп.
>Руби тоже неплохо, но Руби не так распространён в дистрибутивах, пока что, насколько я вижу
а это тут причём
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-08-04 03:25 pm (UTC)2. Выяснить, нравится ли программирование человеку. Если нет, то лучше на этом и остановиться.
3. Дать в зубы дельфи и пускай рисует формочки. Получившиеся формочки те что похуже в мусорку, те что получше в работу.
4. Через год показать лисп. Решить на нём не очень сложное задание.
5. Решить сложное задание для работы на лиспе/кложури.
6. Заставить осваивать основной язык для работы.
no subject
Date: 2013-08-04 04:40 pm (UTC)no subject
Date: 2013-08-04 07:48 pm (UTC)PS: там в самом начале вообще ассемлер из трех команд, исполнитель - робот, программирование драг-н-дропом %)
no subject
Date: 2013-08-04 08:03 pm (UTC)