Most in-demand programming courses — coding elements

Содержание:

Хардкор для сильных духом

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

Что такое исключение? Это, в первую очередь, прерывание текущего потока исполнения и переход либо вверх по стеку вызовов, либо в блок «Исключение» оператора «Попытка».

Во-первых стоит разобраться с тем, как 1С выполняет возврат из метода. Она применяет опкод BlckEnd сразу за которым идет Jmp на конец тела метода. По всей видимости, BlckEnd — это какой-то специализированный оператор очистки конца блока. При выходе из тела процедуры аргумент опкода BlckEnd всегда равен 0.

Чуть сложнее обстоит дело с Попыткой. При выходе из блока «Попытка» тоже исполняется операция BlckEnd, но в качестве аргумента передается номер вложенности блока Попытка относительно тела метода.

Т.е. «возврат» просто из тела процедуры — это BlckEnd 0, а «возврат» из Попытки — это BlckEnd <номер вложенности блока попытки>. Да, под словом «блок Попытка» я понимаю именно тот блок, который находится между словами и , т.е. я имею в виду «безошибочную» часть конструкции «Попытка Исключение».

Разбор конструкции Попытка-Исключение

Блок обработки ошибок открывается опкодом BeginTry, аргументом которого идет адрес начала блока Исключение. Т.е. при возникновении ошибки будет переход на тело обработчика. Далее, идет собственно код тела Попытка, а в его конце будет стоять BlckEnd <номер> и Jmp за пределы оператора КонецПопытки;

Рассмотрим байткод для следующего модуля:

байткод

Здесь все довольно прозрачно. Блок Попытка открывается оператором BeginTry и указанием адреса, куда перейти, если вдруг что случится (начало блока Исключение).

Далее идет тело блока (здесь отсутствует), а в конце оператор очистки BlckEnd и прыжок за пределы обработчика ошибок (адреса 2-3). Блок Исключение завершается оператором EndTry.

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

Особенности автоматизированного чтения

( | | )

Автоматическое сканирование часто производится дважды — слева направо и наоборот. Это позволяет минимизировать количество ошибок.

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

Ещё один пункт, важный для неидеальных условий — чтение не последовательности, а последовательности (). Поскольку PDF417 рассчитаны в том числе на печать на физических носителях, возможно размытие чернил (и т.д.), которое может привести к тому, что заполненные группы модулей станут шире, а пустые — уже. Проводя сканирование от края до такого же края, такие ошибки можно минимизировать.

Следующим шагом является определение уровня коррекции ошибок и построение матрицы слов. Кроме того, строится ещё одна матрица, которая состоит из весов (уровня доверия каждому значению). Слова с низким уровнем доверия в последствии проверяются на ошибки первыми.

Компактный (усечённый) PDF417

( | | )

В случае использования PDF417 в «чистой» среде (символ не может быть случайно повреждён и чистые зоны вокруг символа достаточно велики), можно использовать усечённый режим PDF417 (Truncated PDF417, ).

Он работает следующим образом:

  • Правые индикаторы упускаются (вся информация в любом случае дублируется в левых индикаторах, );
  • Стоп-паттерн сокращается до 1 модуля.

В результате ширина символа сокращается на 34 модуля и формула из может быть переписана:

Рис. 9. Усечённый PDF417 (содержит ту же информацию, что и рассмотренный ранее код)

Стоит помнить, что у такого метода кодирования есть и недостатки:

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

Работа в Практикуме

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

В каж­дой коман­де есть свой тим­лид и свои про­цес­сы. Так что я совсем не лезу в мик­ро­ме­недж­мент: не гово­рю нико­му, какую брать зада­чу и как её решить.

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

«Раз­ра­бот­чи­ки могут взять роль про­ект­ных мене­дже­ров. Для них это точ­ка роста»

Мы ста­ра­ем­ся раз­ра­ба­ты­вать реше­ния, кото­рые мож­но исполь­зо­вать мно­го раз. Напри­мер, наша плат­фор­ма поз­во­ля­ет быст­ро созда­вать кур­сы и добав­лять новые интер­ак­тив­ные тре­на­жё­ры раз­но­го пла­на. Это даёт воз­мож­ность в сжа­тые сро­ки соби­рать новые про­фес­сии и начи­нать обу­че­ние сту­ден­тов — не нуж­но раз­ра­ба­ты­вать каж­дый раз с нуля.

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

