Как стать автором
Обновить

Комментарии 309

Половина статьи — здравые, в общем-то, мысли о том, что нужно объяснять основы, а не кидаться в курсы «создать сайт за 3 дня». И тут же бэкенд, фронтенд, REST API. Если разбираться и объяснять, а не показывать как некую магию, это же офигенно сложно для новичка, разве нет?
Поддерживаю. Если изучать с основ — можно дать просто базу. Или посадить за html и css. И уже в дальнейшем, после понимания этой темы перейти к frontend и потом к backend. Но так с наскока… Я думаю если просто показать — будут теже самые курсы на 3 дня, по типу «Создай свой сайт». Ну если только девушку не посадить клепать сайты после этого. Тогда может после 10-12, она заинтереуется и начнет вникать… прийдет осмысление…

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


С другой стороны, конечно, это может не сработать. Но я надеюсь, что интерес к сотворению чего-то, полезного для себя любимой, сыграет свою роль, и всё получится!

Ну а где полезное? Через сколько она увидит первый результат? Примерно через год (или больше), когда дойдете до интерфейса?
Думаю, что здесь придётся искать компромиссы. С одной стороны, да, она должна видеть результаты работы как можно скорее, с другой же — она должна понимать, что она делает.

Здесь всё будет зависеть от того, как у меня получится преподнести материал.
Я буду стараться!
Думаю, что поспособствовало этому изучение в школе QBasic и Pascal, простых, понятных и дающих базовые понимания.

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

Ещё есть PascalABC, очень хороший язык, как учебный — замена старому Turbo Pascal. Всё больше школ на него переходят.
Можно начать с элементарного СИ, уколоться неопределенностями/недокументированными возможностями и плавно перейти на паскаль, потом на питон(тут начинается радость от всяких плюшек таких как практически неограниченная точность чисел без проблем с типами), а после — на джаву. Некоторые пункты кроме первого можно пропустить, имхо.
НЛО прилетело и опубликовало эту надпись здесь
Я изучал программирование именно в таком порядке. И да, питон довольно зацепил. Именно, статические типы здорово экономят время, по крайней мере мне. И проблем не вызывают, нужно только в названии переменных писать с чем работаешь в каждый момент времени, чтобы не забыть. А в чем проблемы, я в чем то не прав? Да, типы важны, поэтому нужно начинать с СИ как я и написал, но позже можно и без них, если уже разобрался как типы работают. Вычислить число пи с точностью 1000 знаков после запятой? Тут без питона никуда(конечно есть сторонние библиотеки, но лучше без них). Переполнения типов для слабоков. Каждый программирует по-своему. Может внятно стоит ответить, а на сливать мне карму?
НЛО прилетело и опубликовало эту надпись здесь
нужно только в названии переменных писать с чем работаешь в каждый момент времени, чтобы не забыть


Небольшой пример можно?
First_str='test'
Second_n=2 #n-number
Ну и всегда есть type(), в случае если забыл написать что есть что. Ну и отладчик не забываем.
Смысл не раскрыт. Какая польза от подобных суффиксов? Или вы практикуете повторное использование переменных?
Ну, переменные типа temp я могу много раз использовать в программе в разных местах с разными типами. Зачем засорять память? Но с обычными переменными я так не всегда поступаю, но бывает.
Зачем засорять память?

Подозреваю, что для очистки памяти в питоне есть питоновские способы… Так же как и в С…
Польза может быть, если используются две переменные, хранящие одно и то же в разных типах. Или даже в разных единицах измерения.
Например, если мне некоторая величина поступает в виде строки из текстового поля, мне её нужно преобразовать в число, а потом эта величина мне потребуется в метрах и в дюймах.
Получаем что-то вроде
strValue = getValue();
mValue = parseFloat(strValue);
inValue = mValue*0.0254;

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

Разумеется, всё упирается в потребность. Очень-очень редко она возникает.
А приписывать префиксы повально каждой переменной — это дурацкая идея, против которой, ЕМНИП, выступал сам автор венгерской нотации.
Если такой трюк нужен больше чем 2 раза, возможно, стоило бы завернуть это дело в класс с методами as_str(), as_float(), as_inch()… ;)
Как я понял, у dimonoid python, но он имел в виду нечто иное…
стоило бы завернуть это дело в класс с методами as_str(), as_float(), as_inch()

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

dimonoid в python просто слишком увлёкся новым для себя подходом к именованию. Бывает на определённом этапе самообразования.
Ради десятка промежуточных значений в одной процедуре?


Почему бы и нет? +1 к понятности кода, -1 к вероятности ошибиться. Нельзя, даже если очень хочется, сделать глобальную переиспользуемую в нескольких местах временную переменную — бесценно. ;)
+1 к понятности кода

И к накладным расходам на вызов методов.
сделать глобальную

Зачем?
+1 к понятности кода
И к накладным расходам на вызов методов.


Преждевременная оптимизация это называется ;)

сделать глобальную
Зачем?


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

Шел 2018.

Ну простейшую программу типа «Hello World» можно за 15 минут научить написать.
НЛО прилетело и опубликовало эту надпись здесь

Я потому-то и решил попробовать по-другому, что видел множество примеров неудачного погружения через вёрстку.
Здесь, пожалуй, кроме первоначальной заинтересованности, стоит учитывать темперамент человека, усидчивость, склонность к тому или иному образу мышления. Я, к сожалению, не большой мастер в этом, поэтому буду пробовать так, как описал.
Хотя любые советы, само собой, приветствуются!

Автор, я твоя девушка. Свою первую программу я написал в 86 на Фортране (вру, раньше, для калькулятора). Правда последние лет 10 больше балуюсь для друзей, програмируя под Excel.
Так вот, я представил, что мне надо ЭТО изучить и испугался. Я уже не молод, конечно, и в мозги информация лезет туго. Но я-то хоть представление о програмировании имею…
Это очень сложно для новичка, вы правы! Именно поэтому я и взялся писать об этом на Хабр, ведь, хоть я и описал порядок по пунктам, но кто знает, как оно пойдёт дальше, а «Хабр всё помнит».
В общем-то, цель этой статьи, как и всего будущего цикла (надеюсь, возможность будет), опробовать описанный метод, зафиксировать все грабли, попавшиеся на пути, и рассказать всё это коллегам, чтоб помочь им, внезапно очутившимся в похожей ситуации, своим опытом, каким бы он по итогу ни оказался.
Когда прочитал название статьи очень долго смеялся со своей девушкой)) Так как ситуация была точно такая же!
Но мы начали с HTML и CSS. Так как у не просветлённых мышление как у обычных пользователей. Им нужно понять как делаются формочки, менюшки, иконочки и тд. что бы интерес не пропадал, а дaлее переходить к JS (уже объясняет как работает та ли иная кнопочка, почему двигает тот или иной объект) (ну и на последок Ajax и тд мелкие технологии). Этого было достаточно для того что бы она начала свою карьеру Джуниром в front. Сейчас она на этапе изучения PHP (так как в компании используем в качестве back). Ну и для закрепления Mysql (postgre, там от ситуации). И под конец пару книг по Архитектуре, паттеранам и тд.
Это написал просто Вам на скорую руку (обобщённо).
В моей практики это 4-й человек. И только у неё получилось!))) Первые 3 сдались! (мотивация).
Этого было достаточно для того что бы она начала свою карьеру Джуниром в front. Сейчас она на этапе изучения PHP (так как в компании используем в качестве back).

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

Это её выбор. Так как работала не программистом но в сфере IT. На данный момент даже места рабочие рядом). Её брат двойняшка тоже программист. Так что большая IT семья!
Но всё же всем бы советовал поступать в Вуз. Так как не стоит недооценивать силу образования (имею ввиду от самообразования и конечно же уровень самого вуза).
Это её выбор. Так как работала не программистом но в сфере IT. На данный момент даже места рабочие рядом).

А если бы деньги не требовалось зарабатывать — это был бы ее выбор? :)

100% был бы! Так как моего дохода хватает с головой что бы обеспечить себя её и наших родителей) Сам процесс саморазвития в нашей профессии привлёк меня и её! (Хотя я закончил и техникум и институт по специальности ПИ — программная инженерия, в сумме более 9 лет).
Очень рад, что у Вас и Вашей девушки получилось! Это прекрасно!

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

Из троих профессиональных программистов, ехавших сегодня на рыбалку, двое начинали с консольных QBasic/Pascal/C, и один — с вёрстки. Кстати, в числе начинавших с QBasic/Pascal/C — девушка.

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

Ну вот и проверим!)
НЛО прилетело и опубликовало эту надпись здесь
А это сарказм был?

А то я конечно одобряю и то, и другое, но в текущей ситуации — «а так я хоть понимать тебя буду» — Кормен может пригодится только если автор — спортивный программист, и диалоги там получатся примерно такие:

— Дорогая, на контесте такая-то задача была, дак я затолкал жадность за квадрат, а доказать не могу
— Ну вот же, по индукции…
НЛО прилетело и опубликовало эту надпись здесь
Напоминаю, цель автора — не сделать из своей девушки синьора для гугла, а сделать, чтобы она могла понимать то, что он ей рассказывает о своей работе вебдева.
Не думаю, что лямбды и предикаты ей в этом помогут.
НЛО прилетело и опубликовало эту надпись здесь
Мы с милёнком занимались
Искуством компиляции
Очень вредное оно
Пропали менструацмм

Мой милёнок сущий хакер
Я его послала нахер
Захотел он, его мать
Кое что во мне взломать!

Мой милёночек меня
Вчера разархивировал
Дизассемблером меня
Дефлорасемблировал

Мы с милёнком занимались
Да наладкою сети
Заголовок чтоб пакета
Мог в мой роутер войти

Мой миленок по ночам
Что-то програмирует
Докинг-станцию мою
Напрочь игнорирует

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

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

ORLY? Культурное общество, которое в теме, наелось этими разговорами на скрамах. А которые не в теме — не поймут…
Культурное общество, которое в теме, наелось этими разговорами на скрамах.

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


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

НЛО прилетело и опубликовало эту надпись здесь
Да вы, батенька, знатный щёголь!
Мое личное мнение сводится к тому, насколько и как сильно разбит на подмодули курс обучения чему-либо. Я, будучи заинтересованным школьником, классе в 7-8 учился в «ИТ» в интернете по ВУЗовским курсам: это позволило мне в 10-11 классе подрабатывать фрилансом в веб-фуллстак. Мои же не менее заинтересованные одноклассники учились всему методом проб и ошибок, гайдами и туториалами. Они к тому же 11-ому классу знали и умели от силы половину того, что умел я. Их скорость познавания нового была в разы меньше. Отсюда я сделал вывод — чем более структурирован план обучения и чем более он прямо-линеен — без перескоков от темы к теме — тем более просто и эффективно познается материал. По сей день я удостовериваюсь в своей теории.

Мне тоже показалось, что у автора раздвоение личности… Сначала ему не нравились курсы с целью создать сайт, а в итоге он решил обучать на примере создания сайта. Только по сравнению с обычными курсами для новичков, усложнил всё на пару порядков.
Тема, конечно, сложная… Но одно точно: нужен короткий цикл "обучение" -> "программирование" -> "результат". Ну, какой-нибудь консольный конвертер из миллилитров в граммы и обратно для разных кулинарных субстанций, а не вот это вот всё...

Я тоже не понял, как автор собирается вот это всё впихнуть в неокрепшую голову своей девушки. Тем более, что новичкам важно видеть какой-то результат на каждом этапе. А какой результат будет тут, скажем, через неделю — две после начала?
Как по мне, так начинать надо было с обратной стороны. Сначала html, css, js. Потом typescript, который плавно подвел бы человека к статической типизации. Да и после объектов в js понять все эти json было бы намного проще. Ну а потом можно Go. Единственное, PostgreSQL это очень жирно для новичка. Можно начать с MySQL. Для начальной цели она подходит, а изучить можно недели за 2, занимаясь по 10 минут в день.
за пол года, при должной самомотивации девушки, этого более чем достаточно что бы ее мозг начал работать в правильном направлении, она научилась держать «лопату» в руках и начала самостоятельно рыть траншею, периодически спрашивая «ой, я тут лопайто ударила и этот тросик искрить начал — это баг или фича ?»
А если я автомеханик, я должен ознакомить девушку с тем, как перебирать двигатель?

Через выхлопную трубу

НЛО прилетело и опубликовало эту надпись здесь
Это если механик-гинеколог.
Было бы странно этого не сделать, если это то что вы любите и вам уже хочется получить плюшки работы учителя — возможно наиболее значимой профессии :)
Начал за здравие, закончил не очень. Если девушка не фанатик, готовый на энтузиазме работать несколько недель, мне кажется на первом шаге у вас выйдет пробуксовка уже на второй день.
Для изучения основ лучше все же брать задачу, которую вы сами могли бы полностью реализовать за 10-15 минут (не преувеличение).
(был небольшой опыт такого обучения — по итогу можно сказать успешный (программистом не стала, но стала понимать меня)).

Как думаете, возможно ли на описанных мною этапах, практиковать ваш метод?
Идея завершаемых за 10-15 минут задач мне очень нравится. Это «детский» подход, который, как мне кажется, на взрослого человека может подействовать с не меньшим успехом.
Главное — постараться подобрать действительно интересные задания, желательно применимые в конечном проекте.

Можно начинать со Sketch'а, делать простенькие игрушки.
Да черт его знает в самом деле. Я думаю было бы нелепостью утверждать «нет, это не может работать» — т.к. все люди разные, сработать может даже самая лютая херня) Скажем так, я был просто скептичен. Если вы «задекомпозируете» свое обучение на вполне себе завершамые кусочки «по 1-2 сторипоинта», то возможно будет больше выхлопа — даже если девушка «сорвется» на второй день, все равно будет какой-то завершенный результат =)

На самом деле, вопрос в том что девушка больше хочет сама «просто научиться понимать все эти штуки» или научиться «думать как программист».
Святая женщина!

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

Хех, когда-то именно такой подход надолго отвратил меня (и, думаю, не только меня) от программирования вообще. Все эти «неА и Б или Цэ или неД», блок-схемы с ветвлениями и 10011001 — это одна вселенная (нудная и скучная, пахнущая меловой пылью, геранью и ватой на школьных окнах), а Doom, keygen'ы и вирус ILoveYou — совсем другая (загадочная и магическая, где работали заклинания). И связи между этими вселенными никак не виделось…
Человек, которому скучно от ветвлений и 10011001 — никогда не станет программистом.

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

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


Например человек разрабатывающий ПО для томографов, где требуется реализация преобразования Радона, это программист? Нужна ли ему математика?


А например разработчики игровых движков, они программисты? Нужна ли им математика и физика?


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

Это шутка была, не совсем веселая. Программисты они всякие бывают, про 1Сников забыли упомянуть.
КМК, нужно иметь понимание и в базовых областях (та же математика), и в предметной. И в нескольких смежных. А то может получиться совсем узконаправленный специалист, умеющий решить ровно одну задачу по ровно одной схеме.

В ответ на классический пример с математикой в 3D-движках, автопилотах и медицине, обычно приводят не менее классический ответ про процент программистов, работающих в этих отраслях :) На мой взгляд, значимость математики в сфере программирования переоценивается. Тем 5% людей, которым она нужна, проще взять несколько обучающих курсов и получить необходимые знания. Там не такой большой объем, чтобы не справиться. Вместо этого у нас бомбардируют мат.анализом 100% разработчиков, включая 1С-ников, PHP-шников и администраторов баз данных. Неэффективно.
не менее классический ответ про процент программистов, работающих в этих отраслях

Встречный вопрос: корректно ли остальных называть программистами?
Безусловно. Программирование — широкий профиль, как и врачи. Кто-то делает операции на сердце, а кто-то отбеливает зубы, но все получали профессию врача.
Так всё просто: есть такая специальность «математик — системный программист». Он, очевидно, математику знает.
А вот программисты приложений, по мнению ОКЗ, «создают и поддерживают программный код, указанный в технических инструкциях и спецификациях для программных приложений и операционных систем». Вот дали ему формулу — он кодит.
НЛО прилетело и опубликовало эту надпись здесь
Для меня это было самое интересное на курсах информатики в школьные годы.
Зачем лезть в дебри фронтенда? Тем более при том, что там каждые несколько лет все сильно меняется и к фундаментальным основам это имеет слабое отношение.
Зачем вообще начинать с клиент-серверной архитектуры?
это либо курсы по веб-программированию (PHP, JS, Python, etc)
Курсы по Python есть не только по Веб-программированию.
Посмотрите вот этот курс для начинающих — www.coursera.org/learn/interactive-python-1 (и его вторую часть), где с нуля учат делать простые игры на Python прямо в браузере (у них есть интерпретатор Python на JavaScript), адаптируйте его для Вашей девушки и будет и интересно и познавательно!

Спасибо, обязательно посмотрю!


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

Поддерживаю автора комментария выше. Я много лет каким-то боком немножко относилась к программированию. Бейсик и ТурбоПаскаль с рисованием домиков в школе, С в вузе (дааа, те самые указатели надолго понизили мне самооценку и желание… заниматься программированием), HTML и CSS в рамках самообучения, VBA на работе и т.д. Но при этом основная рабочая деятельность лежала совсем в иной плоскости. А вот после нескольких курсов Python for Everybody профессора Чака на Курсере я таки ушла с головой в программирование, сменила работу, и, не побоюсь признаться, получаю от этого неистовое удовольствие :) Отличный на Курсере материал (разве что по-английски, одному из условий в посте не соответствует). И Python — замечательный язык с простым и лаконичным синтаксисом.
Мне кажется, начинать объяснения лучше именно с алгоритмов (на примере тех же рецептов — готовый простейший алгоритм), и выбрать как раз язык с динамической типизацией, он не требует запоминать и понимать всякие int, float, string, bool, их отличия, можно сразу перейти к основам алгоритмической логики. На типах и прочей теории вы можете сразу завязнуть и потерять интерес «клиента». Я понимаю желание сделать систему «кошерной», современной и т.д., но как уже выше неоднократно отметили, это не для начинающих. Голова взорвется.
Мне кажется, начинать объяснения лучше именно с алгоритмов (на примере тех же рецептов — готовый простейший алгоритм), и выбрать как раз язык с динамической типизацией, он не требует запоминать и понимать всякие int, float, string, bool, их отличия, можно сразу перейти к основам алгоритмической логики

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

Я же не предлагаю ей сразу в энтерпрайз с этими знаниями, это лишь первый шаг обучения. В том же Scratch, когда котика по экрану гоняешь, ты не пишешь у каждой команды тип переменной, мол, пройди int шагов и скажи string. После понимания алгоритмов на следующем этапе можно перейти глубже и детальнее. Заблуждение в том, чтобы девушку, у которой ноль знаний, грузить сразу всем. Это как первокласснику, не знающему буквы, начинать объяснять причастные и деепричастные обороты и запятые на письме, а то он же неграмотный будет. Я согласна, что типизация — обязательная необходимая часть знаний, но если она реально заинтересуется и захочет писать код за деньги, а не только понимать своегл парня, то на усвоенном каркасе уже будет понятнее, что такое компилятор и как он работает, почему важно указывать тип переменной, как это влияет и т. д. Тупо зазубренные int, float, bool, без понимания сути, ничего не прибавят к качеству кода.

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

Читал как-то про него на Хабре. Мне кажется, что это очень крутая штука для малышей, но не совсем подходящая в моём случае.
И здесь претензий не к инструменту, а ко мне — не думаю, что я бы смог придумать что-то, что позволило бы заинтересовать мою девушку в Scratch!

Я попробовал припомнить, сколько своих девушек я обучил программированию, получилось пять. Скретч — это ваш выбор. Пусть сделает игру, например пинг-понг или Марио. Другой вариант — Lego Mindstorms, пусть заставит работа пройти квадратную траекторию с помощью их labview-подобного языка.
После пары месяцев таких задачек покажите ей код простой веб страницы и заставьте написать html. Дайте понять, что все сайты в мире состоят из html-прямоугольников. Покажите как с помощью css можно закруглить уголки и сделать цвета. Покажите как с помощью js можно делать анимашки или калькулятор.


Переход к пониманию того, зачем вообще нужен что-то считающий сервер — сложный момент. Проще всего принести несколько компов/мобилок и запрограммировать кнопку «я был тут» на php, на которую с нескольких компов и нажимать — а она пусть увеличивает счётчик (хранение в plain-файле, никаких баз данных).


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

НЛО прилетело и опубликовало эту надпись здесь
Ответ на вопрос ЗАЧЕМ — невнятен.
Девушки существа более прагматичные, а тут речь о том, чтобы заниматься чем-то а) творческим (что как правило женщинам труднее), б) непонятно зачем.
Есть вероятность, что дальше «Hello, world!» вы не уйдете. Хотя я могу конечно быть не прав — интересно как всё будет дальше. Ни в коем случае не хочу обидеть прекрасную половину человечества, просто наблюдения/личная статистика.

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

