Привет друг! Надеюсь, вам понравится наш новый мир. Это сильно отличается от мира 2007 года. Подсказка: если вы только что получили ипотеку, вернитесь и отмените ее. Поверьте мне.

Я рада, что вы все еще интересуетесь компьютерами! Сегодня у нас их намного больше, чем 10 лет назад, и это сопряжено с новыми проблемами. Мы носим компьютеры на запястьях и лице, держим их в карманах и храним в холодильниках и чайниках. Машины сами управляют собой довольно хорошо, и мы научили программы быть лучше людей практически во всех играх, кроме, может быть, выпивки.

(Интернет) Приложения

Возможно, вы видели выпуск iPhone незадолго до того, как вошли в будку времени. Apple - крупнейшая и богатейшая технологическая компания, в основном благодаря iPhone и его операционной системе iOS. У Google есть такая конкурирующая вещь, как Android, и Microsoft попыталась получить кусок от постоянно растущего пирога с Windows Phone. Не вышло.

Мы начали называть программы приложениями, а некоторые веб-сайты называли себя веб-приложениями. В 2008 году Google выпустил новый браузер под названием «Chrome». Девять лет спустя это самый популярный способ выхода в Интернет.

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

Компании также вложили средства в JavaScript, чтобы улучшить его - теперь он поддерживает классы и модули. Мы используем языки, которые компилируют в JavaScript, например TypeScript (от Microsoft, теперь они крутые) или Flow.

В наши дни мы пишем много JavaScript, так как никто больше не поддерживает Flash. Мы даже запускаем JavaScript на сервере вместо Perl, используя компонент под названием Node. Звучит проще, чем есть на самом деле.

Помните Swing, SWT и подобные wxWidgets? Нам пришлось заново изобрести их для мира браузеров. Появилось несколько новых моделей программирования пользовательского интерфейса, которые в основном сосредоточены на компонентах.

Нам нужно было найти способ разрабатывать, создавать и тестировать приложения, сохраняя при этом их отзывчивость (термин, который мы используем для описания веб-сайта, который не выглядит дерьмом на мобильном телефоне). Нам также нужно было сделать его тонким - не у всех есть быстрое соединение, но у каждого есть браузер в кармане.

Чтобы помочь со всем этим, теперь есть каркасы компонентов. Термин расплывчатый, поскольку он включает в себя такие, как Angular от Google, React от Facebook и Vue от сообщества. Но это лучший термин, который у нас есть.

Между прочим, я не уверен, что вы помните Facebook 2007 года. Примерно в то время он становился популярным в США, а теперь стал больше, чем огромен. Имея более миллиарда пользователей, это также одна из крупнейших кодовых баз в мире.

Команда разработчиков Facebook пишет много отличного кода и публикует его в Интернете. У них есть своя конференция, F8. У большинства крупных компаний есть свои конференции.

CSS также должен был развиваться, поскольку новые приложения требуют более сложных макетов. Мы больше не используем таблицы с изображениями. Рамки тоже исчезли. Вместо этого мы создали новые стандарты, такие как CSS Floats, Flexbox и CSS Grid.

Людям приходилось повторять эти стандарты, и они создали библиотеки, чтобы вещи выглядели единообразно, такие как Bootstrap, Foundation и многие другие. Подобно JavaScript, мы создали языки, которые компилируются в CSS. Они восполняют некоторые вещи, которые упускает CSS, например, переменные или модули. Это все еще сложно.

Это нормально быть потерянным

Не расстраивайтесь, если вы запутались. По правде говоря, мы все немного запутались - и это нормально. Сейчас на планете намного больше разработчиков, и технологические компании становятся все более успешными. Некоторое время мы использовали термин «стартап» для описания компаний, которые быстро росли и не знали, что делать. Но даже этот термин устарел.

Данные

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

Во-первых, мы создали область под названием Data Science, целью которой является изучение и извлечение информации из данных.

Например, стартап под названием Waze позволил людям установить на свои телефоны приложение, которое отслеживало бы их передвижения, пока они были в машине. Поскольку приложение устанавливали многие люди, Waze получил много данных о том, как движутся машины. Они использовали его для разработки программ, которые понимали, где пробки.

Теперь, когда вы открываете Waze на своем телефоне, вы видите пробки на карте в реальном времени и выбираете другой маршрут.

