Java, UX, HTML, CSS, WEB-design

Декларативное программирование и Интернет

Краткое описание по статье Декларативное программирование и Интернет

Название: Декларативное программирование и Интернет . Краткое описание: [ad_1] ⭐ Скотт Р . Дата публикации: 10.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

[ad_1]

  • Скотт Рейнен

  • 0 Комментарии

Декларативное программирование и Интернет

  • 9 минут чтения

  • Кодирование, программирование, API

Краткое резюме ↬

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

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

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

Дальнейшее чтение на SmashingMag:

  • Введение в системы типов программирования
  • Введение в Redux
  • Введение в полноценный JavaScript

Итак, давайте рассмотрим декларативное программирование и сеть, которую мы можем с его помощью построить.

Еще после прыжка! Продолжить чтение ниже ↓

Спрятанный на виду

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

01-сэндвич-опт

Этот тип инструкция, ориентированная на результат, — это то, как работает декларативное программирование., оставив логику реализации запросов системе, интерпретирующей язык (например, вашему другу). Например, когда нам нужно изображение в HTML-документе, мы просто включаем <img> тег, а затем система, которая интерпретирует HTML (как правило, браузер), будет обрабатывать все шаги, необходимые для отображения этого изображения, такие как получение его с сервера, определение, где именно его отображать, декодирование двоичных данных, масштабирование изображения и вывод его на экран. Нам не нужно ничего объяснять, поэтому мы часто забываем, что все это происходит и что кто-то запрограммировал и то, как это происходит, и то, как этот сложный процесс получается из простого. <img>.

Еще один фактор, из-за которого декларативное программирование трудно рассматривать как веб-программирование, заключается в том, что оно «просто работает». Много работы было потрачено на создание таких языков, как HTML, CSS и SQL, способных обеспечить достаточную ясность в отношении того, что необходимо сделать, чтобы шаги, необходимые для достижения результата, можно было определить без подробных инструкций. Но большинство веб-разработчиков начали использовать эти декларативные языки спустя долгое время после того, как тяжелая работа по их созданию была завершена, поэтому мы просто рассматриваем их как нормальную и обычную и просто естественную часть того, как работает сеть.

Когда веб-разработчики делать займитесь декларативным программированием до того, как будет выполнена интересная работа, обычно это происходит при разработке API для веб-сайта. Большинство API реализуются через декларативное программирование.. Вместо того, чтобы давать веб-сайту пошаговые инструкции, API-интерфейсы обычно имеют простой язык, который можно использовать для выражения желаемого результата. Например, когда мы хотим получить некоторые твиты из API Twitter, мы даем описание нужных нам твитов, например «все от @A_single_bear». Если API является обязательным, мы вместо этого описываем конкретные шаги, которые мы хотим, чтобы Твиттер реализовал от нашего имени, объясняя, как загружать, форматировать и возвращать твиты. К счастью, API скрывает всю эту логику за простым декларативным языкомпоэтому нам нужно описать только то, что мы хотим, а не то, как это получить.

Два пути вперед

Как только мы осознаем, насколько широко распространены в сети декларативные языки программирования, становится трудно представить сеть без них. Тяжело, но не невозможно. Поскольку JavaScript стал повсеместным, инструменты, которые нам понадобятся для исключительно императивной сети, найти несложно. Мы могли бы заменить HTML и CSS для рендеринга непосредственно в JavaScript. Мы могли бы заменить SQL базой данных на основе JavaScript (или двумя). И мы могли бы заменить вызовы декларативных веб-API императивными вызовами функций JavaScript даже при разрыве между клиентом и сервером.

Мы могли бы собрать все это вместе и полностью отказаться от использования декларативных языков в Интернете, даже до того, как мы перейдем к более продвинутым технологиям, движущимся в нашем направлении, таким как asm.js. Теперь мы можем создать веб-эквивалент мейнфреймов: большие, мощные системы, построенные не как набор разрозненных частей, а как единое целое. Теперь мы можем использовать JavaScript для всего. Мы пробовали это раньше с такими технологиями, как Java и ActiveX. А некоторые организации, такие как AOL, даже добились успеха в создании менее запутанного веб-стека. Разница на этот раз в том, что технология, доступная для создания этих «мейнфреймов», является частью открытого веб-стека, так что теперь каждый может создать свой собственный автономный веб-стек.

