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

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

Вопрос не хуже/лучше ядро языка, вопрос востребован/Не_востребован.

Не надо путать квалификацию и знание Python.

https://leetcode.com/ оцените уровнь.

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

Если для вас программа подобного уровня — это «освоение» языка, то о чем нам говорить?

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

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

См Леви про на русском про хакеров ценз на входе это этология

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

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

конструктивную критику

По-моему это чисто Столяровское изобретение, в каких-то сторонних материалах по паскалю я такого не видел. Оно сбивает с толку. Это введение своих определений, которые идут вразрез с индустрией. По этому вы объясняете, а вас не понимают, лол) В большинстве других ЯП разделения на процедуры и функции нет. А вот в Хаскеле, который как раз сильно заморачивается за побочные эффекты, побочный эффект это всегда побочный эффект, не важно, желателен он или нет. Ну и определение побочного эффекта из википедии такое же https://en.wikipedia.org/wiki/Side_effect_(computer_science)

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

Хватит призывать Croco. Он все равно не придет.

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

Нет. Это из algol и прочих Эйлер и algol-w от Вирта и кО( хоар и прочая деijkстра)

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

Твой url на литкоде

У меня нет желания публиковать эту информацию на LOR, вам я давал email для связи, но вы решили не списываться.

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

Если для вас программа подобного уровня — это «освоение» языка, то о чем нам говорить?

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

https://leetcode.com/ оцените уровнь.

Какой-то платный сайт не работающий без JavaScript. Что мне с ним делать? И главное, зачем?

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

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

Но ещё раз, освоить новый естественный язык гораздо сложнее нового языка программирования.

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

Очень слабые доводы, а некоторые откровенно сомнительные (про мешанину из Go, Python и C). Столлман – философ, потому что «сначала добился» и «на весь мир» («миллионы мух»)? Дихотомия «западный автор vs Столяров» – ложная.

Моя претензия к книгам Столярова (предыдущие его издания, последние не видел) заключается в том, что он тратит сотни страниц на пространные рассуждения ни о чём, нужным сведениям при этом отводятся считанные параграфы. В первые две сотни страниц, например, вместо нытья запросто можно было бы воткнуть учебник теориии вероятностей / дискретной математики, которую автор на (условно) 201й использует. Настройка X’ов, потому что автор не любит DE, вообще нахер в книге не нужна и т.д.

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

Ну и определение побочного эффекта из википедии такое же https://en.wikipedia.org/wiki/Side_effect_(computer_science)

Ну вот для функции/выражения оно такое и есть у Столярова. Что не так.

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

Оно сбивает с толку. Это введение своих определений, которые идут вразрез с индустрией.

С чего бы?

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

Какой-то платный сайт не работающий без JavaScript. Что мне с ним делать? И главное, зачем?

погуглите.

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

погуглите.

Тебе нужно, ты и потрудись объяснить, чего ты хочешь.

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

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

Что не так.

Вот это

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

По определению из Википедии, побочный эффект у процедуры может быть.

процедуру как раз и вызывают для достижения определенного эффекта.

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

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

А у процедуры побочного эффекта нет,

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

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

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

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

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

Ага, сайд эффекты могут быть и у функции, и у процедуры.

Вот определение из стандарта ISO/IEC 2382:2015(en) Information technology — Vocabulary

2122456

procedure

subroutine

subprogram that does not return a data value, except as part of the parameter mechanism

Note 1 to entry: In COBOL, a procedure is a paragraph, or a group of logically successive paragraphs, or a section (consisting of zero or more paragraphs) within the procedure division.

Note 2 to entry: In some programming languages (i.e., C and C++), the procedure language construct is not differentiated from the function language construct except that returned data values may be void or not used.

Note 3 to entry: procedure ; subroutine: terms and definition standardized by ISO/IEC [ISO/IEC 2382-15:1999].

Note 4 to entry: 15.06.11 (2382)

===

2122457

function

subprogram, usually with formal parameters, that produces a data value which it returns to the place of the invocation

Note 1 to entry: A function may also produce other changes through the use of parameters.

Note 2 to entry: function : term and definition standardized by ISO/IEC [ISO/IEC 2382-15:1999].

Note 3 to entry: 15.06.12 (2382)

PS: каких-то серьёзных различий у определений нет, и кмк, разделение существует исключительно по историческим причинам, поэтому акцентировать внимание на этом не стоит.

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

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

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

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

А вот после просмотра пары видео на ютубе и становления питонщиком путём копирования кода от ChatGPT в IDE, вряд ли ты сходу разберёшься, как поправить драйвер для ядра на C, например.

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

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

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

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

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

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

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

облегчают чтение и декомпозицию кода

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

Как минимум в Pascal имеют… Если в языке какие-то понятия родные, то их освоение в рамках этого языка пройдёт быстрее…

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

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

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

Нафига нужен Python в начальном обучении?

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

тебе придётся сразу же с первого урока углубляться и в #include <stdio.h> и в & у операндов scanf и так далее.

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

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

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

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

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

потрудись объяснить, чего ты хочешь.

Потружусь и объясню.

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

Сайт LeetCode — это общеизвестный ресурс для подготовки к собеседованиям. Он настолько известен, что в среде разработчиков появился глагол «литкодить». Ссылку на этот ресурс я вам предоставил, чтобы вы смогли получить достоверную информацию о требуемой на сегодняшний момент квалификации профессионального разработчика. Оценить сложность задач и уровень владения Python.

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

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

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

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

Очень слабые доводы, а некоторые откровенно сомнительные

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

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

С чего бы?

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

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

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

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

Это безотносительно того, что мои объяснения простые и понятные.

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

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

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

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

Ты же сам просил манипуляцию со списком и говорил,

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

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

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

Это безотносительно того, что мои объяснения простые и понятные.

А ещё Вы очень скромный. :)

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

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

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

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

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

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

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

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

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

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

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

Вот цитата. Я доказал, что утверждение про неделю неверно. Выводы ты делать отказываешься.

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

И чем он тебе не нравится, что вот прямо смущение бы вызвало?

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

Открыл одну из задач на списки. Там примерно аналогичная по сложности фигня:

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

Как показывает практика, форумные болтуны с LOR игнорируют LeetCode, так как он является неопровержимым фактом, с которым невозможно спорить.

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

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

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

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

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

Не забудь про Гитхаб!

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

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

Что туманного в разделении действия и выражения/функции? В функции или выражении единственный результат — это возвращаемое значение. В процедуре выполняется действие — ввод/вывод, открытие файла, ещё что-нибудь такое.

Круг замкнулся: учим паскаль ради паскаля и религиозного верования в него.

Отвечу тебе цитатой из обсуждаемой книги:

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

А тут оказалось, что я понимаю, и сознательно заявляю, что она не нужна.

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

Во-первых, это актуальный язык

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

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

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

Кстати вот из предисловия аргумент:

while((*dest++ = *src++));

Как ты думаешь, стоит в реальных программах так писать? Если нет, то почему?

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

И как тогда числа вводить в программу? Хардкодить и перекомпилировать каждый раз?

ужас указателей переоценен

И на чём это основано? У тебя есть опыт преподавания?

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

Что туманного в разделении действия и выражения/функции?

Я объяснял. Это разделение условно, на практике и современных языках не встречается (за ненадобностью) и чуждо архитектуре компьютера.

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

Уже на этом месте всё это - чушь собачья. Сначала нужно научиться программировать вообще. То есть: декомпозировать задачу, составлять (пусть и мысленно) алгоритм, а затем облекать его в код. Чтобы научиться программировать хорошо, мало отличать процедуры от функций. Вон, столяров умеет, и толку? Пишет говнокод. Каша в голове = каша в коде. Нам действительно нужно мнение о том, как программировать хорошо, от человека, который сам этого не умеет?

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

Не факт, что понимаешь.

Пошло-поехало, сплошное отрицание.

Но даже если и так, то твой вариант - это альтернативный подход

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

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

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

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

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

Кстати вот из предисловия аргумент:

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

И как тогда числа вводить в программу? Хардкодить и перекомпилировать каждый раз?

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

И на чём это основано? У тебя есть опыт преподавания?

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

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

Я сам это осилил, будучи школьником.

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

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

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

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

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

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

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

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

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

Никто и не говорил, что этого достаточно.

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

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

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

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

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

когда побочные эффекты в выражении допустимы, а когда нет?

когда значение выражения (и/или объединённый побочный эффект) зависит от порядка проявления побочных эффектов элементов выражения, и вычисляющая выражение система не гарантирует определённый порядок проявления побочных эффектов.

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