«Черный лебедь» — это событие, которое непредсказуемо, имеет большие последствия и может быть проанализировано постфактум. Горстка событий черного лебедя может объяснить почти все, что происходит в этом мире. Разве эволюция фронтенд-поля не постепенная, а черный лебедь? Давайте взглянем на историю под другим углом...
непредсказуемый черный лебедь
Взгляните на свое окружение, оглянитесь назад на основные события, технологические изменения и изобретения, которые произошли вокруг вас с момента вашего рождения, сравните их с тем, что люди ожидали от них, и посмотрите, сколько из них было ожидаемо? Глядя на свою собственную жизнь, выбор карьеры, встречи с супругом, вынужденный отъезд с родины, предательства, с которыми вы столкнулись, внезапное обогащение или падение, сколько из этих вещей произошло по плану?
--"Черный лебедь"
Многие книги по истории и биографии описывают неизбежность исторической эволюции с детерминистской точки зрения, но на самом деле для всех живых существ, живших в то время, великие изменения в истории часто происходили внезапно, в обычный день.Немного предосторожностей и никаких забот.
Развитие технологий также имеет высокую степень скачкообразности и неопределенности. В раз в жизни узел в несколько лет или даже десятилетий родятся новые технологии, а затем наступит период устойчивого роста. Более того, рождение новых технологий часто не имеет сильного ритуального характера, как конференция по iPhone, а может лишь раскрываться в простоте и даже в сомнениях. Далее мы сосредоточимся на браузере, чтобы увидеть, как родились несколько технологий в области внешнего интерфейса, с которыми мы все знакомы сегодня, и какова была реакция в то время?
Быстро рожденный JavaScript
Середина 90-х была волшебным временем. В киноиндустрии три классических фильма 1994 года: «Побег из Шоушенка», «Убийца не слишком холоден» и «Форрест Гамп» уже давно входят в десятку лучших в рейтинге Douban Movie Top 250. К 1995 году три зарождающихся языка программирования прочно вошли в первую десятку сегодняшнего списка языков программирования TIBOE: Java, PHP и JavaScript.
Если Java выражает тяжесть тюрьмы Шоушенк, а PHP намекает на опасность убийцы Леона, то JavaScript, возможно, учитывал IQ Форреста Гампа в начале своего рождения... Много лет спустя Брендан Эйх, отец JS, выразил дизайн JS в интервью много лет спустя Оригинал:
Мы готовы помочь веб-дизайнерам и веб-дизайнерам, создающим веб-контент с использованием таких компонентов, как изображения, плагины и Java-апплеты.программист на неполный рабочий деньОбеспечить «язык клея». мы относимся к Java как квысокооплачиваемый программистиспользуемый «компонентный язык», иклей программист— то есть веб-дизайнеры — могут использовать язык сценариев для сборки компонентов и автоматизации взаимодействия.
Итак, в JSсам авторПохоже, что фронтенд-инженеры, которых он ожидает, будут просто «программистами на полставки» и «программистами клея» (первоначальный программист на полставки/программист клея), что в некотором роде пророчество. Для того, чтобы предложение по внедрению языка получило одобрение руководства Netscape, он потратил май 1995 г.десять днейРеализован прототип. Следите за этим моментом, поскольку Netscape вышла на биржу с рекордным IPO всего за три месяца.
На историческом фоне бурного развития компании многие аспекты JS имеют следы работы в спешке. Когда в интервью его спросили о самых больших головных болях в языковом развитии, Брендан также признал это:
(Самая сложная проблема) в основном заключается в том, что проверка концепции невероятно коротка, и после этого языковой дизайн должен быть заморожен. Включая реализацию встроенных объектов, я потратил около десяти дней на разработку интерпретатора.
Если бы Брендан знал, что эти наспех замороженные базовые проекты повлияют на миллионы разработчиков и миллиарды пользователей в течение следующих 20 с лишним лет, может быть, он убедил бы руководство дать ему немного больше времени... такой короткий дизайн Время привело к существованию куча технического долга, оставшегося от исторических причин в базовой конструкции языка, таких как сосуществование языка.undefined
а такжеnull
Две концепции для «ценности не существует»:
JavaScript был разработан с использованием различия Java между значениями как «примитивами» и «объектами». Он также использует значение выражения Java «не объект», т.е.null
. И согласно прецеденту C (не Java),null
Он становится 0 при преобразовании в число:
> Number(null)
0
> 5 + null
5
В первой версии JavaScript не было обработки исключений. Таким образом, некоторые неопределенные переменные и отсутствующие свойства должны быть представлены значением.null
Это хорошо подходило для этого сценария, но Брендан также хотел выполнить следующие два условия:
- Это значение не должно иметь значения, соответствующего ссылочному типу, потому что это не просто объект.
- Это значение не следует преобразовывать в 0, так как это затруднит обнаружение ошибок.
В результате Брендан добавилundefined
Это понятие используется для выражения другой формы «ценность не существует». он превратится вNaN
:
> Number(undefined)
NaN
> 5 + undefined
NaN
Это JS в другом (чоу) с (мин) а (чжао) падеж (чжу)undefined
происхождение. Эта функция причиняла много боли многим разработчикам на протяжении многих лет. Например, ошибка часто не сообщает об ошибке непосредственно в той строке, где она действительно возникла, а вместо этого генерирует сообщение об ошибке.undefined
получил переводчик. Затем через долгое время в другом месте будет выдана необъяснимая ошибка, говорящая вамundefined
В следующем нет такого-то атрибута, но на самом деле ошибка вовсе не в этой строке, а произошла очень давно! Глядя на эту функцию сегодня, совершенно невозможно войти в мир PL, но если вам дается всего десять дней, неужели вы не выберете этот более легкий дизайн?
Конечно, ни один язык не рождается совершенным. Однако в области браузеров, которые имеют чрезвычайно строгие требования к прямой совместимости, очень сложно внести критические изменения в какую-либо языковую функцию. Проблема, подобная следующей, уже является функцией, а не ошибкой:
var obj = {}
typeof obj // 'object'
typeof null // 'object'
obj instanceof Object // true
null instanceof Object // false
В заключение, теперь у нас есть доказательства, прямо или косвенно доказывающие, что JavaScript является продуктом поспешной реализации:
- Цель дизайна - ориентироваться на кодеров низкого уровня.
- Золотой мастер находится в стадии экстенсивного роста.
- Итерации прототипа занимают очень короткое время.
- Многие базовые реализации функций набросаны.
В огромной системе Интернета, объединяющей более 3 миллиардов человек, единственный язык программирования прикладного уровня — это догоняющая работа, полная конструктивных недостатков и далеко идущих возможностей. Конечно, важность Интернета породила бесчисленное количество инноваций опоздавших, и мы выберем несколько наиболее известных из этих инноваций, чтобы продемонстрировать их лебединую природу.
Live jQuery на основе лица
Двенадцать лет назад, в сезон белых альбомов, если вам посчастливилось побывать на офлайн-встрече по обмену BarCamp в Нью-Йорке, вы могли представить молодого человека по имени Джон Резиг на сцене Amway, который еще даже не закончил писать новый документ. колесо работает на более чем 70% мировых веб-страниц?
BarCamp — это встреча в стиле семинара, на которой участники делятся друг с другом программой, предоставленной участниками, обычно по темам, связанным с Интернетом, программированием и открытым исходным кодом. Другими словами, это мелкомасштабная техническая биржа. BarCamp проводится много раз, многие спикеры рассказывают о самых разных темах, и с точки зрения влияния jQuery это, вероятно, самое известное событие такого рода. Однако, когда был выпущен хит jQuery, это была лишь одна из нескольких тем, которыми поделился сам автор. Согласно собственному заявлению Джона Резига, на том BarCamp он больше ничего не рассказывал, кроме трех вещей:
- Рассказал о демонстрации приложения для совместной работы в реальном времени под названием ideaShurb.
- Рассказал о новом веб-продукте Feed Pile, который используется для агрегации информационного потока знакомств.
- Говорили о новом колесе под названием jQuery, которое может улучшить способ управления HTML с помощью JS.
Если и есть какое-то достижение, то это дополнительный РРТ для размышлений о соцсетях, да и идея платной соцсети тоже очень большая. Но главное — это эти три вещи.
В то время написание JavaScript означало постоянное попадание в ямы совместимости: вам нужно было поддерживать IE6 и Firefox, а Chrome от Google был выпущен только пять лет спустя. jQuery был быстро принятклей программистУниверсальный фаворит среди фронтенд-разработчиков, и на сегодняшний день более 6000 записей коммитов от почти 300 человек доказывают его популярность. jQuery также создал фонд, и многие добровольцы продолжают его поддерживать.
На примере jQuery мы видим, насколько маленькой может быть отправная точка преобразующей технологии. jQuery не является проектом, продвигаемым компанией или организацией, и сам автор в то время не занимался разработкой олл-ина (сам Джон Резиг был предпринимателем и исследователем укиё-э, и в основном отошел от поддержки проекта после был создан фонд). И кто еще в свое время знал об ideaShurb и Feed Pile? У нас есть все основания полагать, что сам автор должен надеяться, что три проекта, которыми он поделился, могут быть реализованы, но, в конце концов, только jQuery выживет и даже изменит то, как работают миллионы людей. Сегодня есть много статей с мнением, что «в то время Интернет сталкивался с проблемами совместимости, поэтому появление jQuery было исторической необходимостью». Но пока вы понимаете процесс его рождения, вы обнаружите, что случайность и неопределенность черного лебедя — единственная общая черта этих проектов.
В конце этого раздела давайте поностальгируем по домашней странице jQuery того времени. В то время небо было еще голубым, вода еще зеленой, а цена жилья в Пекине была всего 8000 за квадратный метр...
Реагировать на вопрос
Когда мы открыли исходный код React, первые ответы, которые мы получили, были сомнительными.
В первую годовщину открытого исходного кода React за сдержанным предложением в его официальном блоге стоит общий вопрос сообщества в начале его рождения. Давайте посмотрим, как люди на Reddit отреагировали на самые ранние новости об открытом исходном коде React:
Читая их документацию, я даже не знаю, что пытается сделать простейший пример.
Я единственный, кто думает, что это выглядит грязно и неуклюже (и новая грамматика для изучения)? Это хорошо по сравнению с Angular?
Тот факт, что библиотека Facebook работает для Facebook, не означает, что она подходит для других.
Страшно, а зачем вам это в код добавлять?болееА маркеры?
На секунду я задумался, не сегодня ли 1 апреля. Он нарушил слишком много условностей, и ему суждено вызвать ненависть. Я приветствую разнообразие, но этот определенно не выглядит хорошо.
Смешивание HTML, XML и JavaScript возвращает меня во времена JSP. Когда у вас есть пять языков и грамматик в файле, определение того, на каком языке находится курсор, является NP-трудной задачей. Забудьте об этом, если это действительно не имеет значения, я все еще использую Angular.
HTML, смешанный с JavaScript? нет, спасибо.
Похоже на миллиард долларов.
уродливый.
Почти 90% из десятков самых популярных комментариев на Reddit — негативные. Интересно, что только в этом году оценка Алиюнь доктора Ван Цзяня на Чжиху также была односторонне отрицательной.
Что мы можем знать из общедоступной информации, так это то, что React был самой ранней JS-версией XHP (который является диалектом PHP для Facebook). шесть месяцев, чтобы полностью перевести его на JavaScript. Сегодня он насчитывает десятки тысячreact-xxx
С периферийными плагинами, почти 10 000 коммитов и тысячами участников, это суперзвезда в сообществе фронтенда.
React представляет собой еще один тип технологических инноваций. Это действительно ломает многие «лучшие практики» и образ мышления, а также вызывает много споров, но концепции и парадигмы, стоящие за ним, действительно привели к технологическому прогрессу в сообществе фронтенда. Самое интересное в этом примере то, что в 2013 г.клей программистКогда фронтенд-разработчики впервые соприкоснулись с ним, более 90% их первых впечатлений были «что это за ТМ?», да, господствующее общественное мнение в то время тоже думало, что Биткойн слишком дорог…Мы часто сильно ошибаемся и самодовольны в своей способности предсказывать будущее..
Стоит упомянуть одну последнюю деталь о React: это единственное колесо в этой статье, у которого нет явного автора. Мы все знаем, что React — это продукт Facebook, но кто был инженером, который подал заявку на создание колеса за шесть месяцев? Все новые новости о React публикуются через официальный блог Facebook, в исходном кодеAUTHORS
расположены в алфавитном порядке,react-basic
В первоначальном дизайнерском документе автора также нет записи о представлении автора... Наконец-то мы нашли большую корову Джордана В.Github, но по сравнению со звездными интернет-знаменитостями в команде React он даже фото не выкладывает... В сочетании с большим разрывом отечественного фронтенд-сообщества между Vue и Angular и полемикой вокруг React мы, кажется, понимаем автор инкогнито, простите...
Вью в нужное время
У описанных выше колес есть свои преимущества: JavaScript делает возможным богатое интерактивное поведение в браузерах, DSL, изобретенный jQuery, значительно упрощает манипулирование DOM, а парадигма программирования React подрывает шаблоны мышления разработчиков… А когда дело доходит до Vue, нам трудно найти подрывную точку воспламенения в технологии, отличной от «простой в использовании». Однако, поскольку его популярность превзошла React в Китае, у него должна быть своя уникальность.
По сравнению с React, можно сказать, что дебют Vue неизвестен. О хакерских новостях Эван ЮПервоначальный выпуск VueПост получил 54 балла и 26 комментариев. Для сравнения, React даже получил 2280 баллов и 498 комментариев за изменение лицензионного соглашения.
Хотя актуальность была не такой сильной, как у React, когда он был впервые выпущен, распространение и сарафанное радио Vue были довольно хорошими: в первую неделю после его выпуска он получил 2w+ просмотров на официальном сайте и 600+ звезд. Сегодня, три года спустя, он стал почти предпочтительным фреймворком для развития бизнеса китайских разработчиков. Процесс появления Vue был клише, и здесь он не указан. В этом разделе мы хотим подумать над вопросом: почему большое количество фронтенд-разработчиков обратились к Vue в ближайшем будущем? Почему подобные фреймворки MVVM, такие как Angular/Avalon/Knockout, не образовали такой искры?
С технической точки зрения я могу назвать несколько «разумных» причин:
- При переходе на Vue от IE8 в Китае можно вообще отказаться, а принцип реализации Vue как раз поддерживает IE9 как минимум.
- У Angular 1 низкая производительность, а у Angular 2 очень большие изменения в API.
- JSX React долгое время считался ересью.
- Knockout и Avalon не имеют современной инженерной поддержки и плохо обслуживаются.
- ...
Так имеют ли эти причины смысл? Они не что иное, как чистая ретроспектива! Эти причины являются ничем иным, как оправданием рациональности «почему Vue популярен», основанной на реальности «Vue очень популярен». Нет сомнений в том, что дизайн фреймворка Vue первоклассный, но популярность Vue в десятки раз выше, чем у внутренних фреймворков некоторых крупных заводов, значит ли это, что качество его кода во много раз лучше, чем у этих фреймворков того же периода? Шерстяная ткань? Мы не можем дать количественную оценку этому. Тем не менее, вот пример в качестве аналогии:
Если вы меломан, вы можете потратить 100 долларов в местном театре, чтобы послушать небольшую местную группу, когда у вас нет пластинок. А после того, как пластинка станет популярной, вы сможете послушать музыку группы №1 в мире всего за $10. Будете ли вы по-прежнему так же охотно идти на концерт местной небольшой группы? Для информационных ресурсов очень сильный эффект Мэтью, и открытый исходный код тоже сильно усиливает этот эффект в сфере программирования. По аналогии с фронтендом, сколько альтернатив таким фреймворкам, как React и Vue, реально применяются в производственной среде? Огромное влияние черных лебедей во многом связано с эффектом агломерации этого «победитель получает все», и Vue — редкий победитель в этой области.
До сих пор мы видели рождение нескольких ключевых технологий в пространстве браузеров и разницу между тем, что мы себе представляли: JavaScript был реализован небрежно, jQuery был просто крошечным побочным проектом, а React родился с большим трудом. Дизайн Vue не слишком разрушительный... но история не забудет его. Так где же следующая точка перемен? Если черный лебедь можно предсказать, то это не черный лебедь.
постскриптум
Люди не знают и не могут этого предсказать. Судьба человека, конечно, зависит от борьбы с собой, но она учитывает и исторический маршрут.
В этот момент у автора есть некоторые дополнительные мысли: разработчики, участвующие в статье, несомненно, являются элитой в сообществе, но обязательно ли они являются лучшими на техническом уровне, которые внесли большой вклад? Лично мне хочется верить, что среди миллионов разработчиков обязательно найдется немало скромных больших коров, их проекты требуют много труда, а задачи, с которыми они сталкиваются, не менее сложны, чем любой из вышеперечисленных проектов. Однако черных лебедей немного, и масштабы внимания настолько малы, что для подавляющего большинства прилежных разработчиков возможности черных лебедей неизбежны.
Итак, какое отношение мы должны иметь к тому, чтобы столкнуться с черной лебединой природой технологической эволюции? Подпись Юбо Далао очень поучительна: «Благодаря тяжелой работе плодотворные результаты». Есть много студентов, которые достигли уровня разработки звездных проектов, но в революционных проектах слишком много неопределенностей, Все, что мы можем сделать, это учиться и совершенствоваться приземленно, а затем терпеливо ждать. Другими словами, это так называемое «делай добро, не спрашивая о будущем». Конечно, не путайте такое отношение с бизнес-логикой программистов клея, которые со спокойной душой пишут добавления, проверки и удаления 🙂
Учитывая ограниченные знания автора о интерфейсе, в этой статье рассматриваются лишь несколько распространенных примеров в области интерфейса. Если у вас есть опечатки или лучшие идеи, добро пожаловать вGithubили в комментариях, спасибо.
References
- How JavaScript Was Created
- The A-Z of Programming Languages: JavaScript
- A Brief History of JavaScript
- The History of undefined and null
- История JavaScript и как она привела к ReactJS
- Popularity - Brendan Eich
- BarCampNYC Wrap-up
- History break: How did John build jQuery?
- The most popular JavaScript library, jQuery, is now 10 years old
- One Year of Open-Source React
- React: Facebook's latest Javascript client library, now open sourced
- Relicensing React, Jest, Flow, and Immutable.js
- Vue.js: JavaScript MVVM made simple
- First Week of Launching Vue.js
- Evan You
- Internet Trends