На каком языке пишутся сложные сайты? — Хабр Q&A
JavaScript, HTML, CSS. Для начала начни с HTML, CSS…
Ответ написан
Первый вопрос: «А что есть сайт?»Ответ прост: сайт (web-приложение) — это ответы данными по TCP/IP-порту в различных форматах на клиентские запросы, исходя из заложенной в него логики работы.
Как это происходит на стороне сервера — реализация не важна: пишите на том языке программирования, которым хорошо владеете.
vk, imhonet, youtube (или даже наш) сайт — это совокупность аппаратно-программных комплексов для обеспечения необходимой реакции на запросы клиентов.
Ответ написан
Assembler.
Ответ написан
Подобные проекты — это не сайты, а как выше сказали — программно-аппаратные платформы, или веб-приложения (то есть ПО, работающее в браузере). Такие приложения имеют два сегмента — фронтенд и бэкенд. Фронтент реализуется на клиентских языках разработки, бэкенд на серверных. Почитайте требования к фронтенд разработчикам и бэкенд разработчикам и всё поймёте. Выберите что нравится больше и специализируйтесь.
Ответ написан
Здесь не в языках дело, язык — лишь инструмент, причем выбор этого инструмента в проектах такого масштаба — далеко не определяющий фактор.
Но если вам интересно, серверная часть Youtube написана в основном на Python, vk — вообще на PHP (правда, потом они изобрели свой диалект — kPHP, компилируемый и со строгой типизацией, а критичные части переписаны на С++). Но все это только подтверждает вышесказанное.Ответ написан
КомментироватьНа всех их пишут, от языка там ничего не зависит.
vk — на php. stackoverflow — на ASP (или как его там), многое написано на рубях или питоне, есть проекты на перле, если проекты на xscript, очень много сишных (особенно не вебдванольного уродища, а действительно полезных проектов).
Ответ написан
КомментироватьВ подобных проектах в основном Java. Бывает что пытаются делать на PHP, но потом создают свой собственный интерпретатор или компилятор PHP из за низкой производительности оригинального PHP — facebook начал писать свой PHP(hhvm), VK.com начал писать свой PHP(kPHP).
На Java: yandex market, odnoklassniki, Twitter(используют язык Scala но суть в том что работает проект на JVM т.е. скорость как у Java примерно), LinkedIn и др.
Ответ написан
Комментировать Почему-то никто не упомянул Microsoft .NET Framework и язык C#..NET Framework с различными сопутствующими модулями и фреймворками (LINQ, Entity Framework, WCF, Silverlight, WPF, ASP.NET, ASP.NET MVC Framework) в сочетании с MS SQL используются для написания энтерпрайз-решений в крупных компаниях (банки, страховые компании и пр.). Обычные информационные сайты на них не делают.
Ответ написан
Это огромные проекты. Один ты не когда в жизни не сделаешь подобное и даже меньше. Их создают командами где каждый человек отвечает за ту или иную вещь. Например как дизайнер, бекендер, фронтендер и еще много много it-профессий которые там используються…
Ответ написан
КомментироватьДумаю, для начала лучше освоить PHP+HTML,CSS+JS+SQL — это основы, через которые проходили почти все. Создавали небольшой сайт, потом средний и т. д.
А дальше все индивидуально и как говорилось выше «не в языках дело». Главное понять как все работает и какие технологии необходимы для реализации той или иной задачи. Без навыков пытаться замахнуться на большой проект не получится — это же не дипломная =) Но если хочется чем-то таким заняться, то лучше имея базу, постараться попасть в команду разработчиков какого-либо проекта.
Ответ написан
КомментироватьSPRING + ANGULAR JS(TS) ЛУЧШИЕ РЕШЕНИЯ ДЛЯ РАЗРАБОТКИ САЙТОВ
Ответ написан
Facebook выпустила собственный язык программирования
Интернет Веб-сервисы
|ПоделитьсяСоциальная сеть Facebook представила новый открытый язык программирования под названием Hack. Он схож с PHP и предлагает присущую ему быстроту программирования, но одновременно отличается от него статической типизацией, используемой в C++, Java и других современных языках.
Динамическая типизация, присущая языку PHP (а также, к примеру, JavaScript), сокращает код и позволяет тратить меньше времени на его написание, однако не позволяет исключать ошибки на стадии компиляции.
В свою очередь, статическая типизация позволяет исключать ошибки в коде на стадии компиляции, поэтому она подходит для сложных, больших программ, в написании которых принимает участие множество разработчиков.
Для компаний вроде Facebook, в которых работают тысячи программистов, которые обновляют код дважды в день, ошибки в коде являются проблемой значительного масштаба.
Именно поэтому был рожден Hack, сочетающий сильные стороны языков программирования того и другого типа, пояснили в компании.Для запуска приложений, написанных на Hack, необходимо установить виртуальную машину HHVM (HipHop Virtual Machine). Она поддерживает одновременно и Hack, и PHP. Поэтому разработчикам не придется разом переделывать весь код из PHP в Hack, они могут делать это постепенно, по необходимости. Виртуальная машина поддерживает смешанный код, поэтому разработчики могут продолжить писать на PHP, но уже использовать функции нового языка программирования.
Hack похож на PHP, но отличается статической типизацией (вверху: фрагмент кода PHP, внизу: тот же код на языке Hack)
Для загрузки Hack и HHVM требуется Ubuntu 12.04 LTS, Ubuntu 13.10 или Debian 7. Пользователи также при желании могут скачать код Hack и скомпилировать его самостоятельно.
Facebook — не единственная ИТ-компания, которая создала собственный язык программирования. В июле прошлого года собственный вариант PHP — KittenPHP — представила крупнейшая российская соцсеть «ВКонтакте». Переход на новый язык, на разработку которого ушло более года, и который вдвое увеличивает производительность, соцсеть завершила в мае 2013 г. В марте 2014 г. компания предоставила открытый доступ к языку.
Собственные разработки в области средств программирования имеет и поисковый гигант Google. В ноябре Google выпустила высокопроизводительную замену языку JavaScript под названием Dart, разработка которого велась более 2 лет. Еще один собственный язык программирования Go корпорация предлагает разработчикам приложений для настольных операционных систем, включая Windows и OS X.
- Подобрать оптимальный виртуальный сервер VPS/VDS на ИТ-маркетплейсе Market. CNews
Сергей Попсулин
Изучение программного обеспечения Facebook, крупнейшей в мире социальной сети
В масштабах, в которых работает Facebook, несколько традиционных подходов к обслуживанию веб-контента не работают или просто непрактичны.
Задача инженеров Facebook состояла в том, чтобы поддерживать бесперебойную работу сайта, несмотря на более двух миллиардов активных пользователей . В этой статье рассматриваются некоторые программы и методы, которые они используют для достижения этой цели.
Задача масштабирования Facebook
Прежде чем мы углубимся в детали, вот несколько фактов, которые дадут вам представление о проблеме масштабирования, с которой приходится сталкиваться Facebook: языки)
Источники: 1, 2, 3
Интересен тот факт, что даже в таком огромном масштабе центры обработки данных Facebook (Meta) на 100% поддерживаются возобновляемой энергией.
Прочтите этот пост в блоге, чтобы узнать больше статистики о самых популярных платформах социальных сетей.
Программное обеспечение, помогающее масштабировать Facebook до
В некотором смысле Facebook по-прежнему является сайтом LAMP (своего рода), который ссылается на службы, использующие Linux, Apache, MySQL и PHP, но ему пришлось изменить и расширить свою работу, чтобы включить множество других элементов и служб, а также изменить подход к существующим.
Например:
- Facebook по-прежнему использует PHP, но он создал для него компилятор, чтобы его можно было превратить в собственный код на своих веб-серверах, тем самым повысив производительность.
- Facebook использует Linux, но оптимизировал его для своих целей (особенно с точки зрения пропускной способности сети).
- Facebook использует MySQL, но в первую очередь как постоянное хранилище ключей и значений, перемещая соединения и логику на веб-серверы, поскольку там проще выполнять оптимизацию (на «другой стороне» слоя Memcached). В 2022 году Facebook перешел на MySQL 8.0 .
Кроме того, существуют специально написанные системы, такие как Haystack, масштабируемое хранилище объектов, используемое для обслуживания огромного количества фотографий Facebook, или Scribe, система регистрации, которая может работать в масштабе Facebook (что далеко не тривиально).
Но хватит об этом. Давайте представим (некоторые из них) программное обеспечение, которое Facebook использует, чтобы предоставить нам всем крупнейший в мире сайт социальной сети.
Memcached
Memcached на сегодняшний день является одним из самых известных программ в Интернете. Это система кэширования с распределенной памятью, которую Facebook (и множество других сайтов) использует в качестве слоя кэширования между веб-серверами и серверами MySQL (поскольку доступ к базе данных относительно медленный). За прошедшие годы Facebook провел массу оптимизаций Memcached и сопутствующего программного обеспечения (например, оптимизировал сетевой стек).
Facebook запускает тысячи серверов Memcached с десятками терабайт кэшированных данных в любой момент времени. Вероятно, это крупнейшая в мире установка Memcached, обрабатывающая миллиарды запросов в секунду.
HipHop для PHP и виртуальная машина HipHop (HHVM)
PHP, будучи языком сценариев, работает относительно медленно по сравнению с кодом, изначально работающим на сервере. HipHop преобразует PHP в код C++, который затем можно скомпилировать для повышения производительности. Это позволило Facebook получить гораздо больше от своих веб-серверов, поскольку Facebook в значительной степени полагается на PHP для обслуживания контента.
Небольшая команда инженеров (первоначально их было всего трое) из Facebook потратила 18 месяцев на разработку HipHop и использовала его несколько лет. Проект был прекращен еще в 2013 году, а затем заменен на HHVM (HipHop Virtual Machine).
https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php–move-fast/
Facebook отказался от давней поддержки PHP в HHVM версии 4.0 в ответ на проблемы PHP7. вышестоящий интерпретатор с более высокой производительностью.
Стог сена
Haystack — это высокопроизводительная система хранения и поиска фотографий Facebook (строго говоря, Haystack — это хранилище объектов, поэтому в нем не обязательно хранить фотографии).
У него много работы; Facebook содержит более 260 миллиардов изображений, и каждое из них сохраняется в четырех разных разрешениях, в результате чего получается более 20 петабайт данных. И масштаб постоянно увеличивается: пользователи загружают миллиард новых фотографий каждую неделю или 60 терабайт данных.
И дело не только в способности обрабатывать миллиарды фотографий; веб-производительность имеет решающее значение. Как мы упоминали ранее, пользователи Facebook загружают около 147 000 фотографий каждую минуту, что составляет 2 450 фотографий 9. 0005 в секунду.
BigPipe
BigPipe — это динамическая система обслуживания веб-страниц, разработанная Facebook. Facebook использует его для обслуживания каждой веб-страницы в разделах (называемых «страницами») для оптимальной производительности. Этот подход похож на конвейерную обработку в современных микропроцессорах, где несколько инструкций передаются через разные исполнительные блоки для достижения максимальной производительности.
Например, окно чата извлекается отдельно, лента новостей извлекается отдельно и так далее. Эти страницы могут быть получены параллельно, что дает прирост производительности, а также дает пользователям сайт, который работает, даже если какая-то его часть будет деактивирована или сломана.
Cassandra (Instagram)
Cassandra — это распределенная система хранения без единой точки отказа. Это один из детей-плакатов движения NoSQL, исходный код которого сделан с открытым исходным кодом (он даже стал проектом Apache). Facebook использовал его для поиска в папке «Входящие».
Помимо Facebook, его использует ряд других сервисов, например Digg. Мы даже рассматриваем возможность его использования здесь, в SolarWinds ® Pingdom ® .
Facebook отказался от Cassandra еще в 2010 году, но это решение используется в Instagram с 2012 года, заменив Redis.
Scribe
Scribe — это гибкая система ведения журналов, которую Facebook использовал для множества внутренних целей. Он был создан, чтобы иметь возможность обрабатывать журналы в масштабе Facebook и автоматически обрабатывать новые категории журналов по мере их появления (у Facebook их сотни). По состоянию на 2019 год в репозитории Scribe на GitHub указано, что этот проект больше не поддерживается и не обновляется Facebook, что, вероятно, означает, что он больше не используется.
Hadoop и Hive
Hadoop — это реализация map-reduce с открытым исходным кодом, которая позволяет выполнять вычисления с огромными объемами данных. Facebook использует это для анализа данных (а, как мы все знаем, у Facebook огромные объемы данных). Hive создан внутри Facebook и позволяет использовать SQL-запросы к Hadoop, что упрощает его использование для непрограммистов.
И Hadoop, и Hive имеют открытый исходный код (проекты Apache) и используются рядом крупных сервисов, например Yahoo и Twitter.
Для получения дополнительной информации ознакомьтесь со статьей «Как Facebook развертывает большие данные?»
Apache Thrift
Facebook использует несколько разных языков для своих различных служб. PHP используется для внешнего интерфейса, Erlang используется для чата, Java и C++ также используются в нескольких местах (и, возможно, другие языки). Apache Thrift — это межъязыковая платформа внутренней разработки, которая связывает все эти разные языки вместе, позволяя им эффективно взаимодействовать друг с другом в любом масштабе. Он был разработан в Facebook для разработки масштабируемых межъязыковых сервисов. Это значительно упростило для Facebook поддержку межъязыкового развития.
Facebook сделал Thrif открытым исходным кодом, и была добавлена поддержка еще большего количества языков.
Varnish
Varnish — это ускоритель HTTP, который может действовать как балансировщик нагрузки, а также кэшировать контент, который затем может быть доставлен молниеносно.
Facebook использует Varnish для размещения фотографий и изображений профиля, обрабатывая миллиарды запросов каждый день. Как и почти все, что использует Facebook, Varnish имеет открытый исходный код.
React
React — это библиотека JavaScript с открытым исходным кодом, созданная в 2011 году Джорданом Уоке, инженером-программистом Facebook. Позже Facebook представил React Fiber — набор алгоритмов для рендеринга графики. Интересно, что React сейчас является одной из самых широко используемых библиотек JavaScript в мире. Прочтите историю о том, как React стал таким успешным.
https://dev. to/saamerm/did-facebook-really-slow-down-or-move-away-from-react-native-2fh5
Другие вещи, которые помогают Facebook работать гладко
Мы упомянули некоторые программного обеспечения, которое составляет систему (системы) Facebook и помогает правильно масштабировать сервис. Но работа с такой большой системой — сложная задача, поэтому мы решили перечислить еще несколько вещей, которые Facebook делает для обеспечения бесперебойной работы своего сервиса.
Постепенные выпуски и темные запуски
У Facebook есть система, которую они называют Gatekeeper, которая позволяет им запускать разный код для разных групп пользователей (по сути, это вводит разные условия в кодовую базу). Это позволяет Facebook постепенно выпускать новые функции, проводить A/B-тестирование, активировать определенные функции только для сотрудников Facebook и т. д.
Gatekeeper также позволяет Facebook делать так называемые «темные запуски», которые активируют элементы определенной функции за кулисами, прежде чем она будет запущена (без уведомления пользователей, поскольку соответствующих элементов пользовательского интерфейса не будет). Это действует как реальный стресс-тест и помогает выявить узкие места и другие проблемные области до официального запуска функции. Темные запуски обычно проводятся за две недели до фактического запуска.
Профилирование работающей системы
Facebook тщательно отслеживает свои системы (что мы в Pingdom, конечно же, одобряем), и, что интересно, он также отслеживает производительность каждой отдельной функции PHP в реальной производственной среде. Это профилирование реальной среды PHP выполняется с помощью инструмента с открытым исходным кодом под названием XHProf.
Постепенное отключение функций для повышения производительности
Если у Facebook возникают проблемы с производительностью, существует множество рычагов, позволяющих постепенно отключать менее важные функции для повышения производительности основных функций Facebook.
Вещи, о которых мы не упоминали
В этой статье мы не особо касались аппаратного обеспечения, но, конечно, это также важный аспект, когда речь идет о масштабируемости. Например, как и многие другие крупные сайты, Facebook использует CDN для обслуживания статического контента. И, конечно же, у Facebook есть множество центров обработки данных, в том числе объект площадью 27 000 квадратных метров в Лулео, Швеция, запущенный в 2013 году, объект площадью 150 000 квадратных метров в Клони, Ирландия, запущенный в 2018 году, и огромный 11-этажный объект площадью 170 000 квадратных метров. установка счетчиков разрабатывается в Сингапуре с 2018 года.
И помимо того, что мы уже упоминали, конечно, задействовано множество другого программного обеспечения. Тем не менее, мы надеемся, что смогли выделить некоторые из наиболее интересных вариантов, которые сделал Facebook.
Любовь Facebook к открытому исходному коду
Мы не можем закончить эту статью, не упомянув, насколько Facebook любит открытый исходный код. Или, возможно, нам следует сказать «любит».
Мало того, что Facebook использует (и вносит свой вклад) программное обеспечение с открытым исходным кодом, такое как Linux, Memcached, MySQL, Hadoop и многие другие, он также сделал большую часть своего внутреннего программного обеспечения доступным как открытый исходный код.
Примеры проектов с открытым исходным кодом, созданных внутри Facebook, включают HipHop, Cassandra, Thrift и Scribe, React, GraphQL, PyTorch, Jest и Docusaurus. Facebook также имеет Flow с открытым исходным кодом, как средство проверки статического типа для JavaScript, которое выявляет проблемы в процессе написания кода. Если вы разработчик JavaScript, обязательно ознакомьтесь с ним. Это может сэкономить вам часы времени на отладку.
(Список программного обеспечения с открытым исходным кодом, с которым работает Facebook, можно найти на странице Facebook с открытым исходным кодом.)
Впереди новые проблемы масштабирования
Facebook растет невероятными темпами. Его пользовательская база растет почти в геометрической прогрессии и сейчас насчитывает более двух миллиардов активных пользователей — и кто знает, какой она будет к концу года.
В Facebook даже есть специальная «группа развития», которая постоянно пытается выяснить, как заставить людей использовать сайт и взаимодействовать с ним еще больше.
Этот быстрый рост означает, что Facebook будет продолжать сталкиваться с различными узкими местами в производительности, поскольку ему будет мешать все больше и больше просмотров страниц, поисковых запросов, загруженных изображений (включая форматы и размеры изображений), сообщений о состоянии и всех других способов, с которыми пользователи Facebook взаимодействуют. сайта и друг друга.
Но это факт жизни для такой службы, как Facebook. Инженеры Facebook будут продолжать работать и придумывать новые способы масштабирования (речь идет не только о добавлении дополнительных серверов). Например, система хранения фотографий Facebook уже несколько раз полностью переписывалась по мере роста сайта.
Итак, посмотрим, что дальше придумают инженеры Facebook. Спорим, это что-то интересное. В конце концов, они взбираются на гору, о которой большинство из нас может только мечтать; сайт с большим количеством пользователей, чем в большинстве стран. Когда вы это сделаете, вам лучше проявить творческий подход.
Если вам интересно, как работает Интернет, обязательно ознакомьтесь с нашей статьей о том, как Google собирает данные о вас и Интернете.
Источники данных: Различные презентации инженеров Facebook, а также всегда информативный инженерный блог Facebook.
Примечание: Эта статья впервые появилась в этом блоге еще в 2009 году, и мы неоднократно обновляли данные, чтобы они оставались актуальными.
Похожие сообщения
Языки программирования, используемые Facebook
Facebook — одна из самых популярных платформ социальных сетей, которой принадлежат другие популярные платформы социальных сетей, такие как Instagram и WhatsApp. Facebook — одна из тех компаний, в которой хочет работать каждый инженер-программист и специалист по данным. Если вы хотите работать в Facebook, вы должны выучить один из языков программирования, используемых в Facebook. Итак, если вы хотите узнать обо всех языках программирования, используемых Facebook во внешнем и внутреннем интерфейсе Facebook, то эта статья для вас. В этой статье я познакомлю вас со всеми языками программирования, которые использует Facebook.
Существует множество языков программирования, которые Facebook использует в Back-end. Большинство языков программирования, которые Facebook использует на бэкенде, очень популярны в сообществе программистов. Но некоторые из них не так популярны.
Итак, давайте начнем с изучения всех языков программирования, используемых Facebook на сервере:
- Java: Вы, должно быть, много слышали о Java. Это один из языков программирования, который является первым языком программирования для студентов, изучающих информатику. Поскольку он так популярен среди студентов, изучающих информатику, и инженеров-программистов, Facebook использует его в серверной части.
- Hack: Hack — это язык программирования, созданный Facebook как диалект PHP. Язык программирования Hack не так уж распространен среди программистов, но поскольку его создал Facebook, он использует Hack в бэкенде.
- C++: C++ — один из самых быстрых языков программирования, которые я использовал. Я предпочитаю C++ для решения всех проблем, кроме науки о данных и машинного обучения. Facebook также использует C++ в качестве серверной части из-за его популярности среди инженеров-программистов.
- Erlang: Erlang — это универсальный язык функционального программирования, используемый Facebook в серверной части. Сегодня это не популярный язык программирования, но он используется в распределенных, отказоустойчивых, высокодоступных приложениях, где код можно изменить в любое время, не останавливая приложение.
- Python: Python — один из самых популярных языков программирования. Он широко используется в Facebook для серверной разработки и машинного обучения.
- Haskell: Haskell — это универсальный язык функционального программирования, используемый в бэкенде Facebook. Facebook использует Haskell для реализации своих антиспамовых программ.
- Dlang: Dlang или D используется в таких компаниях, как Facebook, eBay и Netflix. Это не популярный язык программирования, но это мощный язык для программирования GPU, ядра операционной системы, виртуальных машин и обработки текста.
- PHP: PHP — один из самых популярных языков программирования для серверной веб-разработки. Facebook использует PHP для управления веб-контентом.
Итак, Facebook использует Hack, Java, C++, Erlang, Python, Haskell, Dlang и PHP в серверной части.
Facebook использует только один язык интерфейса — JavaScript. JavaScript — самый популярный язык программирования сегодня, поскольку он используется почти на каждой платформе в разработке интерфейса, которую вы посещаете сегодня.
Резюме
Надеюсь, теперь вы знаете обо всех языках, используемых Facebook во внешнем и внутреннем интерфейсе. Facebook — одна из тех компаний, в которой хочет работать каждый инженер-программист и специалист по данным.