LINUX.ORG.RU
ФорумTalks

Рецензия на книги А. В. Столярова

 , ,


1

3

Столяров (@Croco) трудился в университете, как полагается, вел несколько курсов лекций. Все преподаватели ведут несколько смежных курсов, но в отличие от большинства, Столяров выкладывал свои методички в публичный доступ. В 2016 году за деньги с донатов он взял материал этих курсов, расширил его беседами с лекций и практик и все это опубликовал. В итоге получился обыкновенный курс программирования любого, подчеркиваю, любого профильного вуза страны.

Что важно, этот курс стал бесплатно доступен любому желающему в два клика, без необходимости проходить бюрократический фильтр и платить цену автомобиля за доступ к информации. Благодаря работе Столярова любой заинтересованный человек получает качественно отредактированный конспект лекций МГУ по программированию с пояснениями. По содержанию это +/- 1999 или 2000 год.

Абсолютно ничего нового, революционного, свежего Столяров не написал. К моменту публикации (2016 год) по темам, затронутым Столяровым, было опубликовано десятки книг, которые пережили множество изданий. Например, книги по TCP/IP от издательства O’Reilly к тому времени издавались уже 20 лет и имели по 7-8 улучшенных и дополненных изданий.

Мало того, что Столяров опубликовал прописные истины администрирования и программирования, он еще их щедро разбавил философией лаборанта из 90-х. То есть технические книги стали содержать в себе конспекты типовых разговоров второкурсников за бутылкой водки. Что, конечно, добавило живости в чтиво, но дурно влияет на 17-летних подростков, которые пьяный трёп обслуживающего персонала воспринимают за жизненную философию и руководство к действию.

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

Но как разработчик, как автор, он не сделал ничего нового. И сам по себе является карикатурным образом админа 90-х, про которых писали юмористические рассказы в Fido. Попытка доказать всему честному люду, какой он великий инженер, через постройку велосипеда, развалившегося на первой кочке, — это типичный пример творчества тех лет. Рассказов про Винипуха и боды и записок Жены программиста.

Столяров эти рассказы воплотил в жизнь, начав писать CMS мечты и допустив постыднейшую ошибку в безопасности.

Вывод: Столяров — это классический, можно сказать, эталонный системный администратор из 90-х. Человек, который отказался развиваться, отринул курсы повышения квалификации и навсегда остался в сладком возрасте 20 лет в рамках того давно ушедшего социума, его стереотипов и правил.

Книги Столярова — это книги 90-х, хотя они написаны через четверть века, в конце 2010-х. Это памятник эпохи начала массовой компьютеризации в России. Это надо понимать при работе с ними. Читая работы Столярова, надо давать «поправку на ветер», и всё будет хорошо.

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

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

Ответ на: комментарий от mister_VA

Возможно. Но именно в качестве первого языка, а не в качестве учебного.

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

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

lbvf50txt
() автор топика
Ответ на: комментарий от mister_VA

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

Студент это человек сдавший экзамен по алгебре и началам анализа. Понимающий асимпототы, логарифмы, тригонометрию, производные. И после всех этих абстрактных рассуждений, и двух-этажных примеров, его должны ввести в заблуждение отступы. Разве это не абсурд?

lbvf50txt
() автор топика
Ответ на: комментарий от lbvf50txt

давайте придумаем пред учебный язык, пред-пред учебный, и пред-пред-пред-учебный.

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

Python и так достаточно абстрагирован и прост.

Да, но не удобен в качестве учебного. И сильно раздут теперь. И фрагментированы его реализации. И потом его всё рано надо будет доучивать по пособиям, которые начнутся… от печки, а не с того места, до которого его освоил студент.

На возражения, что его таки используют как учебный, сообщу, что в качестве учебного использовали и используют много какие ЯП, например, блок-схемы и Фортран IV, Алгол-68, QBasic и пр., Java, Си и C++, чуть ли не все диалекты Лиспа, собственноручно выдуманные, кальки с других (ершовский я уже упоминал). Знавал я тех, кто использовать встроенный в M$ Office ВыжралВасик и встроенный в OO Пистон.

