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

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

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

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

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

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

Так не получится. Во-первых, на сервере надо хранить исходный код комментария на случай редактирования.

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

Только сейчас уже не нулевые

Интернет-фашизм as is. Ты предлагаешь гонять трафик тогда, rjulf это вообще не нужно, и просто из-за своих убежденией массово забивать мировые каналы.

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

Ты вообще хоть раз что-то публиковал, или теоретизируешь? Автор САМ идет к издательству, и продает ему права. Не хочешь продавать права? Хорошо, требуй процент, если они согласятся. Или можешь издать сам. Копирайт защищает тебя от ситуации, когда ты написал книгу, а ее опубликовали и зарабатывают на ней, не спросив тебя. В твоем манямире без авторского права всё именно так работать и будет.

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

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

Да даже бы и стали, это всё равно получается узаконеное насилие.

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

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

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

Слишком коротко для полноценного определения, даже «классического» и не позволяет оценить степень твоего понимания.

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

Да. Потому что я не хочу скатываться в спор об определениях. Вот у Столярова оно такое. Насколько оно соответствует «классическому» — вопрос дискуссионный, но обсуждается не он, а именно твоё понимание концепции побочных эффектов в структурном программировании по Столярову.

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

Либо веди техническую дискуссию, либо оставайся наедине с верой в столярова дальше.

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

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

дык и с|tp тож 1-2 дня для program main(input,output) и int main(**args) тож

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

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

У меня не разваливались почему-то. А я админ нескольких конференций уже лет 18.

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

Так ни у кого не получается. На данный момент Джаббер — самый разумный компромисс, несмотря на его недостатки. Все остальные мессенджеры ещё хуже.

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

дых мода на lisp-машины и прочая hll-входной язык проца

ваще HLL vs LLL это буквально мэнеджерспик начала 60-ых когда СОБОЛ- мы пишим по англюкски а шкаф нам нужные отчёты присылает миловидной машинисткой без привлечения морлоков-техников

тот же структурный ассемблер в этом смысле мало отличим от с как примера переносимого ассемблера

«обычно» lll это синтаксически строковый язык

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

протоколы взаимодействия ака этикет (Элиас Норберт )

в той же Хакеры история компьютерной революции - Леви(?!)

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

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

Слишком коротко для полноценного определения

Достаточно, чтобы понять мою позицию.

не позволяет оценить степень твоего понимания.

Зато я могу прекрасно оценить степень твоего понимания. Ты не понимаешь ровным счетом нихрена, а просто цитируешь столяровские догматы, и пляшешь от них. Всё, что им не соответствует - объявляется ложным, а кто не согласен со столяровым - просто его не понял.

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

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

ЧТО И ТРЕБОВАЛОСЬ ДОКАЗАТЬ.

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

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

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

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

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

Так ни у кого не получается. На данный момент Джаббер — самый разумный компромисс, несмотря на его недостатки. Все остальные мессенджеры ещё хуже.

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

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

Потому что без JS невозможно сделать многие удобные функции. Часть вещей в принципе нереализуема без JS

htmx

«пока» через подключение js - в общем браузер может уметь в htmx атрибуты тогда на клиенте js анихилируем

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

который на стороне клиента рендерится жаваскриптом.

И что в этом хорошего?

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

Ага. Парой килобайтов комментариев каналы забьются, а терабайты каких-нибудь тупых сериалов — это ОК, так что ли?

По факту оверхед и скорость работы сайта с яваскриптами многократно превышает оверхед на скачивание предпросмотра комментариев и подобные штуки. Если все массово откажутся от скриптов и перейдут на простые сайты на plain xhtml без всяких там шрифтов, CSS, JS то загрузка каналов уменьшится, а не увеличится. Впрочем в процентном соотношении это всё равно будет немного, потому что в основном каналы забиты видео.

Автор САМ идет к издательству, и продает ему права.

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

А кто тебе дал право пользоваться тем, за что заплатили деньги другие люди?

