Книга: HeadFirstKotlin
На главную: Предисловие
На главную: Предисловие

Head First

Kotlin

Wouldn't it be dreamy if there

were a book on Kotlin that was

easier to understand than the

space shuttle fl ight manual?

I guess it's just a fantasy…

Dawn Griffiths

David Griffiths

Head First

Head First

Kotlin

Kotlin

Wouldn't it be dreamy if there

Как бы было хорошо

were a book on Kotlin that was

найти книгу о языке Kotlin,

easier to understand than the

которая будет веселее визита к зубному

space shuttle fl ight manual?

врачу и понятнее налоговой декларации...

I guess it's just a fantasy…

Наверное, об этом можно

только мечтать...

Dawn Griffiths

Дон Гриффитс

David Griffiths

Дэвид Гриффитс

2020

Дон Гриффитс, Дэвид Гриффитс

Head First. Kotlin

Перевел с английского Е. Матвеев

Заведующая редакцией

Ю. Сергиенко

Ведущий редактор

К. Тульцева

Литературный редактор

А. Руденко

Художественный редактор

В. Мостипан

Корректоры

С. Беляева, Б. Файзуллин

Верстка

Н. Лукьянова

ББК 32.973.2-018.1

УДК 004.43

Гриффитс Дон, Гриффитс Дэвид

Г85 Head First. Kotlin. — СПб.: Питер, 2020. — 464 с.: ил. — (Серия «Head First O’Reilly»).

ISBN 978-5-4461-1335-4

Вот и настало время изучить Kotlin. В этом вам поможет уникальная методика Head First, выходящая за рамки синтаксиса и ин-

струкций по решению конкретных задач. Хотите мыслить, как выдающиеся разработчики Kotlin? Эта книга даст вам все необходи-

мое — от азов языка до продвинутых методов. А еще вы сможете попрактиковаться в объектно-ориентированном и функциональном

программировании. Если вы действительно хотите понять, как устроен Kotlin, то эта книга для вас!

Почему эта книга не похожа на другие? Подход Head First основан на новейших исследованиях в области когнитивистики и теории

обучения. Визуальный формат позволяет вовлечь в обучение мозг читателя лучше, чем длинный текст, который вгоняет в сон. Зачем

тратить время на борьбу с новыми концепциями? Head First задействует разные каналы получения информации и разрабатывался с

учетом особенностей работы вашего мозга.

16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)

ISBN 978-1491996690 англ.

Authorized Russian translation of the English edition of Head First Kotlin

(ISBN 9781491996690) © 2019 Dawn Griffiths and David Griffiths.

This translation is published and sold by permission of O’Reilly Media, Inc.,

which owns or controls all rights to publish and sell the same.

ISBN 978-5-4461-1335-4

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

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

© Серия «Head First O’Reilly», 2020

Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой

бы то ни было форме без письменного разрешения владельцев авторских прав.

Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду

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

и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступность

материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были дей-

ствующими.

Изготовлено в России. Изготовитель: ООО «Прогресс книга». Место нахождения и фактический адрес:

194044, Россия, г. Санкт-Петербург, Б. Сампсониевский пр., д. 29А, пом. 52. Тел.: +78127037373.

Дата изготовления: 09.2019. Наименование: книжная продукция. Срок годности: не ограничен.

Импортер в Беларусь: ООО «ПИТЕР М», 220020, РБ, г. Минск, ул. Тимирязева, д. 121/3, к. 214, тел./факс: 208 80 01.

Налоговая льгота — общероссийский классификатор продукции ОК 034-2014, 58.11.12.000 — Книги печатные

профессиональные, технические и научные.

Подписано в печать 19.09.19. Формат 84×108/16. Бумага писчая. Усл. п. л. 48,720. Тираж 1500. Заказ 0000.

Содержание (сводка)

Введение

21

1

Первые шаги. Не теряя времени

31

2

Базовые типы и переменные. Из жизни переменных

61

3

Функции. За пределами main

89

4

Классы и объекты. Высокий класс

121

5

Подклассы и суперклассы. Наследование

121

6

Абстрактные классы и интерфейсы. Серьезно о полиморфизме

185

7

Классы данных. Работа с данными

221

8

Null и исключения. В целости и сохранности

249

9

Коллекции. Порядок превыше всего

281

10

Обобщения. На каждый вход знай свой выход

319

11

Лямбда-выражения и функции высшего порядка.

Обработка кода как данных

325

12

Встроенные функции высшего порядка.

Расширенные возможности

393

Приложение I. Сопрограммы. Параллельный запуск

427

Приложение II. Тестирование. Код под контролем

439

Приложение III. Остатки. Топ-10 тем, которые мы не рассмотрели

445

Содержание (настоящее)

Введение

Ваш мозг и Kotlin. Вы сидите за книгой и пытаетесь что-нибудь

выучить, но ваш мозг считает, что вся эта писанина не нужна. Мозг

говорит: «Выгляни в окно! На свете есть более важные вещи, на-

пример сноуборд». Как заставить мозг изучить программирование

на Kotlin?

22

23

И мы знаем, о чем думает ваш мозг

23

Метапознание: наука о мышлении

25

Вот что сделали МЫ

Примите к сведению

28

Научные редакторы

29

Благодарности

30

5

содержание

Не теряя времени

1 Первые шаги

Kotlin впечатляет. С выхода самой первой версии Kotlin впечатляет програм-

мистов своим удобным синтаксисом, компактностью, гибкостью и мощью.

В этой книге мы научим вас строить собственные приложения Kotlin, а для

начала покажем, как построить простейшее приложение и запустить его. Попутно

вы познакомитесь с базовыми элементами синтаксиса Kotlin: командами, циклами

и условными конструкциями. Приготовьтесь, путешествие начинается!

Раз вы можете выбирать плат-

форму, для которой должен компи-

лироваться код, это означает, что

ваш код Kotlin может выполняться

на серверах, в брауз

ерах, на мобиль-

ных устройствах и т. д.

elliJ IDEA

Int

6

содержание

Базовые типы и переменные

Из жизни переменных

2От переменных зависит весь ваш код. В этой главе мы заглянем «под

капот» и покажем, как на самом деле работают переменные Kotlin. Вы по-

знакомитесь с базовыми типами, такими как Int, Float и Boolean, и узнаете, что

компилятор Kotlin способен вычислить тип переменной по присвоенному ей

значению. Вы научитесь пользоваться строковыми шаблонами для построения

сложных строк с минимумом кода, и узнаете, как создать массивы для хране-

ния нескольких значений. Напоследок мы расскажем, почему объекты играют

такую важную роль в программировании Kotlin.

Byte Short

Int

Long

REF

5

x

Int

var Int

7

содержание

Функции

За пределами main

3 А теперь пришло время поближе познакомиться с функци-

ями. До сих пор весь написанный нами код размещался в функции main

приложения. Но если вы хотите, чтобы код был лучше структурирован

и проще в сопровождении, необходимо знать, как разбить его на от-

дельные функции. В этой главе на примере игры вы научитесь писать

функции и взаимодействовать с ними из приложения. Вы узнаете, как пи-

сать компактные функции единичных выражений. Попутно вы научитесь

перебирать диапазоны и коллекции в мощных циклах for.

"Rock"

"Paper"

String

String

REF

"Scissors"

options

REF

REF

REF

String

val Array<String>

0

1

2

8

содержание

Высокий класс

4 Классы и объекты

Пришло время выйти за границы базовых типов Kotlin. Рано

или поздно базовых типов Kotlin вам станет недостаточно. И здесь на помощь

приходят классы. Классы представляют собой шаблоны для создания ваших

собственных типов объектов и определения их свойств и функций. В этой главе

вы научитесь проектировать и определять классы, а также использовать их

для создания новых типов объектов. Вы познакомитесь с конструкторами,

блоками инициализации, get- и set-методами и научитесь использовать их для

защиты свойств. В завершающей части вы узнаете о средствах защиты данных,