Что­бы все были в кур­се, как дела в раз­ра­бот­ке, каж­дая коман­да про­во­дит еже­днев­ные стен­да­пы по 15 минут. Еже­не­дель­но про­во­дим встре­чи по теку­щим и буду­щим про­ек­там. В кон­це сприн­тов про­во­дим ретро­спек­ти­ву и обсуж­да­ем, что мож­но изме­нить в про­цес­сах. У всей коман­ды Прак­ти­ку­ма ещё есть регу­ляр­ное демо, где все пока­зы­ва­ют резуль­та­ты за послед­нее вре­мя.

Кам­пус Яндек­са в Сочи — коман­да Прак­ти­ку­ма на экс­кур­сии в Абха­зии. Фото из хол­ла забро­шен­ной гости­ни­цы

Эволюция требований к чистому коду

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

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

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

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

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

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

Рулим Facebook

Facebook — сеть малоизвестная, и ты наверняка о ней ничего не слышал :). Возможно, тебе захочется с ней познакомиться только потому, что в ней отвисает почти вся команда Хакера. В отличие от «В Контакте», для Facebook’а существует множество вариантов SDK, модулей и т.д. Стоит зайти на тот же CodePlex, вбить в поиск «Facebook» — и перед тобой вывалится несколько страниц с разными модулями/ библиотеками. Среди такого количества вариантов нетрудно и потеряться. Особенно напрягает, что многие предложенные решения в настоящий момент уже не работают. Чтобы ты не тратил свое драгоценное время зря, я сразу рекомендую тебе присмотреться к библиотеке Facebook С# SDK () и Facebook Developer Tookit (). С их помощью ты за считанные минуты научишься создавать десктопные/web/Silverlight-приложения, взаимодействующие с Facebook. Добавь ко всему этому возможность работы под Windows Phone 7, и становится однозначно понятно, что обе библиотеки must have!

Обе библиотеки хороши, но я больше предпочитаю использовать вторую. Почему? Нет, я не имею ничего против Facebook C# SDK, но с FDT я познакомился немного раньше и успел привыкнуть к ней. Для того чтобы начать разработку своего первого проекта для Facebook, тебе потребуется пройти на и создать новый application. Подобную процедуру ты выполнял при разработке приложения для DropBox. Выполнив эту нехитрую операцию, ты получишь ключ, который и будешь использовать в проекте. Ну а дальше все стандартно. Имея на руках ключ приложения и FDT, ты можешь приступать к разработке своих программ. В FDT есть все необходимое для организации поиска друзей, отправки сообщений и т.д. Длинных примеров кода приводить не стану. Где их найти — сам знаешь.

Это можно делать по-разному

Разработка приложений, направленных на взаимодействие с социальными сетями, практически ничем не отличается от программирования других сетевых приложений. В твоем распоряжении — бесконечный полигон возможных сценариев. Например, ты можешь блеснуть знаниями и быстренько все реализовать при помощи уже знакомых сокетов и метода научного тыка. То есть, берем анализаторы трафика и натравливаем их на бродилку. Дальше смотрим, какие запросы отправляет браузер на сайт нужного сервиса и эмулируем все это дело в твоей программе. Способ, несомненно, надежный, но крайне трудный для реализации. Одна отладка стадии работы с сокетами чего только стоит. Я уже молчу про бесконечные разборы полетов с анализом запросов.

К счастью, у любой задачи есть несколько решений. И наша — не исключение. Помнишь, я говорил, что разработчики подобных проектов стараются идти навстречу и для удобства предоставляют хорошо документированный API? Считай, тебе уже не нужно разбираться в тонкостях протокола обмена информацией. Достаточно следовать официальному мануалу и почаще заглядывать в примеры. Этот способ уже лучше, чем предыдущий, но воздух все равно насыщен запахом отладки и бессонной ночи. Какой бы хорошей ни была документация, всегда найдется непредвиденная ситуация, которая существенно затормозит процесс разработки.

Быть может, есть способ еще проще? Ну ты и лентяй! Шучу-шучу, не мне тебя корить, я сам ленивый. К тому же, более простой способ действительно есть. Не ты первый и не ты последний программист, решивший написать программу для работы с Х-сервисом. Этим вопросом озадачивались многие программисты, и самые матерые из них уже давно выплеснули свой опыт в универсальные библиотеки и модули. Такое добро реально найти практически для всех популярных языков программирования. Проще этого способа, пожалуй, нет ничего.

