Компьютерные языки программирования: виды, описание, применение и отзывы. Языки программирования

Общая характеристика языков программирования

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

Для популярных языков программирования (Си, Си++, Паскаль, Бейсик, Фортран и др.) имеется множество систем программирования, позволяющих создавать программы, работающие в среде DOS, Windows и др. В последнее время стали появляться системы программирования на языке Java, они позволяют создавать программы, вызываемые при просмотре Web-страниц в глобальной электронной сети Internet.

Особым классом систем программирования являются системы для создания приложений типа клиент-сервер. Эти системы позволяют быстро создавать информационные системы для подразделений и даже крупных предприятий. В них содержатся средства для создания пользовательского интерфейса, описания процедур обработки данных, заготовки для выполнения типовых действий по обработке данных и т.д. Эти системы, как правило, позволяют работать с самыми различными СУБД - Oracle, Microsoft SQL Server и др.

Виды языков программирования

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

· Язык высокого уровня - Язык программирования, средства которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа, поэтому программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора либо интерпретатора. К языкам высокого уровня относят Фортран, ПЛ/1 , Бейсик, Паскаль, Си, Ада и др.



· Язык низкого уровня , - Язык программирования, предназначенный для определенного типа ЭВМ и отражающий его внутренний машинный код (см. ниже также "машинный язык ", " машинно-ориентированный язык " и " язык ассемблера ").

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

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

· Неалгоритмический язык - Язык программирования, тексты которого не содержат указаний на порядок выполнения операций и служат лишь исходным материалом для синтеза алгоритма решения задачи;

· Формальный язык – Язык программирования, построенный по правилам некоторого логического исчисления или формальной грамматики , представляющей собой систему правил построения в заданном алфавите конечных знаковых последовательностей, множество которых образует формальный язык;

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

· Машинный (абсолютный) язык, язык ЭВМ - Язык программирования, предназначенный для представления программ в форме, обеспечивающей возможность их выполнения техническими средствами;

· Машинозависимый (машинно-ориентированный) язык, машинозависимый язык программирования - Язык программирования, учитывающий структуру и характеристики ЭВМ определенного типа или конкретной ЭВМ;

· Машиннонезависимый язык - Язык программирования, структура и средства которого не связаны ни с какой конкретной ЭВМ и позволяют выполнять составленные на нем программы на любой ЭВМ, снабженной трансляторами (см. ниже) с этого языка;

· Символический язык, язык символического кодирования - Язык программирования, ориентированный на конкретные ЭВМ и основанный на кодировании машинных операций при помощи определенного набора символов;

· Гибридный (комбинированный) язык - Язык программирования, использующий также средства другого языка;

· Графический язык - Язык, предназначенный для написания программ машинной графики и пользования ими.

· Базовый язык – Машинный язык, общий для семейства ЭВМ (язык программирования в СУБД с автономным языком).

· Общий язык - Машинный язык, общий для группы ЭВМ и используемых ими внешних устройств;

· Эталонный язык - Язык, являющийся основой для всех его конкретных версий, являющихся вариантами адаптации эталонного языка к определенным условиям применения и назначения;

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

· Декларативный (непроцедурный) язык - Язык программирования, который позволяет задавать связи и отношения между объектами и величинами, но не определяет последовательность выполнения действий (например, языки Пролог, QBE);

· Императивный (процедурный) язык - Язык программирования, который позволяет в явной форме (при помощи задания выполняемых операторов) определять действия и порядок (последовательность) их выполнения;

· Язык функционального программирования, функциональный язык - Декларативный язык программирования, основанный на понятии функций, которые задают зависимость, но не определяют порядок вычислений.

· Специализированный язык - Язык программирования, ориентированный на решение определенного круга задач;

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

· Автономный язык - Специализированный язык высокого уровня, в замкнутых СУБД (" СУБД с автономным языком ");

· Язык конструирования интерактивных технологий - В СУБД - язык, предназначенный для описания технологических процессов обработки данных с учетом разделения характера операций по их типам, а также обеспечения диалога с администратором системы;

· Язык манипулирования данными, ЯМД - В СУБД - язык, предназначенный для обращения к базе данных и выполнения поиска, чтения и модификации ее записей;

· Язык обработки списков - Специализированный язык, предназначенный для описания процессов обработки данных, представленных в виде списков объектов;

· Язык описания данных - Язык, предназначенный для описания "концептуальной схемы” базы данных;

· Язык описания хранения данных - Язык, предназначенный для описания физической структуры (схемы) базы данных;

