LINUX.ORG.RU

Переиздание книг Столярова по программированию

 


9

4

Скандально известный на ЛОРе Андрей Викторович Столяров выпустил новое издание своего учебного пособия «Программирование: введение в профессию» и обновил PDF-версии:
«Азы программирования»
«Системы и сети»
«Парадигмы»
В новом издании 4-томник стал 3-томником.

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

>>> Сайт автора

★★★★★

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

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

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

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

Это элементарщина.

Просто задумайтесь. Вот есть у вас компилятор Паскаля. Он парсит входные данные и генерирует листинг на ассемблере. У него в исходном коде обработка процедур и функций будет реализована принципиально разными алгоритмами? Или там будет 90% общего кода и 10% — ветвления, обрабатывающие разницу этих понятий?

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

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

для широты картины мира полистайте публицистику годов 1980+-7 лет по информатике/cs/software jornals и т.п и вам яснее станет почему Си смог ( а Ада нет, а Бринч Хансен ваще мало кому - хотя Chrome v8 движок ровно из тех же регионов БениЛюксов+)

был Структурный хайп ….

был ООП хайп …

есть плюсмного ща хайпов в индустрии софтоварения.

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

Я видел, в том числе районные и поселковые школы в далёком 2011, но они действительно в меньшинстве. И у учеников винда дома. А линукс в школе от бедности и чтобы не играли. Поэтому надо ориентироваться на то, чтобы была хорошая поддержка обеих платформ.

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

Где же я в наше время её отыщу по такому нечеткому запросу)

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

«это» специфическое «упрощение»

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

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

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

Это у MS надо спрашивать, почему им взбрело в голову сменить в GUI одну 8-битовую кодировку на другую 8-битовую кодировку, при этом оставив старую на ФС.

В DOS и в Linux всё нормально было с кодировкой.

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

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

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

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

Я не видел учебных заведений с Линуксом как в России, так и в Японии

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

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

https://en.wikipedia.org/wiki/Backronym#As_false_etymologies

Python ( а корректней комьюнити его творящая(с 1989?) ) крут.

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

и малополезное дело обосновывать трейдофы «разумным упрощением»

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

так что с типизацией там всё в порядке

Вирту это не сообщай - иначе он осознает что его труды по Оберону «но зачем»

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

А Паскаль нужен, чтоб избежать сишности головного мозга.

Ну значит Вирт тоже страдал «сишностью головного мозга»:

https://www.modula2.org/reference/proceduredeclarations.php

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

Или пересмотренной алгольностью

integer procedure Step (u); real u;
Step:=if u > 0 then 1 else 0
vM ★★
()
Ответ на: комментарий от Vudod

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

Мне казалось,что наоборот всё по ссылке передаётся.

Для передачи по значению отдельный флаг value был введён.

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

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

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

Призначению как раз в Си передаётся, создавая копию. В Фортране наоборот всё само передаётся по ссылке.

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

Традиции соблюдаются

program hello
   y = 7
   Print *, a ( y )
   print *, y
end program Hello

function a ( s)
   s = s + 1
   a = s*s
end function
$gfortran -std=gnu *.f95 -o main
$main
   64.0000000    
   8.00000000  
vM ★★
()
Ответ на: комментарий от vM

и это хорошо!

Если хочется поизвращаться в передаче по значению, то можно сделать так:

program hello

  interface
    function a ( s )
      real, value :: s
    end function
  end interface

   y = 7
   Print *, a ( y )
   print *, y
end program Hello

function a ( s )
   real, value :: s
   s = s + 1
   a = s*s
end function

$ gfortran -std=gnu *.f95 -o main
$ ./main 
   64.0000000    
   7.00000000    

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

Ну ответ такой. «Мне уже все уши прожужжали хотелками». Основная идея — защититься от роботов, были случаи, когда Крокодил находил свои тексты на автогенеренных сайтах. Любители копипаста, обычно, не знают двух команд, которые превращают pdf в plain text. Как только в pdf был убит текстовый слой, так поиск собственного текста по интернету перестал давать результаты. Издать книгу под своим именем из чужой с ISBN — это дело стрёмное, а вот про методичку, которую кто-то в провинциальном вузе тиснет, Крокодил все равно не узнает. Сделать содержание с индексом можно, но как это сделать без активных ссылок «в красных рамочках», которые оставляет pfdtex пока неясно. Рамки «чисто бесят», меня, кстати, тоже. Наверное, как-то можно, раз есть куча примеров, но вот умеет ли это ТеХ, не есть понятно. Ну не любит человек, когда его копипастят. Разберемся как, так сделаем содержание в левой колонке смотрелки со ссылками в приемлемом для автора виде. Поможете — будем рады.

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