ещё и не склонны сдаваться.
Если в конце есть четко выраженная цель на уровне «иметь» — то да.
«Научиться программировать» — плохая цель по формулировке — отсутствуют критерии достижения.
«Вообще не правильно, наверное, вот так вот гендерно кого-то определять,»
А… ну да — тут я сильно извиняюсь. Я как это… слегка «биологизатор». )))
Вопрос в том какова настоящая мотивация.
На этот, казалось бы, абсолютно справедливый вопрос я получил не менее справедливый ответ:
— Ты всё равно постоянно говоришь о программировании, а так я хоть понимать тебя буду.

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

Если говорить про изучение, то почему бы и нет, Go действительно хороший инструмент для этого, только я, как человек, 4 года преподающий программирование в школе помимо основной работы, сразу бы посоветовал забыть про все эти REST, PostgreSQL, Vue.JS и пр., потому что даже на освоение процедурного программирования (без указателей и массивов — только ветвление, циклы и консольный ввод/вывод) уйдёт около года.

И тут автору следует себя спросить — он всерьёз хочет сделать full-stack девелопера из девушки? Хорошо объяснить общую логику работы всего этого, фундаментальные закономерности (по сути всё сводится к этому пресловутому процедурному программированию), но не нужно, закусив удила, сразу бросаться в омут, а вести дело следует таким образом, чтобы девушка могла прекратить сохранив лицо и ни в коем случае не доводить до скрытого раздражения и пр. Устраивать реалити-шоу на хабре — откровенно дурная затея. Надеюсь, что она про это не в курсе.
Мне тяжело что-то добавить к Вашему комментарию, потому как всё в нём — правда.
Позволю себе лишь добавить маленькую ремарку.
Многие вещи, на мой взгляд, зависят от степени доверия. Скажем, публиковать чью-то историю (это ведь не только моя история), не поставив в известность другого участника этой истории — это, на мой взгляд, противоречит всем нормам морали. Поэтому нет, она в курсе.
Из уровня доверительности отношений между людьми так же выстраиваются их взаимоотношения уровня учитель-ученик. В школе, объясняя ветвления и циклы нескольким десяткам незаинтересованных учеников, вы можете потратить и год, да. Почему? Мне кажется, потому что ученики Вам не доверяют. Не доверяют не лично Вам как человеку, Вы здесь вообще не при чём. Речь идёт о недоверии социальной группы «школьники» к социальной группе «Школьные преподаватели», и речь о доверии своего личного времени — им не интересно в циклы и ветвление, так же как не интересно в Основы Православия и Кубановедение.
В моём случае человек целенаправленно доверил личное время мне. Думаю, возможно ожидать чуть более быстрого результата.

И всё-таки спасибо за глубокий комментарий. Этим, пожалуй, и ценна возможность дискуссии, что можно копнуть совсем в другую сторону, например, в личность автора, и это действительно будет интересно!
Я согласен с тем, что взрослый человек, тем более с высшим образованием, это не школьник и будет обучаться быстрее при наличии мотивации и хорошего учителя. Но тут может быть «ошибка выжившего»: те, кто к этому склонны и кому это интересно, начали это изучать интенсивно ещё в школе и, в итоге, пришли в эту профессию, или смежную. С другой стороны, если в школе/институте условий для этого создано не было — плохой учитель, отсутствие интереса/времени, гендерные предрассудки и пр., то талант мог остаться неразвитым, а сейчас может взлететь.
На самом деле хорошо, чтобы она хотя бы в общих чертах понимала специфику вашей работы, чем вы там занимаетесь, какие там бывают проблемы. Это, кстати, можно рассказать даже без обучения программированию (прекрасный пример — серия рассказов Карела Чапека «как это делается»). Потому что в парах с хорошими глубокими отношениями и в семьях партнёры интересуются «как дела на работе» и лучше, если это будет не пустой разговор, а возможность поделиться успехами/проблемами, услышать мнение со стороны, получить совет. Поэтому, мне кажется, что вам следует также сделать симметричный шаг по отношению к ней. И вообще — счастья и удачи.
Да, абсолютно с Вами согласен, мы этот этап как раз уже прошли, и именно с него перешли на желание вникнуть в программирование глубже.
Такие уж у нас отношения, что я в своё время изучал с ней аспекты её специальности, а теперь вот она решила.
В каком-то смысле это, наверное, уже — счастье и удача!

Спасибо! Не могу не ответить взаимностью: Вам тоже желаю счастья и удачи!
Зачем вы пытаетесь подвести какие-то аргументы к полу? Женщины бывают абсолютно разные и с разным складом ума. Как и мужчины. Кстати, как человек, которому больше по душе писать статьи и рассказы, чем код (хотя код нужно писать частенько), я не понимаю, что в этом творческого, особенно в сравнении. Продумывать алгоритм решения задачи — совсем не то же самое, что сочинять рассказ. Это у меня трудности, потому что я женщина и не склонна к творчеству? :-)
«Зачем вы пытаетесь подвести какие-то аргументы к полу?»
А почему бы и нет? Пол есть некая характеристика объекта, почему бы не строить модели по влиянию этой характеристики на… всё?
«Продумывать алгоритм решения задачи — совсем не то же самое, что сочинять рассказ.». Попытался мысленно сравнить ). Программирование труднее — рассказ нельзя написать неправильно — он может быть хорошим, может быть плохим, но критерий работоспособности к нему неприменим.
Ну кстати можно посмотреть свою статистику — сколько вокруг вас женщин-программистов или писателей.
А где/как почитать ваши статьи/рассказы? Интересно очень!

А к чему, собственно, такие сложности? Возьмите старый добрый Delphi или c#: тут и строгая статическая типизация, и ооп, и отличная IDE, и работа с формами, которая очень помогает в освоении ооп. К тому же не будет всей этой ерунды с разделением на фронт и бэк, которая ей совершенно не нужна.

Я не писал на Delphi с конца нулевых, интересно сейчас посмотреть, что и как там.
Но всё же, мне кажется, садить новичка в эти самые отличные IDE стоит, только если его цель — стать профессиональным программистом.
К тому же, дома у нас не Windows.


Однако, в будущем, если она всё-таки не бросит меня (как педагога, конечно же), можно попробовать, спасибо!

www.lazarus-ide.org

Сажать за нормальную IDE стоит хотя бы потому, что с ними порог вхождения намного ниже. Гораздо понятнее, когда ты берёшь и кидаешь мышкой кнопку на форму, а не описываешь вручную всю разметку страницы. В этом плане даже QtCreator будет проще, чем html+css+js.
Про Lazarus я знаю, конечно! Возможно сейчас он не такой сырой, каким был, когда я знакомился с ним. Можно будет посмотреть на досуге, спасибо!

Я слышал про некий кроссплатформенный Kilyx, родственник Delphi..

По-моему, Kylix закончился ещё во времена, когда за Delphi стояла Borland, а не Embarcadero
Дельфи сейчас на андройд компилирует.
Kilyx, к сожалению, давно умер, так толком и не родившись (поговаривают, благодаря 'стараниям' одной известной компании из Редмонда).
Делфи сейчас сама компилирует (кроме Win32/Win64, само собой) под Android, iOS, MacOS, Linux, работает с вебом (с помощью сторонних компонент).
PascalABC под Linux есть.
К слову, выпустили Delphi Community Edition. Можно совершенно свободно использовать что бы 'поиграться'. И не только :) Как раз 10.3 выпускают, пробуйте.
Проблема еще в том, что многие просто скажут, зачем мне компьютер, если рецепты можно просто записывать в блокнот. И даже будут правы. И количество того, что нужно изучить, чтобы сделать функцию похожую на записывание в блокнот, только на компьютере — удручающе зашкаливает, не в пользу компьютеров.

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

НЛО прилетело и опубликовало эту надпись здесь
Да, вы правы, это обязательно и нужно было упомянуть об этом в статье.
Постараюсь это сделать в следующей. Спасибо!
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за столь подробный комментарий.
Я как раз-таки и писал о том, что не хочу обучать свою девушку в формате экспресс-курса, поскольку, как показывает опыт, в том числе, как понимаю, и ваш, — ничего это не даст.

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

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

И спасибо за содержательный диалог!
Жена, например, прошла собеседование в долине и работает Sr. Software Engineer не имея ни дня работы до этого. Процесс был долгий и тяжелый. Но мы начинали не просто с нуля, а с отрицательного уровня.


прошла собеседование в долине


работает Sr. Software Engineer


не имея ни дня работы до этого


Обидно становится, когда после 7 лет разработки ты все еще не чувствуешь себя Sr. Software Engineer, а тут…
НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь
С интересом прочитал бы отдельный материал о вашем опыте :) О каком «сайте проекта» речь, не понял из комментария?
Автор, я в Вас верю! У моего мужа получилось XD
Учили Java, начинали с JavaRush. Но ваша программа мне видится огромной и непосильной. Судя по себе, я бы это осилила минимум за год (а то и два) усердной работы и чудовищной мотивации. Если действительно нацеливаться на хорошие знания. Это при том, что я по образованию учитель английского и с языком проблем нет :)
Благодарю!
Очень интересно слышать мнение человека, непосредственно пришедшего в наш лагерь подобным образом.
Сколько времени у вас ушло на базу? Были ли проблемы с какими-то конкретными областями?
Эк Вы размахнулись…
Такое не каждому крепкому джуниору под силу, вот так вот, сразу…
Но тема интересная…
Я тоже дочь (падчерицу) к айти приучаю…
Еще когда в школе с ней уроки по математике учил, заметил — зачатки абстрактного мышления и логики есть… Надо только развить…
Прошли с ней курс на ютюбе по верстке и css…
Когда работу вэб-форм объяснял, она сообразила, как ей пароль от аккаунта вкантактов у ее парня увести-)
Перед освоением sass хотел начальный курс по js пройти, чтобы сначала поняла, что такое переменные, if-then, while, for и т.п.

Но… интерес внезапно прекратился…