· Язык описания страниц - Система для кодировки документов, которая позволяет точно описать ее внешний вид после подготовки к выводу на печать или на дисплей. Примером использования такого языка служит PDF (Portable Document Format), разработанный Adobe для хранения и представления изображений страниц.

· Язык представления знаний - Декларативный или декларативно-процедурный язык, предназначенный для представления знаний в памяти ЭВМ (например, языки Лисп и Пролог);

· Язык публикаций - Язык, используемый для публикации алгоритмов и программ;

· Язык спецификаций - Декларативный язык для задания спецификаций программ;

· Проблемно-ориентированный язык - Язык программирования, предназначенный для решения определенного класса задач (проблем);

· Процедурный (процедурно-ориентированный) язык - Проблемно-ориентированный язык, который облегчает выражение процедуры, как точного алгоритма;

· Язык реального времени - Язык, используемый для программирования задач, в которых критическим является время реакции ЭВМ на сигналы, требующие от нее немедленных действий (например, язык Ада);

· Язык управления пакетом - Набор команд, директив, квалификаторов и правил их использования для управления пакетной обработкой данных;

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

· Общесетевой командный язык - Стандартный в рамках вычислительной сети язык диалогового (интерактивного) поиска данных, предназначенный для унификации работы пользователей с неоднородными базами данных, управляемых различными СУБД;

· Системный язык - Язык общения оператора ЭВМ с вычислительной системой, представляющий собой совокупность команд оператора и сообщений системы;

· Язык общего назначения, универсальный язык - Язык программирования, ориентированный на решение задач практически из любой области и объединяющий на единой методической основе наиболее существенные свойства и средства современных машино- и проблемноориентированных языков программирования (например, язык ассемблера, ПЛ/1 и др.);

· Язык ориентированный на пользователя - Слабоформализованный язык программирования, близкий к естественному языку;

· Язык меню - Язык диалога пользователя с системой, основанный на использовании меню.

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

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

Низкоуровневый язык программирования (язык программирования низкого уровня) - язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).

Языки программирования низкого уровня

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

Рис.1. Пример машинного кода и представления его на ассемблере

Трансляторы делятся на:

    компиляторы - превращают текст программы в машинный код, который можно сохранить и затем использовать уже без компилятора (примером являются исполняемые файлы с расширением *. exe);

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

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

Преимущества

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

Недостатки

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

    результирующая программа не может быть перенесена на компьютер или устройство с другим типом процессора;

    значительное время разработки больших и сложных программ.

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

Ассемблер - язык низкого уровня, что широко применяется до сих пор.

Какие кодеры наиболее востребованы в нашей стране?

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

  • «Мне надо переустановить Windows. Я всю жизнь ждал того, кто сделает это для меня. А потом пойдем чинить тостер.»;
  • «О! Ты можешь помочь мне с лабораторной работой на VBA!»;
  • «За сколько сможешь сделать сайт для магазина моей мамы?»;
  • «Да ну! Скучная и дурацкая профессия. Я вот как-то пробовал разобраться с 1C…».

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

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

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

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

1. Front-end веб-разработчик

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

Где работает?

Что делает?

Разрабатывает динамику пользовательского интерфейса. Если в компании нет верстальщика, то еще и переводит PSD-шаблоны в HTML-код.

Технологии

  • HTML и UI фреймворки (Bootstrap, Foundation, Pure);
  • CSS и препроцессоры (SASS/LESS);
  • JavaScript + фреймворки/библиотеки на этом языке (Jquery, ReactJS, AngularJS, BackboneJS);
  • Утилиты для сборки проектов (Grunt, Gulp, Bower).

2. Back-end разработчик

Человек на плечи которого ложиться основное бремя по разработке веб-проекта. Он как бы строит фундамент, на который front-end разработчик прицепляет «декоративные элементы».

Где работает?

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

Что делает?

Разрабатывает “ядро” сайта или веб-приложения: код исполняемый на сервере и архитектуру базы данных.

Технологии

Один из нижеперечисленных языков и фреймворки/библиотеки для него:

  • Ruby;
  • Python;
  • Java;
  • JavaScript.
  • Базы данных MySQl/PostgreSQL/NoSQL.

3. Full-stack веб-разработчик

Человек, который может сделать сайт любой сложности «от и до».

Где работает?

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

Что делает?

Сайты и веб-приложения. Выполняет работу front-end и back-end разработчика одновременно.

См. списки двух предыдущих типов.

4. Разработчик игр

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

Где работает?

В игровых студиях.

Что делает?

Разрабатывает игры.

Какие технологии ему желательно знать?

  • С#/C++/Java;
  • Open GL или DirectX;
  • Один из игровых движков (Unity, Unreal Engine, Torque и другие).

5. Разработчик приложений под Android