С тех пор Waze был куплен Google. Это часто случается со стартапами.

Перед Data Science стояли три основные проблемы: хранение данных, понимание данных и действия с данными. Мы улучшились во всех этих областях. Давайте посмотрим на каждого.

Место хранения

Теперь нам нужно сохранить гораздо больше информации, а затем выяснить, какая часть важна. Нам нужно было изобрести новые базы данных. MySQL и PostgreSQL не подходят для хранения терабайт данных (мы назвали это большими данными).

Большие компании, ориентированные на Интернет, обычно сталкивались с этими проблемами, поэтому они были в авангарде разработки технологий. В большинстве случаев технологии сначала использовались внутри компании, а затем с открытыми исходными кодами.

Было движение, которое мы назвали NoSQL. Этот новый класс баз данных взял некоторые соглашения традиционных реляционных баз данных и изменил их.

Существует Hadoop, который определяет, как данные хранятся на многих жестких компьютерах. Он определяет способ обработки данных, называемый MapReduce (вдохновленный статьей от Google - в наши дни крупные компании пишут хорошие научные статьи).

Затем есть Cassandra, которая рассматривает данные не как таблицы, а как наборы ключей и столбцов, которые могут храниться на разных компьютерах. Это также гарантирует, что любой из этих компьютеров может перейти в автономный режим без потери данных.

И у нас есть MongoDB, база данных, которую легко установить и использовать для создания прототипов приложений. В 2017 году мы относимся к технологиям так же, как мы относились к поп-звездам десять лет назад: мы рьяно защищаем одних из них и яростно ненавидим других. MongoDB, как и группа Nickelback, принадлежит к последней группе.

Обучение

В лагере «понимание данных» основное внимание уделялось области, называемой машинным обучением. Было много новых техник, от наивной классификации до глубокого обучения, которые теперь есть в наборе инструментов каждого специалиста по данным. В основном они пишут на Python и работают вместе с разработчиками, чтобы внедрить машинное обучение практически повсюду.

Например, с помощью специалистов по данным многие веб-приложения используют A / B-тестирование. Этот метод обслуживает две немного разные версии приложения для разных, но похожих групп пользователей. Он используется, чтобы увидеть, какая версия быстрее приводит к желаемой цели, будь то регистрация или покупка.

Многие крупные компании, такие как Airbnb (произносится air-bee-en-bee), Uber и Netflix, проводят сотни и тысячи A / B-тестов одновременно, чтобы убедиться, что их пользователи получают лучший опыт. Netflix - это приложение, в котором люди могут смотреть телепередачи на всех своих устройствах. ¯\_(ツ)_/¯

Микросервисы и облако

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

Этого сложно добиться в традиционном центре обработки данных, поэтому замечательные инженеры Netflix используют виртуальные машины. Помните Amazon Web Services, запущенный еще в 2006 году? Тогда они начали предлагать Elastic Cloud Compute, известное как EC2, чтобы помочь людям получить виртуальные компьютеры в центрах обработки данных Amazon.

Сегодня у них есть почти 80 подобных сервисов, и все они созданы для того, чтобы помочь компаниям быстро расти. Раньше у нас было модное название для этого - «Облако», но этот термин так же сложно определить, как NoSQL.

Google и Microsoft предлагают свои собственные облака, создавая рынок облачных услуг. А когда умные люди соревнуются друг с другом, начинают происходить всевозможные безумные инновации.

Прежде всего, мы начали больше думать о нашей инфраструктуре как о коде. Раньше вам приходилось покупать новый сервер, подключать клавиатуру и устанавливать зависимости.

Теперь мы используем инструменты управления конфигурацией , такие как Puppet, Chef и Ansible для автоматизации наших серверов. Вы пишете реальный код на таких языках, как Ruby, и предоставляете серверы в зависимости от конфигурации. Если требуется изменение, вы редактируете конфигурации, а затем обновляете серверы. Больше никаких SSH.

Затем мы начали больше обращать внимание на контейнеры. Поскольку на EC2 можно было подготовить машины, нам нужно было разрабатывать среду, аналогичную той, в которой работало наше производство.

Мы начали с виртуальных машин, используя для их автоматизации такие инструменты, как Vagrant. Но потом у нас появились контейнеры Linux и, в конце концов, Docker. Мы нашли способ запускать Linux на наших MacBook без запуска полной виртуальной машины, разделяя некоторые операции, связанные с ОС.

Используя Docker, мы могли создавать описания систем, которые точно соответствовали бы тому, что мы запускали в производственной среде. Разработчики назвали эти описания изображениями и начали запускать свои приложения в несколько виртуальных экземплярах, называемых контейнерами.

Затем облачные провайдеры подхватили это и позволили нам запускать наши контейнеры прямо в их облаках. Они предоставили нам такие инструменты, как Marathon и Kubernetes, которые называются фреймворками оркестрации. Эти фреймворки позволяют разработчикам запускать приложения внутри контейнеров, не беспокоясь о масштабировании, отказоустойчивости, мониторинге и обнаружении. Серверы стали одноразовыми, и мы больше не даем им умных имен.

Это также позволило разработчикам создавать небольшие приложения, называемые службами или микросервисами, а затем запускать их независимо. Поскольку эти микросервисы имеют мало внешних зависимостей, мы начали изучать использование новых языков программирования, таких как Go (который был создан для обеспечения терпимости параллелизма) и Java. Да, Java все еще существует, и она стала лучше.

Существуют также такие языки, как Scala и Clojure, которые позволяют нам использовать виртуальную машину Java и все связанные библиотеки. На таком веб-сайте, как AirBnB, работают сотни микросервисов с использованием нескольких языков программирования и баз данных.

Из-за этих микросервисов нам пришлось пересмотреть некоторые из наших моделей программирования. Теперь у нас гораздо больше, гораздо меньше приложений, которые нам нужно координировать.

В результате появились такие инструменты, как Apache Kafka, Google PubSub и RabbitMQ, которые призваны помочь с болтливыми компьютерами, которые много общаются друг с другом. Kafka была создана LinkedIn, социальной сетью, в которой люди рекламируют свою профессиональную жизнь. Позже был открыт исходный код.

Как мы создаем наше программное обеспечение

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

Поэтому мы создаем программное обеспечение небольшими командами. Команды обычно обладают некоторыми навыками DevOps, а участники достаточно осведомлены об операциях, чтобы иметь возможность развертывать свое программное обеспечение. Они используют некоторую форму Agile-процесса, при котором они выпускают программное обеспечение непрерывно, короткими итерациями. Организации также экспериментируют с другими формами иерархии, такими как Отряды, главы, племена и гильдии, как это делает Spotify (это новый сервис потоковой передачи музыки).

Все эти проекты (и многие другие, о которых упоминалось ранее) разрабатываются публично сообществом людей. Иногда их спонсирует компания. В большинстве случаев разработка ведется на сайте под названием GitHub. Там люди могут говорить о программном обеспечении, создавать его публично и одобрять вклад, отвечая 👍 смайликом. Смайлик - это особый символ, который мы теперь используем для выражения эмоции, например одобрения. :-)

Сейчас существует намного больше сообществ, и все они экспериментируют со способами создания открытого программного обеспечения. Например, веб-фреймворк под названием EmberJS использует управляемый сообществом 6-недельный цикл выпуска. Другие языки и популярное программное обеспечение с открытым исходным кодом (например, GitLab и Visual Studio Code, редактор кода от Microsoft) используют ежемесячный цикл выпуска, чтобы гарантировать, что они не доставляют полностью критические изменения. Пакеты немного ломаются в каждом выпуске.

О, и война редакторов все еще продолжается. Мы пишем наш код в настольных приложениях, которые запускают браузер с текстовым полем. И это здорово. Он работает довольно хорошо (становится лучше с каждым выпуском) и легко настраивается. Он даже имеет некоторую поддержку режима VIM!

Конференции проводятся по всем темам. Они веселые, и они повсюду. Идите к одному - вы увидите самых разных людей! Заводите друзей, валяйте дурака, вдохновляйтесь, высказывайтесь. Может быть, сходите на шоу algorave - то, что они делают с музыкой, изображениями и кодом, захватывает дух.

Есть больше!

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

Пойдем, возьмем Club Mate, и я расскажу вам об этой биткойн-штуке. Кроме того, у США теперь новый президент ...

Если вам понравилась эта статья, пожалуйста, дайте мне несколько аплодисментов, чтобы ее увидело больше людей. Спасибо!