О изучении swift


#1

К вопросу, который периодически возникает тут на форуме, как изучать язык.
Поделюсь своим личным опытом, возможно кому то это может помочь.

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

Но как то весьма резво мое внимание переключилось на видеокурсы и я почти на одном дыхании просмотрел первые два курса. Все уроки, как мне казалось, были мною поняты и вся логика кода вопросов не вызывала. Далее я начал смотреть курс по UITableView и тут начались проблемы. Начиная с уроков основного проекта курса я понял, что мне по большей части непонятно происходящее, но я внимательно и дотошно “переписывал” код к себе в проект, в надежде, что понимание придет.

Тогда я принял решение начать параллельно читать книгу, в надежде, что это подтянет мое понимание кода и поможет смотреть курс. Я прочел около 70 - 80 % книги и понял, что там тоже сложно и несмотря на то, что некоторые разделы я читал по несколько раз кряду - прозрения никакого не случалось. Читать оставшуюся часть не понимая того что уже прочитано смысла не было и я вернулся к видео. Я пересмотрел несколько курсов как кино, понимая не слишком большую часть логики происходящего в коде. Но потом пошли вообще магические вещи и я вернулся к началу.

Я пересмотрел наиболее непонятные моменты из курса “Язык программирования swift” и местами прозревал и начинал понимать, но в целом это помогало не настолько, насколько мне хотелось.

Я начал искать дополнительную информацию о swift и нашел видео от Скутаренко, которые показались мне длинными, потому как уроки там по 30 мин, но меня по моему спасло то, что там есть некие домашние задания по каждому разделу. При этом хочу отметить и одновременно сказать спасибо Ивану, потому как я почувствовал разницу в курсах этих двух ресурсов и считаю, что Иван, проводя аналогию с английским языком, “ставит правильное произношение” и я очень рад, что именно его курсы я начал смотреть первыми.
Параллельно всему этому я читаю книгу, причем уже третий раз по моему. Читаю ее не подряд, а в тех частях, которых мне сейчас недостает для понимания кода.

Возвращаясь к порядку(алгоритму) изучения. На моем личном опыте могу сказать, что мне помогла все же именно практика. Не одновременное написание кода в процессе видеоурока, а именно самостоятельное решение поставленных маленьких задач. Это дало мне намного большее понимание и запоминание синтаксиса и логики.

Читать книгу, даже если читать ее многократно и пренебречь самостоятельным написанием кода в плейграунде - это большая ошибка. При этом я помню, что Иван в каждом уроке напоминает поковыряться с кодом данного раздела, но я эти предложения пропускал мимо, потому как мне было все понятно. Но несмотря на это, простого “я это понял, значит знаю” недостаточно. Понял != Знаю
Поэтому хочу донести до тех кто только начал - практикуйтесь. Так вы сэкономите время.


#2

Что для вас было самое сложное в учебнике? ООП?


#3

Мне непросто было разбираться в инициализации и деинициализации, в управлении памятью(ARC), клоужеры, еще какие то вещи. При этом когда я читал, например, о клоужерах, то я не мог сказать, что код в примерах книги мне непонятен и я мог почти всегда ответить на вопрос что должен вывести тот или иной print и т.п.

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

Если вы хотите, чтобы ваш пользовательский тип значения имел возможность быть инициализированным дефолтным инициализатором или почленным инициализатором, или вашим пользовательским инициализатором, то вам нужно написать свой пользовательский инициализатор в расширении вашего типа, чем как часть реализации типа значения. Для более подробной информации смотрите Расширения

С такими вот ощущениями я читал книгу зачастую.
И такое описание мне чуть ли не по словам приходилось разбирать и пытаться понять что имеется в виду. И не всегда это удавалось.
Что такое пользовательский тип? Что за расширение типа? Какого типа? Я и сейчас не могу сказать, что все понимаю во всей книге, но я явно вижу прогресс.

Понимаете ли вы вышеприведенный отрывок о инициализации?

  • Да. Конечно понимаю, что тут вообще непонятного? Easy, easy.
  • Нет, не понимаю
  • Ты сам выдумал эту фразу, и в ней написана какая-то бессмыслица.

0 голосов


#4

Вы для сравнения почитайте про GoF паттерны :slight_smile:


#5

Чтобы у ТСа отпало все желание заниматся разработкой? xD


#6

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

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

И самое лучшее для обучения - это учебник, он написан профессионально. Все остальное хорошо, если у тебя уже есть какой-то предыдущий объем информации.


#7

12345678901234567890


#8

Вы просто хороших книг не читали.

Для тех, кто может в английский рекомендую.


#9

12345678901234567890


#10

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


#11

Спасибо за ссылку. Там какие-то туториалы крутые по-моему. Потом поподробнее посмотрю.

Снова к вопросу обучения. Я в соседней теме писал про ковыряние Table View Controller. И из этого ковыряния вытекла необходимость разобраться в делегировании. И я вот только благодаря этому ковырянию наконец разобрался что такое self. А самое главное, что я теперь это отчетливо запомнил и не забуду. Хотя я читал про этот self неоднократно. Но в отрыве от решения конкретной задачи чтение мне не очень помогло.


#12

12345678901234567890


#13

Самое логичное - это открыть интернет и найти уроки программирования (базы, не привязанной к конкретным технологиям), к примеру - стенфордские лекции CS, к примеру CS50.

А если человек[quote=“nubideus, post:12, topic:4332”]
видит фигу
[/quote]

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


#14

12345678901234567890


#15

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


#16

12345678901234567890


#17

А в целом вы как к литературе (не по программированию) относитесь?


#18

12345678901234567890


#19

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


#20

А вот что в этой строке не понятно?
Чтоб научиться нужно желание! Читать, смотреть и самому стараться что-то понять! а большая часть ждет что за них сделают или разжуют и в голову положат!
А еще большая беда что всех интересуют только деньги!Посмотрите на наш форум: что не приложение от подписчика так оно сразу платное! За что? за то что он посмотрел урок и сделал трех-экраннное приложение из базовых элементов?

Вот так и живем))