встроенных в весь код Kotlin. Это сэкономит ваше время, силы и множество

нажатий клавиш.

Один класс

Dog

name

weight

breed

bark()

Много объектов

Под капотом

name: Fido

Dog

REF

weight: 70

name

breed: Mixed

weight

myDog

breed

Dog

bark()

var Dog

9

содержание

Подклассы и суперклассы

Наследование

5 Вам когда-нибудь казалось, что если немного изменить

тип объекта, то он идеально подойдет для ваших целей?

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

создавать подклассы и наследовать свойства и функции суперклассов.

Вы узнаете, как переопределять функции и свойства, чтобы классы

работали так, как нужно вам, и когда это стоит (или не стоит) делать. На-

конец, вы увидите, как наследование помогает избежать дублирования

кода, и узнаете, как сделать код более гибким при помощи полиморфизма.

Animal

image

food

habitat

hunger

makeNoise()

eat()

roam()

sleep()

Hippo

Canine

image

food

roam()

habitat

makeNoise()

eat()

Wolf

image

food

habitat

makeNoise()

eat()

10

содержание

Абстрактные классы и интерфейсы

Серьезно о полиморфизме

6 Иерархия наследования суперклассов — только первый шаг.

Чтобы в полной мере использовать возможности полиморфизма, следует

проектировать иерархии с абстрактными классами и интерфейсами. В этой

главе вы узнаете, как при помощи абстрактных классов управлять тем, какие

классы могут или не могут создаваться в вашей иерархии. Вы увидите, как

с их помощью заставить конкретные подклассы предоставлять собственные

реализации. В этой главе мы покажем, как при помощи интерфейсов органи-

зовать совместное использование поведения в независимых классах,

(interface)

а заодно опишем нюансы операторов is, as и when.

Roamable

roam()

Vehicle

roam()

Работайте со мной

как с Wolf — вам это

известно.

REF

item

Оператор

val Roamable

Wolf

11

содержание

Работа с данными

7 Классы данных

Никому не хочется тратить время и заново делать то, что уже

было сделано. В большинстве приложений используются классы, предназна-

ченные для хранения данных. Чтобы упростить работу, создатели Kotlin предложили

концепцию класса данных. В этой главе вы узнаете, как классы данных помогают

писать более элегантный и лаконичный код, о котором раньше можно было

только мечтать. Мы рассмотрим вспомогательные функции классов данных

и узнаем, как разложить объект данных на компоненты. Заодно расскажем,

как значения параметров по умолчанию делают код более гибким, а также

познакомим вас с Any — предком всех суперклассов.

Any

Оператор

equals()

hashCode()

toString()

...

YourClassHere

По умолчанию

функция equals

проверяет,

являются ли два

объекта одним

фактическим

объектом.

12

содержание

Null и исключения

В целости и сохранности

8 Все мечтают о безопасности кода, и, к счастью, она была

заложена в основу языка Kotlin. В этой главе мы сначала покажем,

что при использовании null-совместимых типов Kotlin вы вряд ли когда-ли-

бо столкнетесь с исключениями NullPointerException за все время про-

граммирования на Kotlin. Вы научитесь использовать безопасные вызовы

и узнаете, как Элвис-оператор спасает от всевозможных бед. А когда мы

разберемся с null, то вы сможете выдавать и перехватывать исключения

как настоящий профессионал.

?:

Большое

спасибо.

«Элвис-оператор»

А теперь я ПОПРОБУЮ

выполнить этот риско-

ванный трюк...

13

содержание

Коллекции

Порядок превыше всего

9 Хотели бы вы иметь структуру данных более гибкую, чем мас-

сив? Kotlin содержит подборку удобных коллекций, гибких и предоставляющих

больше возможностей для управления хранением и управлением группами

объектов. Хотите список с автоматически изменяемым размером, к которому

можно добавлять новые элементы снова и снова? С возможностью сортиров-

ки, перетасовки или перестановки содержимого в обратном порядке? Или

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

малейших усилий с вашей стороны? Если вас заинтересовало все это (а также

многое другое) — продолжайте читать.

