Для чего нужно программирование: Зачем учиться программировать непрограммистам — статьи на Skillbox
6 причин учиться программированию, если ты не программист
Полина Коковина
1. Это свобода творчества
Многие думают, что для программирования нужны пятёрки по математике. Это заблуждение. Программирование больше про логику и творчество. Например, ты с друзьями в шутку придумал классную игру для смартфона. Можно, конечно, подождать, пока какая-нибудь компания за океаном выпустит её, а можно сделать это самому. Как эта игра будет работать, какие в ней будут правила, интерфейс и функции — решать тебе. С навыками программирования появляется возможность с нуля создать продукт или реализовать идею — приложение, сайт, программу — так, как это нужно именно тебе.
2. Это окупается
Простая истина: чем больше у тебя навыков, тем дороже твои услуги. Например, копирайтеры, которые могут сверстать простые html-страницы, бухгалтеры или менеджеры, которые могут автоматизировать работу Excel или Access с помощью кода, стоят дороже, чем их коллеги только с базовым набором скиллов.
Крупные компании быстро развиваются и ищут при этом новые способы оптимизации. Нанять команду разработчиков и платить каждому по 2 000–3 000 долларов в месяц — дорогое удовольствие. Нанять человека, который будет писать статьи, верстать и ещё придумает, как улучшить мобильную версию сайта, — выгодное решение.
У таких специалистов больше шансов попасть в крупную компанию.
Например, в The New York Times уже более половины журналистов умеют программировать. Когда издание изменило стратегию и сделало акцент на развитие веб- и мобильной версии — обучили программированию сотрудников, которые отвечают за цифровой контент.
3. Это сближает
Просить разработчика написать программу на Ruby, потому что ты вчера прочитал, что это новый и классный язык, плохая идея. Чтобы делать совместные проекты, понимать, как ставить задачи, вносить правки и на каком вообще языке говорить с программистами, нужно самому хотя бы немного понимать код. Даже руководителям компаний и владельцам стартапов полезно научиться программировать. Например, чтобы найти на рынке хорошего специалиста, лично провести собеседование и адекватно оценить уровень кандидата.
4. Это экономит время
Сколько раз ты вздыхал, когда приходилось делать рутинную работу? Например, ты журналист и пишешь для научно-популярного издания. Тебе нужно изучить, в каких странах чаще всего молнии ударяют в землю, и понять, что общего у этих регионов. На это уйдёт не один день. Программирование ускорит этот процесс: ты потратишь 30–40 минут на код, который поможет быстро проанализировать данные и составить отчёт.
5. Это развивает полезные привычки
Программирование — кропотливый процесс. Здесь не получится почитать учебник на досуге, посмотреть видео на YouTube и сходить на пару лекций. Нужно сесть и начать учить язык, копаться в коде и всё время практиковаться. Например, чтобы писать на Python, надо каждый день заниматься по 2–3 часа на протяжении нескольких месяцев.
Это дисциплинирует и помогает мыслить структурно и стратегически.
6. Это полезно для здоровья
В народе ходит слух, что программисты даже в старости лучше соображают. Шутки шутками, но в этом есть доля правды. Например, в 2014 году учёные из Университета Пассау анализировали сканы головного мозга людей во время занятий программированием. Результаты показали, что активны те же части головного мозга, которые работают при изучении иностранных языков. А это уменьшает риск развития болезни Альцгеймера.
Подтверждают пользу кодинга и другие исследования. В Медицинском колледже Альберта Эйнштейна в Нью-Йорке на протяжении нескольких десятилетий изучали почти 500 добровольцев в возрасте от 75 до 85 лет и доказали, что даже один день программирования в неделю может отсрочить развитие деменции на два месяца при регулярной тренировке мозга.
Читайте также
как и зачем учиться программировать сегодня
С 2018 года в Университете ИТМО все студенты-бакалавры и магистранты нового набора вне зависимости от направления подготовки и образовательной программы будут изучать цифровую культуру. В рамках нового направления студенты вне зависимости от того, имеют ли они профильное образование в области IT, будут получать компетенции, позволяющие им использовать инструменты, которые предлагают современные информационные технологии. Между тем, спрос на навыки в области программирования продолжает расти год от года. По данным аналитиков платформы Courseburg, больше всего в российском сегменте интернета пользователи ищут курсы Java, PHP, JavaScript и Python. Разбираемся, зачем сегодня учиться программировать и «неспециалистам», с чего стоит начинать обучение и какие задачи могут помочь решить новые навыки.
Действительно ли всем нужно учиться программированию?
Еще в 1981 году на 3-й Всемирной конференции Международной федерации по обработке информации и ЮНЕСКО по применению ЭВМ в обучении в Лозанне (Швейцария) Андрей Ершов, советский ученый, один из пионеров теоретического и системного программирования, выступает с докладом под названием «Программирование — вторая грамотность». В своем выступлении, проводя параллели между распространением книгопечатания и развитием технологий, он последовательно делает вывод: «если развитие и распространение книгопечатания привело к всеобщей грамотности, то развитие и распространение ЭВМ приведет ко всеобщему умению программировать».
Название доклада быстро становится лозунгом, после чего в стране начинаются первые эксперименты по преподаванию программирования, а затем информатики школьникам.
Спустя почти 25 лет выходит исследование, подготовленное специалистами Университета Карнеги-Меллон. В нем предсказывается, что в 2012 году из 90 млн работающего населения в США более 55 млн будут использовать электронные таблицы и базы данных, что можно считать элементарным программированием. Аналитики подчеркивают: многие люди занимаются программированием, не осознавая того: например, создавая макросы в электронных таблицах или делая запросы в базах данных c использованием SQL.
Однако насколько успешно «непрограммисты» могут использовать базовые навыки в своей повседневной работе? Как показывает практика, далеко не все, кому не помешает разбираться в технологиях на элементарном уровне, умеют применять эти знания. К примеру, чтобы проверить смогут ли профессиональные графические дизайнеры написать простейшую компьютерную программу, Брайан Дорн, в то время студент магистратуры в Технологическом институте Джорджии (Georgia Tech), попросил их прочесть и изменить фрагмент программного кода. Дорн хотел понять, смогут ли они сами разобраться, как автоматизировать работу в Adobe Photoshop.
Источник: shutterstock.com
Дизайнеры стали искать информацию в Сети, но во многих случаях вводили неверные поисковые запросы: например, пытались разобраться с Java, когда на самом деле им был нужен JavaScript для этого конкретного проекта. Эксперимент описывается в статье «Should everybody Learn to Code?», опубликованной в журнале Communications еще в 2011 году. В итоге автор делает вывод: такое положение дел может быть связано с «отсутствием общего базового понимания компьютерных и программных структур».
С Дорном соглашается и его научный руководитель, профессор и директор программы Контекстуализированной поддержки в обучении в Школе интерактивной обработки данных Georgia Tech Марк Гуздайл, который уверен: результаты эксперимента показывают, что «есть много людей, которым нужны знания в компьютерных науках… и которые будут использовать их в жизни, но они никогда не изучали эту дисциплину, и их самообучение проходит неэффективно, что приводит к потере времени и мотивации».
Источник: norlab.ru
Однако в последние годы спрос на курсы по программированию продолжает расти год от года. Так, по данным аналитиков образовательной маркетплейс-площадки Courseburg, в среднем спрос на курсы по программированию за 2017 года увеличился на 50%. Больше всего в российском сегменте интернета люди ищут курсы Java, PHP, JavaScript и Python. Если же смотреть по скорости роста спроса на обучение, то на данный момент лидируют запросы: «курсы программирования с нуля», «курсы программирования для школьников», «курсы Python», «курсы JavaScript», также популярными остаются курсы, связанные с веб-разработкой и версткой, свидетельствуют данные компании. При этом спрос на курсы Java и PHP за последний год замедлился.
Кто и как учится программированию «с нуля»?
Если еще десять лет назад история про журналиста, освоившего азы программирования и создавшего своими силами собственный ресурс (например, именно так поступил в свое время Константин Бочарский, 10 лет проработавший в «Секрете фирмы», а потом фактически собственными силами создавший сервис Pressfeed) и удивляла, то сегодня навыки программирования осваивают многие, начиная от дизайнеров и журналистов до экономистов и создателей собственных компаний.
Источник: shutterstock.com
Взять хотя бы историю американского бездомного Лео Гранда, который научился кодить за четыре месяца и запустил мобильное приложение Trees for Cars. Много более традиционных примеров из бизнеса и в России: Константин Шадрин, сооснователь IT-агентства Interity, а в прошлом руководитель группы в консалтинговой компании решил, что без знания предмета невозможно запустить собственный IT-стартап, и прошел базовый курс HTML и СSS. Такое же мнения разделяет и Олег Юсупов, основатель digital-агентства 26dotss, который прошел курсы на пути создания собственной компании, чтобы лучше разбираться в предмете, а не «просто нанимать людей со стороны».
Шадрин и Юсупов предпочли учиться программированию в Moscow Coding School (компания позиционирует себя как «школа нового образца, где крутые девелоперы из прогрессивных интернет-компаний и стартапов приобщают к программированию креативных новичков»), однако многие, в том числе впоследствии профессиональные программисты, начинают путь самостоятельно — с книг и бесплатных онлайн-уроков.
Например, к такому выводу пришли исследователи HackerRank, онлайн-платформы тестовых заданий по программированию, которая в конце января 2018 года представила годовой доклад о навыках и квалификации разработчиков. В основу исследования легли результаты опроса 39,4 тыс. разработчиков из 17 стран мира, зарегистрированных на платформе.
Источник: rb.ru
Так, в ходе исследования выяснилось, что большинство программистов самоучки — 73,7% разработчиков постигали азы программирования без чьей-либо помощи. Самая высокая доля программистов, которые начали оттачивать свои навыки в написании программного кода в возрасте 5–10 лет, проживает в Великобритании — 10,7% респондентов. В список лидеров по этому показателю попала также Россия (7-е место) и Украина (10-е место) — 7% и 5,6% опрошенных программистов соответственно занялись программированием в столь раннем возрасте. Однако нашлись и те, кто написал свой первый код довольно “поздно” — после 26 лет. Впрочем, этот факт никак не сказался на их карьере, свидетельствуют данные компании, треть из них (36%) сейчас занимает позиции старших и ведущих программистов.
Одним из самых популярных ресурсов для получения новых знаний была названа платформа Stack Overflow — популярная система вопросов и ответов c пошаговыми рекомендациями по решению задач по программированию. Этот ресурс лидирует у разработчиков всех возрастных групп. Интереснее складывается ситуация со вторым любимым местом — в зависимости от возраста программисты отдают предпочтение YouTube или книгам. Так, программисты до 35 лет прибегают к помощи YouTube, старше 35 — используют бумажные носители.
Такой рецепт используют и те, кто решил освоить программирование, чтобы решать прикладные задачи в своей профессиональной области, не связанной с IT. Например, основатель платформы Courseburg Александр Альхов, будучи по образованию геохимиком, в свое время учился программированию самостоятельно, по книгам.
«Мне кажется, до сих пор книги — это самый разумный способ начать при условии, что вы будете дополнять обучение выполнением заданий, — говорит он. — Но в целом лучший способ начать программировать, на мой взгляд, это желание сделать конкретную штуку. В свое время я взял большую книгу по Access ради того, чтобы упростить хранение данных по литературным источникам. Это то, что сейчас реализовано в программе Mendeley. От идеи до первой версии базы данных и интерфейса для ввода и доступа к данным ушло месяца три, еще один-два месяца потребовались на доводку».
Александр Альхов
Следующим заходом к программированию для Александра стала задача сделать онлайн-библиотеку книг по его первой специальности. Тогда, как отмечает он, в интернете сложно было найти книги по геохимии в свободном доступе. В результате за два месяца удалось сделать сайт на PHP движке Drupal, который на тот момент стали лидером в своем сегменте, рассказывает Александр.
«Учить абстрактное программирование в вакууме, мне кажется, можно вечно. Но научиться решать конкретные задачи можно достаточно быстро, даже не имея профильного образования. Если бы сейчас я решил стать программистом, я бы посоветовал себе прочитать пару книг, дающих общее представление о выбранном языке. И уже пробуя на тестовой задаче, много и активно читать статьи по конкретным деталям», — отмечает он.
Для начала необходимо определиться, зачем учиться программированию
Прежде всего необходимо определиться с целью, ради которой вы решили учиться программировать, считает Иван Логинов, ассистент кафедры информатики и прикладной математики Университета ИТМО.
«Обучение человека профессии не просто так занимает приличное количество времени. Оно требует серьезного погружения обучающегося в процесс, сопоставимого с занятостью основной работой. Поэтому, если вы настроены на то, чтобы сменить область деятельности, следует понимать, что понадобится приложить массу усилий – от самостоятельного составления плана, поиска учебных материалов, выбора онлайн-курсов, до поступления в высшее учебное заведение», — говорит он.
С другой стороны, если речь идет о получении дополнительных к основной профессии навыков, то подход к обучению будет другим.
«Можно говорить, что один из классов задач, которые будет решать человек в этом случае, это несложная локальная автоматизация процессов, — продолжает Иван Логинов. — Например, подготовка документов в офисных пакетах, таких как Microsoft Office, может быть в какой-то степени автоматизирована за счет поддержки этими программами языка VBScript. Освоив его, вы сможете с большей эффективностью решить ряд профессиональных задач, связанных с использованием этих инструментов, например, автоматически генерировать заполненные формы на основе данных из определенного источника. При этом вам не потребуется задействовать профессиональных программистов, привлечение которых может быть необоснованным или обойдется достаточно дорого»
В подобных случаях обращаться к профессиональной подготовке необязательно — можно ограничиться самообразованием, а также дистанционными консультациями с преподавателем и общением со специалистами на профессиональных форумах. Начать лучше всего с высокоуровневых языков программирования, вокруг которых уже сложилось мощное сообщество.
Иван Логинов
«Если говорить о программировании как о дополнительном навыке к основной профессии, то лучше стартовать с языков программирования высокого уровня с большим комьюнити. Это, например, языки Python, JavaScript, Java, C#, выбор зависит от того, какие задачи собирается решать человек. Это достаточно популярные языки, которые прекрасно документированы, реализованы под все распространенные платформы. И есть шанс, что под многие задачи из различных предметных областей уже реализована необходимая функциональность. В таком случае достаточно будет ограничиться лишь освоением языка программирования и просто изучить документацию, примеры на предмет того, как именно использовать определенную библиотеку для получения конкретного необходимого результата, — уточняет Иван Логинов. — Главный критерий здесь — наличие очень мощного комьюнити. Оно необходимо, чтобы решение какой-то проблемы не привело к тому, что человек без специального образования не оказался перед нерешаемой задачей, связанной с техническими деталями реализации языка, платформы».
Он отмечает, что такой подход позволяет существенно экономить время на процессе обучения, но стоит отдавать себе отчет в том, что он не делает человека профессиональным разработчиком ПО, хотя и может послужить точкой для начала получения новой профессии.
Что в перспективе?
В будущем понимание основ программирования и умение работать с технологиями станет обязательным навыком для многих нетехнических профессий, считает директор по стратегическому маркетингу компании Яндекс, автор одного из самых популярных русскоязычных телеграм-каналов о технологиях @techsparks Андрей Себрант. Программистам, напротив, предстоит обогащать свои знания по основной специальности дополнительными навыками, в том числе в сфере коммуникаций.
Андрей Себрант
При этом уже сегодня тем, кто делает профессию программиста основной, лучше не идти в эту сферу только потому, что профессия «стала модной», уверен старший разработчик сервиса «Яндекс.Такси» Николай Фильченко. Уже сегодня, чтобы заниматься программированием, требуется много времени: нужно постоянно учиться и следить за новыми технологиями.
«Если человеку действительно нравится программирование, то самое главное не то, куда он пойдет учиться языку программирования и алгоритмам, а то, готов ли он тратить на это много времени. Отрасль меняется очень быстро, и если программист не будет следить за изменениями, то через несколько лет он окажется на обочине рынка», — говорит специалист.
Перейти к содержанию
почему всем нужно научиться писать код
Навык программирования может пригодиться не только тем, кто хочет создавать программы или сайты профессионально. О том, как умение писать код может облегчить жизнь, рассказал Илья Щуров, доцент кафедры высшей математики ВШЭ и преподаватель Центра непрерывного образования факультета компьютерных наук НИУ ВШЭ. T&P публикуют конспект его лекции «Программирование как новый английский, или Почему программирование не только для разработчиков».
Илья Щуров
доцент кафедры высшей математики ВШЭ и преподаватель Центра непрерывного образования факультета компьютерных наук НИУ ВШЭ
Можно придумать множество классификаций, но в первую очередь я бы разделил программирование на две большие категории: программирование для кого-то, когда вы пишете программу, которой будут пользоваться люди, и программирование для себя. Профессиональное программирование — это в основном деятельность для других, и я бы не сказал, что она всегда приятна. Вне зависимости от того, заплатили вам за программу или вы пишете свободный софт, которым может пользоваться кто угодно, огромное количество людей предъявит претензии, что у них что-то не работает, и их всегда будет больше, чем тех, кто вас похвалит. А программирование для себя — занятие очень приятное, и сегодня мы обсудим именно его.
Опрос профессиональных программистов этого года показал, что 81% из них программируют в качестве хобби. Это означает, что программирование доставляет удовольствие, что это не просто работа, но и развлечение. Вы можете пользоваться готовыми программами, и в 95% случаев вы будете это делать, даже если вы профессиональный программист. Но в любой области есть задачи, которые никто до вас не решал, и умение программировать позволяет решать их гораздо эффективнее. Однажды я был в call-центре, и меня попросили объединить две таблицы. Человек, который поручил мне эту задачу, ожидал, что я начну по одной копировать ячейки из первой таблицы во вторую. Я перенес пару записей, мне надоело, и я написал короткий скрипт, который брал данные из одной таблицы и вместо меня заполнял гугл-форму, что не очень сложно. Мне это понравилось, но больше всего мне понравилось то, что коллеги смотрели на меня так, будто я владею какой-то магией.
Писать код интересно, но, с другой стороны, это испытание. Ты взаимодействуешь с компьютером, и очень часто это взаимодействие, особенно если ты осваиваешь новую технологию, новый язык, выглядит так. Ты пишешь код, считаешь, что написал его верно, а компьютер говорит, что у тебя ошибка синтаксиса. Действительно, забыл точку с запятой, исправил, запустил заново. А компьютер говорит: «Закрой скобку». Через несколько таких итераций программа начинает работать, и становится ясно, кто в доме хозяин. Дело в том, что и у навыка программирования, и у процесса обучения ему есть некоторые побочные (в том числе положительные) эффекты.
1. Экстремальный опыт руководства
Компьютеры по сравнению с людьми очень глупые, они все понимают буквально, и если вы научились управлять машиной, то, скорее всего, вы справитесь с руководством любыми людьми.
2. Новый подход к информации
Вы начинаете по-другому смотреть на обработку информации, организацию информационных потоков и управления. Например, собирая массивы данных, вы уже задумываетесь, чтобы они были пригодны для последующей автоматической обработки. Это очень важно, если у вас большая организация или проект со множеством информационных потоков, с которыми нужно работать эффективно. Если у вас есть опыт автоматизации, вы довольно быстро поймете, в каком виде нужно получать информацию, чтобы потом ее ловко обрабатывать.
3. Профессиональная коммуникация
Если вы научитесь программировать хотя бы чуть-чуть, вам будет гораздо проще общаться с программистами. Полезно хотя бы на базовом уровне понимать, как устроен мир IT, и коммуницировать в этой сфере без посредников. Люди учат языки, чтобы лучше понять другую культуру, а языки программирования — технологии.
4. Ответственность
Почему уметь программировать может быть опасным? Первая причина — «тыжпрограммист». Если вдруг кто-то узнает, что вы умеете программировать, на вас начинают сыпаться запросы: «Переустанови мне операционную систему, пожалуйста, ты ж программист», «Почини чайник, ты ж программист» и так далее. Это не самая страшная проблема, есть пострашнее. Например, в 2001 году на первом курсе, когда интернет еще был медленным, я решил, что нужно сделать какую-то штуку, чтобы быстрее обмениваться информацией с друзьями. Я подумал: есть почта, и она работает. Тогда я завел отдельный почтовый ящик для нашей тусовки и написал скрипт. Робот заходил в этот ящик, брал письма, которые туда пришли, и пересылал их всем, кто был подписан на эту штуку. Так сейчас работают гугл-группы. Если я хотел написать всем, я отправлял письмо на этот общий ящик; если кто-то хотел ответить, он отвечал на него же, письмо попадало ко всем, и можно было что-то обсуждать.
Но у кого-то переполнился ящик, а когда ящик переполняется, почтовый сервер в ответ на любое письмо направляет отлуп, который тоже является письмом. Оно тоже попало в общий ящик, мой скрипт разослал его по всем адресам, в том числе и по тому, который переполнился. Почтовый сервер сгенерировал новый отлуп и так далее. В результате в воскресенье утром меня разбудил звонок моего друга, который аккуратно сказал: «Возможно, там какая-то проблема, потому что у меня в почтовом ящике 6 тысяч писем, и их количество увеличивается». Ничего особенно страшного не произошло, но это была проблема. Тогда я понял, что код легко может выйти из-под контроля и натворить бед, поэтому надо действовать аккуратно.
Это история как в «Маленьком принце»: вы в ответе за тех, кого приручили. Люди и процессы зависят от кода, который вы написали. То есть, как только вы делаете что-то полезное для других, цена ошибки возрастает.
Как научиться?
На эту тему есть две противоположные точки зрения. Первая: учиться программированию очень просто, основные команды можно освоить за три дня. Но тут высока вероятность, что, когда человек столкнется с трудностями, он решит, что его обманули и программирование — это не его. Программировать не просто, трудности возникают. Одна из причин этого состоит в том, что, когда вы программируете, вы каждый раз осваиваете новые технологии, а это всегда мучение.
Противоположное мнение заключается в том, что если вы не программируете со школьных лет, то нечего и начинать. Это тоже неправда. Программирование требует усилий, но вход в эту область открыт, даже если вы никогда им не занимались.
Вполне вероятно, что задача, с которой вы столкнулись, уже решена и это решение где-то лежит. Иногда разобраться с тем, как оно работает, сложнее, чем написать заново. Это стандартная программистская проблема, но для этого у нас есть Stack Overflow, одно из главных изобретений человечества в сфере программирования. Это сайт, где разработчики делятся опытом и отвечают на вопросы друг друга. У каждого участника свой уровень репутации, все очень удачно спроектировано, поэтому на простые вопросы можно получить ответ в течение десяти секунд. Это очень помогает. В современном мире вы не просто пишете программу — вы одновременно используете огромное количество программ и инструментов, уже созданных другими людьми.
Хороший способ научиться программировать — поставить перед собой задачу, которой вам было бы интересно заниматься, и потом попытаться ее решить. Конечно, есть множество онлайн-курсов — почитайте отзывы, чтобы выбрать подходящий. Первый язык программирования — это сложно, потому что нужно перестраивать то, как вы взаимодействуете с компьютерами и анализируете процессы. Универсальных ответов нет, все очень индивидуально. Кому-то достаточно почитать документацию, посмотреть примеры кода, и все понятно. В другой ситуации хорошо иметь наставника, который ответил бы на базовые вопросы. Вот несколько советов, которые кажутся мне важными.
1. Самый лучший способ что-то понять — найти работающий кусок кода, начать его модифицировать и изучать, что получится. Это нужно сделать после того, как вы разобрались с базовым синтаксисом. Подгоняйте код под свои задачи или просто экспериментируйте.
2. Если вы только учитесь программированию, не нужно сразу пытаться писать много кода до тех пор, пока вы не сможете корректно объяснять, чего хотите. Это нужно для того, чтобы компьютер выполнял команды четко и маленькими шажками. Всякий раз ваши эксперименты должны заканчиваться не тем, что вы случайно наткнулись на правильное решение, а пониманием, почему и как это работает.
3. Не беспокойтесь по поводу математики. Желательно знать, что такое остаток от деления числа на другое число, но все зависит от задач, которые перед вами стоят. Конечно, если вы хотите хитро обрабатывать данные, то вам нужна математика в том объеме, который нужен для такой обработки.
4. Не бойтесь. Когда вы будете начинать программировать для себя, наверное, вы будете писать не тот код, который понравится профессиональным разработчикам. Они скажут, что так не пишут, что это избыточно, что такой код будет сложно поддерживать, и так далее. Наверное, они будут правы. Но если вы пишете для себя и если вы только начинаете, это нормально, что ваши первые попытки не являются текстами уровня Льва Толстого. Если вы напишете программу, которая будет работать и решать вашу задачу, то это хорошо.
Есть мнение, что на фоне развития искусственного интеллекта и машинного обучения программисты скоро будут не нужны: компьютеры сами научатся себя программировать. Но мне кажется, что это не так. До тех пор, пока есть задачи и пока нужно объяснять, как их решать, программирование будет существовать. Безусловно, программирование сильно эволюционирует, за последние 20 лет оно изменилось очень сильно. Но от того, что компьютеры стали умнее, разработчиков меньше не стало — наоборот, их стало гораздо больше. И мне кажется, что дальше будет происходить то же самое.
Какие языки программирования для чего нужны?
Пользователи Recoursia часто задаются вопросом, какой язык программирования стоит изучать. Мы подготовили краткий гид для тех, кто определяется с первым языком программирования. Хотим отметить, что он не претендует на то, чтобы быть исчерпывающим – это только очень беглый взгляд на то, чем сегодня занимаются разработчики, и какой язык программирования может быть первым, а какой – нет.
C
Начнем по алфавиту. Курсов C (Си) в каталоге Recoursia не так уж и много, но тем не менее, этот язык сложно назвать страдающим от недостатка популярности. Это один из самых старых среди активно используемых сегодня в реальной практике разработки программного обеспечения алгоритмических языков. На нем разрабатывают то, что принято обозначать «низкоуровневым программированием» — драйверы устройств, компоненты операционных систем, различные управляющие приборами и встраиваемые в них программы. Спрос на специалистов по языку C не слишком велик, но достаточно стабилен, но при этом, в связи со спецификой разрабатываемых на Си программ, требования к таким программистам очень высокие. Можно с уверенностью сказать, что начинающему C-разработчику в Беларуси сегодня практически невозможно будет подыскать себе работу. При этом учить C можно и нужно, ведь большинство современных языков «выросли» именно из него. Просто нужно быть готовым к тому, что, изучая C, вы заложите фундамент для длинной и успешной карьеры, а не сможете делать какие-то прикладные решения вроде сайтов и мобильных приложений сразу.
C++
Название этого языка программирования не зря так похоже на C. C++ — это «улучшенный C», но в результате такого улучшения получился достаточно непростой в изучении и, как многие считают, и в применении язык, который, тем не менее, остается востребованным уже очень много лет. «Си плюс плюс» — это пропуск в мир разработки всего, что должно работать максимально быстро. Игры, поисковые системы, антивирусы – это только очень краткий список того, что сегодня разрабатывают с помощью C++. Обычно этот язык изучают, уже получив опыт работы с C или другим более простым в изучении языком, и в качестве первого его выбирать вряд ли стоит, особенно если ваша текущая сфера деятельности далека от математики и алгоритмов. Но если вы мечтаете делать игры, причем не мобильные тетрисы, а что-то вроде легендарных Doom, Quake и WarCraft, то учить C++ стоит. Но сначала попрограммируйте на чем-нибудь еще.
C#
Еще один потомок языка C, разработанный корпорацией Microsoft для своей платформы .NET. В отличие от C++, курсы C# подойдут и тем, кто только начинает программировать. На C# (си-шарп) сегодня создают программы для Windows, пишут Web-приложения, а кое-кто еще продолжает разрабатывать и мобильные приложения для Windows Phone, в надежде на то, что Microsoft ещё не совсем забросила свою мобильную операционную систему. Вакансий для начинающих программистов C# сегодня в Беларуси достаточно – во всяком случай, если вы хорошо освоили программирование на этом языке, то наверняка найдутся компании, готовые поручить вам более-менее простые задачи на нем. В общем, если вы хотите стабильную работу, которая достаточно неплохо оплачивается, то стать «шарпистом» — далеко не худший вариант.
Objective C
Четвертый только в нашем списке язык программирования, авторы которого вдохновлялись языком Си. Но при этом он стоит особняком от остальных «наследников Си», ведь когда-то его выбрала в качестве основного инструмента корпорация Apple. Поэтому Objective C применяется практически только для программирования под MacOS и iOS, но в связи с популярностью продуктов «яблочной компании» спрос на разработчиков, использующих Objective C, довольно высок. Впрочем, относительно недавно Apple выпустила новый язык, так что будущее Objective C выглядит не таким уж безоблачным. Да и сложность написания ПО на нем заставляет усомниться в том, что начинать изучения программирования с Objective C – хороший выбор.
Swift
На смену не всегда удобному и вызывающему немало нареканий у разработчиков Objective C компания Apple выпустила новый язык программирования – Swift. Пока что нельзя сказать, чтобы он совсем уж заменил своего предшественника в разработке под iOS и MacOS, но популярность Swift во всех рейтингах стабильно растет, в то время как популярность Objective C так же стабильно падает. Так что если вы хотите программировать под Apple-устройства, вполне можно сразу садиться за изучение Swift, не тратя время на Objective C.
PHP
Некогда самый популярный язык для написания сайтов и Web-приложений, сегодня PHP уже выглядит несколько устаревшим, особенно когда речь заходит о больших проектах для международных рынков.
Тем не менее, благодаря простоте освоения и большому количеству небольших проектов, PHP можно рекомендовать в качестве первого языка для изучения даже тем, кто не имеет ни малейшего представления о программировании вообще. Карьерные перспективы у PHP-разработчиков пока что тоже достаточно неплохи, потому что существует большое количество проектов, ранее уже написанных на PHP, и нуждающихся, как минимум, в поддержке. Хотя при этом зарплата даже у высококвалифицированного PHP-разработчика будет ниже, чем у его коллеги, имеющего аналогичный по продолжительности работы, но использующего C++ или Java.
Java
Второй по популярности язык программирования в мире, который применяется так же широко, как C++, но не имеет большинства его недостатков. Java – это и разработка больших высоконагруженных продуктов для больших транснациональных компании, и небольшие приложения и игры для Android. Программисты, пишущие код на Java, востребованы во всем мире, и Беларусь – не исключение. При этом Java уже много лет остается одной из самых хорошо оплачиваемых массовых специальностей для разработчиков. При этом вероятность того, что в обозримом будущем Java исчезнет из списка востребованных специальностей, ничтожно мала. Правда, и цена за эти преимущества достаточно высока: для изучения Java вам потребуется гораздо больше времени и усилий, чем для изучения того же PHP. Но и отдача будет высокой.
JavaScript
Этот язык часто путают с Java, и неудивительно – когда-то название ему выбрали на волне популярности платформы Java, и с тех под JavaScript постоянно борется за звание настоящего языка. Сегодня, кажется, это уже в прошлом, потому что именно JavaScript – самый популярный язык программирования в мире. Своей популярностью он обязан, конечно, развитию Web, ведь именно JavaScript используется для написания Front-end (браузерной части) всех тех интерактивных Web-приложений, которые сделали браузер таким же рабочим инструментом, как Word, Excel и тысячи других традиционных приложений для Windows. Но сегодня JavaScript (часто пишут сокращенно JS) используется и для серверного программирования, и количество новых сфер применения этого языка растет буквально с каждым годом. При этом порог вхождения в профессию здесь заметно ниже, чем в случае с Java, а зарплаты могут быть часто на том же уровне. С уверенностью можно сказать, что JavaScript сегодня – один из лучших языков для старта карьеры программиста.
Python
Еще один достаточно универсальный и относительно несложный для изучения язык. Python (он же питон, читается как «пайтон») прочно утвердился в очень и очень перспектиной области, которую называют data mining. Если говорить упрощенно, то так называют применение различных данных, накопленных в бизнесе, для поиска скрытых закономерностей спроса и возможностей развития бизнеса. Но Python также активно используется для написания Web-сервисов, серверной части многопользовательских игр и многих других задач. Спрос на Python-разработчиков довольно быстро растет, поэтому если вы решите изучать этот язык программирования, то вряд ли прогадаете.
R
В отличие от «питона», этот язык заточен исключительно под анализ данных, что естественным образом сказывается на его распространенности и востребованности у работодателей. Правда, и платить узкому специалисту по R, видимо, будут больше, чем «питонисту», но попробуйте еще найти подходящую вакансию! В общем, курсы R будут полезны, если вы работаете в сфере анализа данных, и хотите освоить полезный навык. Начинать же карьеру программиста с такого специфического языка вряд ли будет разумным решением.
Scratch
В общем-то, Scratch – это даже не язык, а среда визуального программирования, придуманная для обучения программированию детей. Поэтому 99% курсов Scratch адресованы детям довольно юного возраста, и если вы уже к ним не относитесь, то себе посмотрите что-то другое. Если же у вас есть ребенок, которому 7-12 лет, то курсы Scratch – отличный вариант, чтобы заинтересовать его программированием. Кстати, здесь у нас есть еще подборка отличных советов, как заинтересовать ребенка программированием.
Ruby
Один из достаточно популярных языков Web-программирования, который, в прочем, на белорусском рынке труда не всегда способен обеспечить своего носителя топовым по заработной плате рабочим местом. Курсы Ruby вряд ли стоит изучать для освоения первого языка программирования, потому что с высокой долей вероятности поиски работодателя затянутся, ведь вакансии для junoir’ов на Ruby появляются довольно редко.
Delphi
Еще пять-семь лет назад именно Delphi был стандартным первым языком программирования — еще бы, ведь язык Pascal, который является предшественником Delphi, и был придуман для обучения школьников и студентов программированию. Но для реальной жизни Delphi уже подходит из рук вон плохо, поскольку программирование на нём оплачивается заметно ниже среднего, а новых крупных проектов на этом языке вы не найдете. Поэтому рекомендовать курсы Delphi начинающим программистам в наши дни уже вряд ли стоит.
ActionScript
Ещё один язык из славного прошлого – ActionScript был (да и остается) языком платформы Adobe Flash, на которой еще недавно была написана половина игр для Web. Сегодня уже Flash – это пережиток прошлого, и ActionScript тоже нужен разве что для поддержки всего того, что было раньше написано на Flash’е.
VBA
Язык программирования макросов для пакета Microsoft Office. VBA расшифровывается как Visual Basic for Applications, и используется для автоматизации рутинных действий в офисных пакетах. Так что если ваша работа тесно связана с Word и Excel, то курсы VBA будут полезны, но программистов на VBA на рынке труда никто не ищет, и вряд ли будет искать в обозримом будущем.
1C
Язык программирования для одноименной бухгалтерской платформы. Специалисты по программированию на 1С сегодня нужны не только в ИТ-компаниях; практически каждая крупная организация имеет в своем штате сегодня 1С-программистов. Так что курсы программирования 1С – хороший вариант для тех, кто не очень близок с английским языком, но при этом хочет работать в ИТ-сфере.
—
Давайте подытожим то, что написано выше. Если вы решили учить программирование сегодня, то самое перспективное – это JavaScrip, Java, Python, 1С, Swift и C#. Но, конечно, это не значит, что остальные языки второсортные или неподходящие. Помните, главное – это стремление к цели и упорный труд, которые обязательно будут вознаграждены по достоинству.
Для чего нужны языки программирования
Каким бы совершенным ни был компьютер, без программного обеспечения он представляет собой просто груду металла и пластика. Именно программы определяют, что и как делает компьютер, в какой последовательности он выполняет те или иные операции. Первые языки программирования начали появляться в начале пятидесятых годов и использовались для преобразования простых арифметических выражений в машинный код. Машинный код – это система команд вычислительной машины, интерпретируемых непосредственно микропроцессором. Но человеку писать программу в машинных кодах очень неудобно. Для того чтобы облегчить труд программиста, и начали создаваться языки программирования.Языки программирования делятся на языки высокого уровня и низкого. Чем выше уровень языка, тем легче на нем писать программисту. Такой язык более понятен человеку, так как позволяет с помощью простых смысловых конструкций задавать необходимую последовательность действий. После создания программы происходит ее компиляция – то есть автоматический перевод в понятный процессору язык машинных кодов. Языки низкого уровня находятся гораздо ближе к языку машинных кодов, поэтому писать на них труднее. Но у них есть свое преимущество – написанные на таком языке программы получаются очень быстрыми и компактными. Наиболее популярным низкоуровневым языком является Assembler. Некоторые его преимущества настолько очевидны, что даже в сложных программах, написанных на высокоуровневых языках, часто применяют вставки на Ассемблере.Несмотря на существование большого количества языков программирования, получившие широкое распространение можно пересчитать по пальцам. Одним из самых распространенных является язык C++. Это очень удобный и достаточно простой для программиста язык, позволяющий создавать программы любого уровня сложности. Не так давно компания Microsoft разработала язык C# (читается как «си шарп»), обладающий рядом новых возможностей и предназначенный для написания программ под операционную систему Windows. Компания Microsoft выпустила и очень популярную среду программирования Microsoft Visual Studio, позволяющую программировать на С++, С# и некоторых других языках.Очень известным является язык программирования Delphi. Свое происхождение он ведет от некогда знаменитого Паскаля, однако благодаря усилиям компании Borland приобрел ряд новых качеств, став, по сути, новым языком. Писать на этом языке достаточно просто и удобно, а благодаря среде программирования Borland Delphi он получил очень широкое распространение.Без языков программирования было бы невозможным и существование интернета. Такие языки, как Perl и PHP позволяют создавать скрипты, определяющие выполнение на страницах сайта необходимых действий. Даже создание самой простой интернет-страницы невозможно без знания HTML – стандартного языка разметки документов. Вычислительные устройства сейчас находятся повсюду: в сотовых телефонах и банкоматах, в станках с числовым программным управлением и в телевизорах. Трудно найти сферу жизни, в которой они не были бы тем или иным образом задействованы. И все эти устройства работают благодаря программам, написанным с помощью тех или иных языков программирования.
Что такое программирование и язык программирования
Зачем нужно программирование
Часто людям приходится делать что-то, а потом повторять те же действия сразу или позже. Когда человек первый раз сталкивается с задачей, то обдумывает последовательность действий для ее решения. Другими словами, человек разрабатывает алгоритм решения задачи. Придумав удачный алгоритм, человек его запоминает, и последующее выполнение похожих задач происходит уже на автомате, не думая. Когда мы действуем согласно какой-либо инструкции, не обдумывая ее смысл, то являемся просто исполнителями.
Компьютер может быть лучшим исполнителем, чем человек, хотя бы за счет высокой скорости выполнения действий. У компьютера тоже есть память. И в нее можно записать последовательность действий, то есть алгоритм, для решения той или иной задачи. Машина будет следовать заложенным в ней инструкциям раз за разом и быстро выполнять их.
Однако запрограммировать компьютер, то есть записать в него алгоритм, вложить программу действий, все равно надо. И сделать это может только человек. Человек разрабатывает последовательность действий для решения задачи и сохраняет их в памяти машины. Сам по себе компьютер ничего не понимает, он просто железо, исполняющее лишь то, что было записано в его память.
Разработка алгоритмов для решения сложных задач — трудоемкий и творческий процесс, который зачастую требует знаний из разных областей (например, математики, программирования и предметной области, для которой создается программа). Однако часто выгоды, получаемые при выполнении алгоритма с помощью компьютера, перекрывают затраты на его разработку.
Что такое компьютерная программа
Предположим, что поместить в память компьютера алгоритмы, написанные человеком на естественных языках, не проблема. Но вычислительная машина не понимают такие языки. Для нее нужны инструкции на особом языке — языке программирования. Алгоритм, описанный с помощью языка программирования, является компьютерной программой.
Языки программирования и их история
Так какой же язык понятен компьютеру, в каком виде следует вносить информацию в его память, чтобы он потом делал то, что мы хотим. Компьютер – это электронное вычислительное устройство. Вычислительное! Он работает с числами, складывает, вычитает, сравнивает. Больше ни с чем. Но как же? Ведь мы привыкли обрабатывать на компьютере не только числовую информацию, также текстовую и графическую. Поэтому нам кажется, что компьютер работает не только с числами. Фокус заключается в том, что любую информацию, в том числе текстовую и графическую можно закодировать числами. Все действия компьютер выполняет над числами. И только когда мы обращаемся к данным, эти числа определенным образом декодируются.
Первые программы для ЭВМ программисты писали именно числами. Это сложно для человека. Представьте, что все, что вы хотите сказать, нужно сказать, оперируя исключительно числами. Дело усложнялось еще тем, что компьютеры как вычислительные машины проще создавать таким образом, чтобы они считали в двоичной системе счисления. Записи программ получались слишком длинными. Для их сокращения пользовались восьмеричной и шестнадцатеричной системами счисления. Для записи программы с помощью чисел использовались машинные языки программирования.
Программировать работу компьютера в машинных кодах трудно, так как думать числами неестественно для человека. Мы привыкли думать словами. А что если сопоставить часто используемым группам чисел слова, а затем написать программу перевода слов в числа, понятные компьютеру. В таком случае программист сможет описать алгоритм словами, затем передать его специальной программе-переводчику — транслятору, который преобразует словесный алгоритм в машинный код, понятный компьютеру. И человеку хорошо и компьютеру понятно. От человека требовалось только создать этот самый транслятор. Первыми языками программирования, где использовались слова, были ассемблеры.
Чуть позже программисты стали замечать, что почти все программирование сводится к вводу и выводу данных, выбору той или иной ветки выполнения программы и повторению одних и тех же действий определенное количество раз. Кроме того, некоторые части программы много раз используются в ней в разных местах. Так пришли к выводу о том, что программа должна представлять собой структуру из обособленных частей. Стало развиваться структурное программирование.
Мысль не стояла на месте. Начали появляться объектно-ориентированные, логические, функциональные и другие способы программирования. Так в объектно-ориентированном программировании основной идеей стала аналогия с реальным миром, где есть объекты, имеющие свойства, умеющие что-то делать сами и подвергающиеся изменениям извне. Решение поставленной задачи при этом происходит путем взаимодействия описанных объектов.
Отметим, конкретный язык программирования может поддерживать несколько концепций, или парадигм, программирования. Например, быть структурным и объектно-ориентированным одновременно. Языков множество, парадигм на порядок меньше.
Зачем программисту знать алгоритмы / Хабр
Часто появляются статьи вида «нужны ли программисту алгоритмы», и все они имеют примерно одинаковый шаблон. Автор статьи как правило пишет: «Я N лет пишу сайты/скрипты в 1С, и никогда не пользовался алгоритмами или структурами данных. Тут же приводятся в пример красно-чёрные деревья или какие-нибудь другие экзотические структуры, которые в области, в которой работает автор не часто увидишь, если увидишь вообще. Такие статьи сводятся к тому, что в конкретной области программисты не используют сложные структуры данных и не решают NP задач.
Сама постановка такого вопроса в корне не верна. Количество специальностей в индустрии растёт постоянно, и человек, который пишет сайты на .net будет заниматься совсем другими вещами, нежели человек, пишущий драйвера для сенсоров на ARM архитектуре под экзотической ОС. Давайте прежде всего определим, что же такое алгоритм. Неформально Кормен определяет алгоритм как строго определённую процедуру, которая принимает одно или несколько значений как ввод, и возвращает одно или несколько значений как результат. Формально алгоритм определяется в разных моделях вычислений: операции, которые можно выполнить на машине Тьюринга или с помощью лямбда-исчислений. Таким образом фактически любой код, который что-то делает, является алгоритмом. Получается, что вопрос «нужны ли программисту алгоритмы» можно перевести как «нужно ли программисту уметь писать код». Правильно такой вопрос должен звучать что-то вроде: «нужно ли программисту в отрасли Х знать продвинутые алгоритмы и детали теории вычислений».
Если посмотреть на все эти статьи, то можно заметить, что люди, которые их пишут, фактически обижены на университеты за то, что их заставили учить много сложного материала — в виде алгоритмического анализа, сложных алгоритмов и структур данных — который им вроде бы не пригодился. По сути, авторы статей обижены на университеты из-за того, что там не смогли предсказать будущую область работы авторов и дать им только минимально нужный набор навыков. Ведь действительно, чтобы писать простенькие сайты и скрипты, не нужно особого знания алгоритмов и структур данных. Или всё-таки нужно?
Давайте подумаем, что же нужно учить программисту в университете, для того чтобы приобрести необходимые навыки для успешной карьеры. Библиотеки? Фреймворки? Они устаревают, интерфейсы к ним меняются, все они написаны чаще всего под один язык, который студенты могут и не использовать никогда в индустрии. Всех учить писать сайты? Или всех учить писать ОС? Образование должно охватывать как можно большую аудиторию и давать максимально возможный набор навыков. Программист в первую очередь должен уметь анализировать и решать проблемы – это основной навык, которым должны обзавестись выпускники факультетов информатики. Написание кода – это просто необходимый инструмент, который используется для решения задач. Кто может знать какие навыки вам понадобятся в будущем? Таким образом учить теорию – это наиболее оптимально с точки зрения образования. Полученные навыки можно применить в любой области, а выучить библиотеку или фреймворк имея хорошую базу знаний не составит большого труда. Парадоксально то, что люди задающие вопросы про нужность алгоритмов, как правило имеют какие-то знания в этой области. Я не помню ни одного человека, который не имел знаний в области теории вычислений, и с гордостью кричал об этом, утверждая, что ему они не нужны.
Итак, вы абстрактный программист в вакууме, работаете десять с лишним лет клепая сайты и решая простые однотипные задачи клиентов/компании. Вам хорошо и уютно в вашей нише, и только мучительно больно за бесцельно потраченное время в классе по теории вычислений и алгоритмическому анализу, который вам ничего не дал. По утрам закуривая сигарету за чашкой кофе, в глубине философских размышлений о бренности бытия вы задумываетесь: зачем же программистам, не решающим сложных задач, знать алгоритмы и основы анализа. Короткий ответ: чтобы быть квалифицированным специалистом и эффективно использовать доступные инструменты, включая язык, на котором вы пишите. Теория алгоритмов и анализа учит не только экзотические алгоритмы и структуры данных в виде АВЛ и красно-чёрных деревьев. Она также даёт представления о том, как эффективно организовать данные, как писать код с максимальной производительностью, где в системе возможно бутылочное горлышко и как с ним бороться. Вас ознакамливают с готовыми решениями, чтобы вы не писали велосипедов, и не бежали в гугл каждый раз, когда нужно сделать что-то нетривиальное.
Знания теории анализа и алгоритмов применяются всеми программистами на самом деле каждый день, просто мы привыкли к этим вещам настолько, что даже не задумываемся над этим. Какую бы задачу вы не решали – будь то простой сайт с выборкой данных из БД, или баш скрипт на сервере, вы будете использовать какие-то структуры данных. Как минимум примитивный массив, а скорее всего и что-то посложнее. Языки дают нам множество различных структур, многие из которых взаимозаменяемы. Часто мы имеем несколько вариаций одного абстрактного типа с разными реализациями. Например, в С++ есть структуры данных vector и list. Чем они отличаются, и какие будут преимущества и недостатки использования одного или другого? Как в С++ реализована map, и чем она отличается от multimap? Как реализован list в Python – через массив или связным списком и как лучше всего с ним работать? Почему в C# нежелательно использовать ArrayList, а вместо него использовать List? Как реализован SortedDictionary и как он повлияет на исполнение программы если будет использован вместо Dictionary? Как работает continuation, когда её нужно использовать, и будут ли какие-то побочные эффекты при её использовании? Когда вы в последний раз использовали каррированные функции, которые есть почти в каждом языке? Если вы думаете, что map в С++ реализована как хэш-таблица, вы ошибаетесь. Она реализована на красно-чёрных деревьях, а хэш-таблицей реализована unordered_map. Отдельно стоит упомянуть динамическое программирование. Понимание что это такое, как можно оптимально переписать рекурсивные функции и что такое мемоизация, часто поможет избежать выстрела себе в ногу. Таким образом просто чтобы полноценно и эффективно использовать язык, на котором вы пишите, уже нужно иметь хотя бы поверхностные знания о структурах данных, что они из себя представляют, и как могут повлиять на исполнение вашей программы.
А как же библиотеки? Ведь они решают столько задач! Чтобы рационально использовать библиотеки, их тоже нужно понимать. Во-первых, функции в библиотеки могут иметь побочные эффекты или поведение, которые вы не будете знать без понимания алгоритмов. Получив баг в таком случае можно долго и упорно пытаться его поймать и решить, когда можно было избежать. Во-вторых, различные инструменты и библиотеки часто нужно «настраивать» — говорить им какие алгоритмы, структуры данных и технологии использовать внутри. Без элементарных знаний вам придётся либо идти читать маны, либо выбирать наугад. В-третьих – есть множество задач, которые нельзя решить простым вызовом API библиотеки или фреймворка. Что вы будете делать в таком случае? Тратить часы на поиски возможных решений и просить помощи у друга? В-четвёртых – множество задач решается очень просто несколькими строчками кода или встроенными средствами языка. Если для решения каждого чиха вы будете тянуть библиотеку, то ваши программы будут гигантскими монстрами, занимая по сотни мегабайт и больше на диске, отжирая всю память на сервере, и при том имея довольно скудный функционал. Кроме того, наличие кучи подключенных библиотек влечёт за собой проблемы совместимости, и программа может падать случайным образом из-за странного поведения нескольких библиотек в одном проекте. Бездумное использование библиотек может привести к довольно плачевным последствиям, и разработчики, которые умеют только использовать библиотеки, но не способны решить даже простую проблему самостоятельно, никогда не будут ценится, потому что их решения будут неконкурентоспособны.
Со мной работал один программист со стажем больше десяти лет. Однажды нам понадобилась функция, которую использованная нами библиотека на тот момент не поддерживала: примитивный text-wrap в одном из визуальных компонентов. Этот «программист» посмотрел, что стандартными средствами это сделать нельзя, и сразу заявил, что реализация такой функции невозможна. Задачу решил интерн-третьекурсник с аналитическим мозгом, который за два часа написал простой алгоритм и внедрил его в нужный компонент. Другой проект в виде сайта на .net мне достался по наследству. Главная страничка представляла собой несколько маленьких графиков, и загружалась почти 10 секунд. Оказалось, что человек, который изначально делал этот проект, нагородил кучу ужасных конструкций из тройных вложенных циклов, которые долго и печально забирали данные из БД, и потом привязывали их к графикам. После небольшого рефакторинга страница стала грузится почти мгновенно.
Может ли программист обойтись без знаний алгоритмов и теории анализа? Может, и таких «программистов» очень много. Только назвать их программистами можно разве что с большой натяжкой. Ко мне на собеседование приходит очень много программистов, со стажем десять-пятнадцать лет, и толком не понимающих что же они делают и почему. У них своя ниша, они ходят от компании к компании, не задерживаясь в них больше года. Как правило, у них есть небольшой набор задач, которые они могут решать, и если сделать шаг в сторону, то человек теряется и ему нужно обучить себя новым навыкам. Таких людей приглашают на проект, и от них избавляются как можно быстрее, потому что они теряют кучу времени, изобретая велосипеды и читая маны чтобы узнать то, что уже должны были знать из университета. У них как правило нет особо никакой карьеры и нестабильный заработок.
В итоге, для чего нужно знать алгоритмы и теорию анализа, если можно выполнять работу и без этих знаний? Чтобы быть квалифицированным специалистом в своей профессии, иметь карьерный рост и уважение коллег. Чтобы эффективно решать поставленные задачи и не изобретать велосипедов. Чтобы не писать монстров с огромным количеством сторонних библиотек, которые занимают сотни мегабайт на диске от отжирают кучу памяти на сервере и регулярно падают по случайной причине в зависимости от фазы луны. Чтобы эффективно и с максимальными возможностями использовать язык, на которым вы пишете. Чтобы принимать информированные и осмысленные решения по выбору библиотеки и технологии для решения проблемы. Если же ваша работа заключается в написание SQL запроса и вбивание команды в консоль, то хочу вас огорчить: вы не программист, вы – пользователь, вам действительно не нужны алгоритмы и иже с ним, и вы зря потратили время в университете потому что для такой работы достаточно закончить курсы или прочитать пару вводных книжек самостоятельно.
Что такое программирование? — Счастливое кодирование
Счастливое кодирование
Учебники
Примеры
Блог
Около
Обучение
Форум
- Учебники
- Учебники по обработке
- Час кода
- Что такое программирование?
- Функции вызова
- Использование переменных
- Создание переменных
- Создание функций
- Отладка
- Если заявления
- Анимация
- Вход
- Для петель
- Массивы
- Использование объектов
- Создание классов
- ArrayLists
- Изображения
- Библиотеки
- Экспорт приложений
- Обработка.js
- Обнаружение столкновений
- Простая ссылка
- HTML Учебники
- Введение в веб-разработку
- HTML
- HTML-теги
- CSS
- Хостинг
- Учебники по JavaScript
- Вызов JavaScript
- Инструменты разработчика
- Создание переменных
- Создание функций
- Интерактивный HTML
- Создание объектов JavaScript
- Библиотеки
- JQuery
- Загрузочный
- AJAX и JSON
- p5.js Учебники
- Добро пожаловать в Coding
- Функции вызова
- Создание переменных
- Использование переменных
- Создание функций
- Если заявления
- Анимация
- Вход
- Для петель
- Массивы
- Какая обработка?
- Редакторы
- Привет, мир
- P5.js и Web Dev
- Обзор
- Библиотеки
- Случайно
- Учебники по Java
- Установка Java
- Привет, мир
- Создание классов
- Ошибки
- Наследование
- Качели
- Библиотеки
- Затмение
- Экспорт файлов Jar
- Обработка в Java
- Модульное тестирование
- Учебники по серверу
- Установка причала
- Связь клиент / сервер
- JSP
- Сервлеты
- Eclipse EE
- Публикация запросов
- Библиотеки
- Очистка пользовательского ввода
- сеансов
- Безопасное хранилище паролей
- Хостинг на AWS
- Безопасность резьбы
- Хостинг на Google App Engine
- Базы данных
- Загрузка файлов
- Создание REST API
- Стойки
- Руководства по Google Cloud
- Настройка
- App Engine
- Хранилище данных
- OAuth 2.0
- Облачное хранилище
- Естественный язык
- Перевод
- Облачное зрение
- Карты Google
- Аутентификация
- Blobstore
- Руководства по Android
- Привет, мир
- Анатомия приложения для Android
- Макеты
- Мероприятия
- Хранилище
- Пользовательский чертеж
- Учебники по LibGDX
- Настройка
- Привет, мир
- Пользовательский ввод
- Несколько игровых экранов
- Графика
- Изображения
- Звук
- Библиотеки
- Поиск пути
- Практические руководства
- Учебники по обработке
.
Что такое программирование / кодирование? — Программирование для начинающих
Компьютерное программирование, также известное как кодирование, — это процесс создания программного обеспечения.
Но что именно представляет собой ПО и как оно сделано?
Что такое программное обеспечение?
Программное обеспечение — это набор инструкций для компьютера.
Это немного похоже на рецепт приготовления:
- Разбить яйцо в миску
- Взбить яйцо
- Поставить сковороду на средний огонь
- Смажьте противень
- Вылить яйца в сковороду
- И так далее
Вместо того, чтобы манипулировать ингредиентами, компьютеры манипулируют данными.Инструкции внутри программного обеспечения выглядят примерно так:
- Загрузить данные
- Загрузить другие данные
- Преобразуйте эти два бита данных в данные результата
- Отправить данные результата на монитор для отображения
- Отправить данные результатов через Интернет
- И так далее
Эти инструкции обычно называются исходным кодом .
Исходный код — это просто набор письменных инструкций, понятных компьютеру.
Как выглядит исходный код?
Код
написан не на естественных языках, например на английском.
Вот небольшая программа, написанная на языке Ruby:
требуется 'open-uri'
требуется 'json'
FRONT_PAGE_URL = 'https://reddit.com/r/all.json'
front_page = JSON.load (открыть (FRONT_PAGE_URL) .read)
top_post = front_page ['данные'] ['дети'] [0] ['данные']
помещает "Верхний пост на Reddit:"
помещает top_post ['title']
помещает top_post ['url']
Эта программа отображает текущий верхний пост на Reddit, например:
Верхний пост на Reddit:
Одна из моих любимых вещей в работе на лыжных площадках
http: // i.imgur.com/hWwlWgI.jpg
Вот точно такая же программа, написанная на похожем языке под названием Python:
импорт urllib, json
FRONT_PAGE_URL = "https://reddit.com/r/all.json"
front_page = json.loads (urllib.urlopen (FRONT_PAGE_URL) .read ())
top_post = front_page ['данные'] ['дети'] [0] ['данные']
print "Верхний пост на Reddit:"
печать top_post ['title']
печать top_post ['url']
Вот та же программа на другом языке под названием Clojure:
(требуется '[clojure.data.json: как json])
(def URL-адрес главной страницы "https://reddit.com/r/all.json")
(пусть [верхний пост (-> URL-адрес первой страницы
(чавкать)
(JSON / чтение-стр.)
(get-in ["данные" "дети" 0 "данные"]))]
(println "Верхний пост на Reddit:")
(println (получить "заголовок" верхнего поста))
(println (получить "url" верхнего поста)))
Как видите, языки программирования сильно отличаются от естественных языков.
Естественные языки неоднозначны, имеют много разных смысловых слоев — сарказм, намек и тому подобное.Это замечательно, если вы общаетесь с человеком, но компьютеры этого не понимают.
Компьютеры воспринимают все буквально.
Если вы спросите компьютер, четное или нечетное число, он всегда ответит «да».
Я даже не шучу — вот код Ruby:
Этот код отображает «истина», что соответствует технически правильным.
Число пять — это либо нечетное , либо четное , но я не это имел в виду.
Больше, чем просто написание кода
Написание кода — это всего лишь одна часть создания программного обеспечения.
Крупные программные продукты, такие как Windows, OS X и игры с большим бюджетом, состоят из миллионов и миллионов строк кода.
Когда у вас есть такой объем кода, вам нужно спланировать, как он будет написан и как разные части кода будут работать вместе.
Этот вид планирования называется дизайн или архитектура .
В больших проектах много времени уходит на проектирование и архитектуру до написания кода.
Еще одна важная часть создания программного обеспечения — это тестирование .То, что код был написан, не означает, что он правильный.
Код может иногда давать сбой, давать неверные результаты, зависать или возникать другие проблемы.
Чтобы попытаться избежать этих проблем, профессиональные разработчики программного обеспечения используют различные способы тестирования своего кода.
Затем идет отладка , которая представляет собой процесс исследования, диагностики и устранения проблем в исходном коде.
Это само по себе умение.
Заключение
Итак, программирование — это написание инструкций для компьютера.Инструкции, называемые исходным кодом, написаны на специальных языках, которые не похожи на естественные человеческие языки.
Это также включает планирование, тестирование и отладку исходного кода.
.