MISC · 24 февраля 2018, 09:05 · Отдел информации dev.by
Почему научиться программировать становится всё сложнее?

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

Иллюстрация: Simple Programming

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

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

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

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

Когда где-то в начале 80-х у меня появился Commodore 64, всё тоже было сложно. Вы включали компьютер, он загружался, и запускалась среда программирования. Чтобы выполнить какое-то действие, пусть даже запустить другую программу (например, Archon), нужно было ввести хотя бы одну строчку кода.

С того времени три изменения постепенно сделали программирование более трудным для пользователей.

  1. На компьютеры перестали по умолчанию устанавливать среды разработки. Как следствие, всем, кто учился программировать, сначала приходилось установить среду программирования — и это оказалось неожиданно серьёзным препятствием. Многие пользователи никогда ничего не устанавливали и понятия не имели, как это делать, или попросту не имели нужных прав. Устанавливать ПО сегодня намного легче, но всё равно можно наделать ошибок. Чтобы просто научиться программировать, нет необходимости перед этим осваивать системное администрирование.
  2. Текстовый интерфейс сменился графическим. Он более удобен в использовании, но при этом скрыта информация о текущих процессах. Пользователям она не нужна, и им это удобно. Но проблема в том, что графический интерфейс не отображает информацию, которую действительно нужно знать разработчику. Поэтому когда пользователь решает изучить программирование, ему приходится столкнуться со всеми скрытыми данными.
  3. Облачные вычисления вывели программирование на абсолютно новый уровень. Пользователи веб-приложений имеют лишь смутное представление о том, где хранятся их данные и с помощью каких приложений они могут получить к ним доступ. Многие пользователи, особенно мобильных устройств, не понимают разницы между операционными системами, приложениями, веб-браузерами и веб-приложениями. Они загружают и скачивают данные, но не знают, откуда и куда они перемещаются. Устанавливают что-то, но не знают толком, что и куда устанавливается.

Иллюстрация: TechLog360

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

Ну и что с этим можно сделать? Есть несколько вариантов:

  1. Назад в будущее: во-первых, можно создавать устройства вроде Commodore 64, где использовать компьютер и программировать — одно и то же. Так, одним из стимулов к созданию Raspberry Pi, по словам Эбена Аптона, было построение среды, которая превращала бы пользователей в программистов.
  2. Превозмочь трудности: второй путь — учиться устанавливать и использовать среды разработки перед обучением программированию или одновременно с ним.
  3. Временно обойти трудности: третий вариант — использовать облачные технологии. Это позволит сразу начать программировать и отложить создание собственной среды разработки.

На одном из занятий мы со студентами идём вторым путём. Они учатся работать с текстовым интерфейсом UNIX параллельно с изучением языка С. Но для начинающих, особенно тех, кто учится самостоятельно, я бы посоветовал выбрать третий путь. Вот какие инструменты можно использовать:

  1. интерактивные учебники, где код можно запустить в браузере. Например, одной из адаптаций книги How To Think Like a Computer Scientist;
  2. среды разработки в браузере — например, PythonAnywhere;
  3. полностью готовые виртуальные машины, которые можно загрузить и запустить (если, конечно, у вас есть нужный софт или вы способны установить его);
  4. сервисы вроде Binder, в котором среда программирования размещена на удалённом сервере и доступна для пользователей через браузер;

В разных своих проектах я использовал все эти инструменты. Помимо интерактивной версии How To Think Like a Computer Scientist, есть ещё интерактивная версия Think Java от Trinket.

В Think Python я рекомендую использовать PythonAnywhere по крайней мере в первых четырёх уроках, а затем даю пошаговые инструкции по локальной установке.

Раньше в некоторых занятиях я применял виртуальные машины, но в последнее время больше использую онлайн-сервисы, например, Think DSP от O'Reilly Media. А репозитории всех моих книг готовы для работы в Binder. 

Есть ещё одна опция, которую я бы назвал «принять будущее»: возможно, новички не только начнут, но и продолжат программировать на облачных платформах.

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

Источник: dev.by
Нашли в тексте ошибку — выделите её и нажмите Ctrl+Enter.
Новые комментарии
Взгляд изнутри. Так забавно читать некоторые комментарии :) Да, я получила стипендию, хотя практически год работаю в айти компании. Я вошла в айтишечку в качестве стажера-верстальщика на популярных CMS, это моя первая работа в айти и не скрою, что поначалу было очень трудно ;) *сейчас можно смеяться* В МГЛУ не учили вёрстке. Первые трудности позади, я уверенно ощущаю себя в компании, в которой работаю. Мой меценат Павел Голубев, CEO at Appodeal. Начался новый этап моего профессионального роста: сейчас я на курсе ПВТ по веб-разработке, с четким осознанием всего, что происходит. Начала изучение JS самостоятельно, и сейчас, будучи на проекте Микиты, все структурируется и практикуется. Испытываю те же ощущения, что и вначале своего пути, но теперь знаю, что это дело практики и времени)) Касательно других участников проекта: нет ни одного, кто не пощупал айти с той или иной стороны, у некоторых участников проекта есть бэкграунд работы в IT-компаниях, пусть даже не на 100- процентных айти-должностях (если говорить про Dev) Никто не экспириенсит сон разума. А, чуть не забыла "никто не следит за этими халявщиками"- за нами можно и нужно следить ( нам будет приятно ): мы пишем статьи о планах на проект, о видении реализации себя в новой нише и, собственно, переходя от слов к делу: еженедельные посты о своих успехах в обучении и провалах. Да и со стажировкой проблем вообще нет ;) Мне понравился комментарий: “Хочешь сделать из кого-то айтишника - возьми его на работу”. Вот меня взяли. Это я все к чему: если тебе лично не подходит идея проекта Микиты, не значит, что она не подходит всем. P.S на фб можно найти мой первый пост :) Апдейты coming soon
LesiaLametta
16.08.2018 в 19:27
«Очень мало заявок». Как проходит акция #войтивайти, которую запустил основатель PandаDoc


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

Использование материалов, размещенных на сайте, разрешается при условии прямой гиперссылки на dev.by. Ссылка должна быть размещена в подзаголовке или в первом абзаце публикации.
datahata — хостинг в Беларуси