Теперь ломаю голову, как его возобновить…
Пока кроме «ремня» ничего в голову не приходит-)
Надеюсь, жисть поможет убедить-)
Ну вы же ей объяснили, что уводить чужие аккаунты, особенно аккаунты близких людей – это нехорошо, да? В смысле, именно объяснили, не используя ремень?
А то я будто фильм с открытой концовкой досмотрел.
Я думаю, что в Вашем случае сначала необходимо подумать, а нужно ли оно ей?
Возможно интерес угас не из-за вашего стиля преподавания, а просто от того, что сейчас её волнуют более интересные вещи, раз уж Вы заговорили о парне)
В конце концов, главное — чтоб человек, особенно ребёнок, был счастлив!
harward cs50 посмотрите.
Очень дельная вещь как для начинающих, так и для не совсем начинающих, так и для тех кто хочет понимать о чем речь пусть и не собирается идти в эту профессию.

Спасибо! Обязательно гляну на досуге.
Я вот неделю как помогаю жене проходить FreeCodeCamp, отличная штука, всем советую. У нее есть шанс пройти React, посмотрим.
НЛО прилетело и опубликовало эту надпись здесь
Опаньки, а можно поподробнее и желательно со ссылкой на источник? Мне везде термины «строгая типизация» и «сильная типизация» попадались как синонимы, которые оба соответствуют англоязычному «strong typing».
НЛО прилетело и опубликовало эту надпись здесь
Подождите. Вы говорите, что сильная и строгая типизация — это разные вещи, но не говорите, в чём разница. Более того, где почитать — тоже не говорите. Это получается не общепризнанный факт, а частное мнение — ваше и тех, с кем вы это обсуждали (но мы даже не знаем, с кем). Я знаю, что вы очень уважаемый товарищ, но это же как-то… несерьёзно?

Ну с русскими терминами в этой области швах, я согласна. Но вы говорите, что англоязычных аналогов вовсе нет? Если вы считаете, что термины «строгая» и «сильная типизация» вообще некорректно употреблять, то к чему ваш изначальный тезис?

А может заходите в наш чатик в телеграме про языки и компиляторы, там много уважаемых товарищей и можно подискутировать.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, теперь понятнее. Безопасность — это видимо то же самое, что корректность (soundness)? Тут рядышком ещё полнота (completeness), видимо предельный случай для выразительности.

Пирс, кстати, есть и на русском, и там действительно ничего нет про сильную и строгую типизацию. Но эти термины вполне устоялись, если не в контексте систем типов (в более научном смысле, как у Пирса), то по крайней мере на «бытовом» уровне, когда нужно охарактеризовать языки или сравнить. Поэтому я до сих пор не понимаю, почему вы именно их предлагаете для соответствующих англоязычных терминов. Я нигде не встречала, чтобы их так использовали, и кажется, что понимают под этим уже совсем другое. Если форсить именно эти смыслы, то получится ещё больше путаницы.
НЛО прилетело и опубликовало эту надпись здесь
Окей, как вы называете безопасность

У Пирса безопасность употребляется как синоним soundness. Про инварианты лучше утром подумаю, а то ещё не засну :D

Раз уж мы книжками кидаемся, то вот довольно современный и всеобъемлющий талмуд — Michael Scott, Programming Language Pragmatics. Там легко можно найти про strong typing, причём в том же примерно смысле, в каком википедия пишет, и в каком все привыкли понимать. Это с такой добротной инженерной (или практической) точки зрения на языки, без углубления в теории типов. Так что этот термин вполне употребляется и его перевод на русский уже занят.
НЛО прилетело и опубликовало эту надпись здесь
Строгая. Сильная и строгая типизация — немного разные вещи.

Сильная и строгая — это действительно одно и то же, strong typing. Это, условно говоря, когда нет неявных кастов (а слабая, с-но, когда таковые есть). Например, в js слабая динамическая типизация, т.к. 1+'1', а в ts — слабая статическая типизация, т.к. тот же терм валиден, хоть и имеет конкретный тип. В c# — сильная статическая, python — сильная динамическая, с++ — слабая статическая, хаскель — очевидно сильная статическая, лиспы — в основном сильная динамическая (зависит от диалекта офк, scheme-derived обычно сильные динамические, всякое интерпретируемое говнецо — бывает слабое динамическое) и т.д…
Формлаьно строгим этот термин не является, конечно же.

НЛО прилетело и опубликовало эту надпись здесь
Не только в кастах дело: в C например можно всё сломать, обратившись к обычному числу как к указателю. Или указатель на одну структуру скастить к указателю на другую, совсем несовместимую, и система типов это не проверяет. И в рантайме тоже никто это не проверяет — получайте UB.
НЛО прилетело и опубликовало эту надпись здесь
Э, ну. В любом языке с сабтайпингом у вас есть неявные апкасты, при этом, очевидно, некоторые из этих языков вполне себе safe.

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


Я там выше писал, что надо как-то разделять safety (которое progress и preservation) и expressive power (которых тоже минимум джве).

Это, конечно, тоже разные вещи, но обычно под сильной/слабой типизацией все же по умолчанию понимают штуку вообще к статическим типам не относящуюся, иначе, согласитесь, бессмысленно было бы рассуждать о том, сильная или слабая типизация в динамических языках. Она там с точки зрения статики везде, очевидно, одинаковая (т.е. никакая).
А в случае safety и expressive power,, кажется, так и говорят — "типобезопасность" и "выразительность/мощность".
И, опять же, не думаю что можно формально строго определить понятие выразительности.


Это как раз ровно то, что safety должно предотвращать

Ну вот если у вас есть такой аналог safety в рантайме (то есть чекер терм пропустит, но потом рантайм ругнется, что вы яблоки пытаетесь использовать вместо жирафов), то это, условно говоря, и есть strong typing. Сишка вам не ругнется — с ее точки зрения все будет валидно.

НЛО прилетело и опубликовало эту надпись здесь
Прочитал «Как научиться программировать свою девушку». Задумался.
Ужас. Просто дайте ей закодить мультик-игру на Scratch. Пусть она поймёт, что программирование — это ввод набора команд, заставляющий что-то меняться на экране. Пусть нарисует квадратик с помощью цикла. Пока что ваш план состоит в том чтобы научить ее плавать, бросив в чан с кипящей кислотой.
В статье верно отмечено:
Думаю, что поспособствовало этому изучение в школе QBasic и Pascal, простых, понятных и дающих базовые понимания.
Ok! ИМХО на стандартном Паскале и надо учить. И брать задачи на 10 мин.:
Свою первую программу (не считая того, что мы писали на уроках) я написал для младшего брата, когда тот стал учить таблицу умножения: ввод диапазона чисел, случайный вывод двух из них брату с предложением ввести их произведение, проверка и так далее по кругу.

Еще: поиск счастливых билетов, 8 ферзей, жизнь, простые методы сортировки и т.д. Описание ЯП Паскаль (Вирта) можно прочесть за день, понять и попробовать за 1-4 недели.
ИМХО цель будет достигнута:
Ты всё равно постоянно говоришь о программировании, а так я хоть понимать тебя буду.
Потом могут возникнуть другие цели — тогда и ЯП можно сменить, и технологии изучить.

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

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

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

И Ханойские башни не интересны? и преобразование арифметических выражений?
На каких задачах предлагаете изучать рекурсию?
На каких задачах предлагаете изучать рекурсию?

На математических. Уравнения, неподвижные точки, вот это вот все.

Девушка хочет понять программирование, а не математику и физику. Если нет достаточных мат. знаний основ — будет доп. трудность, ненаглядность. Классики, вроде Вирта и др., успешно применяли наглядных ферзей, башни и т.д. Зачем изобретать велосипед?
НЛО прилетело и опубликовало эту надпись здесь
>Девушка хочет понять программирование, а не математику
Ложное противопоставление.

Хотите сказать, что программирование=математика?
А здесь, нпр., на вопрос «Роль математики для информатики в школе высокая?» почти 36% ответили «нет».
Можно привести и другие примеры, где математику и CS противопоставляют. ИМХО математика и CS пересекаются, но не совпадают полностью.
Школьная информатика — увы и ах. С математикой она перескекается только в заданиях типа закодировать длиннющую бессмыссленную формулу со скобками на языке Pascal ABC. Остальное — знакомство с Windows и Office.
ИМХО зависит и от программы и от учителя. Нпр., в книге С.Окулов, Программирование в алгоритмах, которая предназначена для школьников, есть рядовые задачи, а есть олимпмадные. И много разной математики: арифметика многорозрядных целых, комбинаторика, теория графов, вычислительная геометрия и т.д.
НЛО прилетело и опубликовало эту надпись здесь
CS — подмножество математики.
Кое-что из CS не входит в математику. Нпр., файл не мат. объект, человеческий фактор в GUI, эвристические алгоритмы и т.д.
в школе что на уроках математики, что на уроках информатики преподают какую-то ерунду.
Пока в мире не придумали ничего лучше.
НЛО прилетело и опубликовало эту надпись здесь
Я бы сказал, что это и в CS не входит.
Файл во многих ЯП, ЯП часть CS. Уже в начале 90х гг. (а м.б. и раньше) вводная книга Inside Macintosh начиналась описанием метафоры рабочего стола, где подчеркивалась большая роль учета человеческого фактора для удачной разработки GUI. И нашумевшая книга «Софт — отстой! И что с этим делать?» во многом посвящена этому фактору. Еще можно посмотреть статью Human–computer interaction (HCI) и т.д. Что касается эвристических алгоритмов — тут в первую очередь антиматематичный бездоказательный подход, умышленно возведенный в статус принципа.
PS Разница «CS vs математика» в первую очередь в целях, что отражает известная шутка:
Программист решает задачи, которые нужно решить (для практики), а математик решает задачи, которые решаются (и не всегда нужны для практики)
Девушка хочет понять программирование, а не математику и физику.

А в программировании все то же самое, рекурсивная функция — это неподвижная точка.


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

И никакого другого понимания в природе не существует.
Существуют более простые для девушек формулировки — см. Вики с картинками:
Рекурсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.

(Картинки помогут понять это определение!)

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

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

Так вы и дали определение как в математике, но только плохое. Зачем оно нужно? Зачем тогда в принципе объяснять, что такое рекурсия, если, еще раз, это не является вне теории каким-то отдельным концептом и рекурсивные вызовы работают совершенно аналогично нерекурсивным? Объяснили про обычные вызовы => рекурсия изучена.

Так вы и дали определение как в математике, но только плохое.
Не я дал, а Википедия. Но и она сама определения не дает, а только пересказывает «авторитетные источники». Что оно плохое -эксперты вики так похоже не считают. ИМХО оно достаточное с рекурсивными картинками, и больше на старте не нужно. И дело не в том, как работают рекурсивные вызовы, а дело в работе мозгов ученика (в его психологии), который узнает о важном подходе решения ряда типовых задач через рекурсию. ИМХО в вики понимание этого подхода сделано максимально простым — для старта это самое главное.
Не я дал, а Википедия.

