Коллекция Papers We Love — нескучно читаем лучшие статьи о Computer Science
Этот проект объединяет увлечённых компьютерными науками людей со всей планеты — вместе они собрали такую библиотеку статей, какая вам и не снилась!
Альберто Блинчиков для Skillbox Media
Papers We Love (PWL) — это публичный репозиторий на GitHub со статьями из области компьютерных наук (Computer Science). А ещё это сообщество людей, которые любят читать и обсуждать такие статьи.
Проект объединил более 40 городов на четырёх континентах. Участники регулярно встречаются офлайн и проводят конференции. Записи выступлений выкладываются на YouTube-канале проекта, а новости — в Twitter, Slack-сообществе и на официальном сайте.
Как всё начиналось
Проект основал Зишан Лакхани (Zeeshan Lakhani) в 2013 году. Сейчас Зишан — директор по стратегическому развитию в компании BlockFi, а тогда был обычным веб-разработчиком.
Предположительно, всё началось в Нью-Йорке. Зишан с коллегами развлекались тем, что обсуждали интересные статьи. А чтобы не терять самые классные — выкладывали их в репозиторий.
Всего за год репозиторий стал популярным и набрал больше 11 тысяч звёзд. К слову, сейчас там более 400 ссылок на статьи, а рейтинг — почти 50 тысяч звёзд. Реп уже форкнули (скопировали к себе) более четырёх тысяч человек!
Как пользоваться проектом
Можно просто читать статьи, можно добавлять новые материалы, а можно собрать единомышленников в своём городе и открыть новое отделение PWL. Впрочем, обо всём по порядку.
Просто почитать
В репозитории хранятся либо сами статьи (когда позволяет авторское право), либо ссылки на внешние ресурсы, где представлены оригиналы публикаций.
Публикации сгруппированы по темам: от affective_programming («эмоциональное программирование») до virtual_machines («виртуальные машины»). В каждой тематической папке лежит файл README.md со ссылками на документы:
Просто кликните на ссылку с названием документа и наслаждайтесь чтением :-)
Чтобы читать статьи без доступа к интернету, можно заранее их скачать. Если вам нужны одна-две статьи, проще всего перейти по ссылкам и сохранить их к себе стандартными средствами браузера.
А вот тем, кто хочет забрать всё и быстро, участники проекта предлагают готовый скрипт. Он парсит файлы README.md, находит в них ссылки на PDF и скачивает документы.
Добавить статью
Уже всё перечитали? А может, вам понравилась статья, которой ещё нет в PWL? Хотите поделиться ею с сообществом? Не проблема — авторы даже будут благодарны вам за такой вклад. Правда, придётся выполнить ряд условий.
Вам нужно будет зарегистрироваться в Git (разработчики наверняка и так уже там) и создать в репозитории проекта pull request (запрос на добавление):
Статья должна быть качественной: например, посты в блогах, мануалы и даже книги не подойдут. Статье не обязательно быть рецензируемой или опубликованной в авторитетных научных изданиях. Сказано лишь, что она должна быть «академической» и относиться к области компьютерных наук, инженерии, истории этих дисциплин или к смежным сферам.
Предложение статьи должны одобрить хотя бы два участника проекта — только после этого материал добавят в общий репозиторий.
А поговорить?
В PWL есть группы по интересам — здесь их называют chapters («отделения», «подразделения», «филиалы»). Встречи для очного обсуждения статей проходят в сообществах по городам.
Все отделения перечислены на официальном сайте и в репозитории. Пока там нет российских городов, но это можно исправить. Если в вашем городе вас — любителей академических CS-статей — много и ваши намерения серьёзны, свяжитесь с организаторами и откройте новый филиал вот по этому алгоритму.
Что почитать
Чтобы не быть голословными, мы выбрали пять классных статей на свой вкус. Но, поверьте, интересных материалов в PWL гораздо больше.
«О выразительной силе языков программирования» (On the Expressive Power of Programming Languages)
Маттиас Фелляйзен (Matthias Felleisen)
Ссылка на гитхаб / оригинальный текст.
В обсуждениях и публикациях языки программирования иногда сравнивают по степени их выразительности (expressiveness). Само это слово — выразительность — кажется интуитивно понятным, поэтому его обычно не поясняют. По сути же, выразительность определяется тем, что и как на языке можно запрограммировать.
Маттиас Фелляйзен поступил как и положено учёному. Он не только ввёл формальное определение выразительности языков, но и разработал алгоритм, который позволяет предсказать, более или менее выразительным станет язык после добавления в него новой функциональности.
Посмотрите на YouTube доклад по этой статье — один из самых популярных на канале PWL и совсем не скучный.
«Биткоин: система пиринговой электронной наличности» (Bitcoin: A Peer-to-Peer Electronic Cash System)
Сатоси Накамото (Satoshi Nakamoto)
Оригинальный текст на гитхабе (PDF).
Биткоин, блокчейн — странные понятия: кажется, про них слышали все, но вот толком объяснить, что это такое, почти никто не может.
Зато про них рассказывает тот, кто их придумал, — Сатоси Накамото. Он объясняет и что такое «цифровая монета», и как верифицируются транзакции, и почему злоумышленнику наверняка не хватит электронных мощностей, чтобы взломать ваш электронный кошелёк.
Сатоси Накамото — псевдоним. До сих пор точно неизвестно, один ли это человек или группа людей. Докопаться до истины пытались многие, но в результате кандидатов только прибавилось.
В разное время «накамотой» называли то японско-американского физика Дориана Накамото (Dorian Nakamoto), то эксперта по криптовалюте Ника Сабо (Nick Szabo), то австралийского программиста Крейга Райта (Craig Wright) — ладно, последний сам себя так называл :-)
Но самая изобретательная теория гласит, что Сатоси Накамото — это аббревиатура из названий компаний Samsung-Toshiba-Nakamichi-Motorola. А придумали этого персонажа, чтобы всех обмануть. Как и зачем — история умалчивает.
«Система архивного хранения на основе ДНК» (A DNA-Based Archival Storage System)
Джеймс Борнхольт (James Bornholt), Рэндольф Лопес (Randolph Lopez), Дуглас М. Кармин (Douglas M. Carmean), Луис Сезе (Luis Ceze), Георг Силиг (Georg Seelig), Карин Штраус (Karin Strauss)
Ссылка на гитхабе.
Электронные документы, деньги, история ваших перемещений и даже переписка в соцсетях — всё это приходится где-то хранить. Данных становится так много, что без качественного прорыва в технологиях хранить всё важное подолгу скоро уже не получится.
Учёные из исследовательской группы Mocrosoft и Вашингтонского университета считают, что будущее за ДНК-хранилищами: в единице хранения размером с крупицу соли помещается около 200 МБ. А храниться такие данные могут до 500 лет. Подробнее о том, как работает этот механизм, об экспериментах и их результатах читайте в PDF с сайта Вашингтонского университета.
«Решение задачи управления параллельными вычислениями» (Solution of a Problem in Concurrent Programming Control)
Эдсгер В. Дейкстра (Edsger W. Dijkstra)
Оригинальный текст на гитхабе (PDF).
Эта статья замечательна всем.
Во-первых, написал её тот самый Дейкстра — нидерландский учёный-информатик, один из разработчиков концепции структурного программирования и автор многих классических алгоритмов. Один из них даже назван его именем.
Во-вторых, она считается первым исследованием в области параллельных алгоритмов, а проблема, которая в ней поднимается, до сих пор актуальна.
В-третьих, там всего-то страница текста и никакой сложной математики.
«Геймификация в образовании: что это такое, как и зачем её применять?» (Gamification in Education: What, How, Why Bother?)
Джоуи Ли (Joey Lee) и Джессика Хаммер (Jessica Hammer)
Оригинальный текст на гитхабе (PDF).
Эта публикация не такая академичная, как большая часть материалов из репозитория PWL. Новой её тоже не назовёшь — написана в 2011 году. В то время, по словам авторов, геймификация была этакой хитростью для продвижения продуктов и услуг. В образовании же элементы игры применяли мало и бессистемно. Впрочем, много ли успело поменяться в образовании за последние десять лет? Отрасль-то в целом консервативная.
Авторы говорят о том, почему геймификация в обучении — это хорошо. Но не замалчивают и обратную сторону — что может пойти не так, если переборщить с играми.
Их выводы могут пригодиться не только учителям и тренерам. Если вы прямо сейчас готовитесь к экзамену или тесту, самостоятельно изучаете новую технологию или язык программирования, то почему бы не сделать этот процесс интереснее?
Возможно, с правильной системой достижений и вознаграждений вы усвоите знания быстрее и лучше.
«Геймификация — как шоколад, переедать его вредно. А образование похоже на арахисовое масло — полезное, но многие его не любят. Если игра будет проявляться во всём и станет обязательной, то участники скоро возненавидят её правила так же, как ученики не любят школьные. Вы получите не вкусный и полезный продукт, а что-то вроде брокколи в шоколаде».
Джоуи Ли и Джессика Хаммер
Как читать с умом
В PWL серьёзно относятся не только к выбору материалов, но и к качеству чтения. Нельзя, говорят, такое читать просто как новости или худлит. Впрочем, после знакомства с разделом выше вы и сами наверняка об этом догадались.
В репозитории проекта есть несколько ссылок на ресурсы, которые помогут справиться с научной статьёй. Они универсальные — подойдут не только для CS-статей, но и для любых других сложных публикаций.
Вот несколько советов оттуда:
- Начните с введения и заключения. Так вы сразу уловите суть проблемы и предлагаемый метод решения.
- Не пытайтесь понять каждое слово — можно убить уйму времени, раз за разом перечитывая одно предложение. Иногда лучше пропустить фразу, которая сбивает с толку. Очень может быть, что и без неё вы легко уловите смысл абзаца в целом.
- Сравните статью с теми, которые вы уже прочитали по этой же теме. Пройдите по ссылкам в тексте, узнайте чуть больше об авторах связанных публикаций. Так вы составите более полное представление о проблеме и при желании сможете критиковать содержимое аргументированно, а не в стиле «не читал, но осуждаю» :-)
Что дальше?
Если каждый день читать по одной статье из собрания Papers We Love, то на полтора года, вам, пожалуй, хватит. А если делать перерывы на выходные, то и на все два, — если за это время репозиторий не вырастет ещё вдвое.
К счастью, есть похожие проекты с крутыми материалами для гиков и не только. В PWL поощряют любознательность и любезно рассказывают о них.
Например, зацените публикации в области Computer Science, которые заслужили больше всего наград, или узнайте больше о распределённых системах.
Чего ещё интересного почитать в Papers We Love? Например, взгляните на подборку Педру Тавареша (Pedro Tavareλ) — организатора филиала PWL в Порту, Португалия.