Послесловие

( | | Вперёд)

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

Возможно, вам будут также интересны другие статьи цикла Коды step by step:

  • о кодах PDF417 (данная публикация)
  • об Aztec Code

Также, могу предложить прочитать что же делать, когда инструкции к коду нет, а прочесть его интересно (на примере PDF417).

Не забывайте, всегда лучше знать, как что-то работает. Вдруг, оно работает неправильно.

Спасибо за внимание!

Учим Java с нуля — короткий путеводитель для новичков

  1. Шаг 1-й. Начните изучать туториал или проходить онлайн-курс Java с практическими задачами.

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

  2. Шаг 2-й. Спрашивайте, спрашивайте и еще раз спрашивайте.

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

  3. Шаг 3-й. Если процесс обучения застопорился, почитайте книги.

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

  4. Шаг 4-й. Регулярно изучайте чужой код и учитесь на нем.

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

  5. Шаг 5-й. Начинайте отвечать на вопросы новичков.

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

  6. Шаг 6-й. Создайте собственный репозиторий на GitHub.

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

  7. Шаг 7-й. Начните свой проект на GitHub.

    Где-то месяца с четвертого или пятого, а для тех, кто быстро учится, может и месяца с третьего, когда вы уже достаточно освоитесь с основами программирования и синтаксисом Java, начинайте писать собственный проект и выложите его на GitHub.

Что значит «взаимодействовать»?

Изначально социальные сети строились как отдельные проекты. Об объединении с похожими ресурсами не было и речи. Наверное, основной идеей был охват пользователей. «Зачем делиться посетителями, если их можно собрать всех?», — думали многие. К счастью, время делает свое дело, и после старта в России «В Контакте» стали появляется альтернативы. Причем альтернативы с хорошим финансированием — «Мой мир», «Одноклассники» и т.д. В основе всех этих проектов лежит одна и та же идея. Тем не менее, каждый из них старается выделиться и предоставить пользователю уникальные фишки. Вот бедным пользователям и приходится разрываться. В одной сети — куча друзей, в другой — до фига левого контента, в третьей — тусуются заказчики и работодатели…

Выбрать для себя один сервис на все случаи жизни уже нереально. Разработчики социальных сетей (а также различных полезных сервисов) это поняли и сейчас активно улучшают интерфейсы для взаимодействия с другими сервисами и программами. Выгода очевидна для всех. Пользователю не нужно разрываться между разными проектами. С помощью специальных средств он может заходить в один сервис, но всегда быть в курсе того, что творится на другом. Вот тебе реальный пример. На портале сообщества www.vr-online.ru настроена интеграция с такими социальными сетями, как Twitter и «В Контакте». Стоило один раз все поднять — и теперь при добавлении нового контента его анонс мгновенно улетает в твиттер и контакт. Вроде мелочь, а в итоге — пользователи обеих социальных сетей сразу становятся в курсе обновления. Удобно?! Думаю, да.

Честно говоря, это еще мелочи. Экспорт материала — это лишь вершина айсберга. Главная вкусность заключается в возможности использования системы авторизации социальных сетей для своего проекта. Проще всего это представить на примере web-проекта. Не буду далеко ходить и в качестве примера вновь назову свой любимый www.vr-online.ru.

Результат не заставил себя долго ждать — новые пользователи стали охотно пользоваться этой фичей. Сейчас ты можешь подумать, что подобные взаимодействия актуальны лишь для сайтов, а для десктопных приложений действуют иные правила. Это не так. Ты запросто можешь использовать подобные трюки и в десктопных приложениях. Допустим, ты решил закодить очередной и неповторимый ICQ-клиент (Хотя, кто в наши дни еще пользуется аськой?). Однозначно ты получишь дополнительных юзеров, если снабдишь свое творение поддержкой обмена сообщениями через «В Контакте», «FB» и т.д. Сделаешь все это красиво и качественно — твоими пользователями станут не только асечники, но и контактники (как пример). Помни, что рост количества пользователей твоего проекта существенно увеличивает шанс заработать на нем кругленькую сумму американских президентов.

Педагог или тренер?

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

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

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

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

«В контакте» под чутким надзором

