Альтхофф, Кори.
Сам себе программист. Как научиться программировать и устроиться в Ebay? / Кори Альхофф ; [пер. с англ. М.А. Райтмана]. - Москва : Эксмо, 2022. - 208 с.
Автор книги всего за год научился программировать, что само по себе немало. Однако Кори Альтхофф пошёл дальше, и, научившись программировать, он устроился разработчиком в одну из самых серьёзных современных IT-компаний - Ebay. Как ему удалось? Читайте эту книгу, изучайте программирование на языке Python по уникальной авторской методике - вам это тоже по силам!
FizzBuzz: тест на программирование, используемый на собеседованиях для отсеивания кандидатов.
Linux: операционная система с открытым исходным кодом, используемая на большинстве серверов по всему миру.
Unix: операционная система, созданная в 1970-х годах. Операционная система macOS корпорации Apple основана на Unix.
Unix-подобные операционные системы: Unix и Linux.
Windows: операционная система корпорации Microsoft.
Графический интерфейс пользователя (ГИП): часть операционной системы, которую вы видите, когда смотрите на экран компьютера.
Операционная система: программа, которая является посредником между физическими компонентами компьютера и вами.
Открытый исходный код: характеристика программного обеспечения, которое не принадлежит компании или отдельному лицу, но вместо этого поддерживается группой добровольцев.
Сервер: компьютер или компьютерная программа, которая выполняет такие задачи, как хостинг веб-сайта.
Python: простой в чтении язык программирования с открытым исходным кодом. Создан Гвидо ван Россумом и назван в честь британской комедийной группы «Монти Пайтон».
Высокоуровневый язык программирования: язык программирования, который больше похож на английский, чем язык программирования низкого уровня.
Код: инструкции компьютеру, который пишут программисты.
Низкоуровневый язык программирования: язык программирования, запись которого ближе к двоичному формату (0 и 1), чем записи языка программирования высокого уровня.
Программирование: написание инструкций, которые выполняет компьютер.
Язык ассемблера: тип трудного для чтения языка программирования.
Bool: тип данных логических объектов.
Float: тип данных вещественных чисел (чисел с десятичной точкой).
Int: тип данных целых чисел.
None: объект с типом данных NoneType. Его значением всегда является None.
NoneType: тип данных объектов None.
Str: тип данных строки.
Арифметический оператор: категория операторов, используемых в арифметических выражениях.
Ветвь: строительные блоки составных инструкций. Ветвь состоит из двух или более строк кода: заголовка, за которым следует тело.
Выражение: код с оператором между двумя операндами.
Декрементирование: уменьшение значение переменной.
Заголовок: строка кода в ветви, содержащая ключевое слово, за которым следует двоеточие, и последовательность из одной или нескольких строк с отступом.
Инкрементирование: увеличение значения переменной.
Инструкция elif: инструкции, которые можно бесконечно добавлять в инструкцию if-else, позволяя последней принимать дополнительные решения.
Инструкция else: вторая часть инструкции if-else.
Инструкция if: вторая часть инструкции if-else.
Инструкция if-else: способ, которым программисты говорят «если это произойдёт, сделайте это, в противном случае сделайте то».
Инструкция: команда или вычисление.
Исключение: ошибка, не являющаяся фатальной.
Ключевое слово: слово в языке программирования, имеющее особый смысл.
Комментарий: строка (или часть строки) кода, написанная на русском (или другом) языке, которой предшествует специальный символ, сообщающий используемому вами языку программирования, что эту строку (или часть строки) кода следует проигнорировать.
Константа: значение, которое никогда не изменяется.
Логический оператор: категория операторов, оценивающих значения двух выражений и возвращающих либо True, либо False.
Логический: объект с типом данных bool. Его значением является либо True(истина), либо False (ложь).
Объект: значение с тремя свойствами: идентификатором, типом данных и значением.
Операнд: значение с любой стороны от оператора.
Оператор присваивания: символ = в Python.
Оператор сравнения: категория операторов, которые используются в выражении, принимающем значение либо True(истина), либо False (ложь).
Оператор: символы, использующиеся в выражении с операндами.
Переменная: имя, которому с помощью оператора присваивания присвоено значение.
Порядок операций: набор правил, используемых в математике при подсчёте выражений.
Простая инструкция: инструкция, которую можно выразить с помощью одной строи кода.
Псевдокод: ненастоящий код, используемый для иллюстрации примера.
Символ: один знак, например, a или 1.
Синтаксис: комплекс правил, принципов и процессов, определяющих структуру предложений в данном языке, в частности, порядок слов.
Синтаксическая ошибка: фатальная ошибка в программировании, вызванная нарушением синтаксиса языка программирования.
Составная инструкция: инструкция, обычно занимающая больше одной строки кода.
Строка: объект с типом данных str. Значением строки является последовательность одного или больше символов, помещенных в кавычки.
Структура управления потоком: блок кода, который принимает решения, анализируя значения переменных.
Тело: строка кода внутри ветви, которой управляет заголовок.
Тип данных: категория данных.
Условная инструкция: код, выполняющий дополнительный код при наступлении определённых условий.
Целое: объект с типом данных int. Его значением является целое число.
Число с плавающей точкой: объект с типом данных float. Его значением является вещественное число (число с десятичной точкой).
Встроенная функция: функция, поставляющаяся с Python.
Вызов: передача функции вводных, необходимые для выполнения указаний и возвращения вывода.
Глобальная область видимости: область видимости переменной, которую можно найти и изменить откуда угодно в программе.
Глобальная переменная: переменная с глобальной областью видимости.
Локальная область видимости: область видимости переменной, которую можно найти и изменить только из функции (или класса), внутри которой переменная была определена.
Область видимости: то, где переменную можно найти и изменить.
Обработка исключений: концепция программирования, позволяющая вам тестировать программу на возможные ошибки, «перехватывать» исключения, если таковые возникают, и решать, что делать дальше.
Обязательный параметр: необходимый параметр.
Опциональный параметр: необязательный параметр.
Параметр: данные, переданные в функцию.
Соглашение: согласованный способ делать что-то.
Строка документации: объясняет, что делает функция, и какие она требует парамтеры.
Функции: составные инструкции, которые могут принимать данные ввода, выполнять указания и возвращать данные вывода.
Значение: значение, связанное в словаре с ключом.
Изменяемый: когда контейнер является изменяемым, это значит, что его содержимое можно изменить.
Индекс: число, представляющее позицию элемента в итерируемом объекте.
Итерирование: объект поддерживает итерирование, если к каждому его элементу можно получить доступ через цикл.
Итерируемые объекты: объекты, поддерживающие итерирование, например, строки, списки и кортежи.
Ключ: значение, при помощи которого находят значение в словаре.
Метод: функция, тесно связанная с определённым типом данных.
Неизменяемый: если контейнер является изменяемым, это значит, что его содержимое нельзя изменить.
Отображение: связывание одного объекта с другим.
Пара ключ-значение: ключ, связанный в словаре со значением.
Словарь: встроенный контейнер для хранения объектов. Связывает один объект, называемый ключом, с другим объектом - значением.
Список: контейнер, хранящий объекты в определенном порядке.
Извлечение среза: способ вернуть новый итерируемый объект, состоящий из подмножества элементов другого итерируемого объекта.
Конечный индекс: индекс, на котором заканчивается извлечение среза.
Начальный индекс: индекс, с которого начинается извлечение среза.
Отрицательный индекс: индекс (должен быть отрицательным числом), который используется для нахождения элементов в итерируемом объекте справа налево, а не слева направо.
Управляющие символы: сообщают Python, что знак, перед которым они помещены, в данном случае е имеет специального значения, а предназначен для представления обычного символа.
Бесконечный цикл: цикл, который никогда не завершается.
Внешний цикл: цикл, содержащий вложенный цикл.
Внутренний цикл: цикл, вложенный в другой цикл.
Инструкция break: инструкция с ключевым словом break, использующаяся для прекращения цикла.
Инструкция continue: инструкция с ключевым словом continue, использующаяся, чтобы прервать текущую итерацию цикла и продолжить со следующей итерации.
Итерирование (перебор): использование цикла для получения доступа к каждому элементу итерируемого объекта.
Переменная индекса: переменная, хранящая целое число, которое представляет индекс в итерируемом объекте.
Цикл for: цикл, перебирающий итерируемый объект - например, строку, список, кортеж или словарь.
Цикл while: цикл, выполняющийся код до тех пор, пока выражение принимает значение True.
Цикл: фрагмент кода, непрерывно выполняющий инструкции, пока удовлетворено определённое в коде условие.
Встроенные модули: модули, которые поставляются в составе Python и содержат важную функциональность.
Импортирование модуля: строка кода, которая сообщает Python, где искать нужный модуль.
Модуль: другое название файла с кодом на языке Python.
CSV-файл: файл с расширением .csv, внутри которого данные разделяются с помощью запятых (CSV расшифровывается ка Comma Separated Values - значения, разделяемые запятыми). Часто используется в программах наподобие Excel, обрабатывающих электронные таблицы.
Запись: добавление или изменение данных в файле.
Инструкция with: составная инструкция, автоматически выполняющая действие после того, как интерпретатор Python проходит её.
Путь к файлу: расположение в системе хранения данных (например, на жёстком диске) компьютера, в котором сохранён файл.
Разделитель: символ (например, запятая), используемый для разделения данных в CSV-файле.
Файловый объект: объект, который может использоваться для чтения или записи в файл.
Чтение: получение доступа к содержимому файла.
Глобальное состояние: значение глобальных переменных в программе при её работе.
Классы: механизм, позволяющий программисту классифицировать и сгруппировывать похожие объекты.
Магический метод: метод, который Python использует в разных ситуациях, например, при создании объекта.
Методы: тело в классах. Методы похожи на функции, только их определяют внутри класса и вызывают только в объекте, созданном классом.
Объектно-ориентированное программирование: парадигма программирования, где вы определяете объекты, которые взаимодействуют друг с другом.
Парадигма программирования: стиль программирования.
Переменные экземпляра: переменные, которые принадлежат объекту.
Побочный эффект: изменение состояния глобальной переменной.
Процедурное программирование: стиль программирования, в котором пишется последовательность шагов по направлению к решению, и каждый шаг изменяет состояние программы.
Создание экземпляра класса: создание нового объекта при помощи класса.
Состояние: это значение переменных в программе во время её работы.
Функциональное программирование: решает проблемы процедурного программирования с помощью устранения глобального состояния, передавая его от функции к функции.
Абстракция: процесс «отнятия или удаления у чего-то характеристик с целью сведения его к набору основных, существенных характеристик».
Дочерний класс: класс, который наследуется.
Инкапсуляция: относится к двум концепциям. Первая заключается в том, что в объектно-ориентированном программировании переменные (состояние) и методы (для изменения состояния либо выполнения вычислений, использующих состояние) группируются в единое целое - объект. Вторая концепция, собственно инкапсуляция, заключается в сокрытии внутренних данных класса для предотвращения получения клиентом прямого доступа к этим данным.
Клиент: код вне класса, который использует объект.
Композиция: композиция моделирует отношение «имеет», сохраняя объект в другом объекте как переменную.
Наследование: при генетическом наследовании вы наследуете свойства вроде цвета глаз от родителей. Аналогично, когда вы создаете класс, он может наследовать методы и переменные от другого класса.
Переопределение метода: способность дочернего класса изменять реализацию метода, унаследованного от его родительского класса.
Полиморфизм: полиморфизмом называют «способность (в программировании) представлять один и тот же интерфейс для разных базовых форм (типов данных).
Родительский класс: класс, от которого осуществляется наследование.
Четыре столпа объектно-ориентированного программирования: четыре главные концепции в объектно-ориентированном программировании: наследование, полиморфизм, абстракция и инкапсуляция.
Закрытый метод: метод, к которому объект может получить доступ, а клиент - нет.
Закрытая переменная: переменная, к которой объект может получить доступ, а клиент - нет.
Открытая переменная: переменная, к которой клиент может получить доступ.
Переменная класса: переменные класса принадлежат объекту класса и объектам, которые он создаёт.
Переменная экземпляра: переменная экземпляра принадлежит объекту.
$PATH: когда вы вводите команду в bash, оболочка ищет эту команду во всех каталогах, хранящихся в переменной окружения $PATH.
bash: программа, встроенная в большинство Unix-подобных операционных системах, в которую вы вводите инструкции для выполнения вашей операционной системой.
Абсолютный путь: указывает на расположение файла или каталога, начиная с корневого каталога.
Вертикальная черта: символ ǀ. В Unix-подобных операционных системах вы можете использовать его для передачи вывода команды в другую команду в качестве её ввода.
Интерфейс командной строки: программа, в которую вы вводите инструкции для выполнения вашей операционной системой.
Каталог: другое название папки на компьютере.
Командная строка (в Windows): интерфейс командной строки, встроенный в операционную систему Windows.
Командная строка: другое название интерфейса командной строки.
Относительный путь: указывает на расположение файла или каталога, начиная с текущего рабочего каталога.
Переменные окружения: переменные, в которых хранить данные операционная система, а также другие программы.
Пользователь: человек, пользующийся операционной системой.
Путь: способ представить место файла или каталога в операционной системе.
Рабочий каталог: текущий каталог, в котором вы находитесь.
Разрешения: операции, которые разрешено выполнять пользователям.
Суперпользователь (пользователь с правами root): пользователь с наивысшим уровнем полномочий.
Жадный: регулярное выражение, которое будет с жадностью пытаться найти столько совпадений, сколько сможет.
Нежадный: нежадное регулярное выражение находит наименьшее количество совпадений.
Пасхальное яйцо: сообщение, спрятанное в коде.
Регулярное выражение: «последовательность символов, определяющая поисковый шаблон».
$PYTHONPATH: Python ищет модули в списке папок, который хранится в переменной окружения $PYTHONPATH.
Apt-get: менеджер пакетов, который поставляется с Ubuntu.
Pip: менеджер пакетов для Python.
PyPI: веб-сайт, который содержит пакеты Python.
Site-packages: папка в $PYTHONPATH. Эта папка - место, куда pip устанавливает пакеты.
Веб-фреймворк: программа, помогающая создавать веб-сайты.
Виртуальное окружение: позволяет хранить пакеты Python для разных программистских проектов раздельно.
Зависимости: программы, от которых зависит должная работа программы.
Метаданные: данные о программе.
Пакет: программное обеспечение, «упакованное» для распространения.
Система управления пакетами (менеджер пакетов): программа, устанавливающая другие программы и управляющая ими.
Git: популярная система управления версиями.
GitHub: веб-сайт, хранящий код в облаке.
SVN: популярная система управлениями версиями.
Извлечение данных: обновление локального репозитория согласно изменениям в центральном репозитории.
Индексирование: указание Git, какие файлы (с изменениями) следует поместить в центральный репозиторий.
Кодовая база: папки и файлы, из которых формируется ваше программное обеспечение.
Локальный репозиторий: репозиторий на вашем компьютере.
Номер состояния: уникальная последовательность символов, используемая Git для идентификации состояния.
Помещение данных: обновление центрального репозитория согласно изменениям в локальном репозитории.
Репозиторий: структура данных, созданная системой управления версиями, наподобие Git, которая отслеживает все изменения в вашем программистском проекте.
Система управления версиями: программа, разработанная с целью помогать вам без труда работать над проектами совместно с другими программистами.
Состояние: версия вашего проекта, сохраняемая Git.
Сохранение состояния: написание команды, указывающей Git записывать изменения, которые вы внесли в свой репозиторий.
Структура данных: способ организовывать и хранить информацию. Списки и словари являются примерами структур данных.
Центральный репозиторий: репозиторий, размещенный на веб-сайте вроде GitHub, с которым обмениваются информацией все локальные репозитории для поддержания синхронизации друг с другом.
HTML: язык, который организовывает структуру сайта.
HTML-элемент: аналогичен ключевому слову в программировании - инструктирует браузер сделать что-либо.
Парсер веб-контента: программа, извлекающая данные с веб-сайта.
Парсинг: парсинг означает принятие формата вроде HTML и придание ему структуры при помощи языка программирования. К примеру, превращение данных в объект.
FIFO: сокращение от англ. First-in-first out - «первым вошел - первым вышел».
LIFO: сокращение от англ. Last-in-first-out - «последним вошел - первым вышел».
Pop: удаление элемента из стека.
Push: добавление элемента в стек.
Очередь: структура данных вида «первым вошел - первым вышел».
Стек: структура данных вида «последним вошел - первым вышел».
Структура данных «первым вошел - первым вышел»: структура данных, в которой первый помещенный элемент является первым извлекаемым.
Структура данных «последним вошел - первым вышел»: вид структуры данных, при котором последний помещенный элемент является первым извлекаемым.
Структура данных: формат, используемый для хранения и организации информации.
Эпоха: момент во времени, используемый в роли ссылки.
Алгоритм: серия шагов, которым следуют для решения проблемы.
Анаграмма: слово, созданное путём перестановки букв другого слова.
Базовый случай: условие, завершающее рекурсивный алгоритм.
Итерационный алгоритм: решает проблемы путём повторения шагов снова и снова, обычно используя цикл.
Палиндром: слово, которое одинаково записывается в обоих направлениях.
Поисковый алгоритм: алгоритм, который находит информацию в структуре данных, например, в списке.
Последовательный поиск: простой поисковый алгоритм для поиска информации в структуре данных, который проверяет каждый элемент в ней на предмет его соответствия тому, что алгоритм ищет.
Рекурсивный (рекурретный) алгоритм: рекурсивные алгоритмы используют функции, которые вызывают сами себя.
Рекурсия: способ решения проблем, который предполагает разбивание проблемы на все меньшие и меньшие фрагменты, пока проблема не решается элементарно.
Анализ кода: когда другой программист читает ваш код и составляет на него отзыв.
Логирование: практика записи данных во время работы программного обеспечения.
НПС: принцип программирования «Не повторяй себя».
Ортогональность: «Этот термин был введен в информатике для обозначения некой разновидности независимости или несвязанности. Два или более объекта ортогональны, если изменения, вносимые в один из них, не влияют на любой другой. В грамотно спроектированной системе код базы данных будет ортогональным к интерфейсу пользователя: вы можете менять интерфейс пользователя без воздействия на базу данных и менять местами базы данных, не меняя интерфейса».
Отладчик: программа, позволяющая остановить выполнение кода и просмотреть вашу программу строка за строкой, отмечая значения переменных в разных частях программы.
Поверхность атаки: различные области программы, откуда хакеры могут извлечь данные или атаковать вашу систему.
Производственный код: код используемого людьми продукта.
Производство: отправить программное обеспечение в производство - значит вывести его в мир.
Тестирование: процесс проверки того, что программа «соответствует требованиям, сопровождающим ее проектирование и разработку, корректно отвечает на все вида ввода, выполняет свои функции за приемлемо количество времени, пригодна к использованию, может быть установлена и запущена в предполагаемых окружениях, а также достигает результата, требуемого от неё заинтересованными сторонами».