Как компьютер понимает программу написанную на языке

Одной из ключевых характеристик PHP является то, что это интерпретируемый язык программирования. С другой стороны, языки программирования наподобие C , изначально разрабатывались для компиляции. Что это значит?

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

Рабочий цикл программы

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

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

Константин Воронцов «Как компьютеры учатся понимать человеческий язык»

Поговори с машиной: как ваш компьютер и телефон понимают, чего вы от них хотите

Сергей Лисицын, студент 4-го курса МФТИ, сотруд.

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

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

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

Но на смену машинному коду пришли языки программирования, с помощью которых гораздо проще объяснять компьютеру поставленные задачи. А для таких языков, соответственно, нужны были переводчики. Первый переводчик в СССР — или, как его тогда называли, ПП, программирующая программа — был написан еще в 1954 году. Сегодня переводчики бывают самые разные: бесплатные для скачивания и редактирования (или с открытым исходным кодом) и платные, которые корректировать нельзя.

Надо ли знать программисту: историю ЭВМ, машинный код, уметь работать с низкоуровневыми языками?

Вжиться в роль компилятора

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

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

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

Однако стоит пояснить еще один крайне важный момент. Если вы переводчик-интерпретатор, то для каждого прочтения перевода вы переписываете каждую строчку заново. Иначе говоря, книги на полке с финальным переводом с корейского языка на русский у вас не остается.

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

Дальше — больше

Что же находится внутри компилятора, или как работают профессиональные переводчики? Условно компилятор можно разделить на три части: frontend, middle-end и backend. Остановимся подробно на каждой из них.

Читайте также:
Как писать программу концерта

Frontend работает непосредственно с языком, с которого мы хотим перевести книгу. И это безумно удобно (позже читатель поймет почему). Компилятор производит лексический, синтаксический и семантический анализ.

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

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

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

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

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

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

Компиляторы как суть прогресса

В мире постоянно создаются новые и дорабатываются старые языки. Постоянно совершенствуется и архитектура компьютера — то, каким образом машина воспринимает и считывает информацию. Получается, что любые изменения в архитектуре или языках требуют заново переписывать компилятор? Нет.

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

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

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

Не пропустите следующую лекцию:

Источник: theoryandpractice.ru

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

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

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

Какой язык программирования учить в 2020?

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

Читайте также:
Как отключить реферальную программу Озон

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

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

  1. C++ (1983)
  2. Python (1990)
  3. Visual Basic (1991)
  4. PHP (1994)
  5. Delphi (1995)
  6. Java (1995)
  7. JavaScript (1995)
  8. Ruby (1995)
  9. ActionScript (1998)
  10. Nemerle (2006)

Кратко рассмотрим их плюсы и минусы.

Обзор самых популярных программирования

1) С++

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

С момента своего создания этот язык прошёл несколько стандартизаций и обновлений, благодаря чему остаётся актуальным и в наше время. Основным его плюсом является полная универсальность – на С++ можно писать всё. Именно благодаря этому его так часто используют профессионалы. Также можно отметить сравнительную простоту компилятора – если вы уже овладели С, Python или Java, то работать с С++ для вас не составит труда.

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

Правда, вторая проблема была частично решена в 1998 году, когда были введены дополнительные шаблоны компилятора. В целом, что бы ни говорили критики, а С++ вот уже почти 30 лет остаётся одним из наиболее популярных языков программирования в мире.

Python видео урок

2) Python

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

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

Visual Basic видео урок

3) Visual Basic

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

Именно ВБ чаще всего используют профессионалы из Майкрософт для создания своих программ. Недостатки у компилятор также есть. К ним относятся отсутствие указателей, низкоуровневый доступ к памяти компьютера. Также программа отличается невысокой скоростью работы и возможностью использования только на Windows и Mac OS X. Более подробно ознакомиться с Visual Basic можно на сайте https://ru.wikipedia.org/wiki/Visual_Basic

4) PHP

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

Также с помощью PHP можно создавать графический интерфейс пользователя. Создатели языка заложили в него несколько пасхальных яиц. Например, если ввести в строку любой_сценарий.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 то на экране появится фотография (то, что на ней изображено, зависит от версии).

Из недостатков языка важно вспомнить то, что если вы написали код на более ранней версии, то на новой он, скорее всего, не откроется. Также в нём просто не предусмотрена возможность создания многопоточных программ. Узнать больше информации о языке можно на сайте www.php.net

Delphi видео урок

5) Delphi

