- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Первые 20 часов. Как быстро научиться… чему угодно - Джош Кауфман
Шрифт:
Интервал:
Закладка:
10 лет назад в колледже я прослушал два курса по основам программирования и поэтому немного смутился, когда понял, что не могу дать четкого определения этой дисциплине. Я помню некоторые из основных терминов, например переменная, цикл, ввод, вывод, функция, объектная ориентация, а также нечто под названием пузырьковая сортировка. Вот, пожалуй, и все.
Я должен был научиться писать программы на языке C++ и помню, как расстраивался, когда много часов искал пропущенную точку с запятой, из-за которой не работала моя программа. Я также помню слова преподавателя: «Вы никогда не будете использовать пузырьковую сортировку в реальных приложениях, но мы все равно будем ее изучать».
В процессе учебы я написал несколько простых программ, по необходимости: цель состояла в том, чтобы получить хорошую оценку, и я ее получил. К сожалению, программы, которые мы писали, были неприменимы в реальной жизни, а с тех пор я не имел дела с программированием. Несмотря на то что в моей памяти застряли несколько терминов, начинать придется с самого начала, с понимания основ.
Поскольку я не могу точно описать свои намерения, когда выражаю желание «научиться программировать», то предвижу трудности с определением целевого уровня мастерства. «Написать компьютерную программу» — это уже чуть конкретнее, но все равно бесполезно.
Пришла пора суммировать все, что я в данный момент знаю о программировании.
● Я знаю, что программисты «пишут» программы, что предполагает творческую задачу, которую можно решить разными способами.
● Программы часто называют «приложениями», и эти термины взаимозаменяемы.
● Когда компьютерные программы «запускаются» или «выполняются», то делают то, для чего они были написаны.
● Термины «вход» и «выход» запомнить легко, поскольку это обычные слова. Под входом понимают информацию или данные, которые использует программа, а под выходом — результат, получаемый по завершении ее работы.
● «Переменная» — это место для заполнения тем, что меняется. Вы можете создавать сколько угодно переменных, по своему желанию, и обозначать ими все что угодно.
● Сама «программа» представляет собой подробный набор инструкций и правил, которые указывают компьютеру, что нужно делать с входными данными. Когда программа заканчивает свое выполнение, вы получаете выходные данные.
● Программа «виснет» или выдает сообщение об ошибке, когда что-то идет не так и компьютер не может понять, что делать дальше.
Ну вот, уже кое-что. Получилось довольно грубое разбиение на элементы: вместо «программирования» мы теперь имеем три подчиненных понятия.
● Вход — информация, которая используется для выполнения процесса.
● Процесс — последовательность шагов, предпринимаемых программой в соответствии с входными данными.
● Выход — конечный результат выполнения программы.
Такое разбиение очень полезно. «Написать компьютерную программу» означает следующее: определить информацию, с которой вы хотите начать, установить последовательность шагов, точно описывающую действия компьютера с входными данными, а также определить выходные данные, предоставляемые вам компьютером «на выходе».
Представьте себе блок-схему, которая может служить полезной мысленной зацепкой, помогающей понять работу программы. Вы начинаете процесс с входных данных. Затем производите определенные действия в зависимости от выполнения тех или иных условий. Процесс заканчивается по достижении конца блок-схемы. Вы остаетесь с выходными данными: конечным результатом процесса, описанного блок-схемой.
Создание компьютерной программы аналогично разработке блок-схемы. Вы задаете те же вопросы:
● С чего я начинаю?
● С чего начинается процесс?
● Что происходит после этого? А дальше?
● Когда процесс заканчивается?
● Что я получу, когда процесс закончится?
Блок-схемы описывают ответы на эти вопросы в визуальной форме. Программы описывают то же в виде текста, однако суть от этого не меняется.
Аналогия с блок-схемой полезна также потому, что помогает объяснить и другие важные понятия.
Условные операторы — это выражения такого вида.
● Если X истинно/ложно, то делать Y.
● Если X не Y, то делать Z.
● Когда X истинно/ложно, то делать Y.
● Когда X не Y, то делать Z.
● Пока X истинно/ложно, делать Y.
● Пока X не Y, делать Z.
В данном случае X, Y и Z — это переменные, которые могут обозначать все что угодно. Переменные могут обозначать числа, как в элементарной алгебре, или слова. Иногда переменные — это отдельные буквы или символы, а иногда целые слова. В любом случае они обозначают объекты, с которыми мы работаем.
Условные операторы (ЕСЛИ, ТО, КОГДА И ПОКА — IF, THEN, WHEN и WHILE) подобны стрелкам с вопросами на блок-схеме. Представьте себе, что вы за рулем автомобиля: ЕСЛИ (IF) сигнал светофора красный, ТО (THEN) вы останавливаетесь. КОГДА (WHEN) сигнал светофора сменяется на зеленый, ТО (THEN) вы едете. КОГДА (WHEN) сигнал светофора желтый, ТО (THEN) вы тормозите, готовясь остановиться.
Имеет смысл остановиться на этих условных операторах немного подробнее, поскольку здесь есть несколько общих закономерностей. Условие истинно/ложно встречается довольно часто, а оператор ПОКА (WHILE) указывает не на одно конкретное действие, а на продолжение тех или иных действий.
Во всех случаях условный оператор содержит высказывание, которое определяет, нужно ли предпринимать какие-либо действия. Это высказывание называется условием и может принимать разные формы. Иногда условие представляет собой простое сравнение типа истинно/ложно (Сигнал светофора красный?), иногда математическое сравнение (Х больше 100?), а иногда содержит логическую конструкцию (Сигнал светофора НЕ красный?).
Назначение условия — определить, будет ли выполняться соответствующий процесс. Если условие истинно или достоверно, программа выполняет определенную команду. Если нет, то эта команда пропускается, и программа переходит к следующей.
Переменные типа истинно/ложно называются булевыми переменными — это красивое название обозначает то, что может принимать всего два значения. Да/нет и включено/выключено тоже относятся к булевым переменным. Булевы переменные играют большую роль в программировании, поскольку являются основой как простейших процессов (подобно истинно/ложно в блок-схемах), так и для включения/выключения крошечных электронных переключателей, из которых состоит компьютер.
В данном случае ПОКА (WHILE) — это особый тип условного оператора, который называется циклическим. Циклический оператор заставляет процесс повторяться до тех пор, пока не будет выполнено условие. Вернемся к аналогии управления автомобилем: ПОКА (WHILE) сигнал светофора красный, ехать нельзя.
Все очень просто, правда? Если провести аналогию между написанием компьютерной программы и составлением блок-схемы, этот процесс будет довольно легко представить.
И еще одно, последнее замечание: что будет, если компьютер зайдет в тупик, не зная, что ему делать, или команды, которые компьютер пытается выполнить в какой-то момент, не работают или не имеют смысла? Что произойдет?
В таком случае программа «вылетает» — останавливается и нередко вместо ожидаемого результата выдает сообщение об ошибке. Мы все знакомы с внушающим страх «синим экраном смерти» Windows или с сообщением «Ошибка 404: веб-страница не найдена» при поиске в интернете. Иногда происходит непредвиденное, компьютер «сходит с ума» и зависает.
Ваша задача как программиста предотвратить зависание и ошибки программы. Лучший способ — убедиться, что программа всегда имеет информацию, чтобы завершить процесс так, как планировалось, но это не всегда возможно. В тех случаях, когда неопределенности не избежать, полезно предусмотреть способ восстановления, если программа не может завершить процесс.
Эти операторы восстановления после ошибки называются исключениями, и они очень полезны. Их можно считать условными операторами, связанными с ошибкой: ЕСЛИ (IF) программа вылетает по ветке Х, ТО (THEN) делать Y вместо Х.
Исключения немного похожи на резервный генератор для больничного оборудования. Бо2льшую часть времени генератор просто присутствует, но не работает. Но если электроснабжение прервется, генератор включится, и больница будет использовать электроэнергию, вырабатываемую генератором, а не погрузится в полную темноту. Это спасет жизнь пациентам, подключенным к аппаратуре поддержания жизнедеятельности, которой требуется бесперебойное электропитание. Полный отказ опасен, и потому резервные планы очень важны.