Важная, но по большей части игнорируемая группа изучающих язык программирования — это специалисты в другом языке. Большинство ресурсов по программированию предполагают, что вы либо абсолютный новичок, либо эксперт, но не являетесь экспертом в другом языке.
Я часто говорил, что как только вы научитесь программировать, изучение других языков станет легким, и главное — установить связь между основными идеями первого и второго языков. Я даже не думаю, что вам нужно быть настолько конкретным — узнайте, что такое переменная, цикл, условная конструкция и т. Д. В новом языке, и вы не начнете. Узнайте, что делает этот язык особенным, и вы почти дома.
Конечно, все это лишь мнение. Вам нужно исследование, чтобы подкрепить любые подобные предложения, и, угадайте, исследований по таким темам очень мало. Ознакомьтесь с последним докладом Нишала Шреста, Титуса Барика и Криса Парнина из Университета штата Северная Каролина и Microsoft Redmond — Это похоже на Python, но: на пути к поддержке передачи знаний о языке программирования. Они работают над несколько более ограниченной идеей, что знание языка может помочь вам выучить второй язык, если вы будете использовать аналогии между ними.
Идея довольно проста: если у вас есть опытный программист на Python, и он хочет изучить R, не начинайте, как если бы они были новичком, но укажите на сходство между R и Python. Покажите, как R делает то, что программист умеет делать в Python.
Одна из новых особенностей этого исследования заключается в том, что они внедрили Transfer Tutor — программу, которая учит по аналогии:
Мы разработали Transfer Tutor как интерактивный инструмент для продвижения «обучаемого программирования», чтобы пользователи могли сосредоточиться на одном элементе синтаксиса за раз и иметь возможность проходить по фрагментам кода в своем собственном темпе. Мы приняли следующие проектные решения для обучения манипуляциям с фреймами данных в R:
1) выявление сходства между элементами синтаксиса двух языков
2) подробные разъяснения потенциальных заблуждений
а также
3) постепенное прохождение и выделение элементов.
В дизайне также использовалось отрицательное трансферное обучение, то есть вещи, которые вы могли предположить, были одинаковыми, но на самом деле были разными.
Вы можете прочитать подробные результаты в статье, но, по сути, испытуемые, похоже, сочли этот опыт полезным и отметили много моментов, когда обучение по аналогии и контрасту было более эффективным. Одним из неожиданных открытий стало то, что участники неохотно принимали определенные факты, не проверяя их с помощью выполнения кода. Не знаю, как вы, но если что-то имеет смысл и логично в контексте, я с радостью приму это без явной проверки. Однако программа Transfer Tutor понравилась не всем студентам, и здесь явно есть место для тонкой настройки.
В этой статье мы оценили эффективность использования передачи обучения с помощью обучающего инструмента для опытных разработчиков Python, которые не знакомы с R.Мы обнаружили, что участники могли изучать базовые концепции R, и они обнаружили, что Transfer Tutor может быть полезен при изучении R в целом ряде областей. Наблюдения, сделанные в ходе исследования «подумай вслух», показали, чтоTransfer Tutor выделял факты, которые легко упустить или неправильно понять, и участники неохотно принимали определенные факты без выполнения кода. Результаты этого исследования предлагают возможности для включения обратной связи передачи обучения в среды программирования.
Лично меня это не удивляет, и, хотя это может быть самореклама, я использую идею переноса в обеих своих книгах — Python для программистов и Kotlin для программистов — только в более общем смысле. У всех языков есть общности, и почти наверняка нет необходимости говорить «вот присваивание в Java =, а вот оно в R <-». Концепция присваивания универсальна, и все, что вам нужно сделать, это обсудить, что поддерживает язык - семантику значений, ссылочную семантику или заимствование, как в Rust. Обсудите концепции и оставьте запятые сами за себя - или, точнее, оставьте это синтаксическому анализатору.