Где работает?

Что делает?

Разрабатывает приложения под операционную систему Android.

Какие технологии ему желательно знать?

  • Java;
  • Android SDK;
  • OpenGL;
  • Android Studio.

6. Разработчик приложений под iOS

Где работает?

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

Что делает?

Разрабатывает приложения под операционную систему iOS.

Технологии

  • Objective-C;
  • XCode;
  • OpenGL;
  • Cocoa Touch;
  • CoreData;
  • CoreGraphics.

7. Программист 1C

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

Где работает?

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

Что делает?

Пишет программы для автоматизации документооборота в компании.

Технологии

  • «1С:Управление торговлей»;
  • «1С:Бухгалтерия»;
  • «1С:Зарплата и кадры»;
  • T-SQL.

8. Инженер-программист

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

Где работает?

На производстве или в научном учреждении.

Что делает?

Разрабатывает программы для управления самыми разными устройствами: от печи на хлебозаводе до робота-пылесоса.

Технологии

Один из нижеперечисленных языков:

  • Java;
  • Delphi (жил, жив и будет жить!);
  • Assembler.

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

Если посмотреть объявления о найме программистов на российских сайтах, то 90% из них будут подходить под эти семь типов. На Западе рынок вакансии несколько разнообразнее. Кто интересуется, может зайти на Odesk и посмотреть, какая работа там предлагается.

С грустью замечаю, что 14-летние пакистанцы требуют там за html-верстку от 500 рублей в час.

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

P.S. Напоследок, жизненный анекдот в тему.

Если бы водителей нанимали на работу так же как программистов:
Вакансия: водитель.
Требования: профессиональные навыки в управлении легковыми и грузовыми автомобилями, троллейбусами, трамваями, поездами метрополитена и фуникулёра, экскаваторами и бульдозерами, спецмашинами на гусеничном ходу, боевыми машинами пехоты и современными легкими/средними танками, находящимися на вооружении стран СНГ и НАТО. Навыки раллийного и экстремального вождения обязательны. Опыт управления болидами “Формулы 1″ - приветствуется. Знания и опыт ремонта поршневых и роторных двигателей, автоматических и ручных трансмиссий, систем зажигания, бортовых компьютеров, антиблокировочных систем, навигационных систем и автомобильных аудиосистем ведущих производителей. Опыт проведения кузовных и окрасочных работ - приветствуется. Претенденты должны иметь сертификаты Mercedes, BMW, General Motors, а также справки об участии в крупных международных соревнованиях не более, чем двухлетней давности.
Зарплата: определяется по результатам собеседования.

Разделение языков на универсальные и специализированные .
Все популярные языки можно поделить на универсальные и специализированные. Универсальные языки используются для решения разных задач. Специализированные языки предназначены для решения задач одного, максимум нескольких, видов задач.(например, работы с базами данных, web-программирования или написание скриптов для администрирования операционных систем).

Виды специализированных языков :

1.Языки для работы с базами данных :
а)Языки, входящие в состав промышленных клиент-серверных систем управления базами данных.(СУБД) (PL-SQL в СУБД Oracle, Transact-SQL в Microsoft SQL Server)
б)Языки являющиеся частью других видов СУБД (Visual FoxPro, Microsoft Access, Paradox и т.п.)

2. Языки предназначенные для web-программирования .
а) Языки, исполняющиеся на сервере, поддерживающего Web-сайт.(РНР, Perl, VBScript)
б) Языки, исполняющиеся на браузере (программе просмотра) клиента JavaScript, JScript, VBScript

3.Языки для математических расчетов

4.Языки для автоматизации работы определенных программных продуктов. (VBA в Microsoft Office)

6.Специализированные языки других видов.
К универсальным языкам можно отнести языки Visual C++, Visual C++.Net, Visual C#.Net, Visual J#.Net, Java, Delphi, Borland C#, Borland C++ Builder.
Хотя чаще всего специализированные языки происходят от универсальных языков например PHP, Perl и JаvаScript произошли от языка С++, VBScript и VBA произошли от языка Visual Bаsic"а, отличия между специализированными и универсальными языками очень значительны.
Специализированные языки, чаще всего используются для написания не очень больших программ, поэтому они оптимизированы на быстрое написание программ и уменьшение размера исходного кода, и в меньшей степени на уменьшение ошибок, использование объектно-ориентированное программирования и разделения кода на модули. А универсальные языки, как правило, используются для создания больших и очень больших проектов, поэтому в них все сделано, чтобы уменьшить количество ошибок и облегчить проектирования программ, облегчение разработки крупных программ.

