Краткое введение в программирование

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

Я буду использовать термин «программирование», некоторые называют его кодированием, а другие - разработкой программного обеспечения; разные люди используют разные термины, и, несмотря на незначительные различия в определениях, все они в значительной степени одно и то же. Итак, что такое программирование?

Программирование - это оскорбительный акт без согласия, когда глупый аппарат выполняет за вас математику, чтобы вы могли расслабиться и вместо этого попить кофе; это, конечно, самое чистое определение программирования, но давайте попробуем определение получше. Программирование - это процесс разговора с аппаратным обеспечением, чтобы оно что-то сделало за вас. Для простоты в дальнейшем я буду использовать слово компьютер вместо аппарат; персональные компьютеры, мобильные телефоны и умные холодильники - вот примеры того, что я имею в виду под компьютерами.

К сожалению, компьютеры могут понимать один-единственный язык; этот язык называется машинным языком, который состоит из единиц и нулей. Не волнуйтесь, друзья мои, вам не придется говорить на этом языке.

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

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

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

Программисты все время пытаются решать проблемы; это не идеально, и нет единственного правильного способа что-то сделать.

За время моей работы программистом я встретил так много людей, которые разочаровались в себе, потому что не считали себя достаточно умными; это заблуждение частично связано с тем, как мы тестируем студентов в нашей образовательной системе, и насколько это далеко от программирования в реальной жизни. Другая сторона медали - это то, как наша система образования создает впечатление, будто есть только один способ решить проблему.

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

В моем собственном путешествии в качестве профессионального программиста я обнаружил, что если вы понимаете логику, тогда вам хорошо; это будет нелегко, но ты сможешь это сделать. Если у вас нет хорошего понимания логики, то, к счастью, вы можете практиковаться на ходу. Таким образом, вы можете сделать это независимо от того, насколько вы умны.

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

Компьютеры глупы, а ты хозяин.

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

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

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

Например, если нажатие кнопки запускает длительные вычисления, которые замораживают пользовательский интерфейс вашего приложения, вы должны понимать, что имеете дело с проблемой потоковой передачи; вы должны знать, что такое UI Thread и что вам нужно многопоточность. Знание того, как их реализовать, можно легко найти, если вы знаете, что ищете.

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

Программисты не всегда умеют что-то делать, но они очень хорошо знают, что искать.

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

Чтобы дать вам простой пример, представьте, что вы программируете калькулятор; точнее скажем, вы хотели реализовать оператор деления. Вы создаете три текстовых поля, A, B и C, и кнопку разделения. Вы говорите C = A / B. Теперь вы помещаете 5 в A и 2 в B и щелкаете; о чудо, вы получаете 2 балла С.

Оказывается, в том конкретном языке программирования, который вы используете, если разделить два целых числа, например 5 и 2, то результатом также будет целое число. Вы гуглите это и быстро понимаете, что сначала нужно преобразовать A и B в Float.

Затем вы выполняете C = A.toFloat () / B.toFloat (), снова кладете 5 и 2 и получаете 2,5. Все идет нормально.

Теперь вы ставите 5 и 0, и внезапно все горит. Оказывается, компьютеры настолько глупы, что единственный способ сказать вам, что вы сделали что-то не так при делении на 0, - это разбить все ваше приложение. Отлично, теперь вам нужно вручную убедиться, что B не равно 0, прежде чем вы действительно сделаете деление.

Вы пишете: If (B! = 0) Then C = A.toFloat () / B.toFloat (). Вы запускаете свой код, ставите 5 и 0, а приложение ничего не делает. Хорошее начало, но этого ли вы хотите? Может быть, вы хотите что-то показать пользователю.

На ваш взгляд, проблема была простой; разделите A на B и поместите это в C, но чтобы сказать, что на языке программирования вы должны быть очень точными. Это был простой пример; что, если вы хотите делать анимацию, с навигацией, с интерактивностью? Что делать, если ваш код слишком медленный, и вам нужно заставить его работать быстрее?

Здесь следует помнить, что метод проб и ошибок - это не грех; Вы можете делать это сколько угодно раз, пока не почувствуете уверенность в том, что создали. Часто другие люди пробовали что-то похожее на то, что пытаетесь сделать вы, и снова, Google и документация - ваши лучшие друзья в этом случае.

Трудно перевести человеческие мысли и процессы в код, понятный компьютеру.

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

Например, вы хотите построить калькулятор; на какой платформе вы хотите его запустить? Windows? Android? iOS? Следующий вопрос: какую структуру вы хотите использовать? Вы хотите создать собственный Android или гибридный Интернет? Эти варианты - это то, что вы можете найти в Google после выбора платформы.

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

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

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

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

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

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

Программисты понимают, что если они потратят достаточно времени на проблему, в конечном итоге она будет решена.

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

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

Программисты постоянно создают и исправляют ошибки; это не только ты.

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

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

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

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

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

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

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

Надеюсь, вам понравилась эта статья, и вы сочли ее полезной. До следующего раза, Dev Bites выйдет из системы.