Недавно я выражал свое разочарование (на tumblr) по поводу того, что я начал изучать рубин три или четыре года назад…. когда выясняется, что, исходя из рода моей работы и инструментов, которые я часто использую, изучение python было бы гораздо лучшей идеей.
(Прежде чем кто-нибудь решит разжечь войну между Ruby и Python, я не делаю объективных заявлений ни по одному из языков. Я буквально говорю о себе, своей работе и инструментах, которые я чаще всего использую. Из них , python имеет тенденцию появляться больше, чем ruby. Я придерживаюсь общего мнения, что «лучший» язык зависит от контекста. До того, как я пошел в школу в Китае, я не учил испанский язык. Не потому, что мандарин «лучше», чем Испанский, но потому что… ну, испанский был бы так же полезен, как английский в Китае — совсем не очень полезен.)
Теперь очевидное решение моей проблемы — переключиться на python, верно? Неизвестно, что это сложный язык для изучения, и я уже (вроде как) знаю язык программирования, верно?
К сожалению, это не так просто, как кажется. По крайней мере не для меня. Я не собираюсь описывать все свои недостатки и функциональные ограничения, которые они накладывают на мою способность учиться (и как быстро), но достаточно сказать, что да, я инвалид, и это накладывает реальные, непреодолимые ограничения на мое обучение. . Достаточно, чтобы мне потребовалось около трех лет самостоятельного обучения, чтобы получить то, что, вероятно, составляет элементарные знания о рубине. Большая часть того, что я делаю, — это пишу одноразовые скрипты для работы с Tumblr API (заметьте, для развлечения). Я немного лучше разбираюсь в bash-скриптах, потому что использую его на работе.
Снова. С моей стороны это три года неуклонного самомотивированного обучения. Думаю, некоторые люди смотрят на это и думают: «Три года, а они еще даже не настоящие программисты?». Нет, не настоящий кодер.
Когда я говорил о попытке перейти на Python, мне пришло в голову, что… Много технической риторики вокруг кодирования и того, как все должны учиться, кажется, забывают, что языки программирования — это языки. Да, это искусственные языки, но тем не менее это языки. Если вы сделаете паузу и задумаетесь о некоторых последствиях этого, то вдруг станет намного яснее, почему не все собираются научиться программировать.
Почему? Потому что учить языки непросто. Действительно, для некоторых людей, таких как я, изучение новых языков на самом деле довольно сложно. Это трудоемкий трудоемкий процесс, который может потребовать годы работы, прежде чем вы получите функциональное знание языка. Некоторых людей может удивить, что, гм, у людей разные способности, когда дело доходит до изучения языка.
Что еще более важно, это заставило меня понять, что огромный разрыв между тем, как мы преподаем естественные языки и искусственные, вероятно, создает свой собственный барьер. Я вдруг подумал о том, как можно было бы изменить обучение кодированию, если бы оно действительно включало в себя некоторые доказательства и ноу-хау всех многочисленных исследований, проведенных в области овладения языком. Оказывается, уже существует огромное количество исследований по овладению языком и обучению.
Это заставляет меня вспомнить о некоторых семинарах по программированию, которые я посещал. Я посетил мероприятие RailsBridge для женщин. Был полдень. И, конечно, мы делали вещи. Но… в конце концов, это было забыто. То же самое с семинаром по питону, который я посетил. Рассматривая ситуацию как овладение языком, а не обучение кодированию, я совсем не удивлен, что эти семинары (по крайней мере, для меня) не очень помогают в плане реального обучения чему-либо.
Я не думаю, что видел хоть один семинар по, скажем, изучению мандаринского языка. И я говорю о четырехчасовом однодневном семинаре (например, о RailsBridge). Питон был два дня. Но даже два дня… Можете ли вы представить, чтобы за это время кто-то пытался эффективно преподавать естественный язык? Можете ли вы представить себе, что вы приходите на один из таких семинаров с ожиданием, что вы уйдете с какими-то полезными знаниями о языке? Что вы сможете поговорить, даже если это будет очень просто?
Я не могу. Что касается китайского… это то, в чем моя степень бакалавра. Я провел пять лет или около того, изучая его в университете? А потом я пошел в школу в Китае на год. Когда я вернулся из этого опыта, мой китайский был значительно лучше, чем когда я приехал, но, по чьей-либо оценке, я не был «беглым» (письмо, чтение, разговорная речь или аудирование).
Точно так же кто-то, говорящий мне (у которого плохо с изучением языка) просто переключиться с ruby на python, напоминает мне о классе, который я посещал, «научившись читать по-японски для людей, знающих китайский». Такой класс возможен только из-за общего набора символов, но на этом сходство заканчивается. Поскольку каждый из них принадлежит к другой языковой группе, грамматика, синтаксис и т. д. совершенно разные. Этот урок чуть не сломал мне мозг.
Но это я. С другой стороны, я знаю несколько полиглотов. В Китае я встретил кого-то из Казахстана, который говорил на казахском, русском, французском, английском и китайском языках (возможно, больше, но это те, о которых я знаю). Меня впечатляло не количество языков, которые он знал, а его способность переключаться между кодами. В какой-то момент мы шли группой, и он одновременно разговаривал на трех разных языках, плавно переключаясь между китайским, французским и английским языками.
Он был бы отличным аналогом 10-кратного инженера. Квалифицированный и способный легко осваивать новые языки, в которых он затем становится таким же опытным. Конечно, хотя «10-кратный инженер», вероятно, больше похож на единорога, чем на кого-либо еще, суть остается в том, что многие вещи в технологиях, по-видимому, ориентированы на все равно их производить. Особенно с точки зрения обучения и того, как я слышу, как люди говорят об изучении языков программирования.
Все это, в конце концов, заставило меня задуматься об инструкциях, дырявых конвейерах и разнообразии технологий. Во многих отношениях я представляю собой прекрасный пример сочетания социально-экономических факторов, которые делают трубы негерметичными. Учитывая мой возраст и интересы, я *мог* быть одним из тех, кто «я сам научился программировать в подростковом возрасте, провел два года в колледже, а затем бросил учебу, чтобы заработать много денег». Но я был бедным, трансгендерным, геем, недостаточно белым, и жизнь мешала (я только начинал учиться программировать, когда меня впервые выгнали из дома в 10-м классе, и я потерял доступ к интернету). компьютер и интернет).
Но… также зная, много лет спустя и задним числом, о моих собственных трудностях с овладением языком, у меня есть подозрение, что я бы не очень хорошо учился на традиционном факультете информатики. Возможно, даже не в двухлетнем колледже ради диплома. Ожидания и стили обучения — это не то, что, я думаю, соответствовало бы моим (инвалидным) способностям.
Однако представьте себе возможности. Если бы технологии смотрели на объем исследований в области изучения языка и обучения. Если бы мы понимали, что изучение языка программирования может потребовать столько же времени и внимания, сколько изучение естественного языка. Если бы люди перестали ожидать свободного владения языком от студентов, у которых в лучшем случае был только год или около того, чтобы изучить определенный язык.
Хотите, чтобы все научились программировать? Тогда узнайте, как научить *всех*.