DEREFERENCE_POINTER_THERE Telegram 6639
#prog #rust #article (надо ли хештег для постов на тему образования?)

Teaching Rust in 5 days

Опыт автора по преподаванию Rust в университете.

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

Автор честно признаётся, что писал курс не с нуля, а взял за основу Comprehensive Rust от команды разработчиков Android. Курс, тем не менее, подвергся сильным модификациям — главным образом, избавлению от Android-специфичных частей.

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

> The mix of Rustlings and collective-score [вышеупомянутого приложения автора] was a gamification that was very positively received! It was also a good way to monitor student's progress without watching over their shoulders.

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

> We were not able to finish all 90 exercises, but the majority of students finished about 2/3 of them.

Автор предлагает практические советы на тему того, на какие именно темы нужно упор для людей с опытом программирования в других языках, а также предлагает объяснять нужду в borrow checker путём демонстрации того, к чему может привести сосуществование мутабельной и иммутабельной ссылки на один и тот же объект. В статье автор иллюстрирует это примерами на Python с модификацией списка в процессе итерации по нему:

l = [1, 2, 3]

# бесконечный цикл
for item in l:
print(item)
l.append(item)

l = [1, 1, 2, 3]
for item in l:
if item == 1:
l.remove(item)

l == [1, 2, 3] # True

Также автор предлагает аналогию с ковриком для объяснения принципов, которые энфорсит borrow checker. Если коротко: на коврике могут стоять люди, переместить коврик, пока на нём стоит человек, нельзя, если человек всего один (мутабельная ссылка), то он может сойти с коврика, чтобы перенести его в другое место (и далее распространение на прочие концепции Rust). Автор указывает, что ученики нашли эту аналогию полезной. Он также признаёт, что у неё, как и у любой аналогии, есть ограничения, но она полезна для выработки интуиции в первом приближении.

В заключении автор заявляет, что трудности с изучением Rust связаны не только и не столько со сложностью языка как такового:

> I used to agree with the statement that Rust is complicated because some tend to say that.

But now, after giving the 5-day Rust course at my university, I believe that it is a problem of having more learning resources AND willing to go out of the comfort zone to learn completely new concepts like ownership and borrowing.

After the course, students are not Rust experts. But they will not panic on the first borrowing or lifetime compiler error they encounter.

<...>

Rust is neither easy nor complicated, it is a language that requires you to learn new concepts and read a book or take a course before being able to start hacking.

Rust already has excellent resources for learning on your own. We have the
official Rust book (available for free) and Rustlings as leading examples. But we need more resources and initiatives in organizations that teach programming (like universities).



tgoop.com/dereference_pointer_there/6639
Create:
Last Update:

#prog #rust #article (надо ли хештег для постов на тему образования?)

Teaching Rust in 5 days

Опыт автора по преподаванию Rust в университете.

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

Автор честно признаётся, что писал курс не с нуля, а взял за основу Comprehensive Rust от команды разработчиков Android. Курс, тем не менее, подвергся сильным модификациям — главным образом, избавлению от Android-специфичных частей.

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

> The mix of Rustlings and collective-score [вышеупомянутого приложения автора] was a gamification that was very positively received! It was also a good way to monitor student's progress without watching over their shoulders.

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

> We were not able to finish all 90 exercises, but the majority of students finished about 2/3 of them.

Автор предлагает практические советы на тему того, на какие именно темы нужно упор для людей с опытом программирования в других языках, а также предлагает объяснять нужду в borrow checker путём демонстрации того, к чему может привести сосуществование мутабельной и иммутабельной ссылки на один и тот же объект. В статье автор иллюстрирует это примерами на Python с модификацией списка в процессе итерации по нему:

l = [1, 2, 3]

# бесконечный цикл
for item in l:
print(item)
l.append(item)

l = [1, 1, 2, 3]
for item in l:
if item == 1:
l.remove(item)

l == [1, 2, 3] # True

Также автор предлагает аналогию с ковриком для объяснения принципов, которые энфорсит borrow checker. Если коротко: на коврике могут стоять люди, переместить коврик, пока на нём стоит человек, нельзя, если человек всего один (мутабельная ссылка), то он может сойти с коврика, чтобы перенести его в другое место (и далее распространение на прочие концепции Rust). Автор указывает, что ученики нашли эту аналогию полезной. Он также признаёт, что у неё, как и у любой аналогии, есть ограничения, но она полезна для выработки интуиции в первом приближении.

В заключении автор заявляет, что трудности с изучением Rust связаны не только и не столько со сложностью языка как такового:

> I used to agree with the statement that Rust is complicated because some tend to say that.

But now, after giving the 5-day Rust course at my university, I believe that it is a problem of having more learning resources AND willing to go out of the comfort zone to learn completely new concepts like ownership and borrowing.

After the course, students are not Rust experts. But they will not panic on the first borrowing or lifetime compiler error they encounter.

<...>

Rust is neither easy nor complicated, it is a language that requires you to learn new concepts and read a book or take a course before being able to start hacking.

Rust already has excellent resources for learning on your own. We have the
official Rust book (available for free) and Rustlings as leading examples. But we need more resources and initiatives in organizations that teach programming (like universities).

BY Блог*


Share with your friend now:
tgoop.com/dereference_pointer_there/6639

View MORE
Open in Telegram


Telegram News

Date: |

2How to set up a Telegram channel? (A step-by-step tutorial) Content is editable within two days of publishing The Standard Channel Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. How to create a business channel on Telegram? (Tutorial)
from us


Telegram Блог*
FROM American