Tea

REF

0

String

1

REF

Coffee

REF

Список (List)

2

String

разрешает

дубликаты.

List

List позволяет дублировать значения

ValueA

ValueB

REF

REF

REF

Ассоциативные массивы

“KeyA”

“KeyB”

“KeyC”

Map

Ассоциативный массив (Map)

разрешает дубликаты значений,

но не дубликаты ключей.

14

содержание

Обобщения

На каждый вход знай свой выход

10 Всем нравится понятный и предсказуемый код. А один из спо-

собов написания универсального кода, в котором реже возникают проблемы,

заключается в использовании обобщений. В этой главе мы покажем, как

классы коллекций Kotlin используют обобщения, чтобы вы не смешивали

салат и машинное мало. Вы узнаете, как и в каких случаях писать соб-

ственные обобщенные классы, интерфейсы и функции и как ограничить

обобщенный тип конкретным супертипом. Наконец, научитесь пользоваться

ковариантностью и контрвариантностью, чтобы ВЫ сами управляли

поведением своего обобщенного типа.

С обобщениями на ВХОД

поступают только ссылки

на объекты Duck...

Duck

Duck

Duck

Duck

MutableList<Duck>

Duck

Duck

Duck

Duck

...и на ВЫХОДЕ они

остаются ссылками

с типом Duck.

Vet<T: Pet>

treat(t: T)

15

содержание

Обработка кода как данных

11 Лямбда-выражения и функции высшего порядка

Хотите писать еще более гибкий и мощный код? Тогда вам понадобятся

лямбда-выражения. Лямбда-выражение, или просто лямбда, представляет собой

блок кода, который можно передавать как объект. В этой главе вы узнаете, как опре-

делить лямбда-выражение, присвоить его переменной, а затем выполнить

его код. Вы узнаете о функциональных типах и о том, как они используются для

написания функций высшего порядка, использующих лямбда-выражения для па-

раметров или возвращаемых значений. А попутно вы узнаете, как синтаксический

сахар подсластит вашу программистскую жизнь.

λ

λ

Kgs to Pounds

Pounds to US Tons

Мы создадим

функцию, ко- combine()

торая объ-

единяет два

лямбда-выра

-

жения в одно.

λ

Kgs to US Tons

Я получаю один пара-

метр Int с именем x.

Я прибавляю 5 к x

и возвращаю результат.

{ x: Int, y: Int -> x + y }

λ

Lambda

16

содержание

Расширенные возможности

12Встроенные функции высшего порядка

Kotlin содержит подборку встроенных функций высшего по-

рядка. В этой главе представлены некоторые полезные функции этой категории.

Вы познакомитесь с гибкими фильтрами и узнаете, как они используются для

сокращения размера коллекции. Научитесь преобразовывать коллекции

функцией map, перебирать их элементы в forEach, а также группировать

элементы коллекций функцией groupBy. Мы покажем, как использовать fold

для выполнения сложных вычислений всего в одной строке кода. К концу этой

главы вы научитесь писать мощный код, о котором и не мечтали.

У этих предметов не су-

ществует естественного

порядка. Чтобы найти

наименьшее или наиболь-

шее значение, необходи-

мо задать некоторые

критерии — например,

unitPrice или quantity.

1

Функ-

REF

ция fold

0

начинает

Int

с первого

2

элемента

REF

коллекции.

1

Int

2

REF

3

Int

List<Int>

17

содержание

Сопрограммы

Параллельный запуск

I Некоторые задачи лучше выполнять в фоновом режиме. Если вы

загружаете данные с медленного внешнего сервера, то вряд ли захотите, чтобы

остальной код простаивал и дожидался завершения загрузки. В подобных ситуа-

циях на помощь приходят сопрограммы. Сопрограммы позволяют писать код,

предназначенный для асинхронного выполнения. А это означает сокращение

времени простоя, более удобное взаимодействие с пользователем и улучшенная

масштабируемость приложений. Продолжайте читать, и вы узнаете, как говорить

с Бобом, одновременно слушая Сьюзи.

Бам! Бам! Бам! Бам! Бам! Бам! Дынц! Дынц!

Код воспроизводит звуко-

После этого

вой файл toms шесть раз.

звук тарелок

воспроизво-

дится дважды.

Тестирование

Код под контролем

II Хороший код должен работать, это все знают. Но при любых изме-

нениях кода появляется опасность внесения новых ошибок, из-за которых код не

будет работать так, как положено. Вот почему так важно провести тщательное

тестирование: вы узнаете о любых проблемах в коде до того, как он будет

развернут в среде реальной эксплуатации. В этом приложении рассматриваются

JUnit и KotlinTest — библиотеки модульного тестирования, которые дадут вам

дополнительные гарантии безопасности.

18

содержание

Остатки

Топ-10 тем, которые мы не рассмотрели

III Но и это еще не все. Осталось еще несколько тем, о которых, как нам

кажется, вам следует знать. Делать вид, что их не существует, было бы не-

правильно — как, впрочем, и выпускать книгу, которую поднимет разве что

культурист. Прежде чем откладывать книгу, ознакомьтесь с этими лакомыми

кусочками, которые мы оставили напоследок.

x: String

Бам! Бам! Бам! Бам! Бам! Бам! Дынц! Дынц!

y: String

Outer

Inner

Объекты Inner и Outer объ-

единены связью особого рода.

Inner может использовать

переменные Outer, и наоборот.

19

Посвящается светлым умам разработчиков

Kotlin, которые создали такой замечательный

язык программирования.

Об авторах

Дэвид

Гриффитс

Дон

Гриффитс

Дон Гриффитс уже более 20 лет работает

Дэвид Гриффитс работал Agile-коучем, раз-

в IT-отрасли на должностях старшего разработ-

работчиком и рабочим на автозаправке (хотя и

чика и старшего архитектора ПО.

немного в другом порядке). Увлекся программи-

рованием в 12 лет, после просмотра документаль-

Она написала несколько книг из серии Head First,

ного фильма о работе Сеймура Пейперта. В 15 лет

включая Head First. Программирование для Android.

он написал реализацию языка программирова-

Кроме того, со своим мужем Дэвидом разработала

ния LOGO, созданного Пейпертом. Прежде чем

анимационный видеокурс The Agile Sketchpad — ме-

браться за книгу Head First Kotlin, Дэвид написал

тод представления ключевых концепций и при-

еще несколько книг из серии Head First, включая

емов, который бы обеспечивал максимальную

Head First. Программирование для Android, и создал

активность мозга и его непосредственное участие

видеокурс The Agile Sketchpad при участии Дон.

в процессе обучения.

Когда он не занят программированием, литера-

Когда Дон не пишет книги и не снимает видео,

турной работой или преподаванием, проводит

она обычно совершенствует свое мастерство

время в путешествиях со своей очаровательной

тайцзи, увлекается чтением, бегом, плетением

женой и соавтором — Дон.

кружев и кулинарией. Но больше всего ей нра-

Наши микроблоги Twitter доступны по адресу

вится проводить время с ее замечательным мужем

https://twitter.com/ HeadFirstKotlin.

Дэвидом.

20

Как работать с этой книгой

Введение

Не могу поверить,

что они включили

такое в книгу про

Kotlin.

дальше 4 21

как работать с этой книгой

Для кого написана эта книга?

Если вы ответите «да» на все следующие вопросы:

1

У вас уже есть опыт программирования?

Это НЕ справочник.

2

Вы хотите изучить Kotlin?

Head First Kotlin — книга

для тех, кто хочет изучить

3

Вы предпочитаете заниматься практической работой

язык, а не энциклопедия все-

и применять полученные знания вместо того, чтобы

возможных фактов о Kotlin.

выслушивать нудные многочасовые лекции?

...тогда эта книга для вас.

Кому эта книга не подойдет?

Если вы ответите «да» хотя бы на один из следующих вопросов:

1

Ваш опыт программирования ограничивается одним HTML,

а с языками сценариев вы дела не имели?

