Как и большинство веб-разработчиков, я провожу дни, дает указания компьютеров.
Эти инструкции обычно включают в себя некоторый вклад (запрос на веб-странице), какая-то логика (получить право контент из базы данных) и некоторые вывода (отправить содержимого на запрашивающий браузере).Этот процесс рассказывая компьютер, как выполнить задачу, например, создания веб-страницы, это то, что мы обычно называем “программирование”, но это только подмножество программирования: императивное программирование .
Там еще один тип программ, декларативного программирования, что большинство веб-разработчики также использовать каждый день, но не часто признают программирования. С декларативного программирования, мы говорим компьютеру, что не how.Мы описываем результат, который мы хотим, и детали о том, как выполнить его оставляют переводчика языка.Это тонкое изменение подхода к программированию имеет широкие последствия для, как мы строим программного обеспечения, особенно то, как мы строим будущее веб .
Итак, давайте воспользоваться моментом, чтобы исследовать декларативное программирование и веб-мы можем построить с ним .
Прячущихся в обычные Sight
Декларативных языков, как правило, отходят на второй план программирования, в частности, потому, что они ближе к тому, как мы, естественно, взаимодействовать с людьми.Если вы говорите с другом, и вы хотите бутерброд, вы обычно не дает вашего друга, шаг за шагом инструкции о том, как сделать бутерброд.Если да, то он будет чувствовать себя программирования вашего друга.Вместо этого, вы гораздо более вероятно, говорить о результате вы хотите, например, “Пожалуйста, сделай мне бутерброд” (или, возможно, “ Судо заставить меня sandwich 1 “).Если ваш друг хочет и может следовать этой инструкции, то они бы перевести фразу “Сделайте мне бутерброд” в серии шагов, таких как поиск буханку хлеба, удаляя два ломтика, применяя начинки, и т.д. .
Этот тип результат-ориентированной инструкции как декларативное программирование works, оставляя логику, как реализовать запросы к системе, которая интерпретирует язык (например, ваш друг).Когда мы хотим изображение в HTML документ, например, мы просто включают <img>
тег, а затем систему, которая интерпретирует HTML (обычно браузер) будет обрабатывать все шаги, необходимые для отображения этого изображения, таких какизвлечение его из сервера, определения, где именно, чтобы сделать это, декодирование двоичных данных, масштабирования изображения и делает его на экран.Мы не должны объяснить все это, так что мы часто забываем, что все это происходит, и что кто-то запрограммирован как, как это происходит и как это сложный процесс, происходит от простой <img>
.
Другой фактор, который делает декларативное программирование трудно понять, как программирование наВеб-то, что это “просто работает”. Много работы вошло в создание языков, таких как HTML, CSS и SQL, способного обеспечить достаточно ясность в то, что должно быть достигнуто, что шаги, необходимые для достижения результата могут быть определены без подробной инструкцией.Но большинство веб-разработчики начали его использовать эти декларативные языки долгое время после жесткий work 2 строительства их было полно, так что мы просто рассматриваем их как нормальной и обычной и просто естественной частью путивеб-works 3 .
При создании веб-разработчики do ввязываться в декларативного программирования до интересная работа делается, это, как правило, в то время как разработки API для веб-сайта. Большинство API, реализуются с помощью декларативного programming.Вместо того, чтобы обеспечить способ дать сайт шаг за шагом инструкции, API, как правило, имеют простой язык, который можно использовать, чтобы выразить желаемого результата.Когда мы хотим получить некоторые твиты из твиттера в API, например, мы даем описание твиты мы хотим, например, “все, отA_single_bear.” Если API является обязательным, вместо этого мы будем описывать конкретные шаги, которые мы хотим Twitter, чтобыосуществить от нашего имени, объясняя, как для загрузки, формат и вернуться твиты.К счастью, API скрывает все, что логику простого декларативного language, поэтому мы должны описать только то, что мы хотим, а не как его получить .
Два пути Forward
Как только мы осознаем, насколько широко декларативные языки программирования в Интернете, трудно представить себе в Интернете без них.Жесткий, но не невозможно.Как JavaScript выросла в повсеместно, инструменты, которые мы должны были бы для императивном-только веб-легко найти.Мы могли бы поменять HTML и CSS для оказание непосредственно в JavaScript 4 .Мы могли бы поменять SQL для JavaScript родной database 5 (или two 6 ).И мы могли бы поменять звонки на декларативных веб-интерфейсов с настоятельными вызовы функций JavaScript, даже в зазоре между клиентом и server 7 .
Мы могли бы поставить все это вместе и полностью отказаться от использования декларативных языков в Интернете, даже прежде, чем мы перейдем к более передовым технологиям, направляющихся в нашу сторону, как asm.js 8 .Мы можем теперь, построить веб эквивалент мэйнфреймов: большие, мощные системы, построенные а не как набор разрозненных частей, а как единое целое.Теперь мы можем JavaScript все things 9 .Мы пробовали это раньше, с таких технологий, как Java и ActiveX.А некоторые организации, такие как AOL, даже имели успех здание менее грязный веб-как стек.Разница на этот раз это технология, доступная, чтобы построить эти “мэйнфреймов” является частью открытой веб-стека, так что теперь каждый может сделать свой собственный автономный веб-как stack .
Необходимо только наличие Java-веб манит если мы понимаем Сети как открытые технологии и связанные документы.Но если мы расширяем наше понимание сети, чтобы включить системы, связанные с, а затем декларативное программирование является ключевой частью того, как мы соединяем эти systems.При таком понимании …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров