Содержание
- Разновидности деятельности
- Python
- С
- Специализации программистов
- Инженер-программист
- Специалист по созданию и разработке компьютерных игр
- Императивное программирование
- Определение
- Сколько получают программисты в России
- Что такое программирование в общем понимании?
- Д
- Необходимые качества
- JavaScript (Джава-скрипт)
- Что такое типизация
- Немного истории
- Каким образом компьютер воспринимает команды?
- Инженер прикладного программного обеспечения
- Квалификационные требования
- Смежные карьеры
Разновидности деятельности
В программировании на первое место выходят не практические навыки, а задачи, которые решает специалист.
Какие бывают программисты:
- прикладные специалисты;
- системные;
- веб-разработчики.
Прикладные программисты работают с задачами из области бухгалтерии, игр, мессенджеров и редакторов. Они также создают программное обеспечение для различных аудиовидеосистем, пожарных и вентиляционных систем и так далее. Впрочем, они не только создают программы, но и поддерживают их работоспособность в дальнейшем, адаптируя под нужды конкретной организации.
«Системники» в основном разрабатывают и поддерживают операционные системы, сети, взаимодействуют с распределенными базами данных. Эти программисты считаются самыми высокооплачиваемыми. Более подробно их работу можно описать следующим образом: разработка сервисов для управления вычислительной системой. Вычислительная система, в свою очередь, состоит из процессора, коммуникационных и периферийных устройств. Помимо этого, системные программисты создают драйвера и загрузчики программ.
Python
Python тоже часто используется в веб-разработке, а ещё это один из самых популярных языков для анализа данных и в Data Science. Вы встретите Python в разработке веб-сайтов и утилит, в машинном обучении и работе с нейросетями.
Это тоже подходящий язык для новичков, его часто рекомендуют для обучения программированию.
Плюсы Python
- Легко освоить.
- Удобный синтаксис.
- Прекрасно подходит для своих задач (мы перечислили их выше).
- Для него создано много полезных фреймворков и библиотек.
Спорные моменты
- Частичная поддержка многопоточности.
- Медленный, но можно значительно ускорить с помощью Cython.
- Неявная типизация.
Зарплаты и востребованность
По объединённым данным сайтов для поиска работы (HeadHunter, Superjob, Rabota.ru и другим), вакансий для разработчиков на Python в Москве около 200, а зарплаты в среднем около 105 тысяч рублей. Для новичков — в среднем 60 тысяч, а для специалистов — от 150 до 170 тысяч. Если вы разбираетесь в нейросетях и знакомы с машинным обучением, то скорее всего ваша зарплата будет выше.
Синтаксис
Вот пример кода в Python:
Это имитация шляпы из «Гарри Поттера», которая распределяет студентов по факультетам. Наша шляпа учится сама. Она читает данные о студентах из прошлых лет и делит их на две группы: данные о самих студентах и о том, на каком факультете они учатся. Потом шляпа учится предсказаниям с помощью модуля машинного обучения и проверяет свои способности на контрольной группе. В конце программа оценивает точность предсказания.
С
Сабж — от английского Subject — тема, предмет. «По сабжу» — по теме обсуждения.
Свитчнуть, свичнуть — переключить. От английского switch.
Сетка — модульная сетка, используется для дизайна и вёрстки страниц.
Сеньор, синьор — от англ. Senior — старший разработчик.
Слетело — сломалось.
Снести — удалить.
Стек — изначально абстрактный тип данных. В разговорной речи используется для обозначения списка технологий, которые использует разработчик или компания. Пример: «Наш стек — HTML/CSS, JavaScript, React».
Собес — собеседование.
Софт — от англ. Software — программное обеспечение.
Софт-скилы — от англ. Soft skills — знания и качества специалиста, прямо не связанные с профессиональной деятельностью. Примеры: коммуникабельность, проактивность.
Специализации программистов
В программировании ценятся не только практические навыки, но и идеи специалиста. Разработчиков можно условно разделить на три крупные категории в зависимости от специализации.
Прикладные программисты
Занимаются в основном разработкой программного обеспечения прикладного характера — игры‚ бухгалтерские программы‚ редакторы‚ мессенджеры и т. п. К области их работы относится создание программного обеспечения для СКД, систем видео- и аудионаблюдения‚ пожаротушения или пожарной сигнализации и т. п. Также в их обязанности входит адаптация уже существующих программ под нужды отдельно взятой организации или пользователя.
Системные программисты
Разрабатывают операционные системы, работают с сетями, пишут интерфейсы к различным распределенным базам данных. Системные программисты относятся к числу самых редких и высокооплачиваемых. Их задача состоит в том‚ чтобы разработать системы программного обеспечения (сервисы)‚ которые‚ в свою очередь‚ управляют вычислительной системой (куда входит процессор‚ коммуникационные и периферийные устройства). Также в список их задач входит обеспечение функционирования и работы созданных систем (драйвера устройств‚ загрузчики и т. д.).
Web-программисты
Тоже работают с сетями, но в большинстве случаев с глобальными, в частности с Интернетом. Web-программисты пишут программную составляющую сайтов, создают динамические веб-страницы, web-интерфейсы для работы с базами данных.
Инженер-программист
Если одним из 7 предыдущих типов можно стать отучившись на курсах или путем самообразования, то инженеров-программистов выпускают только технические ВУЗы. Часто на этих должностях работают люди старше сорока лет, получившие образование в советское время.
Где работает?
На производстве или в научном учреждении.
Что делает?
Разрабатывает программы для управления самыми разными устройствами: от печи на хлебозаводе до робота-пылесоса.
Технологии
Один из нижеперечисленных языков:
- C;
- C#;
- C++;
- Java;
- Delphi (жил, жив и будет жить!);
- Assembler.
+ огромный багаж технических знаний, соответствующий отрасли в которой человек работает.
Если посмотреть объявления о найме программистов на российских сайтах, то 90% из них будут подходить под эти семь типов. На Западе рынок вакансии несколько разнообразнее. Кто интересуется, может зайти на Odesk и посмотреть, какая работа там предлагается.
С грустью замечаю, что 14-летние пакистанцы требуют там за html-верстку от 500 рублей в час.
А судить о том, какие языки сейчас наиболее популярны в мире можно по данным Tiobe Index. Этот рейтинг строится по числу запросов в поисковых системах с упоминанием разных языков программирования.
P.S. Напоследок, жизненный анекдот в тему.
iPhones.ru
Какие кодеры наиболее востребованы в нашей стране? Если сказать простому человеку, что ты работаешь программистом, то в ответ можно услышать одну из следующих реплик: «Мне надо переустановить Windows. Я всю жизнь ждал того, кто сделает это для меня. А потом пойдем чинить тостер.»; «О! Ты можешь помочь мне с лабораторной работой на VBA!»; «За сколько…
Специалист по созданию и разработке компьютерных игр
Разработка компьютерных игр – одна из самых быстроразвивающихся сфер ИТ-технологий. По данным аналитического агентства NewZoo объем рынка видеоигр с каждым годом увеличивается на 9%. Если в 2016 году он составил почти 100 миллиардов долларов, то к 2018 году эта сумма увеличится до 112.5 миллиардов. Поэтому «инженер видеоигр» – это перспективная и высокооплачиваемая должность.
Инженер, или Game-разработчик – общее название категории специалистов, задействованных в процессе создания игры. Главная задача – превратить идею в программный код и заставить все элементы взаимодействовать. 90% рабочего времени программисты пишут и отлаживают алгоритмы на языке C++, Visual Basic, Java и MEL.
Романтики в профессии мало. В основном, это рутинный и многочасовой труд за компьютером. График обычно ненормированный. Если дизайнеру приходит гениальная идея срочно что-то переделать, всю ночь корпит над кодом именно программист.
Императивное программирование
Императивное программирование характеризуется в основном:
- в исходном коде программы записываются инструкции (команды);
- инструкции должны выполняться последовательно;
- каждая инструкция может изменять некое глобальное “состояние” программы
При императивном подходе к составлению кода (в отличие от функционального подхода, относящегося к декларативной парадигме) широко используется присваивание. Наличие операторов присваивания увеличивает сложность модели вычислений и делает императивные программы подверженными специфическим ошибкам, не встречающимся при функциональном подходе.
Практически всё аппаратное обеспечение в основе своей императивное.
Неструктурное программирование
Характерно для наиболее ранних языков программирования.
В основном характеризуется:
- строки как правило нумеруются
- из любого места программы возможен переход к любой строке
Характерной особенностью неструктурного программирования является сложность реализации рекурсии.
Структурное программирование
В отличие от неструктурного программирования, характеризуется:
- ограниченным использованием условных и безусловных переходов
- широким использованием подпрограмм и прочих управляющих структур (циклов, ветвлений, и т.п.)
- блочной структурой
Концепция структурного программирования основана на теореме Бёма-Якопини:
Последовательность – это выполнение сначала одной подпрограммы, затем другой.
Ветвление – это выполнение либо одной, либо другой подпрограммы в зависимости от значения некого булева (логического) выражения.
Итерация – это многократное выполнение подпрограммы пока некое булево выражение истинно.
Процедурное программирование
Процедурное программирование можно рассматривать как небольшую вариацию на тему структурного программирования, основанную на концепции вызова процедуры.
Основная идея заключается в том, чтобы сделать подпрограммы более модульными за счёт:
- локальных переменных
- относительно простой рекурсии
Оба этих пункта реализуются за счёт использования стека вызовов.
Объектно-ориентированное программирование
Объектно-ориентированное программирование основано на концепции “объекта”.
Объекты могут содержать данные (поля, свойства, аттрибуты) и поведение (код, процедуры, методы).
Наиболее популярной формой ООП является ООП на основе классов. В данном подходе, все объекты являются экземплярами классов, и классы определяют так же тип объектов.
Одной из альтернатив является прототипное наследование. Прототипное наследование не использует классов. Вместо этого, одни объекты могут быть объявлены “прототипами” других объектов – при этом методы и поля прототипа становятся доступны как методы и поля нового объекта (если, конечно, новый объект их не переопределяет)
Определение
Программист – это специалист, занимающийся разработкой компьютерных программ и алгоритмов при активном использовании специальных математических моделей. В зависимости от специализации программисты делятся на три категории:
- Прикладные. Пишут программы прикладного характера: мессенджеры, редакторы, бухгалтерия, игры и т. д. Создают драйвера для СКД, систем видеонаблюдения, пожаротушения и др. Также адаптируют уже существующие программы под нужды конкретного пользователя или организации.
- Системные. Пишут интерфейсы к базам данных, работают с сетями, разрабатывают ОС. Специалисты этой категории самые редкие и высокооплачиваемые. Их главная задача – разработка сервисов (программного обеспечения) для управления вычислительной системой (периферийные, коммуникационный устройства и процессор).
- Web-программисты. Работают с сетями, но в основном с глобальными (Интернет). Создают веб-страницы и пишут программную основу сайтов. Также в их обязанности входит работа с базами данных.
Сколько получают программисты в России
Уровень зарплаты программиста зависит от региона РФ. Тот же калькулятор «Моего круга» выдает следующие цифры месячного дохода по специальности «Разработка программного обеспечения» (квалификация: любая):
Уровень зарплат программистов в России.
У российских компаний есть офисы за границей, в том числе в Минске, Киеве, Таллине и Риге. Газета «Коммерсантъ» даже писала, что в последние годы наметился массовый исход из России. Конечно, в основном это касается международных корпораций.
Например, Microsoft перевела разработку Skype из Зеленограда в Прагу и другие города, перевезла российских программистов в офисы в Калифорнии, Европе и т.д. Уходят и чисто российские компании: полностью переехал офис крупного разработчика игр Game Insight, а компания Luxoft перевела сотни программистов из России в другие страны.
Есть и необычные направления: например, компания Parallels открыла офис в Таллине. Откуда появилось такое неординарное решение, есть объяснение сооснователя и вице-президента по виртуализации ПК в Parallels Николая Добровольского:
В заграничных филиалах зарплата может отличаться от московской. Фактически компании подстраиваются под условия местного рынка рабочей силы. Естественно, что после переезда в Калифорнию зарплата тех же российских разработчиков увеличилась.
Правда, у «Моего круга» не очень большая база вакансий (около 5000 по разработке ПО), так что данные по зарплатам нельзя назвать абсолютно точными. Пользователи здесь самостоятельно указывают свою зарплату. По статистике за октябрь2017 года, в России насчитывается 70,3 тысячи разработчиков и аналитиков программного обеспечения и приложений.
Согласно официальным данным, их средняя заработная плата составила 78 557 руб. в месяц. Это больше, чем у любых других специалистов средней и высшей квалификации в России, кроме работников фитнес-клубов (413876 руб. в месяц!).
Поскольку некоторые компании до сих пор выдают «серые» зарплаты в конвертах, официальные данные Росстата еще менее точные, чем статистика «Моего круга», несмотря на обширную статистическую выборку. Попросту говоря, у Росстата заниженные цифры.
Динамика заработных плат специалистов в сфере вычислительной техники и ИТ в России в 2013–2016 году
Что такое программирование в общем понимании?
Если посмотреть на основные трактовки данного термина, нетрудно сделать простейший вывод. Что такое программирование? Это написание программ.
Тут же возникает вопрос того, что же такое программа. Программа или приложение – это, грубо говоря, набор специализированных команд, инструкций, директив или исполняемых сценариев, которые подлежат исполнению машиной, причем на уровне и «железных» устройств, и других задействованных средств.
Чтобы было понятно, что такое программирование, можно привести самый простой пример. Установленное пользовательское приложение, нацеленное на выполнение конкретной задачи, обращается не только к оперативной памяти и процессору, но и задействует другие физические устройства через инструменты управления ими, называемые драйверами, которые тоже представляют собой программы.
Д
Движок — в веб-разработке так называют системы управления контентом.
Дебажить — устранять ошибки, баги.
Деплой, деплоить — развёртывание, публикация рабочей версии приложения. Пример: задеплоить сайт — перенести сайт с тестового на рабочий сервер, сделать его доступным для пользователей.
Джун, джуниор — от англ. Junior. Младший разработчик. Специалист без опыта или с минимальным опытом работы.
Дезигнер — презрительно-снисходительное название дизайнера.
Драй — от англ DRY, don’t repeat yourself. Принцип программирования, предлагающий избегать повторений кода.
Дропдаун — выпадающее меню, то же, что и «выпадашка».
Необходимые качества
Программирование — сфера, которая развивается семимильными шагами, поэтому специалист должен хорошо ориентироваться среди многочисленных технологий
Самое важное качество, необходимое человеку, который хочет стать программистом — способность к самообучению. В противном случае будет тяжело выдержать конкуренцию: можно попросту отстать от новых технологий.
Еще необходимо знать иностранный, чаще всего английский язык, хотя бы на уровне чтения технической документации
Не менее важно уметь работать в команде над проектами различного уровня сложности, с банковским, бюджетным и экономическим ПО.. Если человек претендует на должность ведущего программиста, то он должен обладать навыками управления
Кроме того, лидер команды часто несет личную ответственность за успех проекта. Характеристика управляющего человека должна быть безупречной.
Если человек претендует на должность ведущего программиста, то он должен обладать навыками управления. Кроме того, лидер команды часто несет личную ответственность за успех проекта. Характеристика управляющего человека должна быть безупречной.
JavaScript (Джава-скрипт)
Это язык прост, многофункционален и уже давно стал неотъемлемым атрибутом большинства современных интернет-браузеров. Обычно его используют для придания сайтам большей интерактивности, то есть возможности пользователя взаимодействовать с контентом.
JavaScript применяется где только можно — это браузеры, плагины, прикладное программное обеспечение, офисные и серверные приложения. Дополнительную популярность ему обеспечили специальные высокоабстрактные библиотеки.
Однако JavaScript довольно небезопасен, а написанные на нём приложения обычно пестрят ошибками. Любой пользователь интернета с ними сталкивался, причем не раз. Но стереть его из истории пока что нельзя, ведь браузеры без него попросту перестанут работать.
Что такое типизация
Прежде чем мы начнём разбираться в плюсах и минусах языков, стоит поговорить о типизации. Потому что от типизации зависит и как вы пишете программу, и как она потом работает.
Типизация — это разделение переменных на разные типы: например int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).
Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.
Явная типизация значит, что вы должны сами указать тип переменной, а если у языка неявная типизация, этим занимается компилятор. Явная типизация более надёжная (у переменной будет именно тот тип, который вам нужен), зато добавляет работы, а неявная позволяет сэкономить время, но переменная может получить не тот тип, который вы хотели.
В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).
Динамическая типизация означает, что типы определятся уже во время выполнения программы.
Сильная (строгая) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.
Языки со слабой типизацией более гибкие, но они часто сами неявно преобразуют переменные, даже если в результате может появиться неточность или если преобразование неоднозначно.
Немного истории
Говоря о том, что такое программирование в современной трактовке, стоит обратить свой взгляд на историю его возникновения. По сути, автоматизированное выполнение каких-то определенных действий, например, в области математических вычислений, известно человечеству достаточно давно.
Вспомнить хотя бы Древнюю Грецию, в которой было использовано устройство с шестернями разной величины, позволявшее производить простейшие арифметические действия. Это был самый настоящий прототип современного калькулятора.
В 1206 году появился уникальный аппарат по отслеживанию так называемого метонова цикла, построенный Аль-Джазари, который использовал сложные на то время механизмы, основанные на зажимах и кулачках.
Только в 1804 году свет увидел жаккардовый ткацкий станок, который был способен воспроизводить узоры на тканях, созданные на основе перфокарт.
Но настоящим прорывом стало программируемое аналитическое устройство, разработанное Чарльзом Бэббиджем, которое, к сожалению, при его жизни так и не было построено.
Зато в 1846 году дочь Байрона создала первую в мире программу для аналитической машины, которая решила уравнение Бернулли. Конечно, алгоритмы программирования, которые применяла графиня Ада Августа Лавлейс, были весьма примитивными, но именно они заложили то самое зерно, которое было использовано при создании современных компьютерных программ. И именно ее считают во всем мире прародительницей программирования.
Каким образом компьютер воспринимает команды?
Любая компьютерная программа должна машиной каким-то образом выполняться. Ей мало написать, мол, сделай то-то и то-то. Для этого были созданы языки программирования.
Но написать последовательность команд на каком-то языке, которых сегодня существует очень много, оказывается недостаточно. Машина все равно не воспримет текстовые фразы или математические формулы.
Универсальным средством стало использование двоичного (бинарного) кода, состоящего из последовательностей нулей и единиц, которые воспринимаются любым компьютерным устройством. Но как перевести смысловые фразы и формулы в такой вид? Для этого используются компиляторы, которые и преобразовывают список команд в понятный машине двоичный код. Можно встретить и троичные, и шестнадцатиричные коды, но они используются крайне редко.
Инженер прикладного программного обеспечения
Данный вид программистов создает не системное, а прикладное ПО. Это программы, или приложения, которые взаимодействуют с пользователем непосредственно. Например, текстовые и графические редакторы, базы данных, аудио и видео плееры.
Работа прикладного инженера заключается в написании кода, его последующей компиляции, отладке и тестировании. Иногда специалист обновляет или вносит изменения в уже существующее ПО. Для программирования использует высокоуровневые языки Java, C#, C++, Python, PHP. Прикладные программисты редко трудятся в одиночку. В основном, они являются участниками стартапов, или входят в штат сотрудников компании, занимающейся разработкой компьютерного софта.
«Программист» – интересная и разнообразная профессия с множеством направлений и специализаций. Одни делают виджеты для сайтов и проектируют API, другие пишут код для серверов или корпят над графикой Disciples III. Каждый, кто любит программировать, может реализовать себя в веб-разработке, стать именитым создателем игр или писать программы для спутников НАСА.
Квалификационные требования
В Российской федерации, в соответствии с решением заседания от 5 июня 2006 года Совета по ИТ при Министре информационных технологий и связи РФ, при организационной поддержке Мининформсвязи РФ и Ассоциации Предприятий Компьютерных и Информационных Технологий (АП КИТ) был выполнен проект целью которого являлось формирование профессиональных стандартов по наиболее массовым и востребованным профессиям в области ИТ, описывающих должности, профессиональные компетенции, требования к уровням образования, стажу работы и сертификации в соответствии с квалификационными уровнями.
Финансовую поддержку и другую помощь проекту оказали ведущие компании ИТ-отрасли IBM, Intel, Microsoft, Яндекс, 1С и многие другие.
В результате работы были созданы Квалификационные требования (профессиональный стандарт) в области информационных технологий для профессии «Программист».
Смежные карьеры
Для российских программистов (в отличие от зарубежных) допустимо наличие смежного образования. Они могут быть математиками, физиками, химиками и др. Кстати, очень популярной в последнее время стала профессия «инженер-программист».
Как показывает практика, получение смежного высшего образования не мешает быть им первоклассными IT-специалистами. Известно, что программистов из азиатских стран (Индонезии, Вьетнама, Китая) привлекают к массовому индустриальному программированию. А в тех областях, где нужны творческие решения, наиболее сильны российские специалисты. В первую очередь это обусловлено высоким качеством фундаментального образования.
На факультете кибернетики и высшей математики МГУ существует специальная программа двухлетнего обучения в вечернее время, позволяющая подготовить программистов с дипломом по смежным направлениям и специальностям. Помимо государственного диплома о дополнительной квалификации выпускники этой программы получают международные сертификаты. Также есть возможность дистанционного обучения через Интернет. Например, находясь в какой-нибудь провинции, можно получить престижную специальность «техник-программист» (профессия не очень популярная, но перспективная). Идём далее.