Языки программирования разновидности 3. Какие бывают виды программистов? Виды деятельности программиста

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Web-разработчик

Самым востребованным на 2017 год видом профессии «программист» является веб-разработчик. К этой категории относятся специалисты по созданию сайтов.

Условно веб-мастера делятся на три группы:

  • разработчик Frontend;
  • Backend-программист;
  • Fullstack-девелопер.

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

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

Кто такой фронтенд-разработчик?

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

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

Инструменты фронтенд-разработчика

Писать код на HTML, CSS и JavaScript не достаточно. Чтобы оставаться конкурентоспособным на рынке труда, Frontend-разработчик должен знать следующее:

  1. jQuery. Библиотека JavaScript с коллекцией плагинов и расширений. Вместо того чтобы писать код с нуля, jQuery позволяет добавлять и настраивать готовые элементы. Например, автозаполнение форм, слайд-панель, таймер, связанная анимация.
  2. Фреймворки Bootstrap, Foundation, Backbone, AngularJS и EmberJS. Это программные оболочки повышающие производительность ресурса. Предоставляют готовый дизайн и существенно облегчают жизнь разработчика.
  3. Препроцессоры SASS и LESS. Добавляют CSS функциональности, обрабатывает код, превращая его в отформатированный и кросс-браузерный CSS.
  4. Популярные CMS - адаптивная верстка и кросс-платформенность.

Обязанности и виды деятельности программиста включают отладку и тестирование клиентской части. Веб-инженер проверяет отдельные блоки исходного кода на ошибки. Тестирует интерфейс, узнает, насколько пользователям будет удобно взаимодействовать с приложением. Также фронтенд-специалист должен разбираться в азах серверного программирования, технологиях Node.js, помимо JS писать на PHP и SQL.

Зарплата и перспективы

Средний оклад мастера составляет 66 тысяч 410 рублей в месяц. В США эта сумма вырастает до 102 тысяч долларов в год. Высокие зарплаты, легкость языка разметки и написания скриптов привлекает начинающих кодеров к фронтенд-разработке. Освоив JS, большинство из них переходит к серверным языкам. Самые талантливые учат высокоуровневые C и Java, постепенно осваивают геймдев, создание приложений и другие виды информационной деятельности программиста.

Программист серверной части

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

Программист серверной части - это следующая эволюционная ступень после фронтенд-разработчика. Его задача заставить сервер, приложение и БД взаимодействовать. Пишет на серверных языках PHP, Ruby, Python, Java и.Net. В качестве инструментов для работы с данными использует MySQL, Oracle и SQL Server. В описаниях вакансии работодатели часто указывают дополнительные требования:

  • знание фреймворков PHP: Zend, Symfony и CakePHP;
  • опыт работы с программным обеспечением контроля версий SVN, CVS или Git;
  • навыки работы с операционными системами Linux, Unix, MacOS X и Windows Server.

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

Разработчик Fullstack

Это вид работы программиста, включающий в себя все этапы создания веб-приложения. Fullstack developer -мастер на все руки, пишущий одновременно клиентскую и серверную часть. Первые упоминания о профессии появились в 2010 году после статьи сотрудника Facebook Карлоса Буэно. С этого момента компания нанимает работников исключительно уровня Fullstack.

Обязанности универсального веб-программиста:

  1. Серверное администрирование. Подключение через терминал к удаленным серверам без GUI. Управление пользовательскими группами, брандмауэрами, программами Apache и Nginx. Фулстак-программист должен все знать об облачном хостинге на платформах Heroku, Google Cloud, Azure, AWS и любых других.
  2. Создание бэкенда и базы данных. Специалист должен разбираться в базах данных MySQL, PostgreSQL, а также БД noSQL: MongoDB, Redis или Cassandra. Иметь представление о графовых СУБД, таких как Neo4j.
  3. Фронтенд-разработка и дизайн. Помимо стандартных обязанностей, верстки и подключения JS, Fullstack-мастер проектирует макет в редакторах Photoshop или Illustrator.

Фулстак-разработчики - это специалисты уровня Senior Developer. За ними охотятся хедхантеры и у них самые высокие оклады. В США зарплата Fullstack Developer начинается от 70-80 тысяч долларов и от 25-30 тысяч долларов в странах Восточной Европы. На иностранных биржах фриланса, например Upwork, один час работы Fullstack-разработчика оценивается в 30$ и выше.

Специалист по созданию и разработке компьютерных игр

Разработка компьютерных игр - одна из самых быстроразвивающихся сфер ИТ-технологий. По данным аналитического агентства NewZoo объем рынка видеоигр с каждым годом увеличивается на 9%. Если в 2016 году он составил почти 100 миллиардов долларов, то к 2018 году эта сумма увеличится до 112.5 миллиардов. Поэтому «инженер видеоигр» - это перспективная и высокооплачиваемая должность.

