Исходный код Вконтакте это

Довольно часто, выступая на различных конференциях, мы делились желанием выпустить под открытой лицензией KittenPHP, согласно традиции, заложенной крупными IT-компаниями, такими как Google и Facebook.

Это событие несколько раз откладывалось в связи с опасением, что нам не хватит сил и времени на взаимодействие с opensource-сообществом, однако в конце концов заветный день настал, и код KPHP и некоторых других инструментов, используемых внутри проекта, был выложен в открытый доступ.

В связи с этим под катом вас ждет более подробный рассказ о внутреннем устройстве ВКонтакте и тех инструментах, которые сегодня стали доступны opensource-сообществу.

Исходные коды были выложены под лицензиями GNU (GPL и LGPL). Данные лицензии близки нам идеологически, так как при создании этих библиотек мы часто использовали инструменты, лицензированные именно GNU.

Что такое открытый исходный код и как он работает?

KPHP

Исходный код ВКонтакте разрабатывается на PHP-подобном языке, названном KittenPHP или коротко KPHP. Этот код транслируется в C++ специальным транслятором с одноименным названием. После этого сгенерированный C++ код автоматически компилируется средствами gcc, в результате чего получается бинарник, готовый для запуска. Этот бинарник представляет собой веб-сервер, принимающий http-запросы и генерирующий страницы.
Для того чтобы ускорить процесс разработки, KPHP компилирует различные файлы проекта отдельно, после чего линкует. При последующих компиляциях обрабатываются только измененные файлы, либо, в случае больших по размеру файлов, только их части.

KPHP – минималистичный язык, созданный с целью обеспечить очень высокую скорость работы, без ущерба для удобства и скорости разработки. В связи с этим KPHP поддерживает не все возможности PHP, в частности, в нем отсутствует ООП, за исключением некоторых объектов стандартной библиотеки. Кроме этого не поддерживается eval и связанные с ним вещи, такие как регулярные выражения с модификатором ‘e’ (вместо этого предлагается использовать функцию preg_replace_callback). Также не поддерживаются функции для работы с определенными элементами массивов first, end, next, prev, current, reset, key; для их замены реализованы функции getValueByPos и getKeyByPos.
Отказ от поддержки большого количества функционала позволил KPHP стать невероятно быстрым по сравнению с другими средствами для веб-разработки.
В качестве примера мы сравнили его с разработанным в Facebook HipHop VM и получили следующие результаты:

Еще по теме:  Что за четверть vk
Тесты KPHP HHVM PHP
simple 0.000 0.007 0.137
simplecall 0.000 0.004 0.174
simpleucall 0.007 0.008 0.178
simpleudcall 0.007 0.009 0.181
mandel 0.010 0.066 0.392
mandel2 0.011 0.074 0.355
ackermann(7) 0.001 0.011 0.189
ary(50000) 0.003 0.008 0.024
ary2(50000) 0.003 0.010 0.022
ary3(2000) 0.011 0.077 0.191
fibo(30) 0.003 0.019 0.481
hash1(50000) 0.018 0.034 0.044
hash2(500) 0.011 0.021 0.039
heapsort(20000) 0.012 0.040 0.101
matrix(20) 0.007 0.021 0.121
nestedloop(12) 0.000 0.012 0.235
sieve(30) 0.013 0.016 0.114
strcat(200000) 0.002 0.005 0.014
Результаты 0.119 0.442 2.992

Исходный код: что это такое и зачем это нужно | SEMANTICA

С точки зрения разработки, KPHP достаточно совместим с PHP, чтобы для быстрого тестирования написанного кода можно было использовать обычный PHP, а компилировать код только перед финальным тестированием и выкатыванием проекта. Для поддержки функций, реализованных в KPHP, но отсутствующих в обычном PHP, была выложена специальная библиотека github.com/vk-com/kphp-kdb/tree/master/vkext, расширяющая возможности PHP.

Кроме того, KittenPHP является хорошим статическим анализатором PHP-кода, указывающим на вероятные ошибки. Например, в процессе перевода ВКонтакте на него год назад было найдено более 20 серьезных багов.

Вместе с компилятором под открытой лицензией разработчики выложили набор движков, которые отлично дополняют KPHP, но могут быть использованы и отдельно от него. Впервые мы анонсировали эти библиотеки opensource-сообществу на Highload 2010, так что просим прощения за достаточно долгий период ожидания.

PMemcached (“Persistent Memcached”)

Надежное key-value хранилище, позволяющее хранить данные без ограничения по времени. По протоколу MC движок работает идентично Memcache, за исключением того, что после перезагрузки все данные остаются.
Помимо своих основных функций, при включении соответствующей опции в конфигурации pmemcached позволяет получать сразу группы записей, у которых префикс ключа соответствует заданному в запросе.

Еще по теме:  Типы аккаунтов в ВК

Lists

Исходный код

Исходный код

Исходный код

В наше время Google и Stack Overflow стали незаменимыми инструментами разработчика. Но у последнего есть и свои недостатки. К ним, конечно, можно причислить странную политику модерации, и еще много чего, но главный минус не в этом. В условиях, когда почти любой код можно найти в интернете, появился тип разработчиков, шутливо называемый «Full Stack Overflow Developer».

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

Конечно, я не утверждаю, что копипастить код — это всегда плохо. Уверен, что все, кто читает данную статью, не без этого греха. К тому же дедлайны порой поджимают, да и чужое решение может оказаться лучше собственного. Но означает ли это, что мы все постепенно превращаемся в Full Stack Overflow Developer-ов? Как этого не допустить?

Очень просто. Каждый раз, вы натыкаетесь на участок кода, который хотите скопировать в свой проект, то не нажимайте Ctrl+C/Ctrl+V, а перепечатайте этот участок вручную. В чем смысл? Какая разница, как код попадет из интернета в проект? К тому же скопировать гораздо быстрее, чем перепечатывать. Но вот почему второй вариант предпочительнее:

▪ когда вы обязались не копипастить код, а перепечатывать, то вы невольно начинаете оценивать уже существующие решения в поисках наиболее простого и короткого;

▪ когда вы перепечатываете код, вы не делаете это полностью бездумно, ваше подсознание в любом случае анализирует то, что вы пишете, запоминает какую-либо полезную информацию — а значит, когда вы в следующий раз столкнетесь с подобной проблемой, вы будете готовы к ней;

Еще по теме:  Как выбрать победителя с помощью генератора случайных чисел Вконтакте

▪ но самое важное — перепечатанный вами код не будет абсолютной копией своего оригинала, ведь где-то вы подстроите его под себя и под правила проекта, переоформите визуально для лучшей читаемости, где-то добавите комментарии, дополните его уже написанными вами ранее функциями, и такой код лучше впишется в проект, чем кусок, бездумно скопированный со Stack Overflow;

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

▪ ну и в конце концов — это будет написанный лично вами код, вы должны гордиться этим!

А как вы относитесь к копипастингу кода? Напишите своё мнение в комментариях.

Источник: ifaces.ru

Рейтинг
( Пока оценок нет )
Загрузка ...