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

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

Иногда это называют пониманием парадигмы программирования. Какое слово! Для простоты я сказал, что это можно приблизительно представить как причину и метод. Почему и как. И это то, что я попытаюсь объяснить.

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

«Что такое программирование?» Не могли бы вы спросить. И я прошу об этом и своих учеников. Я слышал много ответов: разработка программ, решение проблем, создание утилит… да, все это программирование, но они не затрагивают суть вопроса.

Программирование преобразует данные.

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

Но теперь ... как мы это делаем? Как преобразовать числа в графику? Субъективные данные, такие как «нравится» покупателю, в «выбор», которые дают нам идеальную индивидуальную добавку? Это сложно. Нет. Это несложно, это сложно. Помните…

Программирование преобразует данные.

… И так, всегда.

Давайте поговорим о том, как тогда. Как мы это делаем? Я начну с простого примера: калькулятора.

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

Забудем об этом и пойдем шаг за шагом. Начнем с калькулятора сложения. Что оно делает?

  • Получает два числа.
  • Он их добавляет.
  • Он показывает пользователю результат.

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

  • Получает одно число.
  • Сохраняет первое число.
  • Он получает другой номер.
  • Сохраняет второе число.

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

Наша работа - преобразовать данные во что-то полезное.

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

  • Пользователь нажимает кнопку, мы получаем число. Мы сохраняем это.
  • Мы делаем это снова. Теперь у нас есть два числа.
  • Мы используем эти две части данных и добавляем их. Теперь у нас есть новое число: результат.
  • Этот номер мы отправляем из «нашей программы» на экран.

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

Но волшебство на этом не заканчивается. Теперь у нас есть программа, которая суммирует числа. Это делает преобразование. Мы можем использовать это для других целей! Например: представьте, что вам нужно создать программу, которая рассчитывает общий доход от магазина. Это нужно сделать в таблице Excel или Google, где владелец магазина сохраняет выгоды от продаж. Это снова звучит сложно. Но мы можем пойти еще раз пошагово:

  • Мы получаем одну продажу от Excel. Сохраните это в нашей программе.
  • Получите следующую распродажу от Excel. Сохраните это в нашей программе.
  • Сложите эти числа. Сохраните их в программе.
  • Получите следующее число, снова просуммируйте и сохраните. Повторите со всеми продажами.
  • Напишите конечный номер в Excel.

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

Это наше как. Мы шаг за шагом преобразуем данные для НАШИХ потребностей, пока не достигнем решения.

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

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

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

Заключительные заявления:

  • «сложная» часть методологии - это возможность предсказать или определить, какие элементы вам нужны. Это то, что вы изучаете в колледже / университете на уроках теории, и вы также можете узнать это на основе своего опыта и исследований. Есть способы ускорить процесс и иметь какую-то методологию даже для самых сложных случаев. Эти темы будут обсуждаться в следующих статьях.
  • Хотя, с одной стороны, программирование можно несколько упростить, разработка программного обеспечения - это сложно, но не из-за программирования, а из-за решений, которые мы должны принять. Одно решение может решить проблему и не быть оптимальным для данной ситуации . Важно знать, когда, какие ресурсы использовать, почему и как процесс, чтобы стать хорошим программистом и инженером, но это не то, о чем следует беспокоиться на начальном уровне. Более того, знание этого, на мой взгляд, наиболее важный момент, чтобы стать старшим инженером и далее. Но только тогда.

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

Что вы думаете? У вас есть какие-либо представления о том, как вы обучаете программированию или какие проблемы могут возникнуть при его обучении? Есть ли какие-нибудь критические замечания или предложения, которые могут быть полезны для этой или будущих работ? Пожалуйста, оставьте комментарий! Вы также можете найти меня в Linkedin (http://joseraez.com), Twitter и Github (@JoshiRaez). Спасибо вам большое за ваше внимание. Читаю скоро! :)