LINUX.ORG.RU

Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова

 , , ,

Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова

4

5

Тихо и незаметно 30 апреля 2026 года вышло издание 2.92, которое наконец включает в себя читаемый текстовый слой.

Исправлены опечатки и ошибки, обнаруженные в предыдущих изданиях, в частности 2.91 (где введена кликабельная навигация) и 2.9 (первое чисто электронное издание).

Книга предназначена для самообучения основам программирования и в отличии от многих других изданий предполагает фундаментальный подход — вначале основы дискретной математики и использования GNU/Linux или BSD с командной строкой, затем паскаль, потом ассемблер и только потом Си, системное программирование и альтернативные парадигмы (функциональное, логическое и так далее).

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

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

>>> Ссылка на страницу издания

>>> Альтернативные способы скачивания

>>> Новость на сайте автора

★★★★★

Проверено: dataman ()
Последнее исправление: CrX (всего исправлений: 10)
Ответ на: комментарий от goingUp

типа пока делайте вот так, дальше будет объяснение, что это такое

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

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

Был (возможно, до сих пор есть) такой курс JavaRush, на котором преподавали Java. Там почти всё именно так объяснялась: «здесь говорим только об этом, на остальное не обращаем внимание». Это очень утомительный процесс даже для вовлечённого человека — наблюдал своими глазами.

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

Это очень утомительный процесс даже для вовлечённого человека.

Кому как. Мне подобные вещи наоборот кажутся чем-то таинственным, загадочным, а потом когда объясняют наоборот становится менее интересно.

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

Если вообще совсем нырять в историю то различение function vs procedure ( оба две по сути routine) [в языках программирования] связано частично с тем что стек(что аппаратный, что в реализациях трансляторов) распространилось массово только к концу 50ых - и как следствие уже с толкнулось с существование нереентерабельных подпрограмм и вагоном «а_ до_теперь нечто другое» abi

для примера - вон как было лольно в перво Фортранах - ни тебе рекурсей ни тебе произвольной ( а только на 3? уровня) вложенности вызовов подпрограмм

ибо стек не очевидно :)

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

Данное определение («Несовершеннолетними признаются лица, не достигшие 18 лет.») полноценно, поскольку «совершеннолетний» и «дееспособный» не тождественные понятия в юриспруденции.

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

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

Штош так бомбит-то всех…

В следующий раз просто сразу закроем на 5 ★.
Да и сейчас не поздно.

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

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

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

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

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

Попутный газ в газовой скважине есть?

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

Что-то ты сам себе противоречишь

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

Паскаль просто УДОБЕН в качестве МЕТОДИЧЕСКОГО НАГЛЯДНОГО материала при ВВЕДЕНИИ в программирование. Удобен он своей ясностью и простотой, возможностью без невнятных для начинающих объяснений начать писать и запускать реальные программульки на реальном компе.

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

Для профессиональных программистов первым должен быть Си

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

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

Xenius … Сам при этом программировать не умеет вообще. Буквально это.

Вот не стыдно тебе передёргивать? И с чего я должен доверять твоим суждениям о Столярове, если ты так делаешь?

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

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

Я же цитировал его книгу. Твои фантазии от его книги очень далеки.

Я об этом и говорю.

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

Фактически, его определение совпадает с Википедией.

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

Если контекст не задан, он всегда относится к дальнейшим рассуждениям.

«Компактность — это свойство множества. Множество K в метрическом пространстве (X, ρ) называется компактным, если из любого его открытого покрытия можно выделить конечное подпокрытие.»

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

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

имха и паскалю ( а ваще любому hll) лучше что бы предшествовала какая либо "(m)mix" но по проще для людёв

например

https://en.wikipedia.org/wiki/Random-access_machine#Refresher:_The_counter-ma...

можно даже какую историческую машину из 50ых годов с «risc» набором команд аж из 8 штук и ваще без регистров ибо там всей памяти не больше 200сот (ну правда 36 али 72 бита) ячеек

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

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

ващет побочный эффект - это всё что выходит за рамки интерфейса взаимодействия

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

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

именно в частности изменение произвольного глобального состояния

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

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

Всё так. «Дальнейшие рассуждения» — это тоже контекст. Но здесь рассуждения были о том, является ли определение истинным или ложным, что само по себе странный вопрос. Дано оно, вместе с заданным вопросом именно в вакууме — предыдущие рассуждения были в принципе не о совершеннолетии, и последующие тоже не о нём, предмет обсуждения другой. Вот поэтому мой ответ в том, что определение не может быть истимнным или ложным — таким может быть утверждение. А как определение приведённое является неполным. Оно сформулировано так, будто говорит обо всех возможных случаях, а на деле только о некоторых. Корректным оно станет, если просто добавить два слова: в России. Либо «18 лет» заменить на «возраст, установленный законами соответствующей страны», ну или что-то в таком роде.

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

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

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

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

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

Рассуждения были о том, что утверждение «назовём А со свойством Б словом В» не может быть не истинным ни ложным. Оно просто определяет, что всюду, где мы встретим далее В мы его можем заменить на «А со свойством Б». И никак не можем возражать, что «нет, не назовём, В обозначает совсем другое».

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

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

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

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

Я не буду называть красное «зеленым по столярову». (Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова (комментарий))

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

Анекдот в тему.

Парень девушке
 - Какая ты у меня компактная! 
 - Маленькая и хрупкая?
 - Нет, замкнутая и ограниченная.
monk ★★★★★
()
Ответ на: комментарий от monk

смена состояния файлового дескриптора(т.е позиция чтения) является побочкой при условии если дескриптор есть скрытый аргумент т.е скорее ваша правота чем то что я подразумевал достаточно неточно(:() что ваш контр-аргумент оказался валидным

забавно что статья на английской вике более точна( в моём понимании) там как раз про hidden state

часточно это(опус Столярова при всех + и - ) напоминают(его тома) сонм методичек упоминавших Дейсктрову «плохо ходить на» лишь для своих соков мозга - ибо goto considered harmfull ведь не столько о лапше в программах сколько сложности наблюдать динамический процесс особенно если связи не очевидны - в том и побочка плоха что «а ещё и кофе в постель»

деление процедур(cobol) vs функция(fortran) в первую очередь обусловленна history of CS и ея приложением в странах первого мира

https://en.wikipedia.org/wiki/Action_at_a_distance_(computer_programming) из https://en.wikipedia.org/wiki/Side_effect_(computer_science)

[upd] т.е состояние файла (его отражённый объект с указателем чтения) оказывается скрытым аргументом для функции которая порционно его читает

т.е в целом изменение файла это побочный эффект - ибо всё что меняет не чистое оказывается побочкой

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

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

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

Это очень странное определение.

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

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

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

Reading an object designated by a volatile glvalue, modifying an object, calling a library I/O function, or calling a function that does any of those operations are all side effects, which are changes in the state of the execution environment.

В стандарте C почти дословно то же самое:

An access to an object through the use of an lvalue of volatile-qualified type is a volatile access. A volatile access to an object, modifying an object, modifying a file, or calling a function that does any of those operations are all side effects, which are changes in the state of the execution environment.

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

в стандарте С++ … в стандарте C

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

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

ADA (по факту диалект Паскаля)

Это кто тебя так обманул?

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

хотел бы получить компенсацию

Возьмёшь определениями побочных эффектов?

ya-betmen ★★★★★
()
Ответ на: комментарий от Playermet

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

Вырожденные случаи из классификации можно исключить.

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

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

Например, в стандарте С++ … стандарте C

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

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

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

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

Вырожденные случаи из классификации можно исключить.

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

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

Побочный эффекты это не нежелаемые это именно побочные

В чем разница между нежелаемым и побочным эффектом? Вот есть типичная функция, которая возвращает id существующей или новый записи в БД. Каждое из ее действий, включая создание записи и возврат результата - строго желаемое и ожидаемое, и никак иначе требуемый функционал сделать нельзя. В рамках вашего понимания SRP это единственная и неделимая ответственность этой функции. Почему действия такой функции должны считаться побочными, когда процедура с запросом CREATE в БД якобы не имеет побочных эффектов? В чем логика такого разграничения?

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

  1. Приведите тогда определение термину «эффект». Вот есть функция на C++, которая складывает два своих аргумента. У нее нет никаких эффектов? Или нет только побочных?
  2. Вы же сами выше утверждали, что тип void у функции дает то же самое, что процедура.

можно трактовать как ООП-шный принцип единственной ответственности применительно к процедурному программированию.

На самом деле SRP значит совершенно другое.

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

Вот я что-то такое говорил @liksys а он никак понять не может.

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

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

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

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

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

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

Я же цитировал его книгу. Твои фантазии от его книги очень далеки.

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

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

Еще раз: столяров определяет побочный эффект по нахождению оного внутри функции или внутри процедуры. Если IO в функции - то это побочка. Если в процедуре - то нет.

Я уже устал пытаться донести до сектантов очевидные вещи. Что-то не понятно - перечитай тред сначала, я всё доступно объяснил раньше.

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

Вот не стыдно тебе передёргивать?

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

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

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

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

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

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

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

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

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

однострочники и одностраничники не считаются.

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

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

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

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

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

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

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

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

Еще раз: столяров определяет побочный эффект по нахождению оного внутри функции или внутри процедуры. Если IO в функции - то это побочка. Если в процедуре - то нет.

Не так. Столяров определяет побочный эффект по нахождению его в выражении. Например a = b++; тоже содержит побочный эффект, хотя тут и нет вызова функции

А у меня факты, которые в твою голову почему-то не помещаются.

Никакие у тебя не факты, у тебя субъективщина «определение Столярова мне не нравится» которое ты выставляешь как факт.

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

Занятно кстати, как у тебя вылезает явная логическая ошибка уже не первый раз. Вот например пройди этот тест ради интереса (можно и на другом сайте) https://psytests.org/iq/voynar.html

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

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

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

И определению это не противоречит. Последовательность действий может быть пустой.

Вот есть типичная функция, которая возвращает id существующей или новый записи в БД. Каждое из ее действий, включая создание записи и возврат результата - строго желаемое и ожидаемое, и никак иначе требуемый функционал сделать нельзя.

Столяров как раз такой пример и приводит как функции с побочными эффектами. Здесь две ответственности на один кусок кода: проверка наличия существующей (и возврат её id) и создание новой, если существующей нет.

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

Приведите тогда определение термину «эффект». Вот есть функция на C++, которая складывает два своих аргумента. У нее нет никаких эффектов? Или нет только побочных?

Если она не «Reading an object designated by a volatile glvalue, modifying an object, calling a library I/O function, or calling a function that does any of those operations», то нет никаких эффектов.

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

Для меня это так. Но у меня первым языком является Паскаль. Столяров пишет, что в Си процедур нет.

На самом деле SRP значит совершенно другое.

А именно? Насколько я знаю, звучит так: «каждый класс, модуль или компонент кода должен иметь только одну чётко определённую ответственность и быть способным изменяться только по одной причине». То есть, если у тебя компонент кода может изменяться, если по причине «поменялся алгоритм поиска» или «поменялся алгоритм создания» записи, то он нарушает SRP.

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

Еще раз: столяров определяет побочный эффект по нахождению оного внутри функции или внутри процедуры. Если IO в функции - то это побочка. Если в процедуре - то нет.

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

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

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

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

И от чего же они тогда, по-твоему, зависят, ну-ка?

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

И, как мы уже выяснили, он заблуждается.

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

И при этом считаешь, что это я и monk сектанты.

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

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

>>> a = [1, 2, 3]
>>> b = a
>>> b[0] = 99
>>> print(a)
[99, 2, 3]

Я вот чего не понимаю, так это почему набравшие популярность языки вроде Python или Lua настолько упоротые. В последней например \123 - это десятичный код, хотя во всех других языках восьмиричный. ~= вместо != или <> и тд.

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

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

Не так.

А вот @monk утверждает, что так. У вас показания расходятс %)

Столяров определяет побочный эффект по нахождению его в выражении.

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

Никакие у тебя не факты, у тебя субъективщина «определение Столярова мне не нравится» которое ты выставляешь как факт.

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

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

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

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

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

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

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

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

Построение новой теории всегда начинается с определений

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

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

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

Я могу придумать двадцать причин.

Можно пожалуйста первые десять, применимые непосредственно к сабжу?

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

При чем тут какие-то рамки новых теорий и математика? Человеку учащемуся на программиста говорят что СУБД это волшебный гномик, а потом он устраивается на работу, где ему нужно работать с настоящей СУБД. Ему правильное определение нужно угадать или самому выдумать? Вроде очевидно, что он должен был его узнать на курсе по базам данных?

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

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

Причём в главе своей книги про параллельные вычисления, в которой он учит писать такие программы %-)

Феномен. Возможно учительская профдеформация что ли.

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

Где-то в другом месте он говорит, что задачи, которые решаются на компьютерах в основном остались теже, что и 30 и даже 40 лет назад. http://rebuildworld.net/manifesto.html

First of all, they are really fond of selling us more and more “powerful” computers, which we actually don't need as we generally use them for the same tasks as 30 or even 40 years ago.

Его идеал, (не помню, где-то в гостевой вроде говорил) это очень массовые, очень дешёвые (чуть ли не не чтобы в продуктовых магазинах на сдачу с покупки еды) маленькие очень энергоэффективные простые компьютеры, быстро решающие задачи 30-40 летней давности. По этому поводу где-то он приводил в пример первую малинку (Raspberry Pi) как пример движения индустрии в правильном направлении. Одноядерный дешёвый маленький процессор, потребляющий совсем немного энергии.

С такой точки зрения действительно многоядерные на сотни ватт TDP процессоры - это «вызывающе дебильно».

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

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

Софистика. Так можно почти про что угодно сказать.

Напоминаю, мы находимся в обсуждении произведения преподавателя МГУ. Даже если бы он захотел что-то написать «для выпускников средних школ и учащихся ПТУ», у него бы не получилось. Профессиональная деформация. Вы упорно пытаетесь с математики соскочить на бытовуху. Я вам попытался показать другой подход, и немножко мотивацию. Больше не буду.

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

И от чего же они тогда, по-твоему, зависят, ну-ка?

Функции определяются словом function и могут использоваться в выражениях, а процедуры определяются словом procedure.

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

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

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

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

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

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

Вот уж точно не питона.

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

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

А тебе питон не нравится, потому что ты его просто не знаешь.

он ничего не знает :(

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

Его идеал, (не помню, где-то в гостевой вроде говорил) это очень массовые, очень дешёвые (чуть ли не не чтобы в продуктовых магазинах на сдачу с покупки еды) маленькие очень энергоэффективные простые компьютеры, быстро решающие задачи 30-40 летней давности. По этому поводу где-то он приводил в пример первую малинку (Raspberry Pi) как пример движения индустрии в правильном направлении. Одноядерный дешёвый маленький процессор, потребляющий совсем немного энергии.

Это болезнь тех, кто работал в конце восьмидесятых - начале девяностых. Тогда понацеей всех бед являлись систолические вычисления, поскольку люди не представляли себе, что однопотоковое выполнение имеет перспективы по увеличению производительности. Странно, конечно, что данный товарищ этим болеет, он вроде как сильно помоложе будет, но, он же в МГУ работает! Слава мозг давит. Всякое бывает.

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

Кстати, транспьютеры фирмы INMOS как раз пытались воплотить эти идеи - дешёвые, простые, масштабтрующиеся в сеть… Были достаточно востребованы.

VIT ★★★
()
Последнее исправление: VIT (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.