Шаг 124.
Задачи ComputerScience на Python.
Приложение 1. Дополнительные ресурсы
На этом шаге мы приведем ссылки на некоторые дополнительные ресурсы.
Что дальше? Мы изучили достаточно широкий спектр тем, а изучить их глубже вам помогут отличные ресурсы, ссылки на которые содержит это приложение.
1. Python
Как говорилось в самом начале нашего изложения, предполагается, что вы знаете язык Python хотя бы на среднем уровне. Здесь мы приведем две книги по Python,
чтобы вы поднялись на следующий уровень знания Python. Они не подходят для тех, кто только начинает изучать Python (в этом случае обратитесь к книге
Ceder N. The Quick Python Book (Manning, 2018)), но помогут пользователю Python среднего уровня стать опытным пользователем.
- Ramalho L. Fluent Python: Clear, Concise and Effective Programming. - O'Reilly, 2015:
- одна из немногих популярных книг о языке Python, которая адресована не программистам, чей уровень - между начальным и средним или высоким, она предназначена для специалистов среднего и более высокого уровня;
- охватывает широкий спектр расширенных возможностей Python;
- позволяет освоить рекомендуемые методы и научит вас писать "питонический" код;
- содержит множество примеров кода для каждой темы и разъясняет, как работает стандартная библиотека Python;
- местами несколько многословна, но эти фрагменты вполне можно пропустить.
- Beazley D. Jones В. К. Python Cookbook, 3rd ed. - O'Reilly, 2013:
- обучает решению повседневных задач программирования на примерах;
- некоторые задачи выходят далеко за рамки задач для начинающих;
- активно использует стандартную библиотеку Python;
- вышла достаточно давно и уже несколько устарела (в ней не применяются новейшие стандартные инструменты библиотеки), надеюсь, скоро выйдет четвертое издание.
2. Алгоритмы и структуры данных
Процитируем введение к этой книге: "Это не учебник по структурам данных и алгоритмам". В этой книге редко используется нотация О-большого (big-O notation) и нет
математических доказательств. Это скорее практическое руководство по важным методикам программирования. Поэтому есть смысл обзавестись и настоящим учебником, который не только даст
вам более формальное объяснение того, почему работают те или иные методы, но и послужит полезным справочным пособием. Онлайн-ресурсы хороши, но иногда полезно иметь информацию,
тщательно проверенную учеными и издателями.
- Кормен Т. X., Лейзерсон Ч. И., Ривеспг Р. Л., Штайн К. Алгоритмы: построение и анализ. 3-е изд. - М.: Вильямс, 2013 (Cormen Т., Leiserson С., Rivest R., Stein С.
Iпtroduction to Algorithms, 3rd ed. - МIТ Press, 2009), https://mitpress.mit.edu/9780262533058/:
- один из самых часто цитируемых текстов в области информатики, настолько исчерпывающий, что на него часто ссылаются по инициалам его авторов - CLRS;
- комплексное и строгое изложение;
- стиль преподнесения материала делает его не столь доступным, как другие тексты, тем не менее он является отличным справочным материалом;
- большинство алгоритмов описано на псевдокоде;
- сейчас готовится к выходу четвертое издание, и поскольку эта книга стоит дорого, возможно, стоит подождать его выхода.
- Седжвик Р., Уэйн К. Алгоритмы на Java. 4-е изд. - М.: Вильямс, 2013 (Sedgewick R., Wayne К. Algorithms. 4th ed. - Addison-Wesley Professional, 2011), https://algs4.cs.princeton.edu/home/:
- доступное и вместе с тем всеобъемлющее введение в алгоритмы и структуры данных;
- хорошо организованный материал с полными примерами всех алгоритмов на Java;
- алгоритмы классов, широко используемые в учебных курсах колледжей.
- Skiena S. The Algorithm Design Manual, 2nd ed. - Springer, 2011, https://www.algorist.com/:
- своим подходом эта книга отличается от других учебников по данной дисциплине;
- в книге содержится не очень много кода, акцент сделан на наглядном обсуждении правильного использования каждого алгоритма;
- читателю советуют, как найти собственный путь в области применения широкого круга алгоритмов.
- Бхаргава А. Грокаем алгоритмы: иллюстрированное пособие для программистов и любопытствующих. - СПб.: Питер, 2017 (Bhargava A. Grokking Algorithms. - Manning, 2016), https://www.manning.com/books/grokking-algorithms
(шаги по этой книге (пока не полные) можно найти здесь):
- графический подход к освоению основных алгоритмов, имеются забавные анимационные ролики, которые можно загрузить;
- это не справочник, а руководство для тех, кто впервые приступает к изучению отдельных важных тем.
3. Искусственный интеллект
Искусственный интеллект меняет наш мир. Здесь вы познакомились не только с некоторыми традиционными технологиями поиска, применяемыми искусственным интеллектом, такими как А* и
минимакс, но и с методиками из столь захватывающей субдисциплины, как машинное обучение, такими как k-средние и нейронные сети. Изучить искусственный интеллект глубже - очень
интересно, а еще это позволит подготовиться к следующей волне развития компьютерных технологий.
- Рассел С., Норвиг П. Искусственный интеллект: современный подход. 3-е изд. - М.: Вильямс, 2019 (Russell S., Nonig P. Artificial Intelligence: A Modern Approach, 3rd ed. - Pearson, 2010),
http://aima.cs.berkeley.edu/:
- всеобъемлющий учебник по ИИ, часто используемый в учебных курсах колледжей;
- широкий охват тем;
- превосходный репозиторий исходного кода (реализованные версии алгоритмов, описанных в книге на псевдокоде), доступный онлайн.
- Lucci S., Kopec D. Artificial Intelligence in the 21st Century, 2nd ed. - Mercury Learning and Information, 2015,
https://www.merclearning.com/titles/Artificial_Intelligence_in_the_21st_Century_Second_Edition.html:
- изложение доступно для тех, кто ищет более практичное и красочное руководство, чем у Рассела и Норвига;
- интересные зарисовки для практиков и множество ссылок на реальные приложения.
- NgA. Machine Learning, учебный курс (Стэнфордский университет), https://www.coursera.org/learn/machine-learning/:
- бесплатный онлайн-курс, который охватывает многие фундаментальные алгоритмы машинного обучения, в изложении всемирно известного эксперта;
- многие практики считают этот курс отличной отправной точкой в данной области.
4. Функциональное программирование
На Python можно программировать в функциональном стиле, но в общем-то язык для этого не предназначен. Можно углубиться в функциональное программирование на самом
Python, но может быть полезно работать и на чисто функциональном языке, а затем перенести некоторые идеи, которые вы извлекли из этого опыта, обратно в Python.
- Abelson H., Sussman G.J., Sussman J. Structure and Interpretation of Computer Programs. - MIT Press, 1996,
https://mitpress.mit.edu/9780262543231/structure-and-interpretation-of-computer-programs/:
- классическое введение в функциональное программирование, часто используемое во вводных курсах по информатике;
- четко структурированный, простой для освоения, чисто функциональный язык программирования;
- книга бесплатная, доступна онлайн.
- Khan A. Grokking Functional Programming. - Manning, 2018, https://www.manning.com/books/grokking-functional-programming:
- графически оформленное понятное введение в функциональное программирование.
- Mertz D. Functional Programming in Python. - O'Reilly, 2015,
https://www.oreilly.com/library/view/functional-programming-in/9781492048633/:
- книга представляет собой базовое введение в некоторые утилиты функционального программирования из стандартной библиотеки Python;
- распространяется бесплатно;
- содержит всего 37 страниц - не очень подробное руководство, но хорошая стартовая точка.
5. Полезные проекты с открытым исходным кодом для машинного обучения
Существует несколько полезных сторонних библиотек Python, оптимизированных для эффективного машинного обучения. Они предлагают больше возможностей и полезных свойств, чем вы,
вероятно, сможете разработать сами. Именно эти библиотеки (или их эквиваленты) следует использовать для серьезного машинного обучения или приложений по обработке больших данных.
- NumPy, https://numpy.org/:
- де-факто стандартная библиотека численных методов для Python;
- из соображений скорости работы библиотека реализована в основном на С;
- лежит в основе многих библиотек машинного обучения Python, включая TensorFlow и scikit-learn.
- TensorFlow, https://www.tensorflow.org:
- одна из самых популярных библиотек Python для работы с нейронными сетями.
- pandas, https://pandas.pydata.org/:
- популярная библиотека для импорта наборов данных в Python и манипулирования ими.
- scikit-learn, https://scikit-learn.org/stable/:
- хорошо протестированные полнофункциональные версии нескольких алгоритмов машинного обучения, описанных в этих шагах.
И многие, многие другие...
На следующем шаге мы поговорим об аннотациях типов.
Предыдущий шаг
Содержание
Следующий шаг