Именно вы выбрали определение из википедии, а не какое-то другое.


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

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

Ничего дополнительно вам изучать не требуется.
Почему тогда большинство учебников особо разбирают рекурсию?
Почему тогда большинство учебников особо разбирают рекурсию?

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

Все преподы мира сговорились особо уделять внимание рекурсии? — похоже на конспирологию ;)
Все преподы мира сговорились

Именно так и выглядит каргокульт, ага.

НЛО прилетело и опубликовало эту надпись здесь

То, что без рекурсии цикл написать не получится :)

Как вы посчитали "большинство"?

У меня сложилось такое впечатление. А у Вас?

Я не считал. Надо еще определиться, что мы считаем учебником. Они ведь разные бывают. Есть scratch и javascript для детей, есть SICP и алгоритмы Кормена, а еще есть куча онлайн площадок для обучения. Что насчет самодельных методичек, которые делают преподаватели учебных заведений ради своих целей?

что мы считаем учебником

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

Мне стало любопытно и я нашел "Методическое письмо об особенностях преподавания информатики и ИКТ в 2017/2018 учебном году".
Учебники из списка рекомендаций полистать сейчас не получится, но в самом письме есть абзац:


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

Так что ответ на вопрос "Почему тогда большинство учебников особо разбирают рекурсию?" будет
"потому что это будет на ЕГЭ".

НЛО прилетело и опубликовало эту надпись здесь
Привели книжку для мехмата МГУ, когда у нас здесь разговор про легкий старт на уровне начальной школы. Если всех начинать учить с уровня мехмата, то школу нужно отменить и набирать на мехмат из дет.сада в возрасте шести лет.
НЛО прилетело и опубликовало эту надпись здесь
каких-то априорных знаний математики там особо не нужно (кроме
Нужна прежде всего мат.культура определенного уровня, понимание «языка математики». Согласен, что ученик матшколы осилит эту книгу, т.к. ему понятнее 1 формула, вместо десятков обычных слов. А вот выпускник обычной школы с интересами только в гуманитарных областях через год после окончания на вопрос чему равна длина окружности ответит «пи эр квадрат»…
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Так Nat и сам неподвижная точка так-то (как раз наибольшая в случае хаскеля, т.к. включает бесконечность) :)

Ну если это веб, JS, вот это все — то на задаче «напечатать объект непонятно какой глубины» или на задаче «выкинуть из объекта непонятно какой глубины все вхождения свойства prop1, потому что API, который мы юзаем, с этим свойством не пропускает». Или, например, реализовать функцию lodash.set — она клевая и полезная. Или вот напечатать генеалогическое древо. Что-нибудь, что имеет хотя бы намек на практический результат.
Средний человек смотрит на ферзей и думает «зачем это вообще надо? да и шахматы я не люблю, а если бы любил, там такая ситуация никогда бы и не встретилась». Смотрит на ханойские башни и думает «а зачем они перекладывают только по одному кольцу, не проще просто снять все кольца, положить на землю и надеть их на ту башню, на которой они должны быть?»
Я когда обучал студентов (и особенно школьников) сортировкам, регулярно сталкивался с непониманием того, почему за один раз можно брать лишь два элемента массива и делать лишь одно сравнение. Ограничения должны как-то объясняться, иначе здравомыслящий человек будет чувствовать, что играет в какую-то неинтересную игру с искусственными правилами.
иначе здравомыслящий человек будет чувствовать, что играет в какую-то неинтересную игру с искусственными правилами.
ИМХО про все игры можно сказать, что у них искусственные правила. Не только про развлекательные, но и, нпр., про биржевую игру. Так, нпр., Генри Форд возмущается в своей книге курсами валют: что бы вы сказали, если бы сегодняшний метр был равен 0.98 метра вчерашнего?

И выше Вы сказали:
Поначалу писать надо игры


Много людей играют в очень простые игры типа пасьянса FreeCell не спрашивая:
«зачем это вообще надо?» Конечно, м.б. начинающему хотелось бы написать сложную и более интересную игру, но надо выбирать посильные задачи.
почему за один раз можно брать лишь два элемента массива и делать лишь одно сравнение
Пусть попробует взять больше элементов зараз, сделать больше сравнений, доказать, что работает правильно и быстрее :)
Ну, когда я говорил про игры, я думал про игру типа «угадай число, которое загадал компьютер».
Пусть попробует взять больше элементов зараз, сделать больше сравнений, доказать, что работает правильно и быстрее :)


Я в этом случае притаскиваю на лекцию пару десятков карточек с числами и предлагаю их отсортировать, комментируя каждый свой шаг максимально подробно. И человек понимает, что тоже действует по некоторому алгоритму, обычно — сортирует вставками.
p.s. принимать экзамены по карточкам было особенно прекрасно. Садишь студента и говоришь ему — ты quicksort, сортируй вот эту колоду карт и рассказывай мне, как ты это делаешь.
Ооо, я давным-давно школьникам так объясняла сортировки: одного выбирали в качестве «процессора» и он сортировал остальных по росту.
И это отличный метод с гарантией, что никто не уснет :)
Прекрасный метод — порекомендую знакомым преподавателям!
НЛО прилетело и опубликовало эту надпись здесь
Все эти ферзи и сортировки — это из области абстрактного искусства с нулевой прагматичностью для человека извне.
ИМХО никакой абстрактности — все предельно конкретно и прагматично. Счастсливые билеты и ферзи — игры-головоломки; Жизнь — игра. Сортировка расходов за месяц полезна для домашней бухгалтерии, а сортировка названий полезна для сборника кулинарных рецептов.
Поначалу писать надо игры

Я и предлагаю конкретные игры, но на 10 мин., а не на несколько лет.
вирусы

ИМХО слишком специфично. И какая из них прагматика? :)
Да, очень верное замечание. Своя собственная страничка на домене с летящим снегом замотивирует продолжат гораздо сильнее, чем ферзи на доске :) Я писал разные анкеты на первых порах, в духе опросников интроверсия / экстраверсия.

Во! Анкеты! Тамагочи! Летящий снег!

Ждём статью «Как научить программировать своего кота, если ты не Куклачев, но кот хочет жрать»
НЛО прилетело и опубликовало эту надпись здесь

Попробуйте с приложений под мобильный. Врядли для рецептов девушка будет таскать ноут на кухню. На первом этапе можно делать без бэка. Порисуйте вместе экраны, переходы между экранами, составьте т.з. того что она хотела бы увидеть. А дальше по желанию или на нативном(kotlin, java / swift) или нет(python(kivy), react-native, dart(flutter)). Список рецептов можно усложнять постепенно и на каждом этапе видеть результат.

На Go идеально обучать основам. Он же квинтесенция C и Pascal, которые в мою молодость были основой для воспитания поросли. Можно и примитивные типы, и примитивные структуры, и базовые алгоритмы быстро попробовать, и посмотреть, как они в ассемблерный код превращаются.

— Я готова! Готова учиться программированию! Давай!

Девушка, похоже уже освоила Inversion of control :)
ИМХО вы вы хотите обучить свою девушку не программированию, а использованию технологий. Мой преподаватель всегда говорил: «Не учите языки — учите алгоритмы», и я думаю он прав, ведь любое приложение это набор алгоритмов.
На мой взгляд, если ваш подопечный совсем далек от мира программирования, начать стоит с самых базовых вещей: из чего строится любая программа (неважно на чем она написана), затем методы взаимодействия между базовыми кирпичиками программы, а уже затем плавно переходить к делению на фронтэнд и бэкэнд с попутным объяснением почему в одном случае мы имеем дело с одним стеком технологий, а в другом с другим. Приведите ее на кухню и предложите написать формальный алгоритм приготовления еды.
По моему мнению вы даете ей растущее дерево и кучу швейцарских ножей, говоря: «дорогая, сегодня мы из этого дерева и вон той кучи инструментов будем делать звездолет», не показывая в сущности что значит и для чего применяется каждый из ножей.
Вы правы насчёт алгоритмирования, но кто мешает обучать этому во время разработки бэкенда?
Я писал эту статью для коллег, а не для учеников, и поэтому использовать подобную декомпозицию задачи, ведь иначе кому на хабре было бы интересно это читать, однако в процессе обучения, конечно, необходимо разбивать описанные мною задачи на более мелкие, о чём я и планирую рассказать в следующих статьях.
Без отрыва от практики, так сказать? Да, никто не мешает. Но понять, допустим, цикл типа for для простого перебора значений БД будет немного сложновато (если совсем далек человек от программирования, как я уже говорил), а там дальше еще foreach есть.
Я клоню к тому, что начать стоит с самых-самых азов. Никто не мешает вам объяснять принципы алгоритмирования сразу показывая как это применяется, но на мой взгляд получится каша в голове, так как новые знания должны накладываться на базу, которая будет принята, осознана и переварена. Но в любом случае буду с интересом следить за вашими успехами.
Да, пример с for и foreach очень даже удачен. Конкретно циклы я, пожалуй, не рассматривал бы с ней в рамках PL\pgSQL, а отложил бы до этапа знакомства с Golang.
Думаю, что общую для разных этапов информацию, правильней будет давать на этапе либо требующем этой информации, либо являющимся наиболее удобным.
В общем, где-то, думаю, придётся импровизировать. И пусть наши успехи и ошибки помогут другим!

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


1) Можно считать за придирку, но ваша статья местами (в том числе по заголовку) выглядит так, словно это уже готовый и проверенный рецепт. Не надо так. Её будут открывать неискушённые люди, принимать за истину в последней инстанции, и пробовать. Вы в ответе за тот опыт, который они в конце концов получат.
2) Навскидку просуммируем то, что вы решили быстренько положить в ваше обучающее приложение:


  • Разработку бэкенда на Go
  • JavaScript + TypeScript (ну потому что учить только второму не выйдет)
  • РСУБД
  • Vue.JS
  • HTML, CSS

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


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


Ну, как обычно "критикуя — предлагай". Что-то и этого уже выше сказали:


