Всем привет!

Закончил перерабатывать книгу 2021 года "Основы Dart" ("Книга по Dart 2.12").

Что изменилось?

На глобальном уровне:

  1. Второе издание представляет собой полноценный учебник;

  2. Актуальная версия Dart - 3.2;

  3. В книге 6 глав вместо 10 (521 страница vs 216);

  4. шрифт кода изменен на JetBrains Mono (спасибо Владимиру Орлову за рекомендацию!);

  5. шрифт текста с Times New Roman на PT Serif.

  6. Каждая глава завершается лабораторной работой с кучей заданий (всего на книгу ~ 280 заданий), что позволяет использовать учебник в образовательных процессах ВУЗов, СУЗов или школах, а также дет возможность в большем объеме прокачать свои навыки тем людям, кто самостоятельно обучается по нему.

На уровне глав:

Глава 1. Краткая история и встроенные типы данных.

Добавил пару новых разделов (Записи (Record), Тип данных dynamic vs Object и т.д.) и значительно расширил существующие, рассмотрев различные варианты работы со встроенными типами данных.

Глава 2. Операторы, pattern matching и управляющие конструкции

Появился раздел посвященный Pattern Matching и Destructuring. Больше внимания было уделено управлению потоком выполнения кода.

Глава 3. Функции, библиотеки, пакеты и их тестирование

Мягко сказать, третья глава была перехерачена таким образом, что включает в себя сейчас третью, четвертую и десятую главы первого издания + много разных изменений. Зачем это было сделано?) А чтобы студенты страдали хДДД Немного поменял подход и дал тестирование, начиная с функций, чтобы все лабы далее были покрыты тестами. А без разбора библиотек и пакетов, перескакивать на тесты не было смысла.

Глава 4. Объектно-ориентированное программирование

Эта глава объединила в себе переработанную по ООП и исключениям из первого издания. Добавил раздел по новой фишке, которая появится в Dart 3.2 - Private field promotion, а также по модификаторам классов, с демонстрацией способов, как можно выстрелить себе в ногу ^_^

Глава 5. Сборка приложения. Работа с файлами и директориями

Добавил разделы по тому, какие существуют флаги сборки и как с ними компилировать и запускать приложение. Также добавил раздел по конфигурации приложения через терминал в момент запуска.Что касается части работы с файлами, то она была значительно расширена. Добавились примеры по работе с директориями и раздел, посвященный реализации простенькой БД на основе односвязного списка и текстового файла. Раздел посвященный JSON также претерпел изменения и обзавелся примером разработки хранилища типа "ключ:значение".

Глава 6. Асинхронное и сетевое программирование. Isolate

Переработана и расширена часть, связанная с асинхронным программированием (Future, async/await и Stream) и раздел, посвященный работе с изолятами. Добавил с примеры, как организовать взаимодействие между изолятами в рамках одной изоляционной группы, а так же, как с этим обстоят дела, когда создается новая изоляционная группа. Рассмотрен такой механизм, как зоны (Zones) и реализация серверной и клиентской части приложения на TCP, UDP и HTTP, без использования сторонних пакетов.

Что дальше?

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

  1. «Разработка backend на Dart» с использованием Serverpod;

  2. глава с разбором коллекций и разработки на Dart классических структур данных. Возможно, зацепим еще алгоритмы поиска и сортировки;

  3. более глубокое погружение в асинхронное программирование и изоляты, с примером разработки небольшой мультиагентной системы (возможно включу в третье переиздание "Основ Dart");

  4. глава по работе с базами данных (sqlite);

  5. DartFFI;

  6. работа с gRPC (под вопросом).

После чего можно будет приступить к Flutter. По сути, если все получится и будет поддержка сообщества, свет увидит трехтомник: основы, продвинутый уровень Dart и Flutter.

Т.к. книгу переработал куда быстрее, чем работает знакомый дизайнер (загрузка по работе), то дизайн обложки будет обновлен в 3-м переиздании =(

Какая поддержка сообщества нужна?

Новую квартиру в Питере не прошу (хотя... было бы неплохо???????????? в однушке с женой и ребенком тяжело преподу работается >_< ), но донатам (имеющиеся варианты приведены в книге и ниже в посте) или огласке о том, что такая работа идет (репост, пригласить на интервью на свой канал, конференцию, поставить звезду репозиторию в гитхабе, лайк под моим комментарием на Stepik, чтобы они наконец-таки обновили Dart 2.7 на 3.2 и т.д.) - буду безмерно благодарен!

Всем тем, кто денежно поддержал второе переиздание учебника (чьи имена и никнеймы удалось выявить при переводах и не пожелали оставаться анонимами) - Огромное Спасибо!

a.alistrat, Starletovod, PackRuble, ReinRaus, Олег О., Александр Остапенко, Павел М., Дмитрий М., Ruslan Vafin

Все новые донаты пойдут в благодарность 3-го издания. Огромная просьба, при переводе указывать в комментариях, как вас добавлять в этот раздел (ФИО, Имя Фамилия или никнейм).

В то время, пока в поте лица перерабатывал книжку, по основному месту работы (СПбГЭУ) меня завернули с получением ученого звания доцента, хотя все нормативы для этого перевыполнены на 146%. Нельзя в экономическом вузе подаваться на доцента по техническим наукам. Летом буду увольняться... Высока вероятность, что в ГУАП... но кто знает, может среди читателей найдутся представители других учебных заведений, способные предложить более интересные и прибыльные варианты, чем сейчас имею на руках (было бы интересно поработать в Центральном Университете, что открыл Тинькофф). Готов рассмотреть различные предложения ^_^

Бумажная версия книги

Скребется в голове идея выпуска бумажной версии, но руки пока не добрались отправить запросы в типографии. Да и как-то ссыкотно, во сколько это может обойтись???? Поэтому прикрепил опрос к посту на тему: "А надо ли оно")

Если надо, то есть несколько вариантов:

  1. собственные средства, при адекватном ценнике от типографии;

  2. каудфайдинг;

  3. помощь IT-компаний, заинтересованных в актуальной литературе по Dart.

Как задонатить?

Существуют различные способы залить меня чашку кофе для более продуктивной ночной работы:

  1. Тинькофф

  2. ЮMoney

  3. Boosty

  4. Адрес EVM кошелька Bybit Wallet: 0x3ff35d9325f8c4cbabd6f14ba5e170459420faa8

  5. Адрес SUI кошелька Bybit Wallet: 0x9300ecb7a65ab4564a4c81ef045f0ef8d175a13fe3cfc7acdd25b8afa0b00225

Где скачать книгу?

Как и в предыдущих случаях, книга доступна в 2-х версиях: PDF EPUB

Почему год издания 2024?) Это традиция, что книга, выходящая под конец года, датируется следующим ^_^

Комментарии (9)


  1. saag
    16.11.2023 10:59
    +1

    Большое спасибо автору, задонатил чере Boosty, надеюсь не посчитают за это иноагентом, ибо донат из-за границы:-)


    1. MADTeacher Автор
      16.11.2023 10:59

      Спасибо! С этим все нормально. За такое иноагентом не признают, да и не тот уровень))


  1. ReinRaus
    16.11.2023 10:59
    +1

    Супер. Не думал, что Вы так быстро переработаете. Поздравляю!


    1. MADTeacher Автор
      16.11.2023 10:59

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


  1. axelmaker
    16.11.2023 10:59

    Только сегодня вышел Dart 3.2, а вы уже его интегрировали. Спасибо!


    1. MADTeacher Автор
      16.11.2023 10:59
      +1

      C похожей ситуацией сталкивался при анонсе первого издания, поэтому заранее подготовился и перешел на Dev channel с Dart 3.2 ))


  1. vbroBro
    16.11.2023 10:59

    Спасибо огромное за Ваш труд!


  1. alerausm
    16.11.2023 10:59
    +1

    Спасибо за труд. Для "Map" создатели 1С давно придумали подходящее название "Соответствие", которое точнее подходит этому типу. Таблица все-таки подразумевает множество строк, то есть "Таблица" это скорее List<Map<String,dynamic>>


  1. mrDevGo
    16.11.2023 10:59

    Благодарю за труды Станислав. Большой вклад в развитие Российского Flutter сообщества.