Книжный куб
11.1K subscribers
2.66K photos
6 videos
3 files
1.96K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Сегодня я решил вспомнить книгу Чарльза Петцольда "Читаем Тьюринга" из серии "Классика программирования".
Книга очень интересна и одновременно крайне сложна для восприятия:) На самом деле Тюринг за свою жизнь опубликовал около 30 работ, причем это все были статьи и ни одной книги.
Две статьи стали классическими:
- "О вычислимых числах" - здесь была введена машина Тьюринга для решения одной из проблем Гильберта относительно общего процесса доказуемости произвольных утверждений в математической логике
- "Вычислительные машины и интеллект" - здесь появился знаменитый тест Тьюринга, в котором наличие интеллекта у машины проверяется общением с человеком - если человек не может отличить машину от человека, то считаем что у нее есть интеллект

В статье по ссылке рассмотрена книга Чарльза Петцольда "Читаем Тьюринга", в которой он пытается на пальцах объяснить в чем суть статьи "О вычислимых числах" и при чем здесь машина Тьюринга.
https://apolomodov.medium.com/review-annotated-turing-30c884af201c

#Software #ComputerScience #ExternalReview #PopularScience
👍3👏2🔥1
"Совершенный алгоритм. Основы" за авторством Тима Рафгардена - крутая книга, если не обращать внимание на перевод.
Автор очень просто рассказывает про алгоритмы. Но забавно, что мне в процессе чтения из-за ошибок редакции Питер пришлось заглянуть в старую классическую книжку Кормена, Лейзерсона и Ривеста "Алгоритмы: построение и анализ", которая без сильно сложнее для восприятия. Просто Тим Рафгарден скрывает детали, которые важны, но не относятся к сути самих алгоритмов и без которых можно уловить основную логику.

У Тима 4 книги в рамках этой серии, но книга "Основы" стартовая и она содержит следующие главы
1. Введение - задоно про то, зачем нужны алгоритмы, если часто реализация основных алгоритмов есть почти во всех языках
2. Асимптотические обозначения - немного про математические нотации, которые нужны для размышления об эффективности алгоритмов
3. Алгоритмы "разделяй и властвуй" - про алгоритмы, которые решают задачу рекурсивно за счет вызова самих себя на частях изначальной задачи
4. Основной метод - метод для простого определения асимптотической сложности алгоритмов типа "разделяй и власствуй"
5. Алгоритм QuickSort - про очень красивый алгоритм сортировки с интересным доказательством
6. Линейный выбор - про выбор i-ой порядковой статистики за линейное время из неотсортированного массива
7. Приложения про доказзательства по индукции и дискретные вероятности

В общем, книжка хороша, но надо читать в оригинале:)

#ComputerScience #Software
👍4
Вчера у нас была очередная встреча клуба любителей архитектуры, где мы продолжили читать книгу “Database Internals” и начали рассмотрение второй части про distributed systems. Если вы пропустили прошлые эпизоды, то про них можно прочитать здесь: 1, 2. Ну а вчера мы обсуждали первые четыре главы второй части:

— Chapter 8. Introduction & Overview
— Chapter 9. Failure Detection
— Chapter 10. Leader Election
— Chapter 11. Replication and Consistency

Отдельно отмечу, что на встрече мы рассматривали эти темы с точки зрения реализации этих моментов в рамках разных баз данных

— Cassandra —точка зрения автора книги как у контрибьюторов Cassandra и на многие темы имплицитно смотрит с позиции человека, который согласен с более слабыми гарантиями консистентности, чем в реляционных базах данных
— Postgres — точка зрения Кости Евтеева, гость этого выпуска, который является экспертом в этой базе данных и раньше руководил развитием DbaaS в Avito много лет
— YDB —с точки зрения этой базы на книгу смотрел наш другой гость, Олег Бондарь, который является CPO Yandex Database и отвечает за развитие этой newSQL базы данных, которая умеет быть консистентной и масштабироваться как NoSQL решения

Подробнее в статье https://apolomodov.medium.com/code-of-architecture-database-internals-part3-788480601498

#ExternalReview #Databases #SystemDesign #SoftwareArchitecture #Software #ComputerScience
👏4🔥31
Teaching Kids to Program with Hedy: A Gradual Programming Language • Felienne Hermans • GOTO 2022

