Язык общения с компьютером

Язык общения с компьютером

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

Но если Вы серьёзно хотите с этим разобраться, то лучше обратитесь к Википедии. Читая одну статью за другой, и задавая себе вопросы — что теперь не понятно? —Вы быстрее составите для себя правильныю картину. Самостоятельная работа для ума полезнее.

Как правило, любая элементарная инструкция компьютеру, на самом нижнем уровне, состоит из кода команды и, возможно, кода данных. Например, "прочесть данные из памяти по адресу Х в регистр А", "сложить данные из регистров А и В и поместить сумму в регистр С", "сравнить содержимое регистров А и В", "сдвинуть содержимое регистра А на N разрядов влево" и т. д. То есть даже на таких простых примерах видно, что любая инструкция — это команда (ЧТО сделать) и данные (С ЧЕМ это надо сделать) . И то, и другое есть числа. С данными и так понятно, что это числа, а с командами тоже просто: каждой команде ставится в соответствие определённое число — ведь набор команд всегда ограничен, а значит, их можно просто перенумеровать. Обратите внимание, что некоторым инструкциям не нужны данные. Скажем, команда СБРОС или ОСТАНОВ вполне обойдутся без каких-либо данных. А в однорегистровых процессорах (сейчас таких и не осталось, а вот я начинал с PDP-8, где регистр данных был всего один. ) таких команд было множество, как раз потому, что регистр — один. Поэтому команды инвертирования, сдвига, логических операций и т. п. могли относиться только к этому регистру.

Ну а дальше всё просто: раз каждой команде машинного языка можно поставить в соответствие конкретное число, то точно так же ей можно поставить в соответствие конкретное СЛОВО, которое для человека имеет некоторый смысл. То есть вместо команд 000, 001, 010. можно использовать AND, TAD, ISZ и т. д. (это реальные обозначения команд той самой PDP-8; поскольку памяти в ней было совсем мало, проходилось использовать короткие обозначения команд) . Ну и раз каждой команде соответствавло своё конкретное буквенное обозначение, то не штука было написать программу, которая САМА переводила эти буквенные обозначения в двоичные инструкции. Именно так работает ассемблер — язык программирования самого низкого уровня.

Термин «компьютерный язык» часто интерпретируется неправильно и понимается слишком узко. Давайте разберемся, что это такое на самом деле.

Почему компьютер нас понимает?

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

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

Чтобы сделать эти языки читаемыми для «железа», их необходимо перевести на машинный язык. Это может произойти в режиме реального времени с помощью интерпретатора или заранее с помощью ассемблера или компилятора.

Читайте также:  Цифры в степени символы

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

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

Скриптовые языки не переводятся предварительно компилятором в машинный код. Интерпретаторы делают их доступными для чтения компьютером, и это позволяет выполнять определенные действия. К скриптовым языкам относятся Python и Javascript.

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

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

Есть еще языки баз данных, такие как SQL. Они не относятся непосредственно к языкам программирования, но управляют компьютером при выполнении запросов в базе данных.

Если вы хотите научиться программировать самостоятельно, то в этой статье вы найдете ценные советы для начинающих программистов.

tany_savelieva

Что происходит, когда вы нажимаете цифры в калькуляторе или набираете сообщение в мессенджере? Молодой ученый Сергей Лисицын в рамках проекта «Физтех.Читалка» рассказал T&P, как устроены переводчики с человеческого языка на машинный, а именно компиляторы, и как принцип их работы может помочь нам выучить два языка и больше.

Что нужно знать прежде всего

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

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

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

Читайте также:  Игры на двоих на одном телефоне андроид

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

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

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

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

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

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

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

Читайте также:  Камера панасоник hc v760

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

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

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

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

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

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

Ссылка на основную публикацию
Шаблоны букв английского алфавита для вырезания
Трафареты и шаблоны букв английского алфавита для вырезания из бумаги, это разнообразные шрифты разного стиля и тематики. Трафареты помогут вам...
Что значит спящий режим компьютера
В операционной системе Windows есть несколько режимов выключения компьютера – это обыкновенный режим, (который полностью выключает PC), режим гибернации и...
Что значит сторнировать документ
Сто́рно (итал. storno — перевод на другой счёт, отвод; от stornare — поворачивать обратно) — в общем смысле возврат к...
Шаблоны для брошюры в ворде
Автор: admin Дата записи Быстрей всего набросать буклет, если под рукой окажется готовый шаблон. Проще всего создать буклет в программе...
Adblock detector