Никто ничего не творит на пустом месте. Русский язык и буквы тоже не ты придумал, например. Не хочешь пойти заплатить Кириллу и Мефодию за буквы? А… они же с греческого алфавита содрали. Может ещё древним грекам заплатить?

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

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

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

Почему сразу злая? Может добрая компания тоже возьмёт и начнёт продавать и победит, ведь добро всегда побеждает зло?

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

дармоед.

Вот только обзываться не надо.

Хочешь получить контент - следуй условиям автора

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

Или ищи другой, бесплатный и законный вариант,

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

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

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

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

В курсе, поэтому в модуле были уже только процедуры. :)

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

И что в этом хорошего?

Быстрый отзывчивый интерфейс приложения форума.

Ага. Парой килобайтов комментариев каналы забьются

Да. Канал до юзера, если он с плохим интернетом.

Если все массово откажутся от скриптов и перейдут на простые сайты на plain xhtml без всяких там шрифтов

Ну то есть ты опять предлагаешь return to monkey вместо удобных и красивых сайтов. Спасибо, сами ешьте.

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

Это чушь. Есть кикстартеры и прочие площадки. Есть в конце-концов патреон. Есть площадки для публикации игр и хостинги для продажи видео. Было бы желание.

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

Это словоблудие, призванное оправдать твое желание получать всё на халяву.

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

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

Всё, что им не соответствует - объявляется ложным, а кто не согласен со столяровым - просто его не понял.

И зачем передергивать? Я выше написал, что согласие и понимание - это перпендикулярные понятия. Может ты и прав даже, а Столяров нет, но то что ты не понимаешь концепцию Столярова и активно её отвергаешь, даже не зная в чём суть — факт.

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

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

Вовсе нет. Я прочитал книгу и понял его концепцию. А вот считать её правильной или нет не определился. Ты конструктивной критики не предъявил. Чтобы что-то критиковать, надо вначале в этом разобраться и понять, а ты этого не сделал.

Я от тебя ожидал бы чего-то вроде «Столяровская концепция вот такая: <краткое изложение идеи>, классическая вот такая: <другой вариант>. Столяровская хуже вот по таким конкретным причинам: 1/ 2. 3. …»

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

… А ты закончил переходом на личности. К тому же ещё и необоснованным. Есть множество пунктов в которых я со Столяровым не согласен.

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

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

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

А чтобы был мессенджер и не говно — такого вообще нет на данный момент, но я не теряю надежду.

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

учитывая дипсик угар сжигание котировок

не удивителен отказ от row- js

отказ подобный utf-8 содержащий в себе 32 телетайпо-кода в начале из которых дай б-г используются не более 7

htmx часть очередного pumb&dump у Кроукфорда(json ) об этом и прочих королях и капустах:

https://www.youtube.com/watch?v=JxAXlJEmNMg&list=PL7664379246A246CB

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

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

Мне совершенно наплевать на мнение этого фрика относительно общепринятой терминологии. Он выдумал что-то в своей голове и теперь считает, что у всех сишников вокруг неправильное восприятие, а он один такой ПОНИМАЮЩИЙ.

Я достаточно подробно объяснил суть побочных эффектов, и что они не имеют отношения к его фантазиям про процедуры и функции. Ты же меня подталкиваешь к использованию его терминологии. Нет, я не буду этого делать, потому что она 1) противоречит общепринятой 2) я не считаю правильным в корне такое вольное обращение с побочными эффектами.

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

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

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

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

Ладно, сам напишу своё понимание:

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

Побочный эффект функции — это когда она делает что-то другое кроме вычисления возвращаемого значения, например что-то выводит на stdout, закрывает поток и тд.

Процедура — подпрограмма, которая вызывается ради некоторого эффекта. Этот эффект не является побочным, поскольку как раз ради него процедура и вызывается. Например процедура print_help может быть сделана для того чтобы выводить хелп по аргументам программы. Если процедуре требуется вернуть значение (например, получилось или нет), это делается через var-параметр или как-то ещё.

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

В C нет разделения на процедуры и функции, но можно использовать функции возвращающие void и применять тот же подход. Кроме «стандартных» функций, где такое не соблюдается.

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

Ну не знаю, не знаю. Вон я попытался объяснить выше. Посмотрим, поймёшь ты или нет.

Иди, пожалуйста, в гостевую с ним обсуждай его шизу.

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

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

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

Процедура — подпрограмма, которая вызывается ради некоторого эффекта… Столяров предлагает выдерживать строгое разделение между процедурами и функциями. То есть если требуется значение, то использовать функцию и в ней не делать ничего кроме вычисления этого значения. Если требуется эффект, то следует использовать процедуру.

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

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

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

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

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

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

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

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

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

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

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

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

Если обернёшь в условную компиляцию, то по умолчанию ПЭ нет, а если сделаешь -D DEBUG или как там, то появится, но я думаю, такое допустимо. Хотя можно через дебаггер запустить.

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

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

который в случае си станет возвращаемым значением.

Можно возвращать значение через var-параметр или в случае с Си через параметр с амперсандом, как в scanf и оставить это процедурой или void-функцией.

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

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

А почему бы и нет? Если давать для начала Pascal и объяснить различие между функциями и процедурами, то автоматически всё будет.

В любом случае я не согласен с теми, кто вопит «Давайте выкинем Scheme / Pascal из обучения, они устарели!!1одинодин», потому что я считаю, что изучение двух языков далеко не обязательно займёт больше времени, чем изучение одного языка.

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

в любом случае это побочным эффектом не считается

Очень удобно.

но я думаю, такое допустимо

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

Можно возвращать значение через var-параметр

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

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

Разница есть как раз таки в голове… сразу видно, где вызов подпрограммы ради эффекта (не побочного, а именно основного), а где ради значения.

Поэтому проще учить нормальные языки типа питона и си, в которых нет искусственного разделения, и просто объяснить, что не надо менять входные данные без необходимости. А в случае си просто обмажься const-модификаторами, и сразу станет ясно, есть тут локальный (!) побочный эффект, или нет.

А почему бы и нет? Если давать для начала Pascal и объяснить различие между функциями и процедурами, то автоматически всё будет.

Нет смысла и количество учебных часов ограничено. Перечитывай мой исходный пост в этом треде, там всё доступно расписано.

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

Извиняюсь за резкость и лаконичность, но @Xenius — обитатель форумов, который в принципе не собирается заниматься практикой. О чем, надо отдать ему должное, он честно говорит.

Не имея ни малейшего практического опыта, @Xenius будет некритично транслировать те идеи, которые ему понравились. Для вас программирование — это реальные проекты, сроки, деньги. А для него это тема для бесконечного разговора: кто круче — Саруман или Том Бомбадил?

Мне сейчас понятно, что фанаты радикализма @Croco — это люди типа @Xenius, которые в принципе НЕ ПЛАНИРУЮТ работать программистами. Тем, кто планирует работать по специальности, и делает практиескиие шаги к своей цели, заблуждения Столярова не помеха. Столяров их с «пути» не собьет, а только поможет в рамках той компетенции, которой обладает.

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

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

В основном на уровне качественного фидошного околотехнического срача.

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

В основном на уровне качественного фидошного околотехнического срача.

Это высокая оценка. Фидо это сеть которая целиком состояла из квалифицированных специалистов с широким практическим опытом. Самое подключение к сети было не тривиальной технической задачей.

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

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

Если что, это было моё понимание, а я не Столяров.

Это отлично демонстрирует, что столяровское разделение искусственно

А кто говорит, что не искусственно? Те же циклы - это искусственные конструкции, которые можно заменить на IF с GOTO и в некоторых диалектах бейсика так и было. Как думаешь, зачем придумали структурное программирование и сказали, что «GOTO is considered harmful», а так же ввели разные виды циклов?

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