Очередное интересное видео с goto конференции в Амстердаме. На этот раз про обучение детей программированию при помощи нового языка Hedy.
Автор доклада так объяснила потребность в новом языке:
- Для обучения малышей есть Sketch, который отлично закрывает запросы маленькой аудитории (подробнее про то, как он появился и в чем концепция можно почитать в книге его автора, Митчела Резника “Спираль обучения” (“Lifelong kindergarten”), про которую я уже писал на Medium)
- Но по мере взросления детей они хотят переходить к "взрослому" программированию вместо визуального. Обычно на этом этапе детям предлагают Python как дефолтный язык для обучения, но переход не для всех проходит безболезненно - некоторым детям сложно понять сложность синтаксиса языка, которая отвлекает их от семантики создания программ и написания алгоритмов. В итоге, часть детей на этом этапе отваливается и перестает эффективно обучаться.

В итоге, автор разработала исследовательский проект, в котором язык программирования Hedy имеет 18 уровней сложности и если первый уровень позволяет почти все, то 18 уровень уже является синтаксически верным подмножеством Python. А дальше этот исследовательский проект за 2 года стал достаточно популярным, в какое-то время про него написал даже Гвидо ван Россум, что удвоило счета Heroku, за которые пришлось платить автору языка. Сам язык является open source, доступен на gihub и достаточно интересен как технический проект, так как вопросы создания языков, их трансляторов и так далее являются наукоемкой областью (помню как в университете ботал курс теория и реализация языков программирования и там было много интересного). В конце выступления автор рассказала о том, что проект ждеть контрибьюторов и если кто-то хочет поучаствовать, то "you are welcome".

#Software #PopularScience #Learning #Study #ComputerScience
👍9
Computing machinery and intelligence (Вычислительные машины и разум)

Это знаменитая статья Алана Тьюринга опубликованная в 1950 году в журнале Mind. В этой статье автор описал свой подход при поиске ответа на вопрос “Может ли машина мыслить”. Сейчас этот подход зачастую называют тестом Тьюринга, а сам автор назвал это игрой в имитацию. Знакомство с этим подходом сейчас как никогда актуально с учетом новой волны хайпа вокруг чатботов, которые умеют достаточно неплохо вести диалоги с пользователями.
Суть подхода Алана в том, что вопрос “может ли машина мыслить” слишком общий. Для того, чтобы на него ответить придется дать сначала определение того, что такое машина, потом что такое мыслить. Причем определение того, что мы понимаем под мышлением машины и мышлением человека может не совпасть. Поэтому Тьюринг предлагает сделать шаг в сторону и заменить изначальный вопрос на тот, что может быть относительно легко проверен, а именно сможет ли машина отвечать на вопросы человека так, чтобы он счел ее человеком. Если машина на это способна, то она проходит тест, который в наше время называется тестом Тьюринга. Забавно, что большую часть книги автор борется с возможными контраргументами относительно такого перехода и дальше относительно главного вопроса, причем борется успешно.

Чуть больше подробностей про контраргументы можно прочиитать в моей статье на Medium.
Плюс можно посмотреть фильм про Алана Тьюринга "Игра́ в имита́цию" ("The Imitation Game"), в котором рассказывается о вкладе Алана во взлом немецкой Энигмы во время второй мировой войны.

#ComputerScience #AI #PopularScience #ML #Software #Engineering
👍121🔥1
How to Read Complex Code • Felienne Hermans • YOW! 2021

Это выступление Felienne Hermans посвящено той же теме, что книга "Code Reading", про которую я рассказывал вчера. Забавно, что разработчики большую часть времени читают код (~ 60%), а не пишут его, но редко кого учат читать код, а не писать его:) Поэтому автор и решила исправить эту ситацию и выступить с темой про чтение кода, а также написать книгу "The Programmer's Brain", в которой эти же идеи изложены гораздо подробнее.

Если переходить к самому выступлению, то Felienne строит свои размышления на том, что мы знаем о мышлении людей сегодня. Она рассказывает про то, как работают Short Term Memory (STM), Long Term Memory (LTM) и Working Memory в общем, а потом приземляет это на разработку. Она приводит примеры кода и показывает как в разных ситуациях проявляются проблемы с чтением кода в APL, Java, Basic:) Потом она рассказывает как можно прокачать свои навыки чтения и объясняет какую это пользу принесет.

Отдельно отмечу, что Felienne является практикующим преподавателем CS для детей, одновременно исследователем, а также создателем языка программирования Hedy, который помогает ей обучать детей программированию:) Подробнее можно посмотреть в выступлении "Teaching Kids to Program with Hedy: A Gradual Programming Language", про которое я уже рассказывал раньше.

Кроме того, в конце автор рекомендовала несколько книг, одна из которых мне очень нравится - это книга Джона Остерхута "A Philosophy of Software Design", на которую я написал обзор в двух частях: 1 и 2.

#Software #PopularScience #Learning #Study #ComputerScience #SelfDevelopment
👍14🔥4👏2
ACM Professional Membership (Рубрика #ComputerScience)

Сегодня в день программиста (256 день в году) я оформил себе профессиональное участие в ACM (Association of Computing Machinery) за 280 долларов.
Эта подписка дает много бенефитов для continuous learning. Как минимум там есть три пункта
1) Professional Membership
Эта подписка дает доступ к печатной и онлайн подпиской на "Communications of the ACM", доступ к MemberNet, TechNews, CareerNews, доступ к ACM Career и Job Center
2) ACM Skills Bundle Add-On
Тут есть доступ к онлайн-книгам, курсам, тренировочным видео от O'Reilly, Skillsoft Percipio, Pluralsight
3) ACM Digital Library Add-On
Доступ к ACM Digital Library, в котором есть 2 миллиона проприетарных и third-party текстов, больше миллиона биографических цитат, и так далее

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

#Software #Architecture #SoftwareDevelopment #SystemDesign
9🔥5👍3
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async (Рубрика #ComputerScience)

Я часто рассказываю про то, что надо знать базу для того, чтобы развиваться в software engineering. Но обычно сложно описать, а что же входит в это определение "база" и является джентельменским набором хорошего инженера. Но тут мой коллега, Женя Козлов, крутой инженер, написал серию статей про процессоры, модели памяти, многозадачность и конкурентность. В этой серии разбираются моменты, которые полезны инженерам, что делают высоконагруженные системы, которые плотно работают с данными. Собственно, сам Женя у нас лидит команду, что занимается Statist - это наша система продуктовой аналитики, которая давно заменила нам Amplitude и по всем характеристикам тянет на data intensive application. В общем, я очень рекомендую вам эту серию статей от Жени, если вам интересно понять как компьютер обрабатывает под капотом те программы, что вы пишите на своем любимом языке программирования.

1) Начальный пост про многозадачность в OS
2) Про развитие процессоров и взаимодействие OS с ними
3) Про Hyper Threading
4) Процессы. Начало
5) Процессы в Linux
6) Потоки. Начало
7) Потоки в Linux
😍 Модели ввода-вывода. Универсальная(блокирующая) модель ввода-вывода
9) Multiplexed IO
10) Asynchronous IO

#Software #ComputerScience #Engineering #SRE #Architecture
🔥30👍108
ACM Professional Membership (Рубрика #ComputerScience)

Год назад я рассказывал как оформил себе ACM Professional Membership, для доступа к платформе O'Reilly и whitepapers, вышедших в журналах под эгидой Association for Computing Machinery (ACM). Год прошел и мне надо было оценить продлевать ее или нет - я решил, что она стоит своих денег - за прошедший год помимо большого количества бумажных книг я прочел еще тонну разных научных статей, а также пользовалься платформой O'Reilly в формате поиска книг, а также общения с их чатботом, что умеет строить ответы на основе лицензированных книг из этой библиотеки. В общем, подписка была продлена, а вам я хотел напомнить бенефиты, что в нее входят
1) Professional Membership
Эта подписка дает доступ к печатной и онлайн подпиской на "Communications of the ACM", доступ к MemberNet, TechNews, CareerNews, доступ к ACM Career и Job Center
2) ACM Skills Bundle Add-On
Тут есть доступ к онлайн-книгам, курсам, тренировочным видео от O'Reilly, Skillsoft Percipio, Pluralsight
3) ACM Digital Library Add-On
Доступ к ACM Digital Library, в котором есть 2 миллиона проприетарных и third-party текстов, больше миллиона биографических цитат, и так далее

Если вы тоже теперь решили стать членом Ассоциация вычислительной техники, то оформление подписки доступно здесь.

#Software #Architecture #SoftwareDevelopment #SystemDesign
8👍8🔥2