Сеть только с императивным JavaScript заманчива, если мы понимаем сеть как открытые технологии и связанные документы. Но если мы расширим наше понимание Интернета, включив в него подключенные системы, то декларативное программирование является ключевой частью того, как мы соединяем эти системы.. С этим пониманием мы должны двигаться в другом направлении. Вместо того, чтобы создавать более сложные системы, заменяя декларативные языки программирования императивным программированием, мы должны оборачивать все больше и больше нашего императивного кода во все больше и больше лучших декларативных языков, чтобы мы могли создавать будущие сложные системы поверх нашей текущей работы. Вместо того, чтобы рассматривать JavaScript как современные Java или C++, мы должны относиться к нему как к современному сценарию оболочки, мощному инструменту для подключения других инструментов.

Определяя детали реализации в самом языке, декларативное программирование позволяет императивным языкам, таким как JavaScript, PHP и Ruby, использовать результаты в качестве шагов в более сложном поведении. Это имеет то преимущество, что делает поведение доступным для различных языков, включая языки, которые еще не существуют, а также дает нам прочную основу для дальнейшего развития. В то время как мы мог создать собственную систему рендеринга документов на JavaScript или Python, нам это не нужно, потому что HTML уже решил эту проблему. И мы можем повторно использовать это решение в любом императивном языке, освобождая нас для решения новых, более крупных проблем. JavaScript может рисовать изображение на холсте и поместите его в документ с HTML. Ваш друг может сделать вам бутерброд и свежий лимонад. Но мы доберемся до этой будущей сети, только оценив декларативное программирование как подход, который стоит поддерживать, теперь, когда это больше не единственный вариант.

Декларативный первый

Когда мы начинаем создавать веб-инструмент, мы часто сразу же пытаемся заставить его делать то, что нам нужно. Декларативный подход вместо этого начинается с определения языка для краткого описания желаемых результатов. Прежде чем мы создадим новую библиотеку JavaScript для создания сэндвичей (или, конечно, другую), давайте подумаем, как мы могли бы описать результаты на языке декларативного программирования. Один вариант будет выглядеть примерно так {“bread”: “rye”, “cheese”: “cheddar”}в то время как другой будет больше похож на <sandwich><cheddar /><rye /></sandwich>. При проектировании декларативного языка нужно сделать множество вариантов, от выбора формата высокого уровня (JSON? XML? YAML?) до деталей структуры данных (является ли сыр атрибутом сущности сэндвича или сущностью в списке начинок для сэндвича?) . Принятие этих решений на раннем этапе может улучшить организацию последующей императивной реализации. И в долгосрочной перспективе декларативный язык может оказаться более важным, чем удивительная реализация приготовления бутербродов, потому что декларативный язык может использоваться далеко за пределами отдельной реализации.

02-сэндвич-опт

Мы можем видеть некоторые преимущества декларативного подхода в публичных проектах, в которых используются оба подхода. Например, три года назад фонд «Санлайт» начал работу над проектом, призванным облегчить людям возможность связаться с членами Конгресса США. Они начали с приложения Ruby для автоматизации отправки контактных форм, Formageddon. В этом году они запустили новый декларативный проект для достижения той же цели, проект Contact Congress, начав с декларативного языка, описывающего контактные формы.

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

Успешное декларативное программирование в некотором смысле более сложно, чем императивное программирование. Это требует четких описаний, но также требует достаточного знания императивной реализации, чтобы знать, что нужно описывать. Вы не можете просто сказать приложению, где находится форма, и ожидать действительного представления, и вы не можете сказать <greatwebsite> в браузер и получить то, что вы хотите. Но если вы готовы принять вызов, преимущества декларативного подхода также выше. Декларативные языки часто переживают свои императивные реализации..

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

Сокрушительная редакция
(ал, мл)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Декларативное программирование и Интернет

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»