Программисты. Профессия программист. Кто такой программист

Наверное, у каждого программиста возникала ситуация, когда совершенно не знакомые с IT люди просили его объяснить, в чём же состоит суть его профессии. Так уж сложилось, что у большинства людей понятие «программист» ассоциируется либо с замкнутым гиком в очках и свитере, либо с неким гениальным красноглазым подростком-хакером - но при этом никто не знает, чем именно он занимается.

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

- Чем занимаются программисты? Это не так-то просто рассказать… Ответьте мне для начала: как в двух словах можно описать, например, суть профессии хирурга?
- Хирург проводит операции.
- Да, отличное описание! Ну а, скажем, футболиста?
- Играет в футбол!
- Угу, а хирург «занимается хирургией». А если без однокоренных слов?
- Пинает мяч?
- Вот это точно. А что же делает программист, кроме как «разрабатывает программы»?
- …
- Программист пишет код . Исходный код своей программы, составленный на каком-то специальном языке программирования. Точнее говоря, сначала он продумывает структуры своих данных, потом составляет алгоритмы для работы с этими структурами - ну а затем уже представляет это в виде кода.
- Что ещё за «структуры данных»? Разве он не управляет компьютером, не нажимает кнопки?
- Эх...

Миф №1: программист работает с компьютерами

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

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

Миф №2: машина умеет думать

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

- В общем, код любой программы представляет собой набор команд, а компьютер их тупо исполняет.
- То есть, он не понимает сути самих команд? Но как он воспринимает текст, который я ввожу на экране?
- Когда ты крутишь педали на велосипеде - понимает ли он, что ему сейчас нужно поехать вперёд?
- Нет, но ведь едет. Поскольку его цепь преобразует вращение педалей во вращение колёса.
- Именно! Также и компьютер преобразует введённый тобой текст в набор чисел.
- Каким образом?
- У каждого символа текста есть свой числовой код, который знает компьютер. Это называется кодировкой. Например, английская «a» кодируется числом 97, а знак равенства - числом 61.
- Поэтому машина и может понимать текст, который мы ей сообщаем?
- Нет, она «понимает» не смысл. А лишь то, каким образом этот текст хранить, и как к нему обращаться.
- Выходит, сначала мы вводим текст, затем компьютер разбивает его на символы, а каждый символ уже представляет в виде числа?
- Верно. Сложные структуры представляются в виде более простых , которые и «понимает» машина.

Скажите мне, из чего состоит жилой дом?
- Ну… Из этажей.
- А из чего состоят этажи? И так далее.
- Этажи - из стен. А стены - из кирпичей. А кирпичи…
- Вот числа для компьютера - это то же, что и кирпичи для дома. Символы - это стены. Отдельные предложения - этажи. А книги - целые дома! Но у программистов есть преимущество перед строителями.
- Какое?
- Строитель не может строить целыми этажами, он вынужден всегда класть кирпичи. Даже если некий сверхмощный подъёмный кран позволит ему строить готовые этажи, он не сможет строить им целые дома или жилые кварталы. А программист сможет! Раз он уже «обучил» машину понимать конечный текст - то, по сути, он «обучил» подъёмный кран строить готовый дом за одно действие.
- То есть, программист может использовать всё более и более сложные структуры данных?
- Да. Поэтому первая из составляющих его работы - представить понятные человеку данные (текст, изображение, звук) в виде объединения более простых данных, уже понятных компьютеру. Разработчик практически «с нуля» составляет структуру, которая должна полностью описывать понятную человеку вещь - причём таким образом, чтобы эта структура была легко расширяемой и изменяемой (ведь в программу часто приходится вносить какие-то новые возможности).
- Хех! Выходит, что он строит резиновые дома из съёмных панелей!
- Примерно так. Однако, ещё ему придётся не только описать, что же ему нужно построить - но и как всё это построить. То есть, придумать алгоритм. Это вторая из составляющих его работы.
- Программист придумывает алгоритм на каждое действие?
- Именно. Поэтому алгоритмов получается очень много. Но его работу облегчает то, что одни действия могут содержать в себе другие, уже описанные им ранее.
- И здесь ему на помощь приходит язык программирования?
- Не совсем...

Миф №3: язык программирования нужен для составления алгоритмов

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

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

