Языки программирования низкого уровня
Первые компьютеры приходилось программировать двоичными машинными кодами.
Однако программировать таким образом — довольно трудоемкая и тяжелая задача.
Для упрощения этой задачи начали появляться языки программирования низкого уровня,
которые позволяли задавать машинные команды в понятном для человека виде.
Для преобразования их в двоичный код были созданы специальные программы — трансляторы.
Примером языка низкого уровня является ассемблер. Языки низкого уровня
ориентированы на конкретный тип процессора и учитывают его особенности,
поэтому для переноса программы на ассемблере на другую аппаратную платформу
её нужно почти полностью переписать. Определенные различия есть и в синтаксисе
программ под разные компиляторы. Правда, центральные процессоры для компьютеров
фирм AMD и Intel практически совместимы и отличаются лишь некоторыми специфическими командами.
А вот специализированные процессоры для других устройств, например, видеокарт и телефонов
содержат существенные различия.
Языки низкого уровня, как правило, используют для написания небольших системных программ,
драйверов устройств, модулей стыков с нестандартным оборудованием, программирование специализированных
микропроцессоров, когда важнейшими требованиями являются компактность, быстродействие и возможность
прямого доступа к аппаратным ресурсам.
Языки программирования высокого уровня
Особенности конкретных компьютерных архитектур в них не учитываются, поэтому созданные приложения легко переносятся с компьютера на компьютер. В большинстве случаев достаточно просто перекомпилировать программу под определенную компьютерную архитектурную и операционную систему. Разрабатывать программы на таких языках значительно проще и ошибок допускается меньше. Значительно сокращается время разработки программы, что особенно важно при работе над большими программными проектами.
Сейчас в среде разработчиков считается, что языки программирования,
которые имеют прямой доступ к памяти и регистрам или имеют ассемблерные
вставки, нужно считать языками программирования с низким уровнем абстракции.
Поэтому большинство языков, считавшихся языками высокого уровня до 2000 года
сейчас уже таковыми не считаются.
- Адресный язык программирования
- Фортран
- Кобол
- Алгол
- Pascal
- Pascal ABC
- Python
- Java
- C
- Basic
- Smalltalk
- C#
- Delphi
- PHP
Недостатком некоторых языков высокого уровня является большой размер программ в
сравнении с программами на языках низкого уровня. С другой стороны, для алгоритмически
и структурно сложных программ при использовании суперкомпиляции преимущество может быть
на стороне языков высокого уровня. Сам текст программ на языке высокого уровня меньше,
однако, если взять в байтах, то код, изначально написанный на ассемблере, будет более компактным.
Поэтому в основном языки высокого уровня используются для разработки программного обеспечения
компьютеров и устройств, которые имеют большой объём памяти. А разные подвиды ассемблера применяются
для программирования других устройств, где критичным является размер программы.
В настоящее время также активно развиваются декларативныеи визуальные языки программирования,
а также методы и средства разработки проблемно-специфичных языков (см. Языково-ориентированное программирование).
Категории языков программирования
Функциональное программирование —
раздел дискретной математики и парадигма программирования,
в которой процесс вычисления трактуется как вычисление значений
функций в математическом понимании последних (в отличие от функций
как подпрограмм в процедурном программировании).
Процедурное программирование — программирование на императивном языке,
при котором последовательно выполняемые операторы можно собрать в подпрограммы,
то есть более крупные целостные единицы кода, с помощью механизмов самого языка.
Стековый язык программирования (англ. stack-oriented programming language) —
это язык программирования, в котором для передачи параметров используется машинная
модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и PostScript,
а также многие ассемблерные языки (использующие эту модель на низком уровне — Java, C#).
При использовании стека в качестве основного канала передачи параметров между словами элементы
языка естественным образом образуют фразы (последовательное сцепление). Это свойство сближает
данные языки с естественными языками.
Аспектно-ориентированное программирование (АОП) — парадигма программирования, основанная на
идее разделения функциональности для улучшения разбиения программы на модули.
Декларативное программирование — это парадигма программирования, в которой задаётся спецификация
решения задачи, то есть описывается, что представляет собой проблема и ожидаемый результат.
Динамический язык — язык программирования, который позволяет определять типы данных и осуществлять
синтаксический анализ и компиляцию «на лету», на этапе выполнения программы. Динамические языки удобны
для быстрой разработки приложений.
Учебный язык программирования — язык программирования, предназначенный для обучения. В качестве таковых
разрабатывались такие языки как BASIC и Паскаль.
IDL, или язык описания интерфейсов (англ. Interface Description Language или Interface Definition Language) —
язык спецификаций для описания интерфейсов, синтаксически похожий на описание классов в языке C++.
Прототипное программирование — стиль объектно-ориентированного программирования, при котором отсутствует понятие класса
, а наследование производится путём клонирования существующего экземпляра объекта — прототипа.
Объектно-ориентированный язык программирования (ОО-язык) — язык, построенный на принципах объектно-ориентированного
программирования.(Наследование, инкапсуляция, полиморфизм)
Логическое программирование — парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел
дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода.
Сценарный язык (язык сценариев, жарг. скриптовый язык, от англ. scripting language) — высокоуровневый язык сценариев
(англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта.
Сценарий — это программа, имеющая дело с готовыми программными компонентами.
Эзотерический язык программирования — язык программирования, разработанный для исследования границ возможностей разработки
языков программирования, для доказательства потенциально возможной реализации некой идеи (так называемое «доказательство концепции»,
англ. proof of concept), в качестве произведения программного искусства, или в качестве шутки (компьютерного юмора).
Языки Web-программирования
HTML
HTML (от англ. HyperText Markup Language — «язык гипертекстовой разметки») —
стандартизированный язык разметки документов во Всемирной паутине. Большинство
веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML
интерпретируется браузерами; полученный в результате интерпретации форматированный
текст отображается на экране монитора компьютера или мобильного устройства.
Язык HTML является приложением SGML (стандартного обобщённого языка разметки)
и соответствует международному стандарту ISO 8879.
CSS
CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) —
формальный язык описания внешнего вида документа, написанного с использованием языка разметки.
CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения отдельных блоков и
других аспектов представления внешнего вида этих веб-страниц. Основной целью разработки CSS являлось
разделение описания логической структуры веб-страницы (которое производится с помощью HTML или других
языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью
формального языка CSS). Такое разделение может увеличить доступность документа, предоставить большую
гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в
структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях
или методах вывода, таких как экранное представление, печатное представление, чтение голосом (специальным
голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими шрифт Брайля.
JavaScript
JavaScript — прототипно-ориентированный сценарный язык программирования. Является реализацией языка ECMAScript (стандарт ECMA-262).
JavaScript обычно используется как встраиваемый язык для программного доступа
к объектам приложений. Наиболее широкое применение находит в браузерах как язык
сценариев для придания интерактивности веб-страницам.
Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое
управление памятью, прототипное программирование, функции как объекты первого класса.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на
Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо
компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.
PHP
PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально Personal Home Page Tools —
«Инструменты для создания персональных веб-страниц») — скриптовый язык общего назначения, интенсивно
применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством
хостинг-провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов.
Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом