Теоретический минимум по Computer Science

Теоретический минимум по Computer Science

Владстон Феррейра Фило

Описание

Хотите стать востребованным программистом? Эта книга Владстона Феррейра Фило – ваш путеводитель в мир компьютерных наук. Вы научитесь вычислительному мышлению, решению сложных задач и написанию эффективного кода. Книга содержит только самую необходимую информацию для каждого разработчика, включая практические примеры. Изучение компьютерных наук может быть увлекательным и полезным, даже в повседневной жизни. Узнайте, как оптимизировать задачи, используя упреждающую выборку и кэширование, и как параллелизм поможет вам на кухне! Эта книга – ваш ключ к успеху в программировании.

<p>Владстон Феррейра Фило</p><p>Теоретический минимум по Computer Science</p><p>Все что нужно программисту и разработчику</p>2018

Переводчик А. Логунов

Технический редактор Н. Суслова

Литературный редактор А. Петров

Художники Л. Егорова, С. Маликова, Р. Яцко

Корректоры Н. Сидорова, Г. Шкатова

Верстка Л. Егорова

© Перевод на русский язык ООО Издательство «Питер», 2018

© Издание на русском языке, оформление ООО Издательство «Питер», 2018

© Серия «Библиотека программиста», 2018

* * *

Друзья — это семья, которую мы сами себе выбираем. Я посвящаю книгу моим друзьям Ромуло, Лео, Мото и Крису, которые постоянно меня торопили, чтобы я ее, наконец, закончил.

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

Лорд Байрон, из письма будущей жене Аннабелле (1813 год).Их дочь Ада Лавлейс стала первым программистом
<p>Предисловие</p>

Каждый в нашей стране должен научиться программировать, потому что это учит думать.

Стив Джобс

Когда компьютеры начали менять мир, открывая перед людьми беспрецедентные возможности, расцвела новая наука — computer science. Она показала, как использовать компьютеры для решения задач. Это позволило нам использовать весь потенциал вычислительных машин. И мы достигли удивительных, просто сумасшедших результатов.

Computer science повсюду, но эта наука по-прежнему преподается как скучная теория. Многие программисты даже не изучали ее! Однако она крайне важна для эффективного программирования. Некоторые мои друзья не могут найти хорошего программиста, чтобы взять его на работу. Вычислительные мощности сегодня в изобилии, а вот людей, способных ими пользоваться, не хватает.

Рис. 1. Компьютерные задачи[1]

Эта книга — моя скромная попытка помочь миру, а также подтолкнуть вас к эффективному использованию компьютеров. В ней понятия computer science представлены в простой форме. Я свел научные подробности к минимуму. Хочется надеяться, что computer science произведет на вас впечатление, и ваш программный код станет лучше.

<p>Эта книга для меня?</p>

Если вы хотите щелкать задачи как орешки, находя эффективные решения, то эта книга для вас. От вас потребуется только чуть-чуть опыта в написании программного кода. Если вам приходилось этим заниматься и вы различаете элементарные операторы вроде for и while, то все в порядке. В противном случае вы найдете все необходимое (и даже больше) на каких-нибудь онлайновых курсах программирования[2]. Вы можете пройти такой курс всего за неделю, и притом бесплатно. Для тех же, кто уже знаком с информатикой, эта книга станет превосходным повторением пройденного и поможет укрепить знания.

<p>Но разве computer science не только для ученых?</p>

Эта книга — для всех. Она о вычислительном мышлении. Вы научитесь превращать задачи в вычислимые системы. Вы также будете использовать вычислительное мышление в повседневных задачах. Упреждающая выборка и кэширование помогут вам упростить процесс упаковки вещей. Освоив параллелизм, вы станете эффективнее управляться на кухне. Ну и, разумеется, ваш программный код будет просто потрясающим.

Да пребудет с вами сила! 

Влад
<p>Глава 1. Основы</p>

Информатика не более наука о компьютерах, чем астрономия — наука о телескопах. Информатика неразрывно связана с математикой.

Эдсгер Дейкстра

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

моделировать идеи в блок-схемах и псевдокоде;

отличать правильное от неправильного при помощи логики;

выполнять расчеты;

уверенно вычислять вероятности.

Похожие книги

Цифровой этикет. Как не бесить друг друга в интернете

Ольга Владимировна Лукинова

Книга "Цифровой этикет" Ольги Лукиновой – это практическое руководство по онлайн-этикету. Автор собирает и систематизирует правила поведения в сети, основываясь на принципах удобства, безопасности, экономии ресурсов и уважения личных границ. Книга основана на анализе исторических правил, делового этикета и обратной связи от подписчиков Telegram-канала "Цифровой этикет". Она помогает избежать неловкостей, повысить эффективность работы и улучшить взаимоотношения в онлайн-среде. Книга полезно для всех, кто хочет эффективно и вежливо общаться в интернете, будь то деловые партнеры, коллеги или друзья.

Как создаются игры

Григорий Радовильский, Наталья Аркадьевна Андрианова

Данное руководство предназначено для начинающих в игровой индустрии. Авторы, Григорий Радовильский и Наталья Аркадьевна Андрианова, детально описывают внутренние процессы разработки игр, делясь своим опытом. Книга охватывает все аспекты, от создания и продвижения игр до анализа текущего состояния индустрии, существующих профессий и актуальных трендов. Вы узнаете, как развивалась индустрия от первых игровых приставок до современных консолей и ПК, и как технологические достижения повлияли на процесс создания игр. Понимание основных этапов и профессий, задействованных в разработке, поможет вам лучше ориентироваться в этой сфере и сделать осознанный выбор карьерного пути.

SEO для Чайников

Поля Блю

Этот практический курс "SEO для Чайников" детально рассматривает архитектуру поисковых систем Яндекса и Google. Вы познакомитесь с процессами индексирования, обработки запросов, ранжирования результатов поиска, и освоите ключевые принципы продвижения сайтов. Курс подходит для начинающих, желающих понять, как работают поисковые системы и как эффективно продвигать свои сайты. Узнайте, как Яндекс и Google обрабатывают запросы, как работают поисковые роботы и как оптимизировать сайты для улучшения позиций в результатах поиска.

Rust на примерах

Коллектив авторов

Данное пособие, "Rust на примерах", представляет собой практическое руководство по изучению языка программирования Rust. Пособие содержит множество примеров, иллюстрирующих различные концепции языка, включая работу со стандартной библиотекой. Начинающие программисты найдут здесь подробные объяснения и пошаговые инструкции, необходимые для освоения основ Rust. Учебник охватывает такие ключевые темы, как примитивные типы данных, пользовательские типы, переменные, типы, преобразования, выражения, управление потоком, функции, модули, контейнеры, Cargo, атрибуты, обобщения, правила областей видимости, Traits, макросы, обработка ошибок, типы стандартной библиотеки, стандартные потоки, тестирование, unsafe-код, совместимость, и метаданные. Пособие также включает примеры Hello World и форматированного вывода, а также подробные комментарии к коду. Изучение Rust с помощью этого учебника станет эффективным и увлекательным процессом.