1) Оптимально давать короткие задачки, которые дают быстрое обучение каким-то узким вещам и чувство удовлетворения студенту. Насчёт 15 минут — это вряд ли — но задачки на пару часов (то есть на вечер) — это хорошо. Хотя бы потому что даёт человеку ощущение того, что он чему-то научился и чувство пройденного этапа. Это важнее, чем кажется.
2) Не надо мешать в кучу огромное количество разных технологий. Мой опыт говорит о том, что обучать таки лучше с вёрстки, но если вам так не хочется — можно начинать с консольных программ или со сред, в которых можно накидать формочки с кнопочками. Или с микроэлектроники — мигать диодиками и все дела. И только когда какой-то этап более-менее уложится в голове — можно идти дальше. Иначе в голове будет каша из js/go/sql/etc.
3) Обучать тому, чего не знаешь — хорошая идея только на первый взгляд. По факту, наверняка окажется, что ты чему-то научил неправильно, или сидишь тупишь над простыми вещами часами. Что будет крайне негативным опытом для студента. Поэтому лучше обучать тому, что знаешь. Как ни странно, это очень полезно, поскольку даёт структурировать в голове свой опыт и узнать много всего, на что раньше не хватало времени или желания.


Кстати, даже ваше книгу рецептов на самом деле можно писать итеративно и с промежуточными результатами. Например:
1) Научиться HTML. Пускай напишет свою веб страничку с рецептами.
2) Научиться JS. Пускай сделает там менюшки, свистелки и перделки.
3) Научиться JS фреймворку. Пускай переделает на него.
4) Научиться какому-нибудь ЯП. Пускай хранит свои рецепты в JSON файликах и показывает. Пускай ЯП генерит странички полностью (никаких API).
5) Научиться СУБД. Пускай переложит данные из JSON файликов в таблички.
6) Сделать API и довести до "взрослого" приложения.


В результате получаем то же самое, но по возрастающей сложности и с промежуточными результатами.


З.Ы. не знаю, откуда взялось мнение о том, что, если человек не будет обучаться языку со статической типизацией в первую очередь, то произойдёт что-то непоправимое. Знаю много людей, которым обучение PHP никак не помешало потом писать на C или Java. В обучении есть одна основная задача — чтобы человек что-то написал, и ему понравилось. Если это произошло, то дальше всё будет хорошо. Если нет, то нет никакой разницы, чему именно вы его не научите.

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

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

Так что спасибо Вам и в Вашем лице всем, кто не просто не согласился, но и, «критикуя — предложил». Вы помоги!

У меня тоже хватает (успешного) опыта в обучении программированию, и я предлагаю максимально серьёзно отнестись к тому, что написали sotnikdv и jehy. Ключевые моменты — обучение потребует около года, много (4-5) часов почти каждый день, промежуточные результаты очень важны (так что задачи надо подбирать так, чтобы можно было увидеть результат хотя бы раз в пару дней) и для этого нужна очень сильная мотивация (нацеленность на получение профессии с последующей работой).


Что касается Вашего случая, то, на мой взгляд, Вы радостно бросились решать не ту проблему. Результат такого подхода, обычно, не радует никого. Я думаю, что обучаться нужно не Вашей девушке, а Вам. И обучаться вовсе не программированию, а умению излагать волнующие Вас рабочие проблемы дома своей девушке на человеческом языке, а не программистском. Это навык из серии "если ты не можешь объяснить сложную проблему пятилетнему ребёнку простыми словами — значит ты эту проблему и сам толком не понимаешь". Описанная в статье проблема — девушка Вас не понимает. Значит, учитесь объяснять. Когда (и если) проблема девушки преобразуется в "хочу нормально зарабатывать программированием" — вот тогда начинайте учить её программированию.


P.S. Кстати говоря, выбор Go я лично поддерживаю. Частично потому, что язык действительно простой. Частично потому, что бэкенду сейчас учить проще — фронт слишком динамично меняется, за ним тяжело угнаться, а новичку не помешает иметь в начале карьеры относительно стабильный период в несколько лет, когда полученные им знания и навыки сохраняют актуальность. Более того, я часто выкручивался из проблемы подбора задач, результат которых можно увидеть сразу же, через юнит-тесты — их в Go очень просто писать, и они позволяют относительно наглядно увидеть результат работы почти каждой, только что написанной, функции. Этого оказалось вполне достаточно, чтобы давать обратную связь "вау, оно работает!", необходимую чтобы часто получать позитивное подкрепление "задачка готова/у меня получилось" (ну и плюс это сформировало очень положительное отношение к написанию тестов в принципе, с пониманием громадной пользы, которую они дают, и которого так не хватает многим программистам).

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

Один из лучших советов в обсуждении! Действительно, если научиться объяснять суть своей работы человеческим языком, то:
  • Девушка начнёт понимать чем вы занимаетесь и что вас тревожит, а вам не придётся отшучиваться про пианиста в борделе.
  • Вы сможете объяснить коллегам, ПОЧЕМУ задачу лучше решить так, а не иначе.
  • Вы сможете объяснить начальству почему некоторые задачи решаются легко, а другие ставят команду в тупик, хотя вроде бы речь о схожих проблемах.
  • Вы сможете парой фраз понятно объяснить шефу чем вы вообще занимаетесь и какая от вас польза фирме. Если вместо обычного программистского «абра-кадабра, мумба-юмба, НАДО сдвинуть сроки релиза» ваш начальник услышит понятное изложение вставших перед командой проблем, то он сможет и захочет вам помочь. Менеджеры любят чувство понимания, причастности и контроля.
  • После всего вышеперечисленного, из вас может получиться хороший тимлид и архитектор, а значит меньше работы на дом, больше времени для девушки, да и денег тоже больше.
  • Очень, очень часто, объясняя кому-то нынешнюю архитектуру, сам замечаешь косяки и возможности улучшения, а вовремя заданный посторонним человеком вопрос «а вот об этом ты подумал?» может быть решающим для успеха проекта.
  • Работа программиста это не 100% написание кода. Например, когда мне нужно было подготовить презентацию для инвесторов, я сперва объяснил что же делает наша программа своей жене. Нарисовал на доске важнейшие юз-кейзы в виде картинок, и тут оказалось, что рисунки-то у меня убогие, с актёрами в стиле палка-палка-огуречик. Жена у меня художник, подсказала как парой штрихов придать человечкам эмоции и обозначить действие. Заодно научился чему-то.

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

  • Берём простейшую (для программиста) задачу, например написание Тетриса или Сапёра, и решаем её целиком во фронтэнде, фокусируясь на JavaScript, переменных, вложенных циклах и прочих элементарных конструкциях языка.
  • Теперь решаем её ещё раз, но обращая внимание на внешний вид. Разбираем зачем нужен CSS и хорошо структурированный HTML. Вполне возможно, что вариант вашей девушки будет выгдядеть красивей и изящней, чем у опытного фул-стек-девелопера.
  • Переписываем логику заново, теперь с использованием вашего любимого фрэймворка. После этого не только девушка, но и вы сами, сможете объяснить посторонним людям зачем они нужны, эти фрэймворки, где кончается мода, и начинается реальная польза. /* Осторожно! Не исключено, что придя на следующий день в офис, вы решите что нынешний код безнадёжно перегружен ненужными свистелками, и перепишете его на vanilla-js */
  • Если задор не иссяк, можно добавить back-end, например для хранения таблицы рекордов. Причём не напирать на конкретную реализацию БД, а рассмотреть обмен данными между клиентом и сервером, защиту от читерства и потенциальные методы взлома вашего сервера. Проводя аналогию с электирчеством, в наше время не так уж важно знать от какого генератора берётся в розетке ток, а вот не трогать руками оголённые провода учат даже детей. Или, например, я никогда не задавался вопросом сколько клапанов в двигателе моей машины, но могу показать где находятся подушки безопасности и уверен, что они прикрывают всех пассажиров.
  • Главное помните, что для большинства людей программирование это не самоцель, а всего-лишь инструмент для решения какой-то другой проблемы. Умение понять и точно описать суть этой проблемы это обычно уже больше половины её решения.
Не могу пройти мимо такого большого комментария, но, позвольте, отвечу максимально коротко, так как подробно я уже сегодня много раз отвечал авторам других похожих комментариев.

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

Что касается плана обучения, он расходится с моим, но из него есть что почерпнуть!
Спасибо!
НЛО прилетело и опубликовало эту надпись здесь
Почему вы считаете, что начальнику понимать в программировании важнее, чем программисту — в презентациях для инвесторов?
НЛО прилетело и опубликовало эту надпись здесь
А презентации — это всё же совершенно отдельный скилл.

Да не особо отдельный, ведь те презентации на которых зовут программистов, по сути должны и так лежать в документации к любому проекту сложнее «Hello World». В нашем случае было так: фирму продавали, целиком, со зданиями, сотрудниками, товарами на складах, базой клиентов и самописным софтом. Собственно переговоры вело начальство, технарей туда не приглашали (и это правильно), но покупателям кроме всего прочего нужно было показать и состояние софта. И вот тут неплохо когда кто-то в команде может за 40 минут (на больше всё равно не хватит внимания) показать умным, но далёким от программирования людям:
  • Зачем нам нужен софт
  • Какие бизнес-процессы он поддерживает
  • Почему мы пишем некоторые программы сами, а не покупаем готовое
  • Кто на фирме пользуется нашими программами
  • Какую пользу бизнесу принесли в прошлом году вон те 15 бородатых людей в свитерах с оленями
  • Какие новые возможности должен дать софт в следующие 12 месяцев (тем самым пресекая в зародыше мысли объявить IT чистым центром затрат, с последующим соблазном «соптимизировать»)
  • Почему в XXI веке каждая фирма это IT-фирма, даже если мы торгуем одеждой


Это существенно лучше, чем дать инвестором поймать у кофеварки джуниора, который скажет что у нас тонны прошлогоднего легаси-говнокода которые он никто! не понимает, и вобще, давно пора всё выкинуть и переписать заново на вышедшем на прошлой неделе крутом фрэймворке.

Одним словом старая басня про строительство собора на новый лад.

PS: Если потом в глазах нового начальства ваше лицо будет ассоциироваться с чародеями из IT, решающими все проблемы предприятия, это тоже неплохо, даже если вы решили сделать чисто техническую карьеру.
НЛО прилетело и опубликовало эту надпись здесь
А что представлять, и у нас так было. Есть ещё в продакшене код написанный в 2000-x директором фирмы. Когда-то все сидели в одной комнате, а через десять лет непрерывного роста у нас несколько сотен сотрудников. Умение объяснить чем занимается твой отдел важно хотя-бы для координации процессов с другими командами.

А вот когда менеджер среднего звена со словами «давно не брал я в руки шашку» запускает SQL Server Management Studio, опытные сотрудники начинают нервничать, подозревая что он сейчас опять на пару дней углубится в решение интересной задачи, забыв при этом про свои прямые обязанности. Начиная с определённого размера фирмы, вовлечение топов в микроменеджмент конкретного куска кода это опасный знак.
Спасибо за мнение.

Вы — личность в Go-сообществе известная, поэтому в содержании секции «P.S.» я не сомневался!

Что же касается основной мысли Вашего комментария, то я, как уже отписал и остальным участникам дискуссии, согласен с этой позицией, но здесь нужно учитывать контекст.
Конкретно в нашем с моей девушкой случае дело действительно не в моём неумении разговаривать на другие темы или переводить с программистского на русский. Здесь дело просто в том, что мне повезло жить с человеком, который хочет понимать меня ещё лучше. Проще говоря, то чем мы планируем заняться, — это не попытка решить проблему плохой коммуникации. Отнюдь!
У нас нет подобных проблем!

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

Цитата, судя по всему, восходит к Ричарду Фейнману, а он объяснять умел. В том числе и квантовую механику. Не для пятилетних, конечно, но на уровне 8-го класса средней школы. А вот его рассказ про огонь поймут наверное и дошкольники.
НЛО прилетело и опубликовало эту надпись здесь
А чего с квантмехом-то, понятная вещь, особенно для ребёнка. Вся его суть в том, что неизвестно, как обстоят дела в мире с точностью до самых мельчайших деталей, и всегда возможны мелкие отступления от кажущейся картины. А дальше уже, по мере общего развития и знакомства с другими теориями, из этого утверждения можно вывести хоть туннельный эффект, хоть отрицательные квантовые вероятности. А в отношении теорем – это ж не проблема, как таковая, а просто математический формализм. Хотя с Гёделем тоже всё можно легко приблизительно объяснить.
НЛО прилетело и опубликовало эту надпись здесь
Все вопросы, которые Вы привели, касаются не квантовой теории самой по себе, а её несовместимости с классической механикой, которой уже забита голова вопрошающего. Думаю, что для ребёнка дальнодействие никакой концептуальной проблемы не составляет. И даже, не побоюсь этих слов, нарушение принципа причинности тоже никакой проблемы не составляет.

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

Для меня лично с детства классическая картина с её дурными бесконечностями и демоном Лапласа была гораздо более непонятна.
НЛО прилетело и опубликовало эту надпись здесь
> Я готов поспорить, что если вы возьмёте сто пятилеток и объясните им вот про мельчайшие детали, то все сто из них, если попросить, формализуют и выкристаллизуют это в тезис о том, что мы измеряем плохо, а не в то, что у частиц вообще строго определённых координат в соответствующих пространствах нет.

Да почему ж? Этот вопрос можно специально разъяснить. Вот стакан молока, которое кажется неизменным, однако в действительности в нём происходит бурление микробов, отчего оно вскоре скисает. Также и кванты со сверхтекучестью. Бурление незаметно глазом.

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

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

Это все отлично но такие объяснения в 99% случаев приводят к неверному пониманию в тех или иных моментах. Проблема аналогий в том, что они всегда неточны.


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

А вы уверены что волновые функции существуют? Это что такое? реальный физический объект такой? А уверены что если они существуют, то коллапс существует? Это что такое? реальный физический процесс такой?

Любое объяснение приводит к неверному пониманию в тех или иных моментах, в том числе и самые продвинутые на сей день математические формулы. Действительность вообще отличается от наших представлений о ней. Поэтому тут нет никакой беды.
Любое объяснение приводит к неверному пониманию в тех или иных моментах, в том числе и самые продвинутые на сей день математические формулы.

Конечно, проблема только в том что корректное объяснение лишь может привести к неправильному пониманию, а некорректное — приведет совершенно точно. Потому что является де-факто ложью. Да, именно так — все эти рассуждения о "стаканах молока" просто прямая ложь де-факто.
Кванты не ведут себя как микробы в молоке, понимаете? Ни в каком смысле не ведут.

Любое объяснение – прямая ложь де-факто с точки зрения понимания, к которому мы придём через миллион лет. Есть разные уровни понимания действительности, мы в любом случае находимся на низших из них. Духи, микробы или кванты – это всё равно только модели, служащие для грубо приближённого описания действительности. Нет никакой принципиальной разницы. Разум человека развивается сто тысяч лет, а впереди миллиарды.
Любое объяснение – прямая ложь де-факто с точки зрения понимания, к которому мы придём через миллион лет.

Конечно, нет.

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

С другой стороны, если люди придумывают такую философскую ахинею, как копенгагенская интерпретация, то это показывает, что знание уравнения Шрёдингера не сильно приближает их к пониманию реальности по сравнению с верящими в духов и в микробов в молоке.
Разумеется, никаких волновых функций реально не существует
С другой стороны, если люди придумывают такую философскую ахинею, как копенгагенская интерпретация, то это показывает, что знание уравнения Шрёдингера не сильно приближает их к пониманию реальности по сравнению с верящими в духов и в микробов в молоке.

Ага. Тогда что вообще объясняют такие объяснения?

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

Вот ползает червяк. Он объясняет себе и своим деткам, что где темнее, там более влажно. В абсолютном смысле это неверно, но для его повседневного опыта обычно работает. Так же и волновая функция для человека.
Дают в удобной для употребления форме эмпирические знания, по каким сценариям обычно происходят события вокруг нас.

Но то, что кванты ведут себя как микробы в стакане молока — это не знание. Это нонсенс.

Для практических целей пятилетнего ребёнка это вполне достоверное знание.

Это не знание, это чушь из разряда "детей в капусте находят".

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А это уже детали языка, которым вы пользуетесь. Что там, что там — полный детерминизм законов эволюции системы.

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

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

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

Любезный автор, проверьте серьезность намерений своей половины, а заодно разложите матчасть, вручив ей Таненбаума. Вот это начало начал, вот это путь ниндзя. Что за кодинг, когда не знаешь размер байта и архитектуру комплюхтера. (свой опыт, жена геймдева, ныне PM)
Боюсь, что подобный подход справедлив не для всех. Для кого-то это будет вызовом в хорошем смысле слова, а кто-то может посчитать это за попытку отделаться.
Мы давно вместе, и зная, свою девушку, могу сказать, что Таненбаум её, скорее, отпугнёт.

Но ваш личный опыт опыт лишний раз говорит о том, что на этапе планирования обучения необходимо оценить личностные качества ученика. Спасибо!
НЛО прилетело и опубликовало эту надпись здесь
Учиться программированию довольно сложно, надеюсь девушку мотивирует не только «я смогу понимать что ты говоришь о работе», иначе далеко не уедешь. Но очень радует, что есть парни которые поддерживают своих девушек. Мой меня в свое время засмеял, когда узнал о моем решении, сказал не женское дело.
В итоге учу все сама, с Hexlet, даже решусь рекомендовать этот ресурс если у вас нет замечатльного парня-ментора :))
А поведайте, пожалуйста, какое у вашей девушки образование? Или она в процессе? Т.е. насколько она далека от IT вообще.

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

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

Можно воспитать, а можно и не воспитать. А можно и не воспитывать, смотря как с преподами повезёт.

Я всё к тому, что полученное образование о стиле мышления не говорит.
НЛО прилетело и опубликовало эту надпись здесь
Девушка по специальности — инженер-строитель. Образование, соответственно, — высшее законченное.
Но я, пожалуй, соглашусь с предыдущими ораторами в том, что в общем-то это не имеет значения.

На мой взгляд, разработка ПО и программирование, как его аспект, — это слишком обширное поле деятельности. Настолько обширное, что так сходу и не скажешь, где в хорошем программисте заканчивается технарь и начинается гуманитарий.
Для меня лично программирование — это мир чистых ветвлений и рекурсий, а вот эта вся фигня, которая упоминается в статье — издержки производства, которые необходимо знать, чтобы в данное время в данном месте извлекать из программирования деньги. На мой взгляд, описанное похоже на то, когда человека, который хочет научиться водить машину, станут для начала учить постановке седельного тягача к аппарели. И да, я бы тоже в таком случае выбрал Scratch! А моим первым языком был Лого.
Я в свое время показывал как писать простейшие вещи на pygame. Большой плюс такого подхода — сразу виден результат а не абстрактные цифры. Ну а дальше человек просто понял, что да разобраться можно но «не мое». Два вечера и тема закрыта.
1. Создание алгоритма на бумажке. Учим однопоточной логике.
2. Синтаксис. Переменные. Циклы. Булева логика.
3. Работа со стоками.
4. Ввод, вывод, работа с текстовыми файлами.

Все. Можно делать рецептурный справочник. Простенький интерфейс, дает сделать рецепт и сложить его в структурированном виде в простой файл, новый рецепт в новый файл. Он же и дает их прочитать.

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

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

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


Эксперимент показал, что и сейчас это хороший способ увлечь девушку программированием :-)
Вот такая штука, на яваскрипте: https://scf37.me/1.html

В свое время помог немного другу освоить программирование. Начинал он с hiasm (визуальное программирование). Когда он понял основы и стало тесно, то перешёл на c#. И далее самостоятельно начал развиваться.

Согласна, что Go лучший язык для начинающих + эти книги ru.hexlet.io/pages/recommended-books + netflix на английском с русскими субтитрами. Терпения вам обоим)
Спасибо большое!
Всё сугубо индивидуально. У меня было два ровно противоположных по результату опыта. В случае удачного опыта обучение основам реляционных баз данных проходило легко и непринужденно, всё схватывалось на лету, и ничего два раза повторять не приходилось. Медсестра, помощник стоматолога, в итоге сменила работу на web-разработчика. Второй случай проходил с жутким скрипом и кучей вопросов, по которым я понял, что тут совсем иной склад ума и продолжать бесполезно.
Как научить — накидать туториалов, книг и прочих ссылок и оставить разбираться самостоятельно, разрешив задавать вопросы в сложных случаях. Ибо learning by doing.
Возьмите меня в падаваны!
Серьезно, вы описали курс моей мечты практически. Я сильно заинтересован в результате. Уже могу говнокодить (на питоне) и когда-то писал свою хоумпагу.
А то курсов до фига — и по бэкенду, и по базам, и по верстке. А как оно всё вместе работает — хз.
Возьмите, а?
Если вы серьёзно, то давайте обсудим это в лс.
Но я не уверен, что это будет легко, ведь объяснять человеку что-то очно — это одно, а обучать удалённо — совсем другое.

Интересные рассуждения и вроде бы неплохой план, но…
Пока читал в голове созрела и твердо укрепилась мысль: Девушка уже забыла о том что она хотела учиться программированию, и когда парень (автор) начнет ей пытаться объяснять какие-то жутко запутанные и непонятные глупости она мило поморгает глазками, надует губки, покрутит пальчиком у виска, и быстренько сменит тему. Девушки они такие...

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

Я никогда не учил её программированию и безопасности. Но основные тезисы она легко воспроизводит.
Вроде «вордпресс — это завирусованное говно» или «консоль линукса — это лучшее, что есть в нашей жизни» или «nginx наше всё, apache — фанера для пенсионеров».
Тезис на тезис — и она легко заткнёт в разговоре начинающих эникеев.

А больше ничего и не требуется. Мне надо всего лишь вечерами иными изливать душу на определенную тему — про юзеров то, про заказчиков или просто про несовершенство технологий. И человек, который скажет тёплые слова про nginx — вы таких много рядом найдете? А у меня женушка завалит про proxy_pass парочку моих же слов — и вот уже на душе теплее.
Ну это какая-то китайская комната получается, а не девушка.
И ещё хочу написать вот о чём. Может, и не стоит учить ваших девушек, возможно, будущих жён, программированию и в целом, вашей теме?

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

Исходя из заголовка темы «как научить программировать свою девушку...» — может, и не стоит вообще учить-то, а? У нас же и так за рабочий день столько в голову залетает сложных алгоритмов… вы не пробовали программировать за полночь? а я пробовал — сложно уснуть потом, всё лезут решения в голову.

Если у меня напротив вечерами была бы девушка-айтишник, крыша бы моя уже давно сказала «превед» и поехала в сторону. Так как девушки такой нет — у нас нормальный «баланс сил». Мне она парит про «экстрасенсов», а я парю про «php7» — ну и всё норм.
— Папа, а существуют программисты, которые не писали за полночь?
— Не, сынок, это — фантастика…

Я согласен с Вами! Собственно, примерно с этого-то статью и начал: прихожу домой через 5-10 минут после окончания рабочего дня — аккурат когда приходит в голову какое-то решение.

Эти ситуации случаются не так часто, поэтому пока она ещё не может, как ваша жена, уткнуть молодого джуна ремаркой об условном позднем статическом связывании в условном php, но вот захотелось ей вникнуть — не отказывать же.
Я не был инициатором, честное слово)
Подарили бы ей сразу томик Кнута или там Кормана — и дело с концом. Типа, вот, милая, дочитаешь — приходи.
Безотказный — это удобно.
Хосспаде, почему именно такой стек для обучения с нуля? Мне кажется, куда логичнее было бы, после общей понятийной базы вроде основ архитектуры, базовых алгоритмов, вещей вроде Big O notation, подсунуть жене питона.

Django(Flask)/Postrgesql хватило бы начинающему за глаза. Во фронт вообще не стоит лезть, это работа отдельного специалиста.
Про «обучение программированию» посторонней девушки:
Заголовок спойлера
Заходит девyшка, спpашивает:

– Сколько y Вас стоит консyльтация специалиста?

– Пятьдесят pyблей. Плюс Вы оплачиваете компьютеpное вpемя — по шесть pyблей за каждые полчаса.

– Хоpошо, это меня yстpаивает.

Идёт к кассе, оплачивает консyльтацию и час pаботы с компьютеpом, пpоходит к машине, садится, я сажyсь pядом.

– Итак, что Вас интеpесyет?

– Я хочy наyчиться пpогpаммиpовать.

– -=8-o Что?? Вы хотите это сделать за час???

– А что — не хватит? Сколько мне доплатить?

Я некотоpое вpемя исхожy междометиями, потом немного yспокаиваюсь и пытаюсь объяснить, что люди yчатся этомy годы и что за один и даже за несколько pабочих дней этого сделать невозможно… Она пеpебивает меня:

– Hо мне надо наyчиться пpогpаммиpовать только для Internet.

– Да какая pазница?.. — начинаю, было, опять кипеть я, но вдpyг в мой pассyдок закpадываются кое-какие подозpения, и я начинаю допpос с пpистpастием, в пpоцессе котоpого выясняю, что имела в видy девyшка под “пpогpаммиpовать для интеpнет”: ПОЛЬЗОВАТЬСЯ ЭЛЕКТРОHHОЙ ПОЧТОЙ
НЛО прилетело и опубликовало эту надпись здесь

см. мой коммент выше)

Моя жена — медработник.
Я — админ БД.

за 21 год я не стал врачем, она — программером.

Но при этом вместе ловим рыбу.

Вопросы к автору:
Ваша девушка борщ вкусный готовит?
А Вы?
Она Вас грузит проблемами кулинарии/уборки/макияжа или своей работы?

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

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Дома Ubuntu и Android, поэтому что-то нативное под iOS писать нет возможности.

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

По мере обучения буду писать новые статьи, в которых постараюсь чуть конкретней описывать процесс и чуть шире описывать контекст — надеюсь, это избавит читателей от некоторого диссонанса, справедливо возникшего у многих после прочтения этой статьи.
Примерно схожим образом учил свою жену фронтенду. Ускоренный курс с места в карьер. Vue.JS вполне себе освоила и даже написала годный SPA (с моей помощью, конечно). Теперь меня же консультирует по некоторым вопросам фреймворка. Но как только встает вопрос о простейших фундаментальных вещах, таких как циклы и ветвления, начинает плавать. Наверно для женской натуры HTML/CSS и вообще визуальная составляющая понятнее и притягательнее абстрактности, потому и схватывается легче.

P.S. Javascritpt, имхо, не лучший выбор в качестве первого языка. Даже PHP, как по мне, гораздо понятнее для новичка и имеет меньше сюрпризов.
Наверно для женской натуры HTML/CSS и вообще визуальная составляющая понятнее и притягательнее абстрактности, потому и схватывается легче.

Не первый раз встречаю здесь в комментах что-то про женскую натуру и недоумеваю. Моя «женская натура» тяготеет к скриптам и консольным приложениям, и жестоко страдает от gui и тем более от web фронтенда. Может, это всё-таки не от пола зависит?
Многим людям свойственно делать необоснованные переходы от частного к общему. Конечно, дело не в «женской натуре», а в том, что у кого-то больше скилл прокачан в алгоритмике, а у кого-то в дизайне.
OK, OK, OK!
для женской натуры для натуры отдельной взятого человека — моей жены — HTML/CSS и вообще визуальная составляющая понятнее и притягательнее абстрактности.

Судя по тому, что вы пишете, ваша жена просто толком не училась — освоила некий набор действий, применимый к некоему конкретному фреймворку, для достижения некоего конкретного результата, и на этом всё. Раньше человек покупал в книжном магазине книгу по Delphi или Visual C++ и по инструкции учился рисовать формы с кнопками, а сейчас идёт в интернет и смотрит вебкасты по Vue.JS. Шаг влево, шаг вправо от инструкции — уже огромные трудности. Что-то совсем другое — полный ступор. Знаю, сам таким был: поручат написать, к примеру, конвертер файлов, первым делом рисую форму и на ней кнопки «открыть файл», «сконвертировать файл», «закрыть файл» и т. п. Не потому, что визуальная составляющая кнопок притягательнее — просто учился так, «синдром утёнка».
++++ у меня тоже, даже визуальное восприятие учебного материала не моё, не запоминается, только консоль и книги
Собственно, именно поэтому выбран не JS, а TS, и разработка фронта вынесена в последние пункты.

Ну а насчёт женской натуры мы тут с Адой Лавлейс посовещались и решили, что всё это — не более чем предрассудки :)
ИМХО если цель научить программировать для интереса, а не для работы, то технологиям учить не надо. Они только запутают. Начиная с нуля ученику трудно понять, чем по сути HTML отличается от JS :)
Если честно, считаю, что ты сильно переоцениваешь возможности неподготовленного человека. Я считаю, что первой программой должна быть та, которая считает правильные пропорции при приготовлении блюда. При том, поначалу можно данные писать прямо в программе, потом уже делать запрос пользователю. Потом попытаться сохранить рецепты. Но тупо в обычном файле. И уже потом смотреть, что с этим делать. Использовать БД или ещё что-то там. В качестве языка сойдет обычный паскаль, хотя мне питон нравится больше.
Нисколько не реклама, но hexlet как раз таки обучает основам. Все с 0 и до конца (почти). Сам очень доволен курсами + хорошее коммунити. А в вашем случае полный новичок думаю с вероятностью в 80 % оставит обучение. Ибо это нереально
Да, ту еще пару мыслей, если Автор действительно вознамерился учить свою девушку:

По выбору языка — конечно создать свою книгу рецептов с занавесками это весело (если она таки готовит), но:

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

2. Lua/Python — тогда она сможет творить в мире IoT, да хоть на базе esp8266 — к примеру, системой умного полива цветов перед «девочками» сможет похвастаться.
В других случаях (кроме книги рецептов и онлайн фотоальбома) — не поймут.

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

В принципе я писал об этом, когда говорил, почему выбрал Go для серверной части.

Но, если объективно, то не думаю я, что изучать новый язык двум людям с разным уровнем будет интересно.
Профессиональному программисту сколько надо на изучение языка? День? Два? Неделю, если это что-то совсем разное, как С и Haskell?
Любой, кто знает больше двух языков, сам язык поймёт за час просмотра примеров из официальной документации, дальше останется бегло посмотреть stdlib, и можно с открытыми документацией, гуглом и стэковерфлоу садиться писать новый проект.

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

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

Чтобы кого-то чему-то научить — нужно знать на две ступеньки выше. Школьников учит человек с высшим образованием, лекции студентам читает как минимум кандидат. Это неспроста.
НЛО прилетело и опубликовало эту надпись здесь
Само собой, речь о синтаксисе. Для написания чего-то нового опытному программисту достаточно понять синтаксис, а идиоматика должна постигать в процессе.
Конечно, какие-то аспекты идиоматики, стоит прояснить для себя с самого начала, но в большинстве случаев это произойдёт в момент знакомства с синтаксисом — примеры чаще всего пишут тем самым «абсолютно идиоматичным кодом».
Был бы автор заметки, к примеру, рыбаком — девушка попросила бы его научить ловить рыбу. И на рыбацком форуме было бы длииинное обсуждение, с какой снасти начинать обучение и на каком водоеме…

Вот был-бы он сантехником ;-)


Отсюда вывод — вне работы — окружающих в свое дерьмо не посвящать!


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

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

Публикации