Введение
Не смотря на сложность восприятия человеком и относительную громоздкость кода, низкоуровневые языки программирования, благодаря своему приближению к машинному коду, имеют возможность максимально полно использовать все особенности аппаратной платформы, а значит позволяют писать более эффективные, экономичные по потреблению мощностей вычислительной машины и компактные по объёму занимаемой памяти программы. Низкоуровневое программирование может применяться в совершенно разных сферах, в том числе и в разработка веб-систем.
Ассемблер в разработке веб-серверов
Например, одним из вариантов является такой, при котором программы, написанные на языке ассемблера, могут использоваться для веб-разработки используя CGI (стандарт интерфейса, используемого для связи внешней программы с веб-сервером). Это возможно, так как программе ей достаточно иметь возможность читать переменные среды (например, URL сайта), стандартные входные данные (для обработки запросов метода POST) и возможность вывода данных (для получения ответа от сервера), что позволяет написать её и на ассемблере.
Ещё одним примером может послужить MenuetOS – операционная система, полностью написанная на диалекте ассемблера FASM. Данная операционная система среди прочего функционала имеет в наличии стек TCP/IP, а сетевые приложения, включают в себя серверы FTP/HTTP/SMTP и клиенты IRC/HTTP/NNTP/TFTP, что позволяет использовать машину с данной ОС как веб-сервер. При всём этом интересной особенностью MenuetOS является то, что вся операционная система помещается на дискету объёмом 1,44 Мб.
По мнению разработчиков, программирование серверных приложений с использованием ассемблера может занимать примерно вдвое больше времени и сил чем, например, с использованием популярного на данный момент PHP. Однако это стоит того, так как тем самым можно достичь быстрой обработки данных, низкое потребление памяти и более низкую нагрузку на сервер.
WebAssembly
Отдельного внимания стоит рассмотрение представленного относительно недавно и находящегося в разработке стандарта эффективного низкоуровневого байт-кода WebAssembly (wasm), который совместно разрабатывается такими гигантами индустрии как Google, Apple, Mozilla и Microsoft, и уже считается одним из крупнейших и перспективных достижений веб-платформы за последнее время.
Уже достаточно давно существует потребность в языке, который стал бы фундаментом для веб-приложений и приблизил их по производительности к нативным. Уже существовавшие JavaScript, Adobe Flash, Java, Silverlight имеют свои недостатки из списка: ограничения выбором операционной системы, необходимость серьёзного вмешательства в архитектуру браузера или подключения плагинов и т.д.
Концепция стандарта заключается в разработке универсального языка-посредника для создания веб-приложений, своеобразного «веб-ассемблера». При этом он должен будет избавить JavaScript, самый идеальный из уже разработанных вариантов, от задач, для которых он не предназначен или справляется с большими потерями в производительности. В WebAssembly будут переводиться сложные программы с высокоуровневых языков. Таким образом появится возможность писать веб-приложения практически на любых языках, и преобразовывать их в эффективный низкоуровневый байт-код wasm для выполнения в браузере, в последствии чего средняя эффективность таких приложений, будет значительно выше широко используемых на сегодняшний день аналогов.
Уже сегодня есть полноценно работающие приложения демонстрирующие данную технологию. Например, экспортированная в WebAssembly создателями стандарта в демонстрационных целях игра Tanks! (https://webassembly.org/demo/)
Вывод
На сегодняшний день низкоуровневое программирование актуально в самых разных сферах применения и разработка в веб не является исключением, оно может использоваться как на стороне сервера, так и на стороне клиента. Стоит отметить, что у данного подхода также есть и будущее, что отлично показывает на своём примере концепция WebAssembly.
Библиографический список
Пьюривал С. Основы разработки веб-приложений. — СПб.: Питер, 2015. — 272 с.: ил. — (Серия «Бестселлеры O’Reilly»).
Симпсон К. ES6 и не только. — СПб.: Питер, 2017. — 336 с.: ил. — (Серия «Бестселлеры O’Reilly»).
Золотов Е. Ассемблер для веб. Яваскрипт в отставку? – Компьютерра [Электронный ресурс]. – Режим доступа: https://www.computerra.ru/181070/wasm. (Дата обращения: 18.11.2018).
Электронный ресурс: https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts
Электронный ресурс: https://webassembly.org/