- Правда, многие из нынешних языков программирования уже содержат «в себе» набор заранее составленных алгоритмов, которые разработчик может использовать в качестве готовых. Поэтому язык всё же немного облегчает процесс составления алгоритмов.
- То есть, если один программист составил какой-то алгоритм, то его тут же могут использовать другие?
- Да, и это происходит постоянно. Это одна из причин, почему отрасль IT так быстро развивается. Однако новые алгоритмы приходится составлять самому.
- А составь какой-нибудь прямо сейчас!
- Легко. Классический пример: у вас есть книга, в ней 1000 страниц. Вам нужно открыть в ней, к примеру, 875-ю страницу. Как бы вы стали это делать?
- Ну, просто пробежал от первой до 875-й, только и всего.
- Угу, и придётся тебе глядеть на номер каждой страницы. А представь, если все их уголки слиплись - сколько времени тогда пройдёт? А вот мне достаточно перебрать лишь 3 страницы!
- Как?
- Вначале я выберу страницу, которая находится посередине книги, то есть 500-ю. Потом посмотрю: в какую из образовавшихся половин должна попасть искомая страница?
- Во вторую. А дальше что?
- То же самое. Интервал с 500-й по 1000-ю я снова поделю надвое, открыв центральную страницу. Получится интервал от 750-й страницы до 1000-й, в нём я опять выберу центральную. Какой будет номер?
- 750 плюс 125… Так это же и есть 875!
- Вот видишь. Всего 3 действия! Даже если я буду не совсем точен при выборе центральной страницы, я всё равно найду нужную намного быстрее тебя. Этот алгоритм носит название «дихотомия». Хотя в реальности программисты используют куда более сложные алгоритмы.
- И ты можешь записать его на бумаге?
- Конечно. Где там моя ручка?

Псевдокод

повторяем цикл: ищем(в книге, центральную_страницу); если (центральная_страница = искомой_странице) выходим из цикла; иначе если (центральная_страница < искомой_страницы) удаляем(в книге, все страницы от первой до центральной); иначе удаляем(в книге, все страницы от центральной до последней);


- Ну как, алгоритм ясен?
- Хм… Да, и впрямь ясен.
- Сейчас он записан в виде, уже слегка похожем на реальный программный код.
- А в чём отличия?
- В реальном коде все слова будут написаны на английском, а также будет заранее описана структура «книга» (помните, что я раньше рассказывал про структуры данных?). Плюс, для действий «ищем» и «удаляем» тоже будут составлены свои алгоритмы. Но в целом - всё то же самое.
- И ты занимаешься этим изо дня в день?
- В основном.
- И тебе не скучно?
- Ничуть!

Миф №4: программирование - это скучно

Конечно, разработка вполне может наскучить, если заниматься только рутинными и однообразными делами. Например, составлением очень простых алгоритмов, но в большом количестве. Или монотонным поиском ошибок в чужом коде. Но это же касается и любой другой работы - рутина везде убивает творческий процесс. А творчества в программировании немало, написание кода похоже на написание художественной книги. Только, в отличие от большинства писателей, программист сначала сам создаёт свой собственный мир (структуры данных) - а уже потом наполняет его сюжетом (алгоритмами).

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

- В шутку можно сказать, что в итоге получается какой-то детектив в выдуманном мире, выраженный с помощью языка программирования.
- А убийца в этом детективе - дворецкий?
- Ага, нулевой указатель. Бывает так, что весь отдел день-другой ловит особо назойливый баг, и каждый программист из отдела берёт на себя какой-то участок кода. Получается целое расследование, с наказанием виновных и награждением сопричастных…
- Хм, а это и впрямь интересно звучит!
- Вот видишь.
- А, скажем, я могу хоть немного научиться программированию?
- Да, конечно! Я знаю один сайт специально для этого...

От автора:

Данный диалог вполне реален, вплоть до финальной реплики. Конечно, он порядком приукрашен - но, уверяю вас, примерно так всё и было;)

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

Программист — профессия человека, занимающегося программированием. Программист занимается разработкой алгоритмов и программ на основе математических моделей.

Условно программистов можно разделить на три категории:

Прикладные программисты занимаются разработкой программного обеспечения, необходимого для работы организации. Например, сюда можно отнести программистов 1С.

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

Web-программисты имеют дело с сетями, но, как правило, с глобальными, такими, как Internet. Они пишут web-интерфейсы к базам данных, создают динамические web-страницы и т.п.

Должностные обязанности

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

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

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

В большинстве случаев, программист должен знать несколько языков программирования, такие как C++, Delphi, Visual Basic, PHP, Java, Perl и т.д.

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

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

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

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

Места работы

Научно-исследовательские центры,

IT-компании,

Организации, которые в своей структуре подразумевают отделы программистов (или штатную единицу).

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

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

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

История

Мало кто знает, когда появился первый программист. История профессии уходит корнями в начало 19-го века. В 1804 году Жозеф Жаккар построил ткацкий станок. Именно он считается первым запрограммированным устройством, позволившим создавать узоры на тканях с помощью перфокарт.

Первое же вычислительное устройство, или Аналитическая программируемая машина, была разработана Чарльзом Бэббиджем. Однако он так и не смог её построить. В середине 1843 года Ада Лавлейс (дочь поэта Джорджа Байрона) написала для неё первую в истории программу, решающую уравнение Бернулли.

В своей научной работе Ада рассмотрела много различных вопросов. Несколько высказанных ею положений (связь циклических процессов вычислений с рекуррентными формулами, принцип экономии действующих ячеек памяти) актуальны и для современного программирования. В комментариях Лавлейс и материалах Бэббиджа есть такие понятия, как индексный регистр, модификация команд и библиотека подпрограмм. Эти термины вошли в обиход лишь в 1950-х годах, когда профессия программист (плюсы и минусы можно прочесть ниже) только зарождалась. А широкое распространение они получили только спустя пару десятилетий.

Первый программист

Хоть ни одна программа Ады Лавлейс не была запущена, её принято считать первым программистом (хотя по современным меркам, написание только одной программы не считается профессиональной деятельностью). В честь неё был назван один из универсальных языков программирования - «Ада».

А самым первым был «Планкалкюль», созданный немецким инженером Конрадом Цузе в 1941 году. К сожалению, история не сохранила имен первых профессиональных программистов (в отрыве от настройки аппаратуры компьютера). Это произошло потому, что в то время данная деятельность рассматривалась всего лишь как второстепенная наладочная операция.

Определение

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

  • Прикладные. Пишут программы прикладного характера: мессенджеры, редакторы, бухгалтерия, игры и т. д. Создают драйвера для СКД, систем видеонаблюдения, пожаротушения и др. Также адаптируют уже существующие программы под нужды конкретного пользователя или организации.
  • Системные. Пишут интерфейсы к базам данных, работают с сетями, разрабатывают ОС. Специалисты этой категории самые редкие и высокооплачиваемые. Их главная задача - разработка сервисов (программного обеспечения) для управления вычислительной системой (периферийные, коммуникационный устройства и процессор).
  • Web-программисты. Работают с сетями, но в основном с глобальными (Интернет). Создают веб-страницы и пишут программную основу сайтов. Также в их обязанности входит работа с базами данных.

Образование

Профессия «программист» есть в списке специальностей множества вузов. Если рассматривать столицу нашей страны, то самыми авторитетными являются: МГУ, МАИ, МЭСИ, МИЭМ, МИРЭА, МГТУ, МИФИ и МФТИ. Получить профессию программиста можно и в других мегаполисах. Дефицита с институтами (или филиалами), обучающими этой специальности, нет даже в маленьких городах. Согласно статистике, российские вузы ежегодно выпускают около 100 тыс. программистов.

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

Смежные карьеры

Для российских программистов (в отличие от зарубежных) допустимо наличие смежного образования. Они могут быть математиками, физиками, химиками и др. Кстати, очень популярной в последнее время стала профессия «инженер-программист».

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

На факультете кибернетики и высшей математики МГУ существует специальная программа двухлетнего обучения в вечернее время, позволяющая подготовить программистов с дипломом по смежным направлениям и специальностям. Помимо государственного диплома о дополнительной квалификации выпускники этой программы получают международные сертификаты. Также есть возможность дистанционного обучения через Интернет. Например, находясь в какой-нибудь провинции, можно получить престижную специальность «техник-программист» (профессия не очень популярная, но перспективная). Идём далее.

Функциональные обязанности

В России профессия «программист» (описание есть в разделе «Определение») не связана с разработкой новых приложений, операционных систем и программ по типу Adobe Photoshop или MS Office. Этим занимаются специалисты высокой квалификации из таких фирм как Oracle, Sun, Adobe, Microsoft и т. д. В отечественных компаниях подобные проекты большая редкость и почти все программы, которые ставят на свой ПК российские пользователи, созданы западными фирмами. Есть несколько отечественных фирм-разработчиков ПО, но их очень мало. Например, «Лаборатория Касперского», выпускающая антивирусные программы. Также созданием программного обеспечения занимается и ряд государственных структур: НИИ, конструкторские бюро космонавтики и военно-промышленного комплекса. Но опять же, их можно пересчитать по пальцам.

Большим спросом в России пользуются программисты-«прикладники»: сегодня любая компания нуждается в автоматизации бизнеса, в возможности вести учёт продукции, быстро обмениваться информационными сообщениями между подразделениями фирмы и работать по внутренней компьютерной сети. В соответствии с особенностями своего бизнеса, компании адаптируют, а если нужно, то и разрабатывают подходящие пакеты программ. Нужно понимать, что автоматизация бизнеса издательского дома и ресторана - это совершенно разные вещи. Помимо программного обеспечения некоторым фирмам необходим регулярный мониторинг налаженной системы и её модификация, на случай расширения бизнеса. Поэтому работодатели набирают программистов в свой штат. Но некоторые фирмы предпочитают заказывать автоматизацию бизнеса профессиональным IT-компаниям.

Великие и знаменитые программисты

Список их весьма обширен, поэтому мы назовем лишь наиболее известных:

  • Фаулер Мартин.
  • Рэймонд Стивен.
  • Таненбаум Эндрю.
  • Мацумото Юкихиро.
  • Кнут Дональд Эрвин.
  • Страуструп Бьёрн.
  • Мейер Сид.
  • Кей Алан.
  • Столлман Мэттью.
  • Хоппер Грейс.

Законы Мерфи для программистов

  • Вместо того чтобы в приступе злости молотить системный блок, все почему-то лупят по невинному монитору.
  • Настоящий программист поменял уже как минимум 3 облитых пивом клавиатуры.
  • В словосочетании «мышка-норушка» нет никакого смысла.
  • Программисты, испытывающие проблемы с настройкой кодировки, автоматически становятся неандертальцами.
  • Настоящий программист в случае голодовки может ещё в течение месяца питаться едой, выковырянной из клавиатуры.

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

Кто же такие программисты, чем они занимаются, почему у программистов такие высокие ЗП?

На самом деле нет простого ответа на это.

Программист сидит за компьютером

Когда я учился в школе, я думал, что это люди, которые сидят за компьютерами. Пожалуй, с этим и связано название профессии в советском исполнении: "Оператор ЭВМ".

В принципе, не плохо - водитель управляет машиной, а "оператор ЭВМ" управляет компьютером. Но здесь есть всё же неувязочка: водитель всё же про "отвезти кого-то/что-то", его же не называют "оператор автотранспортного средства".

Так может и "оператор ЭВМ" - не лучшее название для этой профессии... если, конечно, он не просто сидит за этим самым компьютером.

Программист пишет программы

Следующая ступень понимания этой профессии: "программист пишет программы". Уже лучше. Если вы хоть раз ставили программу / приложение на компьютер или, например, телефон, вы, возможно, имели в виду, что эту программу кто-то сделал...


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

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

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


Программист автоматизирует

Автоматизирует решение проблем, а заодно и проблемы.

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

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


Всё это уменьшает нагрузку на людей, увеличивает эффективность бизнеса.

Вы главное скажите - а что надо автоматизировать?

Программист решает проблемы

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

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

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

Так кто же такие программисты?

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

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

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

Материал из Википедии - свободной энциклопедии

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

Место программирования в обществе

Существует подготовка математиков-программистов по направлению «Математическое обеспечение и администрирование информационных систем» .

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

Предметом деятельности программистов в науке является решение задач с применением методов прикладной математики и реализацией на ЭВМ (результатом деятельности является полученное при помощи программы решение задачи).

В России подготовка специалистов в этой области ведется по следующим направлениям:

Как вспомогательная деятельность программирование в настоящее время используется в широчайшем круге профессий.

Самообразование

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

Словоупотребление

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

По ошибке программистами порой называют системных администраторов и других специалистов ИТ .

Прикладные и системные программисты

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

История

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

Первыми аналогами программируемых устройств были музыкальная шкатулка и шарманка, программа записывалась на вращающийся вал. Тот же принцип двоичной системы, как и на перфокарте: звук воспроизводился выступом на валу («кулачком»), нет выступа - нет звука, кроме того, шарманка предусматривала смену программ и имела 6-8 запрограммированных мелодий.

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

Первое программируемое вычислительное устройство, Аналитическую машину , разработал Чарльз Бэббидж (но не смог её построить). 19 июля 1843 года графиня Ада Августа Лавлейс , дочка великого английского поэта Джорджа Байрона , как принято считать, написала первую в истории человечества программу для Аналитической машины. Эта программа решала уравнение Бернулли , выражающее закон сохранения энергии движущейся жидкости.

В своей первой и единственной научной работе Ада Лавлейс рассмотрела большое число вопросов. Ряд высказанных ею общих положений (принцип экономии рабочих ячеек памяти , связь рекуррентных формул с циклическими процессами вычислений) сохранили своё принципиальное значение и для современного программирования. В материалах Бэббиджа и комментариях Лавлейс намечены такие понятия, как подпрограмма и библиотека подпрограмм , модификация команд и индексный регистр , которые стали употребляться только в 1950-х годах.

Однако ни одна из программ, написанных Адой Лавлейс, никогда так и не была запущена.

Аду Августу, графиню Лавлейс, принято считать почётным первым программистом (хотя, конечно, написание одной программы по современным меркам не может считаться родом занятий или профессиональной деятельностью). История сохранила её имя в названии универсального языка программирования «Ада» .

Первый работающий программируемый компьютер (1941 год), первые программы для него, а также (с определёнными оговорками) первый язык программирования высокого уровня Планкалкюль создал немецкий инженер Конрад Цузе .

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

Профессиональный праздник

Примечания