Гостевая книга

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

Обратите внимание, что связаться с автором сайта можно также и через страницу обратной связи, которая позволяет отправить автору email.

Учтите, что комментарии на этом сайте премодерируются.

[Все старые комментарии перемещены в архив >>>]

Чистая компиляция

Андрей Викторович, планируете ли Вы работу над языком в парадигме чистой компиляции?

Очень хочется

Очень хочется сказать, что да — но нет. Без внешней поддержки мне это не поднять.

Императивное программирование

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

Императивное программирование

что еще бывает и чем отличаются

Если совсем упрощённо, то императивное программирование - это реализация решения задачи в "терминах компьютера". Все остальные парадигмы предполагают реализацию "в терминах более понятных человеку". К примеру, sql-запросы составляются "в терминах баз данных", что и откуда выбрать, по каким критериям и т.д. При этом, в общем случае, пользователь не задумывается каким образом всё это происходит на уровне машинных команд. Т.е. пользователь просто описывает то, что хочет получить в итоге, а СУБД исполняет его указание.
Другой пример: работа с текстом, к примеру, с помощью Perl'a. Пользователь с помощью синтаксиса регулярных выражений составляет указание интерпретатору найти какие-то сочетания в текстовом файле (к примеру), интерпретатор исполняет это указание, при этом пользователя совершенно не волнует что там происходит на уровне машинных команд.

Вот ни фига, между прочим

Это всё действительно существует, но называется совершенно иначе: "низкоуровневое программирование". Императивное программирование бывает и высокоуровневым тоже, достаточно вспомнить тот же Tcl (да и вообще любые командно-скриптовые языки) или, например, доисторический Бейсик с нумерованными строками.

Тому, что ещё

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

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

Тотальная безграмотность

Доброго времени суток, Андрей Викторович!

На днях мне одному приятелю пришлось объяснить разницу между языком С и С++. И в ответ я услышал: "не нужно смешивать возможности языка и сам язык, они почти одинаковы. Лучше сейчас вообще использовать Python" . Честно говоря, у меня волосы дыбом встали. И это говорит человек, который уже почти три года проработал "программистом". Как думаете, преодолеем ли мы этот этап повальной безграмотности хоть когда-нибудь?

И почему большинство так повально стремятся изучать сначала Python, Java, итд? Я могу ошибаться, но как по мне это напоминает, такую картину: давай сначала обучимся водить АКПП. А если на механике тебе покажется сложно, ничего страшного, на автомате умеешь и хватит.

Пользователи Python

На днях мне одному приятелю пришлось объяснить разницу между языком С и С++. И в ответ я услышал: "не нужно смешивать возможности языка и сам язык, они почти одинаковы. Лучше сейчас вообще использовать Python" . Честно говоря, у меня волосы дыбом встали. И это говорит человек, который уже почти три года проработал "программистом".

Тот, кто "разрабатывает ПО" на Python или любом другом скриптовом языке, не может называться программистом по определению. Такого деятеля нужно называть "пользователь интерпретатора", который в силу своей необразованности ваяет поделия на скриптовых языках под видом ПО. Типичный представитель "макако-ориентированного программирования". Но особенная дичь начинается, когда подобные адепты начинают ваять на "современном С++", начиная тянуть "возможности" из С++ 11 и последующих стандартов. Получаемая на выходе высокоуровневая лапша выдаётся за "модные паттерны". На уровне машинных команд там, естественно, дичайший треш. Зато "я пишу на современном С++, который безопасен, словно жаба, везде пихаю STL-контейнеры, мозг не включаю".

Ого

И ведь это даже не я сказал :-)

Так это же nelson.

Так это же nelson. Достаточно увидеть этот ник, чтобы понять, что в последующем комментарии концентрация "[веб/питоно]макак", "современного C++", его "стандартов", "хухеля" и всякого такого превысит летальную дозу.

Вот прям как

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

Никто их не

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

Преодолеем ли мы это когда-нибудь? Вряд ли. Но тем ценнее будут те, кто понимает, что к чему.

Андрей

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

Я не знаю,

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

К сожалению, ни о каком "хотя бы в электронном виде" речи идти не может, эти события жёстко связаны: электронная версия появится на сайте через 1-2 дня после выхода книги в бумаге.

The V Programming Language

Андрей Викторович, позвольте узнать ваше мнение о [link removed] вот этом художестве. Без сборки мусора, с претензией на bare metal. Есть, правда, ложка дегтя - UTF-8.

Не знаю как

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

Язык в

Язык в "глубокой альфе", поэтому говорить о нем всерьез пока нет особого смысла. Конечно, есть интересные вещи, разработчиков, очевидно, вдохновляли Rust, Go и всякое прочее модное. Язык довольно простой и компактный, я, правда, во всей документации и примерах так и не нашел аналога сишной функции scanf. Настораживает стремление разработчиков усидеть на всех стульях сразу - и компилируемый, и тут же скриптовать на нем можно, и в вебе чего-то строчить, и библиотека для UI своя есть. Но самая, пожалуй, странная штука - как раз работа с памятью. Она непрозрачна, сборщика мусора нет, но при этом и у пользователя нет контроля как такового. На сайте утверждают, что, если ваша программа скомпилировалась, в ней гарантированно нет утечек памяти. Я честно попробовал кусок кода из документации, где в динамический массив добавляют два элемента и выводят на экран. Valgrind мне сказал, что все это добро таки утекло, хотя скомпилировалось без вопросов...
С bare metal тоже все сложно. Как дела с кросс-компиляцией? Как ему скормить скрипт компоновщика? Прикола ради попробовал собрать программу-пустышку с этим самым ключом -freestanding, так он выдал кучу ошибок, среди которых проскакивали строчки на x86-ассемблере, хотя все происходило на ARM-машине... Короче говоря, пока больше вопросов.

Язык реализации

ну это же вообще несерьёзно:

What language is V written in?

V. The compiler can compile itself. The original version was written in Go.

Если работа с

Если работа с памятью непрозрачна, то это не взлетит.

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

Артефакт

Доброго дня, Андрей Викторович!

Нашёл занимательный артефакт 1996 года выпуска: Столяров А., Столярова Е. — «Вы купили компьютер…». Разъедает любопытство — не приходятся ли вам случайно авторы родственниками?

https://starina.ru/item/123440053_%D0%A1%D1%82%D0%BE%D0%BB%D1%8F%D1%80%D...

Была такая

Была такая книжка, да. Мне попадалась. Нет, родственников таких у меня нет, но это и не удивительно — моя фамилия не относится к редким.

Ошибка

Добрый день, Андрей Викторович! Я набрал в текстовом редакторе первую программу на ассемблере из книги, но при запуске команды "nasm -f elf hello5.asm" у меня выдает ошибку