mister_VA ★★
()
Ответ на: комментарий от lbvf50txt

его должны ввести в заблуждение отступы. Разве это не абсурд?

Какие заблуждения? Кривые руки и косые глаза. Тута писали про взрослых студентах, что писали (в Си) for(;;;);{} и думали, а почему ошибка? А ловить ошибки, когда правильность алгоритма зависит от правильности расстановки пробелов у челов, любящих выполнять задания копипастой…

mister_VA ★★
()
Ответ на: комментарий от mister_VA

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

Программисты — это практики. Все эти «Паскали» и «Tlc» — это для математиков-философов. Программисту нужно что-то фактически работающее. Иначе потом начинаются рассказы о каких-то квелых студентах, которые Си освоить не могут. Так потому и не могут, что пошли не программировать, а на модный факультет.

Те же кто пошел программировать, как правило еще в школе имеют опыт. У них не Си не указатели вопросов не вызывают.

lbvf50txt
() автор топика
Ответ на: комментарий от mister_VA

Тута топят за Питон. Я спрошу, а какой из? Его реализации УЖЕ фрагментированы

Нет никакой фрагментации. Python 3 вышел в 2008. В 2015 продакшн уже массово переходил на 3.4. В 2016 был 3.6, который добил вторую ветку настолько, что в 2020 ее официально закопали.

Еще раз: стабильный python 3, на который все перешли, зарелизили почти 10 лет назад. Вылезай из криокамеры.

И сколько раз объяснять одно и то же?

Сто раз повторенный бред на стопервый бредом быть не перестанет.

после изучения программирования ВСЁ РАВНО придётся учить «рабочие языки»

Попробуй сразу учить рабочий язык.

Объясняю ещё раз: в Паскале цикл со счётчиком имеет синтаксис, не позволяющий его использовать как-то иначе, а в Си for и while полностью ВЗАИМОзаменяемы, for в Си можно использовать без всякого счётчика.

В этом вообще нет никакой проблемы.

с системой сборки

Какой системой сборки, пыль ты кабинетная? У сей нету дефолтной системы сборки, каждый городит свой огород.

liksys ★★★★
()
Ответ на: комментарий от mister_VA

Тута писали про взрослых студентах, что писали (в Си) for(;;;);{} и думали, а почему ошибка?

Это cherry picking. В вузах полным полно случайных людей, которым предметы не нужны, им нужен документ о высшем образовании. Не надо их приводить в пример.

lbvf50txt
() автор топика
Ответ на: комментарий от mister_VA

Да, но не удобен в качестве учебного.

Он тебе неудобен, потому что ты его не знаешь. Вообще. Ты что-то там слышал о нем, где-то читал на форуме, но вместо того, чтобы пойти и изучить вопрос - сидишь и строчишь тут свои бредни. Про раздутость, про фрагментацию, остальную чушь.

liksys ★★★★
()
Ответ на: комментарий от lbvf50txt

Некогда изучать учебные языки.

А их и не надо изучать. Но язык, выбранный в качестве иллюстративного, изучен НЕ БУДЕТ. Как ЯП его всё равно придётся учить отдельно. Или совместно с, но тогда времени будет потрачено столько же.

Программисты — это практики.

Угу. И все 25 студентов в группе будут в дальнейшем заниматься 25 разными практиками, а вот прямо сейчас им интересно 25 разных направлений, у каждого своё. Кому-то мод на Луа в стратежке, кому-то инди-игрулька на Java в смартфоне и это не тоже самое, что мод на Java в Майнкрафте, чего хочется третьему, четвёртый что-то на Малинке крутит, пятый с датчиками для «умного дома» мутит и т.д. Чем будем практиковаться? Си для станков с ЧПУ?

mister_VA ★★
()
Ответ на: комментарий от hobbit

Да даже в объектном паскале, который половина ЛОРа считает «мёртвым языком для школьников», а ещё половина половины даже школьникам не хочет его показывать, нормальные модули были уже в начале 90-х.

Да даже раньше, наверное.

luke ★★★★★
()
Ответ на: комментарий от liksys

Какой системой сборки, пыль ты кабинетная?

С самыми распространёнными, которые прикручиваются к проекту синей изолентой или колючей проволокой.

P.S. У Пистона есть «эталонная реализация» CPython и вагон с хреном не эталонных разной степени совместимости. Никогда не сталкивались с учебными Питонами, встроенными в обучающую среду?

mister_VA ★★
()
Ответ на: комментарий от liksys

Он тебе неудобен, потому что ты его не знаешь.

А как вам доказать, что я знаю? Я профессионально программирую на питоне с 2007го года, более десяти лет модерировал несколько профильных форумов, выступал на девконе и пайконе. Есть маленький шанс, что вы признаете меня немного знающим? Если да, то я тоже сугубо против питона для обучения, категорически против.

FishHook
()
Последнее исправление: FishHook (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

У них не Си не указатели вопросов не вызывают.

Со смартфона в метро писали? Вот вы в русском делаете элементарные ошибки или очепятки, думаете, «студенты-практики» в программах меньше накосячат?

P.S. У них нИ Си, (ЗПТ!!!) нИ указатели вопросов не вызывают.

mister_VA ★★
()
Ответ на: комментарий от liksys

Мне Python нравится все больше с каждой минутой. Причина следующая: на языке нарабатывается инерция кодирования, и переходить с одного языка на другой не очень приятно. Нужен какой-то лаг для набора «скорости». Массовость Python гарантирует, что библиотеки «прослойки» для GUI и остальных областей будут хорошо написаны.

Значит, набрав инерцию кодирования на Python, можно с легкостью вести несколько проектов под Android, iOS, Web и так далее. Да, это будет не идеально, но в рабочем варианте приемлемо. Главное, проекты будут идти, а не находиться в ожидании.

Если до наших разговоров Python рассматривался мной в основном как удобный язык для Leetcode (хорошая heap прям в языке), то теперь диапазон его применения для меня расширился. И как-то ради одного Leetcode набирать «скорость» в Python не очень-то и хотелось, а сейчас, просмотрев разные фреймворки, хочется сильнее.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

На Python можно буквально делать всё.

Вот два чая. Двоюродный племянник-школьник пишет телеграм бота на Питоне. Сделать это на сишечке - задача со звездочкой. Загуглил, есть библиотека на паскале, но без документации.

goingUp ★★★★★
()
Ответ на: комментарий от mister_VA

язык, выбранный в качестве иллюстративного, изучен НЕ БУДЕТ

Потому что твоя методика обучения - говно. Ничего не мешает иллюстрировать на питоне, а потом изучать питон. Это абсолютно логично и последовательно.

Чем будем практиковаться?

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

С самыми распространёнными, которые прикручиваются к проекту синей изолентой или колючей проволокой.

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

У Пистона есть «эталонная реализация» CPython

Это не только «эталонная», это, фактически, единственная реализация. Остальные версии - локальные цугундеры, отличающиеся в деталях, и нужные только после углубленного изучения питона.

liksys ★★★★
()
Ответ на: комментарий от FishHook

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

Есть :) Но твой опыт не сделает тебя правым в этой ситуации, увы. У меня есть вполне цельная концепция обучения на основе питона, над которой я размышляю уже не первый год.

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

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от mister_VA

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

А чего сюда ещё намешать нужно? Давайте до кучи накинем изучить «изучить разные операционные системы», «железо кудахтеров и переферии», «прокладку и сварку опты»...

anc ★★★★★
()
Ответ на: комментарий от lbvf50txt

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

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

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

Впрочем, это беда не только питона, но в его экосистеме, похоже до какого-то совсем уже маразма доходить стало. У меня на компе уже как бы не с 10-к разных env-окружений скопилось. Дело идет к тому, что фактически под каждую крупную программу свой venv со своими версиями библиотек.

С этой точки зрения может даже C# или Java лучше как первый язык. Их экосистема намного стабильнее.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 2)
Ответ на: комментарий от anc

Давайте до кучи накинем изучить

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

vM ★★
()
Ответ на: комментарий от lbvf50txt

ньет! (молотай)

Питон - очевидно универсален ( а с прогрессом mojo либо разGILивание то всё более и более годный и для большого), но!:

история (см grail где питон был фронтенд и почти успел непоявить javascript) Python это шелл которого не было(не возникло) в Кернигании

в начале 90ых Python/C linux/Gnu <= так GVI distributed objects позиционировал свой шедевр --- поначалу python и lua почти близнецы в разных костюмах, тем познавательно как эволюция развела

даже отвал reload ( упрятывание в importlib) - по факту затрудняющее(тренды) разработку в малом (через repl плодение микро модулей ) под эгидой «это плохая практика путающая рядовых» - показывает как сложно мэнеджит(развитие) универсальный язык

Python тем хорош как первый язык что это лучший вариант шелла- языка интерактивного взаимодейсвия пользователя с машиной

Go - это переносимый асм для многопоточной модели ( Go это буквально С ) - сложность Golang не в компактности (первых версий) - а постепенном росте буккипинга тех вещей механизма прикручивания которых не предусмотрели ( в отличии от dunder пути как промежуточного между процедуры|методы и погружением C(иноязычные)модули - перегрузка синтаксиса которая отсутствует в Go )

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 2)
Ответ на: комментарий от mister_VA

будь в Паскаль перегрузка синтаксиса ( не вакханалия lisp forth) а чисто дандер-питония ( частично в delphi появилось но нет)

то ага

qulinxao3 ★★
()
Ответ на: комментарий от mister_VA

ненене - це эффект утёнка

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

лесенка это визуальная вложенность(см https://docs.python.org/3/reference/lexical_analysis.html#line-structure - по факту тоже стек) - а вложенность операторных_скобок - это парсинг потока

вывод через input - индустрия такая

qulinxao3 ★★
()
Ответ на: комментарий от lbvf50txt

https://ru.wikipedia.org/wiki/Профессия_(повесть)

см 1 том(https://en.wikipedia.org/wiki/Great_Conversation) от (https://en.wikipedia.org/wiki/Great_Books_of_the_Western_World)

«15 минут в день для торопящихся деловых людей и вы освоите Британику»

торопление хомяков это машонство

qulinxao3 ★★
()
Ответ на: комментарий от liksys

хомяки до array не доходят ибо с одной стороны list c другой NumPy-контейнеры

вот проявление уже фрагментировнности python-а который и для шела и для hfc - поэтому разные трейдофы разных синонимов

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

в естественных языках этот эфект проявляется при ознакомление с первым после первого языком

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от praseodim

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

Да, для практических поделок на Python нужны фреймворки «прокладки», реализующие отдельный уровень абстракции над нативными инструментами для платформы. Такие фреймворки нужно устанавливать отдельно, предварительно выбрав из нескольких альтернатив. Более того, они не оптимальны по ресурсам и палитре возможностей: Web лучше писать на JS, Android — на том же JS, Kotlin или Dart, а игры — на C# в Unity и т.д. и т.п. Это плата за универсальность: потребляется больше ресурсов, и для конкретной платформы решение оказывается более шаблонным.

С другой стороны:

Базовое кодирование в CLI, алгоритмы «Leetcode», админские скрипты — для всех этих трех направлений хватает Python из коробки; переписывать учебные программы не требуется.

Python так удобен для Competitive Programming по причине наличия структур данных сразу в языке, а именно minheap и hashtable, он же dictionary.

С этой точки зрения может даже C# или Java лучше как первый язык. Их экосистема намного стабильнее.

Стабильнее, особенно у C#. Но и ограниченнее в поле выбора: Python везде, а C# — в Windows(?). В любом случае Python более прост, лаконичен, востребован и популярен.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 3)
Ответ на: комментарий от liksys

да просто сравни Python 0.9 и Python 3.14

идеал явно не на краях и не в середине ибо индустрия и публика не эталон

qulinxao3 ★★
()
Ответ на: комментарий от mister_VA

ну не нато

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

т/е проподевтически указатели ваще проще на асме обьяснят но асм сам по себе из за строчного синтаксиса слишком «программирования в малом» поэтому паскаль для указетелей был(sic!) оптимален

ваще проблема «Тартюф узнал что излагает прозой» когда люди не отделяют мысли(семантику) от речи(синтаксиса) - поэтому по факту прогеров всегда стоит ознакамливать с разными синтаксисами для демонстрации как разные синтаксисы удобны для разных стилей

qulinxao3 ★★
()
Ответ на: комментарий от lbvf50txt

Разве это не абсурд?

Это реальность. Я уже молчу о том что визуально можно этот отступ сделать разными символами.

sabacs
()
Ответ на: комментарий от qulinxao3

Тартюф узнал что излагает прозой

Журден, вообще-то. Тартюф это тот, который подлянки окружающим строил.

hobbit ★★★★★
()
Ответ на: комментарий от liksys

питон это лучший shell

поэтому - а так прогер-школоте стоит быть ознакомленными с корпусом синтасисов что-бы не закисать в отсупах

qulinxao3 ★★
()
Ответ на: комментарий от qulinxao3

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

Да, и лисповый обязателен. Я вот не ознакомился, теперь периодически жалею.

hobbit ★★★★★
()
Ответ на: комментарий от qulinxao3

Тогда это будет уже учебный (мёртвый) язык, линксус не одобрит! :)

sabacs
()
Ответ на: комментарий от qulinxao3

Go - это переносимый асм для многопоточной модели ( Go это буквально С )

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

  • Синтаксис циклов и условий: Си
  • Синтаксис слайсов: Python
  • Замыкания: JavaScript
  • Утинная типизация: Ruby

Все непонятное (вызывающее путаницу) убрали:

  • Наследование
  • Миксины
  • this
  • Динамическу типизацию
  • Не явное приведение типов

Получился язык по синтаксису, похожий на Си, с возможностями ООП и функционального программирования. Да еще синтаксис как следует урезали, чтобы каждый разработчик не выбирал себе любимые синонимы и не создавал свой собственный диалект (обычно в других языках этим занимается ворчун-Linter).

P.S. Естественно, добавили Concurrency, так как это прежде всего серверный язык, где часто надо сидеть и ждать ответа по сети.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 4)
Ответ на: комментарий от hobbit

Наследование-то кому помешало? Мощный гибкий инструмент. К расту тот же вопрос.

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

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

lbvf50txt
() автор топика
Ответ на: комментарий от hobbit

исходно обьект и есть эталоный представитель себеподобных

а так как объект динамически меняем структурно то себеподобие через самоэталонность ака прототипное наследование как завещал Кей Алан

тут приходит реальность с дороговизной(относительной) динамичности vs статичности на скорости - отделяем эталон от объекта - отделяем момент эталоннирования от момента появления объекта - и прочие прелести удвоения рефлексии и получаем из продуктивного прототипного наследования увязанное на нюансы реализаций классическое наследование типов

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от sabacs

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

Как раз наоборот. Наследование используется для борьбы с связанностью. «Extend, not modify» в S.O.L.I.D. концепции.

Подробнее у Sandi Metz и Jim Weirich.

lbvf50txt
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)