«Легко значит скучно. Вот почему я люблю веб и браузеры» – автор
Мне нравится, что мой код может работать где угодно и для кого угодно. На самом деле, это вызов. Веб — чрезвычайно многообразная среда, где каждый человек может просматривать что бы то ни было так, как ему хочется.
Круто, конечно, если посетитель использует современный и мощный настольный компьютер. Но так же вероятно и то, что он просматривает веб-сайт с рабочего компьютера, используя старый и встроенный браузер Internet Explorer 8.
Дуглас Крокфорд как-то сказал:
«Веб — это наиболее враждебная среда разработки, которую только можно представить».
И он чертовски прав. Это та враждебность, которая даёт мне доступ в мир. Это та «враждебность», которую я называю своим ежедневным вызовом.
Эта враждебная среда вдохновляет меня. Сделать так, чтобы моя страница рендерилась везде. Написать код таким образом, чтобы страницу мог видеть каждый.
Я не говорю, что достигаю этих целей каждый раз. Например, я много лет стремился сделать так, чтобы jsbin.com работал в IE7 и IE8, и где-то в процессе мы лишились поддержки IE8 (на что я постараюсь выделить время и однажды исправить).
Просмотреть код: приветственный жест веба
Мне до сих пор интересно, почему возможность просмотра кода страницы была встроена в ранние браузеры. Могу предположить, что это было необходимо для отладки и сохранения технологий и протоколов открытыми, чтобы облегчить их принятие.
Насколько же окупилось это решение! Я сам принадлежу к раннему поколению разработчиков, которые не читали книг, а учились только на ошибках и блестящих идеях в чужом коде.
В моём случае наибольший прорыв в понимании JavaScript случился, когда я пытался осознать исходный код jQuery (ещё во времена первых версий, около 10 лет назад).
Я уверен, что был бы лишь тенью программиста, которым являюсь сейчас, если бы не возможность просмотра кода. Возможно даже, я бы до сих пор писал закрытый исходный код на Pearl.
Труднее ли сейчас?
Я читал пост Джейка Арчибальда «Если мы стоим на месте, мы движемся назад» и задумался об услышанной мной аналогии о сложности, которую используют для сравнения с вебом раньше.
В ранние дни фотографии технология была довольно простой, если сравнивать с современностью. Если понадобится, я смогу создать камеру-обскуру за несколько часов (может быть...).
Обычная мыльница – уже совсем другой коленкор. Я даже не знаю, способен ли в наши дни один человек сконструировать полностью рабочую камеру. Но это издержки и выгоды технического прогресса.
Сами посмотрите: и это всё уже готовые части!
Поэтому, если вы хотите создавать безумные кроссбраузерные эффекты, работать с последними оффлайн push-технологиями и чтобы это всё было оптимизировано для мобильных устройств, работа будет тяжелой. Конечно, не настолько тяжелой, как создать устройство, коммуницирующее с космосом, но, скорее всего, придётся прочитать книгу или две.
Вот и всё, если предполагать, что у вас уже есть все компоненты. А чтобы получить эти компоненты, вам нужны фреймворки и рабочие инструменты. Сомнений нет: работа сложная.
Это не единственный путь, я уверяю вас.
Неудивительно: основы всё ещё тут
Веб всё ещё состоит из HTML, CSS и JavaScript и работает чертовски хорошо в своей ванильной форме. Взять, например, этот блог: моё первое представление себя в вебе – всего лишь HTML, CSS и немного скопированного JavaScript.
Я уже давно забросил бэкэнд вордпресса и перешёл на статический сайт. Такой, который я могу легко написать вручную. К слову, я сам написал процесс, который преобразовывает маркдаун-разметку в HTML, потому что мне так было удобно. Не было причин, по которым я не мог установить на свой ноутбук программу с графическим интерфейсом, которая бы конвертировала маркдаун в HTML-разметку, а затем вставлять её в хедер и футер.
Почему я люблю работать с вебом
Из-за его простоты. Рождённый из потребности связывать документы. В той же степени, в которой это могло измениться с последним поколением веб-разработчиков, которые скажут вам, что веб теперь сложный и запутанный (и будут правы), одновременно он не является сложным. Он всё ещё гениально прост.
Кто угодно может сделать это. Кто угодно может выложить контент в сеть: будь это обычный текст или простой HTML, состоящий только из
<р>-тегов, или же что-нибудь более сложное и изысканное. Веб не стесняется своего контента. Проходит всё и вся.
Веб сегодня – действительно потрясающее место для разработчиков. Существует впечатляющее множество библиотек, фреймворков, плагинов и утилит, которые очень облегчают жизнь при создании супер-сложных штук – лет 10 назад некоторые смельчаки писали их вручную. Также, если вы хотите писать на JavaScript и игнорировать все части ES6 / ESnext, вы можете делать и это (и по большей части, из-за ограничений, я поступаю так же!).
Если вы на секунду задумаетесь о том, как много жизней вы можете коснуться, просто публикуя что-нибудь в интернете, то поймёте, что это абсолютно сногсшибательно. Вот почему я люблю работать с вебом.
А как насчёт вас?
Комментарии (20)
A-Stahl
09.08.2016 23:39+15>А как насчёт вас?
Я ненавижу веб всеми фибрами моей тёмной плюсовой души. Всё это уродливое нагромождение странных технологий, соединённых универсально-бесполезными интерфейсами. Все эти костыли, подпирающие структуру изначально созданную для других целей. Всех этих людей, строящих и приносящих всё новые и новые костыли.
Ненавижу ли я что-то сильнее чем веб, вот в чём вопрос… Вопрос, на который я не могу уверенно дать утвердительный ответ.Jaromir
10.08.2016 03:48+3> Всё это уродливое нагромождение странных технологий, соединённых универсально-бесполезными интерфейсами. Все эти костыли, подпирающие структуру изначально созданную для других целей
Порой слышу похожие слова в адрес «Си с плюсами»sim31r
10.08.2016 04:34+3В Си есть бесподобный компилятор, гарантирующий максимально быстрый и чистый код. А в вебе? Браузер по сути виртуальная машина интерпретирующая скрипты с массой ограничений. Это заставляет страдать перфекционистов считающих биты и такты процессора )
Jaromir
10.08.2016 05:00+1К Си претензий как правило у людей нет. Многие находят его простым и понятным. Речь шла про плюсы.
Браузер по сути виртуальная машина интерпретирующая скрипты с массой ограничений
Но ведь заранее неизвестно устройство с какой архитектурой запросит ваш код. Так что интерпретатор неизбежен
vdonich
10.08.2016 05:25Мне кажется, что любая зрелая система рано или поздно скатывается в подобную кашу.
Единственный выход — технофашизм а-ля Эппл, который большим топором периодически отсекает устаревшие части чтоб стимулировать использование новых. Запланированное устаревание, новые версии железа и прочее.
Тот же Андроид, Win- платформы — все хорошо и кучеряво пока не возникает цель поддержать весь зоопарк устройств и версий, что в поле бегают.
А там уже начинаются пляски с бубнами, черная магия backporting и прочее шаманство.
Понятное дело, что веб со стороны выглядит сложнее законодательства, но как и в технике безопасности, каждая спецификация написана в результате чьей-то, мягко выражаясь, головной боли.
kalobyte
10.08.2016 15:11соглашусь
что мне не нравится:
возможность делать произвольные графические интерфейсы, но невозможность это делать визуально и сразу видеть изменения
всякие лайврелоады к одному браузеру, другой плагин к другому, все это через жопу завязано на иде
лучше бы были стандартные контролы и просто контент
яваскрипт
за 20 лет я попробовал кучу разных языков, но более идиотского языка я не видел еще
даже перл тут отдыхает
все эти свободные открытые стандарты породили кучу браузеров, которые отрисовывают как хотят и надо подгружать еще кучу цсс и яваскрипта, которые приведут к одному изначальному значению по умолчанию
теперь еще эти мобильные адаптивные дизайны
я только один раз видел сайт для телефона, который было приятно смотреть на телефоне и он не был завязан на дизайн обычного сайта, а шел отдельно
потом его убрали и сделали адаптивный, а я еще ни разу не видел адаптивный дизайн, который бы позволял мне пальцами увеличивать размер букв, как это делается на обычной версии
и вот 2016 год — цсс и яваскрипт занимают больше места, чем сам контент, а некоторые сайты настолько криво сделаны, что падает браузер на 4х ядерном процессоре с 8гб памяти
у меня на планшете 2012 года хабр роняет хром или хром убивается системой, т.к. сожрал всю память в 300 оставшихся мб
все остальные браузеры очень неудобны в плане переключения вкладок и тормозят при отрисовке
так что я лучше бы читал сайты по протоколу nntp, как это было в 99мJaromir
11.08.2016 08:50возможность делать произвольные графические интерфейсы, но невозможность это делать визуально и сразу видеть изменения… лучше бы были стандартные контролы и просто контент
Веб это вам не форма и пара кнопок как в десктопном/мобильном ПО. Это сложная верстка с самыми разнообразными (часто динамически подгружаемыми) интерактивными элементами. А если еще и адаптивная под множество размеров экрана. Запилить такое мышкой в GUI даже не представляю как. Недаром часто разработчики встраивают в приложение WebView если оно визуально сложнее списка с кнопками. Хотя, согласен, пара-тройка нативных контролов бы не помешала (дерево, редактируемая таблица)
и вот 2016 год — цсс и яваскрипт занимают больше места, чем сам контент, а некоторые сайты настолько криво сделаны, что падает браузер на 4х ядерном процессоре с 8гб памяти
Это косяк разработчиков, а не технологии. В виндовс есть прекрасное ПО, а есть такое, что встраивается во все щели и показывает рекламу. Это же не повод обвинять WinAPI, OLE, etc.kalobyte
11.08.2016 20:19Это сложная верстка с самыми разнообразными (часто динамически подгружаемыми) интерактивными элементами.
а зачем нам сложные верстки? я только что правил верстку одного шаблона на бутстрапе — там в левый ифрейм подгружался один файл и если в нем нет контента, то справа от фрейма блоки съезжали место пустого ифрейма
пришлось изматериться, но гимор решил
вот только во всей этой сложной верстке в цмс есть редактор контента и этот редактор не видит этой сложной верстки, не видно списков с иконками такого типа, хотя класс подключен
есть класс для списка с другим размером шрифта и иконками
вместо этого просто показываются точки и приходится по сто раз давить ф5 для оценки форматирования и не съехало ли чего куда
вон в ворде же есть форматирование и документ откроется так же в ворде на другом компутере
почему я запускаю софт и он одинаково рисует гуй? если это чекбокс, то это чекбокс хоть на вин2000, хоть на 10ке
почему в вебе чекбокс можно извратить до неузнаваемости?
почему яваскрипт такой дибильный? как функция может быть переменной? как она может быть анонимной? да еще быть аргументом другой функции вместе с телом? такое нагромождение кода все путает
каждый дегенерат извращается как может и потом толпы других идиотов подхватывают это и разносят
2016 год, в редакторе хабра есть кнопка цитирования, но она тупо ставит тег без содержимого и мне приходится руками выделять текст и тащить его, вместо того, чтобы просто выделить его и получить всплывающую кнопку «цитировать», чтобы яваскрипт сам вставил выделенный текст в окно
зато есть маркдаун для даунов и хтмл теги для извращенцев, твитор зачем-то какой-то, курсив и подчеркивание — зачем это в тексте для каментов?
вместо гениальной простоты делают сложное и уродливоеtrikadin
16.08.2016 00:16+1а зачем нам сложные верстки?
Вам — видимо низачем. А некоторым людям они нужны, знаете ли, чтобы создавать сложные интерфейсы. Такие интерфейсы иногда нужны, знаете ли.
вот только во всей этой сложной верстке в цмс есть редактор контента и этот редактор не видит этой сложной верстки, не видно списков с иконками такого типа, хотя класс подключен.
Видимо, сделанная вами верстка несовместима с редактором контента. Это не делает веб ужасным — только оповещает других о радиусе кривизне рук отдельных разработчиков.
вон в ворде же есть форматирование и документ откроется так же в ворде на другом компутере
О, да что вы говорите. Вы когда-нибудь открывали сложный документ (с кастомными полями, заголовками, списками, картинками, графиками и т.д.), сделанный в одной версии ворда, в другой версии ворда? Даже в следующей. А документ, сделанный в версии под виндовс в версии под мак? Всё едет и плывёт.
почему я запускаю софт и он одинаково рисует гуй? если это чекбокс, то это чекбокс хоть на вин2000, хоть на 10ке
Если вы пишете
<input type="checkbox">
в html-файле, то он чекбокс где угодно.
почему яваскрипт такой дибильный? как функция может быть переменной? как она может быть анонимной? да еще быть аргументом другой функции вместе с телом? такое нагромождение кода все путает
Вот это вообще отлично. Это называется "функции первого класса" и есть ну в ооооочень многих языках программирования, даже в PHP, лол. Если вы не знаете, что это такое, то это говорит исключительно о вашей несостоятельности как разработчика, но ничего не говорит о JS. Более того — я искренне рад, что мнение таких как вы никто и никогда в вопросах развития языка (любого) всерьёз рассматривать не будет.
маркдаун для даунов
Конечно, люди, создавшие самый большой в мире веб-сервис хостинга IT-проектов, на котором Markdown-- основной язык разметки комментариев, readme и вообще чего угодно — это по-любому дауны. А вы один в белом пальто умный и красивый стоите.
Блин, мне даже не хочется остальное комментировать. Я бы слова плохого вам не сказал, напиши вы дельный комментарий с обоснованной критикой (не говоря уж про конструктивную), но те претензии, что вы тут написали — это что-то совершенно несуразное. Надеюсь, в следующий раз вы будете лучше обдумывать свои слова и не будете писать такой сложный и уродливый комментарий вместо гениального простого.
Jaromir
16.08.2016 11:12> О, да что вы говорите. Вы когда-нибудь открывали сложный документ (с кастомными полями, заголовками, списками, картинками, графиками и т.д.), сделанный в одной версии ворда, в другой версии ворда?
Это уже не говоря уже о том, что верстать в ворде что-то сложнее реферата
это ад адский. Руки сами тянутся переделать всё в хтмл или латехе
playermet
16.08.2016 00:25> как функция может быть переменной? как она может быть анонимной? да еще быть аргументом другой функции вместе с телом?
Почти в каждом первом современном языке есть либо указатели на функции, либо делегаты, либо функции первого класса. Кто вам сказал, что это плохо?
samizdam
10.08.2016 00:59+3Соглашусь с предыдущим оратором (@A-Stahl).
А, если тезисно, то…
>> Веб сегодня – действительно потрясающее место для разработчиков.
В теории — отличные открытые спецификации и рекомендации в которых куча всего предусмотрено.
На практике — толпы неквалифицированных разработчиков, даже документацию не читающих, не то что спеки, жадные вендоры, которые плевать хотели на совместимость и не своих пользователей.
>> Существует впечатляющее множество библиотек, фреймворков, плагинов и утилит, которые очень облегчают жизнь при создании супер-сложных штук – лет 10 назад некоторые смельчаки писали их вручную.
Зоопарк инструментов и технологий, зачастую из говна и палок, пытающийся решить одни и те же проблемы.
>> Также, если вы хотите писать на JavaScript и игнорировать все части ES6 / ESnext, вы можете делать и это (и по большей части, из-за ограничений, я поступаю так же!).
Вот показатель того, насколько программисты хотели бы писать для веба, но только не касаться JS, например:
https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js
>> Веб всё ещё состоит из HTML, CSS и JavaScript и работает чертовски хорошо в своей ванильной форме.
Да, чёрт подери! Но никто эту ванильную форму не хочет ни покупать (заказчики), ни потреблять (большинство пользователей).Jaromir
10.08.2016 04:06+2> Зоопарк инструментов и технологий, зачастую из говна и палок, пытающийся решить одни и те же проблемы
На самом деле зоопарк эволюционных предков и, как результат, по 1-2 (временно) победившему инструменту в каждой нише. Но никто не заставляет вас ими пользоваться. Я, например, порой люблюобмазыписать на чистом html/css/EcmaScript5, в виде один файл — одна глобальная переменная — никаких упаковщиков или загрузчиков
> Вот показатель того, насколько программисты хотели бы писать для веба, но только не касаться JS, например
Это показатель того, что браузер распространился на все устройства с экранами и являет собой универсальную открытую платформу. Никаких закрытых сторов девелоперских лицензий, и проектов 2-в-1 (java, swift) по двойной цене. Последний оплот свободы, так сказать
> Но никто эту ванильную форму не хочет ни покупать (заказчики), ни потреблять (большинство пользователей)
Пользовалелю без разницы на чем написан ваш сайт. Если заказчику надо магазин через 2 дня: тут без CMS и фреймворков никак
arvitaly
10.08.2016 06:09+1Рынок метр на метр с миллионами продавцов и миллиардами покупателей. Валюта уже есть, остались вопросы доставки (хотя, если большинство услуг виртуальные, то не осталось) и, самый сложный, законов.
bjornd
10.08.2016 10:52Web сейчас и в ближайшем будущем — единственный способ доставить миллионам людей практически любой функционал. И ничего вы с этим не сделаете.
SelenIT3
10.08.2016 15:04+2пост Джейка Арчибальда «Если мы стоим на месте, мы движемся назад»
На всякий случай: этот пост доступен и в русском переводе (как и исходный пост Питера Пола Коха о предложении моратория на новые браузерные «прибамбасы», в ответ на который он написан, и еще один ответ на него).
Vlad_fox
10.08.2016 15:04+1«Если вы на секунду задумаетесь о том, как много жизней вы можете коснуться, просто публикуя что-нибудь в интернете, то поймёте, что это абсолютно сногсшибательно»
и оказывается, для того чтобы коснуться своими публикациями в инете много жизней, не обязательно кодить для веб.
домохозяйки это делают в однокласниках, постя очередную взорвавшую их мозг мудрость с картинкой в надежде устроить цепную реакцию просветления гуманоидов
недавние школьники — в вконтаке, постят всякую хрень, чтоб доказать другим таким же миллионам вчерашних школьников, что они не такие как все
миллионы добывают себе духовное пропитание перепостами и лайками в фейсбуке
где-то ближе к дну пищевой цепочки вкушания сногсшибания через веб расположились те, кто пишет коменты,
под ними те кто только их читает и лайкает
вовсе не обязательно кодить, чтоб получать духовные дивиденты от включения в эту вселенскую виртуальную иллюзию
playermet
10.08.2016 15:04+1Мне нравится, что мой код может работать где угодно и для кого угодно.
Вот бы он еще делал это одинаково на миллионе разных браузеров.
jenezis
Я люблю видеть результат моей работы, особенно когда миллионы пользователей довольный, даже самым маленьким виджетом, к которому я приложил руку :) это крутое ощущение, за это и люблю веб