(Если вы работали с циклами и логикой «if/then», все будет

нормально, но одних тегов HTML будет недостаточно.)

2

Вы — крутой программист Kotlin, которому нужен справочник?

3

Вы скорее пойдете к зубному врачу, чем опробуете что-

нибудь новое? Вы считаете, что в книге о Kotlin должно быть

рассказано все — особенно экзотические возможности,

которыми вы никогда не будете пользоваться, а если читатель

будет помирать со скуки — еще лучше?

...эта книга не для вас.

[Примечание от отдела продаж:

вообще-то эта книга для всех,

у кого есть кредитка... и если что —

PayPal тоже подойдет.]

22 введение

введение

Ìû çнаем, о ÷ем вû думаете

«Разве серьезные книги о Kotlin такие

«И почему здесь столько рисунков?»

Мозг считает, что

ЭТО важно.

«Можно ли так чему-нибудь научиться

È мû çнаем, о ÷ем думает ваø моçг

Мозг жаждет новых впечатлений. Он постоянно ищет, анализирует,

ожидает чего-то необычного. Он так устроен, и это помогает нам

выжить.

Как мозг поступает со всеми обычными, повседневными вещами?

Он всеми силами пытается оградиться от них, чтобы они не мешали

его настоящей работе — сохранению того, что действительно важно.

Мозг не считает нужным сохранять скучную информацию. Она не

проходит фильтр, отсекающий «очевидно несущественное».

Но как же мозг узнает, что важно? Представьте, что вы выехали на

прогулку и вдруг прямо перед вами появляется тигр. Что происходит

в вашей голове и теле?

Замечательно.

Еще 450 сухих,

Активизируются нейроны. Вспыхивают эмоции. Происходят хими-

скучных страниц.

ческие реакции. И тогда ваш мозг понимает...

Конечно, это важно! Не забывать!

Мозг полагает,

что ЭТО можно

А теперь представьте, что вы находитесь дома или в библиотеке — не запоминать

в теплом, уютном месте, где тигры не водятся. Вы учитесь — готови-

тесь к экзамену. Или пытаетесь освоить сложную техническую тему,

на которую вам выделили неделю... максимум десять дней.

И тут возникает проблема: ваш мозг пытается оказать вам

услугу. Он старается сделать так, чтобы на эту очевидно не-

существенную информацию не тратились драгоценные ре-

сурсы. Их лучше потратить на что-нибудь важное. На тигров,

например. Или на то, что к огню лучше не прикасаться. Или

что те фотки с вечеринки не стоило выкладывать на Facebook.

Нет простого способа сказать своему мозгу: «Послушай, мозг,

я тебе, конечно, благодарен, но какой бы скучной ни была

эта книга и пусть мой датчик эмоций сейчас на нуле, я хочу

запомнить то, что здесь написано».

дальше 4 23

как работать с этой книгой

Эта книга для тех, кто хочет учиться.

Как мы что-то узнаем? Сначала нужно это «что-то» понять, а потом не забыть. За-

толкать в голову побольше фактов недостаточно. Согласно новейшим исследовани-

ям в области когнитивистики, нейробиологии и психологии обучения, для усвоения

материала требуется что-то большее, чем простой текст на странице. Мы знаем, как

заставить ваш мозг работать.

Основные принципы серии «Head First»

Наглядность. Графика запоминается лучше, чем обычный текст, и значительно повышает эффективность

восприятия информации (до 89 % по данным исследований). Кроме того, материал становится более

понятным. Текст размещается на рисунках, к которым он относится, а не под ними или на соседней

странице — и вероятность успешного решения задач, относящихся к материалу, повышается вдвое.

Разговорный стиль изложения. Недавние исследования показали, что при разговорном стиле из-

ложения материала (вместо формальных лекций) улучшение результатов на итоговом тестировании

достигает 40 %. Рассказывайте историю, вместо того чтобы читать лекцию. Не относитесь к себе слишком

тельная беседа за столом или лекция?

серьезно. Что привлечет ваше внимание: занима

Активное участие читателя. Пока вы не начнете напрягать извилины, в вашей голове ничего не про-

изойдет. Читатель должен быть заинтересован в результате; он должен решать задачи, формулировать

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

в решении которых задействованы оба полушария мозга и разные чувства.

Привлечение (и сохранение) внимания читателя. Ситуация, знакомая каждому: «Я очень хочу изу-

транице». Мозг обращает внимание на интересное, странное, притя-

чить это, но засыпаю на первой с

гательное, неожиданное. Изучение сложной технической темы не обязано быть скучным. Интересное

узнается намного быстрее.

Обращение к эмоциям. Известно, что наша способность запоминать в значительной мере зависит от

эмоционального сопереживания. Мы запоминаем то, что нам небезразлично. Мы запоминаем, когда

что-то чувствуем. Нет, сантименты здесь ни при чем: речь идет о таких эмоциях, как удивление, любо-

пытство, интерес и чувство «Да я крут!» при решении задачи, которую окружающие считают сложной,

или когда вы понимаете, что разбираетесь в теме лучше, чем всезнайка Боб из технического отдела.

24 введение

введение

Ìетапоçнание: наука о мûøлении

Как бы теперь

Если вы действительно хотите быстрее и глубже усваивать новые зна-

заставить мой мозг

ния — задумайтесь над тем, как вы думаете. Учитесь учиться.

все это запомнить…

Мало кто из нас изучает теорию метапознания во время учебы. Нам

положено учиться, но нас редко этому учат.

Но раз вы читаете эту книгу, то, вероятно, хотите освоить программи-

рование на Kotlin, и по возможности быстрее. Вы хотите запомнить

прочитанное, а для этого абсолютно необходимо сначала понять про-

читанное.

Чтобы извлечь максимум пользы из учебного процесса, нужно

заставить ваш мозг воспринимать новый материал как Нечто

Важное. Критичное для вашего существования. Такое же важ-

ное, как тигр. Иначе вам предстоит бесконечная борьба с вашим

мозгом, который всеми силами уклоняется от запоминания новой

информации.

Как же УБЕДИТЬ мозг, что язык Kotlin не менее важен,

чем голодный тигр?

Есть способ медленный и скучный, а есть быстрый и эффективный. Пер-

вый основан на тупом повторении. Всем известно, что даже самую скучную

информацию можно запомнить, если повторять ее снова и снова. При достаточ-

ном количестве повторений ваш мозг прикидывает: « Вроде бы несущественно,

но раз одно и то же повторяется столько раз... Ладно, уговорил».

Быстрый способ основан на повышении активности мозга и особенно на

сочетании разных ее видов. Доказано, что все факторы, перечисленные на

предыдущей странице, помогают вашему мозгу работать на вас. Например,

исследования показали, что размещение слов внутри рисунков (а не в подписях,

в основном тексте и т. д.) заставляет мозг анализировать связи между текстом

и графикой, а это приводит к активизации большего количества нейронов.

Больше нейронов — выше вероятность того, что информация будет сочтена

важной и достойной запоминания.

Разговорный стиль тоже важен: обычно люди проявляют больше внимания,

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

и высказывать свое мнение. Причем мозг совершенно не интересует, что вы

«разговариваете» с книгой! С другой стороны, если текст сух и формален, то

мозг чувствует то же, что чувствуете вы на скучной лекции в роли пассивного

участника. Его клонит в сон.

Но рисунки и разговорный стиль — это только начало.

дальше 4 25

как работать с этой книгой

Вот ÷то сделали ÌЫ

Мы использовали рисунки, потому что мозг лучше приспособлен для восприятия графики,

чем текста. С точки зрения мозга рисунок стоит тысячи слов. А когда текст комбинирует-

ся с графикой, мы внедряем текст прямо в рисунки, потому что мозг при этом работает

эффективнее.

Мы используем избыточность: повторяем одно и то же несколько раз, применяя разные

средства передачи информации, обращаемся к разным чувствам — и все для повышения

вероятности того, что материал будет закодирован в нескольких областях вашего мозга.