Delphi – многофункциональный язык, созданный на основе Object Pascal. Данный язык является ещё одним из самых популярных языков из-за наличия огромного количества компиляторов и диалектов. Каждый программист использует именно тот диалект, который подходит для его основного направления в работе. В целом, Delphi – императивный, объектно-ориентированный язык.

Чаще всего на этом языке создаются разнообразные программы. Так, именно с помощью Delphi создали Light Alloy, AIMP, The KMPlayer, Total Commander, QIP, графический интерфейс Skype и многое другое. Именно наличие множества диалектов является одновременно и достоинством, и недостатком языка, так как программу, написанную на одном из них, другой компилятор, скорее всего, не откроет. Сайт https://ru.wikipedia.org/wiki/Delphi позволит более подробно ознакомиться с этим языком.

Читайте также:
Лучшая утилита для полного удаления программ

Java видео урок

6) Java

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

Так, программы, написанные на Java, имеют репутацию слишком медлительных и требующих больших объёмов оперативной памяти. Java имеет несколько модификаций (не диалектов, а именно разных видов), которые созданы для различных целей. Каждый из них имеет свои уникальные библиотеки данных и структуру, позволяющую более продуктивно работать над определённым направлением программирования. Больше информации на сайте http://www.oracle.com/technetwork/java/

JavaScript видео урок

7) JavaScript

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

Область применения JavaScript необычайно широка – это и веб-приложения, и браузеры, и прикладное ПО, и офисные и серверные приложения. Широкую популярность также обеспечивают ему специальные библиотеки, позволяющие достичь высокого уровня абстракции. Из минусов JavaScript стоит отметить очень низкий уровень безопасности его приложений, а также массу ошибок в песочнице, браузере, плагинах и расширениях, с которыми хотя бы однажды сталкивался каждый. Но в то же время, совсем отказаться от этого языка пока что нельзя, ведь без него откажут в работе большинство интернет-браузеров. Более подробно на javascript.ru

Ruby видео урок

8) Ruby

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

У Руби довольно обширное количество разнообразных библиотек, каждая из которых применяется в определённых случаях, в зависимости от необходимости. Также особенностью этого скриптового языка является то, что программы, написанные на нём, могут в дальнейшем использовать его для расширения своих возможностей. На данный момент уже выпущено несколько версий языка, каждая из которых принесла что-то новое в принцип его работы. Кроме того, этот язык один из самых экономных по отношению к ресурсам компьютера, за что его так любят обычные программисты. Самая последняя из них — 1.9.3-p194, релиз которой состоялся 20 апреля 2012 года. На официальном сайте вы можете более подробно ознакомиться с достоинствами и недостатками этого языка www.ruby-lang.org

ActionScript видео урок

9) ActionScript

Этот язык также менее популярен среди обывателей из-за того, что с его помощью можно писать в основном объектно-ориентированные программы, даже чаще всего не программы, а Flash – приложения. Синтаксис и функциональность компилятора стандартны для подобного рода языков и заключаются в работе, запрограммированной лишь на указанный вид приложений. Плюсом этого языка является его многофункциональность по отношению к Flash. Как ни странно, но это же одновременно и его минус, так на нём больше нельзя написать практически ничего. Узнать больше о этом компиляторе можно на сайте actionscript.org

Nemerle видео урок

10) Nemerle

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

Суть этого метода в создании программ, которые во время своей работы генерируют другие программы. То есть, можно сказать, что он сам создаёт языки программирования? И да, и нет. Он создаёт возможные сценарии для дальнейшего генерирования исполняемых файлов. В целом, Nemerle просто-напросто объединил в себе все самые лучшие и необходимые функции более ранних языков.

В общем, вышло так, что наиболее новый язык имеет меньше всего недостатков. Больше информации на http://nemerle.org/About/.

Итог

Языков программирования в наше время великое множество. Мы рассмотрели лишь самые популярные из них. Каждый имеет свои недостатки и преимущества из-за того, что они ориентированы на различные сферы программной деятельности. Один отлично работает с браузерами, но совершенно не подходит для написания Flash, другой – совсем наоборот. Каждый программист начинает с самых простых из них и в конце обучения выбирает или тот, который больше всего подходит ему из-за направления его деятельности, и становится специалистом в этой области, или же продолжает понемногу использовать каждый из них.

Большинство из специалистов рекомендуют начинать обучение с Visual Basic, потом переходить на С++, а дальше выбирать наиболее интересный и удобный, на ваш взгляд, язык. Кроме того, не стоит забывать о том, что у большинства языков программирования есть ещё и свои диалекты, которые иногда сильно различаются между собой.

Источник: www.13min.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru