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-х. Это памятник эпохи начала массовой компьютеризации в России. Это надо понимать при работе с ними. Читая работы Столярова, надо давать «поправку на ветер», и всё будет хорошо.

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

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

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

Вот после такого отношения люди и идут на курсы к инфоцыганам, потому что они конкретно говорят, вот после этого курса зп 150к, а после этого 200к.

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

Вся их проблема, в продаже того что лежит бесплатно, но если в оплату входит работа с преподавателем и она на уровне, то почему это плохо. Может кому то такое нравится.

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

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

Новичку в любом случае нужен наставник, для школьника это кружки или школа (если повезет), в университете есть выбор среди преподавателей (профильных существенно больше, чем в школе) и всякие старшекурсники и аспиранты…

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

По С++ Страуструп регулярно переиздает книгу для новичков – можно начать читать ее, как первую книгу.

Если же хочется железа, то надо найти книгу по ардуино.

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

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

А варианты «прослушать этот курс и начать зарабатывать 200к» не бывает. Наиболее близкий вариант это «поступить в на эту программу в вузе, хорошо отучиться и устроиться на работу сразу на 100к» – вот таких вариантов много.

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

А варианты «прослушать этот курс и начать зарабатывать 200к» не бывает. Наиболее близкий вариант это «поступить в на эту программу в вузе, хорошо отучиться и устроиться на работу сразу на 100к» – вот таких вариантов много.

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

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

Конечно бывает, непонятно где обучение будет лучше. 200к многовато, 100к сам видел.

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

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

Так я потому и сказал, что «вариантов много», разумеется это не означает, что любой вуз и любая программа.

ВУЗ дает перспективы, с высшим образованием, если оно хорошее, карьерный потолок довольно высок.

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

Столяров вот недавно переиздание первого тома сделал, тогда о чем вообще спор? Вопрос в том и стоял, что инфа вся там из 90х, и типа это не хорошо, нужно чтобы все свежее было. А в книгах которые сейчас переиздаются с 50х годов, там точно актуальная информация? да и вообще таких книг пруд пруди, что именно читать чтобы не стыдно было называться программистом?

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

Ты много новичков видел чтобы они таким способом научились? Им даже как пользоваться гитхабом нужно учить. Почему-то у всех какая-то убежденность, что все всё знают, и им просто дай сырцы и компилятор и они во всем разберутся. Т.е. кто-то может так и сможет, но большинство даже пробовать не станет, потому что это боль, и чтобы они остались и продолжили учиться их нужно провести за ручку. Для обучения конкретному языку или даже одному стеку технологий это вполне можно найти, но в целом по программированию я особо не видел, даже sicp вполне специфичная для этого, там кучи всего что нужно нет, и того что нужно знать до нее, и после нее.

screamager
()
Ответ на: комментарий от MOPKOBKA

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

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

повторюсь

«игры с чипом» если ребёнка торкнула то дорожка очевидно

есть вагон других «инициаторов» в программирования индустрию

а вот попытка сделать вход равно интересным и для «iq80» и для «iq130» и всех промеж при всей условности меры лишь профанация и ...

в первую очередь важна личная мотивация(да через индокринацию и прочие тараканы мышления тоже работает при всей не чистоте по этике)

вообще уже давно не так остра задача научить всех

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

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

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

если чел желает то действует

иначе это «что бы всё было и ничего за это не было»

и да благодаря прогрессу уже давно люди всё более и более упёрты_в_экономии_своих_усилий

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

в некоторых современных обществах 1+1==2 перестало быть актуальным

не на долго но отсутствие догмы 1+1==2 среди самой прогрессивной(эволюционно) части даёт преимущество - как многое другое оппортунистическое поведение

Филип Дик «Золотой человек» Золотой человек. The Golden Man. Другие названия: The God Who Runs. Рассказ, 1954 год.

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

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

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

если не шутишь

то Керниган & Плоджер варианты на pascal и ratfor :)

Керниган & Пайк но без редактора :)

ваще Керниган почти Таненбаум но в иной оси

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

а вот попытка сделать вход равно интересным и для «iq80» и для «iq130»

