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

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

Всем привет! Это команда игры Dev's Battle (Образовательной MMO‑RPG игры для разработчиков в Телеграмм). Мы уже год развиваем продукт в стиле Duolingo, но для разработчиков, а в этой статье решили попробовать ответить для вас и для себя на важный для всех вопрос «можно ли выучить язык программирования простым заучиванием?»

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

Спойлер для тех кто не хочет читать всю статью

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

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

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


Что значит "Выучить язык программирования?"

В современном мире программирование становится все более важным и сложным навыком. Изучение языков программирования может открыть новые возможности для карьерного роста, создания собственных проектов и развития индивидуальных навыков. Однако, что именно значит само выражение «выучить язык программирования»?

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

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

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

Конечно, критерии «выучить язык программирования» могут варьироваться в зависимости от того, как вы планируете использовать язык. Если вы новичок, который только начинает изучать программирование, то может быть достаточно знать основы языка и уметь создавать простые программы. Если же вы профессионал в этой области, то необходимы более глубокие знания и опыт использования языка для создания сложных приложений и программ.

В недавнем исследовании CareerKarma больше 67% респондентов заявили, что чтобы выучить язык программирования им понадобилось меньше года, остальная же часть опрошенных не была так оптимистична: 20% заявили о сроке более 2 и 5 лет. Интерсно, согласны ли читатели Хабра с этими оценками, делитесь своим мнением в комментариях =0

Источник: https://careerkarma.com/blog/learning-to-code-experience-survey/

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

Таким образом, фразу «выучить язык программирования» можно разбить на 2 части:
1) Знание синтаксиса, основных правил, библиотек и фреймворков.
2) Опыт, практика и насмотренность.

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

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


Сравним ЯП с реальными языками

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

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

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

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

Источник: https://insights.stackoverflow.com/survey/

Кстати согласно данным исследования Stack Overflow, опытные разработчики с опытом 10+ лет знают аж 5 языков программирования, что намного выше среднего уровня владения иностранными языкам (в среднем по миру человек владеет 1,7 языками, хотя этот показатель конечно зависит от страны и вирируется от 1,2 до 2,4). Тем не менее, с точки зрения языка можно точно сказать, что программисты настоящие полиглоты!


Насколько эффективно заучивание?

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

Одна из наиболее эффективных методик заучивания — повторение. Эта методика основывается на том, что чем чаще мы повторяем информацию, тем лучше ее запоминаем. Несколько исследований подтверждают эффективность этого метода. Например, исследование, опубликованное в журнале «Memory and Cognition», показало, что студенты, которые использовали метод повторения, лучше запоминали материал по сравнению со студентами, которые просто штудировали образовательные материалы.

А вот примеры областей, в которых заучивание может быть наиболее эффективным:

  1. Изучение языков: Заучивание может быть очень эффективным при изучении новых языков. Повторение слов и фраз, использование ассоциаций и мнемотехник могут помочь запомнить новые слова и грамматические правила. Одно исследование показало, что студенты, которые использовали повторение, имели более высокие оценки по иностранным языкам, чем студенты, которые не использовали этот метод (что в целом логично КЭП).

  2. Медицинское обучение: Заучивание может быть особенно важным для медицинских профессионалов, которые должны запомнить большое количество анатомических терминов, лекарственных препаратов и процедур. Использование мнемотехник и повторение может помочь запомнить информацию и облегчить работу в будущем.

  3. Программирование и информационные технологии (неожиданно): Заучивание может быть эффективным при изучении новых программных языков и технологий. Повторение кода и использование ассоциаций могут помочь запомнить новые концепции и методы программирования.

  4. Изучение истории: Заучивание может быть полезным при изучении исторических дат, фактов и событий. Использование мнемотехник и ассоциаций может помочь запомнить информацию и связать ее с конкретными событиями и персонажами.

Звучит конечно интересно, но где же факты. А за фактами далеко идти не будем и посмотрим на исследования от уже упомянутого нами ранее Duolinguo.


Интервальное повторение (Кейс Duolinguo)

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

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

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

Кроме того, Duolingo предлагает учащимся повторять информацию в разных контекстах, используя различные упражнения и игры. Это помогает учащимся лучше запомнить информацию, используя разные части мозга и создавая ассоциации между словами и фразами.

Существует несколько исследований, которые исследовали эффективность метода интервального повторения в Duolingo.

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

Эффективность подхода Дуолинго, основанного на анализе статистики, была проверена сторонним исследованием по заказу компании. Исследование, проведённое профессорами Городского университета Нью‑Йорка и Университета Южной Каролины, показало, что 34 часа на Дуолинго дают столько же навыков чтения и письма, сколько даёт начальный семестровый курс в американском высшем учебном заведении, занимающий около 130 часов.