и не имеет ничего общего с реальностью.

Как минимум в Pascal имеют.

Нет смысла и количество учебных часов ограничено.

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

Перечитывай мой исходный пост в этом треде, там всё доступно расписано.

Я на него уже отвечал. Пойдём по кругу?

1. Нафига нужен Python в начальном обучении? Ну да, модно, молодёжно, но при наличии основы освоить его на уровне FizzBuzz можно за пару часов, если есть цель устроиться к конкретному работодателю, где его требуют. А если нужно будет устроиться к другому работодателю, где нужен например Lua, PHP, Perl, Ruby — это уже будет пустая трата времени.

#!/usr/bin/env python3
for i in range(1,101):
  if i%3==0:
    print('Fizz', end='')
  if i%5==0:
    print('Buzz', end='')
  if i%3!=0 and i%5!=0:
    print(i, end='')
  print()

Вот например.

2. Как интересно ты будешь объяснять школьнику, понятия не имеющего о программировании, как работает хотя бы простейшая программа на C, учитывая что тебе придётся сразу же с первого урока углубляться и в #include <stdio.h> и в & у операндов scanf и так далее.

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

PS. Интересно, как объяснить этому вашему хвалёному Markdown что мои 1. и 2. — это просто цифры в начале абзаца и его не надо выравнивать? Я конечно воткнул перед каждым zero width space, но это ж изврат.

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

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

Сейчас даже в рамках Coding Interview, FizzBuzz это «ма-ма мы-ла ра-му» - чтение по слогам. Минимальный порог вхождение это разные алгоритмы тусования массивов inplace, и манипуляцием элементами связных списков, и обходы деревьев с объяснением своих действий. И это только кодирование, а еще есть системное интервью, и вопросы по знанию конкретного языка.

И вот вы нифига не знаете и лезите спорить с @liksys.

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

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

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

Мне сейчас понятно, что фанаты радикализма @Croco — это люди типа @Xenius, которые в принципе НЕ ПЛАНИРУЮТ работать программистами.

Я кстати не фанат Croco, если что.

который в принципе не собирается заниматься практикой

Практика и программирование при работе на дядю — это несколько разные вещи, кстати. Я не собираюсь заниматься вторым. А первое — может буду пилить какие-нибудь проекты.

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

Практика и программирование при работе на дядю — это несколько разные вещи, кстати. Я не собираюсь заниматься вторым.

C вашим уровнем компетенции вас ни кто и не возьмет.

может буду пилить какие-нибудь проекты.

Вот именно. Может быть будете. А пока вы просто изливаете свои умозрительные спекцляции в форумы.

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

Минимальный порог вхождение это разные алгоритмы тусования массивов inplace, и манипуляцием элементами связных списков, и обходы деревьев с объяснением своих действий.

И с чего ты взял, что я не смогу это сделать, интересно?

Ну ладно, на питоне наверное не смогу. Там вообще указатели есть или через что строить деревья/списки? Или предлагается использовать готовые типы и процедуры их обхода из самого языка?

Сейчас требуется такой объем знаний и навыков, что на изучение экзотических языков просто нет времени.

Ну то есть Pascal, x86 asm и C — это экзотические? Ну ОК…

просто нет времени.

Да не станешь ты программистом за один месяц с нуля. Времени всё равно понадобятся тонны.

Нужно как можно скорее выучить Python и двигаться дальше в системный дизайн и алгоритмы

И писать код через ChatGPT, а потом копипастить его в проект, не понимая смысла, или как?

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

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

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

Требования выше, но и возможностей учиться больше.

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

объяснять школьнику, понятия не имеющего о программировании, как работает хотя бы простейшая программа на C, учитывая что тебе придётся сразу же с первого урока углубляться и в #include <stdio.h> и в & у операндов scanf

Не использовать ввод на первых уроках.

Не использовать &

Не использовать scanf

Не использовать Си

https://storage0.sirius.online/video/courses/-qk4PHKtLZ4.mp4

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

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

https://storage0.sirius.online/video/courses/-qk4PHKtLZ4.mp4

Ладно, тогда объясни, что такое endl и чем он отличается от \n и что за загадочные << и >> ну и там в начале будет using namespace std; — объясни, что такое неймспейс.

C++ ещё сложнее чем C объяснить начинающему. Не надо так делать!

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

И с чего ты взял, что я не смогу это сделать, интересно?

За неделю сделаете, а вот за минут 15, как это требует интервью, вряд ли.

С вашего хвастовства FizzBuzz. Вашей терминологии, и ваших вопросов.

Ну то есть Pascal, x86 asm и C — это экзотические? Ну ОК…

Ага. Lisp и Tcl больше не упоминаются.

Вам лишь бы бескончно спорить.

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

Там вообще указатели есть или через что строить деревья/списки?

Какая же все таки низкая у вас квалификация. И вы этого соврешенно не стесняетесь.

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

Он справедливо ответит, тебя не кто не звал. За хостиг плачу я, код сайта написал я. Это моя территория, не надо на нее ходить.

Я не @liksys, поэтому выскажу мнение со стороны. Территория может быть и его, но коль скоро он выложил свой сайт в открытый доступ это так же и общественная территория. Когда я захожу в какой нибудь магазин или общепит, я так же захожу на чью-то территорию. Но хозяин этой территории не имеет права меня оскорблять. И даже если я пришёл к кому-то в гости по приглашению, это не даёт право хозяину места оскорблять гостя. То есть в данном случае неадекватность Столярова заключается в его совершенно необоснованной агрессии. Поэтому вполне резонен вопрос @liksys выше о том, почему он не получил физическую агрессию в ответ.

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

указатели есть или через что строить деревья/списки?

>>> a= (1,() ); b = ( 2, a ); c = (7, b ); c
(7, (2, (1, ())))
vM ★★
()
Ответ на: комментарий от zg

Поэтому вполне резонен вопрос @liksys выше о том, почему он не получил физическую агрессию в ответ.

Вот вы зашли на сервер допустим Quake или Arma, и вас в игре расстреляли со спины еще и обматерили. За это надо идти бить морду?

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

Логично ведь.

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

У вас аналогия какая-то неадекватная.

Чем она неадекватная? Там сервер, и тут сервер, там виртуальное общение, и тут виртуальное общение.

На мой взгляд, сравнивать интернет-сервер с общепитом — это более неуместное сравнение.

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

в начале будет using namespace std;

У т.н. спортивных программистов ещё и не такое можно увидеть в начале.

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

За неделю сделаете, а вот за минут 15, как это требует интервью, вряд ли.

За час сделал:

class node(object):
    def __init__(self, element, parent=None):
        self.element = element
        self.parent = parent

print('Enter a list of numbers, one per line:')
list=None
while True:
    try:
        n=int(input())
        list=node(n,list)
    except ValueError:
        print('Not an integer!')
    except EOFError:
        break

print('Your list, but in reverse:')
even=None
while list != None:
    n=list.element
    print(n)
    if n%2==0:
        even=node(n,even)
    list=list.parent

print('Even numbers from your list in direct order:')
while even !=None:
    print(even.element)
    even=even.parent
print('Thats all, folks. Bye!')

Ага. Lisp и Tcl больше не упоминаются.

Scheme же. Ну ладно, может немного тянет на экзотику. Но Tcl точно такой же скриптоязык, ничем не хуже питона.

Какая же все таки низкая у вас квалификация. И вы этого соврешенно не стесняетесь.

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

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

Могут. Могут.

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

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

Университет MIT отказался от SICP в пользу Python

А в Калифорнии департамент образования заменил программу математики справедливой и нерасистской (мешала меньшинствам получать высокие оценки). Значит ли это, что время математики прошло и нужно не отставать от прогресса?

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

Чем она неадекватная? Там сервер, и тут сервер, там виртуальное общение, и тут виртуальное общение.

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

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