Ответы пользователя по тегу Книги
  • Какую книгу выбрать для углубленного изучения C#?

    @programrails
    Я прочёл книгу Jeffrey Richter, CLR via C#, Fourth Edition. Прочёл на английском языке - от корки до корки. В C# при этом я новичок, но уже до Рихтера кое-что прочёл.

    Общее впечатление: Джеффри Рихтер - мерзавец и негодяй (потому что ворует время читателей). Пишет он отвратительно. Его книга - это действительно "библия разработчика" - но, к сожалению, в самом прямом смысле слова, ибо содержит информацию типа:
    Я есмь лоза, а вы ветви; кто пребывает во Мне, и Я в нем, тот приносит много плода; ибо без Меня не можете делать ничего.
    Кто не пребудет во Мне, извергнется вон, как ветвь, и засохнет; а такие ветви собирают и бросают в огонь, и они сгорают.
    где был ты, когда Я полагал основания земли? Скажи, если знаешь.
    при общем ликовании утренних звезд, когда все сыны Божии восклицали от радости?
    На это он сказал: вот, я вижу четырех мужей несвязанных, ходящих среди огня, и нет им вреда; и вид четвертого подобен сыну Божию.

    И вот так - практически вся книга - только по-английски. Рихтер обладает уникальным талантом запутать на ровном месте простые и понятные вещи. При этом он часто говорит лишь так, чтобы его нельзя было однозначно понять. У него патологическое стремление высосать из пальца мнимые сложности там, где их нет.
    Примеры кода он любит давать обязательно в виде километровых простыней - чтобы "утопить" нужные 2-3 (объясняемые) строки кода в пучине (абсолютно тут не нужного, но при этом довольно сложного) длинного кода.
    Рихтер - это человек, кому следует законодательно запретить писать книги. Полнейшая бездарность с точки зрения умения объяснить что-либо. Сам он, несомненно, что-то знает - но избегает ответственности объяснить, как положено - из-за своего малодушия, думаю.
    Все, кто его хвалят - скорее всего, просто не прочитали его до конца. А я прочёл. Последний раздел (многопоточность) - вообще практически нечитаемый.
    Повсюду в книге ненужное многословие, напускание тумана на ровном месте. У этого человека явно проблемы с психикой - он может лишь бесконечно "ходить вокруг до около", но неспособен "взять быка за рога".
    Книга его в значительной степени - просто мусор - выброшенные на помойку время и деньги. Пора, наконец, это признать - вместо бесконечного нашего низкопоклонства перед Западом. Читая его книгу, я постоянно испытывал острое желание дать ему палкой по голове. Теперь, к сожалению, придётся читать что-нибудь другое - с нормальным (хотя бы) объяснением. Я просто в ярости от этой книги. Нет ни малейшего сомнения в том, что весь этот материал не составляло никакой проблемы объяснить гораздо более простым и ясным языком. Весь раздел многопоточности по большому счёту прошёл полностью мимо, понять там что-либо практическое так и не удалось. Да как же так? Я бы понял, если бы хотя бы отдельные места остались непонятными - но не целый же раздел книги целиком?
    И неважно, то я что новичок в C#. Важно то, что я прочёл до этого много других правильных книг, и знаю, как их следует писать. Этот автор "говорит много, но так, чтобы в итоге ничего не сказать".
    Ответ написан
    Комментировать
  • Выбор книги по алгоритмам: Кормен или Скиена?

    @programrails
    Скиена отвратителен. Просто он сам по себе придурок. Он и по-английски не умеет свои мысли чётко излагать. Сравните, например, его англоязычное описание очереди с приоритетом:
    Priority queues are data structures that provide more flexibility than simple sorting, because they allow new elements to enter a system at arbitrary intervals.

    с таковым из англоязычной Википедии:
    In computer science, a priority queue is an abstract data type which is like a regular queue or stack data structure, but where additionally each element has a "priority" associated with it. In a priority queue, an element with high priority is served before an element with low priority.

    Ну идиот, что сказать. Плюс, русский перевод добавляет порой неточности. И даже опечатки в коде добавляет. Хотя читать Скиену следует всё-таки на русском - но то и дело поглядывая в англоязычный оригинал. Русский переводчик явно старался - это заметно. Но, всё-таки, в редких случаях допускал неточности. Я пробовал читать и по-английски - ввиду дебилизма автора, это получалось супермедленно. Всё-таки русский переводчик как мог, сгладил этот дебилизм (пусть и допустив редкие ошибки при этом), поэтому по-русски читается куда как более гладко, и гораздо быстрее.

    Многочисленные хвалебные отзывы о Скиене - это ошибка и глупость. Я не смог его прочесть, бросил на 130 странице, убив в 2-3 раза больше времени, чем на обычную книгу. Скиена - просто негодяй. Он даже и не пытается что-либо толком объяснить - либо делает это с явным отвращением. Причём я пробовал читать Скиену и в оригинале - практически ничем не лучше - точно такая же абсолютно мусорная книга. Читать Скиену, если и можно - то только имея за плечами десяток уже прочитанных хороших книг по алгоритмам - чтобы понимать, что этот недоумок опустил между строк.

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

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

    Скиена - это мусорная книга.
    Ответ написан
    Комментировать
  • Какую литературу можно найти по golang?

    @programrails
    Я бы рекомендовал изучение в такой последовательности:

    Beginner level (синтаксис языка):

    1. Начать с golang-book.ru . Это на русском и довольно неплохо для начинающего.

    2. https://golang.org/doc/effective_go.html - это уже на английском, но всё равно толково и хорошо заходит после 1-го пункта. Кратко, по делу, без воды, достаточно понятно.

    После прочтения этих 2 пунктов у Вас уже будут базовые понятия о языке.

    Intermediate level (concurrency - многопоточность):

    Как ни пытался, не смог определить какую-то конкретную универсальную книгу. На этом уровне много плохих книг, сложно выделить что-то хорошее. Относительно неплохими для этого уровня (пока что) показались:

    (продолжаем последовательность изучения Go по пунктам):

    3. Базовый веб сервер на Go Статья, без которой дальнейшее трудно заходит (книгоавторам всем дружно лень такое нормально объяснить).

    4. M. Curtis - Level Up Your Web Apps With Go
    Читал - и не понимал - что происходит? Чувак явно пишет рельсы на Go! Всё такое до боли знакомое... Что такое? А потом смотрю в профиле https://www.linkedin.com/in/mal-curtis/ - так он же пишет на работе на Ruby on Rails! Так что книжка отлично зайдёт рельсовикам, осваивающим Go. Книга неплохая, автор явно старался. Автор, ты хороший человек.

    5. K. Cox-Buday - Concurrency in Go. Tools and Techniques for Developers. Книга не очень удачная, но пока я не успел найти что-то получше. Автор - женщина, и глупая. Книга читается мучительно и крайне медленно. Охват материала неплох - но объяснения косноязычные, с водопадом лишних слов и эмоций, примеры кода неоправданно переусложнены, ряд тем вообще остались бы непонятыми, если бы не гугление. Читаю и матерюсь на каждом шагу.
    PS Последние 2 главы пошёл уже такой горячечный бред, что я просто не смог заставить себя читать этот ужас. Бросил. В общем, далее параграфа Queuing читать не стоит. Книга прекрасно иллюстрирует тезис, что, какими бы умными ни были женщины, они всё равно дуры, и нечего им в программировании делать (кроме разве что 1С).
    К сожалению, книгу прочесть всё-таки надо, ибо охват хорош - а заменить книгу особо нечем (в смысле другой книгой, продаваемой за деньги - разве что статьями).

    Есть ещё книга N. Kozyra - Mastering Concurrency in Go - но у неё ужасные отзывы - да и я пытался читать другую книгу по Go у этого же автора - и мне также крайне не понравилось.
    Смешно сказать - но по Go нет ни одной путёвой книги про Concurrency (единственное, ради чего Go был создан)!

    6. Лучшее объяснение Go Context, что я пока видел. Оно даже лучше официального (написанного индусом, и оттого плохого).

    7. M. Tsoukalos - Mastering Go - но только Chapter 10: Concurrency in Go – Advanced Topics - и исключая параграф Worker pools (он ошибочный - там ничто не сдерживает размножение горутин - какой же тогда это пул).
    Средне-удовлетворительная глава, звёзд с небес не хватает, интереснее всего был параграф Sharing memory using goroutines - частный пример Катькиного Confinement'а.

    Advanced level (микросервисы на Go):

    Я пытался читать N. Jackson - Building Microservices with Go - это оказалось невозможным, книгу написал какой-то сумасшедший безумец, находящийся в состоянии наркотического опьянения. Отзывы на Амазоне это подтверждают.

    Также я попытался читать M. Ryer - Go Programming Blueprints (2 ed) - только главу Chapter 10: Micro-services in Go with the Go kit Framework - не понравилось. Примеры кода сложноваты (автор пытается построить реальную систему - ну и дурак - вместо того, чтобы ограничиться демо-примером), объяснения сопутствующего материала никакие (по сути, их нет). Бесполезная глава. Несколько тем свалены вместе - но ни одна толком не объяснена. Очень слабенький автор.

    Вердикт: нормальной книжки по теме "Go микросервисы" пока не обнаружено. Придётся изучать эту тематику из статей и инструкций по использованию микросервисных Go-фрэймворков - вот списочек фрэймворков:


    Я начал с gRPC. Сначала прочёл официальную доку по protobuf (включая раздел о Go). Дока оказалась достаточно вменяемой. Но зато официальная дока по gRPC уже оказалась совершенно паршивой. Там 2 примера - попроще и посложней. Писали доку явно последователи тех, кто писал доку к первому ангуляру (т.е. те, кому я бы отрубил обе руки по самые плечи). Понять что-либо без исходников (к статье) - нереально. Но - исходники ещё надо найти, ибо в статье ссылки на них ... нет. Оказалось, исходники тут: https://github.com/grpc/grpc-go/tree/master/exampl... . Но даже с ними - всё довольно непросто понять - даже в простейшем примере. Потому что авторы умолчали о многих важных моментах. Т.к. им в падлу шевельнуть задницей лишний раз. В общем, есть нужда в нормальном авторе, кто опишет, что такое gRPC. Попробуйте почитать статью от Шизы - это слегка окультуренный сокращённый пересказ сложного случая.

    Рассмотрим Go Micro. Продукция очередного кретина (да ещё и спорного качества). Что, скажите, можно понять из таких "объяснений"? Кстати, ищите в Яндексе термин "Service Discovery" - здесь нужно понимать, что это. Посмотрите и Consul. Вот ещё разумная статья о Go-микросервисах. И ещё я понял - без предварительного изучения protobuf и gRPC понять Go Micro будет затруднительно (если вообще возможно). Желаю вам никогда не встретить на работе продукцию этого дегенерата. Go Micro показался мне китайским фонариком со встроенными компасом, радиоприёмником, часами, зарядкой, отвёрткой, точилкой для карандашей, ногтерезкой, и т.д.

    Идём дальше. Go kit производит намного более лучшее впечатление. Правда, документация не полная - автору не хватило терпения её закончить. Но всё же разобраться можно - есть исходники-примеры, снабжённые подробными комментариями. Автор мне понравился.

    Почитайте полезную статью-сравнение.

    Приложение:

    Гоняться за русскоязычными книгами по Golang не рекомендую. Я прочёл на русском:
    - А. Донован, Б. Керниган - Язык программирования Go
    Это совершенно отвратительная бездарная книга.
    и просмотрел оглавление русскоязычной книги:
    - М. Саммерфильд - Программирование на языке Go
    Хотя я её не читал, но беглый просмотр её оглавления создаёт самое негативное впечатление о книге. Такое ощущение, что это целенаправленная диверсия против изучающего golang, с целью развести его на время (прочтения) и деньги (при покупке). Марк Саммерфилд - это профессиональный графоман, посмотрите сами на его карьерный путь: https://www.linkedin.com/in/qtrac/

    Обе перечисленные книги (доступные онлайн бесплатно в электронном виде как векторный PDF), хотя и русскоязычные, настоятельно не рекомендую.

    М. Батчер, М. Фарина - Go на практике - на русском языке - эта книга вроде бы достаточно неплохая, но она для опытного разработчика - и она не излагает системно - а отрывисто.

    Пытаться читать спецификацию языка также не рекомендую - ничего не поймёте:
    https://golang.org/ref/spec

    Заключение

    Нормальной литературы по Go практически нет (кроме азов). Все микросервисные Go-фрэймворки плохо документированы, вынуждая разбираться в них по примерам с исходниками (!).

    Англоязычных книг по Golang в электронном виде бесплатно - много, более 30 (а то и под 50). Многие написаны индусами, или оторванными от жизни вузовскими преподами, или какими-то левыми любителями Go (у таких "книг" даже нет ISBN). Есть даже книги, написанные неграми! Все такие книги требуют осторожного выбора. Почему именно Go вызвал у окружающих непреодолимые позывы к графоманству? Такое впечатление, что многие авантюристы решили "срубить баблишка" на "хайповой" теме. Действительно, найти хотя бы нормальную книгу (не говоря уже о хорошей) - оказывается по факту крайне непросто - почему-то именно к Go примазались многочисленные негодяи и бездари - как ни в каком ином языке программирования.

    Всё, о чём я рассказал в этом посте, доступно бесплатно онлайн в электронном виде (Либген, к примеру).

    В общем-то, основное внимание при изучении Go следует уделить его возможностям по многопоточности (concurrency), которые включают низкоуровневые механизмы (как в C++) типа мьютекса и высокоуровневые механизмы типа каналов. Собственно, это как раз то самое, зачем Go вообще понадобился. Вторая по значимости тема в Go, как мне кажется, это микросервисы.
    Ответ написан
    Комментировать
  • Какую книжку по TCP/IP лучше всего прочитать?

    @programrails
    Если для начинающих - Олиферы - однозначно. В Сети есть бесплатное 5-е издание Олиферов в формате DjVu - идеального качества. Все остальные перечисленные книги также есть в Сети в электронном виде бесплатно, но в них или недостаточно системный подход к изложению материала, или же просто они устарели (например, нет описания CIDR), или имеют плохой перевод (Таненбаум). Читая Олиферов, чувствуешь, что это редкая порода преподов, которые действительно хотят объяснить понятным языком - а не выпендриться своей учёностью (или замаскировать своё незнание пышными словесами): https://www.olifer.co.uk/we/we.htm

    Только найдите Олиферов 5-е издание (а то есть и более ранние) - чтобы не читать устаревшее.

    А уже после Олиферов - читайте всё остальное в этом списке - благо, что платить ничего не надо, всё бесплатно.

    UPDATE.

    Досталек Л., Кабелова А. «TCP/IP и DNS в теории и на практике.»
    Ответ написан
    Комментировать