Ну значит Вирт тоже страдал «сишностью головного мозга»:

Вирт много чем страдал (и всё ещё страдает), но вряд ли этим. В тексте по ссылке имеем вот такое:

Procedures that return a value are called function procedures. Function procedures can be called inside an expression, and the value returned is substituted for the call.

То есть он функции здесь называет «функциональными процедурами», что, кстати, вполне логично; но он нигде не называет процедуры функциями.

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

Какая разница, как их называть.

Такая, например, что язык определяет мышление (это не я, это Витгенштейн, если что). А ещё такая, что сишность головного мозга возникает исключительно из-за той терминологии, которая связана с языком Си (определяется его семантикой).

Важна суть, а не ярлык.

К сожалению, важна скорее даже не суть, а то, как эту суть (объективное явление) воспринимает человек. Для этого ещё название есть – «парадигма». Роль терминологии при разговоре о парадигмах игнорировать можно разве что затем, чтобы потерять предмет обсуждения.

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

Даладно! Все по ссылке, если не сказано %VALUE%, даже в2005м

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

сишность головного мозга

Как говорят бывалые шоферА: «Если из двигателя капает масло - значит оно там есть» )

Тут по теме несколько раз проскакивала мысль, что если начинать с ассемблера - то Си это просто праздник какой-то.

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

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

Да что-то раньше не замечал. Извини. Я тебя тут защищаю всячески.

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

Конкатенация работает, но ввод-вывод и имена файлов в Windows будут поддерживать UTF-8 только после явного переключения локали, которое завезли только в Windows 10

Ну хоть завезли, наконец-то. А куда 866ю дели? :)

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

я за сишников

На всякий случай – я на Си пишу постоянно, а на Паскале в последний раз что-то писал, если память не изменяет, в 1996 году. Ну, если примеров для книжки не считать, но это несерьёзно :-) И студентам я двадцать лет именно что Си рассказываю (на втором курсе), а занятия по Паскалю у первокурсников за это время вёл только два года, в порядке очередного «эксперимента».

У меня к одному из параграфов в эпиграф вынесена фраза «Можно писать на Фортране, главное – не думать на Фортране». Ну вот к Си это тоже относится. И писать на Си можно, не получая при этом фатальных повреждений мозга. Даже изучать его можно, не вредя собственным мозгам. Но при одном условии: когда он не первый язык в жизни.

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

А куда 866ю дели? :)

Закопали в глубине диалога System, где она и сидит последние лет 20. Но если включить там русский язык, в консоли для неюникодных программ будет 866. В GUI — 1251. Пока на другую локаль не переключишь и не перезагрузишься.

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

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

ЕМНИП (пусть он сам меня поправит, если что), @Croco считает императивные языки со сборкой мусора непригодными ни для чего. Насчёт неимперативных это может быть не так. Например, где-то он вроде бы упоминал Scheme, как вполне пригодную для обучения.

aeralahthu
()

Там всё та же идиотская кодировка PDF?

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

Я не видел учебных заведений с Линуксом как в России, так и в Японии.

МГУ?

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

В cygwin/msys2 вроде из коробки utf-8 работает?

Reset ★★★★★
()

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

Почему это?

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

return ( f(), printf("%d",x) ) + (f(), printf("%d",x) );

Разве что о таком варианте не подумал. Т. е. про запятую знал, но что вот так это можно обставить — не пришло в голову. Однако подобный код нереально где-то встретить и вряд ли кто-то будет так писать для себя, а не для примера на ЛОРе. Поэтому отчасти отзываю своё утверждение о невозможности подстановки void в выражение, но продолжаю считать, что фактически оно верно, даже если формально — не совсем. :-)

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

блюдут традиции.

прогресс не стоит на месте.

новое значит лучшее.

та же почва те же плоды.

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

Ну не любит человек, когда его копипастят.

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

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

Тут я, к сожалению, пас, т. к. латехом не владею.

@Croco написал:

Если кто не заметил, я с публикой вполне умею общаться сам, без посредников.

Собственно, кастанул.

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

есть цепь (возможно даг) преобразований.

каждое преоб обладает ценой и качеством ( в смысле уточности - и 0+ ещё какими свойствами.)

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

(в том числе отсюда) эвристика количество «человеко-строк»_«в- человеко-день» постоянно~

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

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

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

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

Это так. Но многим современным программистам (особенно веб-программистам) показалось, что они уже работают на квантовых компьютерах с бесконечным объёмом памяти, хотя это пока далеко не так. Как результат — имеем тонны говнокода, писать который стимулирует в т. ч. отсутствие привычки следить за используемыми ресурсами и вовремя их высвобождать.

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

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

https://habr.com/ru/company/vdsina/blog/544218/

Все надеются на традиционное «и так сойдёт!».

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