О программировании мышления

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

Чтобы улучшить свое собственное образование в области программирования,

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

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

Язык, который мы изучаем

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

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

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

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

Институты мешают обучению программированию

Если бы этот взгляд на интеллектуальные продукты был обобщен на то, как большая культура думает о знаниях и их приобретении, мы все могли бы быть менее напуганы нашими страхами «быть неправыми». — Мозговые штурмы

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

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

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

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

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

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