Мы используем концепции и рисунки несколько неожиданным образом, потому что мозг

лучше воспринимает новую информацию. Кроме того, рисунки и идеи обычно имеют эмо-

циональное содержание, потому что мозг обращает внимание на биохимию эмоций. То, что

заставляет нас чувствовать, лучше запоминается — будь то шутка, удивление или интерес.

Мы используем разговорный стиль, потому что мозг лучше воспринимает информацию,

когда вы участвуете в разговоре, а не пассивно слушаете лекцию. Это происходит и при

чтении.

В книгу включены многочисленные упражнения, потому что мозг лучше запоминает, когда

вы что-то делаете. Мы постарались сделать их непростыми, но интересными — то, что

предпочитает большинство читателей.

Мы совместили несколько стилей обучения, потому что одни читатели предпочитают по-

шаговые описания, другие стремятся сначала представить «общую картину», а третьим

хватает фрагмента кода. Независимо от ваших личных предпочтений полезно видеть

несколько вариантов представления одного материала.

Мы постарались задействовать оба полушария вашего мозга; это повышает вероятность

усвоения материала. Пока одна сторона мозга работает, другая часто имеет возможность

отдохнуть; это повышает эффективность обучения в течение продолжительного времени.

А еще в книгу включены истории и упражнения, отражающие другие точки зрения. Мозг

глубже усваивает информацию, когда ему приходится оценивать и выносить суждения.

В книге часто встречаются вопросы, на которые не всегда можно дать простой ответ, потому

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

накачать мышцы, наблюдая за тем, как занимаются другие. Однако мы позаботились о том, чтобы усилия читателей были приложены в верном направлении. Вам не придется ломать

голову над невразумительными примерами или разбираться в сложном, перенасыщенном

техническим жаргоном или слишком лаконичном тексте.

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

И ваш мозг обращает на людей больше внимания, чем на неодушевленные предметы.

26 введение

введение

×то моæете сделатü ВЫ, ÷тобû

çаставитü свой моçг повиноватüся

Мы свое дело сделали. Остальное за вами. Эти советы станут

отправной точкой; прислушайтесь к своему мозгу и опреде-

лите, что вам подходит, а что не подходит. Пробуйте новое.

Вырежьте и прикрепите

на холодильник.

1 Не торопитесь. Чем больше вы поймете, тем

6 Пейте воду. И побольше.

меньше придется запоминать.

Мозг лучше всего работает в условиях высокой

Просто читать недостаточно. Когда книга за-

влажности. Дегидратация (которая может насту-

дает вам вопрос, не переходите к ответу. Пред-

пить еще до того, как вы почувствуете жажду)

ставьте, что кто-то действительно задает вам

снижает когнитивные функции.

вопрос. Чем глубже ваш мозг будет мыслить,

7 Прислушивайтесь к своему мозгу.

тем скорее вы поймете и запомните материал.

Следите за тем, когда ваш мозг начинает уста-

вать. Если вы начинаете поверхностно воспри-

2 Выполняйте упражнения, делайте заметки.

нимать материал или забываете только что

Мы включили упражнения в книгу, но выпол-

прочитанное, пора сделать перерыв.

нять их за вас не собираемся. И не разглядывай-

8 Чувствуйте!

те упражнения. Берите карандаш и пишите.

Ваш мозг должен знать, что материал книги

Физические действия во время учения повыша-

действительно важен. Переживайте за героев

ют его эффективность.

наших историй. Придумывайте собственные

подписи к фотографиям. Поморщиться над

3 Читайте врезки.

неудачной шуткой все равно лучше, чем не по-

Это значит: читайте всё. Врезки — часть основ-

чувствовать ничего.

ного материала! Не пропускайте их.

9 Пишите побольше кода!

Освоить программирование Kotlin можно толь-

4 Не читайте другие книги после этой перед сном.

ко одним способом: писать побольше кода.

Именно этим мы и будем заниматься в книге.

Часть обучения (особенно перенос информации

Программирование — искусство, и добиться

На главную: Предисловие