hello5.asm:1: fatal: unable to open include file `stud_io.inc'

В чем может быть дело?

Спасибо

Очевидно

Ошибка состоит в отсутствии файла stud_io.inc, спасибо Капитану Очевидность.
Файл берёте здесь: http://www.stolyarov.info/books/extra/stud_io_inc
Его нужно будет переименовать в stud_io.inc.
Про это говорится на странице, посвящённой второму тому.

Программист в 30 лет

Здравствуйте, Андрей! Возможно ли стать программистом, если начинать заниматься программированием, ну скажим с нуля в 30 лет? Сам я занимаюсь около года, и мне нравится программировать.

Всё возможно

Думаю, будет трудно, но принципиально невозможного здесь ничего нет. Я лично знаю людей, начинавших ещё позже и ставших профессионалами.

Андрей

Андрей Викторович, доброго здравия! Можете посоветовать какие-нибудь книги из мира математики, которые Вам понравились? Очень понравилось Ваше повествование в первом томе в разделе про математику. Это то, чего мне так не хватало. Как будто меня взяли за руку и повели в страшный мир, а он оказался вовсе не страшный, а очень даже красивый.

Буду банален :-)

Я.И.Перельман "Живая математика" вот тут, например: https://math.ru/lib/book/djvu/perelman/alive_math.djvu

Другие книги того же автора тоже весьма способствуют.

А могут

А могут некоторые примеры не работать в Windows?
Произошёл затык в программе char2num.
После ввода первого числа выдаёт такое:
`` in pos: 4'
и снова предлагает ввести первое число.

И в примере из этого коммента http://stolyarov.info/guestbook#comment-2167 тоже выходит такое:
123
]1][2][3][

В чём может быть дело?

Конечно, могут

Больше того, вообще удивительно, что под виндой у вас заработало хоть что-то.

Если вы не готовы к отказу от Windows, найдите себе более подходящие учебники. От моих книжек вам никакого проку не будет.

В целом всё так,

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

Проблема здесь в том, что в windows, в отличие от linux, конец строки обозначается двумя символами, а не одним. Если в linux это символ с кодом 10 (0xOA --- перевод строки), то в windows перед ним добавляется символ с кодом 13 (0x0D ---возврат каретки). Поскольку обе упомянутые программы в явном виде ожидают увидеть там символ с кодом 10, нет ничего удивительного в том, что под windows они работают, цитируя примечание на странице 282 второго тома, "как-то не так".

В целом проблема довольно известная и для борьбы с ней есть даже специальные программы dos2unix и unix2dos для преобразования концов строк в текстовых файлах при их переносе между различными системами. Кстати, я неоднократно натыкался на вопросы знакомых студентов мехмата МГУ, почему у них дома программа работала, а в компьютерном классе ---нет. А проблема была в том, что тестовый файл они, естественно, принесли на флэшке из windows, где концы строк другие, а графический текстовый редактор (в отличие от консольного mcedit) даже не показывает эти лишние ^M в конце каждой строки. Непонимание данной проблемы создаёт у автора программы "ощущение магии", в то время как на самом деле здесь всё очень просто.

Это для нас с

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

Другие примеры

Другие примеры работали, так как я переводил их в С.
Отказаться от вашей книги не вариант, поэтому поставил Линукс (пока на виртуалку).
Консоль+vim+fpc - и всё заработало.
Надо сразу делать, что говорит учитель. Урок усвоен. Спасибо.

Что ж вы своё

Что ж вы своё время и силы до такой степени не цените?

Если для вас Linux так и останется "учебным пособием на виртуалке", программистом вы не станете — во всяком случае, если будете при этом продолжать пытаться это сделать по моим книжкам. Причины этого подробно расписаны во втором ("методическом") предисловии к первому тому.

Вся эта штука сработает лишь в том случае, если в Linux'е вы будете жить, делать всё, что обычно делается с помощью компьютера, причём основным средством работы для вас будет командная строка. Даже если вы перейдёте на Linux, но будете продолжать использовать иконочные файловые менеджеры, толку не будет. А если останетесь под форточками — тем более. Не буду утверждать, что, сидя под форточками, вообще невозможно научиться программировать, но что это невозможно сделать по моим книжкам — это я вам гарантирую.

Прошу совета

Добрый день

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

Посоветуйте, пожалуйста, как поступить?

Проблема в том,

Проблема в том, что у нас в вузе начинают сразу с плюсов
У вас там часом не для хухля программистов готовят? Тамошние "гении" вон возможности С++ 17 используют в аллокаторах памяти - http://www.opennet.ru/opennews/art.shtml?num=52364#13
Такая вот "работа мечты", как любят вещать маркетолухи: stl-макакинг, бессмысленный и беспощадный.

если позволите,

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

Честно говоря, понятия не имею

В вашей ситуации правильного решения просто нет. Посоветовать могу одно — берегите мозг, иначе его вам там в этом ВУЗе вынесут.

Прошу прощения,

Прошу прощения, что вклиниваюсь в дискуссию, но многое зависит и от того, что ваш преподаватель понимает под C++. Если векторы-лямбды-auto-и-прочее, то да, берегите мозги и читайте правильные книжки. Если iostream вместо stdio.h, шаманское заклинание using namespace std перед main и закорючки вместо printf, то тут и бояться нечего, просто перетерпите.

Такие вещи (C++

Такие вещи (C++ первым языком) обычно бывают из-за одной маленькой проблемы: начинающим невозможно рассказать указатели так, чтобы в группе больше одного-двух человек поняли, что происходит. Увы, C++ в сочетании с его так называемой "стандартной библиотекой" допускает макакокодинг, т.е. использование инструментов без понимания происходящего, а применения операции взятия адреса на первых порах можно избежать, таки да, за счёт iostream -- но vector вместо обычных массивов при таком раскладе практически неизбежен. А дальше -- как в той серии мемасиков про ёжика в тумане: "И что? И всё. И п-ц".

without-systemd.org

Добрый день, Андрей!

Как это ни печально, сайт http://without-systemd.org/ уже пару месяцев выдаёт Database error. Жаль, там была неплохая вики.

Так я к чему: может быть имеет смысл заменить (или дополнить) эту ссылку на вашей заглавной странице на что-нибудь работающее. Поверхностным гуглением нашёл сайт https://nosystemd.org/ По-моему, подходящий кандидат. Там есть подборка ссылок на критику systemd и достаточно полноценный список дистрибутивов без systemd.

Спасибо

Добавил nosystemd.org в начало списка, очень, кстати, понравился их слоган. without-systemd пока не убираю, вдруг оживёт.

Бинарное дерево поиска

Добрый день, Андрей Викторович! У меня следующий вопрос (возможно, глупый, но все же...): часто ли на практике может пригодиться балансировка бинарного дерева поиска? Каков Ваш личный опыт с этим?
Спасибо!

Лично мне не

Лично мне не потребовалось ни разу.

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

Итоги

Итоги голосования Debian

http://www.opennet.ru/opennews/art.shtml?num=52104

"Победил второй пункт ("B") в списке - предпочитаемым остаётся systemd, но оставляется возможность сопровождения альтернативных систем инициализации."

Кавалерийский

Кавалерийский наскок стукнутых ньюфагов кончился ничем. Это хорошо.

Скорее всего,

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

Вероятное апоследствие: Полная привязка к s-d, всех программных пакетов со временем.

Риск

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

Что будет дальше — в любом случае никто не знает.

Да какой там

Да какой там "щелчок по носу". Из семи предложений выбрано второе по pro-systemd'шности. Первое было "не поддерживаем ничего кроме systemd", а выбранное второе "ну вы там пилите свои инит-скрипты, если хотите, но systemd-юниты чтобы были обязательно". Это не щелчок по носу ньюфагам, а подачка противникам гегемонии systemd, чтобы слишком громко не возмущались.

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

А чем

А чем пользуетесь?

Отвечу

Отвечу развёрнуто, пожалуй.

Очень уважаю принцип KISS. Ну и пользуюсь, соответственно, теми системами, которые этот принцип стараются поддерживать.

После дебиана был ArchLinux (в те времена он принципу KISS ещё пытался соответствовать, да и systemd ещё не изобрели), потом CRUX. А несколько лет назад, глядя на тенденции развития не только линукса в целом, но и, в частности, его ядра, ушёл вообще на OpenBSD. Доволен, поскольку на CRUX'е приходилось порядочно пилить, чтобы немного приблизиться к моему представлению об идеале, а OpenBSD к этому идеалу гораздо ближе прямо из коробки.

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

Если бы сейчас пришлось пользоваться линуксом, то выбирал бы из CRUX, Void или Slackware. Возможно Alpine, если она юзабельна в качестве десктопа, надо проверять.

PS. А первым линуксом, до дебиана, у меня была Caldera OpenLinux купленная в книжном магазине в комплекте с книжкой. ;)

Void

выбирал бы из CRUX, Void или Slackware

Так. Вынужден изменить своё мнение относительно Void'а. Выяснились некоторые обстоятельства, в связи с которыми рекомендовать его я больше не могу.

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

Дополнительная причина в том, что, вообще говоря, разработчики Void не имеют ничего против systemd. Void перешёл с systemd (да, именно так, изначально системой инициализации в Void была systemd) на runit всего лишь из-за несовместимости systemd с musl. Так образом, я не вижу ни малейших гарантий, что в будущем они не вернутся на systemd.

А жаль, дистрибутив был неплохой, как минимум два несомненных плюса в нём есть: поддержка musl и внедрение LibreSSL вместо OpenSSL.

Кстати, Андрей, сайт по одной из ссылок, приведённых выше, содержит весьма подробный список дистрибутивов без systemd: https://sysdfree.wordpress.com/2019/10/12/135/ Может быть имеет смысл добавить его на заглавную страницу вашего сайта, а то without-systemd.org не оживает, а больше такого подробного списка я нигде не видел.

На случай

На случай самого нелицеприятного варианта развития событий.
(постепенная полная привязка ПО к s-d)

http://www.trek.eu.org/devel/sysd2v/

Трансформация сервисов s-d в init-скрипты.

P.S.
По возможности s-d лучше не касаться и выбирать альтернативные init'ы изначально.
Конвертация сервисов воспринимается как "инструмент последнего выбора"

Собственно

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

Ну, devuan всё-таки

Ну, devuan всё-таки скорее форк имеющегося дистрибутива, в первую очередь развиваться будет скорее основная ветка.

А вот Gentoo вроде бы наоборот придерживается прямо противоположной политики. Там _поддерживается_ systemd (хотя я не проверял, насколько этот вариант работает), но по умолчанию предлагают ставить openrc. Теоретически, наверное, можно и любую другую систему инициализации прикрутить.

P.S. Капча реально зверская!

IT-вуз

Добрый день, Андрей Викторович. Хотел поделиться данной новостью, которая уже совсем не новая. https://sputnik.by/education/20191020/1043045493/Zachem-Belarusi-IT-vuz-...
Что думаете? Особенно порадовали IT-ПТУ.
P.S. Если комментарий премодерацию не пройдёт, то надеюсь, что вы тоже посмеётесь над этим цирком.

Я не в курсе

Я не в курсе ситуации в Белоруссии. В России бы подобная инициатива ничем, окромя очередного могучего распила, не кончилась.

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

Голосование

Debian проводит голосование о необходимости поддержки альтернативных систем инициализации (а нужно ли что-то кроме s-d)

https://www.debian.org/vote/2019/vote_002

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

https://www.dyne.org/devuan-cannot-exist-without-the-help-of-debian/

Debian проводит

Debian проводит голосование

Вот не понимают люди, что нельзя такие вещи решать голосованиями; в голосованиях бывают те, кто за, и те, кто против, и когда большинство перевешивает, получается, что интересами меньшинства просто пренебрегли (замечу, именно поэтому я не считаю себя демократом). Между прочим, если пройдёт "proposal F", можно будет констатировать, что Дебиан нынче находится под руководством комитета, т.е., читай — превратился в токсичную и вредоносную сущность.

Организация, курирующая разработку Devuan, написала

В упор не вижу никакой "организации", вижу частное лицо Denis Roio, письмо написано от первого лица. Вообще говоря, напоминает паникёрство.

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

А что делать новичкам?

> Так или иначе, на Дебиане свет клином не сошёлся. Ну, уйдём на Слаку или ещё куда.
А что остаётся новичкам? Им явно не разобраться без посторонней помощи со Слакой и подобными, ведь начинать с них сложно. А если начнут с Убунты или Дебиана, то велик шанс, что на них и останутся, то есть systemd для них станет "стандартом".

Ну это

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

С s-d слезть

С s-d слезть вообще не проблема: он сам подталкивает отказаться от него.
Например, когда не дает перезапустить сервис или просто выключить компьютер.

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

Парадокс именно в этом: Новичек ленив: Он не захочет разбираться, почему не выключился компьютер с "дружелюбным linux'ом"

Он почитает и узнает о SysVinit.

P.S.
Я же прочёл. :-)

Подобное

Подобное "протаскивание" s-d путем "демократического голосования" с получением "нужного" результата и привело к рождению Devuan'а

Поэтому, вариант с миграцией разработчиков в Devuan вполне себе возможнен.

В

В дополнение

https://diziet.dreamwidth.org/3999.html

"In the short term, Debian contributors and users who don't like systemd may switch to Devuan instead (or simply shrug their shoulders and reduce their engagement). In the medium to longer term, Debian's narrowing of focus will make it less attractive for its current variety of interesting use cases. Debian's unwillingness to let people within Debian forge their own path will make it less fun."

"Разработчикам и пользователям, которым не нравится SystemD рекомендуется переключиться на Devuan
Дальнейшая фокусировка Debian на SystemD, сделает его менее превлекательным для разработки"

Компьютерные игры

Андрей Викторович, добрый день.
Продолжаю изучать программирование, следуя вашему курсу.
Многое даётся с трудом, но желание писать игры помогает.
Сейчас подошёл к рубежу, где очень нуждаюсь в совете. Пожалуйста, подскажите, правильно ли начинающему программисту для создания игр пользоваться специальными средами их разработки (мне не нравится слово "движок")?
Из всех жанров пока хочется что-то, вроде этого:
- [url removed]
Ben Croshaw (программист) использовал [url removed]
Эта среда запускается и под Linux. Подобные ей подпограммы разработаны для среды Unity.
Возможность кажется привлекательной, но не хочется попасть в западню привлекательности и остановиться в развитии.
Как лучше программировать игры: в среде или без неё?

Большое вам спасибо за совет.
С уважением, Вячеслав.

Для начала

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

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

Если первое — то та хреновина, на которую вы постили ссылку, никакого отношения к программированию не имеет. Вообще. Те мелкие скриптики, которые в этой "среде" пишутся на непонятном языке (вроде C#, а вроде и нет) — это не программы, это именно что скриптики, а стряпанье игр в подобных "средах" — ну, с таким же успехом можно программистами считать, например, продвинутых пользователей Excel, там ведь тоже бывают макросы.

для среды Unity

Если под любую из Unix-систем разрабатывается программа, предполагающая графический интерфейс, то она не имеет права быть завязана на конкретный оконник. Все эти "для Unity", "для KDE", "для Gnome" — результат деятельности безграмотных моральных уродов, не понимающих действительной роли оконного менеджера в экосистеме X Window.

Unity

не имеет права быть завязана на конкретный оконник. Все эти "для Unity", "для KDE", "для Gnome" — результат деятельности безграмотных моральных уродов, не понимающих действительной роли оконного менеджера в экосистеме X Window.

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

Однако, исходя из контекста, есть подозрение, что Вячеслав имел в виду несколько другую Unity.

Возможно :-)

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

Про вас тут общаются

Андрей Викторович, здравствуйте!

Тут почитывая новости на opennet'е о релизе системы сборки cmake и последующем листании комментариев увидел что в обсуждении как-то внезапно возникли вы :)
Вот ссылка на комментарий, но всю ветку вполне могут и потереть
http://www.opennet.ru/openforum/vsluhforumID3/119109.html#11

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

[цитирование поскипано — объёмчик-с]

Таки я шо, сто баксов?

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

С другой стороны, там про меня исключительно лажа. И фанатом Столлмана я никогда, собственно говоря, не был, а сейчас даже перестал, пожалуй, быть его сторонником. Не, ну я всё понимаю, но чтобы в погоне за этой "свободой", которая, собственно, им самим и придумана и на самом деле свободой не является — не просто забыть исходную цель (ликвидацию копирайта и прочей интеллектуальной собственности), а наехать на пиратские партии, что, мол, они требуют отмены копирайта, а GPL основана на копирайте, как же мы без копирайта теперь будем свободу защищать... короче, клиническая картина ясна.

И книжки у меня свёрстаны вовсе не под A4, а под A5, и ни в одной из них нет строчек длиннее 65 символов, и про нормы эти я, разумеется, в курсе (см. книжку про оформление кода, стр. 28, абзац в середине).

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

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

Опасные вещества

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

А как насчёт сверхтоксичных или высокорадиоактивных веществ?

Я бы не хотел, чтобы мои соседи устроили аналог инцидента в Гоянии.

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

Старо

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

Теперь по поводу "сверхтоксичных" и "радиоактивных". В принципе, в словосочетании "способен изготовить человек" я имел в виду именно человека, т.е. индивида или группу таковых, а не всё человечество в целом, государство и т.п., т.е. я не призываю, например, к свободной продаже ядерного оружия (хотя свободная продажа огнестрела с моей точки зрения — просто аксиома, то есть пока оборот огнестрела ограничен, государство остаётся моим заведомым врагом). Изготовить радиоактивные вещества вообще вроде бы пока невозможно, их нужно добыть, а координация добычи полезных ископаемых, с моей точки зрения, как раз вполне себе одна из естественных функций государства. С химическим оружием тоже вроде бы всё не так чтоб совсем просто, то есть его невозможно изготовить, не прибегнув к помощи государства. Ну то есть, к счастью для человечества, вопрос запрещения изготовления оружия массового поражения частными лицами пока что не стоит.

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

Вот про

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

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

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

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

Ни хлор, ни

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

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

Торговля электронными книгами

Есть один автор художественных книг (ну может не только один), который продаёт свои книги через свой собственный сайт в электронном виде, но хотя бы без DRM, то есть после оплаты качается обычный fb2/txt/pdf файл.

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

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

Crowd funding как видим на примере вашей книги по программированию, работает, но подойдёт ли он для художественной литературы?

> который

> который продаёт свои книги через свой собственный сайт

буду краток: шоб он сдох, как и все копирасты

> С одной стороны, эта деятельность сомнительна

Она не "сомнительна" ни разу. Ну то есть у меня сомнений на этот счёт нет ни малейших.

> а как вообще можно заработать написанием художественной литературы

Никак. Художественная литература не должна быть работой. Впрочем, НЕхудожественная — тоже.

> Crowd funding как видим на примере вашей книги по программированию, работает

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

> но подойдёт ли он для художественной литературы?

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

Немного оффтопа

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

>

> Доска-мел-тряпка-вот-это-вот-все

Именно.

> слайды?

Если я когда-нибудь до этого опущусь, пусть меня кто-нибудь пристрелит.

> Все же код отличается

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

Что я точно знаю -- так это что если мне на какой-то пример кода не хватает доски и/или скорости его написания, то этот пример для лекции не годится, ибо слишком громоздок.

А как Вам такой вариант?

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

А никак мне

А никак мне такой вариант. Кодинг — это не то, чему следует учить на лекции. Если же целью является именно кодинг, то не нужно читать лекцию.

Только сейчас осознал.

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

Если бы на ваш

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

Снизим планку

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

Ух, тяжело

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

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

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

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

Спасибо.

Спасибо, ответ я получил. =)
> вон книжка есть, аж три тома
2 тома уже прочитаны, впереди 3, а 4 жду с нетерпением.

Слайды

>> > слайды?

>>Если я когда-нибудь до этого опущусь, пусть меня кто-нибудь >>пристрелит.

Браво! Как почти-бывший студент, жму вам руку. Было бы ещё здорово, если бы вы могли обратить в свою веру всех остальных преподавателей МГУ. Намучился от этого безобразия порядочно. Мечтать не вредно :-)

Если я

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

Линукс

Добрый день, Андрей Викторович! У меня такой вопрос: нужны ли программисту знания администрирования ОС Линукс? Спасибо!

Мне вот даже

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

Хеш-таблицы

Добрый вечер, Андрей Викторович! Я хотел спросить про хеш-таблцы: их на этапе использования языка Паскаль стоит изучать и стоит ли их изучать вообще, либо же лучше освоить работу с двоичным деревом поиска, и использовать его, когда число хранимых элементов среди которых надо проводить поиск - большое? Спасибо!

Общий принцип

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

Возможно глупый вопрос

Добрый вечер. Хотелось бы задать пару, возможно, глупых вопросов. Начать хотелось бы с офф-топа, учусь на 1 курсе, на лекциях по программированию (а начали мы сразу с C++, ведь это современно!) часто всплывают вопросы компиляции всего, что мы пишем, а также организации кода в памяти. В общем, меня интересуют следующие вопросы:
1) часто упоминается undefined behavior и говорится о том, что с этим не стоит бороться и понимать, просто следует избегать;
2) при вопросах, связанных с памятью (хочу заметить, что 2 том вашего введения я читал, но кое-что следует просмотреть ещё раз) ответы совпадают с содержанием вашей книги, но просят в это не лезть, так как "всё это было так лет 20 назад, сейчас любой профессионал скажет, что всё намного сложнее". В общем, любые попытки узнать что-то новое заканчиваются провалом.
Ну, и последнее. Является ли это дезинформацией? И что делать, если я хочу в это лезть и хочу понимать?
Извиняюсь за некоторую расплывчатость вопросов. С нетерпением жду ответа, спасибо.

Что-то вам неудачный вариант попался

Undefined behavior (само понятие такового) — это порождение проклятых стандартизационных комитетов. Между прочим, согласно пресловутым стандартам, сложение двух целых чисел может вызвать UB — если числа знаковые и результат не поместится в разрядность. Как можно это воспринимать всерьёз, лично для меня вопрос открытый.

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

Ну а если хотите понимать — берите всякие источники и экспериментируйте с компьютером.

Верно сказано

И ведь в самом деле неудачный, местами даже вредный. Хотелось бы ещё отметить, что, изучая тот самый C++, из него берётся всё самое ненужное (iostream и iomanip), всё остальное идёт из C (тот же cmath, "C-строки" и т. д.). Поэтому смысла в этом цирке я не вижу. А у меня совсем не "программистская" специальность. На "программистских" во всю используют auto, лямбды и vector'ы. Я, конечно, обычный начинающий и любитель, но задаюсь вопросом: зачем изучать в таких условиях C++, и почему бы не взять что-то повыше.

На

На "программистских" во всю используют auto, лямбды и vector'ы.

Замечу, им повезло ещё меньше, чем вам. Из них там макак делают целенаправленно.

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

Дин массивы Паскаль

Добрый день, Андрей Викторович! Я решил освоить динамические массивы на примере Паскаля. Из той информации, которую я нашел, следует, что переменная дин массива на самом деле является указателем на динамически выделенную (под массив) область памяти. А освобождение выделенной под массив памяти происходит с помощью операциии arr := nil, где arr - имя переменной дин массива. В связи с этим у меня возник вопрос: а действительно ли эта операция освобождает память, или же на самом деле происходит то, что вместо того, чтоб освободить память, просто теряется к ней доступ? Спасибо!

Если вы не

Если вы не собираетесь писать на Паскале за деньги (а я очень надеюсь, что не собираетесь), то не трогайте динамические массивы вообще. Их реализация в Паскале тщательно скрывает их истинную суть и механику, лежащую под ними – и, в довершение, мешает освоению указателей, поскольку найти задачу, в которой нужны списки, а дин.массивы не годятся — намного труднее, чем найти такую задачу, в которой нужны динамические данные как таковые.

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

Список опечаток

Есть смысл публиковать на сайте список найденных опечаток?

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

Смысл, может, и

Смысл, может, и есть, времени нет.

Очепятка

Здравствуйте. Если не ошибаюсь, то на с. 253-254 вышла опечатка. Вызов происходит с числом 7583, а вот на выходе результат вызова при значении 5783.

Эту уже нашли,

Эту уже нашли, но всё равно спасибо :-)

Благодарнасть

Спасибо Вам, Андрей Викторович, за Ваш труд! Возможно, Вы меня спасли для программирования: в ВУЗе у меня был C#, что для меня (человека, не знакомого с программированием) казалось тяжело, и отпугивало меня от программирования. Взял Вашу книгу, и по карйней мере пока что программирование для меня - занятное время провождение: это меня интересует, мне интересно попробывать всякие варианты, поиграться в процессе обучения.

Ссылки vs указатели.

Добрый день! Почитываю книжку про С++. Так вот, никак не могу отделать от ощущения, что ссылки внутри устроены "внутри" также из указателей + модификаторов. Можете что-то посоветовать? Есть ощущения, что ссылки - это только визуальное улучшение + меньше текста писать.

PS я не программист. И даже не близок к этому. Но эти книги - единственные {В России}, которые внятно рассказывают мир IT.

ps. капча ужасна.

Каких ещё

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

Мне вот другое интересно, если вы не программист, то за каким лешим вам сдался C++?

C++ незачем, но

C++ незачем, но вот ваша подача материала про ООП очень даже зачем (надеюсь).

Это зависит от

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

Посимвольный ввод информации. Паскаль.

Очень непонятно как работает read c типом char в программе char2num.pas

Странный вопрос

Read работает точно так же, как и всегда: считывает из потока стандартного ввода (в просторечии -- с клавиатуры) значение заданного типа (того типа, переменная которого передана параметром) и считанное значение помещает в переменную. В данном случае переменная имеет тип char, поэтому считывается значение именно этого типа — то есть ровно один символ. Он же и помещается в переменную.

Мне довольно сложно понять, что конкретно вам оказалось непонятно. Могу посоветовать взять вот такую программу:

program CharInput;
var
    c: char;
begin
    while not eof do
    begin
        read(c);
        if c = #10 then
            writeln
        else
            write('[', c, ']')
    end
end.

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

Исполнение кода, сформированного динамически

В первом томе на страницах 190-191 утверждается, что невозможно сформировать машинный код в памяти, а затем его выполнить. Кроме того, это утверждается в этом комментарии. Насколько я понимаю, это не совсем верно, поскольку именно так работает Just-In-Time компиляция. Конечно, если защиту от исполнения данных таки включить, то JIT работать не будет, но, насколько я понимаю, на практике её включают разве что на серверах, где требуется усиленная безопасность. Во всяком случае, по умолчанию это вроде как выключено.

Про сервера и

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

Чтобы сделать возможным JIT, нужно затребовать у системы новую секцию памяти с соответствующими флагами (одновременно доступную на чтение, запись и исполнение). В *nix-системах это делается с помощью системного вызова mmap. И да, это возможно сделать, в книге утверждение слишком категоричное. Во втором издании поправлю.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <ins> <del> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Проверка на бота
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.