Инженер, или Game-разработчик - общее название категории специалистов, задействованных в процессе создания игры. Главная задача - превратить идею в программный код и заставить все элементы взаимодействовать. 90% рабочего времени программисты пишут и отлаживают алгоритмы на языке C++, Visual Basic, Java и MEL.

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

Какие бывают виды программистов игр?

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

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

За свой труд на благо игровой индустрии данный вид программистов получает зарплату от 60 тысяч рублей. Доход инди-разработчиков точно просчитать сложно. Есть случаи, когда успешные проекты приносили миллионы буквально за неделю. Например, игра-хит Punch Club, Angry Birds и всем известная «Майнкрафт». Существуют, конечно, провальные задумки наподобие Scroll Ninja, не оправдавших ожидания создателей.

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

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

Разрабатывается программное обеспечение под различные операционные системы, включая серверные Unix и Windows Server, а также мобильные платформы. Код пишется на языках «Си», за редким исключением Assembler. Основная задача системного инженера заключается в установке, настройке, тестировании ОС и всех ее компонентов

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

Системный программист необходим в любой сфере ИТ, включая автоматизацию процессов производства и мониторинг безопасности. В США за труд специалиста готовы платить от 87 до 104 тысяч долларов. В Англии 57 тысяч фунтов стерлингов, в России 90 тысяч рублей.

Инженер прикладного программного обеспечения

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

Работа прикладного инженера заключается в написании кода, его последующей компиляции, отладке и тестировании. Иногда специалист обновляет или вносит изменения в уже существующее ПО. Для программирования использует высокоуровневые языки Java, C#, C++, Python, PHP. Прикладные программисты редко трудятся в одиночку. В основном, они являются участниками стартапов, или входят в штат сотрудников компании, занимающейся разработкой компьютерного софта.

«Программист» - интересная и разнообразная профессия с множеством направлений и специализаций. Одни делают виджеты для сайтов и проектируют API, другие пишут код для серверов или корпят над графикой Disciples III. Каждый, кто любит программировать, может реализовать себя в веб-разработке, стать именитым создателем игр или писать программы для спутников НАСА.

Классификация языков программирования по категориям связана с методами, которые используются при написании программ.

интернет-биржа студенческих работ">

Рисунок 1. Классификация языков программирования. Автор24 - интернет -биржа студенческих работ

Процедурные языки

Процедурные языки являются языками высокого уровня, в которых используется метод разбиения программ на отдельные связанные между собой модули – подпрограммы (процедуры и функции). Компоненты языка состоят из последовательности операторов, которые используют библиотечные процедуры и функции. Первым процедурным языком был Fortran, затем появился Cobol, Algol, Pascal, C, Ada.

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

Замечание 1

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

К языкам низкого уровня относится:

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

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

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

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

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

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

Языки высокого уровня делятся на универсальные и проблемно-ориентированные.

Наиболее распространенные универсальные языки C#, C++, Basic, Pascal (Delphi) используются для разработки Windows-приложений. Большой вклад в программирование на начальных этапах внесли языки Fortran, Cobol, Algol, C и др.

Языки программирования для разработки Интернет-приложений скорее относятся к универсальным языкам. К ним относятся современные версии C#, Basic, J#.

Замечание 2

Проблемно-ориентированными языками, которые используются на Интернет-серверах и клиентских Интернет-приложениях, являются PHP, Perl, JavaScript, VBScript.

Объектно-ориентированные языки

Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java.

Декларативные языки программирования

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

Функциональные языки программирования

Функциональные языки являются языками искусственного интеллекта. Программа, написанная на функциональном языке, состоит из последовательности функций и выражений, которые необходимо вычислить. Основной структурой данных является связный список. Функциональное программирование принципиально отличается от процедурного. Основными функциональными языками являются Lisp, Miranda, Haskel.

Логические языки программирования

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

Языки сценариев (скрипты)

Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек.

Языки, ориентированные на данные

Языки ориентированы на работу с одним определенным типом данных. Например, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами.

Особое развитие получили языки для работы с базами данных:

  • PL/SQL,
  • FoxPro.

Замечание 3

Широкими возможностями обработки документов текстового процессора Microsoft Word, электронных таблиц MS Excel, баз данных MS Access и даже программ подготовки слайдовых презентаций MS PowerPoint обладает встроенный язык системы MS Office – Visual Basic for Application (VBA).

