Прежде чем идти дальше, нужно разобраться, как же программный код написанный на разных языках понимают компьютеры или мобильные устройства.
Действительно, процессоры этих устройств не понимают компьютерные языки, так как работают с специальными командами, называемыми машинный код или машинный язык.
Машинный код (платформенно-ориентированный код), машинный язык — система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой вычислительной машины.
Пример машинного кода, с которым работает процессор
В зависимости от того, насколько языки программирования близки к машинному коду, их разделяют на:
Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального процессора.
Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка.
Assembly — единственный современный низкоуровневый язык программирования, который широко используется.
Программа на Assembly "собирается" на специальной программе - Assembler. Язык своеобразный и очень сложный.
Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания. Высокоуровневые языки программирования были разработаны для платформенной независимости сути алгоритмов.
Чтобы перевести язык программирования в машинный код требуются специальные инструментальные программы трансляторы.
В зависимости от этих трансляторов языки программирования разделяются на компилируемые и интерпретируемые.
Компилируемый язык программирования — язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл с особым заголовком и/или расширением для последующей идентификации этого файла, как исполняемого операционной системой (в отличие от интерпретируемых языков программирования, чьи программы выполняются программой-интерпретатором). Выполнение преобразованного кода происходит на уровне центрального процессора.
Компилятор (compiler) — это инструментальная программа, которая производит перевод из исходного кода в машинный. Компиляторы, как правило, написаны или на языке Assembler, или на языке C.
Следующие языки принято считать компилируемыми: C, C++, Objective-C, Delphi, Go, Pascal, Swift
Языки компилируемые в байт-код: Java, Scala, Kotlin, Groovy, Clojure, C#, Visual Basic, Python, Erlang
Интерпретируемый язык программирования — язык программирования, исходный код на котором выполняется методом интерпретации. Классифицируя языки программирования по способу исполнения, к группе интерпретируемых относят языки, в которых операторы программы друг за другом отдельно транслируются и сразу выполняются (интерпретируются) с помощью специальной программы-интерпретатора (что противопоставляется компилируемым языкам, в которых все операторы программы заранее оттранслированы в объектный код). Такой язык может реализовывать конструкции, позволяющие динамические изменения на этапе времени выполнения (модификация существовавших или создание новых подпрограмм). Эти конструкции затрудняют компиляцию и трансляцию на компилируемый язык.
Следующие языки принято считать интерпретируемыми: MATLAB, JavaScript, Lisp, Perl, PHP, R, Ruby
Классификация языков программирования на компилируемые и интерпретируемые является неточной и весьма условной, поскольку для любого языка программирования может быть создан как компилятор, так и интерпретатор.
И, в действительности, существует множество языков, инструментарий которых включает в себя и компилятор, и интерпретатор (напр. Ch и CINT для C или Lisp). Кроме того, существуют реализации языков, которые компилируют исходный текст программы в байт-код, который затем либо интерпретируется, либо выполняется т. н. JIT-компилятором (или виртуальной машиной). Это привносит ещё больше неясности в вопрос о том, где именно должна быть проведена граница между компилируемым языком и языком интерпретируемым.
Поэтому, для каждой платформы разрабатывается платформенно-уникальный транслятор для каждого высокоуровневого языка, например, переводящий текст, написанный на Java в элементарные команды микропроцессоров семейства x86.
Обычно, мы ассоциируем языки программирования с компьютерными языками, но это не однозначное соответствие. Понятие компьютерный язык (калька с англ. computer language), как правило, относится к языкам, ассоциируемым с компьютерной техникой.
К компьютерным языкам также относят:
Язык программирования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Со времени создания первых программируемых машин человечество придумало более восьми тысяч языков программирования (включая эзотерические, визуальные и игрушечные). Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты могут владеть десятком и более разных языков программирования.
Язык программирования предназначен для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и т. п. Язык программирования отличается от естественных языков тем, что предназначен для управления ЭВМ, в то время как естественные языки используются, прежде всего, для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Сценарный язык (язык сценариев, жарг. скриптовый язык; англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Разница между программами и сценариями довольно размыта. Сценарий — это программа, имеющая дело с готовыми программными компонентами.
Согласно Джону Устерхауту, автору языка Tcl, высокоуровневые языки можно разделить на языки системного программирования (англ. system programming languages) и сценарные языки (англ. scripting languages). Последние он также назвал склеивающими языками (англ. glue languages) или языками системной интеграции (англ. system integration languages). Сценарии обычно интерпретируются, а не компилируются, хотя сценарные языки программирования один за другим обзаводятся JIT-компиляторами.
В более узком смысле под скриптовым языком может пониматься специализированный язык для расширения возможностей командной оболочки или текстового редактора и средств администрирования операционных систем.
Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — язык программирования, специализированный для конкретной области применения (в противоположность языку общего назначения[en], применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфику решаемых с его помощью задач. Является ключевым понятием языково-ориентированного программирования.
Строго говоря, деление языков программирования на языки общего назначения и предметно-ориентированные весьма условно, особенно, если учесть, что формально любой протокол или формат файлов является языком. Существует масса языков общего назначения, применяемых в качестве предметно-ориентированных для определённых задач, и наоборот, предметно-ориентированных языков, применяемых в качестве языков общего назначения. Так, язык ML, породивший целое семейство языков общего назначения (включая Haskell), — изначально разрабатывался в качестве DSL для системы автоматического доказательства теорем LCF[en]. Примером, показывающим условность классификации, служит язык БНФ (и компилятор с него Lex/Yacc): с одной стороны, это яркий пример метаязыка, с другой — он предназначен для одной конкретной задачи.
Псевдоестественный язык — компьютерный язык, конструкции которого намеренно сделаны похожими на конструкции естественного языка (английского, русского и т. д.)
Псевдоестестенные языки рассчитаны на неопытного пользователя. У некоторых псевдоестественных языков (например, SQL) лишь простейшие конструкции похожи на естественный язык; сложные запросы имеют явно «компьютерный» вид.
Синтаксис большинства псевдоестественных языков очень прост, что позволяет легко писать программу разбора языка.
Информационный язык — специализированный искусственный язык, используемый в различных системах обработки информации. От информационных языков следует отличать языки программирования, машинные языки и формализованные языки науки. Обычно различают:
· информационно-логический язык — язык для информационно-логических систем, в первую очередь — языки представления знаний (например SC, SCP, SCL) и языки баз данных (например SQL);
информационно-поисковый язык — знаковая система, предназначенная для описания (путём индексирования) основного смыслового содержания текстов (документов) или их частей, а также для выражения смыслового содержания информационных запросов с целью реализации информационного поиска. Примером информационно-поискового языка является язык библиографического описания, который служит средством идентификации текстов и используется в алфавитных каталогах, картотеках и библиографических указателях. В его составе — библиографические элементы (фамилии авторов, заглавия, названия учреждений, периодических изданий и им подобные). Другим примером информационно-поискового языка являются языки обращений к поисковым системам Yandex или Google.
Язык описания данных - Язык разметки
Язык разметки (текста) в компьютерной терминологии — набор символов или последовательностей, вставляемых в текст для передачи информации о его выводе или строении. Принадлежит классу компьютерных языков. Текстовый документ, написанный с использованием языка разметки, содержит не только сам текст (как последовательность слов и знаков препинания), но и дополнительную информацию о различных его участках — например, указание на заголовки, выделения, списки и т. д. В более сложных случаях язык разметки позволяет вставлять в документ интерактивные элементы и содержание других документов.
Следует отметить, что язык разметки неполон по Тьюрингу и обычно не считается языком программирования.
Языки разметки используются везде, где требуется получение форматированного текста на основании одного лишь текста: в типографии (SGML, TeX, PostScript, RTF), пользовательских интерфейсах компьютеров (Microsoft Word, OpenOffice, troff), Всемирной Сети (HTML, XHTML, XML, WML, VML, PGML, SVG, XBRL).
Для написания исходных текстов Википедии, её участники используют особый язык разметки (см. Википедия:Как править статьи), а для отображения сложных математических формул — язык TeX.
Язык спецификаций — формальный язык, предназначенный для декларативного описания структуры, связей, свойств данных и способов их преобразований, (в отличие от активных языков) без явного упоминания порядка выполняемых действий и использования конкретных значений данных.
В отличие от языков программирования, используемых при реализации компьютерных программ, языки спецификаций применяются для проведения системного анализа, анализа требований, разработке архитектуры создаваемых программных систем и формальной верификации программного обеспечения.
Различные языки спецификаций используются для описания структуры информационной системы, моделей предметной области и других задач, связанных с разработкой ПО и БД (UML, ERD, DFD) и могут иметь как текстовый, так и бинарный формат, а также графическое представление конструкций языка. Применяются они также для описания интерфейсов пользователя (XUL, XAML), шаблонов отчётов, преобразования документов, а также в качестве форматов передачи данных между приложениями в распределённых информационных системах (XML, JSON, CLEAR). Ещё одно применение языков спецификации — описание структур баз данных, а именно — декларативная часть SQL обычно называется Data Definition Language (DDL). При синтаксическом анализе и разборе (парсинге) применяются языки спецификаций, например, форма Бэкуса — Наура и ABNF (англ. augmented Backus-Naur form — расширенная форма Бэкуса — Наура) являются общепринятыми формальными языками спецификации сетевых протоколов и даже синтаксиса активных языков программирования; регулярные выражения аналогичны выше упомянутым нотациям, однако форма записи регулярных выражений в десятки раз компактнее, и хорошо разработаны алгоритмы парсинга с их помощью, а поддержка регулярных выражений осуществлена в подавляющем большинстве современных языков программирования.
Язык описания аппаратуры (HDL от англ. hardware description language) — специализированный компьютерный язык, используемый для описания структуры и поведения электронных схем, чаще всего цифровых логических схем.
Языки описания аппаратуры внешне похожи на такие языки программирования, как Си или Паскаль, написанные на них программы также состоят из выражений, операторов, управляющих структур. Важнейшим отличием между обычными языками программирования и языками HDL является явное включение концепции времени в языки описания аппаратуры.
Языки описания аппаратуры являются неотъемлемой частью САПР, особенно для таких сложных схем, как специализированные интегральные схемы, микропроцессоры и программируемые логические устройства.
Основные практически используемые языки описания аппаратуры — Verilog и VHDL; также существует несколько десятков альтернативных языков.
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.
· Стандартизированный протокол передачи данных также позволяет разрабатывать интерфейсы (уже на физическом уровне), не привязанные к конкретной аппаратной платформе и производителю (например, USB, Bluetooth).
Сигнальный протокол используется для управления соединением — например, установки, переадресации, разрыва связи. Примеры протоколов: RTSP, SIP. Для передачи данных используются такие протоколы как RTP.
Сетевой протокол — набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.
Разные протоколы зачастую описывают лишь разные стороны одного типа связи. Названия «протокол» и «стек протоколов» также указывают на программное обеспечение, которым реализуется протокол.
Новые протоколы для Интернета определяются IETF, а прочие протоколы — IEEE или ISO. ITU-T занимается телекоммуникационными протоколами и форматами.
Примеры сетевых протоколов
TCP/IP — набор протоколов передачи данных, получивший название от двух принадлежащих ему протоколов: TCP (англ. Transmission Control Protocol) и IP (англ. Internet Protocol)
Наиболее известные протоколы, используемые в сети Интернет:
HTTP (Hyper Text Transfer Protocol) — это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц между компьютерами, подключенными к одной сети.
FTP (File Transfer Protocol) — это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.
POP3 (Post Office Protocol) — это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.
SMTP (Simple Mail Transfer Protocol) — протокол, который задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.
TELNET — это протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ находящейся с ним в одной сети, как на своей собственной, то есть запускать программы, менять режим работы и так далее. На практике возможности ограничиваются тем уровнем доступа, который задан администратором удаленной машины.
Поддержите канал 👇
📢 Предлагается оценить степень твоей удовлетворённости каналом, по шкале от 1 до 5. Где 5 – будет соответствовать вариант «полностью удовлетворён», а 1 – «не удовлетворён».
#pythonснуля #программированиенаpython #урокиpython
✔ Не забываем ставить лайк и подписываться на мой канал: https://dzen.ru/lecturer_abramenkova?share_to=link
Впереди много познавательного!
✔ Будем дружить https://vk.com/lecturer_abramenkova
Благодарю каждого за репост!)