pxhere.com
Александр Зыблев
16 июля 08:39.
133

Как работают языки программирования? Как из странного набора букв получаются сайты и игры?

Ответить
Ответить
Комментировать
1
Подписаться
4
4 ответа
Поделиться

Сайты (текст и графика), игры (изображение на экране и звук), документы, команды управления какими-то устройствами и т. д., даже сами программы, представляют собой двоичные данные - последовательность чисел. Каждое число имеет какое-то значение: символ текста, цвет точки на изображении, значение какой-то величины и т. д. Программы представляют собой набор инструкций для компьютера, как из одних чисел (например, кодов нажатых клавиш, координат мыши, данных на диске) получить другие (например, изображение и звук игры). Инструкции могут выполнять какие-то вычисления (например, c=a+b - к значению ячейки памяти под названием a прибавить значение из ячейки памяти со значением b, записать результат в ячейку памяти со значением с), проверки условий (например, if(a>b) c=a; else c=b; - если значение из ячейки a больше значения из ячейки b, записать в ячейку с максимум, то есть а, иначе записать максимум, которым будет b), циклы (повторяющиеся действия определённое число раз или по условию, например, a=0; for(i=1;i<=5;i=i+1) a=a+i; - сумма (ячейка а) задаётся равной 0, счётчик i задаётся равным 1, потом к а прибавляется i, i увеличивается на 1, сравнивается по условию, снова прибавляется, увеличивается и так далее, пока условие не перестаёт выполняться - в результате выполнения этой строчки в ячейку a попадёт значение 1+2+3+4+5=15. Кстати, выражение "зацикливаться на чём-то" пошло из программирования, это такая ситуация, когда условие цикла постоянно выполняется и программа не может закончить цикл и пойти дальше). Так как таких инструкций в программе бывает очень много, они объединяются в функции, которые в свою очередь могут вызывать другие функции, передавая им значения в качестве параметров и получая в качестве результата. Функции можно привязать к наборам ячеек памяти, тогда это называется "объектом", например, объект "строка" может состоять из данных "длина строки" и "адрес в памяти первого символа", и функций, например, "к одной строке приписать другую строку". Объекты также могут входить друг в друга, например, объект "персона" может состоять из трёх объектов "строка" для представления фамилии, имени, отчества, и объекта "дата" для представления даты рождения, и функций, например, ФИО, которая берёт первую заглавную букву имени, потом первую заглавную букву отчества, и объединяет их с фамилией, добавляя точки после букв имени и отчества. Элемент оформления сайта или персонаж игры тоже представляет из себя объект, причём достаточно сложной структуры, состоящий из многих других объектов. Программа может обращаться к объекту целиком, а не к какой-то входящей в него ячейке. Функции и объекты могут входить в состав библиотек - программ, которые могут использоваться другими программами, и уже установленных на компьютере, поэтому при программировании не приходится думать о каких-то мелких деталях (допустим, как получить на экране изображение буквы "а", или как записать на диск какой-то текст в виде файла, чтобы его потом можно было по имени файла найти), а сосредоточиться только на том, что представляет собой сущность решаемой задачи.

2

Вы случайно не JS-программист? <в таком случае интересно, зачем вы использовали minifier для своего ответа>

0
Ответить

Нет, не js, a C++

0
Ответить

В таком случае, надеюсь, хотя бы ваш код читабельный =)

0
Ответить
Ещё 4 комментария

Интересно, что мобильное приложение не отображает сообщение до конца, а на сайте и в режиме редактирования оно отображается. Где-то в программе ошибка!

0
Ответить

А вы очень проницательны! (по секрету, ошибок на этом сайте, как небесных тел во Вселенной)

0
Ответить

Ещё мобильное приложение не показывает цитаты в комментариях.

0
Ответить

Мое предположение: мобильное приложение делала экспериментальная команда разработчиков после полугода обучения на гикбрейнс!

0
Ответить
Прокомментировать

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

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

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

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