«В Контакте» — пожалуй, самая популярная в России социальная сеть. Одни используют ее для бесконечного трепа с друзьями, а другие, более продвинутые, — как площадку для продажи или рекламы своих товаров и услуг. Кроме того, «В Контакте» может похвастаться несметным количество не совсем легального медийного контента. Несмотря на популярность, в плане кодинга контакт выглядит очень тухло. За все время существования этой сети так и не появилось качественного SDK и качественной библиотеки для взаимодействия сторонних приложений с функциями социальной сети. Нет, нельзя сказать, что энтузиасты не предпринимали попыток создать шедевр. Попыток были, но практически все проекты не могут выйти из стадии Alfa, либо стали заброшенными. Из того, что есть, наиболее выгодно выделяется проект Silverlight vkontakte API (silverlightvkapi.codeplex.com). Его возможностей вполне хватит для решения типовых задач (публикация на стену, загрузка фотографий и т.д.).

Примеры объемны для публикации, смотри исходники на диске.

Почему “не кодить”:

1. Слишком много информации

Будем честными: сам по себе дизайн — это уже куча информации. Если вы хотите научиться разрабатывать сайты, придется как минимум изучить HTML/CSS и JavaScript. А если хотите закодить тему WordPress, также нужен PHP. Да, все это не так сложно как кажется, но на начальном этапе может быть нелегко.

2. Вы не сможете делать работу на высоком уровне

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

3. Возможно, вам не понравится кодить

Мне больше нравится дизайнить — и, если есть возможность, я предпочту отдать код разработчику. Если вам не нравится кодить, не нужно заставлять себя. Сложно добиться совершенства в деле, которое не нравится.

На заметку: Я не имею в виду сервисы по созданию сайтов вроде Wix или Weebly.

4. Вам и не надо кодить

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

5. Вы хотите сосредоточиться на чем-то другом

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

Что делать, если я не хочу изучать эти языки?

Разумеется, мы не заставляем вас целый год учить «никому не нужные» Pascal и Delphi: достаточно просто потренироваться в них какое-то время, чтобы усвоить правила хорошего тона. Наша задача — только дать совет, с какого языка лучше начать изучение программирования. С самообразованием будьте аккуратны: можно испортить себя как разработчика, едва начав карьеру.

Не исключено, что наши рекомендации покажутся вам старомодными, и вы захотите броситься на амбразуры кодинга как можно скорее с динамическими языками современного веба: PHP, Python и другими. Тогда начинайте изучение программирования с поиска ментора и прохождения онлайн-курсов. Здесь вас научат писать код по правилам те, кто уже давно умеет это и прошли боевую школу со многими другими языками и технологиями. Присутствие наставника — это очень важный фактор при изучении программирования на первых порах.

Рекомендуем курсы для начинающих под руководством ментора:

«Профессия Java-разработчик» — углубленное изучение универсального языка программирования в течение 4 месяцев.

«C#-разработчик с нуля» — практический базовый курс по C# с разработанным десктопным приложением на выходе.

«PHP-разработчик» — обширная программа, рассчитанная на все уровни знаний: от junior до senior.

Курс «Профессия Java-разработчик»

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

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

Начните с HTML и CSS

Часто их называют языками программирования, но это не верно. Это язык разметки и таблица стилей, с помощью которых верстается страница. Все сайты используют HTML и CSS. Прелесть технологий — в их простоте: их легко освоить на среднем уровне за 2-3 недели. Если вам интересно работать в интернете — попробуйте.

JavaScript

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

  • серверные и консольные приложения;
  • игры и сервисы для мобильных;
  • программы для десктопа.

Этот язык быстро развивается, востребован на фрилансе. Часто именно JS рекомендуют в ответ на вопрос, какой язык программирования выбрать для быстрого старта. Его легко освоить.

Начинающий разработчик на JavaScript может рассчитывать на 30 тысяч рублей в месяц. Средний — 45–90 тысяч и больше. C опытом от трех лет — на 135 тысяч и больше.

Особенности:

  • Неявная типизация. Когда разработчик пишет код, он использует переменные — строки, числа и прочее. В языках со строгой типизацией программисту приходится объявлять тип переменных — сообщать обработчику, что это, например, число или строка. В языках с неявной типизацией обработчик «понимает» это сам. С одной стороны, это плюс — код пишется быстрее. С другой стороны — минус, потому что новички часто ошибаются и создают операции для переменных с разными типами данных. Например, в коде порой встречается суммирование чисел и слов. Это довольно формальное объяснение, на самом деле всё сложнее. Подробнее вы поймете эти особенности после старта обучения.
  • Малонадёжность — JS не используют в сверхсложном ПО, разрабатывать банковские или промышленные продукты на нем не получится.

Стек:

  • редактор кода или IDE (среда разработки): Notepad++, Sublime Text, WebStorm;
  • отладчик: браузер, Firebug;
  • среда исполнения для серверного ПО: NodeJS + менеджер пакетов npm.

Разрабатывать удобно в редакторе кода — он подсвечивает синтаксис и подсказывает нужное написание. Отладка, или пошаговое исполнение программы, в JS происходит в DevTools браузера, дополнительное ПО необязательно.

Пример синтаксиса JavaScript — обработка формы входа

Не забывайте о библиотеках и фреймворках. Это компоненты, из которых собирается программа. Для упрощения понимания: представьте строительство дома. Вы не создаете с нуля каждый кирпич, не делаете сами молоток, а пользуетесь готовыми инструментами и материалами. В случае с программированием — делаете программу из компонентов библиотеки или фреймворка.

Не торопитесь вникнуть во все технологии сразу. Начинаете с нуля — используйте чистый язык и разбирайтесь в принципах программирования.

Дополнительно пригодится:

  • для десктопных программ: Electron и AppJS;
  • популярные фреймворки и библиотеки: jQuery, AngularJS, ReactJS, Ember;
  • JSON — популярный формат передачи структурированных данных;
  • MongoDB — документо-ориентированная база данных для JS-процедур.

Курс «Профессия frontend-разработчик»

С нуля до разработчика с зарплатой от 60 000 рублей за 6 месяцев. Научитесь верстать сайты и создавать интерфейсы, соберите два проекта в портфолио и получите современную профессию.

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

Коммуникативные и интеллектуальные навыки

Декламирование стихов

Сложно судить о практической пользе, но это не лишний скилл (хотя бы потому что он перекликается со следующим пунктом). Ну и запомните заодно десяток стихотворений, которые действительно вам нравятся (будь это Ананасова, Есенин или Рильке, не суть важно!) — для памяти полезно, в конце концов.
Ораторское искусство поможет более уверенно чувствовать себя на конференциях, совещаниях, собраниях, в бытовых разговорах. Искусство публичного выступления пригодится и для бизнеса, и для частной жизни.
Ведение переговоров — это навык, которого нам так часто не хватает даже в быту

Восполните это, пройдя один из курсов ведения деловых переговоров (длительность обычно от двух до пяти недель).
Научиться писать второй рукой (левой если вы правша, правой если левша). Не комментируем, тут все очевидно!
Научитесь ходить в музей. Да-да, это искусство, которым владеют немногие! Прочтите книгу Йохана Идема “Как ходить в музей”, чтобы понять всю прелесть этого занятия и научиться получать реальное удовольствие от таких культурных выходов.
Языки. По разным оценкам, для изучения испанского языка до разговорного уровня нужно потратить где-то 200 часов самостоятельных занятий. За какое время можно выучить французский? 300 часов. А вот даже совсем базовый китайский за лето будет проблематично изучить: на него нужно около 1500 часов. Впрочем, работа с репетитором ускорит процесс изучения иностранного языка. Как можно выучить второй иностранный, зная английский, без репетиторов? Аудиокурсы от Мишель Томаса помогут! Plus vite nous commencerons, plus nous disposerons de temps!
Интересная вещь, которую стоит узнать летом, — это теорема Геделя. Изложена она в книге “Гедель, Эшер, Бах: Эта бесконечная гирлянда”. Ну а что, зато интересно!
Научиться правильно расставлять знаки препинания по Розенталю. Справочник не такой большой, как кажется, а потому справиться с этим можно меньше, чем за месяц. И вам точно не придется опасаться плохого впечатления от ваших писем. Согласитесь, оно того стоит!
Быстро считать в уме, в том числе умножать трехзначные цифры друг на друга. Хорошая тренировка для мозга, да и учиться легко — не забывайте тренироваться каждый день и проверять себя с калькулятором.

Рассчитываем время

Научиться писать несложные скрипты можно за 1–2 месяца, но если конечная цель — устроиться на работу младшим программистом, то на это уйдет минимум год, говорят в Skillbox. Скорость освоения программирования сильно зависит от практики и обратной связи. Если есть ментор, который регулярно проверяет и помогает исправить ошибки, грамотный код получится писать через год обучения, добавляют в GeekBrains.

интенсив по узкой теме для опытных разработчиков. С нуля за это время можно освоить разве что основы HTML и CSS.

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

полноценный курс — с нуля до минимального профессионального уровня.

Обучение машин: что такое machine learning и как им овладеть

Учитывайте интенсивность обучения. Например, в Moscow Coding School занимаются по 6 часов в неделю, в HTML Academy — по 2–4 часов в день, в среднем от 20 часов в неделю (в это время входят лекции два раза в неделю и выполнение домашних заданий). В GeekBrains модуль, рассчитанный на две недели, обычно включает 5 уроков, на месяц — 8 уроков, видеокурс для самостоятельного прохождения — 20 уроков; при этом после каждого занятия учащегося ждет домашнее задание.

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

Учимся сами

Учиться можно и самостоятельно, хотя это определенно потребует больше времени. В GeekBrains рекомендуют серию самоучителей «Head First». В Skillbox советуют искать видеоуроки по программированию, слушать подкасты, пробовать программировать самостоятельно и обсуждать свои работы на профессиональных форумах

При этом очень важно изучать язык системно, регулярно: каждый день или раз в два дня что-то делать — или читать теорию, или практиковаться, отмечает Евгений Картавец из GeekBrains. «На первые несколько месяцев этого хватит

Затем нужно начать работать над полноценным портфолио, чтобы знаний было достаточно не только для учебного проекта, но и для чего-то серьезного», — говорит он.

Самоучители по Java, C#, HTML, JavaScript, jQuery, SQL, Android, iOS и т. п. Написаны простым языком, содержат много картинок, схем, таблиц и графиков; снабжены упражнениями для закрепления пройденного материала.

Контент предоставляется после оформления платной подписки.

Предлагает обучающие видео по различным языкам программирования и фреймворкам (React.js, Python, Django, C ++, Node.js, JavaScript). Большая часть контента доступна бесплатно.

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

Обучающие видео в основном для начинающих.

Получаем обратную связь

«Недостаточно просто решить задачу; нужно решить ее грамотно, качественно, чтобы разработка была стабильна, а код был читаемым», — отмечает Евгений Картавец. Получить обратную связь студенты могут как от лекторов, так и от личных наставников, которых некоторые школы закрепляют за учениками. Там, где личного наставника нет, обычно можно обратиться за помощью на форум, где общаются и ученики, и преподаватели.

Тем, кто учится самостоятельно, без посторонней помощи тоже не обойтись: «Надо найти человека, с которым можно консультироваться, — это может быть друг, знакомый, репетитор или преподаватель вуза», — советует Картавец. «Ищите наставника — это не обязательно должен быть учитель, им может стать просто сосед или коллега, который понимает в программировании и поможет вам разобрать примеры кода», — говорит Вадим Шандринов.

Когда программа в очередной раз уходит в бесконечный цикл, хочется все бросить и сказать себе: «Это просто не мое». «Никогда не знаешь, что пригодится и что окажется твоим делом. Поэтому попробовать стоит все, — считает Татьяна Власенко из HTML Academy. — Мы в Академии собираем истории выпускников и сами удивляемся: люди, посвятившие жизнь музыке, обнаруживают талант к верстке, журналисты становятся отличными фронтенд-разработчиками. Таких историй много, а это говорит о том, что деление на технарей и гуманитариев весьма условно». «В программировании человек из ничего творит нечто, что можно пощупать, потрогать, использовать», — говорит Евгений Картавец из GeekBrains. «Виртуальные миры живут по правилам, определенным программистом, он там — Создатель», — добавляет Вадим Шандринов из Skillbox.

What Is Programming?

While coding is a big part of software development, it is not the most important part. To create a product, you need to take several additional steps. They include planning, design, testing, deployment, and even maintenance. Altogether, the whole process can be called programming.

So, is coding and programming the same thing?

This question is equivalent to “Is a tree and a forest the same thing?” One is an essential part of the other, but there is also much more to it. Programming requires a lot more knowledge, experience, and various skills to pull off than coding. Let’s move on to answering in more detail the main question of this feature – what is the difference between coding and programming exactly?

Source: Khan Academy Computing

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *