LINUX.ORG.RU

История изменений

Исправление liksys, (текущая версия) :

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

  1. Айтишная сфера постоянно меняется, она не остановилась в развитии. Конечно, обновлять учебные материалы каждый код не представляется возможным, но хороший преподаватель должен учитывать вектор развития технологий и знакомить с ними студента. Столяров же принципиально отрицает всё, что не укладывается в его манямирок: современный веб, современные языки, современные подходы. Разберем поподробнее.

  2. Да, исполнение непонятного кода в браузере - это плохо, но это реальность, в которой нам приходится жить. Можно сколько угодно ругать омерзительные стандарты веба, но нельзя отрицать тот факт, что браузер дал нам возможность разрабатывать кроссплатформенные клиент-серверные приложения без необходимости собирать и поддерживать полтора десятка бинарей под разные системы. Современный пользователь ленив, и если перед ним будет стоять выбор «зайти по урлу» или «зайти по урлу, что-то скачать, установить и настроить» - то он выберет первое. К чему я это всё? Столяров отрицает веб, но на самом деле его необходимо изучать, со всеми его достоинствами и недостатками, чтобы у студентов было понимание того, какие технологии в каких случаях можно использовать. Даже если делать веб-морду к чему-либо, ее все равно можно сделать хорошей и быстрой, с уважением к пользовательским ресурсам и браузеру. Соответственно, нужно не говорить, что веб плохой, а показывать, как его сделать хорошим и учить компромиссам. Проектирование софта - это вообще о компромиссах, потому что нет идеальных решений, все технологии - в какой-то степени херня, вопрос в том, как сделать так, чтобы херовую часть обойти стороной, и использовать лучшую.

  3. Вся деятельность столярова крутится вокруг его крайне маргинальных представлений о том, каким должно быть программирование. Современный си ему не нравится, потому что поганые комитетчики испортили его любимый ANSI C. Плюсы не нравятся. Раст не нравится, питон тоже не нравится (можно было бы понять религиозную ненависть к скриптам, но нет, ведь пхп он пользоваться не гнушается, по собственному признанию). Для того, чтобы понять об уровне владения столяровым сями, достаточно почитать его код в талассе, где запросто находятся детские ошибки при аллокации и освобождении ресурсов из-за хронически-академического неумения пользоваться оператором goto.

  4. Поскольку столяров отрицает современные языки, то и компетенции в них у него, соответственно, низкие. Хуже всего то, что своими бреднями он засирает умы молодого поколения. Есть отличная статья, которая разбирает один известный опус его протеже о расте, разобранный по полочкам: https://habr.com/ru/articles/598219/

Например, эмбеддеры [на расте] пишут библиотеки, где на уровне типов нельзя выстрелить в ногу (хех) микроконтроллеру с неправильно сконфигурированными портами или переполнить стек. Разработчики операционных систем пишут абстракции конкуренции и доступа к ресурсам, не позволяющим их использовать неверно. Но они видимо Столярова не посещали и не знают, что это невозможно.

  1. Концепция начала преподавания с паскаля тоже безбожно устарела, как и сам паскаль. Тут я позволю себе вставить свою же цитату о том, каким должен быть правильный учебный курс:

… нужно рассказывать о том, как правильно структурировать проекты и декомпозировать задачу. Редкий софт пишется только на одном языке, и нужно понимать, где лучше использовать го, питон, или сишечку. Нужно показывать, как языки взаимодействуют друг с другом, как использовать плюсы того или иного языка и как получить от этого выигрыш, а не усираться, доказывая, что раст - говно, как это любит столяров. И не брать какие-то учебные языки, типа паскаля - это пустая трата академических часов, лучше учить сразу что-то более пригодное. А еще обучение не должно быть оторвано от реальности. Например, я уже неоднократно описывал общую идею курса для программирования, с оглядкой на MIT (они там используют питон для старта). Берем питон, показываем как пишутся алгоритмы на высоком уровне, как проектировать софт и декомпозировать задачу. Потом вводим си и показываем, чего на самом деле стоят все простые питоновские типы и как всё работает на низком уровне. Потом предлагаем задачу, которую на чистом си решать будет сложно, а на питоне - слишком медленно, и таким образом покажем, что бизнес-логику можно написать на простом высокоуровневом языке, а критичные к скорости части на си.

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

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

И еще:

Побочные эффекты вообще не являются пробемой, потому что это архитектурное свойство железа, которое порадила наша цивилизация. Побочные эффекты - это просто изменение данных вне функции значений. Например, если у нас есть read_file(FILE *fp) - то у нее будет очевидный побочный эффект в виде изменения оффсета в файле. Любые маломальски сложные программы состоят из побочных эффектов чуть более, смотря что принять за точку отсчета. Скажем, функция, которая принимает только константный массив байтов и записывает внутри себя файл - в глобальном смысле тоже имеет побочный эффект.

  1. На уровни личности, столяров - агрессивный громкий фрик. Вчерашние школьники, приходящие на его занятия, видят в этом буйном патлаче бунтаря-авторитета, и начинают принимать его шизу на веру. Его книги точно так же полны чуть более сдержанными, но такими же сомнительными догматами: это плохо, сюда не смотри, за это расстрел, а тут вообще вон из профессии. Такой ограниченный подход портит неокрепшие умы студентов, отбивая у них тягу изучать что-то новое. Это, на мой вкус, его самый большой грех: прививая изоляционизм и маргинальщину студентам, он отчудил множество потенциальных разработчиков от СПО.

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

  3. Столлман создал GNU и философствует на весь мир. Танненбаум написал кучу книг по архитектуре ОС, которые поддерживает в актуальном состоянии, и целую учебную ОС, теперь просочившуюся аж в кишки интела. Хотите научиться программировать? Купите хорошую книгу западного автора. Тогда вы точно не застрянете в девяностых, как сам столяров.

Исходная версия liksys, :

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

  1. Айтишная сфера меняется, она не застряла в девяностых, как сам столяров. Конечно, обновлять учебные материалы каждый код не представляется возможным, но хороший преподаватель должен учитывать вектор развития технологий и знакомить с ними студента. Столяров же принципиально отрицает всё, что не укладывается в его манямирок: современный веб, современные языки, современные подходы. Разберем поподробнее.

  2. Да, исполнение непонятного кода в браузере - это плохо, но это реальность, в которой нам приходится жить. Можно сколько угодно ругать омерзительные стандарты веба, но нельзя отрицать тот факт, что браузер дал нам возможность разрабатывать кроссплатформенные клиент-серверные приложения без необходимости собирать и поддерживать полтора десятка бинарей под разные системы. Современный пользователь ленив, и если перед ним будет стоять выбор «зайти по урлу» или «зайти по урлу, что-то скачать, установить и настроить» - то он выберет первое. К чему я это всё? Столяров отрицает веб, но на самом деле его необходимо изучать, со всеми его достоинствами и недостатками, чтобы у студентов было понимание того, какие технологии в каких случаях можно использовать. Даже если делать веб-морду к чему-либо, ее все равно можно сделать хорошей и быстрой, с уважением к пользовательским ресурсам и браузеру. Соответственно, нужно не говорить, что веб плохой, а показывать, как его сделать хорошим и учить компромиссам. Проектирование софта - это вообще о компромиссах, потому что нет идеальных решений, все технологии - в какой-то степени херня, вопрос в том, как сделать так, чтобы херовую часть обойти стороной, и использовать лучшую.

  3. Вся деятельность столярова крутится вокруг его крайне маргинальных представлений о том, каким должно быть программирование. Современный си ему не нравится, потому что поганые комитетчики испортили его любимый ANSI C. Плюсы не нравятся. Раст не нравится, питон тоже не нравится (можно было бы понять религиозную ненависть к скриптам, но нет, ведь пхп он пользоваться не гнушается, по собственному признанию). Для того, чтобы понять об уровне владения столяровым сями, достаточно почитать его код в талассе, где запросто находятся детские ошибки при аллокации и освобождении ресурсов из-за хронически-академического неумения пользоваться оператором goto.

  4. Поскольку столяров отрицает современные языки, то и компетенции в них у него, соответственно, низкие. Хуже всего то, что своими бреднями он засирает умы молодого поколения. Есть отличная статья, которая разбирает один известный опус его протеже о расте, разобранный по полочкам: https://habr.com/ru/articles/598219/

Например, эмбеддеры [на расте] пишут библиотеки, где на уровне типов нельзя выстрелить в ногу (хех) микроконтроллеру с неправильно сконфигурированными портами или переполнить стек. Разработчики операционных систем пишут абстракции конкуренции и доступа к ресурсам, не позволяющим их использовать неверно. Но они видимо Столярова не посещали и не знают, что это невозможно.

  1. Концепция начала преподавания с паскаля тоже безбожно устарела, как и сам паскаль. Тут я позволю себе вставить свою же цитату о том, каким должен быть правильный учебный курс:

… нужно рассказывать о том, как правильно структурировать проекты и декомпозировать задачу. Редкий софт пишется только на одном языке, и нужно понимать, где лучше использовать го, питон, или сишечку. Нужно показывать, как языки взаимодействуют друг с другом, как использовать плюсы того или иного языка и как получить от этого выигрыш, а не усираться, доказывая, что раст - говно, как это любит столяров. И не брать какие-то учебные языки, типа паскаля - это пустая трата академических часов, лучше учить сразу что-то более пригодное. А еще обучение не должно быть оторвано от реальности. Например, я уже неоднократно описывал общую идею курса для программирования, с оглядкой на MIT (они там используют питон для старта). Берем питон, показываем как пишутся алгоритмы на высоком уровне, как проектировать софт и декомпозировать задачу. Потом вводим си и показываем, чего на самом деле стоят все простые питоновские типы и как всё работает на низком уровне. Потом предлагаем задачу, которую на чистом си решать будет сложно, а на питоне - слишком медленно, и таким образом покажем, что бизнес-логику можно написать на простом высокоуровневом языке, а критичные к скорости части на си.

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

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

И еще:

Побочные эффекты вообще не являются пробемой, потому что это архитектурное свойство железа, которое порадила наша цивилизация. Побочные эффекты - это просто изменение данных вне функции значений. Например, если у нас есть read_file(FILE *fp) - то у нее будет очевидный побочный эффект в виде изменения оффсета в файле. Любые маломальски сложные программы состоят из побочных эффектов чуть более, смотря что принять за точку отсчета. Скажем, функция, которая принимает только константный массив байтов и записывает внутри себя файл - в глобальном смысле тоже имеет побочный эффект.

  1. На уровни личности, столяров - агрессивный громкий фрик. Вчерашние школьники, приходящие на его занятия, видят в этом буйном патлаче бунтаря-авторитета, и начинают принимать его шизу на веру. Его книги точно так же полны чуть более сдержанными, но такими же сомнительными догматами: это плохо, сюда не смотри, за это расстрел, а тут вообще вон из профессии. Такой ограниченный подход портит неокрепшие умы студентов, отбивая у них тягу изучать что-то новое. Это, на мой вкус, его самый большой грех: прививая изоляционизм и маргинальщину студентам, он отчудил множество потенциальных разработчиков от СПО.

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

  3. Столлман создал GNU и философствует на весь мир. Танненбаум написал кучу книг по архитектуре ОС, которые поддерживает в актуальном состоянии, и целую учебную ОС, теперь просочившуюся аж в кишки интела. Хотите научиться программировать? Купите хорошую книгу западного автора. Тогда вы точно не застрянете в девяностых, как сам столяров.