То есть весь секрет кроется в том, как работают не языки а исполнители:

  • Многие из них являются электронными устройствами — микропроцессорами. Программы для них выражаются не буквами, а вообще последовательностью чисел — каждое действие кодируется определённым числом. При письме эти числа условно обозначают трех- четырёх-буквенными аббревиатурами. Эти программы точно выглядят как «странный набор букв»
  • Писать программы таким образом скучно и трудоёмко, по этому были придумали языки, где программируемые действия более осмысленны. Например, вместо «положить число 123 в регистр AY», пишется «открыть на экране окно». Чтобы программа из таких действий могла быть выполнена микропроцессором, надо это «открыть на экране окно» перевести в десятки и сотни низкоуровневых команд. Для перевода программ с осмысленных языков на низкоуровневые, понятные микропроцессорам, существую специальные программы-переводчики, которые называются компиляторами. Т.е. более-менее читабельная для человека программа компилируется, из неё получается файл, например, paint.exe состоящий из инструкций, который можно запускать. Ваш настольный ПК её нормально прочитает и выполнит, давая вам возможность что-то рисовать на экране при этом.
  • Также есть исполнители, которые не выполняют перевод программы на язык микропроцессора целиком, а читают программу и выполняют её на микропроцессоре прямо на лету. Это интерпретаторы. Иногда из таких переводчиков-синхронистов образуется целый каскад. Например, запускаете программу на языке Jython, и интерпретатор при выполнении задействует кусочки написанные на Java, которые используют скомпилированный Java-байткод, который уже джава-машина выполняет на микропроцессоре.

Сайты, не в полной мере относятся к программированию, но и тут этот же принцип соблюдён абсолютно. На специальном языке разметки (например, HTML) описывается, как должна страница быть размечена: какой текст в заголовок окна положить, что сверху поставить, что сбоку, каким шрифтом, в прямоугольниках какого размера, как они накладываются друг на друга, где будет появляться прокрутка, а где нет... Исполнителем тут будет браузер пользователя. Он считывает все эти инструкции и отрисовывает в окне web-страницу. И опять тут могут возникать каскады переводчиков. Например, программа написана на языке PHP. Её выполняет PHP-интерпретатор. В результате работы на лету получается разметка страницы на HTML, которая передаётся в браузер, где опять происходит интерпретация. Вот и весь сайт.

В общем, всё дело в исполнителях. Без них «странный набор символов» останется просто странным набором символов.

1
Прокомментировать

Примерно так -MZђ       яя  ё       @                                     є ґН!ёLН!This program cannot be run in DOS mode.
$       }фC9•-^9•-^9•-^§5к^8•-^ИSа^;•-^ИSг^5•-^ИSв^=•-^ИSж^=•-^Ев‘^8•-^9•,^M•-^Ев”^>•-^zв^>•-^_{з^8•-^_{д^8•-^_{б^8•-^Rich9•-^                PE  d† А°№V        р "   ћ  f     4r       Ђ                        @         `                                   `Ў   °Џ x      а   Р фJ           0 А  @µ 8                           т p            ° И                          .text   іњ     ћ                   `.rdata  wь   °  ю   ў             @  @.data   р   °  
              @  А.pdata  фJ   Р  L   Є             @  @.rsrc   а         ц             @  @.reloc  f   0     ш             @  B                                                                                                                                                                                                                                                                L‹L+uL‹AL+BM…А”АГМММММММММH‹H‰I‹ H‰AH‹БГМММММММММММММММH‹H‰A¶ €AH‹БГМММММММММММММММH‹H‰I‹ H‰AH‹БГМММММММММММММММH‹H‰A¶ €AH‹БГМММММММММММММММH‹H‰I‹ H‰AH‹БГМММММММММММММММH‹H‰A¶ €AH‹БГМММММММММММММММH‹H‰I‹ H‰AH‹БГМММММММММММММММH‹H‰A¶ €AH‹БГММММММММ. 

Думаю что тут все предельно понятно)))

0
Прокомментировать
Читать ещё 1 ответ
Ответить