Основное отличие специальных языков от универсальных:
1) В них меньше объектно-ориентированных средств и средств доступа технологий COM+, DCOM, CORBA, к функциям API операционных систем;
2)Меньше средств многопоточного программирования и распределенного программирования;
3)Используются только динамические типы (т.е. тип переменной определяется в зависимости от её значения, а не при объявление переменной), а не статические. Единственное исключение: в версии 9 языка Visual FoxPro можно использовать и статические типы переменных.
Структура современных языков программирования.
Универсальные языки (и языки производные от них)
I) Производные от языка С++
1. На основе С++:
1.1 Borland C++, Watcom C++ (устарели)
1.2 Microsoft Visual C++
1.3 Microsoft Visual C++ .Net
1.4 Borland C++ Builder
1.5 Borland C++ Builder .Net
1.6 JavaScript (специализированный язык, для разработки страниц в Интернете)

2. На основе Java :
2.1 Java и Java2
2.2 Microsoft Visual J++
2.3 Microsoft Visual J# .Net
3. На основе C#:
3.1 Microsoft Visual C# .Net
3.2 Borland C# Builder.Net
II) Производные от языка Pascal
1 Borland Pascal, Turbo Pascal (устарели)
2 Modula, Oberon, Component Pascal, Active Oberon, Zonnon (сейчас непопулярны)
3 Borland Delphi
4 Borland Delphi .Net
III) Производные от языка Basic
1 Microsoft Visual Basic
2 Visual Basic for Application
3 VBScript (специализированный язык, для разработки страниц в Интернете)
4 Microsoft Visual Basic .Net
Специализированные языки
I) Языки программирования, предназначенные для Интернета:
1. PHP
2. Perl
3. JavaScript
4. VBScript
II) Языки программирования в системах управления базами данных
1. В локальных и файл – серверных СУБД
1.1 Microsoft Visual FoxPro (В одноименной СУБД)
1.2 Visual Basic for Application (В СУБД Access)
2. Клиент – серверных промышленных СУБД
1.1 PL-SQL (В СУБД Oracle)
1.2 Transact – SQL (В СУБД Microsoft SQL Server)
Язык Java разработан фирмой Sun, а JavaScript разработан фирмой Nescafe,и по большому счету это два разных языка, но поскольку их синтаксис очень похож, будем считать, что язык JavaScript произошел от Java. Также существует диалект JavaScript, разработанный фирмой Microsoft, использующийся в Internet Explorer и называемый Jscript.
Очень многие программисты, возможно скажут, что Java вовсе не произошла от C++,и хотя возможно это и так, но если сравнивать их синтаксис то будет видно, что их синтаксис похож, поэтому можно их считать "родственниками”.
В СУБД Oracle можно кроме языка PL – SQL использовать также язык Java.

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

Разработка web-приложений

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

Web-программирование можно разделить на backend (написание серверных скриптов - PHP, Python, Ruby) и frontend (разработка юзерского интерфейса - Javascript, HTML, CSS).

Разработка desktop-приложений

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

Разработка серверных приложений

Это различные игровые сервера (ваша любимая Дотка, CS: GO), IM-сервисы (серверная часть Skype, ICQ, MSN), банковские базы данных.

Разработка мобильных приложений

Множество Java-приложений. VK, Viber, Яндекс.Карты, переводчики, электронные читалки.

Программирование встраиваемых систем

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

Системное программирование

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

Разработка игр

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

Олимпиадное программирование и решение задач

Программирование на различных «непрактичных» и не распространенных языках (Pascal, Delphi) для решения каких-то оригинальных задач, требующих нестандартного подхода, смекалки и IQ выше 160.

Программирование для бухгалтерских и финансовых продуктов

«1С: Предприятие». Вся бухгалтерия в России завязана на этом продукте. Но недостаточно знать лишь сам язык, важно понимать основы бухгалтерского учета. Плюс в том, что работы очень много, и без хлеба вы не останетесь.

Программирование баз данных

Серьезное направление. Хотите разрабатывать базы данных, способных хранить миллиарды строк информации о всех пользователях VKontakte или Facebook и при этом не тормозить - вам сюда.

Science

Наука и этим все сказано. Нейронные сети, моделирование структуры ДНК, запуск спутников, моделирование Большого Взрыва.

Кстати, недавно на сайте NASA была опубликована новость о поиске программиста на «древнем» языке Fortran, которому уже более 60 лет. Требовался программист для разработки программ по управлению автоматическими зондами Вояджер-1 и Вояджер-2, программное обеспечение для которых было написано на Ассемблере, Фортране и языке COBOL еще в 1970-х годах. Никогда не знаешь, какие знания могут пригодиться.

Loading...Loading...