В процессе исследования 108 из 196 человек, изучающих язык на Дуолинго, бросили занятия менее чем через два часа. То же исследование показало, что пользователям Rosetta Stone необходимо от 55 до 60 часов занятий, чтобы выучить такой же объём знаний.

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


Работает ли зубрежка в программировании?

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

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

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

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

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


Заучивание — быть или не быть?

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

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

Ну а если вам вдруг захотелось размять мозги и порешать задачки на разные языки программтровния — мы всегда ждем вас в Dev's Battle, нашей Образовательной MMO‑RPG игры для разработчиков в Телеграмм. Научить новому ЯП не обещаем, но и время точно будет птрачено не зря.

Комментарии (35)


  1. dltex
    00.00.0000 00:00
    +2

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


    1. nepempaxep
      00.00.0000 00:00

      тут записался на курс обучения языкa а там требуют чтобы ты уже на нём говорил и на обучение берут только из стран где на нём не говорят - главное требования такие что должен уже писать&читать понимать&отвечать да знать от 1000 слов да столько же различных выражений ... короче написал им что зачем мне эти курсы если я все необходимое уже знаю (буду знать) - ответили что прием уже закончен ... потом нашел где-то в университете австралии дистанционные подготовительные с 0-уровня но они начинаются когда тe заканчиваются да длятся как дополнительные к тем да все проводятся первый да единственный раз

      с языками программирования таже фигня - либо сам читаешь спецификацию да программируешь (учасb где нибудь в художестве училище) Либо платишb 5000руб в час на 120к+ трат за индивидуальное обучение с учителем (нашёл такой экстерн за сутки) ... просить помочь у тех кто по спецификации вылез бесполезно - ответ будет только ссылка на спецификацию


  1. r2d
    00.00.0000 00:00
    +2

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


    1. seylanov Автор
      00.00.0000 00:00

      Вот и мы о том же) Понять тоже мало, нужно опыт растить


      1. xaosxaos2
        00.00.0000 00:00
        +1

        Вы смешиваете изучение ЯП и само программирование. Умение программировать не зависит не от какого языка. Это значит, что я не знаю например питон, к концу для смогу на нем уже кодить :) Но знание питона абсолютно не дает вам знания программирования.

        P.S. Из своего опыта. Когда ещё php был популярен, как сейчас питон, мне просто дали код и сказали исправить ибо что-то там работает не так. Так вот я язык не знал этот, да и сейчас тоже можно сказать что я его знаю, но ошибки быстро нашел и исправил, да и далее пришлось иметь достаточно много дел в php. И это всё заметьте без знания языка. Программист он и в африке программист. Тоже самое можно сказать и про другие профессии, где умение превалирует над знаниями. Но это не освобождает от изучения. Изучение поднимает на другую ступень умения.


    1. danial72
      00.00.0000 00:00

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


      1. seylanov Автор
        00.00.0000 00:00

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


        1. nepempaxep
          00.00.0000 00:00

          10 print "what is your name?"
          20 input a
          30 print "hello "+a
          run
          what is your name?
          world
          hello world


      1. maKsimYtkin
        00.00.0000 00:00
        +1

        важно понять как это работает, и вперед на практику)


      1. r2d
        00.00.0000 00:00

        Опыт в любом случае нужен, допустим я знаю питон и вот мне падает задача написать интернет магазин и тут уже надо знать - Django/Tornado/Flask, дальше нужно знать ORM, Jinja2 и это минимум, а вдруг падает задача написать парсер тут другой состав библиотек и нужно хотя бы знать о их существовании. Мало знать сам язык надо знать его окружение.

        Вот я например в свое время писал на PHP, узнал Wordpress, Kohana. Потом был Ruby и естественно RoR от туда я узнал о миграциях в моделях (раньше такого не знал), от туда же узнал о доставке кода на боевой сервер (тогда еще не было всяких Jenkins-ов и etc). Далее со мной случился Python с его Django/Tornado/Flask в общем учится надо постоянно и на каждой новой задаче может потребоваться новые навыки. Это и есть опыт


  1. ReadOnlySadUser
    00.00.0000 00:00
    +3

    Можно. Но зачем? :D

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

    Что-то вменяемое написать ты точно сможешь, просто загуглив: "как сделать Х на языке Y", пускай это и займёт немного больше времени. Остаётся самое сложное - суметь перевести задачу на естественном языке в набор слов, которые я написал))


  1. panzerfaust
    00.00.0000 00:00
    +3

    Можно ли выучить язык программирования через заучивание

    Конечно. Ровно так же можно стать чемпионом по плаванию через заучивание закона Архимеда. Кстати, в джаве всего 50+ ключевых слов. За день заучить можно.


    1. YourgenAP
      00.00.0000 00:00

      Я думаю, лучше будет сравнение с заучиванием движений, стоя у бортика бассейна


      1. Myclass
        00.00.0000 00:00

        или смотря видео в интернете.


  1. YourgenAP
    00.00.0000 00:00

    Зачем вообще учить язык ЯП через зазубривание? Это же просто нецелесообразно. Надо учиться писать код, а не учить ЯП. Это как учить звуки, но не учиться разговаривать.


    1. nepempaxep
      00.00.0000 00:00

      Dlang.org как раз про это


  1. aamonster
    00.00.0000 00:00

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


    1. seylanov Автор
      00.00.0000 00:00

      "Хотя бы по 5-6 языков))" Я думаю после 5ого там и учить ничего не нужно


      1. nepempaxep
        00.00.0000 00:00

        А.Ф.Р.И.К.А* (английский французский русский испанский китайский & арабский) ... может только arabic & больше ничего не учитb

        • UN work languages


  1. Mishootk
    00.00.0000 00:00

    Полезное упражнение.
    Обучиться основам одного ЯП. Краткий курс. Для понимания того, что написано в простейших примерах.
    Обучиться основам другого ЯП. Краткий курс. Для понимания того, что написано в простейших примерах.
    Попереводить примеры с одного языка на другой добиваясь выдачи одинакового результата для оригинала и перевода.
    С этого момента можно сказать, что "со словарем" знаем ЯП перевода (если тренировались в обе стороны, то вы молодец, знаете со словарем два языка). На этом месте зубрежка заканчивается.


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


    1. seylanov Автор
      00.00.0000 00:00

      Все так


      1. nepempaxep
        00.00.0000 00:00

        1. seylanov Автор
          00.00.0000 00:00

          Очень круто! Спасибо


  1. AntH1N1
    00.00.0000 00:00
    +1

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


    1. seylanov Автор
      00.00.0000 00:00

      Спасибо!


  1. Myclass
    00.00.0000 00:00

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

    Я такое никогда в жизни не встречал. В любом ремесле нужен кто-то, кто вас берёт за руку и ведёт через все эти дебрии, и с помощью "вопрос/ответ/задание/контроль/повторение/оттачивание опыта итд." - вы вначале с этим наставником (неважно кто - отец, старший брат, друг, коллега по учёбы, доцент или учитель информатики) потом когда-то и сами становитесь в этой области специалистом.А программирование на 50% ремесло.

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

    Поэтому - не судите, но вопрос для статьи не имеет под собой реальной базы. Только теория.


    1. seylanov Автор
      00.00.0000 00:00

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


      1. Myclass
        00.00.0000 00:00

        нет, как раз вы пришли к мнению, что

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

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


        1. seylanov Автор
          00.00.0000 00:00

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


        1. aamonster
          00.00.0000 00:00

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

          Правда, в то время (конец 80-х) сенсея не очень просто найти было... С ним, конечно, кпд резко возрастает. Причём от сенсея не так уж много требуется – в основном увидеть типичные ошибки и недоработки.


    1. aamonster
      00.00.0000 00:00

      30 лет назад это было нормой. Самые сильные программисты – те, кто сам разобрался (не зазубрил, а именно разобрался, зубрёжка только для технических деталей вроде синтаксиса и ключевых слов, для алгоритмов и структур данных она уже почти бесполезна, да и понять идею можно быстрее, чем выучить алгоритм).


  1. uvelichitel
    00.00.0000 00:00

    "Можно ли выучить язык программирования через заучивание?"
    Да, конечно! У GPT-4 получилось. Даже странно, что ещё никто не привёл этот пример)


  1. caballero
    00.00.0000 00:00
    +1

    Учить нужно програмиироаание а не языки программироаания


  1. AleksIrk
    00.00.0000 00:00

    Пробовал только бесплатную версию.

    Данный проект больше проверить свои знания чем про обучение. За 750 рублей проверить свои знания по моему ИМХО так это многовато. Пытаются монетизировать проект изо всех сил.

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

    Из -за того что в основном канале поднял тему багов, вместо внятных объяснений бан.


  1. xSVPx
    00.00.0000 00:00

    Эээ... А зачем вообще запоминать синтаксис ?

    В чем смысл ? Ошибки подсвечивает среда, при вопросах "как тут цикл" есть f1 итп. Неочевидный синтаксис в целом редкость.

    Среднее количество строк написанных программистом за день - десятки.

    Надо понимать что писать, а не знать где ставить в коде запятые.

    ***

    Можно ли стать хорошим писателем зазубривая слова ? Можно ли стать хорошим учёным зазубривая формулы ?

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