Быстрая навигация:
1.31 Списки - массивы. Первое знакомство. 1.30 Функции которые возвращают результат - return 1.29 Подпрограммы: функции и процедуры в Питоне 1.28 Преобразование типов данных - int() 1.27 Ввод данных с клавиатуры - input() 1.26 Типы и размеры данных 1.25 Цикл с предусловием - while. Числа Фибоначчи 1.24 Измерение длины строки, списки 1.23 Срезы строк - вывод определенного количества символов из имеющегося текста 1.22 Строки и управляющие символы 1.21 Системные ошибки в процессе отладки программы 1.20 Оператор ветвления - if, комментарии 1.19 Вывод на печать - print(), быстрый ввод данных, округление, комментарии 1.18 Типы программирования. Часть 2. Объектно-ориентированное программирование 1.17 Типы программирования. Часть 1. Структурное программирование. Циклы 1.16 Представление символьной информации - ASCII 1.15 Деление двоичных чисел 1.14 Математические операции с двоичными числами 1.13 Как хранится и записывается информация. Биты и байты 1.12 Перевод целых чисел десятичной системы счисления в другую систему 1.11 Перевод целых чисел из шестнадцатеричной системы счисления в десятичную 1.10 Перевод целого двоичного числа в шестнадцатеричное 1.9 Перевод целого двоичного числа в другую систему счисления 1.8 Системы счисления 1.7 Булевая алгебра. Логические выражения 1.6 Базовые понятия. Часть 3 - Числа, выражения, операнды, знаки операций 1.5 Базовые понятия. Часть 2 - Программа, данные 1.4 Базовые понятия. Часть 1 - Задача и алгоритм 1.3 Среда разработки СИ 1.2 История языков программирования 1.1 Введение

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

Языки программирования – формальные языки, предназначенные для описания .

Формальные языки характерны тем, что имеют четкие синтаксические правила.
Например запись 2x2=4 является синтаксически правильной математической записью, а 2=+4 – нет.

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

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

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

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

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

Вот интересная вводная лекция
по парадигмам программирования
на русском языке:



Перевод осуществлён Kovalev Filipp

Это обзорная лекция профессора Джери Кейн с факультета Computer Sciense университета Стэнфорд.
Парадигмы программирования представляют несколько языков, включая C, Ассемблер, C++, Параллельное программирование, Sheme и Python.
Цели данного курса - научить слушателей как писать код на каждом из этих языков и понимать парадигмы программирования, представляемые этими языками.

Поколения языков программирования

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

Развитию программирования поспособствовала идея Джона Фон Ньюмана (англ. John Von Neumann), опубликованная в 1945 году, в которой он описал компьютер, где в памяти вместе с данными хранится и сама программа.

Языком программирования первого поколения считается машинный код. Машинный код состоит из инструкций, которые компьютер (процессор) может выполнить (а также данных, которые принадлежат этим инструкциям). Программируя на машинном коде, программист должен был писать свою программу в двоичном коде, так что бы процессор мог это понять и исполнить. В сущности, такое программирование требует хорошего знания и понимания аппаратного обеспечения, потому что в процессе программирования необходимо знать что процессор может сделать, где находятся устройства ввода-вывода (англ. I/O- Input-Output), а также как с ними необходимо общаться и сколько времени будет потрачено на ту или иную операцию. Таким образом, машинный код очень крепко связан с аппаратным обеспечением, на котором соответствующая программа будет работать. На сегодняшний день машинный код из компьютеров никуда не исчез, все действия на низком уровне (уровне аппаратного обеспечения) происходят до сих пор в машинном коде, т.е. на каком бы языке программирования не была написана программа в, конечном итоге она преобразуется в понятный аппаратному обеспечению машинный код.

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

MOV AL, 19

ADD AL, 4

OUT 2

Данный отрывок кода присваивает регистру AL значение 19(обычно значения представлены числами в шестнадцатеричной системе), прибавляет к значению регистра AL число 4 и после этого отправляет на выход номер 2. Написанная программа переводится из ассемблера в машинный код и после этого процессор может начать её выполнение.

Языки ассемблера и машинный код считаются языками низкого уровня.

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

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

FORTRAN (The IBM Mathematical FORmula TRANslating System) - язык программирования, разработанный в 1950-тых годах для математических вычислений и в научных целях.

COBOL (COmmon Business Oriented Language) - Объектно-ориентированный язык программирования, созданный в 1959году, в основном для написания программ удовлетворяющих бизнес нуждам.

BASIC (Beginner"s All-purpose Symbolic Instruction Code) - Язык, разработанный в 1963 году, который поначалу создавался для того, чтобы инженеры могли производить на компьютерах различные симуляции.

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

С - имя происходит от того, что этот язык в основном базировался на языке с именем B. Создавался для написания операционных систем (многие UNIX совместимые операционные системы написаны на этом языке), уже долгое время является одним из самых популярных языков программирования.

С++ - объектно-ориентированный С.

Java - язык программирования, разработанный на основе С++.

Visual Basic, Delphi, Python, C# - все являются языками третьего поколения. Многие языки программирования третьего поколения моложе (новее), чем некоторые языки четвёртого и пятого поколений.

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

Базовые типы языков программирования.

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

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

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

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

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

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

Интерпретируемые и компилируемые языки

До того, как компьютер сможет выполнить программу, написанную на языке высокого уровня, её приходится «переводить» на понятный компьютеру язык, т.е. машинный код. Этот процесс перевода называют трансляцией, а программу-переводчик - транслятором. Трансляторы делятся на два класса: компиляторы и интерпретаторы.

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

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

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

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