но ведь оба два в айтишку не пойдут, если так хочется показывать интелектуальное превосходство, то в IT идти не следует, потому что тут средняя цифра IQ дай бог 60, а у ортодоксальных програмистов на С и того меньше.

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

Только я вижу результат их работы, и прихожу к ним с критикой - мол, ребят, после вас студенты нифига не готовы к работе, может, измените подход?

Что значит не готовы? Питона не знают?

На самом деле нет. Стеки и VCS не важны, важен подход, как я уже на прошлых страницах писал: декомпозиция, проектирование, сопровождение проекта и так далее.

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

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

Он считает, что их область применения в основном - DSL и они не должны применяться как универсальные языки общего назначения. Позиция спорная, но Столяров вообще-то учит и скриптовым языкам: TCL и отчасти bash. Да и lisp, если его считать скриптовым. Но да, Питон он не любит, как и Javascript.

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

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

В конце-концов, есть практика, есть стажеры.

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

Это не побочный эффект.

Тут Столяров, повторю, что слишком много философии развел на пустом месте. В этом согласен с его критиками.

Потому что ну, что значит не побочный эффект?

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

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

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

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

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

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

Может выявит, а может выявить но не то, что нужно было выявлять. Не совсем редко встречается такое: Есть некая историческая фигня, никто уже не помнит почему оно так, но все действуют по этой исторической фигне. И вот приходит человек «со взглядом со стороны» и указывает на эту фигню. Народ начинает думать... и вроде действительно же фигня. Решают её отменить. И вот происходит «бабах», тут-то народ и вспоминает нафига была нужна та фигня.
Случается что «бабах» происходит по прошествии большого времени, когда тех кто помнит об «отмененной фигне» уже нет и тогда начинают изобретать «фигню v2».

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

ACM eDITOR

acme не случился

ибо

association ( асоциация )

computing (вычислительной)

machinery (махинации)

не смогла объегорить публику на мякине

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

Потому что ну, что значит не побочный эффект?

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

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

Ну и где Вы здесь увидели противоречие-то?

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

Я вообще не понимаю с чем Вы спорите.

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

Фактически это просто не функция, в общем случае.

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

value, status = function ReadXXX(f, pos, count)

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

Что значит не готовы? Питона не знают?

Читай мой первый пост в этом треде.

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

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

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

Позиция не просто спорная, а в высшей степени ламерская.

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

IRC это вообще ужас, там какая то КОНШОЛЬ и я вообще не понимаю куда что жать, какие то комманды как на сервере в cs(1.6/:s), я оператор АЭС или просто хочу отправить текстовые или возможно медиа сообщения?

А ещё 20 лет назад у обычного пользователя оффтопика с пальцем прилипшим к мышке никаких вопросов в работе IRC не возникало.

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

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

Не должно, но происходит или может происходить. И с этим надо как-то жить.

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

Ну и где Вы здесь увидели противоречие-то?

Я вообще не понимаю с чем Вы спорите.

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

Фактически это просто не функция, в общем случае.

Так оно и получается.

value, status = function ReadXXX(f, pos, count)

Это уж точно не по Столяровски =)

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

Не должно, но происходит или может происходить. И с этим надо как-то жить

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

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

Да это так. В том числе поэтому для обучения Паскаль предпочтительнее.

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

Речь, в данном случае, о побочных результатах при вычислении выражений. Что то типа этого, например x = x++ - ++y Либо о функциях типа int f(int *x), используемых в выражениях типа z = x*f(x) + x*x и т.п.

Так оно и получается.

Многие здесь с этим не согласны. Вообще, как я уже говорил, «функция» это неудачный термин, лучше говорить подпрограмма или процедура, потому что в общем случае это будет именно так (чаще всего это будет именно так).

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

Математический объект, соответствующий процедуре (подпрограмме) — это конечный автомат. Но начинающий вообще не в курсе что это такое.

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

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

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

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

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

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

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

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

Вы упорно путаете изучение ЯП с изучением П. Совершенно не важно, каким будет учебный ЯП, он всё равно будет Паскалем или будет много-много головной боли у всех участников учебного процесса. Т.о. по завершении пропедевтического курса (один-два курса ВУЗа в зависимости от интенсивности), придётся изучать требуемые языки программирования. С нуля.

Можно пойти вашим путём, т.е. учить один за другим ЯП, что-то на них писать и, может быть, таким образом НЕКОТОРЫЕ, возможно, довольно многие из выживших в процессе, и научатся программированию, а не просто умению записывать стандартные алгоритмы на известных им ЯП. Т.н. деятельностный подход.

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

Просто напомню, что цивилизациям вавилонян, египтян и греков на то потребовалось аж 3 тысячи лет, пока были написаны «Начала» Евклида. А академический подход вдалбливает все эти открытия в головы тринадцати-четырнадцатилетних пеньков за полтора учебных года.

И мне известен лишь ОДИН задукоментированный случай, когда ребёнок сам переоткрыл всё это, вплоть до тригонометрии, но через секансы и косекансы, а впоследствии стал известным юсовским математиком (имя я из-за своего дефекта памяти на имена не помню).

mister_VA ★★
()

Упоминалось ли в этом благословенном богами треде отношение Столярова к языкам с автоматическими сборщиками мусора? Если нет то зря.

webmaster2012-12-21
()
Ответ на: комментарий от webmaster2012-12-21

Есть некий набор идеалов и есть данная нам в очумениях реальность. Оба два не пересекающиеся множества, что не означает, что не надо иметь идеалов (слушайте песенку из «Золотого телёнка» в исполнении Андрея Миронова) и не надо стремиться к ним. Пока не подвезли гербовую бумагу, подтирайтесь лопухами, шо делать.

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

У нас в универе был паскаль, си, чуть-чуть плюсы, и разная эзотерика типа пролога. Если бы вместо паскаля нам давали питон, то мне его просто бы не пришлось отдельно учить с нуля. А лабы можно было бы на нем писать, в нише «компилируемых» ЯП в учебной программе все равно была сишечка. А паскаль вот чего-то ну никак не пригодился.

Ну а тем, кто после универа не пошли по специальности, наверное пофиг, нет?

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от webmaster2012-12-21

Упоминалось ли в этом благословенном богами треде отношение Столярова к языкам с автоматическими сборщиками мусора?

Упоминалось, а также отрицание веб-технологий, баз данных и кодировки юникод)

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

Очевидно ОП(чей-то виртуал) отыгрывает адекватность, не вполне умело на мой взгляд, и пытается троллить как «сторонников» этого шизоида так и «противников». Для полноты в треде не хватает только постулирования необходимости чистить память руками, т.к. в противном случае человеком вы не являетесь по мнению уважаемого автора Учебного Курса. Как такой жирный момент мог быть упущен?

P.s. Оказывается упоминалось, ну что же, я доволен.

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

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

А вы случайно не были его студентом? Интересно, как он относился к студентам, которые с ним спорили и не были согласны с его мнением?)

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

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

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

и пытается троллить как «сторонников» этого шизоида так и «противников».

Какой троллинг? Все предельно просто: Столяров отдельно, МГУ отдельно.

  • Лекции МГУ — хорошие.
  • Взгляды Столярова на технологии — деструктивные.

Столяров перепечатал лекции МГУ, положил их в открытый доступ — Cпасибо Столярову.

Столяров рассказывает завиральные идеи на своем сайте — Ребята, не слушайте Столярова.

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

Имеет. Возвращайся в дискуссию, когда прочитаешь мой первый пост в этом треде.

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

Вы упорно путаете изучение ЯП с изучением П.

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

Совершенно не важно, каким будет учебный ЯП, он всё равно будет Паскалем или будет много-много головной боли у всех участников учебного процесса.

Тоже нет. Отправляйся читать мой первый пост в этом треде, там для фанатов паскаля всё доступно написано.

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

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

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

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

Это постулаты системного программирования, которые Столяров переносит на прикладное.

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

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

Весь сыр бор из-за слова «профессия». Профессия подразумевает заработок денег. Если бы Столяров назвал свой курс «введение в теорию программирования», 90% вопросов к нему были бы сняты.

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

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

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