Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

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

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

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

Более старые комментарии можно посмотреть в архиве гостевой книги.

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


From unknow (unverified) Sun Feb 25 05:12:52 2024 pencil

sed & awk

Андрей Викторович, добрый день. Хотел поинтересоваться, часто ли приходится Вам пользоваться утилитами sed и awk? Как относитесь к ним? Появилась необходимость простой обработки сырого текста, но, возможно, существуют более современные альтернативы, а которых Вам известно? Сам с удовольствием отношусь к терминалу, но использовать связки из grep|cat|cut|tr при наличии того же sed кажется чем-то излишним... Заранее большое спасибо за ответ и удачи в делах!

parent From Andrey V. Stolyarov profile Sun Feb 25 11:44:06 2024 pencil

userpic

Re: sed & awk

sed я использую, но сильно не весь — только когда понимаю, что мне предстоит в куче файлов проделать одну и ту же контекстную замену, которую я понимаю, как сделать одной командой в vim'е. У sed'а почти тот же синтаксис для этого, т.е. мне для этого не нужно ничего дополнительного знать.

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

Честно говоря, когда что-то серьёзное надо сделать с текстами, мне проще написать что-нибудь на C++.

From how (unverified) Sat Feb 24 17:48:32 2024 pencil

Как без JS сделать просмотр видео на сайте?

У вас есть http://infoviolence.org/ и там видео можно как скачать, так и посмотреть. Скачка файла вопросов не вызывает, но что касается красивого видео (как у вас на сайте) без JS - вот тут интернет начинать подводить. Повсюду рекомендуют JS JS JS и еще раз JS. Как же быть?

parent From Andrey V. Stolyarov profile Sat Feb 24 19:29:56 2024 pencil

userpic

Re: Как без JS сделать просмотр видео на сайте?

Вы не поверите, там просто файлы. Вот буквально файлы. Формата mp4. Если просто положить на сайт такой файл и дать на него ссылку, будет именно так, "как у меня на сайте".

Различие между двумя кнопками только в том, что по ссылке "скачать" файл отдаётся с типом application/octet-stream и ещё там заголовочек Content-Disposition добавляется, т.е. там в директории лежит .htaccess вот такой:

AddType application/octet-stream .mp4
Header set "Content-Disposition" "attachment"

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

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

parent From how (unverified) Sun Feb 25 04:29:33 2024 pencil

Re: Re: Как без JS сделать просмотр видео на сайте?

Это точно. Хорошо что еще остались такие люди, как вы. Спасибо.

parent From Andrey V. Stolyarov profile Sun Feb 25 11:23:32 2024 pencil

userpic

Re: Как без JS сделать просмотр видео на сайте?

У меня, знаете, только один вопрос — а вы сами догадаться не могли? Ну элементарно же: протокол HTTP(s) позволяет вытаскивать файлы, при этом видео — это просто файл, хоть и здоровенный, вот что если просто взять и положить его на сайт?

parent From Artem (unverified) Sun Feb 25 13:30:53 2024 pencil

Re: Re: Как без JS сделать просмотр видео на сайте?

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

parent From Andrey V. Stolyarov profile Sun Feb 25 13:56:59 2024 pencil

userpic

Re: Как без JS сделать просмотр видео на сайте?

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

Ржём с супругой в две глотки, спасибо — суть схвачена на удивление точно.

parent From Арсений (unverified) Tue Feb 27 17:26:37 2024 pencil

Re: Re: Re: Как без JS сделать просмотр видео на сайте?

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

parent From Anonymous (unverified) Wed Feb 28 14:20:38 2024 pencil

Re: Как без JS сделать просмотр видео на сайте?

Что значит "ручка сервера не живёт между вызовами"?

parent From Andrey V. Stolyarov profile Wed Feb 28 14:25:50 2024 pencil

userpic

Re: Как без JS сделать просмотр видео на сайте?

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

Я-то вроде бы понимаю, о чём идёт речь, но лучше давайте подождём, пока нам эту фразу расшифрует тот, кто её написал :-)

parent From Арсений (unverified) Wed Feb 28 18:51:27 2024 pencil

Re: Re: Как без JS сделать просмотр видео на сайте?

Виноват) Ещё и формулировка неточная

Имел в виду, что товарищ представлял себе работу сервера так:

- Приходит запрос - Сервер запускается и выполняет соответствующий обработчик - Сервер выключается

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

parent From Andrey V. Stolyarov profile Wed Feb 28 20:01:14 2024 pencil

userpic

Re: Как без JS сделать просмотр видео на сайте?

причём, естественно, SQLная, ибо как же иначе, так?

parent From Арсений (unverified) Thu Feb 29 06:40:42 2024 pencil

Re: Re: Как без JS сделать просмотр видео на сайте?

Конечно, а разве бывают какие-то другие бд?

parent From Andrey V. Stolyarov profile Thu Feb 29 09:09:35 2024 pencil

userpic

Re: Как без JS сделать просмотр видео на сайте?

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

parent From nelson profile Wed Feb 28 21:38:04 2024 pencil

Re: Re: Re: Как без JS сделать просмотр видео на сайте?

- Приходит запрос - Сервер запускается и выполняет соответствующий обработчик - Сервер выключается

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

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

Да, это прям как bash-скрипты с промежуточной записью в файлы, вместо переменных.

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

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

parent From Арсений (unverified) Thu Feb 29 06:52:29 2024 pencil

Re: Re: Re: Re: Как без JS сделать просмотр видео на сайте?

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

Я, кстати, когда прошлый коммент писал, подумал, что в целом ведь не так и абсурдно - если бы его "ручки" были cgi-программами, интуиция была бы верна

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

parent From Ilya profile Thu Feb 29 10:02:18 2024 pencil

Re: Re: Re: Как без JS сделать просмотр видео на сайте?

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

From pascaler (unverified) Sat Feb 24 10:38:57 2024 pencil

Брр, указатели

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

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

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

Тем, кто будет идти моим путем и когда-нибудь возьмется за указатели, совет. (Конечно, это субъективное, исключительно личное мнение, никого не пытаюсь ни в чем убедить, и сам не уверен, что прав.) НИКОГДА, черт возьми, даже не думайте сделать так, как я! Кто бы мог подумать, Андрей Викторович был абсолютно прав и полностью серьезен, когда советовал решить обе задачи самостоятельно в связи с тем, что разобраться в противном случае будет сложнее!

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

Указатели также заново родили во мне забытое чувство из детства, впервые пришедшее в момент, когда мне в руки попал кубик Рубика - горячее раздражение и неутолимая жажда разобраться, в чем тут дело, никак не угасающая от неудач. Желание размолоть молотком противную игрушку, попытки "решить" ее с помощью разбора и сбора из кусочков - всё пробовалось, но удовлетворения никакого не доставляло, пока головоломка не была решена "честно"; то же испытываю и к односвязным спискам, хотя теперь я куда взрослее и навредить компьютеру или компилятору уж точно не стану пытаться :D

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

parent From Andrey V. Stolyarov profile Sat Feb 24 10:42:54 2024 pencil

userpic

Фигассе крик души :-)

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

parent From pascaler (unverified) Sun Feb 25 11:11:17 2024 pencil

Re: Фигассе крик души :-)

К счастью, целого года на поиск решения мне не понадобилось - ура, победа, параграф 2.10.4 первого тома я преодолел.

Снова не удержусь от желания поделиться тут эмоциями: хочу сказать, что я здорово так кайфанул - хотя и меньше, чем от впервые собранного кубика Рубика в свое время, потому что на деле односвязный список оказался куда более простой вещью, чем выглядел изначально :) Теперь на задворках моего сознания борются два ощущения: с одной стороны некий легкий восторг а-ля "Это что же получается, я, оказывается, вообще способен стать программистом, если я всё это сумел понять? Может, мне и всё остальное понять будет по плечу?" - и ему противоположное: "Гмм... вообще-то в том, что мне удалось понять, не было ничего сложного, и навряд ли факт этого понимания о чём-то там свидетельствует".

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

parent From Andrey V. Stolyarov profile Sun Feb 25 11:39:45 2024 pencil

userpic

А быстренько вы :)

Дайте-ка угадаю, надо было поспать, чтобы всё уложилось? :-)

parent From pascaler (unverified) Sun Feb 25 12:49:44 2024 pencil

Re: А быстренько вы :)

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

Так вот, в гостевой я, конечно, никогда задавал вопросов о том, почему у меня что-то не работает, но вот сейчас на пару мгновений я изволю держать вас за человека с паранормальными способностями :D Как это вы так сразу угадали?

Да, так и было. Хронология освоения понятия односвязного списка вышла такая: впервые начал читать главу 2.10 позавчера вечером, около часа спустя я дошел до двух задач из параграфа 2.10.4, где быстро получилось разве что придумать, как распечатать циклом уже готовый список. Ещё через два часа я понял, что нифига не понимаю, как его заполнить, полез в объяснения, окончательно "сломался", потеряв способность думать самостоятельно - этот момент описан в открывающем комментарии, затем свалился спать и хорошенько так выспался.

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

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

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

parent From Andrey V. Stolyarov profile Sun Feb 25 13:32:53 2024 pencil

userpic

Re: А быстренько вы :)

> не вспомню точного места

Это из главы про отладку.

> Как это вы так сразу угадали?

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

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

parent From pascaler (unverified) Sun Feb 25 16:26:35 2024 pencil

Re: Re: А быстренько вы :)

> спасибо за ваши комменты

Ну, рад стараться :) После приобретения собственного опыта могу сказать следующее: люди, которые заявляют, что это не проблема - гм, я с трудом вообще могу представить, кто они такие. Даже интересно. Заявление "указатели не проблема", если говорить именно о первичном их освоении, для меня звучит аналогично утверждению "я сам освоил их с лёту, то есть, я прочёл в какой-то книжке, что такое указатель и что такое односвязный список, тут же сел за компьютер и тут же написал программу, которая выполняет какую-то полезную работу, используя односвязный список". Если эта персона имеет в виду именно это, то для меня это точно гений. Если же этот кто-то имеет в виду что-то другое, то у меня есть только один вариант угадать, что значит утверждение "указатели не проблема": он постоянно использует только язык программирования, в котором нет указателей, и вот его где-то случайно окликнули и спросили: "Были ли у вас проблемы с освоением указателей?" - на что он недоуменно пожмет плечами и совершенно честно ответит "Не было у меня таких проблем".

Абсолютно во всех других случаях моего жалкого ума-умишка не хватает, чтобы попытаться представить себе ситуацию, в которой кто-то заявит, что указатели не проблема, и это будет совершенно верно в этой самой ситуации. Сочту уместным здесь также добавить: весь материал части 2 первого тома вообще у меня доселе не порождал никаких проблем до момента встречи с главой 2.10. Более того, практически все примеры кода в учебнике я всегда ранее писал самостоятельно до этого же момента, перед этим читая лишь словесные его объяснения - так понимать материал было проще. И только на параграфе 2.10.4 у меня впервые появились настоящие проблемы с пониманием материала, и впервые появилось желание сначала разобраться в чужом коде, чтобы написать свой собственный по аналогии.

> осваивал указатели, смог освоить

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

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

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

parent From Anonymous (unverified) Sun Feb 25 02:04:55 2024 pencil

Re: Брр, указатели

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

parent From Andrey V. Stolyarov profile Sun Feb 25 11:38:11 2024 pencil

userpic

Re: Брр, указатели

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

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

parent From Rodion (unverified) Mon Feb 26 09:05:25 2024 pencil

Кстати о рекурсии

Здравствуйте, Андрей Викторович. У меня с указателями проблем не было никаких, как это ни странно. Когда я приступал к их изучению (2 месяца назад), я думал, что я застряну на этой теме, как и многие другие новички. Однако я с ходу, буквально за полчаса-час, решил первую задачу (у меня даже возникло то самое чувство: "а что тут может быть сложного"). Со второй же задачей я повозился немного дольше. Нужно было как раз "переспать с мыслью" :) На следующий день я всё решил тоже без особых проблем.

Но вот рекурсия! Я не понимаю её совсем, она просто не хочет мне поддаваться. Ну как, то есть я вроде понял и даже воспроизвёл задачи, приведённые в учебнике, самостоятельно. Но вот меня никак не покидает ощущение какой-то "магии". И вот эта задача про Ханойскую башню. Я тот параграф из второй части прочитал раз двести, наверное, но вот не приходит понимание и всё тут. Нет того самого "эврика", как выразился один человек в комментариях к одному из вашего видео. Если честно, у меня уже возникает ощущение, возможно обманчивое, что я уже никогда не пойму рекурсию :(

Пользуясь случаем (я очень редко пишу комментарии), хочу выразить благодарность за эту "магическую" комбинацию тёмно-серого и светло-серого цветов для фона и текста соответственно. До недавнего времени я спокойно пользовался и подсветкой синтаксиса, и вообще любыми цветными интерфейсами, но почему-то около месяца назад глаза начали раздражаться при виде любого яркого цвета. Я установил эту "магическую" комбинацию везде, где только можно и ощутил неописуемое облегчение. Глаза просто наслаждаются :D В связи с этим, когда есть выбор, всегда пользуюсь консольными программами. Боюсь, что всё дойдёт до того, что в итоге вообще полностью уйду жить в терминал :)

parent From Andrey V. Stolyarov profile Mon Feb 26 10:41:22 2024 pencil

userpic

Re: Кстати о рекурсии

> я уже никогда не пойму рекурсию

Never say never. Всё у вас получится, упираться рогом только не надо, и всё. Основной рассказ о рекурсии — в третьем томе, до той поры всё, что вы успели про неё узнать, уляжется и устаканится двести раз.

> комбинацию тёмно-серого и светло-серого цветов для фона и текста соответственно.

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

> Боюсь, что всё дойдёт до того, что в итоге вообще полностью уйду жить в терминал :)

Я только не понял, почему вы этого "боитесь".

parent From Rodion (unverified) Mon Feb 26 11:24:56 2024 pencil

Re: Re: Кстати о рекурсии

> Основной рассказ о рекурсии — в третьем томе

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

> вам будет интересно узнать

Да, это очень интересно. Я и сам хотел поинтересоваться. И я имел в виду именно цвета терминала. Мне казалось, что я прочитал об этой цветовой гамме именно у вас (либо в гостевой книге, либо в книге). Я, кстати, установил похожие цвета. Только фон не чисто чёрный, а тёмно-серый (#101010).

> Я только не понял, почему вы этого "боитесь".

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

parent From Andrey V. Stolyarov profile Mon Feb 26 13:18:30 2024 pencil

userpic

Re: Кстати о рекурсии

> Только фон не чисто чёрный, а тёмно-серый (#101010).

Я бы сказал, что это лишняя нагрузка на зрение, если на этом фоне нет ничего яркого. У меня, естественно, ничего яркого нет.

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

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

Вот примерно так выглядит достигнутое просветление :-)

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

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

parent From Rodion (unverified) Wed Feb 28 12:03:09 2024 pencil

Re: Кстати о рекурсии

> это лишняя нагрузка на зрение

Да, вы правы. Установил чёрный цвет для фона и стало гораздо комфортнее (интересно, почему я сразу этого не сделал).

> на вопрос "почему" ответ есть, притом очень простой и где-то даже тривиальный

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

Ещё меня очень пугает, что люди совершенно забыли о своей безопасности. Вот прямо совсем. Их излюбленный аргумент: "А кому я нужен? Ну знают обо мне всё и что?". Честно говоря, я теряюсь, когда это слышу, поэтому хотел бы поинтересовасться что бы вы ответили на это? Но в любом случае любые мои слова не воспринимаются такими людьми от слова совсем. Они просто "свято" верят в то, что им когда-то вложили в голову те самые манагеры.

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

P.S. Дочитал сегодня книгу "Трудно быть богом", которую вы упомянали в одном из своих роликов, большое спасибо вам за это. В связи с этим вопрос: какие бы вы книги посоветовали почитать, по качеству не уступающие этой?

parent From Andrey V. Stolyarov profile Wed Feb 28 13:07:17 2024 pencil

userpic

Re: Re: Кстати о рекурсии

> "А кому я нужен? Ну знают обо мне всё и что?"

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

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

> какие бы вы книги посоветовали

У Стругацких могу посоветовать практически всё, что они успели написать. Ещё есть Станислав Лем. А вообще, если совсем честно, с художественной литературой не ко мне, я же не литературовед.

parent From Анонимный комментатор в интернете (unverified) Wed Feb 28 20:13:49 2024 pencil

Re: Re: Re: Кстати о Стругацких

> У Стругацких могу посоветовать практически всё, что они успели написать.

Тут надо, наверное, оговориться, что это относится в первую очередь именно к их совместному творчеству.

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

parent From Andrey V. Stolyarov profile Wed Feb 28 20:24:18 2024 pencil

userpic

Re: Кстати о Стругацких

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

parent From Анонимный комментатор в интернете (unverified) Wed Feb 28 23:46:56 2024 pencil

Re: Re: Кстати о Стругацких

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

parent From Oliver (unverified) Wed Feb 28 20:18:22 2024 pencil

Re: Re: Кстати о рекурсии

Позволю себе тоже высказать свое мнение не сей счёт.

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

Каждому из нас дано видеть жизнь по-своему. Таких как Андрей Викторович, как Вы, не так на самом деле много. К сожалению. То же обучение работе на компьютерах в школе начинается с одной хорошо известной ОС, что формирует соответствующие привычки работы В GUI. И людям, которые после школы не идут в ИТ, в программисты, не понятны Ваши аргументы по поводу командной строки: разве что если человек как-то не натыкается на Юникс, открыв который, понимает, насколько круто работать в командной строке. Но будем реальны, таких - очень мало из общего числа пользователей компами. И если человек пошел куда-то не в ИТ, и вся его работа за компом сводится к манипуляциям в определенных программах, что помогает зарабатывать на жизнь, его очень не просто убедить в правильности Вами выбраного подхода. Хотя бы потому, что он на этом зарабатывает! Ему все равно под управлением какой ОС работает его комп, главное, чтобы он делал то, что помогает приносить деньги. Примерно тоже самое касается смартфонов, ватсаппов и прочего: человеку для работы требуется, он и не думая этим пользуется. И переубедить человека перестать пользоваться тем, что ему в том числе нужно для работы, нереально практически, потому что каждому, как говорится, своя рубашка - ближе. Вот и имеем то, что имеем. Реальность. Для того, чтобы что-то хоть начало меняться, нужно чтобы в школах работе к компе обучали на Юниксе. Это будет первый шажочек в правильном направлении. Пока этого нет и большинство людей просто даже не подозревает о том, что есть Юникс, есть такая командная строка, что в ней работать - круто на самом деле, ничего не поменяется или будет меняться оооочень медленно. Как-то так я это вижу... На истину в последней инстанции не претендую.

parent From Andrey V. Stolyarov profile Wed Feb 28 20:40:08 2024 pencil

userpic

Re: Кстати о рекурсии

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

Вот смотрите, два коммента назад мой текст:

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

Теперь тот коммент, на который вы отвечаете:

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

И после этого ваш текст. Вам не очевидно, что вот это вот всё — прямые следствия того, что я только что процитировал?

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

parent From pascaler (unverified) Sun Feb 25 11:13:05 2024 pencil

Re: Брр, указатели

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

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

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

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

1) Ещё раз то, что было в моем изначальном комментарии: лучше не лезьте в объяснения задач до того, как решите их сами. Автор не шутит, когда рекомендует это (поразительно, кто бы мог подумать!); если же всё-таки вы решили туда залезть раньше времени, постарайтесь хотя бы не читать написанный код и ограничиться словесным описанием алгоритма и картинками-схемами. У меня чтение кода до того, как я его понял, дало самый неприятный результат - на некоторое время парализовало способность думать над решением задачи: поскольку я уже запомнил решение, я не мог сам до него дойти методом проб и ошибок, и, как следствие, до конца его понять;

2) Если вы всё-таки залезли в объяснения до того, как всё поняли, то, возможно, нет худа без добра - у вас появилась возможность провести небольшой "тест": посмотрите на картинки-схемы и ответьте себе на вопрос - всё ли в них понятно? Если что-то в них оставляет неуверенность, то есть, на мой взгляд, некоторая вероятность того, что вы вообще на самом деле не поняли, что такое односвязный список, и может быть, даже не до конца поняли, что такое указатель; возможно, стоит вернуться к началу главы об указателях и пытаться всё осмыслить заново. Реальность с этими схемами такова, как мне кажется: в этих схемах ни единого раза нет ничего такого, чего можно не понять, если вы поняли, что такое односвязный список и что такое указатель;

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

4) Ни в коем случае не пугайтесь того, что задач к самостоятельному решению предлагается две: если вы самостоятельно догадались, как решить первую, решение второй придёт к вам всенепременно в пару-тройку минут;

parent From pascaler (unverified) Sun Feb 25 11:15:11 2024 pencil

Re: Брр, указатели

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

5.1) Пустой список - это не запись из пустого поля data и поля next, указывающего на nil. Пустой список - просто указатель на nil, решительно постарайтесь понять, почему это так;

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

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

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

5.5) Dispose уничтожает не адрес, и не адрес и объект, находящийся по этому адресу, а только объект, находящийся по адресу. Четкое осознание этого даст вам понять, что в ходе добавления нового элемента в список вообще уничтожать ничего не нужно.

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

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

parent From Andrey V. Stolyarov profile Sun Feb 25 11:31:45 2024 pencil

userpic

Re: Re: Брр, указатели

Тут я всё-таки внесу поправочку:

> указатель на nil

Ни фига это не "указатель на nil", ёлки-моталки :-) Это указатель, содержащий значение nil. Вот ещё раз: указатель — это такая область памяти, куда можно поместить адрес другой области памяти. При этом значение nil — это такое адресное значение, которое не соответствует никакой памяти. Вот его, это значение, туда, в тот указатель, и поместили как раз. Куда он после этого указывает? Да никуда!!! Причём вот это вот "никуда" обозначено явным образом, прямо вот табличка написана "я указатель, но прямо сейчас никуда нафиг не указываю".

parent From pascaler (unverified) Sun Feb 25 12:00:42 2024 pencil

Re: Re: Re: Брр, указатели

Да, простите, Вы абсолютно правы, нет сомнений.

Это я и имел в виду, и в коде, конечно, писал first := nil, то есть, заносил в переменную адрес, а не нечто типа first^ := nil, что, наверное, один из вариантов перевода словосочетания "указатель на nil" в код на Паскале.

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

В том же пункте 5.1 моего комментария, где эта ошибка, конечно, и слова > поля next, указывающего на nil - тоже надо исправить, имелось в виду "поля next, содержащего nil".

parent From Oliver (unverified) Mon Feb 26 08:35:07 2024 pencil

Re: Re: Брр, указатели

> Указатель на первый элемент списка - никоим образом не весь список

В моем понятии, в случае когда в списке - всего один элемент, это есть весь список.

parent From Andrey V. Stolyarov profile Mon Feb 26 10:43:54 2024 pencil

userpic

Re: Брр, указатели

Когда в списке один элемент, список состоит из указателя на этот элемент и самого этого элемента, но никак не из одного только указателя.

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

From radix (unverified) Fri Feb 23 19:51:35 2024 pencil

Fpc-компилятор в FreeBSD

В книге сказано не обращать внимание на строку /usr/bin/ld: но у меня появляются две строки: 1) /usr/local/bin/ld.bfd: warning: ... .note.GNU-stack ... 2) /usr/local/bin/local/bin/ld.bfd: NOTE ... Что это? или ничего страшного и можно не обращать на эти строки?

parent From Andrey V. Stolyarov profile Fri Feb 23 20:27:18 2024 pencil

userpic

Re: Fpc-компилятор в FreeBSD

На вопрос "что это" ответ довольно простой: это у команды, поддеживающей сейчас Free Pascal, кривые руки, вдобавок растущие не будем говорить откуда.

Насчёт "ничего страшного" — ну, я бы не рекомендовал полагаться на Free Pascal в качестве рабочего инструмента, но с ролью учебного пособия он пока ещё как-то справляется.

parent From Anonymous (unverified) Thu Feb 29 19:00:04 2024 pencil

Re: Re: Fpc-компилятор в FreeBSD

Это не только у Free Pascal такое. У меня что-то похожее встречалось при линковке объектных файлов, полученных из исходников на ассемблере. Это беды у GNU ld, которому зачем-то понадобилась эта секция в объектных файлах.

From ? (unverified) Fri Feb 23 12:29:19 2024 pencil

Планируется ли документация на русском?

Знаю о вашей позиции по отношению к изоляционизму, но все таки...Стоит ждать документацию Талассы на русском?

parent From Andrey V. Stolyarov profile Fri Feb 23 13:26:39 2024 pencil

userpic

Re: Планируется ли документация на русском?

Принципиально палец о палец не ударю в этом направлении.

From seg (unverified) Wed Feb 21 10:14:39 2024 pencil

Segmentation fault | Thalassa CMS

Разбираюсь с цмской и при вводе некорректных значений в конфиге иногда выпадает сегфолт. Это так и надо? Или нужно сообщать о подобных вещах вам?

parent From Andrey V. Stolyarov profile Wed Feb 21 11:28:54 2024 pencil

userpic

Re: Segmentation fault | Thalassa CMS

Нет, так, конечно, не надо — вылетать по сегфолту всё же моветон. Так что да, сообщайте, буду фиксить.

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

From Саша (unverified) Sat Feb 17 08:53:10 2024 pencil

Поисковая машина здорового человека

Каким поисковиком пользоваться в этом засилии "современных технологий"?

parent From Andrey V. Stolyarov profile Sat Feb 17 09:59:03 2024 pencil

userpic

Re: Поисковая машина здорового человека

Поисковиками лучше вообще не пользоваться, но если совсем без этого никак (а когда поисковики со своим brute force approach вытеснили все службы каталогов, оно реально бывает никак), то лично я использую duckduckgo.

From anon-from-lor (unverified) Fri Feb 9 16:22:04 2024 pencil

readonly прошивки

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

parent From Andrey V. Stolyarov profile Sat Feb 10 20:53:26 2024 pencil

userpic

Re: readonly прошивки

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

parent From Anonymous (unverified) Sun Feb 11 11:24:49 2024 pencil

Re: Re: readonly прошивки

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

parent From Andrey V. Stolyarov profile Sun Feb 11 21:15:44 2024 pencil

userpic

Re: readonly прошивки

Разумеется, должны быть раскрыты исходники и сняты любые "авторско-правовые" ограничения на распространение. А что, это не очевидно? Пока это интегральная часть дивайса, во-первых, на заводе, где их делают, заведомо нет информации, кому какой экземпляр достанется; во-вторых, производитель гарантирует работу всего устройства целиком; в-третьих, с пользователя никто заведомо не пытается содрать больше денег, чем стоит само устройство. Как только ЭТО становится чем-то отдельным от устройства, во-первых, производители тут же начинают нести всякую пургу, что якобы гарантия распространяется только на аппаратную часть, во-вторых, возникают дебильные "авторско-правовые" заморочки (как будто блджад целью распространения этого блоба может быть что-то иное, нежели его заливка в их же устройство), и в-третьих, возникает миллион и маленькая тележка способов прислать кому-то "персонализированный" блоб с именной закладкой.

parent From Anonymous (unverified) Sun Feb 11 12:03:31 2024 pencil

Re: Re: readonly прошивки

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

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

parent From Andrey V. Stolyarov profile Sun Feb 11 21:17:11 2024 pencil

userpic

Re: Re: Re: readonly прошивки

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

parent From Anonymous (unverified) Tue Feb 13 14:16:50 2024 pencil

Re: Re: readonly прошивки

Увы, но новые компьютеры с таким подходом вообще невозможно купить. Разве что Talos Secure Workstation, который немного устарело и продаётся по огромным ценам по сравнению с обычными PC на AMD или Intel.

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

parent From Andrey V. Stolyarov profile Wed Feb 14 11:56:33 2024 pencil

userpic

Re: readonly прошивки

У меня при виде таких комментариев возникает интересный вопрос: и что? And so fucking what?! Каким образом это или какое бы то ни было иное положение вещей может повлиять на то, что допустимо или недопустимо?

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

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

From Anonymous (unverified) Fri Feb 9 10:09:02 2024 pencil

KOI8 в консоли

Насколько я помню, вы писали, что у вас в консоли KOI8, но это было давно. У вас до сих пор она? Есть ли какие-то плюсы или только проблемы?

parent From Andrey V. Stolyarov profile Fri Feb 9 10:30:06 2024 pencil

userpic

Re: KOI8 в консоли

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

From Acadabra (unverified) Thu Feb 8 15:21:47 2024 pencil

Параллельные вычисления

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

Так вышло, что я учусь на 3 курсе ВМК на кафедре ВТМ (вычислительных технологий и моделирования) и у нас есть курс, посвященный параллельным вычислениям, куда входит pthread, OpenMP и т.п.

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

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

Так, в курс входят некие "c++threads", которых, очевидно, не существует. С другой стороны есть OpenMP, которое по первому впечатлению создаёт треды с помощью неких директив компилятора, что выглядит мягко говоря сомнительно. Ну и в числе прочего есть pthread, которую вы частично используете в свое книге.

Ну и правильно ли я понимаю, что единственное, чем тут можно заняться - укрепление знаний из вашей книги, используя pthread?

parent From Andrey V. Stolyarov profile Thu Feb 8 15:53:20 2024 pencil

userpic

Re: Параллельные вычисления

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

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

parent From Acadabra (unverified) Thu Feb 8 16:08:18 2024 pencil

Re: Re: Параллельные вычисления

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

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

Спасибо за ответ и совет!

parent From Kakapo (unverified) Fri Feb 9 09:22:07 2024 pencil

Re: Параллельные вычисления

С OpenMP стоит помнить, что изначально его придумывали чтобы взять уже написанный (иногда лет 20-30 назад, даром, что первая версия была для Фортрана) код и распараллелить те места, которые очевидным образом параллелятся. Вроде циклов с независимыми итерациями. Более того, это всё предназначалось не для профессиональных программистов, а для, в лучшем случае, прикладных математиков, в худшем - для исследователей из других областей. Проще говоря - это DSL, который если и применять, то именно для такой специфической ситуации.

Так же полезно помнить, что неумение ученых/исследователей программировать - явление интернациональное и известное столько же лет, сколько и программирование как явление. Но люди, которые "не справились в прошлом семестре даже с кэш-оптимизацией программы", вполне могут справится c OpenMP именно как с инструментом для не-программистов. Я не говорю, что это хорошо, если что.

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

А, да - ваше впечатление про то, как компилятор обрабатывает директивы OpenMP совершенно правильное.

From Александр (unverified) Thu Feb 8 15:15:57 2024 pencil

Литература

В списке литературы 2 тома увидел книгу "А.М. Робачевский, Операционная система Unix". Могли бы вы порекомендовать её после ваших книг в качестве изучения Unix систем?

parent From Andrey V. Stolyarov profile Thu Feb 8 22:50:38 2024 pencil

userpic

Re: Литература

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

From anon (unverified) Thu Feb 8 04:44:03 2024 pencil

Битая ссылка

Здравствуйте!

На странице книги "Что не так с Чарльзом Тэйлором" находится битая ссылка на перевод оригинального эссе Чарльза Тэйлора. Нашел на сайте Логоса рабочую ссылку: https://logosjournal.ru/articles/1518/

Также, на той же странице, в заголовке находится опечатка "Чальзом". Интересно, сколько она там пробыла незамеченой :)

parent From Andrey V. Stolyarov profile Thu Feb 8 09:16:55 2024 pencil

userpic

Re: Битая ссылка

Спасибо, всё поправлено.

> Интересно, сколько она там пробыла незамеченой :)

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

From anonymous (unverified) Tue Jan 30 18:51:28 2024 pencil

Lazarus, окошки и ООП во FreePascal

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

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

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

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

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

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

В поисках ответов на первый вопрос я сразу же наткнулся на нечто, называемое Lazarus; судя по всему, это какая-то среда визуального программирования, использующая FPC и требующая знаний ООП в этом языке. Так вот, после этого долгого предисловия, наконец, мой вопрос (-ы): если я на хорошем уровне освою главу о Паскале и мои программы достигнут объема свыше двух-трех тысяч строк, могу ли я после этого сделать паузу в освоении трехтомника и попытаться освоить Lazarus и ООП во FreePascal, чтобы написать программы для моих знакомых? Или это нечто зловредное, чем никогда не стоит пользоваться?

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

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

parent From Andrey V. Stolyarov profile Tue Jan 30 19:30:38 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

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

Lazarus — это интегрированная среда, её использовать не надо. Библиотеки, рисующие окошки, доступны вне зависимости от того, делаете вы это в Lazarus'е или в нормальном редакторе.

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

parent From Anomynous (unverified) Tue Jan 30 22:36:08 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

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

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

Чисто из научного интереса, не вспомните ли, откуда взялся вариант употребления в предложенном вами значении? То же беглое гугление такого варианта вообще не показало.

parent From Andrey V. Stolyarov profile Wed Jan 31 08:21:08 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

Я точно помню, что слово "олдфаг" в значении "любитель старины" на linux.org.ru употреблялось ещё лет десять назад (возможно, и раньше). Подозреваю, что "ньюфаг" откуда-то оттуда же.

parent From Artem (unverified) Wed Jan 31 12:08:16 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

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

parent From Andrey V. Stolyarov profile Wed Jan 31 12:35:37 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

Бррр, педик вроде faggot, мне казалось, что "фаг" — это традиционно "пожиратель", ну как в слове "копрофаг", в смысле одни готовы жрать всё старое, другие — жрать всё новое. Хотя, конечно, неисповедимы пути мемов, сленга и прочего новояза.

parent From rkvg-es (unverified) Thu Feb 1 06:19:50 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

Имиджбордовое "фаг" - это больше от "фагготрия", faggotry, то есть дословно "пидорство", а также "пижонство". Кроме того, это перекликается с bigotry, то есть "показушничеством".

https://www.urbandictionary.com/define.php?term=faggotry

parent From Andrey V. Stolyarov profile Thu Feb 1 10:47:45 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

Пижонство, кстати, хорошо подходит. Только тогда олдфаг и ньюфаг — это не старый педик и новый педик, а скорее выпендрёжник старьём или выпендрёжник новьём.

parent From anonymous (unverified) Wed Jan 31 09:02:12 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

>библиотеки, рисующие окошки, доступны вне зависимости от того, делаете вы это в Lazarus'е или в нормальном редакторе

Теперь даже немного стыдно за свой вопрос :( Мог бы и сам догадаться. Я же видел примеры кода из этого Lazarus'а: судя по всему, никакой специальной графической лазарусовской магии там нет - в uses подключается целая прорва разных модулей, которые, похоже, всё нужное и делают. И на чистом Си без ООП как-то графику ведь рисуют: i3-wm, например, которым я уже вот как более полугода пользуюсь - с момента знакомства с "Введением в профессию" - написан на чистом Си, а ведь, похоже, это довольно сложно устроенная графическая программа.

>хвататься за ООП вам очевидно рано

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

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

parent From Andrey V. Stolyarov profile Wed Jan 31 09:40:14 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

Я не могу утверждать, что объектная подсистема Free Pascal вот прямо опасна для мозгов — в конце концов, я сам когда-то объекты осваивал на Turbo Pascal 5.5, и ничего, как видим, живой.

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

parent From Anonymous (unverified) Wed Jan 31 13:25:22 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

Синтаксис сделает свое дело. Когда-нибудь человеку надоест писать begin ... end, (и в Object Pascal) constructor/destructor.

parent From Andrey V. Stolyarov profile Wed Jan 31 17:44:22 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

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

Откуда вы такие берётесь-то...

parent From Anonmous (unverified) Thu Feb 1 15:44:00 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

> Откуда вы такие берётесь-то...

Мы беремся из "конца пути", из C++.

Мы уверены, что без получения не-const ссылки на объект порой никак, потому что возвращение нового объекта и использование operator= будет стоить слишком дорого.

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

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

parent From Andrey V. Stolyarov profile Fri Feb 2 11:52:35 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

И что, в конце пути всё ещё не понимаете, что begin и end вместо фигурных скобок — это как раз дело даже не десятое?

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

parent From anonymous (unverified) Wed Jan 31 19:29:50 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

На Паскале я навсегда точно не останусь - точно не далее момента, когда я выполню условие перехода изучению языка Си, которое вы поставили какому-то "залётному": http://stolyarov.info/books/programming_intro/taskbook#cmt70 ; как только у моих программ на Паскале появятся сторонние пользователи, так и сразу вперёд - к nasm и к Си.

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

(Автору коммента выше про мою гипотетически возможную усталость от печатания begin/end: попробуйте освоить Vim! :) Я пока учусь и использую только самые базовые его возможности, но уже могу сказать, что потенциал этого редактора по автоматизации рутинного печатания выглядит довольно мощным, если не пугающе-внушительным. Уверен, что при желании его всегда можно настроить так, чтобы сделать удобным набор текста любого типа/языка, и автоматически подставлять в нужное место что угодно, будь составной оператор такого языка хоть в сотню раз длиннее, чем в Паскале. А то ж вы так, чего доброго, на Python перейдете, сменив с десяток языков оттого, что в них синтаксис неудобный, и на нем навсегда останетесь - или ещё где-нибудь, где ещё проще :) )

parent From Andrey V. Stolyarov profile Wed Jan 31 20:04:41 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

Такой вопрос, вы главу про модуль crt и полноэкранные программы видели? Возможно, так проще найти сторонних пользователей.

parent From автор_исходного_комментария (unverified) Thu Feb 1 22:46:00 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

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

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

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

parent From wm (unverified) Thu Feb 1 09:26:55 2024 pencil

Re: Lazarus, окошки и ООП во FreePascal

> как-то графику ведь рисуют: i3-wm, например

i3-wm - это window manager? У него не такие уж мудрёные задачи, если специально не нагружать его необязательными возможностями. И большую часть времени он взаимодействует с другими программами, а не с пользователем непосредственно.

parent From Andrey V. Stolyarov profile Thu Feb 1 10:51:07 2024 pencil

userpic

Re: Re: Lazarus, окошки и ООП во FreePascal

> У него не такие уж мудрёные задачи,

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

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

Вот уж тут, я бы сказал, строго поровну :-P

parent From UI (unverified) Thu Feb 1 04:16:42 2024 pencil

Re: Lazarus, окошки и ООП во FreePascal

>гуй, да ещё и строго "интуитивно понятный".

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

parent From Andrey V. Stolyarov profile Thu Feb 1 10:42:16 2024 pencil

userpic

Re: Lazarus, окошки и ООП во FreePascal

Кстати, факт, упустил я это дело. "Интуитивно понятные интерфейсы" — это маркетоидский миф.

parent From автор_исходного_комментария (unverified) Thu Feb 1 22:48:46 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

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

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

Это мое мнение составлено без капли радикализма, иногда присутствующего у профессиональных пользователей безусловно удобных терминалов систем семейства Unix - это исключительно опыт человека, использовавшего в промежутке 2009-2017 только Windows и вообще в том промежутке времени слабо разбиравшегося в информационных технологиях. Ни единого раза (буквально) лично мне ни один интерфейс программы, отвечающий за тонкую настройку чего-либо и нагруженный большим количеством функций, не показался сколько-нибудь реально удобным и не вызывал приятных чувств. А вот горение пониже поясницы и желание обматерить его авторов - примерно в двух третях случаев. И не знал я ещё тогда ни о каких удобствах консолей - и о каких-то усилиях маркетологов доказать удобство GUI, с другой стороны, тоже не слышал. Думаю, услышав, не поверил бы. Так что не думайте, что я верю в некую общую для всех "интуитивную понятность GUI" - не верю; хотя это, может, всё оттого, что я какой-нибудь неуклюжий и криворукий :)

parent From Anonymous (unverified) Fri Feb 2 20:09:49 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

> "интуитивно понятный"

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

parent From Oliver (unverified) Fri Feb 2 11:15:32 2024 pencil

Re: Lazarus, окошки и ООП во FreePascal

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

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

parent From Арсений (unverified) Sun Feb 4 13:36:27 2024 pencil

Re: Re: Lazarus, окошки и ООП во FreePascal

Великолепная опечатка)

parent From Oliver (unverified) Mon Feb 5 07:09:12 2024 pencil

From Timofey (unverified) Mon Jan 29 19:40:37 2024 pencil

SimpleX мессенджер

что думаете насчет мессенджера SimpleX?

https://simplex.chat

[дифирамбы удалены]

parent From Andrey V. Stolyarov profile Mon Jan 29 19:57:31 2024 pencil

userpic

Re: SimpleX мессенджер

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

Вон с моего сайта и просьба не возвращаться.

From xeon (unverified) Sat Jan 27 11:01:43 2024 pencil

Ксеоны по 500 рублей

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

parent From Andrey V. Stolyarov profile Sat Jan 27 14:50:20 2024 pencil

userpic

Re: Ксеоны по 500 рублей

> Прочитал главу про системы и сети.

Ты каким местом её читал?

> а зачем экономить количество процессов?

А где там такое сказано? Ну-ка, давай, быстренько, страница, номер строки, фрагмент текста.

> Старые шестиядерные процессоры Xeon стоят около 500 рублей, что не так дорого.

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

> Можно ли обойтись без разделяемых данных,

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

> при создании серверной программы?

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

> процессы созданные для клиентов

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

Ах, да: вон с моего сайта, а лучше пойди утопись.

From Ilya profile Wed Jan 24 20:42:27 2024 pencil

Макро система для Си

Посмотрев на дискуссию ниже (http://stolyarov.info/guestbook/archive/8/#cmt563) я загорелся желанием реализовать что то похожее, но совершенно иным путем, а именно, вместо создания нового языка, сделать макропроцессор поверх ANSI С, похожий на лисповый. Не банальная подстановка текста как сейчас, а с полноценной тьюринг-полной обработкой абстрактного синтаксического дерева (AST).

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

Подобных проектов я в интернете почти не нашел, за исключением вот этого: https://шитхаб.ком/eudoxia0/cmacro. Но во первых, макросы там декларативные, а не процедурные и тьюринг полнотой не обладают, а значит разгуляться не получится. А вторых проект написан на поганом Common Lisp и расположен на поганом гитхабе, еще и к тому же заброшен автором.

Макропроцессор будет написан на раннем С++98 (с флагами -ansi -fno-exceptions -fno-rtti) без STL и со статической линковкой, все как завещал A.В. Для самого языка макросов будет использован Lua. Идея в том, что макропроцессор будет неким образом парсить/токенизировать сишный код, и отдавать дерево с лексическими токенами скриптам на Lua, которые будут его принимать, обрабатывать используя API из основной программы, и отдавать новый AST обратно. Lua я выбрал потому что его основная структура данных - метатаблица, очень хорошо подходит для хранения синтаксических деревьев. Сам Lua интерпретатор это маленькая (21000 LOC) сишная библиотека которая будет поставляться в исходном дереве вместе с проектом и линковаться статически.

И тут вариантов три: 1) делать парсинг Си вручную, чего мне бы не хотелось ввиду объема времени которе это отнимет. 2) использовать yacc/lex/flex/bison как библиотеки (если такое вообще возможно). 3) написать макропроцессор как плагин для gcc и clang, но тогда будет повязка на конкретные компиляторы и к тому же отдельный код под API каждого компилятора.

Еще была мысль написать макропроцессор на Хаскеле, ибо ФП язык прямо заточен на подобное, но бросил гиблое дело, ибо моих познаний в нем нехватило.

Планирую опубликовать на своей сайте как будет готов хоть в каком нибудь юзабельном виде.

Вопрос тот же, что и у комментатора оригинальной дискуссии: В правильном направлении ли я мыслю? Что можно исправить в идейном плане?

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

parent From Andrey V. Stolyarov profile Wed Jan 24 21:14:06 2024 pencil

userpic

Re: Макро система для Си

Слушайте, какое отношение это всё имеет ко мне и к моему сайту?! С моими идеями здесь нет НИЧЕГО общего, подробно разбирать это всё — извините, не вижу веских причин тратить время. Ну то есть пробовать можете что угодно, только просьба такая — никогда, нигде и ни в каком виде не упоминайте меня вместе с этим проектом, поскольку я, разумеется, тут совершенно ни при чём.

parent From far profile Thu Jan 25 18:16:57 2024 pencil

Re: Макро система для Си

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

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

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

В Lua настолько любят таблицы, что даже структуры реализуются через них (struct.field эквивалентно struct["field"]). То есть для обращения к полю придётся считать хеш [1] [2].

> 1) делать парсинг Си вручную, чего мне бы не хотелось ввиду объема времени которе это отнимет. 2) использовать yacc/lex/flex/bison как библиотеки (если такое вообще возможно).

Как вы собираетесь отдавать "новый AST" обратно? gcc (а точнее cc1) требует Си файл, а не AST. Вам нужно писать плагин.

> Еще была мысль написать макропроцессор на Хаскеле, ибо ФП

Как в таком случае вы будете распространять программы, которые используют ваши макросы? Бинарник плагина терпеть не будет никто. Если программа будет требовать наличие ghc в системе, то это проглотят почти все, но не пользователи систем, в которых пакетный менеджер не отслеживает зависимости (CRUX, Slackware). Вам придётся добавлять исходники ghc в код программы. Чтобы собрать ghc на системе без ghc нужно скачивать бинарник [3].

> Вопрос тот же, что и у комментатора оригинальной дискуссии: В правильном направлении ли я мыслю? Что можно исправить в идейном плане?

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

> Без LLVM, каждому компилятору каждого языка пришлось бы писать отдельно код для трансляции своего синтаксического дерева в каждую из архитектур, итого 20 x 20 = 400 трансляций.

> С LLVM каждому компилятору языка нужна лишь одна трансляция в промежуточный псевдоассемблер, и каждой архитектуре нужна лишь одна трансляция из этого промежуточного слоя в нужную архитектуру, итого 20 + 20 = 40 трансляций. Результат - существенное снижение количество кода который надо писать (+- в 10 раз).

LLVM 17 состоит из ~трёх миллионов (очень грубо) строк кода и поддерживает ~20 архитектур. gcc поддерживает ~50 архитектур и ~10 языков. Следуя вашей логике, получаем 10 * 50 / 20 * 3*10^6 = 75*10^6 строк кода.

Дам вам (и ещё пользователю под ником Tester) один совет. Приходите тогда, когда у вас уже будет что-то готовое на руках.

[1] https://www.lua.org/manual/5.4/manual.html#2.1 (абзац с "To represent records, Lua uses the field name as an index.")

[2] https://www.lua.org/source/5.4/ltable.c.html#luaH_getshortstr

[3] https://elephly.net/posts/2017-01-09-bootstrapping-haskell-part-1.html

parent From Ilya profile Thu Jan 25 19:44:31 2024 pencil

Re: Макро система для Си

> вам придётся добавлять исходники ghc в код программы

А ведь действительно, не подумал, тогда тем более хорошо что я эту идею отбросил, видимо придется все таки через плагин gcc/clang

> но в моём представлении он будет полностью совместим с Си.

одна лишь совместимость на уровне API/ABI конечно даст доступ к многочисленным библиотекам Си, но вот все остальные инструменты вы автоматически использовать не сможете: смогут ли имеющиеся системы статического анализа обработать код вашего языка? а дебаггинг с помошью gdb? а документация с Doxygen? и тд, придется писать все свое. В случае с Си + макросы такая возможность будет по дефолту "из коробки".

> В Lua настолько любят таблицы, что даже структуры реализуются через них

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

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

parent From Andrey V. Stolyarov profile Thu Jan 25 20:54:48 2024 pencil

userpic

Re: Макро система для Си

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

parent From far profile Thu Jan 25 21:55:04 2024 pencil

Re: Re: Макро система для Си

> но вот все остальные инструменты вы автоматически использовать не сможете:

Я примерно понимаю, какими возможностями должен обладать язык и компилятор, чтобы gdb даже не понял, что имеет дело не с Си. Если какая-то программа написана на одном языке (например на Си в вашими макросами), то совершенный язык сможет не просто имитировать ваш Си, но и, при желании, имитировать конкретный компилятор.

> Если я правильно понял...

Именно так.

> И вообще, сворачивайте дискуссию на эту тему, во всяком случае, на этой площадке.

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

From искатель знаний (unverified) Mon Jan 22 01:44:37 2024 pencil

знания

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

parent From Andrey V. Stolyarov profile Mon Jan 22 10:05:37 2024 pencil

userpic

Re: знания

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

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

parent From Телекинокурс. Высшая математика (unverified) Mon Jan 22 18:05:10 2024 pencil

Re: Re: знания

Youtube: playlist?list=PL40OiiJw6-gcMM7fXVi_DYK9PHGW7s1gf (ytid.cgi не умеет плейлисты)

parent From Andrey V. Stolyarov profile Mon Jan 22 20:04:08 2024 pencil

userpic

Re: Re: Re: знания

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

https://www.youtube.com/playlist?list=PL40OiiJw6-gcMM7fXVi_DYK9PHGW7s1gf

А вот на один из invidious'ов: https://invidious.projectsegfau.lt/playlist?list=PL40OiiJw6-gcMM7fXVi_DYK9PHGW7s1gf

Надо будет ytid обучить этому ремеслу, но это точно не сейчас.

parent From Egor (unverified) Mon Jan 22 10:58:52 2024 pencil

Re: знания

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

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

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

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

В общем, никто вам в голову знания не положит, ищите их сами, sapere aude, ептыть :)

parent From Andrey V. Stolyarov profile Mon Jan 22 12:14:18 2024 pencil

userpic

Re: Re: знания

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

А в целом Сканави книжка довольно тупая, вроде задачи есть, а что они развивают, что закрепляют, к чему они вообще — непонятно.

parent From Anonymous (unverified) Mon Jan 22 18:12:42 2024 pencil

Re: Re: Re: знания

А геометрия?

А триган?

А логарифмы?

А параметры?

parent From Andrey V. Stolyarov profile Mon Jan 22 20:43:06 2024 pencil

userpic

Re: знания

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

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

parent From Анон (unverified) Mon Jan 22 13:33:46 2024 pencil

Re: знания

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

parent From Andrey V. Stolyarov profile Mon Jan 22 14:41:15 2024 pencil

userpic

Re: знания

> начинай туда коммитить

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

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

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

parent From Анон (unverified) Tue Jan 23 07:48:12 2024 pencil

Re: Re: знания

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

parent From Andrey V. Stolyarov profile Tue Jan 23 10:03:50 2024 pencil

userpic

Re: знания

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

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

parent From Oliver (unverified) Mon Jan 22 17:43:19 2024 pencil

Re: Re: знания

> Как твой код примут в проект, устраивайся на работу

Не занимался таким (в смысле коммитами в не свой проект), но допускаю, что это могут быть несколько сотен строчек кода, которые примут в проект. И действительно ли после такого сразу на работу возьмут? Ну не знаю. Вот если самому придумать и реализовать программу (хотя бы для себя) как минимум на 1 000 строчек кода (а как по-мне, желательно на несколько тысяч строк), которая при этом будет исправно работать, вот тогда, считаю, шансы найти работу будут заметно выше. К тому же очень важно учесть, что в чужих проектах качество кода может быть далеко от идеала, и если человек начнет с коммита в чужой код вместо того, чтоб писать свой, при этом развивая в себе культуру кода, тогда от книши А.В.Столярова будет заметно меньше толка. ИМХО.

> Поработаешь лет 5, столкнешься с выгоранием, испорченным зрением, неадекватным начальством и заказчиками

А вот это возможно на любой работе. Программирование в этом плане не является чем-то особенным.

parent From Анон (unverified) Tue Jan 23 07:46:13 2024 pencil

Re: знания

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

parent From Andrey V. Stolyarov profile Tue Jan 23 10:07:18 2024 pencil

userpic

Re: знания

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

parent From Анон (unverified) Tue Jan 23 12:06:45 2024 pencil

Re: Re: знания

Есть чувак учится в универе по специальности, на факультете компьютерных наук. Слушает лекции, сдает лабы. Его могут преподы поправить. Потом с 3го курса приблизительно устраивается в ИТ-фирму на пол-ставки. Там за ним присматривают коллеги, руководитель проекта. Он так учится работать в команде. Это я имею ввиду не самоучка. Другое дело чистый математик решил в 30 лет войти в ИТ. Из программистских навыков - решал задачу оптимизации в Экселе. Это я имею ввиду самоучка. И толку ему писать самому программу на 10000 строк? Ну напишет сам без присмотра. Только понять этот код ни кто в мире кроме него не сможет. А через месяц и он сам не сможет. Что тут советовать? Только боевой проект и теорию по необходимости из учебника. Путь вхожденца в ИТ сейчас тяжел.

parent From Andrey V. Stolyarov profile Tue Jan 23 12:28:54 2024 pencil

userpic

Re: Re: Re: знания

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

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

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

Как считаете, есть у меня основания для таких заявлений?

> Только понять этот код ни кто в мире кроме него не сможет.

Здесь есть ровно два варианта. Первый — что чувак заметит, что тонет в собственном коде, через это поймёт, что хуйню творит, и исправится. Между прочим, на эту тему книжки есть, в целом никоим образом не rocket science. А второй вариант — что не осознает и не исправится. Ну, не у всех самообучение приводит к успеху, это как бы тоже не секрет ни разу.

NB: когда я в 2012 году выпустил первую версию "Оформления программного кода", среди моих коллег по кафедре обнаружилось энное количество людей, даже не постеснявшихся сказать, что для них это всё новость. Даже структурные отступы. Это именно что преподаватели программирования. С факультета, который многие почему-то считают "факультетом компьютерных наук" (хотя он таким не является, какая к чёрту computer science, если на выходе 95% выпускников никогда не слышали термин "частично-рекурсивная функция"). И, разумеется, это не факультет software engineering, потому что, во-первых, какой ещё engineering в МГУ, а во-вторых, какой к чёрту software engineering в исполнении преподавателей, которые сами за всю свою жизнь ни одной отчуждаемой программы не написали.

Тьфу, короче. Хватит бредни нести.

parent From Анон (unverified) Tue Jan 23 12:42:24 2024 pencil

Re: Re: Re: Re: знания

https://www.cs.vsu.ru/ - это тоже я выдумал? Там преподы работают в коммерческих фирмах и пишут код как ни странно.

parent From Andrey V. Stolyarov profile Tue Jan 23 12:47:48 2024 pencil

userpic

Re: знания

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

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

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

parent From Алексей (unverified) Tue Jan 23 17:44:58 2024 pencil

Re: Re: знания

> На фоне общей массы они (мы) погоды не делали.

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

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

parent From Andrey V. Stolyarov profile Tue Jan 23 18:18:16 2024 pencil

userpic

Re: знания

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

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

parent From Алексей (unverified) Wed Jan 24 04:44:46 2024 pencil

Re: Re: знания

> Ну то есть я в принципе готов порадоваться, если где-то что-то подобное удалось замутить

Да не секрет, ФИТ НГУ (Новосибирск, Академгородок), старый поток, на новом обезьян делают. Но не всё так радужно, у факультета куча своих проблем, но преподаватели действительно программисты-совместители. Хотя, конечно, далекоо не всякий программист -- хороший преподаватель. Но если ты не на авось надеешься, а спросишь кто состоялся и как программист, и как преподаватель, то можно перевестись к такому чуваку в группу и, что называется, кайфовать.

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

parent From Andrey V. Stolyarov profile Wed Jan 24 09:41:25 2024 pencil

userpic

Re: Re: Re: знания

> можно перевестись к такому чуваку в группу

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

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

parent From Artem (unverified) Thu Jan 25 09:57:55 2024 pencil

Re: Re: Re: Re: знания

Насчёт "жёстких зачётов": можно как-то ознакомиться с требованиями? Чисто чтобы понять, смог ли бы я такое сдать :)

parent From Andrey V. Stolyarov profile Thu Jan 25 12:07:32 2024 pencil

userpic

Re: знания

Зачёт был с оценкой, это полезно знать для понимания картины. Ну, получить троечку можно было, скажем, э... Вот возьмите этот задачник, и посмотрите задачи 4.18 (на самом деле интересна 2.42 или 2.43, только писать надо на Си, а не на Паскале), 5.28 (какой-то из пунктов) или 5.30 (какой-то из пунктов), ну и, например, 5.23. Собственно говоря, тут три темы: динамическая память, перенаправления стандартных потоков через каналы и работа с сигналами. Вот на зачёте, который я всегда проводил исключительно в компьютерном классе, нужно было "закрыть" все эти три темы. То есть студенту предоставляется компьютер с Linux'ом (без выхода в интернет и без доступа к своей домашней директории, был там специальный режим работы для этого) и бумажка с тремя задачами. Что не успел или не сумел на первом зачёте, можно было дорешать на втором, длительность обоих зачётов составляла обычно 3 часа (в смысле астрономических, т.е. 180 минут), на втором я ещё обычно чуток задерживался, чтобы подождать тех, у кого "почти работает" последняя задача из трёх. В принципе для такого получения тройбана можно было весь семестр пинать балду; те, кто получали зачёт в самом конце второго захода — это обычно были такие лихие чуваки, которые предпочитали учиться программировать уже в зачётную сессию, вот то есть прямо на зачётах. Точнее, у таких обычно первый зачёт шёл насмарку, потом два или три дня, которые до второго захода, тратились на лихорадочное задрачивание, и на втором уже некоторым удавалось проскочить.

Чтобы получить что-то выше тройки, нужно было в течение семестра сделать задание практикума. Это в том же задачнике задачи 4.36, 5.15, 5.17, 5.19, 5.31, 5.32, и дальше можно было либо допиливать этот shell в соответствии с тем, что написано в задачах 5.39, 5.40 и 5.36 (именно в таком порядке, 5.36 в последнюю очередь), либо бросить shell (просто чтобы не тратить время) и сделать что-то вроде 6.17, только игра там была не "дурачок", как в задачнике, а небезызвестный "менеджер" из "Этюдов для программиста" Ч.Уэзерелла, по этому заданию есть отдельная методичка, только надо учитывать, что я её издал в 2005 году, будучи ещё молодым и глупым, так что там, например, в четвёртом разделе (который уже для следующего семестра) для хранения ПОЛИЗа предлагается сделать структуры PolizItem и PolizElem, уже через пару лет после выхода той методички я на семинарах говорил студентам, что это чушь, так делать ни в коем случае нельзя, а ПОЛИЗ по-английски будет RPN, так что это должны быть RPNItem, RPNElem или что-то там ещё с RPN, но никак не "Poliz" (за такое вообще канделябром).

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

parent From Artem (unverified) Thu Jan 25 13:30:08 2024 pencil

Re: Re: знания

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

parent From Andrey V. Stolyarov profile Thu Jan 25 13:46:39 2024 pencil

userpic

Re: знания

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

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

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

Впрочем, я примерно понимаю, о чём вы говорите. В ВУЗе третьего эшелона я тоже несколько лет поработал, так вот там на третьем курсе якобы программистской специальности практически никто не мог решить, э... ну, чтоб было понятно, вот тот же самый задачник, задача 2.19 (любые пункты), только не на Паскале, опять же, а на Си. Или вот ещё 2.22, тоже любые пункты. Вот компьютер, вот задача, вот ДВЕ ПАРЫ времени на это. За пять лет работы в этом болоте мне один раз попался курс, где из 32, если правильно помню, человек решить такую задачу могли семеро. И дважды — такие курсы, где ни одну из этих задач не мог решить никто.

parent From Artem (unverified) Thu Jan 25 15:58:09 2024 pencil

Re: Re: знания

Не то, чтобы он предлагал это прям писать, чтобы оно прям работало... Упор у него больше на проектирование, на обоснование принятых решений и их иллюстрацию кодом (весь предмет был об этом), он бы принял и недоделанную игру, где 3/4 кода писал кто-то другой.

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

Завернуть такую "работу" тоже как бы нельзя, деканат не простит, если 90%, да даже 40% потока не сдаст, и по многим предметам в эту сессию люди получили заветную троечку/зачёт лишь из-за этого, хотя выполнили едва ли десятую часть от озвученных в начале семестра условий.

parent From Andrey V. Stolyarov profile Thu Jan 25 16:05:34 2024 pencil

userpic

Re: знания

В целом довольно обычная халтура, но вот это вот

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

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

parent From Anonymous (unverified) Tue Jan 30 17:51:49 2024 pencil

Про терминалы

Не по теме обсуждения, но

> настоящем терминале

А вы случаем не знаете, куда все эти терминалы подевали? Ещё на мехмате, как утверждается, стояли PDP-11. Жаль, если это всё отправилось на помойку.

parent From Andrey V. Stolyarov profile Tue Jan 30 19:24:28 2024 pencil

userpic

Re: Про терминалы

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

parent From Vasily (unverified) Fri Jan 26 14:48:57 2024 pencil

Re: Re: знания

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

Задачи 2.42, 2.43 для меня, особой трудности не вызывают. Но я бы всё равно у вас завалился, т.к. у меня очень специфичная память: я крайне плохо запоминаю ключевые слова. Забыть слова Dispose, Record, Real, Ord? Пожалуйста! Я помню, где можно посмотреть у вас в книге (спасибо за книгу) или в другом источнике информации, что мне нужно. Довольно быстро нахожу, что мне надо, решая задачи, но вот голова так устроена. И вот как это объяснить преподавателю? Способен ли преподаватель это понять, не поработав со мной n'ое время?

Для наглядности, буквально вчерашний пример: поставил игрушку на компьютер, но бинарник прилетел непонятно куда. Лезу в Slackware Essentials потому что Я ЗНАЮ, что там есть нужная мне команда "find / -name", которую я где-то два раза в месяц применяю и КАЖДЫЙ РАЗ забываю. В процессе выполнения команды в вывод попадает очень много ошибок, Я ЗНАЮ, что я могу перенаправить поток ошибок в /dev/null (/dev/null, к счастью, держится в памяти) и я даже помню что его дескриптор имеет номер 2. За каким-то фигом я делаю "2?>", потом "?2>", а потом беру вашу книгу, открываю содержание, нахожу параграф про потоки ввода-вывода и решаю свою задачу.

parent From Andrey V. Stolyarov profile Fri Jan 26 15:09:39 2024 pencil

userpic

Re: Re: Re: знания

> Dispose, Record, Real, Ord?

В Си в самом языке только всякие операторы вроде if и while, ну и арифметические операции. А всё, что в библиотеке, в том числе, например, функция free (которая освобождает память, как в Паскале dispose) — есть в man-страничках, которые на "чистой" машине, естественно, присутствуют.

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

Впрочем,

> которую я где-то два раза в месяц применяю и КАЖДЫЙ РАЗ забываю

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

> вот голова так устроена. И вот как это объяснить преподавателю?

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

> параграф про потоки ввода-вывода

откройте для себя man sh, искать по слову Redirection

parent From Oliver (unverified) Tue Jan 23 15:56:15 2024 pencil

Re: Re: Re: знания

> ...Это я имею ввиду самоучка. И толку ему писать самому программу на 10000 строк? Ну напишет сам без присмотра. Только понять этот код ни кто в мире кроме него не сможет. А через месяц и он сам не сможет.

Да, наверное, если человек сам обучается программированию, риск того, что он напишет код, в котором сам вскоре не разберется, - выше, чем у выпускника ВУЗа. Особенно если конкрентный выпускник ВУЗа имеет опыт работы в команде. Просто потому, что не каждый, кто сам учиться пограммировать, имеет в своём расположении достаточно качественные материалы, которые его обучат написанию качественного кода. Это - с одной стороны. Ну а с другой стороны, на сколько можно судить по мнению Андрея Викторовича, ВУЗ тоже не дает никаких гарантий. Да я и сам в ходе своего обучения программированию искал и читал разные фрагменты кода, написанные в том числе выпускниками ВУЗов, и отнюдь не все из них являются примерами красивого и легко понимаемого текста программы (в моём понимании, которое сложилось на основании теории оформления кода А.В.Столярова).

Разумеется, тем, кто учится программировать по книге Андрея Викторовича, сильно повезло. Я вот пишу программу, которая по обьёму правда не дотягивает до 10 000 строчек, но всё же несколько тысяч строк кода имеет: оформляю я её разумеется по теории, которую дает Андрей Викторович. Само собой, как и у любой программы, время от времени бывало вылетит какой-то баг. До этого для меня не составляло труда сесть, найти место ошибки и ее исправить. Пишу я ее дольше месяца, так что даже спустья несколько месяцев для меня не составляет труда разобраться в собственном коде.

> Путь вхожденца в ИТ сейчас тяжел.

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

parent From Andrey V. Stolyarov profile Tue Jan 23 16:12:12 2024 pencil

userpic

Re: знания

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

parent From nelson profile Tue Jan 23 16:37:32 2024 pencil

Re: Re: Re: знания

чистый математик решил в 30 лет войти в ИТ

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

parent From Анон (unverified) Wed Jan 24 08:45:01 2024 pencil

Re: Re: Re: Re: знания

Полностью согласен. Беда в том, что математических вакансий у нас очень мало. Это моделирование погоды на Фортране, моделирование всяких жидкостей, газов, анализ данных в банках... В НИИ, но работа сильно на любителя. По опыту примерно на 100 вакансий 1 математическая. Для большинства чистых математиков путь в школу учителем, преподом в ВУЗ, админом в фирму... Некоторые решают переквалифицироваться в кодеров. Кодерских вакансий все-же больше. Это вполне обыденная история.

parent From ipu (unverified) Mon Jan 22 18:17:25 2024 pencil

Re: знания

Касательно математики нашел когда-то т.н. Roadmap. Там есть диаграма и изложение принципов ее построения. Понравилось компактность тем, их последовательность и предложенные книжки. Правда, все книжки копирайтные, так что libgen.is. Оригинал на github'e. Поэтому сделал github-free страничку, можете заглянуть в гости :)

https://linuxsoid.neocities.org/notes/math

Андрею Викторовичу

Возможно вам будет интересно прочесть этот очерк по обучению математики: https://linuxsoid.neocities.org/notes/math/readme.md. Автор не я, но его мысли мне понравились, несмотря на его "Deeply interested in Philosophy and Religion."

parent From Andrey V. Stolyarov profile Mon Jan 22 20:51:42 2024 pencil

userpic

Re: Re: знания

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

Этот ваш readme.md меня утомил почти сразу — если автор упорно пишет "Mathematics" и "Philosophy" с большой буквы, то никем, кроме морального урода, он быть не может. Мысль, что логика обучения в общем случае должна отличаться от логики формального изложения, в целом не нова и я с ней согласен, но больше там, по-моему, ничего полезного нет.

parent From ipu (unverified) Tue Jan 23 10:08:43 2024 pencil

Re: Re: Re: знания

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

Спасибо.

From ipu (unverified) Sun Jan 21 17:20:37 2024 pencil

bashонстр на 26048 строк

[url removed]

Стало интересно, есть ли предел у таких вещей?

parent From Andrey V. Stolyarov profile Sun Jan 21 18:09:12 2024 pencil

userpic

Re: bashонстр на 26048 строк

Внятного предела нет. По этому поводу ещё Оустерхаут (автор Tcl) офигевал — сделал даже не язык, а библиотеку на Си для встраивания скриптингового механизма в программы, а на ЭТОМ стали писать монструозные программы на десятки тысяч строк. Насколько я понял, самого Оустерхаута больше всего изумило, что полученная херня ещё и работает.

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

parent From Узколобость? (unverified) Mon Jan 22 19:03:38 2024 pencil

Re: Re: bashонстр на 26048 строк

Видимо, по-мимо самого интеллекта, есть нечто другое.

У людей хватает усердия писать код и костыли для таких монстров, но не хватает широты взора чтоли. Хочется их вытянуть за шкирку, вскинуть рукой вперед и сказать: "Видишь? Видишь этого монстра? Не надоело ломать мозг над его шестеренками?"

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

Или Элизера Юдковского. Это который lesswrong.org организовал и Гарри Поттер и Методы Рациональности написал. Вы видели этот lesswrong.org? Очень интересные статьи от интересных людей. Но для его нормальной функциональности требуется JavaScript. Неужели у него не хватало мозгов не делать этого всего в вебе, а сделать нормальное ПО?

Или это уже я узколобый и чего не замечаю? []:')

parent From Aoka (unverified) Mon Jan 22 20:17:04 2024 pencil

Re: Re: Re: bashонстр на 26048 строк

Совсем даже не удивительно, человек может быть экспертом в каком-то деле, но полным профаном буквально во всём остальном. А иногда речь математика даже может напоминать речь дебила, когда он говорит о чём угодно, кроме математики. https://youtu.be/vyESg5kW-nc А вы говорите виндовс...

parent From Andrey V. Stolyarov profile Mon Jan 22 20:39:17 2024 pencil

userpic

Re: Re: Re: Re: bashонстр на 26048 строк

http://infoviolence.org/ytid.cgi/vyESg5kW-nc <-- вот так-то лучше, тормоза клятого тюбика не всем нравятся.

По существу вопроса — так это ж Савватеев, чо.

parent From Konstantin profile Tue Jan 23 09:02:52 2024 pencil

А ещё Бояршинов

> это ж Савватеев, чо

Почему-то именно в беседах с Бояршиновым подобные персонажи расчехляются особенно сильно. За это мы его и любим :)

parent From Anonymous (unverified) Tue Jan 23 12:36:23 2024 pencil

Re: Re: Re: Re: Re: bashонстр на 26048 строк

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

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

parent From Anonymous (unverified) Tue Jan 23 05:35:35 2024 pencil

Re: bashонстр на 26048 строк

А можно, пожалуйста, в двух словах для лентяев, о чем видео? 55 минут смотреть неохота.

parent From Andrey V. Stolyarov profile Tue Jan 23 10:10:15 2024 pencil

userpic

Re: bashонстр на 26048 строк

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

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

parent From nelson profile Tue Jan 23 12:49:41 2024 pencil

Когда скурил букварь и все учебники, кроме математических

Ну можно посмотреть 2 минуты, где-то 43:00 - 45:00, поугарать с тупизны ватного математика и закрыть нафиг.

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

parent From Алексей (unverified) Tue Jan 23 17:55:13 2024 pencil

Re: Re: bashонстр на 26048 строк

- В 2036 уже на Марс полетим! - Это кто предсказал, роскосмос? - Нет, я

From Ilya profile Mon Jan 15 10:59:57 2024 pencil

дожили называется

https://www.opennet.ru/opennews/art.shtml?num=60436

C++20 они хотять в ядро

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

parent From Oliver (unverified) Wed Jan 17 07:52:40 2024 pencil

Re: дожили называется

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

parent From Andrey V. Stolyarov profile Wed Jan 17 11:59:01 2024 pencil

userpic

Re: дожили называется

Это не вариант. Мне, честно говоря, фиолетово, раст там будет или плюсики, практическое использование такого ядра в любом случае исключено.

From Anonymous (unverified) Fri Jan 12 10:54:26 2024 pencil

Таблица в Lisp-списке

Где-то на Вашем сайте видел интересную идею использовать для разметки гипертекста Lisp-списки. Как можно красиво в Lisp-список затолкать таблицу с объединение ячеек? Что можете посоветовать?

parent From Andrey V. Stolyarov profile Fri Jan 12 14:49:53 2024 pencil

userpic

Re: Таблица в Lisp-списке

> использовать для разметки гипертекста Lisp-списки

Конкретно такой идеи лично я никогда не высказывал, ни на этом сайте, ни где-либо ещё. Не говоря уже о том, что я никогда бы не употребил такого "термина" "Лисп-списки", поскольку есть общепринятый термин "S-выражение" (в оригинале S-expression).

Впрочем,

> Как можно красиво в Lisp-список затолкать таблицу с объединение ячеек?

Вот уж не вижу проблем

(table
    ("one" "two" "three" "four" "five" "six")
    ("red" (span 3 "green") "blue" "black")
    ("alpha" "beta" (vspan 3 "gamma") "delta" "epsilon" "zeta")
    ("cat" "dog" nil "cow" "horse" "sheep")
    (1 2 nil 4 5 6)
)

Можно и иначе, конкретика определяется решаемой задачей.

> Что можете посоветовать?

Могу посоветовать подумать о смене профессии. Не обязательно менять, но по крайней мере подумать.

parent From Anonymous-1 (unverified) Fri Jan 12 18:01:06 2024 pencil

Re: Re: Таблица в Lisp-списке

> Конкретно такой идеи лично я никогда не высказывал

Не уверен, но, возможно, человек имел в виду вот этот коммент:

http://stolyarov.info/guestbook/archive/8/#cmt49

parent From Andrey V. Stolyarov profile Fri Jan 12 18:07:29 2024 pencil

userpic

Re: Re: Re: Таблица в Lisp-списке

Возможно; и где там хоть слово о представлении гипертекста?

From Thalassa CMS (unverified) Thu Jan 11 14:12:35 2024 pencil

Как быстро подключить добавление комментариев и все интерактивные возможности?

Сайт сгенерил, HTML редактирую, все круто. Жаль, что при попытке написать комментарий на свежеподнятом сайте (из examples), интерактивные возможности выдают это*. Подскажите пожалуйста, как можно быстро поднять премод и комменты?

--- *

Not Found
The requested URL was not found on this server.
Apache/2.4.57 (Debian) Server at 127.0.0.1 Port 80

parent From Andrey V. Stolyarov profile Thu Jan 11 16:45:48 2024 pencil

userpic

Смешно, ага

Из какого конкретно примера сделано - не сказано, какой конкретно УРЛ не найден - не сказано, вообще нет никакой информации, кроме разве что одного: показано, как нормально сконфигурированный Апач выдаёт 404-ю. Ну да, вот так он её выдаёт, но это я и без вас знаю.

Ну хорошо, глянем в examples/

Поддиректорий там две или три, в зависимости от версии архива. В первых архивах был пример crocodiles, я его потом в отдельный архив вынес, потому что очень уж он тяжёлый и при этом вряд ли будет часто меняться; комментарии в этом примере не предусмотрены. Ещё там есть поддиректория thalassa, это документация на Талассу, в смысле исходники документации. Тоже, естественно, комментарии не предусмотрены.

Остаётся templ_smoky, ну это тот темплейт, из которого сделан сайт thalassa.croco.net, и там да, комменты предусмотрены. А ещё там есть файл README. Но есть одна сложность: в файле README рассказывается, как обращаться с Талассой, но не рассказывается, как настраивать Апач. Вроде бы это не есть зона ответственности документации на CMS'ку.

Ну так вот, thalassa.cgi — это CGI-программа, и надо, чтобы Апач её в такой роли признавал и запускал. Ну вот вам, например, ссылочка: https://httpd.apache.org/docs/2.4/howto/cgi.html

Я, конечно, обычно советую suexec заточить, но на первых порах и без него сойдёт. На сайте талассы в гостевухе это обсуждалось недавно.

From Ilya profile Wed Jan 10 21:32:56 2024 pencil

Thalassa CMS

Захотел пощупать здешнию цмску, и с удивлением обнаружил только tar архивы с исходниками. Git не используется по идеологическим причинам или просто не стали парится? cgit вроде легковесный, на чистом html и поднять не трудно.

parent From Andrey V. Stolyarov profile Wed Jan 10 22:58:44 2024 pencil

userpic

Re: Thalassa CMS

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

parent From Ilya profile Wed Jan 10 23:23:34 2024 pencil

Re: Re: Thalassa CMS

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

parent From Andrey V. Stolyarov profile Thu Jan 11 20:06:42 2024 pencil

userpic

Re: Re: Re: Thalassa CMS

> не увидел прошлое обсуждение

Да дело не в том, что не увидели, дело в другом: вот эта вот травма мозга, нанесённая гитхабом и его аналогами,— ну, она часто встречается, но обычно среди ньюфагов, а на мой сайт ньюфаги обычно не ходят.

> что не так с моими идеями

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

parent From Ilya profile Thu Jan 11 20:48:27 2024 pencil

Re: Thalassa CMS

Понял, спасибо за ответ!

From Wednesc (unverified) Tue Jan 9 19:04:59 2024 pencil

Поиск начинающих изучать трёхтомник

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

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

parent From Andrey V. Stolyarov profile Tue Jan 9 21:57:16 2024 pencil

userpic

Re: Поиск начинающих изучать трёхтомник

М-да. Вы тогда ещё попробуйте как-нибудь выпить за трезвость, чо. Вот прямо встать со стаканом в руке, типа, "ну, за трезвость". И выпить.

parent From kin (unverified) Tue Jan 9 22:02:21 2024 pencil

Re: Поиск начинающих изучать трёхтомник

Хоть бы сообщили адрес электронной почты или jid, что ли...

parent From Andrey V. Stolyarov profile Tue Jan 9 22:42:20 2024 pencil

userpic

Re: Поиск начинающих изучать трёхтомник

А нафиг ему, у него ж есть суперпрогрессивная телега

Впрочем, тут уже года полтора назад пытались организовать jabber conference, по-моему оно тихо протухло.

parent From kin (unverified) Wed Jan 10 17:26:32 2024 pencil

Re: Re: Поиск начинающих изучать трёхтомник

Что примечательно - сегодня годовщина анонса той самой конференции.

 http://stolyarov.info/guestbook/archive/6/#comment-6767 

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

parent From Andrey V. Stolyarov profile Wed Jan 10 19:14:22 2024 pencil

userpic

Re: Поиск начинающих изучать трёхтомник

Действительно, ровно два года прошло. А подключиться не выходит, насколько я вижу, по причине того, что сервер e2e.chat приказал долго жить.

parent From Anonymous (unverified) Sat Jan 13 07:29:53 2024 pencil

Re: Re: Поиск начинающих изучать трёхтомник

А наш дорогой croco подымет у себя jabber.croco.net (на jabberd2, например)?

parent From Andrey V. Stolyarov profile Sat Jan 13 16:13:15 2024 pencil

userpic

Re: Поиск начинающих изучать трёхтомник

Нет, наш дорогой Croco не подымет.

parent From Parthen (unverified) Wed Jan 10 21:41:35 2024 pencil

Re: Re: Re: Поиск начинающих изучать трёхтомник

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

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

Зато, ЧСХ, есть люди который через мой сайт нашли мой Телеграмм и таки с ними общаемся до сих пор.

P.S. У кого-то по-любому возникнет вопрос как мое нежелание зависеть от чужих серверов соотносится с пользованием Телеграммом. Отвечаю: попса один хрен должна существовать (не посажу я свою бабушку на XMPP/IRC, хоть сам спокойно аж через I2P сидел) и между цукергберским поделием криворучек, у которых даже сообщения между устройствами синхронизируются через пень-колоду и мессенджером с открытым исходным кодом клиента, сделанным либертарианцем и хоть сколько-то государству сопротивляющемуся я очевидно выберу второе, хоть и не буду через него писать что-то опасное.

parent From anonymous (unverified) Sat Jan 13 22:05:02 2024 pencil

Re: Re: Re: Re: Поиск начинающих изучать трёхтомник

>не посажу я свою бабушку на XMPP/IRC

попытки были? зарегал ей учётки на трех серваках xmpp (тк они имеют привычку дохнуть) с её телефона, добавил и подписал себя алешка-пройдошка, полёт нормальный. там хлама установлено и так гора, 5 мессенджеров +-, и всё якобы нужны

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

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

>сделанным либертарианцем и хоть сколько-то государству сопротивляющемуся

это ваще турбо ржомба

parent From Parthen (unverified) Sat Jan 13 23:38:51 2024 pencil

Re: Re: Re: Re: Re: Поиск начинающих изучать трёхтомник

>попытки были

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

Я уж молчу о том, что XMPP клиентов на телефоне я в принципе не видал нормальных.

>а у меня он работать не хотел

Регистрация только с телефона, о чем он и пишет. Если уж хочется с компа -- Android x86 в помощь.

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

Ничего не понял. Если собрались не со своего номера -- вперед покупать аккаунт, они официально продаются.

>сбрасывает настройки прокси при аварийном отключении пк

Только что проверил -- не сбрасывает.

>и рекламу показывает

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

>турбо ржомба

Назовите мне хоть один случай выдачи данных не-террористов государству.

И я вообще не понял нафига мне вся эта информация -- я прекрасно осведомлен о минусах Телеграмма. Вы предлагаете мне Вотсапом пользоваться?

parent From Andrey V. Stolyarov profile Sun Jan 14 01:12:51 2024 pencil

userpic

Re: Re: Re: Re: Re: Re: Поиск начинающих изучать трёхтомник

> Назовите мне хоть один случай выдачи данных не-террористов государству.

Ага, конечно. "Я-то не террорист, мне бояться нечего".

Детский сад, штаны на лямках.

> Вы предлагаете мне Вотсапом пользоваться?

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

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

parent From anonymous (unverified) Sun Jan 14 16:34:13 2024 pencil

Re: Re: Re: Re: Re: Re: Поиск начинающих изучать трёхтомник

>И я вообще не понял нафига мне вся эта информация

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

>это сложно, настроить никто рядом ей не поможет

лично настраивал при встрече, больше настраивать ничего не надо.

>Я уж молчу о том, что XMPP клиентов на телефоне я в принципе не видал нормальных.

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

>Регистрация только с телефона, о чем он и пишет.

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

>Только что проверил -- не сбрасывает.

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

>В больших каналах, в которых ее сами админы постят.

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

>а мессенджер нужен именно для них

там есть "классы" и "группы", это скорее очередная ипостась соц сетки, имхо

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

>Назовите мне хоть один случай выдачи данных не-террористов государству.

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

parent From nelson profile Tue Jan 23 13:11:56 2024 pencil

Аккаунты и оплата криптой

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

Купить можно, только там конская комиссия будет при оплате криптой (потому что другими способами сложно). Понадобилось как-то получить доступ к vk-помойке - приобрёл акк за 0.8 USD (в эквиваленте), так комиссия составила что-то около 2 USD (наверное можно и меньше было уплатить, но тогда сильно возрасло бы время подтверждения транзакции, как я понимаю).

Вообще крипта - это отдельная тема с их комиссиями, мелкие платежи - грабёж на комиссиях. Я так понимаю, что сервисы, что продают аккаунты - ориентируются на оптовую продажу. Ну, то есть бери, скажем, 100 аккаунтов - это 80 USD, тогда комиссия в 2 USD будет приемлимой.

parent From ipu (unverified) Wed Jan 10 18:27:54 2024 pencil

Re: Поиск начинающих изучать трёхтомник

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

Извинения не принимаются >_<

parent From Andrey V. Stolyarov profile Wed Jan 10 19:01:33 2024 pencil

userpic

Re: Поиск начинающих изучать трёхтомник

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

From Tester (unverified) Fri Jan 5 10:33:55 2024 pencil

Требования к языку программирования с "чистой" компиляцией

Здравствуйте, Андрей Викторович! Мне стало интересно реализовать (на первых порах максимально простенький) компилятор некого языка, который частично описан здесь (http://stolyarov.info/guestbook/archive/6#comment-6168).

Как в этом плане правильнее всего получать машинный код? Если я правильно вас понял, компилятор должен заготовить некоторую "кашу" для макропроцессора (например, сложение двух чисел типа int (a, b) -> вызов макроса ["сложение (int) и (int)"](a, b), умножение двух переменных float -> макрос ["умножение (float) и (float)](c,d) и так далее). В библиотеке макросов, возможно, будет генерироваться код ассемблера (!), из которого мы и получим программу.

В правильном направлении ли я мыслю? Что можно исправить в идейном плане?

parent From Andrey V. Stolyarov profile Fri Jan 5 12:57:17 2024 pencil

userpic

Re: Требования к языку программирования с "чистой" компиляцией

Дело в чём, я не могу сказать, "правильно" ли вы меня поняли, поскольку не вполне понимаю, например, что такое «заготовить кашу для макропроцессора».

Что бросается в глаза — это что у вас уже ключевые слова образовались, вот эти вот int и float, и наверняка ещё какие-то появятся; одной из моих идей было, чтобы все имена, введённые самим компилятором, начинались с "хитрого символа", чтобы избавиться от ключевых слов в их обычном смысле. Отдельный вопрос, что это должен быть за символ; пунктуационных символов в ASCII не так много, и все жалко вот так вот выбивать из работы, но в общем я склоняюсь к "решётке" «#», ну то есть, в частности, встроенные типы могут называться #int и #float. Впрочем, совершенно не факт, что они должны так называться, с целыми я бы скорее ожидал всяких #int32, #uint64 и т.п., как быть с float'ами — фиг знает. И ещё такой момент, что, скажем, слово #int64 должно компилятором вводиться только при условии, что на данной аппаратной платформе присутствуют 64-битные операции, а если их нет — то не должно быть и слова. Дальше уже библиотека макросов введёт "пользовательские" имена вроде int, longint, hugeint, и вот этот hugeint будет при наличии #int64 определяться как его синоним, а если его нет — то, например, как запись из двух #uint32 (именно "u", программно реализовывать 64-битные операции проще, если оба компонента беззнаковые, даже если сама операция знаковая).

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

  • пунктуационные знаки — любой из символов ()[]{},;` превращается в лексему из одного символа, вне зависимости от контекста; и да, только эти девять (на самом деле я не уверен насчёт обратного апострофа, но первые восемь точно);
  • числовой литерал — нечто начинающееся с цифры, $ и цифры, # и цифры, тут я бы не мудрил и сделал такие правила, как в NASM'е, там допускаются практически все способы записи чисел, имеющиеся в Си и в ассемблерах, отличных от NASM; ну вот разве что 0234 в NASM'е всё-таки вроде бы десятичное число, а не восьмеричное, как в Си;
  • символические литералы — строки в апострофах и кавычках, а как их потом трактовать — пусть решается уже на уровне макробиблиотеки;
  • идентификатор — цепочка из латинских букв, цифр и знака подчёркивания, начинающаяся либо с буквы, либо с подчёркивания;
  • специальный идентификатор — цепочка произвольной длины из символов +-*/|\=:.!?$~^%@<>& (возможно, сюда же таки ещё обратный апостроф, но не факт; мне всё-таки кажется, что его лучше считать пунктуацией); очевидное применение этих "специальных идентификаторов" — символы операций (которые по-английски operator, не путать с операторами, которые statement), но на уровне языка это навязывать не надо, пусть после лексического анализа идентификаторы обоих видов будут равноправны;
  • ключевое слово — #, после которой следует цепочка из букв, цифр и подчёркиваний;
  • макропеременная — #, после которой сначала что-то хитрое, например @, а потом уже цепочка.

А вот дальше начинается интересное. Что можно точно сказать, что должны быть ключевые слова #macro для введения нового макроса и #operator (как минимум с указанием приоритета) для введения символа инфиксной операции, который в том числе может быть и обычным идентификатором (как в Паскале and, or и прочее). Ещё, по-видимому, транслятор должен сам превращать списки в круглых скобках в некие "кортежи", причём в роли разделителей элементов кортежа должны выступать запятая и точка с запятой, приоритет запятой выше, т.е. (a,b;c,d;e,f) — это то же самое, что и ((a,b);(c,d);(e,f)). Судя по всему, нужно ввести понятие "обобщённого значения" — это либо "данные" (data), т.е. такое выражение, которое уже разобрано и известно, что оно имеет определённый тип, либо "не-данные", те же кортежи, или идентификатор, которому пока что не приписан никакой смысл, или один из "оставшихся" символов пунктуации []{}` (NB: в первой версии текста тут ещё точка была, это я был неправ, точка не должна быть пунктуацией).

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

И ещё один момент: вытанцовывается некоторое пересечение чистого Си и ЭТОГО (если, конечно, соответствующим образом описать макросы, причём сделать это в отдельном файле, и файл подключать в командной строке компилятора). Полностью Си на этом не получится, потому что, например, в Си можно написать «a+=-5», и это будет то же самое, что «a += - 5», а тут между += и - придётся ставить пробел, чтобы они не слились в один "специальный идентификатор", но такие отличия можно явно оговорить, а в целом это даст возможность сам компилятор сделать на этом вот пересечении, то есть чтобы он компилировался и компилятором ASNI C, и самим собой тоже. Это решит проблему курицы и яйца, а заодно и "циклических зависимостей" (ночной кошмар майнтейнеров пакетов в дистрах).

parent From Anonymous (unverified) Sat Jan 6 10:37:48 2024 pencil

А не лучше точка?

#int32

Не удобно же набирать. Не лучше ли просто `.int8', `.int16', `.int32' и т.п.?

parent From Andrey V. Stolyarov profile Sat Jan 6 12:30:09 2024 pencil

userpic

Re: А не лучше точка?

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

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

parent From Anonymous (unverified) Sat Jan 6 10:45:55 2024 pencil

UB, которое выявляется на этапе компиляции должно быть не варнингом, а ошибкой

i = i++;

За это надо карать нещадно! Т.к. это может быть незаметно под слоем макросов. Вообще лучше предусмотреть какой-то механизм отладки макросов вроде "посмотри, во что это развернется при конкретных параметрах...". Я имел неудовольствие ковыряться в ущербных макросах C++ из "великолепного" Boost C++ libraries, где они перемешаны с шаблонами и принципом SFINAE... Надо объяснять какой это ад?

parent From Andrey V. Stolyarov profile Sat Jan 6 13:20:16 2024 pencil

userpic

Re: UB, которое выявляется на этапе компиляции должно быть не варнингом, а ошибкой

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

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

А boost — это да, адЪ. Тут главное что — главное тут, товарищи, поймать тот момент, когда на новом языке кто-нибудь решит сотворить что-то бустообразное или STLеобразное, и этого кого-то всем миром громко запозорить.

parent From Anonymous (unverified) Sat Jan 6 15:31:47 2024 pencil

Boost

Вообще, видимо когда Boost только появлялся (1998-2003), его делали действительно грамотные люди, которые реально решали проблемы языка очень крутыми костылями. Но потом (1) пришла армия макак, (2) проект развивался так, что за ним никто не мог следить. В результате одни куски буста понятия не имеют о других. Немало кода, который написан два раза в разных кусках буста разными людьми в разное время. Полнейший бардак, короче. К сожалению, в этом приходится ковыряться.

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

Идея, если интересно, очень простая:

template <class T>
class Move_reference : public T
{
public:
  Move_reference(T& object) : T(object);
private:
  //Копирование запрещено
  Move_reference(const Move_reference<T>&);
  Move_reference& operator=(const Move_reference<T>&);
};

А в класс, поддержку перемещения которого требуется добавить, макросом вставляется operator Move_reference<T>, где T -- имя исходного класса. Ну и конструкторы перемещения и перемещающий operator= описываются соответственно.

parent From Andrey V. Stolyarov profile Sat Jan 6 16:24:25 2024 pencil

userpic

Re: Boost

Пришлось в вашем тексте ручками поменять <>& на соответствующие html entities, ну да ладно — тут я сам виноват, давно пора прикрутить comment preview.

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

parent From Tester (unverified) Sun Jan 7 09:33:46 2024 pencil

Re: Re: Требования к языку программирования с "чистой" компиляцией

Большое спасибо за ответ; понимаю, в какую сторону копать. По поводу ключевых слов - привел пример, в языке "хитрым символом" предполагался знак '$' :-)

> И ещё такой момент, что, скажем, слово #int64 должно компилятором вводиться только при условии, что на данной аппаратной платформе присутствуют 64-битные операции, а если их нет — то не должно быть и слова

> должны быть "первичные" конструкции (возможно, только переход и условный переход

Мне кажется логичным вывести всё "первичное" в некоторый файл (библиотека макросов?) с ассемблерными вставками (поскольку команды процесссора зависят от его архитектуры, для arm и x86 наборы команд разные); Операции с числами, условные переходы и (?) средства для реализации системных вызовов. То есть это будет самый 'первый' файл, без которого компиляция невозможна. Не будет ли это стандартной библиотекой? Допустимо ли такое поведение компилятора?

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

parent From Andrey V. Stolyarov profile Sun Jan 7 15:25:28 2024 pencil

userpic

Re: Re: Re: Требования к языку программирования с "чистой" компиляцией

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

> Мне кажется логичным вывести всё "первичное" в некоторый файл

И через что оно будет реализовано? Прямо сразу через ассемблер? Кстати, возможно, это и получится, я как-то такой вариант не предполагал, но почему бы и нет, в конце концов. Тогда получится, что backend как самостоятельная сущность исчезает и оказывается фактически реализован тем же макропроцессором.

NB: я не уверен, что это получится. Но я и не вижу с ходу, по какой такой причине оно не должно получиться.

> средства для реализации системных вызовов.

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

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

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

parent From Tester (unverified) Sun Jan 7 17:57:30 2024 pencil

From Eduard (unverified) Fri Jan 5 09:07:10 2024 pencil

Первый компилятор

Здравствуйте, Андрей Викторович. Читаю первый том "Введения в профессию". Параллельно появилось любопытство на тему "А как вообще создавался первый компилятор?". Как я понимаю, компилятор - это средство перевода программного кода (того языка программирования под который создан компилятор) в код, понятный машине в виде последовательности импульсов, имеющих состояния 0 или 1. Так вот, когда мы УЖЕ имеем компилятор, мы можем на самой машине написать другой компилятор. Но пока мы не имеем ни одного компилятора, как мы напишем первый компилятор? С помощью перфолент? Но это же сколько перфоленты нужно потратить, чтобы написать компилятор. Тем более без отладчика. Может, данный вопрос глупый, но хотелось бы услышать Ваше мнение.

parent From Andrey V. Stolyarov profile Fri Jan 5 11:31:54 2024 pencil

userpic

Re: Первый компилятор

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

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

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

parent From Anonymous (unverified) Fri Jan 5 18:17:50 2024 pencil

Re: Re: Первый компилятор

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

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

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

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

parent From Anonymous (unverified) Sat Jan 6 16:24:24 2024 pencil

Re: Re: Re: Первый компилятор

Механическое устройство можно изучить тут.

parent From Eduard (unverified) Sun Jan 7 08:24:19 2024 pencil

Re: Re: Re: Re: Первый компилятор

Интересный фильм. Спасибо за ссылку. Автомеханики и инженеры, работающие на автоконцернах курят в сторонке :D

parent From 704 (unverified) Mon Jan 8 05:08:48 2024 pencil

Пишем Первый компилятор

Пока мы не имеем ни одного компилятора, как мы напишем первый компилятор?

Сначала нарисуем карандашами и фломастерами будущий компилятор на листах бумаги и обсудим его с коллегами. А потом напишем в блокноте программиста приблизительно вот так: http://www.bitsavers.org/pdf/ibm/704/Correll_704music.pdf#page=4

parent From Eduard (unverified) Wed Jan 10 09:26:01 2024 pencil

Re: Пишем Первый компилятор

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

parent From Andrey V. Stolyarov profile Wed Jan 10 10:22:43 2024 pencil

userpic

Re: Пишем Первый компилятор

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

parent From IOS (unverified) Thu Jan 11 16:26:25 2024 pencil

Re: Re: Пишем Первый компилятор

Не первая IBMовская ЭВМ, но самое начало ЛИСПов и ФОРТРАНов. Лампово-диодная ЭВМ эпохи magnetic storage: массовая на лентах, внешняя на магнитных барабанах, а на магнитных сердечниках в качестве ОЗУ.

parent From Andrey V. Stolyarov profile Thu Jan 11 16:58:34 2024 pencil

userpic

Re: Пишем Первый компилятор

Странно, мне почему-то казалось, что она уже была транзисторная. Сейчас посмотрел — ни фига, лампы ещё использовались; спасибо хоть память уже не на лампах.

parent From IOS (unverified) Thu Jan 11 16:12:59 2024 pencil

Пишем Первый синтезатор

Не было у того компа спикера. Сгенерированный цифровой звук записывался на магнитную ленту. Воспроизводился на автономном устройстве с ЦАП.

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

parent From IOS (unverified) Mon Jan 8 12:54:51 2024 pencil

Первый компилятор

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

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

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

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

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

Повторное обсуждение с предыдущей страницы? http://stolyarov.info/guestbook/archive/7/#cmt539

parent From Eduard (unverified) Wed Jan 10 09:27:57 2024 pencil

Re: Первый компилятор

Виноват. Прошу прощения у автора сайта. Прощелкал эту тему.

From rkvg-es (unverified) Thu Jan 4 07:17:44 2024 pencil

Добавить в FAQ ссылки про обсуждение языка Си

Обратил внимание, что внизу здесь на страничке состоялась очередная, уже энная по счёту дискуссия о языке Си и его откровенных недостатках. Может быть, уже стоит создать в FAQ раздел о нём? И заодно присовокупить туда обсуждения, почему Си не годится для обучения программированию (вкупе со ссылкой на stolyarov_2010.pdf, которой здесь на сайте почему-то совсем нигде нет).

parent From Andrey V. Stolyarov profile Fri Jan 5 11:50:19 2024 pencil

userpic

Re: Добавить в FAQ ссылки про обсуждение языка Си

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

From Anonymous (unverified) Mon Jan 1 14:51:57 2024 pencil

Почему Tcl -- скриптовуха?

Формально, это функциональный язык (как, например, Lisp).

Это не даёт ему право быть полноценным языком, который может быть только интерпретируемым?

maxima (как и его предка Macsyma) же никто не считает скрпитовухой? Достаточно сложная, полноценная программа на Common Lisp.

parent From Andrey V. Stolyarov profile Mon Jan 1 16:19:06 2024 pencil

userpic

Re: Почему Tcl -- скриптовуха?

Во-первых, лисп, разумеется, не функциональный и никогда таким не был. Во-вторых (и это важнее) кто это тут сказал, что лиспы имеют право на существование в качестве языков для самостоятельных программ (т.е. не в роли встроенных языков, вроде AutoLisp, и не в роли языков для скриптинга)? Нет, не имеют, как и любые интерпретируемые языки. Только конченное чмо может ради собственной вкусовщины создавать на ровном месте проблемы пользователям и эксплуатационщикам, а любая внешняя зависимость времени исполнения (кроме разве что ядра операционной системы) — это именно такая проблема, и интерпретаторы (особенно имеющие свои "экосистемы") тут никоим образом не исключение. А уж Common Lisp — это вообще как лакмусовая бумажка: все без исключения "программисты" (в очень жирных кавычках), всерьёз полагающие, что CL имеет хоть какое-то право на существование, должны быть лишены доступа к компьютерам. Пожизненно. Они просто опасны для окружающих, это намного хуже, чем обезьяна с гранатой.

Теперь основное: почему Tcl скриптовуха? Ну, например, потому что его именно так позиционировал его автор. Tcl вообще, строго говоря, не язык, а библиотека для программ на Си, предоставляющая возможности скриптинга. И, кстати, функциональным он не является вообще ни в каком виде, там нет ни замыканий, ни функций как объектов первого класса, я вообще не вижу в нём ничего от функциональщины. В Лиспе-то хоть что-то есть на эту тему, в смысле Лисп, конечно, не функциональный, но на нём хотя бы можно писать в функциональной парадигме, на тикле — очевидно, нельзя.

И вон с моего сайта. Немедленно. Ещё я на такое времени не тратил.

parent From внешняя зависимость времени исполнения (unverified) Mon Jan 1 18:22:36 2024 pencil

Re: Re: Почему Tcl -- скриптовуха?

> любая внешняя зависимость времени исполнения (кроме разве что ядра операционной системы) — это именно такая проблема

Эм... libc? libmath? pthread?

Из "нестандартных": gettext, zlib, libpng, libjpeg, и т.п.

Вы предлагаете каждый раз реализацию LZW-сжатия реализовывать? И каждый раз придумывать как PNG картинку открыть?

parent From Andrey V. Stolyarov profile Mon Jan 1 18:41:15 2024 pencil

userpic

Re: Почему Tcl -- скриптовуха?

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

Но тут кое-что можно откомментировать.

> libc? libmath?

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

> pthread?

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

> gettext

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

> zlib, libpng, libjpeg

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

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

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

parent From ditr33 (unverified) Mon Jan 1 20:50:14 2024 pencil

Зависимости

Я не автор исходных комментариев, и полностью с вами согласен насчет недопустимости зависимостей времени исполнения и времени сборки. Тем не менее, на днях столкнулся с необходимостью написать для себя программу, которая будет управлять набором linux-серверов по ssh. По-быстрому написал для себя небольшую программу на Си, которая делает это через fork() + execvp("ssh", ...). Я, конечно, не в восторге от получившейся рантайм-зависимости от ssh-клиента, но, поскольку, серверов без ssh-клиента у меня нет, то для меня это не проблема. Тем не менее, публиковать такую программу я бы не стал именно из-за такой зависимости. Остается вариант статической сборки с каким-то библиотечным ssh-клиентом, но все библиотеки, которые я видел (libssh, libssh2 и т.д.) тянут за собой всякие cmake, openssl, configure и прочую дрянь. Получается, что приходится уже выбирать между рантайм-зависимостью и простотой сборки. Можете посоветовать, как в таком случае быть?

parent From Andrey V. Stolyarov profile Mon Jan 1 21:09:58 2024 pencil

userpic

Re: Зависимости

С одной стороны, ну я конкретики вашей задачи не знаю, но выглядит как совершенно скриптовая задача, вот прямо канонически. Собственно, скрипты — это когда маленькая и примитивная программа (как раз скрипт) управляет большими и сложными программами; скрипты бывают двух видов — glueing (управляем программами извне, связывая их функциональность в единое целое; ну, там, /bin/sh всякий, но не только) и built-in (управляем программой изнутри, для чего сама программа в себе несёт встроенный интерпретатор; Tcl как раз под такие задачи создавался, и по мне так в этой роли он идеален). Ну то есть если только я правильно понимаю, что у вас там за задача, то я бы такое делал на Bourne Shell'е, по возможности избегая bash'измов.

С другой стороны, проблема вполне валидна, конкретика-то бывает разная, и доступ куда-то по ssh бывает нужен не только в скриптовых задачах. Да и библиотеки бывают не только для ssh (я бы сказал, что как раз зависимость от ssh-клиента не так уж страшна, особенно если сделать то, как вызывается внешняя программа, настраиваемым; вон у меня Thalassa для отправки почты запускает внешнюю программу, обычно это, конечно, /usr/bin/sendmail, но может быть всё что угодно). Так вот, библиотеки да, бывают нужны, и тут уже всё строго: берём библиотеку, вооружаемся воооооот такими ножницами и всё от неё отстригаем. Лучше даже не отстригать ненужное, а наоборот выстригать нужное: создать в дереве проекта директорию под данную либу и переносить из оригинальной либы по одному модулю, пока не разрезолвятся все зависимости.

parent From ditr33 (unverified) Mon Jan 1 21:22:21 2024 pencil

Re: Re: Зависимости

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

parent From Andrey V. Stolyarov profile Mon Jan 1 21:27:59 2024 pencil

userpic

Re: Зависимости

/bin/sh предоставляет прорву вариантов для запуска параллельных процессов: канонический апмерсанд (и потом wait), кусок скрипта в круглых скобках, кусок скрипта в обратных апострофах... Во всех этих случаях происходит как раз fork. Есть ещё конвейер, там тоже, естественно, fork на каждый элемент, но это специфический случай.

Это всё, впрочем, никоим образом не значит, что конкретно вашу задачу надо было обязательно писать на /bin/sh'е.

parent From KVA (unverified) Wed Jan 3 16:15:43 2024 pencil

Зависимости

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

parent From Andrey V. Stolyarov profile Wed Jan 3 18:08:44 2024 pencil

userpic

Re: Зависимости

Слушайте, хватит повторять эту ахинею. Это всё чушь собачья, в действительности всё обстоит совершенно иначе — ради какой-нибудь программки на полтора килобайта приходится обновлять половину системы, потому что ей, видите ли, требуется более новая версия библиотеки. И вообще distupgrade на каждый чих (NB: не было бы динамических библиотек, не было бы и самого понятия distupgrade, оно было бы просто не нужно). А когда автор программы перестаёт уделять ей внимание, обычно тоже происходит прямо противоположное тому, что вы тут пытаетесь изобразить: авторы библиотек рушат обратную совместимость, автору программы недосуг её "портировать" на новый API (а точнее, просто адаптировать к очередному высеру мудаков), на выходе у нас просто нет программы, была и нет.

Нет, разделяемые библиотеки не решают никаких проблем, и те, кто заявляют противоположное, просто нагло врут. Разделяемые библиотеки могут только создавать проблемы, и вот это они делают 24x7 круглый год. Они вообще не имеют права на существование. И динамическое связывание как таковое тоже, в том числе для случаев, когда подгружается не библиотека, а какой-нибудь плагин, поскольку в этих случаях в динамическую библиотеку приходится выносить весь тот код, который используется и из основной программы, и из плагина, а такой код обычно есть, как минимум куски libc, и вот уже мы зависим от версии libc.so, стоящей в системе, всё, приплыли. Коготок увяз — всей птичке кранты.

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

parent From Artem (unverified) Wed Jan 3 15:20:12 2024 pencil

Re: Re: Почему Tcl -- скриптовуха?

Кстати, исходный комментарий напомнил об одной вещи. Вот вы говорите, что интерпретируемое исполнение допустимо, если мы решаем задачу чисто скриптовую, либо это встроенный язык. Относится ли это к математическим пакетам? К примеру, система Sage это просто куча библиотек на Си, Фортране и Питоне, использующая этот самый Питон в роли языка общения с пользователем. Другие системы создают собственные языки. Являются ли такие вещи программами, или средами, или чем они вообще являются? Вроде бы на них не принято писать ничего, напоминающего программы, только использовать для своих нужд.

parent From Andrey V. Stolyarov profile Wed Jan 3 18:06:33 2024 pencil

userpic

Re: Почему Tcl -- скриптовуха?

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

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

parent From Anonymous (unverified) Thu Jan 4 16:37:43 2024 pencil

Бухпрограммы

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

К сожалению, как минимум в одной из таких программ, в "базовых поставках" уже содержится от 1 до 5 млн строк скриптов. И оно продолжает стремительно расти. Никто не собирается это исправлять, потому что по мнению "разработчиков" это не 3.14здец, а повод для гордости! "Смотрите мы тут ещё навалили!!!"

parent From Andrey V. Stolyarov profile Thu Jan 4 17:53:44 2024 pencil

userpic

Re: Бухпрограммы

Если мы с вами имеем в виду одну и ту же неназываемую программу, то вот уж чего я никогда не говорил и не скажу, так это что этот долбаный монстр заслуживает хоть одного доброго слова. Начать с того, что встроенный язык там кириллический :-D (я знаю, что можно всё то же самое написать и без кириллицы, но факт, знаете ли, есть факт). А закончить тем, что мне в своё время оказалось проще написать свою програмку для бухучёта, нежели разобраться, как работать с ЭТИМ (потратив около часа, я так и не сумел сделать одну-единственную проводку, притом что это был уже существующий бухучёт, который для моей конторы делала одна знакомая, мне просто надо было его подхватить).

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

parent From Anonymous (unverified) Thu Jan 4 19:15:38 2024 pencil

Re: Re: Бухпрограммы

Если мы с вами имеем в виду одну и ту же неназываемую программу

Одну и ту же. :)

как работать с ЭТИМ

Я два года был ЭТИМ "разработчиком". :)

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

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

  1. Поскольку английский язык для нас не родной, можно прочувствовать, в некотором смысле, себя программистом для кого английский язык является родным. Мы когда пишем на ЯП, немного абстрагируемся от самих ключевых слов. Мы сперва смотрим на сам оператор, а потом (при том не всегда), что он из себя представляет с точки зрения языковой нормы вне программирования. Когда пишешь на родном языке, всё выглядит совсем по-другому первое время.
  2. Учитывая саму область применения, использование кириллицы вполне обосновано. В учётах очень специфичный лексикон, прошедший какую-то свою эволюцию, так ещё и сильно отличается от страны к стране, как мне известно. Читал джавистов (бывших "разработчиков" этого), что некоторые термины просто не имеют нормального перевода на английский.
  3. Это снижает порог входа. Изначально же планировалось, что этим конечные пользователи будут пользоваться, а не программисты.

Концепт очень прикольный, но в текущем виде это "Hans, bring Flammenwerfer!" А сверху какой-нибудь водородной бомбой, чтобы наверняка. А потом ещё одной.

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

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

Приходит сообщение в середине дня от вендора ВСЕМ пользователям и компаниям, которые работают в данной программе: "С завтрашнего дня не будут работать следующие релизы <большой список релизов, при том не очень старых>, вам надо обновиться. Объяснять ничего не будем!!!!" (Я помню там 4 восклицательных, к сожалению, скриншот найти не могу, где-то потерял. :( )

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

parent From Andrey V. Stolyarov profile Thu Jan 4 22:21:38 2024 pencil

userpic

Re: Re: Re: Бухпрограммы

По своему это прикольно

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

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

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

некоторые термины просто не имеют нормального перевода на английский

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

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

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

Со времён Кобола и SQL известно, что никакие попытки сделать язык программирования настолько уродливым, чтобы якобы он стал "понятнее пользователю", никоим волшебным образом не оснастят пользователей способностью писать программы. Пользователи не программируют отнюдь не потому, что ключевые слова не на том языке, и не потому, что синтаксис "слишком уж не похож" на естественный язык. Ни лексика, ни синтаксис вообще никак не могут ничего сделать с тем явлением, которое преподаватели программирования обычно называют "алгоритмическим кретинизмом". В это трудно поверить, но минимум 99% людей принципиально неспособны понять, что такое два вложенных цикла, и тут уж совершенно неважно, по каким правилам эти два цикла будут записаны.

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

что-то подобное, но без IDE и чтобы этим можно было полноценно пользоваться в режиме tty

Я, кстати, в итоге сделал, когда понял, что мне проще самому сваять, чем ЭТИМ пользоваться. План счетов, шаблоны для генерации отчётов и прочая "глобальная информация" вроде реквизитов задаётся ini-файлами, журнал проводок — обыкновенный текстовый файл, на выходе — файл для LaTeX'а, после трансляции получается одна большая PDFина, содержащая все сконфигурированные отчёты. Генерация журнала проводок, оборотно-сальдовой ведомости и карточек счетов реализована на основном языке проекта (C++), только шаблоны берутся из конфигурационных файлов (заодно, замечу, достигается полное отсутствие кириллицы в коде, она есть только в конфигах); когда дело дошло до генерации КУДИР, забивать это гвоздями показалось уже неприемлемым, поскольку это не про бухучёт как объективное явление, а про волюнтаризм минфиновских чиновников; так что там встроенный интерпретатор Лиспа (InteLib Lisp, что называется, пригодился таки).

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

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

parent From Anonymous (unverified) Fri Jan 5 00:49:23 2024 pencil

Re: Re: Re: Re: Бухпрограммы

Прежде чем продолжу, предупреждение: 1. Хоть я 2 года и "программировал" в бухпрограмме, я пока ещё обезьяна, которая пытается стать Homo Sapiens. 2. Я пока только на Pascal, самая большая программа нормально работающая 1200 строк (я недавно светился в гостевой), хотя в том же бух модули по 10к строк легко выходило. Двигаюсь очень медленно, потому что пытаюсь научиться работать с Linux. Когда читаю вашу книгу или Slackware Linux Essentials, всё выглядит очень просто, а на практике я вчера 5 часов пытался открыть через telnet в локальной у себя окошко с сервера. Оказалось, что надо было xhost запускать от root. Хотя никаких ошибок оно не выводило. Может надо было ещё какой флаг указать. (Зато какое счастье, когда получилось! К сожалению, 5 часов в данном случае это ещё немного...) 3. Ну и недавно начал на ассемблере писать на телефончике (для этого и настраивал telnet), отличный timeskip в метро, так и ещё и код отлично помещается в экранчике. :) 4. Второй и третий тома ознакомительно пролистал, но более их не трогаю, хочу сначала закончить с Паскалем, ибо так задумал автор. :) (Единственное исключение, иногда на работе начальник просит написать программки для Arduino, чтобы управлять реле. Это всё делается со вторым томом в руках.) Это я всё к тому, что я пока ещё "не совсем взрослый", во многом заблуждаюсь и моя позиция пока формируется. (Не выгоняйте меня, пожалуйста)

Есть вещи, которые защищать нельзя, понимаете? Среди них — любого рода изоляционизм в компьютерных технологиях

Вроде как-то на интуитивном уровне понятно, что это неприемлемо, а объяснить почему -- не могу.

Я, кстати, в итоге сделал

Круто *О*

файл для LaTeX'а

Забыл упомянуть LaTeX, в своём предыдущем комментарии, он сюда отлично вписывается. Спасибо за вашу книгу по LaTeX! На первом курсе начал делать все в LibreOffice Writer, потом оказалось, что у всех преподавателей он криво открывается в Word'е, из-за чего они начали мне снимать баллы за оформление, к которому были конкретные требования. Перешёл на Word, а потом на интервью Бороды услышал про LaTeX, попробовал и кайфанул именно от самого процесса, так и от результата. С третьего курса все курсовые проекты делаю в LaTeX. Преподаватели и одногруппники, восхищаются красотой моих работ. А когда одногруппники просят .docx, то упс. :Р С этого месяца начну диплом делать.

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

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

Возможно, я просто не понимаю, что имеется ввиду под изоляционизмом в данном случае.

parent From Andrey V. Stolyarov profile Fri Jan 5 11:44:35 2024 pencil

userpic

telnet?!

> открыть через telnet в локальной у себя окошко с сервера

Э!!! завязывайте с этим, telnet уже четверть века никто никогда нигде не применяет для удалённого доступа к серверам. Откройте для себя ssh (замечу, и никакого xhost, как максимум ssh -X, это если по умолчанию X forwarding выключен, но он обычно включён). Лично меня отучили от telnet в 1997 году. Надо авторам ssh отдать должное, это тот редчайший случай, когда люди умели и с криптографией обращаться, и программировать, так что ssh, будучи (вроде бы) просто шифрованной заменой для telnet, в результате получился намного удобнее, чем telnet. Обычно бывает наоборот: если криптопанки до чего-то добрались, пиши пропало, там код будет нечитаемый, интерфейс безумный, и вообще всё будет плохо.

parent From Anonymous (unverified) Fri Jan 5 13:14:52 2024 pencil

Re: telnet?!

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

Ы, про его существование узнал же из вашей книги и задачника! Пока искал решение проблемы, на форумах почти все первые комментарии были формата: "нафиг telnet используете ssh!", а у меня принцип: работает -- не трогай, а telnet у меня в общем работает. И знакомый мне помогал порт прокинуть на роутере, очень уж мне хотелось подключиться "извне". Он мне помог, а потом сразу предупредил, что лучше в таком случае использовать ssh, т.к. взлом сервера с telnet считается в минутах. После одного успешного подключения, для личного удовлетворения, порт на роутере сразу был закрыт.

Спасибо, буду знать, перейду на ssh!!!

parent From Andrey V. Stolyarov profile Fri Jan 5 13:51:09 2024 pencil

userpic

Re: Re: telnet?!

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

UPD: пардон, совсем упустил вот это ваше:

про его существование узнал же из вашей книги и задачника!

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

parent From anonymous (unverified) Fri Jan 5 14:37:36 2024 pencil

Re: telnet?!

https://www.opennet.ru/opennews/art.shtml?num=60300

parent From Andrey V. Stolyarov profile Fri Jan 5 15:39:43 2024 pencil

userpic

Re: telnet?!

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

Ну, кстати, теперь мы знаем очередного номинанта на звание "главного IT-мудака всех времён и народов":

при участии Оливье Бонавентуры (Olivier Bonaventure), профессора того же университета, известного разработкой подсистемы Multipath TCP и кода сегментной маршрутизации IPv6 для ядра Linux, а также соавтора 10 RFC и черновиков более 60 сетевых спецификаций.

Хотя в моём личном рейтинге пока что Тим Бёрнерс-Ли и Гай Стил вне конкуренции.

parent From Anonymous (unverified) Fri Jan 5 17:18:31 2024 pencil

Re: Re: telnet?!

Стил за Java?

А Бёрнерс-Ли за концепцию гипертекста вообще или конкретно за HTTP?

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

parent From Andrey V. Stolyarov profile Fri Jan 5 18:02:55 2024 pencil

userpic

Re: telnet?!

> Стил за Java?

А что, он и там отметился? Я уже забыл.

На самом деле лично для меня преступления Guy L Steele против цивилизации начинаются с Common Lisp, собственно ведь именно он — автор книги Common Lisp the Language, которая (текст которой) принят в качестве "стандарта". Как говорят в таких случаях, зовите его просто: человек, который убил Лисп.

Потом он ещё отметился в ECMA Script (если знать, в чём дело, в JS прямо-таки видны торчащие уши от CLOS), в "стандартизации" чистого Си (за одно это к стенке поставить мало) и вроде бы много где ещё.

> А Бёрнерс-Ли за концепцию гипертекста вообще или конкретно за HTTP?

В концепции гипертекста как таковой не вижу буквально ничего плохого, как, на самом деле, и в протоколе HTTP как таковом. Первая "заслуга" Бёрнерса-Ли состояла в том, что для представления гипертекста он выбрал SGML-like markup, ныне известный как HTML. Но это в принципе само по себе ещё ладно, мало ли какую дрянь люди протаскивали в мейнстрим, просто не понимая, до какой степени это дрянь.

Но вот за что его четвертовать мало — он ведь возглавлял W3C с момента создания такового и до момента его расформирования, когда W3C якобы "передал полномочия" классическому комитету, который уже "принял" HTML5 в качестве "стандарта" (все предшествующие форматы HTML/XHTML имели статус рекомендаций, что вполне нормально).

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

> полный список номинантов

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

Дальше уже, наверное, с хорошим отрывом Леннарт Поттеринг, потом всякие Ларри Пейдж и Сергей Бринн, очевидные Гейтс, Джобс, Балмер, Цукерберг, мало ли их там ещё.

parent From Anonymous (unverified) Fri Jan 5 18:32:45 2024 pencil

Re: Re: telnet?!

Хотя насчёт гипертекста это я сам перепутал. Автор концепции гипертекста всё-таки Тед Нельсон. А Бёрнес-Ли скорее успешный маркетолог и монетизатор.

parent From Alejandro profile Thu Jan 4 22:38:56 2024 pencil

Re: Re: Re: Бухпрограммы

Какая простыня :) Но ответить хочу лишь на одно.

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

Не получится. А если не согласны, то сравните "операторы" new tree и новый дерево :-)

Причём, если бы для программистов языком номер №1 был бы немецкий, то это бы работало (например, из-за разницы между neuer, neues и neue), но так нет :)

PS: а я до вашего сообщения и не знал, что ЭТО написано на джаве. Какая гадость.

parent From Anonymous (unverified) Fri Jan 5 00:16:21 2024 pencil

Re: Re: Re: Re: Бухпрограммы

PS: а я до вашего сообщения и не знал, что ЭТО написано на джаве. Какая гадость.

Не, тут недопонимание. Просто разработчики работающие в ЭТОМ часто переквалифицируются на Java, т.к. именно на Java легче всего перейти. Пока что оно на C++... А так ЭТО сейчас действительно переделывают на Java, но это мертворождённый монстр, т.к. у него минимальные системные требования как у топового ПК 2020 года.

parent From Alejandro profile Fri Jan 5 12:06:46 2024 pencil

Re: Re: Re: Re: Re: Бухпрограммы

А, действительно. Заодно вспомнил, что у них есть своя поделка с двумя плюсиками в названии :|

parent From Andrey V. Stolyarov profile Fri Jan 5 13:03:26 2024 pencil

userpic

Re: Бухпрограммы

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

parent From Artem (unverified) Fri Jan 5 17:36:38 2024 pencil

Re: Re: Бухпрограммы

Зафорсят, обязательно зафорсят. А потом такие прилетят, подобно Супермену, с развевающимся на ветру плащом, и даруют всем спасение (хм, надо было не с Суперменом летающим, а с Христом, по воде ходящим, сравнивать): серверная часть будет у них в надёжном и хорошо защищённом (почему-то только от пиратов, хотя стоять он будет явно не в море) фирменном сервере, а для пользователя будет великое и могучее веб-приложение.

parent From Andrey V. Stolyarov profile Fri Jan 5 20:07:33 2024 pencil

userpic

Re: Бухпрограммы

Вебанутая бухгалтерия вроде уже есть, не? Её даже больше одной. В смысле, в этой "нише" как-то уже тесновато.

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

From ipu (unverified) Sun Dec 31 12:20:26 2023 pencil

Это конечно не трехтомник, но все же

Ссылки внизу содержат javascript с google-analytics! Рекомендуется пользоваться средствами контрацепции.

Думаю, можно с натяжкой (во-о-от такой) считать этот ресурс аналогом в англоязычном пространстве вашим книгам: https://teachyourselfcs.com/

Также, прошу обратить внимание на книгу Computer Systems: A Programmer's Perspective http://csapp.cs.cmu.edu/3e/home.html

parent From Andrey V. Stolyarov profile Sun Dec 31 12:37:23 2023 pencil

userpic

Re: Это конечно не трехтомник, но все же

> считать этот ресурс аналогом

Там просто ссылки на разрозненные книги и курсы, это раз. И два: начинать предлагается с SICPа (т.е. это Scheme, уровень не просто высокий, а высокий настолько, что машину оттуда не видно), а дальше сразу фигак и всякие архитектуры и операционки. Классика жанра — обучение по-спартански, кто выплыл — молодец, кто утонул — туда и дорога.

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

> прошу обратить внимание на книгу

Там же нет самой книги, как на неё "обращать внимание"? Копирасты поганые.

parent From ipu (unverified) Sun Dec 31 13:01:12 2023 pencil

Re: Re: Это конечно не трехтомник, но все же

Насчет книги, действительно, никак. Могу разве что дать ссылку http://libgen.is/book/index.php?md5=DC97C014DBAE4E33A63D29BF540366F9

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

From . (unverified) Fri Dec 29 18:04:08 2023 pencil

Как искать сайты в интернете без JavaScript?

Очень часто вижу в новостях на вашем сайте, а так же от других людей в комментариях, что дается ссылка на тот или иной ресурс. Перехожу по ней и вижу просто веб страницу без JS. Где-то какая-то статья, где-то новости. И все это вы же как-то находите. В связи с этим я хотел спросить, как у вас получается находить такие ценные ресурсы без JS? Что не загуглишь - везде помойка. Всюду какие-то скрипты, что-то где-то умудряется вылезать даже (!) с отключенным JS.

parent From Andrey V. Stolyarov profile Fri Dec 29 18:09:58 2023 pencil

userpic

Re: Как искать сайты в интернете без JavaScript?

Что везде помойка — это точно. Может, запилить каталог? :-) Ну, типа, вот каталог, сюда можно только сайты без JS, остальные не принимаются.

parent From . (unverified) Fri Dec 29 18:17:11 2023 pencil

Это бы очень пригодилось!

Всеми руками за!

parent From Одекват (unverified) Fri Dec 29 18:18:46 2023 pencil

Re: Re: Как искать сайты в интернете без JavaScript?

Андрей Викторович, если запилите, приму эстафету :)

parent From - (unverified) Fri Dec 29 18:35:49 2023 pencil

Re: Re: Как искать сайты в интернете без JavaScript?

Неплохо было бы сделать рассово верный каталог сайтов. Я искал по запросам "лёгковесный веб". Гуглопочта без javascript работает. Ютьюб - yewtu.be.

parent From Andrey V. Stolyarov profile Fri Dec 29 19:53:45 2023 pencil

userpic

Re: Как искать сайты в интернете без JavaScript?

yewtu.be — это только один из многих экземпляров Invidious. См. также редиректилку с выбором инстанса (это чтобы, когда прислали ссылку на тюбик, не надо было из неё руками выкусывать ID).

А вот гуглопочтой пользоваться не надо, будь она хоть триста раз без JS.

parent From Parthen (unverified) Fri Dec 29 19:01:00 2023 pencil

parent From Andrey V. Stolyarov profile Fri Dec 29 19:56:05 2023 pencil

parent From Обезьянки с гитхаба (unverified) Mon Jan 1 08:28:18 2024 pencil

Re: Прелесть какая :-)

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

https://github.com/wibyweb/wiby/

Справедливости ради, я не в восторге от C99 и PHP, но о вкусах, как говорится, не спорят.

parent From Andrey V. Stolyarov profile Mon Jan 1 14:02:07 2024 pencil

userpic

Re: Прелесть какая :-)

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

parent From Parthen (unverified) Mon Jan 1 20:15:21 2024 pencil

Re: Re: Прелесть какая :-)

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

https://github.com/torvalds/linux

Последний коммит вчера, лично от Торвальдса. Причем последний коммит вчера

parent From Andrey V. Stolyarov profile Mon Jan 1 21:21:53 2024 pencil

userpic

Re: Прелесть какая :-)

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

Ну а в-третьих, насколько я понимаю, это зеркало, основной реп вот тут: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/

parent From Alejandro profile Sat Dec 30 20:28:19 2023 pencil

Re: Re: Как искать сайты в интернете без JavaScript?

Минутка иронии: решил потыкать по ссылке "surprise me" и второй попавшийся оказался с JS :-) Но всё равно спасибо за сайт, интересная штука.

parent From Anon (unverified) Fri Dec 29 19:42:56 2023 pencil

Re: Как искать сайты в интернете без JavaScript?

https://wiby.me/

Из описания: "The Wiby search engine is building a web of pages as it was in the earlier days of the internet. In addition, Wiby helps vintage computers to continue browsing the web, as pages indexed are more suitable for their performance."

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

From Anonymous (unverified) Tue Dec 26 14:56:03 2023 pencil

[REMOVED] как образец Tcl/Tk

Андрей Викторович, как думаете это программа подойдёт Вам для иллюстрации Tcl/Tk приложения?

Это одна из немногих действительно хороших программ на Tcl/Tk, что я видел.

url removed

parent From Andrey V. Stolyarov profile Tue Dec 26 18:16:43 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

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

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

parent From Anonymous (unverified) Tue Dec 26 20:23:05 2023 pencil

Re: Re: [REMOVED] как образец Tcl/Tk

А ничего что это просто фичастый GUI к базе данных (словарям)? Оно ничего не вычисляет. Оно буквально просто показывает то, что положили в каталог с файлами. Это как бы во-первых.

А во-вторых это программа на Tcl/Tk лишь отчасти. Собственно, вот что говорит про исходники счётчик файлов: Roff 24.6% Tcl 19.4% C 16.8% M4 12.2% C++ 12.0%

Т.е. C++ и C в сумме там больше, чем Tcl. Ещё и макросов вагон.

parent From Andrey V. Stolyarov profile Wed Dec 27 10:38:08 2023 pencil

userpic

Re: Re: Re: [REMOVED] как образец Tcl/Tk

> А ничего что

Абсолютно ничего. Совершенно неважно, что конкретно программа делает, важно ровно одно: это именно самостоятельная программа, а не скрипт.

> программа на Tcl/Tk лишь отчасти

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

> M4 12.2%

За это вообще убивать независимо от конкретики.

Короче, давай, давай отсюда, быстренько.

parent From Мимо проходил (unverified) Wed Dec 27 13:24:49 2023 pencil

Re: Re: Re: Re: [REMOVED] как образец Tcl/Tk

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

parent From Andrey V. Stolyarov profile Wed Dec 27 14:28:00 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

В нём самом — не знаю, я тоже не готов тратить время на внимательное ощупывание всех командно-скриптовых чучелок, которые возникают на горизонте. Тут всё проще: обычно где M4 — там GNU autoconf/autotools (я никогда не видел, чтобы M4 использовался для чего-то ещё), ну эта мерзость, вопреки декларируемым целям, является источником НЕпереносимостей: мало того, что сами эти хреновины представляют собой лишнюю внешнюю зависимость, так ещё и шибко умные авторы программ то и дело в ./configure засовывают команды, которых в системе при сборке не оказывается. Короче, проще уж сразу встать и сказать "да, я мудак, и я этим горжусь".

parent From Artem (unverified) Thu Dec 28 17:13:19 2023 pencil

Re: Re: [REMOVED] как образец Tcl/Tk

Вот да, тысячу раз да! До сих пор помню, как у меня подгорело после перехода на Linux из-за того, что оказывается, нельзя просто так взять и добавить параметры в конфиг GRUB2!

Причём полинтернета пестрели, и до сих пор пестрят увещеваниями, что это, дескать, вообще невозможно и не предусмотрено разработчиками загрузчика. Хотя вот буквально за неделю до этого я вот этими руками писал конфиг для точно такого же GRUB2 на своей загрузочной флешке, получая вполне лаконичный и приятный скрипт (насколько вообще может быть приятным скрипт на unix shell, конечно).

parent From Andrey V. Stolyarov profile Thu Dec 28 17:47:12 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

Grub2 — это, конечно, образцово-показательный кусок дерьма из серии "хотите узнать, как не надо делать? вот, смотрите".

Я только не понял, какая тут связь с темой про Tcl/Tk и недопустимость применения скриптухи для нескриптовых целей.

parent From Artem (unverified) Fri Dec 29 09:47:03 2023 pencil

Re: Re: [REMOVED] как образец Tcl/Tk

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

parent From Andrey V. Stolyarov profile Fri Dec 29 09:53:22 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

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

parent From far profile Fri Dec 29 11:43:33 2023 pencil

Re: Re: Re: [REMOVED] как образец Tcl/Tk

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

Чтобы изменить поведение grub'а, вам нужно изменить один конфигурационный файл - boot.cfg. Там нет ни shell'а, ни m4. А ещё autotools тут ни при чём.

parent From Andrey V. Stolyarov profile Fri Dec 29 12:07:09 2023 pencil

userpic

Re: Re: Re: Re: [REMOVED] как образец Tcl/Tk

> Чтобы изменить поведение grub'а, вам нужно изменить один конфигурационный файл - boot.cfg.

Что, правда?

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

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

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

parent From far profile Fri Dec 29 13:49:14 2023 pencil

Re: Re: Re: Re: Re: [REMOVED] как образец Tcl/Tk

> Что, правда?

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

set default=0
set timeout=3

insmod part_gpt
insmod ext2

menuentry "CRUX" {
	set root=(hd0,3)
	linux /boot/vmlinuz-linux-5.15.135-main root=/dev/sda3 loglevel=3 ro
}
...

Если система одна, то это - весь файл.

> "советов" вроде "запустите вот этот вот скрипт, он всё что надо отдетектит и всё будет хорошо".

grub-mkconfig, я полагаю, он как раз и генерирует grub.cfg. Grub допускает следующее применение: сперва вы запускаете grub-install, а затем по мере необходимости редактируете grub.cfg. Всё остальное излишне.

parent From Andrey V. Stolyarov profile Fri Dec 29 14:13:42 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

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

UPD: вру, сейчас посмотрел -- menuentry я как раз нашёл, мне только не хватило, видимо, решительности (или скорее даже просто понимания происходящего), чтобы выпилить всё остальное, включая /etc/grub.d/*. Свою menuentry я вставил в /etc/grub.d/40_custom, и сейчас вот даже проверил -- она таки попала в /boot/grub/grub.cfg, вот только в меню я её так и не увидел. Разбираться, почему не увидел, мне что-то как-то не хочется, этот /boot/grub/grub.cfg явно представляет собой shell-скрипт, развесистый как три пальмы, и как он устроен, что делает, кто его запускает и зачем — покрыто мраком, а пытаться снова ставить grub вместо нормально работающего LILO я сейчас точно не буду, не хватало ещё сломать загрузчик на основном рабочем компе.

parent From Artem (unverified) Fri Dec 29 14:56:47 2023 pencil

Re: Re: [REMOVED] как образец Tcl/Tk

C автоматически сгенерированным grub.cfg разговор такой: открыть его в vim и выполнить ggVGd, после чего написать самому, с нуля. Скрипт получается простой, как палка. И не забыть удалить автоконфигуратор, конечно, а то при первом же обновлении системы он перезапишет конфиг.

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

parent From Andrey V. Stolyarov profile Fri Dec 29 17:04:41 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

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

Тогда, наверное, последний вопрос: есть где-нибудь человеческое описание, как это всё работает? Как, например, написать grub.cfg не по аналогии, а понимая, что делаешь? И чтобы там не предлагали автоконфигурялки запускать.

А то чует моя печёнка, это было далеко не последнее моё столкновение с grub'ом, ибо мейнстрим (кто б ещё объяснил, нахрена такой мейнстрим).

parent From Artem (unverified) Fri Dec 29 18:00:50 2023 pencil

Re: Re: [REMOVED] как образец Tcl/Tk

В этом я как раз не уверен. В официальном руководстве описано всё, но уж больно оно длинное. Лично я то, что мне было необходимо, нашёл на страничке Arch Wiki. В комбинации со знанием sh должно хватить на полноценное использование (без свистелок и перделок).

parent From Andrey V. Stolyarov profile Fri Dec 29 18:07:36 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

Спасибо. Глянул, ужаснулся :-) Буду надеяться, что мне ещё долго не потребуется это всё, но если потребуется — хоть буду знать, куда смотреть.

parent From Anon (unverified) Fri Dec 29 18:02:45 2023 pencil

Re: Re: [REMOVED] как образец Tcl/Tk

> написать grub.cfg не по аналогии

Тут есть немного. https://wiki.archlinux.org/title/User:Eschwartz/Grub https://www.gnu.org/software/grub/manual/grub/grub.html#Configuration

Tutorial (elementary level) https://www.dedoimedo.com/computers/grub-2.html

parent From Oliver (unverified) Sat Dec 30 13:28:55 2023 pencil

Re: Re: Re: [REMOVED] как образец Tcl/Tk

> ..открыть его в vim и выполнить ggVGd, после чего написать самому...

Не хочу показаться заумным, но чтобы стереть всё содержимое файла в VIM, мне обязательно запоминать комбинацию из 5 клавиш. Для этого вполне хватает набрать комбинацию d+shitf+g, где d - delete, G (shitft+g) - global (при этом нужно находиться на 1-ой строчке в файле).

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

parent From Andrey V. Stolyarov profile Sat Dec 30 14:56:59 2023 pencil

userpic

Re: Re: Re: Re: [REMOVED] как образец Tcl/Tk

> при этом нужно находиться на 1-ой строчке в файл

Ну так gg это и делает :-) С чем согласен, так это что visual mode здесь не обязательно, достаточно ggdG

parent From Одекват (unverified) Sun Dec 31 07:16:30 2023 pencil

Re: Re: Re: Re: Re: [REMOVED] как образец Tcl/Tk

Надо же, про необязательность visual mode не знал, аж стало интересно залезть в vim :help :)

parent From Andrey V. Stolyarov profile Sun Dec 31 12:02:52 2023 pencil

userpic

Re: [REMOVED] как образец Tcl/Tk

В хелпе там довольно нетривиально ориентироваться. Я бы рекомендовал сделать проще: запустить vimtutor и пройти его.

parent From Oliver (unverified) Sun Dec 31 08:06:40 2023 pencil

Re: [REMOVED] как образец Tcl/Tk

> Ну так gg это и делает

:-) Пропустил сей момент. Я, если честно, для перехода на первую строчку в файле (открытом в VIM) использую команду :1, и потому в данном комментарии обратил внимание на то, что надо запоминать/нажимать аж целых 5 клавиш вместо 3 мне привычных.

С наступающим Вас, Андрей Викторович! Всех благ и успеха!

parent From Anonymous (unverified) Mon Jan 1 10:50:07 2024 pencil

Re: минутка vim/vi

Не хочу, в свою очередь, показаться занудным, но почему вы не учитываете :1 при подсчёте клавиш?

У вас получается :1<CR>dG -- те же самые 5 клавиш, что и ggVGd (и шифт тоже два раза нажимать, если уж дотошно подсчитывать).

Для vim самый идиоматичный и короткий способ будет, видимо, упомянутый ggdG

Ваш способ, впрочем, хорош тем, что он будет работать и в классическом vi, где нет не только режима визуального выделения, но и команды gg. Но и в классическом vi можно короче: 1GdG

parent From Oliver (unverified) Tue Jan 2 07:44:31 2024 pencil

Re: Re: минутка vim/vi

Ваш исходный комментарий, на котороый я в первый раз ответил, содержит следующий набор слов: "C автоматически сгенерированным grub.cfg разговор такой: открыть его в vim и выполнить ggVGd..."

Раз уж Вы разобрали мой подход более детально, сделаю то же самое с Вашим. Не в обиду, а просто показать, что можно иначе, хотя не обязательно, разумеется. Раз уж считать все клавиши, Ваша рекомендация содержит нажатие даже ни пяти, а 7 клавиш в ситуации, когда без этого можно обойтись. Потому что, если в VIM открывать файл в первый раз (что пердполагается в ситуации со свежим автоматически созданным файлом /boot/grub/grub.cfg), по умлочанию он откроется на 1-ой строчке кода, следовательно символы "gg" в Вашем примере - лишние. Мой вариант d+shift+g разумеется, куда короче и делает то же самое.

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

parent From Andrey V. Stolyarov profile Tue Jan 2 12:05:52 2024 pencil

parent From Anonymous (unverified) Tue Jan 2 12:50:57 2024 pencil

Re: Re: Re: минутка vim/vi

Всё замечательно, вот только исходный комментарий не мой. ;-)

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

> разумеется вариант ggdG - предпочтительнее того, которым я пользовался до этого: :1dG

Вот, кстати, не факт. Ваш способ, как я уже говорил, будет работать везде. И мне он нравится своей "олдскульностью". :-)

Так что никаких обид. Простите, LOL. :-)

From Anonymous (unverified) Mon Dec 25 13:44:44 2023 pencil

Почему FreeBSD?

Рекомендуете FreeBSD?

parent From Andrey V. Stolyarov profile Mon Dec 25 14:41:40 2023 pencil

userpic

Re: Почему FreeBSD?

Как я её могу рекомендовать, если сам её последний раз трогал лет двадцать назад?

parent From Anonymous (unverified) Mon Dec 25 15:01:15 2023 pencil

Re: Re: Почему FreeBSD?

В книге рекомендуется... Или она начиналась печататься 20 лет назад?

parent From Andrey V. Stolyarov profile Mon Dec 25 15:54:14 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From Anonymous (unverified) Mon Dec 25 16:14:21 2023 pencil

Re: Почему FreeBSD?

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

parent From Andrey V. Stolyarov profile Mon Dec 25 17:57:52 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From Anonymous (unverified) Tue Dec 26 04:58:25 2023 pencil

Re: Re: Почему FreeBSD?

Какая-такая графическая установка? Там просто ncurses. Иксы всегда ставятся руками. Пакетами ставится примерно полчаса (скачиваются около 200 пакетов), из "коллекции портов", понято, ещё дольше.

Фряху часто использовать проще, чем Linux. Единственное, что раздражает, что система по умолчанию использует дефективные компиляторы Си и Си++ (clang и clang++). Ну и то, что дефолтные конфиги могут вообще не работать, это тоже не приятно. Например в mysql-server прописан один сокет, а в mysql-client другой.

parent From Anonymous (unverified) Tue Dec 26 11:42:03 2023 pencil

Re: Re: Re: Почему FreeBSD?

А чем они дефектные? Мои программы и тем и тем собираются и работают с одинаковыми опциями причём. И clang больше инфы диагностической выводит.

parent From Andrey V. Stolyarov profile Tue Dec 26 18:19:07 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From Anonymous (unverified) Tue Dec 26 19:33:21 2023 pencil

Re: Re: Почему FreeBSD?

Может я что-то неправильно понимаю, но вроде как в clang/llvm вначале код на C транслируется в псевдомашинный код, а потом из него в нативный. То есть в итоге получается нормальный машинный код. И в gcc тоже не прямая трансляция, только там промежуточный код - это ассемблер as.

Что плохого в таком подходе, если скомпилированная программа уже не содержит ничего от VM?

parent From Andrey V. Stolyarov profile Wed Dec 27 10:56:45 2023 pencil

userpic

Re: Re: Re: Почему FreeBSD?

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

parent From Artem (unverified) Wed Dec 27 05:10:54 2023 pencil

Re: Re: Почему FreeBSD?

Насколько я понял, VM здесь скорее метафора, означающая лишь то, что сначала код компилируется в промежуточное представление, которое при желании можно исполнить на виртуальном процессоре (что удобно для отладчиков и анализаторов типа valgrind), а уже затем в нормальный машинный код. Ровно то же самое делают и компиляторы семейства GCC, LLVM просто более универсален, является отдельным от компилятора проектом, и предназначен для использования как библиотека для сторонних компиляторов.

parent From Andrey V. Stolyarov profile Wed Dec 27 10:45:16 2023 pencil

userpic

Re: Почему FreeBSD?

Мне почему-то казалось, что в gcc между фронтэндами и бэкэндами только абстрактное синтаксическое дерево, хотя, конечно, могу и заблуждаться.

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

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

parent From Egor (unverified) Wed Dec 27 06:14:05 2023 pencil

Re: Re: Почему FreeBSD?

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

parent From Andrey V. Stolyarov profile Wed Dec 27 10:41:37 2023 pencil

userpic

Re: Почему FreeBSD?

И что? Это как-то отменяет наличие вот этой вот "некой виртуальной машины"? Т.е., попросту говоря, лишнего слоя абстракций между кодом на Си и кодом машинным? В роли языка высокого уровня Си не интересен и не нужен.

parent From far profile Wed Dec 27 19:38:11 2023 pencil

Re: Re: Почему FreeBSD?

LLVM является компилятором собственного языка - LLVM IR (intermediate language), при этом предоставляя два варианта компиляции: в объектный файл и в байткод. Объектный файл - обыкновенный ELF, который остаётся только подать на вход компоновщику, байткод же исполняется виртуальной машиной. Clang при компиляции C и C++ программ использует первый вариант и процесс компиляции никак принципиально (в контексте этого обсуждения) не отличается от компиляции с gcc.

parent From Andrey V. Stolyarov profile Wed Dec 27 19:57:07 2023 pencil

userpic

Re: Почему FreeBSD?

То есть как это не отличается? Вот именно наличием промежуточного представления и лишнего шага трансляции и отличается.

parent From far profile Wed Dec 27 21:14:22 2023 pencil

Re: Re: Почему FreeBSD?

Речь шла о виртуальных машинах, нет?

> Вот именно наличием промежуточного представления и лишнего шага трансляции и отличается.

LLVM позволяет использовать себя как библиотеку (вероятно, это и есть ожидаемый способ применения) и clang пользуется этим, так что компиляция .c -> .o (ассемблер зашит) происходит бесшовно. В этом случае вы используете библиотечные функции для генерации LLVM IR, вместо того чтобы генерировать его текстовое представление, то есть просто переводите одну структуру данных в другую. gcc, естественно, занимается тем же самым. Я не утверждал, что внутренности процесса компиляции у clang'а и gcc совпадают.

P.S. Я не использую clang/LLVM, так что, если я в чём-то ошибся, то прошу поправить.

parent From Andrey V. Stolyarov profile Wed Dec 27 21:18:49 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From far profile Wed Dec 27 22:45:53 2023 pencil

Re: Re: Почему FreeBSD?

> насколько я понимаю, код для выдуманной машины.

Оказалось, что да, но с оговорками.

Пример IR'а:

define i32 @add1(i32 %a, i32 %b) {
entry:
  %tmp1 = add i32 %a, %b
  ret i32 %tmp1
}

define i32 @add2(i32 %a, i32 %b) {
entry:
  %tmp1 = icmp eq i32 %a, 0
  br i1 %tmp1, label %done, label %recurse

recurse:
  %tmp2 = sub i32 %a, 1
  %tmp3 = add i32 %b, 1
  %tmp4 = call i32 @add2(i32 %tmp2, i32 %tmp3)
  ret i32 %tmp4

done:
  ret i32 %b
}

https://aosabook.org/en/v1/llvm.html

> LLVM IR is actually defined in three isomorphic forms: the textual format above, an in-memory data structure inspected and modified by optimizations themselves, and an efficient and dense on-disk binary "bitcode" format.

Биткод допускает непосредственную интерпретацию (lli), но clang это не использует. Он переводит программу на Си в LLVM IR, а LLVM переводит полученное промежуточное представление в объектный файл. Нет здесь никакой виртуальной машины и gcc занимается тем же самым (AST, GENERIC, GIMPLE, RTL и ещё много чего).

Можете ещё прочесть секцию "description" в "https://linux.die.net/man/1/clang".

parent From Andrey V. Stolyarov profile Wed Dec 27 22:54:45 2023 pencil

userpic

Re: Почему FreeBSD?

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

Приведённые вами ссылки никак не могут этот факт ни опровергнуть, ни как-либо изменить, они вообще не про то.

И нет, gcc "тем же самым" не занимается. AST — это однозначное представление исходного кода, просто результат его анализа, и, насколько я могу видеть, GENERIC — это тупо и цинично представление AST, в смысле ответ на вопрос "как AST представляется в потрохах gcc", GIMPLE — структуры данных, передаваемых от фронтэнда в бэкэнд (ну вот должны же они как-то общаться), при чём тут RTL, я вообще не понял.

parent From far profile Wed Dec 27 23:06:52 2023 pencil

Re: Re: Почему FreeBSD?

> Приведённые вами ссылки никак не могут этот факт ни опровергнуть, ни как-либо изменить, они вообще не про то.

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

Полагаю, что на этом можно и закончить.

parent From Ilya (unverified) Thu Dec 28 10:16:23 2023 pencil

Re: Почему FreeBSD?

Насколько мне известно, LLVM решает задачу NxM, то есть у нас есть N компилируемых языков программирования (допустим 20) и M процессорных архитектур (допустим тоже 20). Без LLVM, каждому компилятору каждого языка пришлось бы писать отдельно код для трансляции своего синтаксического дерева в каждую из архитектур, итого 20 x 20 = 400 трансляций.

С LLVM каждому компилятору языка нужна лишь одна трансляция в промежуточный псевдоассемблер, и каждой архитектуре нужна лишь одна трансляция из этого промежуточного слоя в нужную архитектуру, итого 20 + 20 = 40 трансляций. Результат - существенное снижение количество кода который надо писать (+- в 10 раз).

parent From Andrey V. Stolyarov profile Thu Dec 28 10:45:41 2023 pencil

userpic

Re: Почему FreeBSD?

Тот же gcc решает эту "задачу NxM", обходясь без VM. Достали уже придумывать оправдания этому бастарду, не может он ничем быть оправдан.

parent From far profile Thu Dec 28 11:38:15 2023 pencil

Re: Re: Почему FreeBSD?

gcc использует GENERIC представление, и у него также получается сумма трансляций. https://gcc.gnu.org/onlinedocs/gccint/Parsing-pass.html

parent From cfront (unverified) Mon Jan 1 10:29:22 2024 pencil

Re: Re: Почему FreeBSD?

Насколько я знаю, "древний" компилятор C++ cfront занимался тем, что транслировал C++ программу в Си программу, которую потом отдельно нужно было скармливать cc

parent From Andrey V. Stolyarov profile Mon Jan 1 13:58:36 2024 pencil

userpic

Re: Почему FreeBSD?

И что? Компиляторы Scheme до сих пор этим занимаются.

parent From Anonymous (unverified) Mon Jan 1 14:46:20 2024 pencil

Компиляторы Scheme

А как они eval транслируют? Интерпретатор Лиспа штука довольно простая, какой вообще смысл его как-то транслировать? Быстро оно всё равно работать не будет. (Ну, если оно не на Lisp-машине запущено, конечно, где процессор аппаратно умеет многие операции интерпретатора вычислять).

parent From Andrey V. Stolyarov profile Mon Jan 1 16:30:03 2024 pencil

userpic

Re: Компиляторы Scheme

Там весь транслятор в .so'шке целиком, так что нормально транслируют. Между прочим, там используется совершенно феерическая техника, в которой функции (в смысле те, которые в оттранслированном коде на Си) никогда не возвращают управление, но когда стек достигает определённого предельного размера, там специальная штуковина проходится по стеку и из него переносит в кучу объекты, которые ещё не стали мусором, после чего стек схлопывает.

Далее, Лисп-машин не существует, это миф. Ну то есть когда-то что-то было, но дальше лабораторий не прошло. И не могло, естественно, пройти. И, самое главное, не были эти машины ничем похожим на аппаратный интерпретатор лиспа, там просто CONS'ы поддерживались на уровне системы команд и всякая навигация по спискам.

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

parent From nelson profile Wed Dec 27 20:25:46 2023 pencil

Re: Re: Re: Почему FreeBSD?

LLVM является компилятором собственного языка - LLVM IR (intermediate language)

Ну так это ж не асссемблер - сответственно, там без пол-литра не разобраться, во что этот intermediate language скомпилируется (или, скорее, "странслируется").

parent From Anonymous (unverified) Tue Dec 26 21:16:36 2023 pencil

Re: Re: Re: Re: Почему FreeBSD?

Потому что авторы считают что им все можно, раз какие-то мудаки так в стандарте написали.

Например:

int
main ()
{
  for(;;)
  {
  }
  return 0;
}

void
never_can_be_called ()
{
  std::printf ("This function never can be called");
}

Как вы думаете как должен работать такой код? Просто бесконечный цикл? Ха-ха-ха. Берем g++ -Wall -Wextra -Wpedantic -O3 test.cpp и получаем бесконечный цикл. Берем clang++ -Wall -Wextra -Wpedantic -O3 test.cpp и получаем "This function never can be called" на stdout.

Почему? Потому что в стандарте ISO С++ от 2011 года написано, что "бесполезные" циклы -- это UB. И этой фигней никто не занимается, ни GCC, ни ICC, ни даже MSVC, лишь только один LLVM решил вые... выпендриться, чтобы показать какой у них крутой оптимизатор.

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

parent From Andrey V. Stolyarov profile Wed Dec 27 10:51:19 2023 pencil

userpic

Re: Re: Re: Re: Re: Почему FreeBSD?

Поменял ваш тэг blockquote на pre, ибо blockquote делает совсем не это.

По тексту примера — вы вызов этой вашей never_can_be_called не упустили случайно?

parent From Anonymous (unverified) Wed Dec 27 11:56:36 2023 pencil

Re: Re: Re: Re: Re: Re: Почему FreeBSD?

Нет, автор забыл -o test, #include <iostream> и \n в конце выводимой строчки. Если это всё добавить, то поведение воспроизводится. Куда-то return 0; исчезает вслед за бесконечным циклом.

parent From Andrey V. Stolyarov profile Wed Dec 27 12:56:47 2023 pencil

userpic

Re: Почему FreeBSD?

You made my day :-D ржу

parent From far profile Wed Dec 27 20:06:53 2023 pencil

Re: Re: Re: Re: Почему FreeBSD?

LLVM написан в основном на C++, то есть для того чтобы собрать компилятор Си (clang) вам нужен C++ компилятор. Лично мне этого уже достаточно, чтобы clang не использовать (современный gcc имеет ту же проблему, но никто не запрещает использовать gcc 4.7.4, для компиляции которого C++ компилятор не нужен). Что касается clang'а как компилятора C++, то представьте, что вам нужно собрать C++ программу, требующую clang, в системе без C++ компилятора, при этом бинарники из сети вы устанавливать не хотите. Чтобы это сделать вам придётся компилировать gcc.

parent From Anonymous (unverified) Tue Dec 26 12:55:06 2023 pencil

Re: Re: Re: Почему FreeBSD?

>Там просто ncurses.

Я это и имел ввиду. Вроде всё то же самое как и windows установить. Почему-то часто слышал, что FreeBSD устанавливать сложно.

>Иксы всегда ставятся руками.

На линуксе, вроде тоже. Только на FreeBSD нужно Nvidia видеодрайвер самостоятельно скачивать и устанавливать, те, что в портах и пакетах почему-то не работают.

>Пакетами ставится примерно полчаса

Это у вас "HDD диск баракуда 200 ГБ"?! На ноутбуке с SSD диском около 15 минут занимает поставить xorg-server вместе с графическим драйвером.

parent From Andrey V. Stolyarov profile Tue Dec 26 18:24:21 2023 pencil

userpic

Re: Почему FreeBSD?

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

Далее, нет, ncurses не имеет никакого отношения к графическим интерфейсам, и если вы что-то "имеете в виду", то, по-видимому, нужно говорить то, что вы имеете в виду, а не что-то принципиально другое.

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

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

parent From Anonymous-1 (unverified) Tue Dec 26 18:59:58 2023 pencil

Пустые строки и абзацы

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

parent From Andrey V. Stolyarov profile Tue Dec 26 20:04:07 2023 pencil

userpic

Re: Пустые строки и абзацы

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

parent From Anonymous-1 (unverified) Tue Dec 26 22:06:26 2023 pencil

Re: Re: Пустые строки и абзацы

Про "повыше" - это я имел в виду перед фразой про разрешенные HTML-теги, прошу прощения, что сразу не написал.

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

Но это заморочки уже, по мне и сейчас нормально.

parent From Alejandro profile Wed Dec 27 18:49:25 2023 pencil

Re: Re: Re: Пустые строки и абзацы

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

parent From Anonymous (unverified) Tue Dec 26 19:37:18 2023 pencil

Re: Re: Re: Re: Почему FreeBSD?

В большинстве дистрибутивов иксы всё же ставятся вместе с системой. Да даже в OpenBSD. Неужто в FreeBSD не ставятся?

> Nvidia видеодрайвер самостоятельно скачивать и устанавливать

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

parent From Anonymous (unverified) Tue Dec 26 21:01:24 2023 pencil

Re: Re: Re: Re: Re: Почему FreeBSD?

> Неужто в FreeBSD не ставятся?

Не ставится. У них даже нет ни одной библиотеки под GNU GPL v3 в базовой поставке (не угождают главным выгодоприобретелям FreeBSD: Sony, Apple, и т.п.) Начинаешь ставить любую программу на голую систему и первое что поставится -- GNU gettext и GNU Autotools (GNU m4, GNU aclocal, GNU autoconf, GNU automake, perl и т.п.). Без этого практически ничего установить не реально.

> или взять nouveau хотя бы, если карта уже есть, но не слишком новая

Угу. А ещё можно VESA использовать. Ну чтобы совсем свободно было. На катастрофическою потерю производительности вам все равно плевать.

parent From Andrey V. Stolyarov profile Wed Dec 27 10:46:51 2023 pencil

userpic

Re: Почему FreeBSD?

> Ну чтобы совсем свободно было.

Вон с моего сайта, сволочь.

parent From nelson profile Tue Dec 26 19:42:03 2023 pencil

Re: Re: Почему FreeBSD?

Так там уже есть графическая установка

Там псевдографика - установка в режиме "Text mode". По сути это установка из консоли, но с использованием установщика.

Ну, то есть, не голая консоль при установке, как в Arch каком-нибудь, но и не графический установшик, как в Debian, например.

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

Например, в Slackware формально есть установщик (хотя размечать диск всё равно нужно с использованием fdisc), в Arch - нет (вообще опционально есть, но не суть). При это Slackware - серьёзная полноценная ОС, а Arch годится разве что только для "домашнего использования".

диск разделывает

Может всё таки размечает или разбивает? )

parent From Andrey V. Stolyarov profile Tue Dec 26 20:10:10 2023 pencil

userpic

Re: Почему FreeBSD?

> Может всё таки размечает или разбивает? )

Бгг, мне вот ещё нравится "термин", гм... утилизация канала.

parent From nelson profile Tue Dec 26 21:29:51 2023 pencil

Re: Re: Почему FreeBSD?

Это уже "термины", придуманные маркетолухами, походу.

parent From Andrey V. Stolyarov profile Wed Dec 27 10:31:15 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From nelson profile Wed Dec 27 15:12:49 2023 pencil

Re: Re: Почему FreeBSD?

Ну тут "не все так однозначно", как в том меме.

bandwidth utilization

Конечно, зависит от контекста, но bandwidth - это "ширина канала" всё же.

bandwidth utilization - эффективность использования частотного ресурса, распределение каналов по частотам, как-то так. Причём эффективность оценивается именно что в частотной области (не временнОй). Понятно, что скорость передачи в битах в секунду в конечном счёте упирается в ширину канала в Гц, но всё же. Термин из электросвязи всё же.

коэффициент полезного использования пропускной способности

А это уже ближе к компьютерным сетям. И это про накладные расходы больше. Например, Ethernet 100 MBit имеет какую-то там фактическую скорость передачи, меньшую теоретических 100MBit за счёт накладных расходов. И вот тут уже речь имеено что о мегабитах в секунду.

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

parent From Andrey V. Stolyarov profile Wed Dec 27 15:40:53 2023 pencil

userpic

Re: Re: Re: Почему FreeBSD?

> И это про накладные расходы больше.

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

parent From nelson profile Wed Dec 27 20:49:16 2023 pencil

Re: Re: Re: Re: Почему FreeBSD?

Вот то есть совершенно не факт, у меня как раз ощущение, что это буквально "насколько канал задействован"

По-моему,это другое понятие ) В голову приходит TCP с его его "окнами" ) Зависит от контекста короче.

parent From Andrey V. Stolyarov profile Wed Dec 27 21:33:27 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From Anonymous (unverified) Mon Dec 25 21:47:15 2023 pencil

Re: Почему FreeBSD?

Чем она лучше NetBSD?

parent From Andrey V. Stolyarov profile Mon Dec 25 21:54:16 2023 pencil

userpic

Re: Почему FreeBSD?

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

parent From Anonymous (unverified) Tue Dec 26 01:08:18 2023 pencil

Re: Re: Почему FreeBSD?

Это не вам вопрос был, а тому кто написал про FreeBSD.

parent From Andrey V. Stolyarov profile Tue Dec 26 10:32:59 2023 pencil

userpic

Re: Почему FreeBSD?

И зачем такие вопросы задавать? Мало нам холиваров на ровном месте?

parent From Anonymous (unverified) Tue Dec 26 11:40:39 2023 pencil

Re: Re: Почему FreeBSD?

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

parent From Oliver (unverified) Wed Dec 27 13:49:09 2023 pencil

Re: Re: Re: Почему FreeBSD?

> Пришлось ставить попсовую убунту

Интересно, что случилось, раз именно пришлось ставить Убунту? Я сам когда-то начинал с Убунты, но сегодня не советую её даже начинающим в качестве первой системы. Тогда уж лучше Минт. Ну а если человек уже освоился более-менее в Линуксе, советую Slackware: это лучшее из Линукса, что я до этого видел.

parent From Anonymous (unverified) Wed Dec 27 20:34:48 2023 pencil

Re: Re: Re: Re: Почему FreeBSD?

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

From Anonymous (unverified) Fri Dec 22 20:01:34 2023 pencil

iostreams

Как ни странно, но не смотря на поиск по сайту и даже чтение методического предисловия, мне не удалось найти конкретного ответа на вопрос:

Есть ли что-то плохое в изучении и использовании всяких cin и cout для ввода-вывода?

Если в университете препод предлагает их использовать, стоит ли их использовать, или лучше взять обычные printf/scanf? Насколько я понимаю, ему пофиг, если программа работает.

И стоит ли вообще использовать cin или scanf для ввода, если можно взять fgets и одну из функций семейств atoi / atof или strtol / strtod?

В поиске нашелся только аргумент про перегрузку >> << которую не стоило бы затрагивать настолько рано при преподавании языка, но это "плохое" именно со стороны препода, а есть ли что-то плохое именно со стороны студента, если он уже успел где-то прочитать, что эти значки в норме означают shl и shr и что в C++ можно переопределять знаки операций?

parent From Andrey V. Stolyarov profile Fri Dec 22 20:56:55 2023 pencil

userpic

Re: iostreams

Есть старый и вполне универсальный принцип: коготок увяз — всей птичке пропасть. Я имею наглость утверждать, что никакие части стандартной библиотеки C++ использоваться не должны; iostream принципиально штука неплохая, но она часть стандартной библиотеки, и она не настолько полезна, чтобы ради неё нарушать краткий и ясный принцип — ни кусочка из namespace std, и вообще никаких namespaces (ибо они пришли из стандарта, т.е. это комитетский бастард).

И да, scanf использовать не надо. Лучше даже с fgets аккуратнее, универсальный инструмент — getchar/fgetc.

parent From Anonymous (unverified) Fri Dec 22 21:26:49 2023 pencil

Re: iostreams

Ну, побайтовое чтение по-моему избыточно в студенчеких "лабах" где фигня вроде "введите a: ", "введите b: ", "введите c: " и потом "Корни ax^2+bx+c: 1.0 2.0" требуется.

parent From Andrey V. Stolyarov profile Fri Dec 22 21:59:10 2023 pencil

userpic

Re: iostreams

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

Впрочем, да, коэффициенты квадратного уравнения для рассчёта посимвольно читать — чего доброго, преподаватель сильно удивится и настоятельно предложит прекратить выпендрёж :-)

parent From Dmitry (unverified) Sat Dec 23 04:56:57 2023 pencil

Re: Re: iostreams

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

parent From Andrey V. Stolyarov profile Sat Dec 23 10:08:41 2023 pencil

userpic

Re: iostreams

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

NB: рекомендацию использовать возможности стандартной библиотеки и не изобретать велосипед я отношу только к "стандартной" библиотеке чистого Си, причём не ко всей — в частности, всё, что повязано на локали, прежде всего ctype.h, лучше не использовать вовсе, а если использовать — то разве что от полной безысходности. Тот результат комитетской вакханалии, который известен как "стандартная библиотека C++", использовать нельзя вообще.

parent From Dmitry (unverified) Sat Dec 23 11:17:55 2023 pencil

Re: Re: iostreams

Большое вам спасибо, Андрей Викторович, что делитесь своими знаниями! Очень вам признателен!

parent From Anonymous (unverified) Sun Dec 24 10:58:11 2023 pencil

А почему не вытащить?

(Уровень: пишу на Паскале. Пока самая большая программа на 1200 строк, разбитая на 2 модуля (задача 2.49*))

никакие части стандартной библиотеки C++ использоваться не должны; iostream принципиально штука неплохая, но она часть стандартной библиотеки

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

parent From Andrey V. Stolyarov profile Sun Dec 24 11:59:50 2023 pencil

userpic

Re: А почему не вытащить?

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

parent From Anonymous (unverified) Tue Dec 26 12:04:47 2023 pencil

Re: Re: А почему не вытащить?

Можно заново написать, в принципе, вроде там должно быть не так много. Но реально намного лучше printf/scanf чтобы заморачиваться?

parent From Andrey V. Stolyarov profile Tue Dec 26 18:12:21 2023 pencil

userpic

Re: Re: Re: А почему не вытащить?

Нет, не настолько лучше. К тому же ограничено миром C++, то есть для проектов на чистом Си будет заведомо неприменимо. Замену для традиционного printf какую-то хочется, чтобы

  • не таскать за собой код конверсий, который в проекте не используется (ну вот работаю я только с целыми, нахрен мне перевод плавучки в строки и обратно, а printf/scanf это всё с собой притаскивают неизбежно);
  • не зависеть от локалей;
  • не оставлять разбор форматной строки на время выполнения, очень уж неряшливое решение, оскорбляет моё эстетическое чувство.

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

From Oliver (unverified) Thu Dec 21 14:42:12 2023 pencil

Определение подключенных устройств

Добрый вечер! Меня интересует примерный порядок действий в случае, когда нужно определить подключенные внешние устройства в системе (после заргузки ОС). Я это представляю себе примерно так: CPU на адресной шине выставляет некий широковещательный адрес, а по шине управления передаёт некий сигнал, на который отзываются все устройства, выставляя на шине данных свой адрес. Я примерно в правильном напрвалении мыслю, или же несу чушь собачью?

С уважением!

parent From Andrey V. Stolyarov profile Thu Dec 21 15:16:07 2023 pencil

userpic

Re: Определение подключенных устройств

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

В действительности всё происходит иначе: каждое устройство активируется предназначенным для него драйвером. Это происходит и в ядре ОС, и до него — когда компьютер загружается, используя содержимое своего ПЗУ, там тоже есть драйверы устройств. Если говорить конкретно про ОС, то ядро последовательно активирует все имеющиеся в нём драйверы, и каждый из драйверов пытается связаться со "вверенным" ему устройством, а если не получается — заявляет, что ему тут делать нечего, и ядро этот драйвер выпиливает нафиг из памяти, чисто ради экономии. Ну а если получается — то устройство становится доступно через соответствующие системные вызовы, которые обращаются к драйверам через глобальную (в ядре) таблицу точек входа.

parent From Oliver (unverified) Thu Dec 21 17:28:58 2023 pencil

Re: Re: Определение подключенных устройств

Понятно. А как констатировать наличие того или иного устройства в системе? Например, есть желание реализовать код, который пройдет по всем устройствам и о каждом из них соберёт инфу (ID производителя, ID устройства). У меня есть два чисто теоретических варианта, как это сделать: 1) Пройтись циклом по всем устройствам (например, у каждого PCI-устройства имеется пространство конфигурации,в котором хранится некоторая информация о нем) и, например, сохранить добытую инфу к односвязном списке. Но сдесь есть зацепка: с чего начать чтение PCI-устройств (то есть, где взять адреса устройств, по которым потом можно пройтись? И я подумал, что может быть какой-то сигнал посылается устройствам, на который они отзываются, высылая свой адрес, но мысль, мягко говоря, - не верная)?

2) Ядро после загрузки где-то в памяти размещает некую структуру данных, в которой хранится вся информация обо всех подключенных устройствах (как-то же оно через ту же директорию /proc/bus/pci выдаёт данные о подключенных PCI-устройствах). Если это так, остаётся понять, по какому адресу хранится сия структура данных.

С уважением!

parent From Andrey V. Stolyarov profile Thu Dec 21 17:36:20 2023 pencil

userpic

Re: Определение подключенных устройств

Я не изучал вопрос с устройством PCI и протоколами обмена через неё. Могу только сказать, что в общем случае ничего подобного не бывает. Хотя в некоторых частных случаях бывает и не такое, на USB, например — там реально можно всё узнать про любое подключённое устройство, даже не понимая, как с ним обращаться.

> Если это так, остаётся понять, по какому адресу хранится сия структура данных.

Вы имеете в виду конкретно в ядре Linux? Понятия не имею, я никогда не программировал в ядре.

Кстати, я не уверен, что устройство, пусть и физически подключённое к PCI, но для которого нет драйвера в ядре, будет показано в /proc/bus/pci

parent From Oliver (unverified) Thu Dec 21 19:25:10 2023 pencil

Re: Re: Определение подключенных устройств

Да, я имел в виду конкретно ядро Линукс. Извиняюсь, что не уточнил!

parent From Andrey V. Stolyarov profile Thu Dec 21 19:58:59 2023 pencil

userpic

Re: Определение подключенных устройств

Вот это вот https://docs.kernel.org/driver-api/pci/ не то, случайно, что вам требуется?

parent From Oliver (unverified) Sat Dec 23 14:47:34 2023 pencil

From Алексей (unverified) Sat Dec 16 03:21:22 2023 pencil

Математическое образование.

Здравствуйте! Недавно в интервью с одним из сотрудников компании "Яндекс", я услышал совет, что если получить образование бакалавра в области чистой математики, то затем учить программирование легче, и это эффективный путь к тому, чтобы стать программистом. Как вы считаете, это имеет смысл?

parent From Andrey V. Stolyarov profile Sat Dec 16 12:20:52 2023 pencil

userpic

Re: Математическое образование.

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

parent From Anonymous (unverified) Mon Dec 18 06:27:59 2023 pencil

Re: Математическое образование.

«Математику уже затем учить надо, что она ум в порядок приводит», - М.В. Ломоносов.

parent From Andrey V. Stolyarov profile Mon Dec 18 09:29:28 2023 pencil

userpic

Re: Математическое образование.

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

Цитата к тому же затасканная и изрядно всем надоевшая.

parent From Anonymous (unverified) Mon Dec 18 11:49:15 2023 pencil

Re: Re: Математическое образование.

К тому же, достоверно не известно, говорил ли это Ломоноов или нет. (https://provereno.media/blog/2021/01/29/govoril-li-mihail-vasilevich-lomonosov-pro-matematiku-chto-ona-um-v-porjadok-privodit/)

parent From Andrey V. Stolyarov profile Mon Dec 18 13:39:25 2023 pencil

userpic

Re: Математическое образование.

По ссылке довольно убедительно показано, что Ломоносов такого не говорил, псевдоцитата выдумана неким советским автором. Спасибо, кстати, было интересно :-) Конечно, самостоятельно перепроверить исследование, предпринятое этими provereno.media, возможно, но затратно, и делать этого я не буду, но это и не так важно.

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

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

parent From Anonymous (unverified) Mon Dec 18 14:40:54 2023 pencil

Re: Re: Математическое образование.

Но всё же как-то странно убеждать публику не думать самостоятельно с помощью цитат, где публике предлагают думать самостоятельно.

parent From Andrey V. Stolyarov profile Mon Dec 18 16:04:03 2023 pencil

userpic

Re: Математическое образование.

> публике предлагают думать самостоятельно

Где? В упор не вижу! "Учить математику" — это отнюдь не значит "думать самостоятельно". Я бы даже сказал, что вообще не соотносится одно с другим. В СССР математику очень даже учили, не знаю как в обычных школах (по-моему отвратительно), но были и математические школы, и, как ни крути, довольно сильная математика в топовых ВУЗах. А вот самостоятельное мышление не поощрялось, и это очень мягко сказано.

parent From Anonymous (unverified) Mon Dec 25 18:55:11 2023 pencil

Re: Re: Re: Математическое образование.

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

parent From Andrey V. Stolyarov profile Mon Dec 25 21:14:05 2023 pencil

userpic

Re: Математическое образование.

> Но математика способность мыслить-то не развивает

Да неужели?! А что тогда развивает?

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

Да неужели?!

> но сам при этом ничего нового в математику внести не способен?

Сделать в математике что-то новое может крайне малое число людей, в статистическом плане можно считать, что их нет вообще.

> Умный ли он?

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

parent From Анонимус (unverified) Wed Jan 17 13:31:32 2024 pencil

Re: Re: Математическое образование.

Я преподавал математику у школьников. Расскажу реальный случай. Я: "(a + b)^2 знаем"? Аудитория: "да". Я: "А почему это верно?" Аудитория молчит. Видать в голове крутили мысль: "потому что потому". К чему это я. Попробовать самому раскрыть скобки и убедиться, почему всё так - для многих просто лень и нежелание напрягать мозг. Как это ещё называется, как не уметь мыслить. Аудитория знает, но не мыслит.

Уметь мыслить - задавать вопросы почему. А не воспринимать всё на веру.

parent From Andrey V. Stolyarov profile Wed Jan 17 13:44:40 2024 pencil

userpic

Re: Математическое образование.

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

Ну так и что, каким образом это противоречит сказанному выше?

Кстати говоря, "раскрыть скобки" — это тупое механическое действие, которое тоже в школе обычно предлагается принять на веру, а ответ на "почему" можно, например, получить, если нарисовать прямоугольник со сторонами (a+b) и (c+d). Но вообще я сильно сомневаюсь, что такое реально можно сделать в классе. Темп восприятия у всех свой. Так что для формирования настоящего понимания математики нужны занятия индивидуальные. Привет всем безответственным родителям, почему-то уверенным, что их детей в школе чему-то научат.

From Anonymous (unverified) Wed Dec 13 20:11:40 2023 pencil

c. 330 первого тома

Я не понял. Пишем программу с использованием SeekEof, компилируем

Free Pascal Compiler version 3.2.2 [2021/05/16] for x86_64 Copyright (c) 1993-2021 by Florian Klaempfl and others Target OS: Linux for x86-64

И запускаем. Консольный инпут имеет вид в точности _0__1___2 но только вместо _ пробелы. Чтобы программа отдала мне правильный результат, я жму Ctrl-D три раза.

parent From Andrey V. Stolyarov profile Thu Dec 14 01:10:20 2023 pencil

userpic

Кстати да, я тоже не понял

Ну, если нажать сначала Enter, как положено, а потом уже устраивать EOF, то всё будет нормально, но дело-то, конечно, не в этом. Если вот так вот нажимать Ctrl-D, введя неполную строку, должно потребоваться два нажатия Ctrl-D (ибо первое вытесняет буфер терминала, и только второе имитирует конец файла, это документированное поведение терминала в юниксах). Два, но никак не три. А программе, полученной с помощью fpc, реально требуется три.

Но самое интересное, конечно, то, что выдал strace:

read(0, " 0  1   2", 256)               = 9
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
read(0, "", 256)                        = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
read(0, "", 256)                        = 0
write(1, "3 3\n", 4)                    = 4
exit_group(0)                           = ?

Как можно было написать SeekEof и read так, чтобы им вот исключительно в такой ситуации и ни в какой другой требовалось дважды получить конец файла от операционки — не знаю и, честно говоря, знать уже не хочу. Я как-то раз попробовал общаться с командой, поддерживающей Free Pascal, убедился, что вменяемых людей там нет, а есть только раздувшиеся дебилы, и больше с ними взаимодействовать желания не испытываю.

parent From Anonymous (unverified) Thu Dec 14 15:57:33 2023 pencil

Еще нюанс с циклами

Есть такой код:

program example;
var
    i: integer;
begin
    for i := 1 to 1 do
        writeln('example')
end.

Цикл должен печатает example 1 раз, хотя не должен этого делать. Переменная i на момент входа в цикл уже равна единице. То есть мы получаем, что от единицы до единицы будет 1 проход, а не ноль. И здесь не понятна логика. Цикл не проверяет условие при первом входе? Но ведь это не цикл с постусловием, который выполнит первый проход без проверок.

parent From Andrey V. Stolyarov profile Thu Dec 14 16:06:10 2023 pencil

userpic

Здесь нет никакого нюанса

Здесь нет никакого нюанса, цикл работает ровно так, как должен работать, и в полном соответствии с тем, что написано в параграфе 2.2.12.

P.S. Вообще-то я не консультирую в комментах.

parent From nelson profile Sat Dec 16 13:00:49 2023 pencil

Re: Еще нюанс с циклами

Цикл не проверяет условие при первом входе?

Почему не проверяет, если проверяется условие 1 <= 1?

parent From Andrey V. Stolyarov profile Sat Dec 16 14:14:27 2023 pencil

userpic

Re: Еще нюанс с циклами

В действительности

   i := start_v;
   while i <= end_v do begin
       { ... }
       i := i + 1
   end

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

parent From nelson profile Sat Dec 16 16:23:37 2023 pencil

Re: Re: Еще нюанс с циклами

Семантика арифметического цикла в том, что вот есть переменная, есть начальное значение для неё и финальное значение, и она последовательно пробегает все значения из заданного диапазона

Так человек, видимо, не понимает - как можно пробежать от единицы до единицы в математическом смысле.

Хотя тут, возможно, стоит заменить "пробегает" на "принимает значения", и тогда станет яснее.

parent From Andrey V. Stolyarov profile Sat Dec 16 16:55:17 2023 pencil

userpic

Re: Еще нюанс с циклами

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

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

Короче, я бы списал на невнимательность.

From Anonymous (unverified) Fri Dec 8 13:39:20 2023 pencil

Корупция и Лоббизм

Добрый день, Андрей Викторович, у меня к вам сразу два вопроса:

1) Является ли лоббизм абсолютным злом или все же есть ситуации где он допустим? Задался вопросом после ютуб видео мужика (b7MZaWIlJEo), который борется за Right To Repair в США против корпораций типо Apple, запрещающих ремонт своих девайсов магазинам без сертификатов. Он (вернее его ремонтная компания/корпорация которой он владеет) вроде как смог пролоббировать пару законов, в пользу потребителей.

2) Существуют ли эффективные методы борьбы с коррупцией и какими бы они были в идеальном, на ваш взгляд, обществе?

parent From Andrey V. Stolyarov profile Fri Dec 8 15:35:53 2023 pencil

userpic

Re: Корупция и Лоббизм

Абсолютный оффтопик, конечно, ну да ладно.

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

Если говорить о зле конкретно в вашем примере, то злом там являются крупные корпорации. Вот эти — да, абсолютное зло, которое можно и нужно уничтожать всеми доступными методами. Кстати, я бы начал даже не с очевидных Apple и Google (плюс Microsoft, IBM, Intel, AMD, Oracle, кто там ещё...), а скорее с Айрбаса, Боинга и всяких автомобильных концернов. Точнее, даже не "всяких", а просто всех. Как конкретно это должно выглядеть — см. этот и этот ролик.

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

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

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

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

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

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

parent From rkvg-es (unverified) Sat Dec 9 18:41:37 2023 pencil

Re: Re: Корупция и Лоббизм

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

Что скажете насчёт сведений о других странах, доступ их представителей к которым нежелателен? Разведка там, контрразведка и прочее.

parent From Andrey V. Stolyarov profile Sat Dec 9 19:03:40 2023 pencil

userpic

Re: Корупция и Лоббизм

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

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

Ну а в-третьих, чего я-то буду говорить, пусть вон бывший шпион (видевший ещё КГБ СССР изнутри) расскажет: 7FKnyMl_Vsw смотреть примерно с 29:50 и до конца ролика. Если лень смотреть, то там основная мысль — что все мировые разведки и контрразведки себя полностью изжили, никакой пользы никому давно не приносят (ни своим "нанимателям", ни чужим) и просто по инерции жрут бабло, причём весьма и весьма немаленькое.

From Parthen (unverified) Wed Dec 6 19:28:56 2023 pencil

Немного приободрить

Давно я тут не появлялся :)

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

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

Я это к чему -- если не получается, не расстраивайтесь -- отдохните, а может и просто чутка повзрослейте :)

From Oliver (unverified) Wed Dec 6 14:27:06 2023 pencil

Работа CPU с памятью

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

В первом томе книги (64 стр., 2-ой абзац снизу) Вы говорите о том, что CPU может взаимодействовать с памятью непосредственно через шину. Вывод же программы lspci на моём ноуте в самой первой строке показывает устройcтво "DRAM Controller". В связи с этим у меня появился вопрос: действительно ли CPU работает с памятью непосредственно через шину?

С уважением!

parent From Andrey V. Stolyarov profile Wed Dec 6 15:35:58 2023 pencil

userpic

Re: Работа CPU с памятью

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

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

parent From nelson profile Thu Dec 7 09:58:01 2023 pencil

Re: Работа CPU с памятью

Вывод же программы lspci на моём ноуте в самой первой строке показывает устройcтво "DRAM Controller

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

действительно ли CPU работает с памятью непосредственно через шину

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

From Anonymous (unverified) Tue Dec 5 16:54:19 2023 pencil

загадочные звездочки

Поизучал исходники талассы. Можете меня нахер забанить и выразить в грубой форме свое личное отношение к принадлежности моих близких родственников к экстремистской организации ЛГБТ, но, пожалуйста, дайте ответ по существу. Какой философией вообще руководствуются программисты, когда пишут const char *const *argv вместо const char** const argv или const char* const argv[]? Спасибо.

parent From Andrey V. Stolyarov profile Tue Dec 5 19:49:28 2023 pencil

userpic

Re: загадочные звездочки

А что, вам ваши варианты кажутся менее загадочными? А мне — нет, особенно тот, что со скобками.

parent From Anonymous (unverified) Tue Dec 5 20:16:38 2023 pencil

Re: Re: загадочные звездочки

Для меня очевидно, что звездочка относится к типу, а не к имени. С точки зрения здравого смысла я не могу на причин, по которым ее приклеивают к имени. То, что вам так не кажется, я уже понял, когда изучал код. Вопрос — почему.

parent From Andrey V. Stolyarov profile Tue Dec 5 22:42:30 2023 pencil

userpic

Re: загадочные звездочки

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

С приклеиванием звёздочки всё намного проще. Если привыкнуть к вот этой вот мысли, что звёздочка есть часть типа, то рано или поздно рука сама собой напишет вот так:

    int* a, b, c;

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

parent From Anonymous (unverified) Tue Dec 5 23:48:13 2023 pencil

Re: Re: загадочные звездочки

Если честно, я поосторожничал слишком подробно формулировать свой вопрос. У меня сложилось представление о сложившейся традиции приклеивания звездочки к имени как о неком самоочевидном решении: во всей классической литературе по С и С++ по умолчанию используется приклеивание звездочки к имени, равно как и в огромной части исходников крупных проектов вроде операционных систем. И нигде нет абсолютно никаких комментариев — зачем вообще так делать. Лично для меня самоочевидным является как раз тот факт, что звездочка — часть синтаксиса, относящаяся к описанию именно типа, но никак не имени, и никакого разумного применения, кроме множественного объявления указателей в одну строку, не имеет. Да, синтаксис позволяет так делать, но не обязывает. Более того, приклеивание звездочки к имени нарушает монолитность базовой синтаксической конструкции {тип} {имя}.
В приведенном примере с использованием квалификатора const между типом char** и именем argv это особенно заметно. Читаю код, вижу char** — сразу понятно, что это указатель на указатель, дальше const — адрес константный, дальше имя argv — сразу понятно, что происходит, потому что есть логичная и последовательная синтаксическая конструкция объявления указателя.
В случае с конструкцией char *const *argv, несмотря на ее полную работоспособность, я бы не смог объяснить третьему лицу, почему именно так было решено сформировать данный фрагмент кода. И себе бы не смог.
И получается, что какое-то невообразимое количество специалистов значительно более высокого, чем мой, уровня компетенции выбрали в качестве правила использовать стиль, который с точки зрения логики и здравого смысла нужно было применять в качестве исключения при множественных объявлениях указателей (которое к тому же легко обойти — вряд ли у кого-то отсохнут руки при объявлении группы указателей в несколько строк). Собственно, сей факт не дает мне покоя — все пытаюсь понять, со мной что-то не так или с миром. Статистика говорит, что со мной, но логика — вещь упрямая.

parent From Andrey V. Stolyarov profile Wed Dec 6 00:51:57 2023 pencil

userpic

Re: загадочные звездочки

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

> кроме множественного объявления указателей в одну строку

И что? Мало? Я вам объяснил, почему так, не устраивает объяснение — это уже не мои проблемы. Весь мир, как видите, считает, что совсем даже не мало, но мир смирился с тем, что Си таков, каков он есть, а вы, похоже, до этого ещё не созрели. Так или иначе, каждую переменную на отдельной строчке описывать бывает весьма и весьма неудобно, а помнить, что простые int'ы так можно описывать, а указатели на них вроде бы тоже можно, "но лучше не надо" — это так себе идейка.

Далее, вот это вот ваше

> Читаю код, вижу char** — сразу понятно, что это указатель на указатель

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

Впрочем, вы же вроде C++ упоминали, вот представьте, что у вас есть указатели (много разных) на какую-нибудь структурку mystr, и вам до усрачки потребовалось в функцию передать ссылку на такой указатель. Ну, вот по ссылке указатель передать, не по значению, и не указатель на указатель, а вот по ссылке. Если упорно пытаться, игнорируя правила языка, применять эту вашу "логику" (т.е. вопреки объективной реальности продолжать верить в розовых пони), то может показаться, что писать надо вот так:

    void f(mystr &* a)  // вот тут-то вам компилятор и выскажет, гм...
    {
        // ...
    }

тогда как на самом деле правильно будет наоборот:

    void f(mystr *& a)
    {
        // ...
    }

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

> я бы не смог объяснить третьему лицу

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

Вот просто надо понять одну простую вещь:

> приклеивание звездочки к имени нарушает монолитность базовой синтаксической конструкции {тип} {имя}.

вы эту "базовую синтаксическую конструкцию" выдумали сами, а в языке Си её нет. Ну вот такой вот он.

Ну и, чтобы два раза не вставать,

> И нигде нет абсолютно никаких комментариев — зачем вообще так делать

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

parent From gg (unverified) Tue Dec 26 00:38:19 2023 pencil

Re: Re: Re: загадочные звездочки

На мой взгляд тут действительно помогает смотреть на объявления следующим образом:

    some_basic_type expression_with_identifiers;

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

Если помнить про то, что запятая является арифметической операцией, то все становится на свои места (по крайней мере в большинстве случаев).

Например:

    int *x, y, (*f)(char), z[2], (*a)[2];

Чтобы всё выражение имело тип int, надо чтобы и *x, и y и и (*f)(char), и т.д. вычислялись в выражение типа int. Чтобы *x вычислялся в int надо, чтобы x был указателем на int, это и есть тип x. Чтобы (*f)(char) вычислялось в int, надо чтобы после разыменовпния f и применения к char получался int, т.е. f должен иметь тип "указатель на функцию из char в int". И так мы находим типы для всех идентификаторов в выражении.

parent From Andrey V. Stolyarov profile Tue Dec 26 00:52:24 2023 pencil

userpic

Re: загадочные звездочки

А на z[2] этот принцип не поломается? Ведь в массиве z нет элемента с индексом 2.

parent From Anonymous (unverified) Tue Dec 26 07:19:14 2023 pencil

Re: Re: загадочные звездочки

В этом случае, насколько я понимаю, двойку надо читать как "целое число меньше 2". Т.е. чтобы z при индексировании целым числом меньше 2 давало int, надо чтобы z был массивом int из двух элементов.

parent From Anonymous 2 (unverified) Wed Dec 6 04:37:02 2023 pencil

Re: Re: загадочные звездочки

Я не ТС, но как насчёт такого предложения:

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

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

parent From Andrey V. Stolyarov profile Wed Dec 6 13:43:33 2023 pencil

userpic

Re: загадочные звездочки

> Если в объявлении типа

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

> Если в объявлении типа есть хотя бы одна звёздочка, то каждая переменная должна быть на отдельной строке

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

> с комментарием, объямсняющим что это за фигня?

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

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

> даже не хочу пытаться читать эти ваши двойные константы

А вот тут вы с моей стороны поддержки не найдёте. К языку Си опасно легкомысленное отношение.

parent From Alejandro profile Wed Dec 6 05:40:55 2023 pencil

Re: загадочные звездочки

> const char *const *argv

> вместо

> const char** const argv

Кхм, извините, но вы понимаете, что это не совсем одно и то же!? Вот кстати и вся философия :)

parent From Andrey V. Stolyarov profile Wed Dec 6 13:38:53 2023 pencil

userpic

Re: загадочные звездочки

Позор на мои седины, реально слона не заметил O_o Ну то есть я попросту перепутал эту ситуацию с той, где местами меняются const и имя базового типа, ну там

   const int *p1;
   int const *p2;

Эти-то, насколько я понимаю, всё-таки одинаковые.

parent From nelson profile Wed Dec 6 14:11:38 2023 pencil

Re: загадочные звездочки

Какой философией вообще руководствуются программисты, когда пишут const char *const *argv вместо const char** const argv

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

parent From Andrey V. Stolyarov profile Wed Dec 6 15:37:48 2023 pencil

userpic

Re: загадочные звездочки

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

parent From nelson profile Wed Dec 6 16:20:29 2023 pencil

Re: Re: загадочные звездочки

Я думал, человек не понимает явления "указатель на указатель", но выше он, вроде как, сам прокомментировал этот свой char**. Кажется, тут банальные загоны по "красоте синтаксиса".

parent From Andrey V. Stolyarov profile Wed Dec 6 17:20:34 2023 pencil

userpic

Re: загадочные звездочки

По-моему, там ещё банальнее, он просто не разобрался, как в Си на самом деле устроены сложные описания. Ну, я ему сслыку на нужный параграф дал, дальше уже его дело :-)

From Anonymous (unverified) Tue Dec 5 15:46:01 2023 pencil

main без указания типа и без return

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

$ cat hello.c 
#include 

main()
{
  printf("hello, world\n");
}
$ gcc hello.c -ansi
$ ./a.out 
hello, world
$ 

Протестировано на gcc 12.3.1

parent From Andrey V. Stolyarov profile Tue Dec 5 19:42:53 2023 pencil

userpic

Re: main без указания типа и без return

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

parent From Anonymous (unverified) Wed Dec 6 05:21:23 2023 pencil

Re: Re: main без указания типа и без return

... никогда нельзя запускать без флагов -Wall -g

ИМХО: в книге очень не хватает указания, что -Wall -- это сокращение от "Warnings all", а не какая-то загадочная стена, которую умный дядя написал всегда писать, чтобы ошибки показывались. :)

parent From Andrey V. Stolyarov profile Wed Dec 6 13:34:18 2023 pencil

userpic

Re: main без указания типа и без return

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

В TODO я этот момент занёс, но вот будет ли когда-то новое издание — это зависит, увы, не от меня.

parent From Anonymous (unverified) Wed Dec 6 17:42:02 2023 pencil

Re: Re: Re: main без указания типа и без return

Я когда впервые узнал про эти флажки в реальном проекте, то я не переводил это как загадочная стена, так как видя другие флаги, -Werror например, это уже воспринимается правильно. Видать когда этот флаг единственный, начинающийся с W, то реально можно что-то не то подумать)

parent From Andrey V. Stolyarov profile Wed Dec 6 18:17:00 2023 pencil

userpic

ну за$$али со своими шляпами

> видя другие флаги, это уже воспринимается правильно

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

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

parent From Oliver (unverified) Sat Dec 9 12:56:22 2023 pencil

Re: main без указания типа и без return

На самом деле в книге cказано, что "-Wall,...включает все разумные предупрежления". Из данной фразы, если знать английский, можно сделать предположение, что -Wall расшишфровывается как "warnings all". Это - история о том, как важно знать английский в программировании.

parent From Andrey V. Stolyarov profile Sat Dec 9 17:23:53 2023 pencil

userpic

Re: main без указания типа и без return

На самом деле тут знание английского работает в обе стороны. Что wall — это по-английски "стена", вспомнить намного проще, нежели догадаться, что это -W от слова warnings, и all "все", тем более что они не так чтоб совсем все.

parent From Anonymous (unverified) Mon Dec 18 14:29:12 2023 pencil

Re: Re: main без указания типа и без return

Some programmers like to use the GCC ‘-Wall’ option, and change the code whenever it issues a warning. If you want to do this, then do. Other programmers prefer not to use ‘-Wall’, because it gives warnings for valid and legitimate code which they do not want to change. If you want to do this, then do. The compiler should be your servant, not your master. 

(C) GNU Coding Standards

Вообще, вышесказанное звучит логично. Кто-то не приводит void* к нужному типу и компилятор просто усыпается предупреждениями в stderr.

parent From Andrey V. Stolyarov profile Mon Dec 18 16:34:09 2023 pencil

userpic

Re: Re: Re: main без указания типа и без return

First off, I’d suggest printing out a copy of the GNU coding standards, and NOT read it. Burn them, it’s a great symbolic gesture.

Это, если чо, Linus свет наш Torvalds, Linux kernel coding style

> Кто-то не приводит void* к нужному типу

А в каком языке? Или вы тоже из тех, кто не помнит границ между Си и C++?

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

Да неужели, блядь? Если gcc работает в режиме чистого Си, то никаких предупреждений на такое он не выдаёт. А в режиме C++ это вообще-то ошибка, а не предупреждение, такое преобразование в C++ запрещено. И, между прочим, правильно запрещено, в чистом Си это запрещать тяжело ровно по одной причине — malloc возвращает void*, но в C++ этой проблемы нет, new возвращает ровно то, что надо.

И вот что, быстро нахер с моего сайта с такими заявочками. Быстро, я сказал.

From Anonymous (unverified) Tue Dec 5 15:43:48 2023 pencil

массивы

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

parent From Andrey V. Stolyarov profile Tue Dec 5 19:46:36 2023 pencil

userpic

Re: массивы

У меня встречный вопрос: какова длина вашей самой длинной программы на Паскале?

parent From Anonymous (unverified) Wed Dec 6 13:58:39 2023 pencil

Re: Re: массивы

Не использую Паскаль, пишу обычно на плюсах или чистом Си.

parent From Andrey V. Stolyarov profile Wed Dec 6 15:24:21 2023 pencil

userpic

Re: массивы

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

parent From Anonymous (unverified) Sat Dec 9 21:54:31 2023 pencil

Re: массивы

В C массивов как типа нет, тип int arr[]; аналогичен int *arr; а сама [] является синтаксическим сахаром для сложения.

parent From Andrey V. Stolyarov profile Sat Dec 9 22:41:16 2023 pencil

userpic

ага, ну конечно

> тип int arr[];

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

> аналогичен int *arr;

ни фига не аналогичен, смотрите сами:

int a[20];
int *p;

на досуге посмотрите, во-первых, чему будет равно sizeof(a) и sizeof(p), а во-вторых, что получится из &p и из &a (тех, кто решил вообще сделать возможным применение взятия адреса к имени массива, я бы своими руками в дерьме утопил с неземным удовольствием, но факт есть факт).

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

From Anonymous (unverified) Sun Dec 3 14:54:54 2023 pencil

Информатика

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

parent From Andrey V. Stolyarov profile Sun Dec 3 18:15:40 2023 pencil

userpic

Re: Информатика

Дело не в книгах, дело в учителях. Я не вижу, откуда бы вдруг в школе появились в достаточном количестве педагоги, способные адекватно преподавать информатику — особенно если учесть, что сейчас таких людей нет ни среди авторов школьных учебников по информатике, ни среди тех, например, кто клепает варианты для ЕГЭ, ни среди тех, кто принимает "решения" по программе, в смысле что изучать, чего не изучать.

Про литературу, историю, обществознание и прочую гуманитарщину полностью согласен, сам не раз это говорил.

From Anonymous (unverified) Wed Nov 29 13:37:11 2023 pencil

Кодогенерация в Си

В ANSI C (который успел стать "классикой", после фактического вымирания K&R) ещё нет конструкции препроцессора

##

, которая позволяет "приклеивать" аргументы макроса к тексту. (Такое появилось только в C99, использование которого весьма сомнительно).

В связи с чем вот какой вопрос: а как писать шаблоны на Си? В C99 можно написать

#define T
#include "some_template.h"

внутри которого будет созданы структуры и функции вида some_##T (например some_int, some_float и т.п.).

Насколько я понял, раньше это решали кодогенерацией. Как это предпочитаете делать Вы? Много слышал о GNU Autogen, но никогда не пробовал. Кто-то говорит, что генерят скриптами.

parent From Andrey V. Stolyarov profile Wed Nov 29 13:56:19 2023 pencil

userpic

Re: Кодогенерация в Си

> ещё нет конструкции

С чего бы это вы так уверены?

crocodil@trex:~/work/misc$ cat xx.c
#include <stdio.h>
#define J(x, y)  (x##y)
int main()
{
    int a7 = 49, a15 = 225;
    printf("%d %d\n", J(a, 7), J(a, 15));
    return 0;
}
crocodil@trex:~/work/misc$ gcc -ansi -pedantic xx.c
crocodil@trex:~/work/misc$ ./a.out 
49 225
crocodil@trex:~/work/misc$ 

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

> как писать шаблоны на Си?

мой ответ в любом случае совершенно однозначен: никак. Независимо от того, возможно это или нет.

> раньше это решали кодогенерацией

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

> Как это предпочитаете делать Вы?

Ну, ответ очевиден, но на всякий случай повторю: никак.

> GNU Autogen, но никогда не пробовал

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

parent From Anonymous (unverified) Thu Nov 30 12:33:34 2023 pencil

Re: Re: Кодогенерация в Си

Прошу прощения, был невнимателен. Действительно, оператор ## есть в ANSI C. (страница 90 снизу, например вот здесь https://kremlin.cc/k&r.pdf)

> мой ответ в любом случае совершенно однозначен: никак. Независимо от того, возможно это или нет.

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

Кодогенерация в Си++ тоже очень важный аспект, который не понятно как решать. Вот приходит мне по сети, например, XML:

OK

Поле status может быть только OK, FAILED, UNDEFINED. В программе используется enum status {ok, failed, undefined}; Не писать же превращение строки в перечисление и обратно руками для каждого случая? Тут одно поле, а в реальном проекте 200. Куча ненужной, тупой работы.

parent From Andrey V. Stolyarov profile Thu Nov 30 15:02:49 2023 pencil

userpic

Re: Re: Re: Кодогенерация в Си

> оператор ##

Не оператор, а операция, сколько можно повторять, забаню нахер. "Оператор" -- это statement.

> Предлагаете писать реализацию красно-черных деревьев каждый раз заново для каждой структуры?

Именно. Больше того, использование контейнеров недопустимо вообще, в принципе, в том числе и в C++, где с шаблонами всё в порядке. Мне вообще-то непонятно, откуда на моём сайте появляются персонажи, которым такие вещи приходится объяснять? Я вроде сюда такое не звал.

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

А попробуй угадать, в скольких местах в Талассе потребовалась сортировка, отличная от пузырька? Так я тебе скажу: в одном, причём это была сортировка массива интов. Потребовалась она мне при генерации одной из тех служебных страничек веб-интерфейса, которые видны только администратору сайта, а при генерации самого сайта вообще не пришлось ничего сортировать такого, где в номальной жизни может появиться больше десятка элементов (а если специально пытаться сделать бяку — можно сотворить около 50'000, для пузырька это неприятно, но не смертельно). Да, итоговая сортировка (qsort) написана руками, естественно. Как и пузырёк везде, где он таки потребовался, таких мест там тоже, гм... полтора.

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

Чисто для сравнения: в коде друпала и в SQL-запросах сплошное sort by, и в самих php-шках то и дело сортировка дёргается. Итоговое г$$ работает со скоростью варёной черепахи, ОНО ухитрялось некоторые служебные страницы генерить дольше, чем Таласса перегенерирует весь сайт целиком.

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

> Кодогенерация в Си++ тоже очень важный аспект, который не понятно как решать.

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

> приходит мне по сети, например, XML:

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

> Не писать же превращение строки в перечисление и обратно руками для каждого случая?

Только так, и никак иначе.

> Куча ненужной, тупой работы.

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

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

parent From Anonymous (unverified) Thu Nov 30 15:35:38 2023 pencil

Re: Re: Re: Кодогенерация в Си

> Куча ненужной, тупой работы

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

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

parent From Andrey V. Stolyarov profile Thu Nov 30 17:28:31 2023 pencil

userpic

Re: Кодогенерация в Си

Справедливости ради — я не сказал бы, что copy-paste кусков кода такая уж безобидная практика.

P.S. здесь абзацы разделяются пустыми строками, а не переводами строк. написано же внизу в форме.

parent From nelson profile Thu Nov 30 22:00:26 2023 pencil

Re: Re: Re: Кодогенерация в Си

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

Утилиты для работы с текстом? Не, не слышали?

Кодогенерация в Си++

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

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

parent From Andrey V. Stolyarov profile Thu Nov 30 22:17:53 2023 pencil

userpic

Про гуглозомбоящик

Видел-видел этот ролик, заодно предлагаю затестить обновочку: p9wBNOJH59Q

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

parent From nelson profile Fri Dec 1 16:23:56 2023 pencil

Re: Про гуглозомбоящик

Ну нормально, можно видео посмотреть без жабаскрипта.

parent From Andrey V. Stolyarov profile Fri Dec 1 17:49:28 2023 pencil

userpic

Re: Про гуглозомбоящик

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

parent From Anonymous (unverified) Fri Dec 1 20:24:57 2023 pencil

Re: Re: Про гуглозомбоящик

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

Мнэ-э-э...

$ mpv ссылка

Можно ещё меньше, у меня кейбиндинг в оконном менеджере на mpv $(xsel) повешен.

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

Конечно, в системе должен быть установлен (помимо, собственно, mpv) какой-нибудь youtube-dl или yt-dlp. И он на питоне, что тоже не сахар. Но, всё-таки, к питону я гораздо меньше неприязни испытываю, чем к монстробраузерам.

parent From nelson profile Fri Dec 1 21:21:48 2023 pencil

Re: Re: Про гуглозомбоящик

Да, вроде, не так и много - подсунуть ссылку yt-dlp да и всё:

dl -S 'height:480' ссылка

Но использовать, понятное дело, в bash-скрипте.

parent From Anonymous (unverified) Sat Dec 2 12:11:23 2023 pencil

Re: Re: Re: Про гуглозомбоящик

У меня, к примеру, yt-dlp не пашет без VPN. Как итог - заморочки с этим

parent From nelson profile Sat Dec 2 14:17:56 2023 pencil

Re: Re: Re: Re: Про гуглозомбоящик

Странно. Вы, случаем, не через прокси в интернет ходите?

parent From Anonymous (unverified) Sat Dec 2 15:57:04 2023 pencil

Это действительно странно

Ни прокси, ни каких бы то ни было сторонних приблуд. Российский IP.

parent From Anonymous (unverified) Sat Dec 2 09:07:48 2023 pencil

Re: Про гуглозомбоящик

Только он картинки через HTTPS подсасывает. Стоит ли при создании ссылок этой CGI программой превьюшки складывать на сервер и отдавать как контент этого сайта?

parent From Andrey V. Stolyarov profile Sat Dec 2 13:05:34 2023 pencil

userpic

Re: Про гуглозомбоящик

> картинки через HTTPS подсасывает

так и сами видосики тоже

> превьюшки складывать на сервер и отдавать как контент этого сайта?

Это довольно нетривиальный вариант. Во-первых, как их загружать на сервер? Сейчас превьюшку вытягивает браузер клиента, а CGI-программа ему просто говорит, откуда её вытянуть (вставляя соответствующий тэг в генерируемую страничку), так что эта картинка ни в какой момент на сервере не появляется. Чтобы её вытянуть на сервер, нужно из CGI-программы либо дёргать что-то внешнее (например, тот же wget или lftpget), что потребует изрядных плясок с бубнами, либо учить саму эту программу быть https-клиентом, что вообще не вполне реально, учитывая принципиально зафиксированную недопустимость зависимости от внешних библиотек (нет, весь OpenSSL в дерево исходников — это не вариант, а зависимость от него как от внешней библиотеки — тем более не вариант).

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

В общем, проще тогда вообще картинку не показывать. Что, кстати, решается без модификации CGI-программы, просто выкинуть этот тэг из шаблона страницы (который, естественно, в конфигурационном файле).

parent From Глеб profile Sat Dec 2 12:19:33 2023 pencil

Обновочка-многоходовочка =)

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

Ставлю 12 либертарианцев из 10.

http://www.infoviolence.org/ytid.cgi/dQw4w9WgXcQ

parent From Andrey V. Stolyarov profile Sat Dec 2 13:14:38 2023 pencil

userpic

Re: Обновочка-многоходовочка =)

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

Исходники того CGI'ника будут вскоре опубликованы, так что есть шанс, что мой несчастный сайтик будет не единственным бутылочным горлышком, через которое все кому не лень начнут ходить за тюбиковыми видосами.

parent From Глеб profile Sat Dec 2 17:15:08 2023 pencil

Я обеими руками за, что вы!!

Мой предыдущий комментарий был сопровожден со злорадным потиранием ладошек, но никак ни в вашу сторону ^.^

Отчего, по всей видимости, я не удостоился написать все нижестоящее.

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

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

Посему - благодарю!

P.S. Можете не раскрывать этот комментарий, мне хотелось поддержать вашу инициативу, Андрей Викторович :)

parent From Anonymous (unverified) Fri Dec 1 13:56:56 2023 pencil

Re: Кодогенерация в Си

>cтиле "теперь код "писать" будет ИИ

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

parent From Andrey V. Stolyarov profile Fri Dec 1 15:37:14 2023 pencil

userpic

Re: Кодогенерация в Си

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

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

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

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

parent From nelson profile Fri Dec 1 22:19:49 2023 pencil

Re: Re: Кодогенерация в Си

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

например даже ткацкий станок, сразу скашивает часть рабочих мест

Он скашивает не просто часть рабочих мест, а рабочие места с низкими требованиями к квалификации работников.

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

Проснулись, называется ) А нефиг было в бодишопах "работать" "операторами стековерфлоу". Надеюсь, вы поняли, кого именно заменит ИИ.

From Anonymous (unverified) Wed Nov 22 09:42:12 2023 pencil

Антинатализм

Здравствуйте, как относитесь к антинатализму? Считаете ли вы акт рождения/зачатия человека, насилием по отношению к рожденному со стороны его родителей?

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

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

parent From Andrey V. Stolyarov profile Wed Nov 22 10:18:22 2023 pencil

userpic

Re: Антинатализм

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

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

Вопрос лишь в том, какие из этого следует сделать выводы.

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

parent From Anonymous (unverified) Wed Nov 22 10:35:41 2023 pencil

Re: Re: Антинатализм

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

parent From Andrey V. Stolyarov profile Wed Nov 22 10:55:13 2023 pencil

userpic

Re: Антинатализм

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

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

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

parent From Anonymous (unverified) Wed Nov 22 15:19:11 2023 pencil

Re: Re: Антинатализм

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

parent From Andrey V. Stolyarov profile Wed Nov 22 15:41:15 2023 pencil

userpic

Мысль не нова

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

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

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

parent From Anonymous (unverified) Wed Nov 22 17:03:00 2023 pencil

Re: Мысль не нова

Я не против бессмертия) Но меня пугают возможные метаморфозы личности от этого.

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

parent From Andrey V. Stolyarov profile Wed Nov 22 19:43:51 2023 pencil

userpic

Re: Мысль не нова

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

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

parent From Alejandro profile Wed Nov 22 20:05:48 2023 pencil

Re: Re: Мысль не нова

> возможные метаморфозы личности

Проще говоря, "вы зае... устанете столько жить" :)

> а на главную сайта

Спасибо за сэкономленное (потенциально) время :-) Но что там связанного с этническими моментами?

parent From Andrey V. Stolyarov profile Wed Nov 22 20:38:18 2023 pencil

userpic

Re: Мысль не нова

Для тех, кто начал уставать жить, существует очень много вариантов развлечений, сопряжённых с риском для жизни. Я вон в своё время с парашютом прыгал, пока ногу не сломал, и даже после этого немножко ещё попрыгал, но мотивацию утратил и в итоге бросил, напрыгав 309 прыжков. Но вообще-то парашютизм — как ни странно, довольно безопасное занятие. А вот в области спортивного туризма у меня получилось интереснее, там я дошёл до КМС (увы, грядущей весной протухнет, оно на три года выдаётся), и пару раз в водных походах реально был на грани летального исхода, типа, на тоненького, то есть спасли товарищи по группе, но могли вполне и не спасти. Если жизнь по времени потенциально не ограничена, то вот такие вот мероприятия, сопряжённые с небольшим вроде бы риском, чисто вероятностно обеспечат не слишком долгую жизнь, но при этом можно будет не обращать внимания на циферку текущего возраста — по-моему, это бесценно.

Что касается сайта — ну, типа, сходите на главную (в смысле с пустой локальной частью URL'а, там кликните по башне, дальше можете полюбоваться. Как относиться к представленным там точкам зрения на разные вопросы — личное дело каждого, с чем-то я даже согласен :-)

parent From Alejandro profile Wed Nov 22 20:52:14 2023 pencil

Re: Re: Мысль не нова

Ну так это вы :-) А сколько людей не сделали на свете не сделали вообще ни одного прыжка с парашютом, и даже CMS'ки для собственного сайта не написали :) От такой скуки реально можно при случае устать.

> там кликните по башне, дальше можете полюбоваться

А, нашёл. На свою голову...

parent From Andrey V. Stolyarov profile Wed Nov 22 22:04:51 2023 pencil

userpic

Re: Мысль не нова

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

From Proton (unverified) Wed Nov 22 08:06:22 2023 pencil

Книги

Здравствуйте, Андрей Викторович, очень нравятся ваши книги "Программирование введение в профессию". Подскажите пожалуйста какой-нибудь аналог ваших книг на английском языке. Чтобы прям излагалось всё с полнейшего нуля и с простой подачей. Спасибо!)

parent From Andrey V. Stolyarov profile Wed Nov 22 10:22:11 2023 pencil

userpic

Re: Книги

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

From Anonymous (unverified) Mon Nov 20 21:12:27 2023 pencil

Что почитать из Лема

Андрей Викторович, добрый день.

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

Что бы вы посоветовали почитать? Хочу приобщиться.

parent From Andrey V. Stolyarov profile Mon Nov 20 22:20:01 2023 pencil

userpic

Re: Что почитать из Лема

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

Начните с рассказов, сборники "Кибериада", "Сказки роботов", "Звёздные дневники Ийона Тихого", "Рассказы о пилоте Пирксе". Из более крупной формы — ну, "Непобедимый", например. Потом уже, пожалуй, в любом порядке "Осмотр на месте", "Дознание", "Футурологический конгресс", да тот же "Солярис", в принципе. Ну и где-то тут "Возвращение со звёзд". Можно и раньше. А уже после них — "Мнимая величина", "Абсолютная пустота", ну и "Больница преображений" (на всякий случай: это вообще не фантастика).

А вообще, честно говоря, фигня это всё, просто берите всё, что под руку попадётся, и читайте. Лем стоит потраченного на него времени.

From Anonymous (unverified) Sun Nov 19 09:00:33 2023 pencil

Текстовый интерфейс

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

parent From Andrey V. Stolyarov profile Sun Nov 19 14:22:27 2023 pencil

userpic

Re: Текстовый интерфейс

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

From Anonymous (unverified) Sun Nov 19 07:04:42 2023 pencil

Книги по Linux/Unix

Добрый день, Андрей Викторович. Не могли бы вы посоветовать дополнительную литературу для изучения Linux/Unix? Или второго тома в целом достаточно?

parent From Andrey V. Stolyarov profile Sun Nov 19 14:29:58 2023 pencil

userpic

Re: Книги по Linux/Unix

Честно говоря, вопрос не вполне понятен. Достаточно для чего? Для программирования в ядре, конечно, не достаточно. Для построения датацентров тоже, наверное, недостаточно. Да даже для написания программ с GUI недостаточно, хотя тут третий том, возможно, спасёт :-)

Я больше скажу, моих книг "недостаточно", чтобы просто перенести всю свою работу в тот же Linux, ведь в них не описано, как поставить Linux — и не может быть написано, поскольку конкретика зависит от дистрибутива, а дистрибутивов этих — сотни.

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

parent From Anonymous (unverified) Sun Nov 19 18:33:30 2023 pencil

Re: Книги по Linux/Unix

https://download.freebsd.org/doc/en/books/handbook/handbook_en.pdf

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

parent From Andrey V. Stolyarov profile Sun Nov 19 20:09:42 2023 pencil

userpic

Re: Книги по Linux/Unix

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

parent From Oliver (unverified) Mon Nov 20 08:44:55 2023 pencil

Re: Книги по Linux/Unix

Установите себе Slackware, и в Интернете можно найти руководство, книжку по Slackware. Кроме книг и документации в Интернете, в самой Slackware есть документация в /usr/doc/. По мне, это - хороший способ именно изучить Линукс.

parent From Михаил Ш. (unverified) Tue Nov 21 11:44:23 2023 pencil

Re: Книги по Linux/Unix

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

parent From Andrey V. Stolyarov profile Tue Nov 21 12:19:33 2023 pencil

userpic

Re: Книги по Linux/Unix

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

From Anonymous (unverified) Fri Nov 17 08:18:22 2023 pencil

FAQ. Многопоточное программирование

Здравствуйте, Андрей Викторович. Можно ли добавить в FAQ обсуждение про многопоточное программирование?

parent From Andrey V. Stolyarov profile Fri Nov 17 13:04:36 2023 pencil

userpic

Re: FAQ. Многопоточное программирование

Так? Или какое-то другое ещё?

parent From Anonymous (unverified) Tue Nov 21 08:56:40 2023 pencil

From Anonymous (unverified) Tue Nov 14 09:33:06 2023 pencil

Объективная реальность математики?

Не знаю, спрашивали у вас это в комментариях или нет, но вот такой вопрос есть.

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

Они существуют объективно и математики их только открывают или они являются лишь плодом их размышлений и математики их создают?

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

Так всё-таки была арифметика изобретена или открыта?

parent From Andrey V. Stolyarov profile Tue Nov 14 11:23:15 2023 pencil

userpic

Re: Объективная реальность математики?

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

parent From Anonymous (unverified) Wed Nov 15 11:54:48 2023 pencil

Re: Re: Объективная реальность математики?

Но кстати и с технологиями всё не так просто.

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

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

parent From Andrey V. Stolyarov profile Wed Nov 15 13:58:44 2023 pencil

userpic

Re: Объективная реальность математики?

> Палка-копалка — это изобретение или открытие того, что с палкой землю копать легче

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

> Огонь — это изобретение или открытие уже существующего класса химических реакций?

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

> А колесо?

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

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

parent From rkvg-es (unverified) Fri Nov 17 01:05:34 2023 pencil

Re: Объективная реальность математики?

> Так всё-таки была арифметика изобретена или открыта?

Ни то, ни другое. Это некорректный вопрос, точнее его постановка. Возьмите любой естественный человеческий язык. Его главная и, в общем-то, единственная функция - описательная. Был ли он изобретён или открыт? Очевидно, ни то, ни другое. Я недаром оговорился про "естественность", потому что есть искусственные (плановые) языки вроде пресловутого эсперанто.

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

Скажем, например, слово "кошка". О чём идёт речь? О домашней кошке, о тигре, об абордажной кошке, об альпинистской или какой-нибудь ещё? И в естественных языках эта проблема НЕРЕШАЕМА принципиально. И единственный доступный людям способ её хоть как-то сводить к приемлемой, оставаясь в рамках своего языка - обыкновенная информационная избыточность. То есть говорить вместо "кошка" нечто вроде "животное ко́шка, на латыни называемое felis catus, живущее вместе с человеком, вес 3 килограмма, зовут Юлей". Но здесь моментально возникает проблема масштаба: устранив (и то не до конца) неоднозначность понятия "кошка", мы ввели гору других понятий. Что такое "латынь"? Что такое "человек"? Что такое "килограмм"?

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

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

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

Или, например, можно взять историю Марджори Райс: https://en.wikipedia.org/wiki/Marjorie_Rice Её пример показателен тем, что для своего открытия она буквально изобрела собственный формализм, так как не обладала знанием общепринятой академической записи. Да, весьма запутанный и кривой. Но всё же формализм. Исключение самой возможности думать не в ту сторону. Сюда же можно отнести и математические нотации прошлого: https://en.wikipedia.org/wiki/History_of_mathematical_notation

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

parent From Anonymous (unverified) Sun Dec 3 17:37:48 2023 pencil

Несогласен!

> Я недаром оговорился про "естественность", потому что есть искусственные (плановые) языки вроде пресловутого эсперанто.

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

Я Аноним.
I am Anonymous.
Mi estas Anonimo.
Anonymus sum.

Есть другой род языков -- языки формальные: машинные (язык Си, например), математика (которая, кстати, позволяет записывать одно и то же тоже по-разному, например dy/dx = f'(x) = lim(f(x + delta_x)/delta_x), delta_x -> 0) и др. На них общаться с другими людьми проблематично, но, можно "общаться" с компьютером или проводить формальные размышления.

Что такое формальные размышления? Это способ заставить мозг думать определенным образом, чтобы эти рассуждения выглядели доказательно. Но часто мы можем провести рассуждения и без этого формального аппарата, чтобы получить тот же результат. Не надо решать физическую задачу, чтобы понять что будет с человеком, на которого наедет паровоз со скоростью 60 км/ч. Не надо заниматься интегрированием объёма тела вращения, чтобы понять, что объем шара меньше объёма куба (при условии равенства диаметра и стороны соответственно).

> Скажем, например, слово "кошка". О чём идёт речь? О домашней кошке, о тигре, об абордажной кошке, об альпинистской или какой-нибудь ещё? И в естественных языках эта проблема НЕРЕШАЕМА принципиально.

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

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

Но скажите это на английском (или, например, на эсперанто) и в ответ вам покрутят пальцем у виска: "Это рысь, какая кошка, чувак?"

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

Это значит либо автор не умеет писать, либо он такой смысл вкладывает специально. Учебник математики все одинаково понимают?

>Теперь возвращаясь к Вашему вопросу. Возьмём, например, такой математический объект, как матрицы. Можно ли считать без них? Можно, конечно. Просто неудобно.

Сморя что. Если у вас система из 50 линейных уравнений, держу пари, вы за.. устанете, в общем, считать определители 50-ого порядка. Сочетание методов сложения, вычитания, деления, умножения, подстановки, и, возможно Гаусса (там тоже матрицы?), позволяет удобнее решить задачу, чем с использованием метода Крамера.

parent From QR (unverified) Mon Dec 11 10:10:21 2023 pencil

Re: Несогласен!

Сочетание методов сложения, вычитания, деления, умножения, подстановки, и, возможно Гаусса (там тоже матрицы?), позволяет удобнее решить задачу, чем с использованием метода Крамера.

Когда европецы матрицы назвали "матрицами" (в середине XIX века), Гаусс уже работал в области, которую сейчас бы назвали мат.физикой. Но, конечно, прямоугольные таблички с числами использоволи и раньше, и не всегда с алгебраическими целями, а, например, с магическими нумерологическими (Sigillum Saturni и квадраты других планет)

盈不足 Ин бу цзу, «Избыток-недостаток» — Решение систем из двух линейных уравнений с помощью «правила ложного положения».

方程 Фан чэн — Решение систем произвольного числа линейных уравнений.

parent From Andrey V. Stolyarov profile Mon Dec 11 12:42:52 2023 pencil

userpic

Кстати, о пернатых...

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

parent From Anonymous (unverified) Thu Dec 14 16:04:27 2023 pencil

Re: Кстати, о пернатых...

Насколько я помню Данко П.Е. ("высшая математика в упражнениях и задачах") предлагал это делать рекурсивно.

P.S. Посмотрел, да, ЧАСТЬ 1, ГЛАВА IV, параграф 1, "ПОНЯТИЕ ОБ ОПРЕДЕЛИТЕЛЕ n-ГО ПОРЯДКА", (любое издание: хоть четвёртое, хоть шестое) (скачать можно тут)

parent From Andrey V. Stolyarov profile Thu Dec 14 16:11:16 2023 pencil

userpic

Re: Кстати, о пернатых...

Из аннотации по ссылке:

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

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

parent From Anonymous (unverified) Fri Dec 15 18:26:42 2023 pencil

parent From Andrey V. Stolyarov profile Fri Dec 15 19:07:21 2023 pencil

userpic

Re: Я издания подобного сорта воспринимать всерьёз не готов просто категорически.

> а) почему?

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

> б) что по существу?

А что тут может быть "по существу"? Вы когда-нибудь пробовали реально посчитать через миноры определитель хотя бы для матрицы 5x5?!

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

parent From rkvg-es (unverified) Sun Jan 7 17:40:20 2024 pencil

Re: Не согласен!

Андрей Викторович, простите сердечно - я отформатировал комментарий. Теперь вроде разобрался, что здесь к чему. Для меня HTML зело непривычен просто. Если же вдруг причина отклонения комментария была в другом, то допишите в мой прошлый коммент здесь соответствующий упрёк, и я Вас больше беспокоить не буду. ___

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

Несогласен!

Ваше право! Однако "не" здесь пишется отдельно.

Вы путаете тёплое с мягким.

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

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

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

На каком бы я языке не говорил с вами, вы меня поймёте (если выучите этот язык)

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

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

А "доказательность" это какой-то сферический конь в вакууме, вещь-в-себе? Или всё же она возникает из-за устранения неоднозначностей в описании и изложении (и потому, собственно, и доказывает кому-либо что-либо)?

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

Только в том случае, когда такие рассуждения будут оперировать над формально заданными понятиями. Тогда да, получится нечто вроде "гуманитарного изложения". Грубо говоря, это когда число "1984" пишут как "одна тысяча девятьсот восемьдесят четыре". А ведь это может быть и не количественное, а порядковое числительное, и тогда нужно писать "тысяча девятьсот восемьдесят четвёртый". Именно поэтому описание любой сущности в идеале должно даваться одновременно (!) четырьмя способами. Это, в порядке уменьшения значимости:

  1. формальная запись - чтобы заведомо устранить любую неясность и разночтения;
  2. понятное описание на естественном (неформальном, гыгы) языке - чтобы помочь читающему осознать и усвоить смысл понятия;
  3. примеры - чтобы сократить время на познание и постижение правильной интерпретации описанного.
  4. очерк исторического опыта - чтобы вникнуть, почему к настоящему моменту понимание сложилось именно таким образом, а не как-нибудь иначе.
Не надо решать физическую задачу, чтобы понять что будет с человеком, на которого наедет паровоз со скоростью 60 км/ч.

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

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

Вот видите, Вам самому пришлось сослаться к формально задаваемым понятиям - диаметру и стороне - чтобы исключить кривотолки вида "объём планеты заведомо больше игрального кубика".

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

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

Т.е. на уровне ассоциаций "кошка" указывает на вид домашнего животного.

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

Но скажите это на английском (или, например, на эсперанто) и в ответ вам покрутят пальцем у виска: "Это рысь, какая кошка, чувак?"

Именно так, спасибо за лишнее подтверждение моим тезисам.

Учебник математики все одинаково понимают?

Нет, конечно. Иначе математику можно было бы выучить любому, в одиночку и по учебнику. Что, как известно, не так. Единственность правильного смысла НЕ ОЗНАЧАЕТ отсутствия иных интерпретаций. Evidence of absence is not absence of evidence. Просто все остальные в таком случае - неправильные. И роль наставника здесь в том и состоит, чтобы их отсекать от чужого разума, то есть показывать ученику, где он в своих предположениях в процессе понимания ошибается.

Если у вас система из 50 линейных уравнений, держу пари, вы за.. устанете, в общем, считать определители 50-ого порядка. Сочетание методов сложения, вычитания, деления, умножения, подстановки, и, возможно Гаусса (там тоже матрицы?), позволяет удобнее решить задачу, чем с использованием метода Крамера.

Так у меня там и написано: "просто неудобно". Вы ведь даже это процитировали. Просто не дочитали, а отповедь писать уже ринулись.

From Anonymous (unverified) Sun Nov 12 05:57:33 2023 pencil

Онтологический аргумент

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

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

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

parent From Andrey V. Stolyarov profile Sun Nov 12 10:43:08 2023 pencil

userpic

Слишком тупо

Тут существенно больше одной ошибки, просто решето. Начать вот с этого:

> Считается, что бог совершенный

Первая ошибка — вот в этом слове "считается", точнее, в вашем толковании такового. Что значит "считается"? Поскольку ни из чего внешнего это не следует, сие есть предположение. Т.е. в действительности тут говорится следующее: "Предположим, существует бог, т.е. нечто обладающее всеми положительными свойствами. Тогда бог существует". Если выкинуть конкретику, тут имеет место "Пусть существует A. Тогда существует A." Обыкновенная тавтология.

Дальше как в старом мультике: "-- Не хочу идти к кактусу, он колючий! -- Допустим, он не колючий. -- Нет, не допустим!"

Но это далеко не всё. Что такое "положительные свойства"? Вот вам парочка примеров from the real life: скажем, быть патриотом — положительное свойство? Между прочим, большинство людей считает, что да, а я вот считаю, что патриотам, причём вне зависимости от национальной принадлежности, место за пятью решётками, а лучше вообще в гробу, поскольку это именно от патриотов и войны, и терроризм. Или вот вам другой пример: "быть китайцем" — положительное свойство? Тут я свой ответ оставлю при себе :-)

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

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

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

parent From Anonymous (unverified) Sun Nov 12 13:27:43 2023 pencil

Re: Слишком тупо

> Короче, это называется гуманитарщина в плохом смысле слова: заведомая чушь, облечённая в "умные" (на самом деле просто непонятные) слова и рассчитанная на публику, не умеющую думать.

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

Я думаю, это просто что-то вроде логических парадоксов типа апорий Зенона и забавных трюков с математическим ожиданием вроде парадокса Монти-Холла и парадокса конвертов:

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

С одной стороны, вроде пофиг, менять или не менять, что там неизвестное количество, что там. С другой стороны, предположим, у вас в конверте X денег. Тогда во втором конверте или X/2 или 2*X, причём эти исходы равновероятны. Тогда математическое ожидание получается M=X/2*0.5+2*X*0.5=1.25*X > X. То есть выгодно всё-таки поменять конверт?

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

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

parent From Andrey V. Stolyarov profile Sun Nov 12 16:35:46 2023 pencil

userpic

Re: Слишком тупо

> Всё-таки на эту тему писали учёные

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

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

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

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

parent From Anonymous (unverified) Mon Nov 13 00:23:36 2023 pencil

Re: Re: Слишком тупо

Я Рене Декарта и Курта Гёделя имел ввиду. Правда Гёдель свою версию онтологического аргумента вродё публиковать вроде как не хотел из-за того что из-за этого люди могли подумать что он верующий.

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

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

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

parent From Andrey V. Stolyarov profile Mon Nov 13 09:27:23 2023 pencil

userpic

Re: Слишком тупо

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

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

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

From Anonymous (unverified) Fri Nov 10 18:09:47 2023 pencil

Оконные менеджеры

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

parent From Andrey V. Stolyarov profile Fri Nov 10 18:28:20 2023 pencil

userpic

Re: Оконные менеджеры

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

parent From some1w/the_urge2code (unverified) Thu Nov 16 09:08:12 2023 pencil

Re: Re: Оконные менеджеры

Если нужен тайлинг, dwm самый удобный (имхо, конечно) в использовании. Меньше 2к строк кода, на сайте также есть патчи от пользователей, потому что из коробки идёт только самый основной функционал. Андрей Викторович, как относитесь к suckless?

parent From Andrey V. Stolyarov profile Thu Nov 16 14:26:59 2023 pencil

userpic

Про suckless

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

parent From Anonymous (unverified) Thu Nov 16 16:19:25 2023 pencil

Про IceWM

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

parent From Andrey V. Stolyarov profile Thu Nov 16 19:15:43 2023 pencil

userpic

Re: Про IceWM

Во-первых, посмотрите в грамматических справочниках, как правильно пишется глагол "писать" во втором лице множественного числа, если подразумевается изъявительное наклонение (в отличие от повелительного). Реально задрали уже.

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

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

parent From Anonymous (unverified) Fri Nov 17 03:49:23 2023 pencil

В книге

2 издание, 1 том, параграф 1.2, страница 133, 4 строка сверху. Цитирую: "Автор книги рискнет порекомендовать для начала IceWM, но не "подсаживаться" на него намертво;"

parent From Andrey V. Stolyarov profile Fri Nov 17 13:55:19 2023 pencil

userpic

Re: В книге

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

Впрочем, ответ на ваш вопрос находится буквально там же, в смысле прямо в том же абзаце: главное — НЕ использовать DE, а всё, что не DE, использовать можно, только желательно попробовать другие оконники, отличные от IceWM. Какой больше понравится, тот и используйте. Ну, этой фразы там нет, но она подразумевается, для чего ещё "пробовать другие оконники"?

parent From Anonymous (unverified) Fri Nov 17 07:31:03 2023 pencil

Re: Про suckless

> список табу

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

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

parent From Andrey V. Stolyarov profile Fri Nov 17 13:14:42 2023 pencil

userpic

Re: Про suckless

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

Такой вопрос, вы не могли бы указать хотя бы на явные ошибки, коль скоро их видите? На всякий случай, исходник этой страницы, как и всей документации к Талассе, есть в архиве исходников Талассы, его дают здесь: http://thalassa.croco.net/download/, файл внутри архива называется examples/thalassa/pages/banned_techniques. Это не к тому, что обязательно с ним что-то делать, просто, возможно, будет удобнее.

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

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

parent From Anonymous (unverified) Sat Nov 18 05:58:54 2023 pencil

Re: Re: Про suckless

> Это, конечно, никакой не перевод, поскольку русского оригинала не существует.

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

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

Сходу вспоминаю одну устойчивую ошибку, использование "the lesser" вместо "the less" в паре мест.

В остальном пока сейчас времени нет, чтобы специально вычитывать. Да и не настолько я хорошо владею английским. Одно дело увидеть ошибку на уровне "по-английски так не пишут", а совсем другое адекватно объяснить, в чём именно ошибка. Не говоря уже про предложить вариант исправления.

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

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

Это самый простой способ, который мне приходит в голову. Другиим вариантом будет нанимать переводчика и/или редактора.

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

parent From Andrey V. Stolyarov profile Sat Nov 18 10:41:01 2023 pencil

userpic

Re: Про suckless

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

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

> использование "the lesser" вместо "the less"

Кстати да, спасибо. Там это в обоих случаях в составе идиомы "the less (whatever) the better", несомненная ошибка, и даже понятно, почему я её сделал.

> Да и не настолько я хорошо владею английским.

Можете не сомневаться, ни одно замечание я не приму на веру, сначала триста раз проверю :-)

> самый простой способ исправить

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

parent From Anonymous (unverified) Sat Nov 18 13:03:41 2023 pencil

Re: Re: Про suckless

> Тут у вас, как говорят, глюк.

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

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

parent From Anonymous (unverified) Fri Nov 17 14:29:25 2023 pencil

Re: Про suckless

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

parent From Andrey V. Stolyarov profile Fri Nov 17 14:35:06 2023 pencil

userpic

Re: Про suckless

Короче, нужен свой проект. С блекджеком и...

From Anonymous (unverified) Tue Nov 7 20:55:31 2023 pencil

Как относитесь к патентам?

Это тоже форма информационного насилия? Заранее извините если уже был такой вопрос, не смог найти.

parent From Andrey V. Stolyarov profile Tue Nov 7 21:47:24 2023 pencil

userpic

Re: Как относитесь к патентам?

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

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

parent From Anonymous (unverified) Tue Nov 7 22:32:37 2023 pencil

Re: Re: Как относитесь к патентам?

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

parent From Andrey V. Stolyarov profile Wed Nov 8 00:44:01 2023 pencil

userpic

Re: Как относитесь к патентам?

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

Т.е., как обычно, общество за предоставление патентной защиты не получает ничего (от слова совсем), только теряет. Собственно говоря, это так со всеми видами интеллектуальной собственности: того, для чего она изначально якобы предназначалась, она предоставить неспособна.

Подробности, если интересно, вот тут: http://www.croco.net/croco/papers/stolyarov_philosophy_thesis_infofreedom.pdf ; конкретно о патентах речь идёт на стр. 60--62, потом 66--71.

From Anonymous (unverified) Tue Nov 7 18:46:14 2023 pencil

Арифмометр Паскаля

Здравствуйте, в первой главе первого тома (с. 47) вы описываете математический принцип работы арифмометра Паскаля, а именно трюк с девятичным дополнением. Вы пишите: "однако оператор продолжал смотреть на цифры девятичных дополнений, где отображалось 99999-(99999-x+y), то есть просто x-y." По этой логике в примере 00500-00134, оператор должен видеть 00366, девятичное дополнение 99633. Я нашел два англоязычных видео, где визуально демонстрируется работа арифмометра (Pascaline). К примеру, оператор хочет вычесть 15 из 25, вводит 99925 в верхнем ряду (не 00025 и не 99974), прокручивая по ч.с. колесики, потом также прибавляет 15, и в открытом верхнем окне появляется 99910, т.е. 10, искомый ответ. Пытаюсь сравнить это с вашим описанием, но не получается, выглядит по-другому. Подскажите, что я упускаю?

parent From Andrey V. Stolyarov profile Tue Nov 7 19:39:09 2023 pencil

userpic

Re: Арифмометр Паскаля

> вводит 99925

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

parent From Anonymous (unverified) Tue Nov 7 21:14:05 2023 pencil

Re: Re: Арифмометр Паскаля

Да, возможно стоит меньше доверять авторам с ютубчика, ну кроме вас конечно :D

parent From Andrey V. Stolyarov profile Tue Nov 7 22:11:22 2023 pencil

userpic

Re: Арифмометр Паскаля

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

From Anonymous (unverified) Tue Nov 7 00:19:59 2023 pencil

Обучение детей и подростков арифметике

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

parent From Andrey V. Stolyarov profile Tue Nov 7 10:20:11 2023 pencil

userpic

Re: Обучение детей и подростков арифметике

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

Вообще я как-то раз задал вопрос учительнице физматшколы с 20+ годами опыта, что делать с 11-классником, не понимающим, что такое функция. Ответ был "пристрелить". Это, конечно, была шутка, но в каждой шутке есть доля шутки, как мы знаем.

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

parent From Anonymous (unverified) Tue Nov 7 13:27:45 2023 pencil

Re: Обучение детей и подростков арифметике

Что делать? Устроить его к себе на предприятие уборщиком. Зарплату не выплачивать - он всё равно считать не умеет, даже наверное и не поймёт, что что-то не так. Выгодно!

parent From Anonymous (unverified) Tue Nov 7 14:46:33 2023 pencil

Re: Re: Обучение детей и подростков арифметике

Ну как-то категорично вы.

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

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

parent From Andrey V. Stolyarov profile Tue Nov 7 16:43:54 2023 pencil

userpic

А вот не надо ляля

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

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

parent From nelson profile Tue Nov 7 19:19:47 2023 pencil

Re: Re: Re: Обучение детей и подростков арифметике

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

Из гуманитария может получится "писатель" разве что уровня дарьи донцовой.

Да и вообще тут как-то анекдот сразу вспомнился: - Бабушка, а кто такие гуманитарии? - Ну как тебе объяснить, внучек... Раньше их называли дураками.

parent From Andrey V. Stolyarov profile Tue Nov 7 23:04:38 2023 pencil

userpic

Про гуманитариев

Я бы не был столь категоричен. У гуманитариев обычно есть одна способность, отсутствующая у технарей и точников — перелопачивать феерические объёмы текстов, превращаясь в ходячие справочники.

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

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

parent From nelson profile Wed Nov 8 12:45:51 2023 pencil

Re: Про гуманитариев

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

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

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

parent From Andrey V. Stolyarov profile Wed Nov 8 13:17:14 2023 pencil

userpic

Re: Про гуманитариев

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

parent From Anonymous (unverified) Thu Nov 9 05:21:53 2023 pencil

Re: Про гуманитариев

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

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

From Дмитрий (unverified) Mon Nov 6 15:38:47 2023 pencil

Целесообразность оптимизации кода

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

Например:

    if (a > b)
        a = b;
/* against */
    a = b * (a > b) + a * (a <= b);

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

Мы с товарищем, который, кстати, является обладателем ваших книг с автографом, решили что не будем так делать. А сами размышления возникли после предмета «Многокритериальная оптимизация программного кода» в университете на 4 курсе. Где кроме рекомендаций по оптимизации, нам советовали использовать STL, многопоточность и не соваться в ассемблер. Естественно, мы посмеялись, но хотелось бы услышать ваше мнение.

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

Большое вам спасибо за возможность стать грамотным специалистом!

parent From Andrey V. Stolyarov profile Mon Nov 6 18:46:08 2023 pencil

userpic

Re: Целесообразность оптимизации кода

Э-мммм, что-с?!

a = b * (a > b) + a * (a <= b);

За такое программирование убивать надо. Ну то есть если руководитель разработки, увидев ТАКОЕ в коде, этого любителя оптимизаций не уволит к чёртовой матери, то разве что от полной безысходности.

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

А если оптимизацию в компиляторе включить, то, опять же, что-то я сомневаюсь, что он вот это вот выражение осилит. Хотя тут я, пожалуй, не поручусь, то есть надо смотреть. Если осилит, то оно в итоге превратится в тот же if :-)

Есличо, gcc -S знаете? :) можете сами на досуге посмотреть, что там получится в том и в другом случае, как с оптимизацией, так и без.

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

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

P.S. Я ваш тэг code поменял на pre, ибо code делает совершенно не то.

parent From Anonymous (unverified) Tue Nov 7 22:00:27 2023 pencil

Re: Re: Целесообразность оптимизации кода

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

А как же SETcc инструкции, существующие со времён i386?

parent From Andrey V. Stolyarov profile Tue Nov 7 22:08:45 2023 pencil

userpic

Re: Целесообразность оптимизации кода

Это условное присваивание в зависимости от значений флагов, при чём тут операция "больше"? Кстати, опять же, проверять лень, но что-то мне подсказывает, что все эти SETcc работают медленнее, чем пара из JNcc+MOV (ну, по аналогии с теми же LOOP, ENTER/LEAVE и что-то там ещё такое было).

parent From Anonymous (unverified) Wed Nov 8 12:19:21 2023 pencil

Re: Re: Целесообразность оптимизации кода

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

SETcc работает почти так же быстро как обычный MOV. Это логично, ведь технически SETcc копирует несколько бит из регистра флагов и применяет к ним пару простых битовых операций. Одна инструкция условного перехода (Jcc) по скорости примерно соответствует SETcc, но только если процессор верно её предсказывает. Если же предсказание не верно, то это лишние 15-20 тактов.

Задержки я смотрел в https://www.agner.org/optimize/instruction_tables.pdf. Всё вышесказанное относится к Skylake, но в других поколениях микроархитектуры, ситуация должна быть примерно такой же.

parent From Andrey V. Stolyarov profile Wed Nov 8 16:18:17 2023 pencil

userpic

Re: Целесообразность оптимизации кода

> лишние 15-20 тактов

Это на чём такие потери, из-за очистки конвейера?

parent From Anonymous (unverified) Wed Nov 8 19:14:01 2023 pencil

Re: Re: Целесообразность оптимизации кода

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

parent From Anonymous (unverified) Wed Nov 8 22:09:35 2023 pencil

Re: Re: Целесообразность оптимизации кода

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

Ещё он советовал использовать тернарный оператор, если совсем не получается избавиться от условных операторов... Если посмотреть ассемблерный код с тернарным оператором, генерируемый компилятором gcc, то там будет инструкция cmovge, так что программа с тернарным оператором работает быстрее. Но при использовании компилятора clang разницы в скорости уже нет, так как он реализует тернарный оператор через команды условных переходов.

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

parent From Andrey V. Stolyarov profile Wed Nov 8 23:26:21 2023 pencil

userpic

Re: Целесообразность оптимизации кода

> что при ветвлении происходят кэш промахи

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

> тернарный оператор

Слушайте, ну что за хрень, сколько можно?! Нет никакого "тернарного оператора" в природе и никогда не было, есть тернарная операция. Русское слово "оператор", так уж повелось, в программистском контексте соответствует английскому statement, вот if и while — это операторы. А английское operator, соответственно, переводить словом "оператор" нельзя совершенно категорически, так что остаётся уповать на то, что в одном тексте не придётся придумывать русские аналоги одновременно для operator и operation. Мне, кстати, ещё ни разу не пришлось, так что есть надежда, что проскочили.

Между прочим, в книге этот казус подробно разобран.

parent From far profile Sat Nov 11 16:50:19 2023 pencil

Re: Re: Целесообразность оптимизации кода

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

Сперва рассмотрим нахождение максимального элемента в массиве беззнаковых.

Прямое решение:

unsigned arraymax_cc(unsigned *a, int len)
{
	unsigned max = 0;
	int i;
	for (i = 0; i < len; ++i) {
		if (max < a[i])
			max = a[i];
	}
	return max;
}

Решение, использующее трюк:

unsigned arraymax_cc_hack(unsigned *a, int len)
{
	unsigned max = 0;
	int i;
	for (i = 0; i < len; ++i)
		max += -(a[i] > max) & (a[i] - max);
	return max;
}

В отличие от кода, который привёл автор стартового комментария, предложенный мной трюк не использует умножение. Помимо версии с трюком, тестировались версии 3 и 4, обе написанные мной на ассемблере. Третья использует условный переход, а четвёртая представляет собой более или менее прямой перевод второго варианта и использует SETcc. Десятый gcc вставил в код обеих функций на C CMOV'ы и они получились одинаковыми по скорости. Скорость ассемблерного решения с условным переходом также оказалать примерно равной тому, что выдал gcc. Ассемблерная версия с SETcc оказалась в 2.5 раза медленнее. Тут нет ничего необычного -- предсказатель переходов работает эффективно. Предсказанный состоявшийся переход занимает ~1 такт.

Однако если у нас нет условных присваиваний и предсказатель переходов будет предсказывать хуже, станет ли "хитрая" версия быстрее?

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

Наивное решение:

unsigned arraysum_cc(unsigned *a, int len)
{
	unsigned sum = 0;
	int i;
	for (i = 1; i < len; ++i) {
		if (a[i] > a[i-1])
			sum += a[i];
	}
	return sum;
}

"Хитрое" решение:

unsigned arraysum_cc_hack(unsigned *a, int len)
{
	int i;
	unsigned sum = 0;
	for (i = 1; i < len; ++i)
		sum += -(a[i] > a[i-1]) & a[i];
	return sum;
}

Ассемблерное "хитрое" решение:

arraysum_setcc:
	push ebp
	mov ebp, esp
	push ebx
	push esi
	push edi

	mov edi, [ebp+8]
	mov esi, [ebp+12]

	xor eax, eax
	lea esi, [edi+4*esi]
	add edi, 4
.loop:	cmp edi, esi
	je .end

	mov edx, [edi]
	mov ebx, edx
	xor ecx, ecx
	cmp edx, [edi-4]
	seta cl
	neg ecx
	and ebx, ecx
	add eax, ebx

	add edi, 4
	jmp .loop
.end:	pop edi
	pop esi
	pop ebx
	mov esp, ebp
	pop ebp

	ret

Наивную ассемблерную версию, я приводить не буду, комментарий и так получается длинным. Условных переходов нет на i386, поэтому собирал под него. Здесь ситуация меняется. Обе наивные версии оказываются в 3-4 раза медленее версиий без ветвлений.

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

Тестирование проводилось на i5 8250 и на core 2 duo p8600. На втором различия были меньше, но всё равно существенные - 2.5 раза. Отношение скоростей не зависит от размера массива. Я брал 4K, 16K, 4M.

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

parent From Andrey V. Stolyarov profile Sat Nov 11 18:36:23 2023 pencil

userpic

Re: Целесообразность оптимизации кода

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

Потом вот это ещё

> Условных переходов нет на i386

как это нет? точнее, понятно, что тут опечатка, но это не отменяет вопроса, а чего там на самом деле нет?

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

parent From far profile Sat Nov 11 20:42:35 2023 pencil

Re: Re: Целесообразность оптимизации кода

> как это нет? точнее, понятно, что тут опечатка, но это не отменяет вопроса, а чего там на самом деле нет?

Да, это - опечатка. На i386 нет условных присваиваний, то есть CMOV'ов.

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

parent From Andrey V. Stolyarov profile Sat Nov 11 21:23:32 2023 pencil

userpic

Re: Целесообразность оптимизации кода

На всякий случай, чтобы время не тратить: ссылки на файлопомойки, не работающие без JS, а равно ссылки на GitHub, GitLab, SourceForge и прочие "бесплатные" хостинги репозиториев я не раскрываю.

parent From far profile Sun Nov 19 14:07:45 2023 pencil

parent From Alejandro profile Mon Nov 6 19:35:08 2023 pencil

Не издевайтесь над людьми

Представьте себе лицо человека, который увидит выражение a = b * (a > b) + a * (a <= b);. А потом его лицо, когда выяснится, что это на самом деле if(a > b) a = b;. А также сколько времени потребуется потерять, чтобы понять, что тут к чему :-)

parent From Andrey V. Stolyarov profile Mon Nov 6 19:45:09 2023 pencil

userpic

Re: Не издевайтесь над людьми

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

parent From Anonymous (unverified) Mon Nov 6 20:59:50 2023 pencil

Книжка

Кстати, про недопустимость подобных выражений упомянуто во втором издании "Введения в профессию": том 2, страница 48.

parent From Andrey V. Stolyarov profile Mon Nov 6 21:05:02 2023 pencil

userpic

Re: Книжка

Я там хоть не умножал на условные выражения — просто в голову не пришло.

parent From nelson profile Mon Nov 6 22:54:39 2023 pencil

Re: Целесообразность оптимизации кода

Да... Вот и "реформа" образования, точнее её "результаты".

parent From Andrey V. Stolyarov profile Tue Nov 7 00:00:13 2023 pencil

userpic

Re: Целесообразность оптимизации кода

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

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

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

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

Так что реформа-то, может, и ни при делах тут. Давно уже всё вот так.

parent From nelson profile Tue Nov 7 16:26:53 2023 pencil

Re: Re: Целесообразность оптимизации кода

свежую методичку какого-то из московских институтов

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

parent From rkvg-es (unverified) Wed Nov 8 20:44:47 2023 pencil

Re: Re: Re: Целесообразность оптимизации кода

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

parent From nelson profile Thu Nov 9 08:54:22 2023 pencil

Re: Re: Re: Re: Целесообразность оптимизации кода

Спорный подход. Что можно списать из методички?

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

parent From Anonymous (unverified) Tue Nov 7 23:28:18 2023 pencil

Re: Целесообразность оптимизации кода

Если мы говорим про x86_64, то gcc может, по меньшей мере, преобразовать условный оператор в 'cmp rax, rdx; cmovge rax, rdx'. Это примерно 2 такта и должно быть близко к оптимуму.

parent From Andrey V. Stolyarov profile Wed Nov 8 01:12:52 2023 pencil

userpic

Re: Целесообразность оптимизации кода

Подозреваю, что даже самый топорный вариант без какой бы то ни было оптимизации, что-то вроде

        mov eax, [a]
        cmp eax, [b]
        jng .noassign
        mov eax, [b]
        mov [a], eax
.noassign:

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

From Anonymous (unverified) Thu Nov 2 08:22:42 2023 pencil

Обучение детей и подростков обращению с компьютером

Здравствуйте, Андрей Викторович. У Вас есть своё видение и подход к обучению программистов, и Ваши книги это убедительно подтверждают. Не могли бы Вы, как преподаватель и человек с большим опытом в сфере информационных технологий, сказать: какие навыки и умения требуется приобрести детям и подросткам, с чего стоит начать обучение, что могло бы помочь им как будущим специалистам в сфере ИТ. Сейчас много направлений в дополнительном образовании, таких как Scratch, Arduino и пр., но это ли нужно, с этого ли стоит начинать? Я спрашиваю, как педагог, Ваше мнение и рекомендации были бы очень полезны и могли бы послужить основой для написания образовательной программы.

parent From Andrey V. Stolyarov profile Thu Nov 2 12:54:42 2023 pencil

userpic

Re: Обучение детей и подростков обращению с компьютером

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

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

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

parent From Anonymous (unverified) Fri Nov 3 06:18:23 2023 pencil

Re: Re: Обучение детей и подростков обращению с компьютером

Забавно, у меня своего компьютера ещё не было (был примерно 2002 год, точно не помню), в школе на информатике на компах был DOS но автоматом грузился Norton Commander, обращению с которым как раз и учили.

Ну и один из одноклассников у которого компьютер был дома показал "фокус" — оказывается можно выйти из NC и потом зайти обратно, набрав команду nc, а на некоторых компах даже зайти в графическую оболочку, набрав команду win.

И что-то меня это так зацепило, что когда у меня появился свой комп с Windows XP, я стал искать целенаправленно у продавцов дисков, где бы купить DOS, ну они в итоге сами записали мне его на болванку наряду с Windows ME и ещё какой-то фигней.

Вот тогда-то я и ужал раздел XP с помощью Partition Magic, а потом поставил на два новых раздела ещё и DOS и ME, а на раздел DOS поставил Windows 3.11. Это всё было на тот момент почти топовом новом компе.

Но как намекали компьютерные книги, в UNIX командная строка ещё круче чем в DOS, например есть команда dd, позволяющая брать произвольные секторы диска, редактировать в hex-редакторе и записывать обратно.

Нет, на самом деле в DOS так тоже можно, но я про это не знал и потому купил себе новый жесткий диск, поскольку старый был уже забить трёмя или вроде даже уже пятью операционными системами и играми и место уже кончалось и заодно планку оперативки, получив 256 -> 512 мегабайт.

Ну и как раз тогда вышла Windows Vista и я наивно подумал что дни XP сочтены и надо переходить на новое, ну и тогда же достал ещё и диск с линуксом, что в те времена, без нормального интернета, было не очень-то и просто. Так что, на новый жесткий диск были установлены Vista, XP и два дистрибутива GNU/Linux.

Ну а дальше итог сравнения двух новых операционных систем — тормозящей и глючной Vista, для которой явно было маловато ресурсов и шустрого линукса, где отлично показывали фильмы с DVD-дисков (после компиляции mplayer из исходников и установки методом make install-а) был явно не в пользу первой. В дальнейшим винды были удалены и на их место поставлено ещё три дистрибутива линукса и какой-то BSD. А потом у меня появился новый комп.

parent From Andrey V. Stolyarov profile Fri Nov 3 10:47:52 2023 pencil

userpic

Re: Обучение детей и подростков обращению с компьютером

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

parent From Anonymous (unverified) Sat Nov 4 06:04:54 2023 pencil

Re: Re: Обучение детей и подростков обращению с компьютером

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

parent From Andrey V. Stolyarov profile Sat Nov 4 11:31:35 2023 pencil

userpic

Re: Обучение детей и подростков обращению с компьютером

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

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

From Anonymous (unverified) Sat Oct 28 02:52:55 2023 pencil

OpenBSD всё?

https://lwn.net/Articles/949078/

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

parent From Andrey V. Stolyarov profile Sat Oct 28 11:44:07 2023 pencil

userpic

Re: OpenBSD всё?

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

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

parent From Alejandro profile Sun Oct 29 06:16:55 2023 pencil

Re: Re: OpenBSD всё?

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

parent From Anonymous (unverified) Sat Oct 28 19:36:56 2023 pencil

Re: OpenBSD всё?

с лора притащил? оно не может быть "всё" тк тупо аналогов нет сходу назови систему в которой из коробки не будет network manager'a, systemd (в тч его огрызков), pulseaudio, dbus, avahi, openssl, sudo, python'a(удаление которого может привести систему в нерабочее состояние), apparmor'a (который любят добавлять, но не писать для него правила) и тд и тп openbsd не учит плохому в отличие от линукса, в коем, чтобы понять, что есть плохо, а что есть хорошо, надо попользоваться и быть любознательным. это особенно весело на начальных этапах, где даже гайдлайны для нубов учат плохому. в openbsd гайдлайны не нужны вся актуальная документация находится в системе

parent From Andrey V. Stolyarov profile Sat Oct 28 20:04:51 2023 pencil

userpic

следите за знаками препинания

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

parent From Anonymous (unverified) Sat Oct 28 20:37:51 2023 pencil

Re: следите за знаками препинания

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

parent From Andrey V. Stolyarov profile Sat Oct 28 20:47:28 2023 pencil

userpic

Re: Re: следите за знаками препинания

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

parent From Anonymous (unverified) Sat Oct 28 20:36:58 2023 pencil

NetBSD

Чем перелинковка системы при каждой загрузке лучше вышеперечисленного?

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

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

parent From Andrey V. Stolyarov profile Sat Oct 28 20:56:55 2023 pencil

userpic

Re: NetBSD

> Если враг получил исполнение произвольного кода — это всё уже, финиш.

Так он ещё не получил, в этом и фишка. Когда получил — ему пофигу, куда там у кого шляпа сдвинута. А вот когда только поймал что-нибудь на очередном buffer overflow, может быть намного проще подменить параметры системного вызова, нежели что-то ещё, а в EAX/RAX/whatever может быть проще зафорсить ноль вместо настоящего номера вызова.

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

Особенно лично меня насторожило, что execve теперь можно вызвать только из libc — стало интересно, как там проверяется, что оно в libc. И можно ли теперь вообще программировать без libc. Скажем, если они там в погоне за безопасностью сломали статическую линковку и/или переносимость статических бинарей — то даже я тогда присоединюсь к мысли, что эта система здесь и сейчас "всё", хотя, возможно, они ещё одумаются. Я, впрочем, понятия не имею о реальной конкретике, это просто то, что меня насторожило в тексте по ссылке.

parent From Anonymous (unverified) Sun Oct 29 05:40:17 2023 pencil

Re: Re: NetBSD

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

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

С другой стороны, в той же Windows NT, например, тоже со статической линковкой всё совсем никак, программа просто обязана подхватывать то ли kernel32.dll, то ли ещё что-то такое, точно не помню, а системные вызовы меняются от версии к версии и программа, обращающаяся напрямую к ним не переносима никуда. Наверное и в Wine тоже не заработает.

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

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

parent From Andrey V. Stolyarov profile Sun Oct 29 07:11:44 2023 pencil

userpic

Re: Re: Re: NetBSD

> Возможно, что теперь уже без линковки с libc нельзя.

А проверить?

Но если реально так, то всё, систему можно хоронить.

> программа просто обязана подхватывать то ли kernel32.dll

Во-первых, винда уж точно не пример для подражания, а во-вторых, там эта kernel32 "идёт" вместе с ядром и её API используется вместо системных вызовов, это принципиально другая роль, нежели у libc.

parent From Anonymous (unverified) Sun Oct 29 18:14:06 2023 pencil

Re: Re: Re: Re: NetBSD

>> Возможно, что теперь уже без линковки с libc нельзя. > А проверить?

Можно. Пока. cur64$ cat sys_start.s

.section ".note.openbsd.ident", "a"
  .p2align 2
  .long   8, 4, 1
  .asciz "OpenBSD"
  .long   0x0
  .p2align 2

.section .text

.globl myexec
myexec:
  mov $59, %rax		/* execve syscall */
  syscall
  ret

.globl _start
_start:
  callq main
  mov %rax, %rdi
  mov $1, %rax
  syscall

cur64$ cat main.c

int myexec(char *path, char **argv, char **env);
int main() {
	char *cmd = "/bin/sh";
	char *av[] = { "/bin/sh", 0 };
	char *en[] = { "PS1=[newshell]$ ", 0 };
	return myexec(cmd, av, en);
}

cur64$ make start as -o sys_start.o sys_start.s cur64$ make main cc -ansi -pedantic -O0 -nostdlib -static -c main.c cur64$ make all ld --no-pie --nostdlib -o main main.o sys_start.o cur64$ ./main [newshell]$

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

From:       "Theo de Raadt" 
Date:       2019-10-29 15:41:16
Message-ID: 63552.1572363676 () cvs ! openbsd ! org

We have changed the ABI.  Pray we do not change it further.

P.S. А предосмотр отправляемых комментариев в этой систеесть?

parent From Andrey V. Stolyarov profile Mon Oct 30 11:08:05 2023 pencil

userpic

про предпросмотр

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

parent From Anonymous (unverified) Sun Oct 29 19:15:47 2023 pencil

OpenBSD

если они там в погоне за безопасностью сломали статическую линковку и/или переносимость статических бинарей

А проверить?

Чтобы проверить, допустима ли статическая линковка с libc в OpenBSD, можно даже не устанавливать систему. Достаточно скачать https://cdn.openbsd.org/pub/OpenBSD/snapshots/amd64/base74.tgz (или с зеркал https://www.openbsd.org/ftp.html ).

Это архив с бинарниками базовой системы последнего снапшота для amd64. В архиве есть директория /bin/, файлы в которой в OpenBSD традиционно слинкованы статически.

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

Можно такую проверку считать ответом на вопрос, не сломали ли в OpenBSD статическую линковку?

переносимость статических бинарей

Тут ведь имеется в виду переносимость между разными версиями ядра в рамках одной ОС и архитектуры?

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

Вот что Тео де Раадт писал ещё в 2019-м: Program to the API rather than the ABI. When we see benefits, we change the ABI more often than the API. (отсюда https://marc.info/?l=openbsd-tech&m=157489277318829 )

Весь тред: https://marc.info/?l=openbsd-tech&m=157488907117170 или https://www.mail-archive.com/tech@openbsd.org/msg54429.html

Отвечает ли эта цитата отрицательно на вопрос о переносимости статических бинарей?

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

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

parent From Andrey V. Stolyarov profile Mon Oct 30 11:00:39 2023 pencil

userpic

Re: OpenBSD

Спасибо за ссылки. Собственно, вот цитата из письма по ссылке:

> May i ask -- does this really mean that the (theoretic)
> possibility of writing a small assembler program which performs
> direct system calls will no longer be possible?
> Whereas i see "static binary: main program does system calls",
> a future change could very well restrict the allowed address range
> some more even then?

Hopefully once go (and other environments which do the same) are
converted to use libc stubs, yes.  Unless your binary is static (which
is PIC/PIE, which is already an ABI hurdle).

Program to the API rather than the ABI.  When we see benefits, we
change the ABI more often than the API.

I have altered the ABI.  Pray I do not alter it further.

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

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

parent From Anonymous (unverified) Mon Oct 30 11:22:59 2023 pencil

Re: Re: OpenBSD

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

https://www.youtube.com/watch?v=3D8TEJtQRhw

parent From Andrey V. Stolyarov profile Mon Oct 30 13:11:01 2023 pencil

userpic

ёлки, да смотрите же, что пишете!

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

parent From Anonymous (unverified) Mon Oct 30 16:02:13 2023 pencil

Re: ёлки, да смотрите же, что пишете!

Спасибо за замечание. А вам известно значение слова "реальное"? Если нет (спойлер: реальное есть бесконечное, имеющее в себе конечное (идеальное, законченное) как свой момент), загляните в "Науку логики" Гегеля. Заодно узнаете, чтO есть само "конечное" (еще спойлер: конечное есть нечто, взятое со своей имманентной границей). Понятия нечто и граница тоже определены, даны определения определённости и самого определения. Сама книга даёт развитие системы всеобщих понятий начиная с чистого бытия (того единого, что есть) в отличие от других наук, в основе которых лежат условно принятые положения (аксиомы).

parent From Andrey V. Stolyarov profile Mon Oct 30 16:13:49 2023 pencil

userpic

-

Вон с моего сайта, мразь.

parent From Anonymous (unverified) Tue Oct 31 07:22:58 2023 pencil

У Adult Swim этот момент забавнее

https://www.youtube.com/watch?v=31HaTbWONmQ

parent From Anonymous (unverified) Mon Oct 30 19:52:08 2023 pencil

Re: Re: OpenBSD

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

Ну он собственно для этого, насколько я понимаю, 30 лет назад NetBSD и форкнул.

Всё, лично для меня OpenBSD больше не существует.

Вы всерьёз считаете, что Linux (поскольку Linux, очевидно, для вас пока существует) лучше OpenBSD в этом плане? Учитывая, что в Linux сейчас количество реальных мразей, имеющих возможность принимать решения, несравнимо больше. Не говоря уже о том, что в отличие от Тео, их решения обычно не имеют отношения к техническому совершенству системы и не освещаются открыто.

parent From Andrey V. Stolyarov profile Mon Oct 30 20:11:24 2023 pencil

userpic

Re: OpenBSD

В Linux, насколько я вижу, никто не ломает обратную совместимость, i386'е статические бинарники до сих пор нормально работают с 64-битными ядрами. А на то, что происходит внутри ядра, можно до определённого момента не обращать внимания, если сам не пытаешься в этом участвовать.

Ну то есть, конечно, линуксовое ядро катится совершенно очевидно не туда, и, скажем, если там таки в мейнстримных ядрах появится Rust, и при этом не будет форка rust-free, на который можно было бы сползти, то Linux придётся закапывать. Но лично я при этом OpenBSD даже рассматривать не буду.

parent From Anonymous (unverified) Mon Oct 30 21:56:01 2023 pencil

Re: Re: OpenBSD

>если там таки в мейнстримных ядрах появится Rust

если ниче не путаю, он там уже год, вроде тогда еще сам финский босс сказал, что идея хорошая. https://en.wikipedia.org/wiki/Rust_for_Linux

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

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

ЗЫ похоже, что здесь больше не будут воздавать почести(даже шуточные) openbsd, эх, мне нравилось читать разговоры об этой ос.

parent From Andrey V. Stolyarov profile Mon Oct 30 22:27:11 2023 pencil

userpic

Re: OpenBSD

> не понятно о какой "стадии рака" идет речь

Насколько мне известно, пока что эта штука в "боевых" ядрах выключена, чем, в целом, можно объяснить отсутствие соответствующих (то есть декларирующих именно что rust-free) форков.

> сизифов труд

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

parent From Anonymous (unverified) Mon Oct 30 22:55:40 2023 pencil

Re: Re: Re: OpenBSD

похоже, что здесь больше не будут воздавать почести(даже шуточные) openbsd

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

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

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

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

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

parent From Anonymous (unverified) Tue Oct 31 10:23:36 2023 pencil

Re: Re: Re: Re: OpenBSD

А точно ли NetBSD имеет чем-то отличающийся список поддерживаемого железа? Может стоит попробовать прежде чем делать выводы? Так-то Open и Net не сильно и отличаются, вроде, только дрочки на "безопасность" во второй поменьше.

parent From Anonymous (unverified) Sun Nov 5 06:50:43 2023 pencil

NetBSD

Девиз NetBSD "Конечно это работает на NetBSD!"

NetBSD портированна на 57 аппаратных платформ. Драйвера устройств платформонезависимые.

В свое время разработчики NetBSD за месяц портировали ОС на x86_64 всего за месяц. А разработчики Linux это делали примерно полгода. А теперь сравните количество разработчиков Linux и NetBSD.

parent From Andrey V. Stolyarov profile Sun Nov 5 11:08:30 2023 pencil

userpic

Re: NetBSD

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

parent From Anonymous (unverified) Sun Nov 5 17:55:30 2023 pencil

Re: Re: NetBSD

Так NetBSD же, не OpenBSD. Вроде в нэтке ничего особо не ломали.

parent From Andrey V. Stolyarov profile Sun Nov 5 18:22:00 2023 pencil

userpic

Re: NetBSD

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

Если что, я вот об этом:

Девиз NetBSD "Конечно это работает на NetBSD!"

parent From Anonymous (unverified) Mon Oct 30 20:59:51 2023 pencil

Re: Re: OpenBSD

>там нашёлся один отдельно взятый мудак

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

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

parent From Andrey V. Stolyarov profile Mon Oct 30 21:24:40 2023 pencil

userpic

Re: OpenBSD

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

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

parent From Anonymous (unverified) Mon Oct 30 23:35:22 2023 pencil

раз речь зашла про форки

>Сделать свой форк я не могу

гнутые, года три назад, решили форк openbsd таки сделать, вернее там речь шла о написании с нуля, по образу и подобию, чтобы подать это под лицензией gpl, не знаю, можно ли это форком назвать. hyperbola linux-libre -> hyperbola bsd. в свой линукс дистр они взяли xenocara(форк иксов от openbsd), libressl. выкинули поддержку dbus, openjdk, sudo. только вот даже в интернете я не видел пользователей гиперболы, вот вообще ни одного. для меня openbsd стала готова для десктопа где-то в 2019, когда добавили amdgpu блобы, сабж, в свою очередь, принципиально не собирается поддерживать блобы. что оно будет, когда они доведут задумку до логического финала сложно сказать. поддержки arm, которая в теории могла бы без блобов(u-boot сверху впиндюрить можно) работать, нет

ЗЫ пишу читая сайт https://www.hyperbola.info/news/announcing-hyperbolabsd-roadmap/ , давно к ним в гости не заходил

parent From Anonymous (unverified) Wed Nov 1 01:01:17 2023 pencil

Re: раз речь зашла про форки

> гнутые, года три назад, решили форк openbsd таки сделать

Эм, а точно это "гнутые решили"? Просто фраза звучит так, как будто сам Столлман решение принимал.

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

Но список отринутого в гневе ПО, конечно, внушает: https://wiki.hyperbola.info/doku.php?id=en:philosophy:incompatible_packages

parent From Andrey V. Stolyarov profile Wed Nov 1 09:54:18 2023 pencil

userpic

Re: раз речь зашла про форки

> список отринутого в гневе ПО, конечно, внушает:

По-моему, всё правильно делают. В особенности systemd, dbus, pulseaudio и avahi, давно пора этих монстров прикончить. Потом ещё openssl, rust (!), electron, nodejs, go — вот прямо всё как надо.

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

Но в целом да, движутся в правильном направлении. Остался всего один шаг до идеала — запретить внешние зависимости как явление.

parent From Anonymous (unverified) Fri Nov 3 06:25:48 2023 pencil

Re: Re: раз речь зашла про форки

fpc выкинули из-за циклической зависимости. Но ведь у gcc она тоже есть.

parent From Andrey V. Stolyarov profile Fri Nov 3 10:39:33 2023 pencil

userpic

Re: раз речь зашла про форки

У fpc с этим полное мракобесие, я как-то столкнулся с тем, что установленный в системе экземпляр fpc "слишком старый" для компиляции текущего снапшота с их сайта. gcc, насколько я помню, можно отбутстрапить, имея любой компилятор ANSI C — во всяком случае, раньше так было, сейчас уже не знаю, от этих всякого можно ждать — команда gcc утратила моё доверие начиная с пятых версий.

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

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

parent From Anonymous (unverified) Tue Oct 31 07:44:42 2023 pencil

Re: Re: Re: Re: NetBSD

Так в OpenBSD libc тоже вместе с ядром идёт. И другие языки могут и libc использовать, если очень надо. Я, если что, не говорю, что это ОК, но просто по-моему такая система теоретически может работать.

parent From Andrey V. Stolyarov profile Tue Oct 31 08:51:15 2023 pencil

userpic

Re: NetBSD

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

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

parent From nelson profile Tue Oct 31 08:38:28 2023 pencil

Re: Re: Re: NetBSD

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

Она-то есть, только при установке можно запросто столкнуться с ситуацией, что она тупо "не увидит" ваш жёсткий диск, для контроллера которого не окажется драйвера. Более-менее сносно на ПК можно использовать только FreeBSD. Да и то с драйверами могут быть сюрпризы.

From Арсений (unverified) Thu Oct 26 06:59:23 2023 pencil

Дырявые интерпретаторы

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

parent From Andrey V. Stolyarov profile Thu Oct 26 11:05:28 2023 pencil

userpic

Re: Дырявые интерпретаторы

Нет, тут очевидная практика.

parent From Algo (unverified) Thu Oct 26 12:59:47 2023 pencil

Дырявые интерпретаторы

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

parent From Andrey V. Stolyarov profile Thu Oct 26 13:03:44 2023 pencil

userpic

Re: Дырявые интерпретаторы

Это вряд ли вообще имеет отношение к делу, как ни странно.

parent From Algo (unverified) Thu Oct 26 13:18:34 2023 pencil

Дырявые интерпретаторы

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

parent From Andrey V. Stolyarov profile Thu Oct 26 13:23:51 2023 pencil

userpic

Re: Дырявые интерпретаторы

Что, увы, не делает адобовских бастардов — что постскрипт, что PDF — сколько-нибудь меньше бастардами.

parent From Anonymous (unverified) Thu Oct 26 13:00:21 2023 pencil

Re: Re: Дырявые интерпретаторы

А теорема Гёделя о неполноте?

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

parent From Andrey V. Stolyarov profile Thu Oct 26 13:02:52 2023 pencil

userpic

Re: Дырявые интерпретаторы

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

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

parent From Anonymous (unverified) Thu Oct 26 14:04:33 2023 pencil

Re: Re: Дырявые интерпретаторы

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

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

Неужто дыры будут даже так?

parent From Andrey V. Stolyarov profile Thu Oct 26 15:00:36 2023 pencil

userpic

Re: Дырявые интерпретаторы

> Coq

Если верить интернету, это автоматическая доказывалка теорем. При чём тут вообще программирование?

> Brainfuck

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

parent From Anonymous (unverified) Fri Oct 27 03:51:23 2023 pencil

Re: Re: Дырявые интерпретаторы

вообще можно сделать компилятор из нормального языка в brainfuck и таким образом писать.

parent From Andrey V. Stolyarov profile Fri Oct 27 12:19:51 2023 pencil

userpic

Re: Дырявые интерпретаторы

Компиляторы тут вообще ни при чём, вы потеряли тему.

parent From Anonymous (unverified) Fri Oct 27 09:32:20 2023 pencil

Re: Re: Re: Дырявые интерпретаторы

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

parent From Andrey V. Stolyarov profile Fri Oct 27 12:34:37 2023 pencil

userpic

Re: Дырявые интерпретаторы

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

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

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

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

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

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

Может, пора уже эту стюардессу закопать, а?

parent From Anonymous (unverified) Fri Oct 27 13:47:12 2023 pencil

Re: Re: Дырявые интерпретаторы

Ну, не совсем прошёл. Например, ядро seL4 было написано в 2006 году, и в 2009 его формально верифицировали при помощи программы на Haskell. А в 2015 были сведения об успешной реализации беспилотного вертолёта для американских военных на основе этого ядра, ещё нескольких верифицированных программ для него и паравиртуализованного Linux.

parent From Andrey V. Stolyarov profile Fri Oct 27 15:17:34 2023 pencil

userpic

Re: Дырявые интерпретаторы

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

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

From Anonymous (unverified) Thu Oct 26 01:45:54 2023 pencil

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

Я изучил первый том до раздела математики (с.138). Мой основной род деятельности - администрирование Linux, однако для изучения некоторых страниц книги требуется несколько дней, а то и вовсе приходится откладывать, осмыслить и спустя месяц удаётся уже "переварить" эту информацию, например, так у меня произошло по теме архитектуры ЭВМ. Мне не терпится многое пропустить и сразу же начать что-то программировать (по книге, н-р, Pascal), чтобы получить удовольствие от готовой программы, кот. что-то уже делает реально, хоть и очень простое, но я понимаю, что уровень подготовки очень необходим для дальнейшего эффективного развития и понимания что такое программирование. Мотивация есть, я продолжаю изучать по порядку. Напишите, пожалуйста, ваше мнение по вышенаписанному. Нормально ли, что процесс идёт медленно (иногда очень медленно) и хочу спешить? Есть ли какой-то ориентир, чтобы понимать хочется программировать или хочется программировать, но тяжело расти, чтобы прийти к результату - программировать?

parent From Andrey V. Stolyarov profile Thu Oct 26 10:59:13 2023 pencil

userpic

Re: Изучение первого тома

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

  • из математической главы — параграфы 1.3.1 — 1.3.3, без этого могут возникнуть проблемы даже просто при формулировке условий всяких циклов и ветвлений;
  • из главы "Программы и данные" — как минимум параграфы 1.4.6 и 1.4.7, чтобы не тыкаться потом вслепую куда попало.

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

From Robert (unverified) Wed Oct 25 13:53:11 2023 pencil

Сообщения об ошибках в книге

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

parent From Andrey V. Stolyarov profile Wed Oct 25 14:21:52 2023 pencil

userpic

Re: Сообщения об ошибках в книге

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

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

parent From Robert (unverified) Thu Oct 26 15:37:57 2023 pencil

Re: Re: Сообщения об ошибках в книге

Хорошо, я понял. Благодарю за ответ и за отличные книги!

From Anonymous (unverified) Fri Oct 20 20:33:15 2023 pencil

проект "infoviolence"

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

parent From Andrey V. Stolyarov profile Fri Oct 20 22:10:22 2023 pencil

userpic

Re: проект "infoviolence"

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

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

Ну и, конечно, традиционный вопрос в таких случаях: на infoviolence.org вообще-то есть своя гостевая книга, почему обязательно надо сюда постить оффтопик?

parent From Anonymous (unverified) Sat Oct 21 05:52:52 2023 pencil

Re: Re: проект "infoviolence"

Простите великодушно, не заметил ее. Нужду можно объяснить тем, что не всегда удобно смотреть материал именно в видеоформате, тем более что основная нагрузка, конечно, в аудиодорожке. Если такое сделать возможно - будет очень хорошо.

parent From pers (unverified) Sat Oct 21 12:42:08 2023 pencil

Можно не нагружать Андрея Викторовича

Если у вас Linux, то скорее всего в вашем репозитории будет программа ffmpeg. После установки берете локальную копию видео и запускаете софт. Например: user@host~$ ffmpeg -i video.mp4 -q:a 0 -map a sample.wav.

parent From Andrey V. Stolyarov profile Sat Oct 21 13:27:27 2023 pencil

parent From Anonymous (unverified) Sat Oct 21 15:22:50 2023 pencil

Re: Re: Можно не нагружать Андрея Викторовича

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

parent From Andrey V. Stolyarov profile Sat Oct 21 16:32:18 2023 pencil

userpic

Re: Можно не нагружать Андрея Викторовича

Я именно это и собирался сделать, а звук там, увы, в mp3. Ну, можно ещё попробовать в Ogg Vorbis пережать, чисто из принципа. Но пока я не собрался, и это у меня никак не высший приоритет; если кто соберётся раньше, подсказываю — вытащить все видосы одной командой можно так:

wget -m -np http://infoviolence.org/ru/vblog/v720/

13G за всё про всё. Жалко, что уже не лезет на 8G-флешку, нужна следующего размера :-)

parent From Anonymous (unverified) Sat Oct 21 19:34:07 2023 pencil

Re: Re: Можно не нагружать Андрея Викторовича

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

parent From Anonymous (unverified) Mon Oct 23 08:26:03 2023 pencil

Re: Re: Можно не нагружать Андрея Викторовича

Не хватает параметра -np, иначе мы скачаем не только сайт целиком, но и видосики по два раза каждое. Ну и это... Не в mp3 там звук. В mp4a, по мнению ffmpeg.

Я могу залить получившуюся россыпь ogg или tar-архив (660.26 MB), если подскажете, куда.

parent From Andrey V. Stolyarov profile Mon Oct 23 10:54:33 2023 pencil

userpic

Re: Можно не нагружать Андрея Викторовича

С опциями погорячился, спасибо за замечание — поправил.

Заливать не надо, я ещё не решил, что со всем этим делать.

parent From pers (unverified) Sat Oct 21 16:30:19 2023 pencil

Ага

Обычно я вытаскиваю дорожку и делаю wav для запуска через программу play. Анониму выше можно себе таким образом наклепать аудиозаписей и потом просто делать user@host~$ play audio.wav. При попытке проиграть mp3 или другие форматы софт, описанный выше, дает сбой :(

parent From Andrey V. Stolyarov profile Sat Oct 21 17:24:05 2023 pencil

userpic

Re: Ага

Ну play не умеет mp3, и что? Если у вас есть ffmpeg, то есть и ffplay,

ffplay -autoexit -nodisp audio.mp3

спасёт гиганта мысли. Точно так же, как и cvlc, и mplayer.

parent From pers (unverified) Sun Oct 22 06:18:12 2023 pencil

Спасибо за наводку

Не знал про это. Только разве что mplayer использовал :)

parent From Anonymous (unverified) Sun Oct 22 10:31:47 2023 pencil

Re: Re: Ага

С чего вы взяли, что play не умеет mp3?

$ play over_the_horizon_2015.mp3

over_the_horizon_2015.mp3:

File Size: 3.33M Bit Rate: 132k Encoding: MPEG audio Channels: 2 @ 16-bit Samplerate: 44100Hz Album: Brand Music Replaygain: off Artist: Samsung Duration: 00:03:22.14 Title: Over the Horizon

In:26.5% 00:00:53.50 [00:02:28.64] Out:2.36M [ -====|===- ] Clip:0

parent From Anonymous (unverified) Sun Oct 22 12:31:56 2023 pencil

Re: Re: Re: Ага

Видимо, у вас play из пакета sox. А у комментатора выше это, возможно, псевдоним для aplay, который действительно не умеет в сжатые форматы.

parent From Anonymous (unverified) Sat Oct 21 19:29:10 2023 pencil

Re: проект "infoviolence"

>стриминговых сервисах?

чем mpv --no-video http://infoviolence.org/ru/vblog/v720view/infoviolence_060.mp4 не стриминговый сервис? сайт через консольный браузер открывается

parent From Andrey V. Stolyarov profile Sat Oct 21 19:31:14 2023 pencil

userpic

Re: проект "infoviolence"

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

From Арсений (unverified) Wed Oct 18 06:24:08 2023 pencil

Проектирование программных комплексов

В 3м томе в параграфе 9.1.1 Вы упоминаете "Проектирование программных комплексов". Не подскажете литературу на эту тему?

parent From Andrey V. Stolyarov profile Wed Oct 18 12:00:04 2023 pencil

userpic

Re: Проектирование программных комплексов

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

parent From Lervile (unverified) Sat Oct 21 08:19:49 2023 pencil

Re: Проектирование программных комплексов

На практике сейчас "Проектирование программных комплексов" называют "Архитектурой решений" (Solution Architecture), под это есть отдельные должности "Архитектора решений". Часто слово "решений" опускается и в вакансиях можно видеть позиции "архитектора" - это оно.

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

Из литературы могу посоветовать "Software Architecture in Practice" от Басса, Клементса и Казмана - PDF можно найти в поисковиках. Книжка почти не дает практически применимых навыков, но позволяет открыть для себя новую парадигму мышления.

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

parent From Andrey V. Stolyarov profile Sat Oct 21 10:47:03 2023 pencil

userpic

Re: Re: Проектирование программных комплексов

> в вакансиях можно видеть позиции "архитектора" - это оно.

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

> от Басса, Клементса и Казмана

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

Исключения крайне редки: мне в своё время понравилась "eXtreme programming installed", но её авторы описывали свой собственный опыт, то есть это были не так чтобы измышления; впрочем, та же команда нагвоздила целую серию книжек про "extreme programming", и всё остальное, кроме вот этой вот "installed", с тем же успехом могло бы и не появляться.

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

NB: конкретно к программным комплексам всё это не относится примерно никак.

parent From Anonymous (unverified) Sat Oct 21 18:26:35 2023 pencil

Re: Re: Re: Проектирование программных комплексов

> Пока что подавляющее большинство книг, которые я видел на тему "как надо программировать", представляют собой бессмысленные (а часто и вредоносные) измышления.

А с книгами про проектирование программ (не комплексов) ситуация аналогичная? Не совсем понимаю, какие книги относятся к категории "как надо программировать" (не могут же это быть все книги про программирование)

parent From Andrey V. Stolyarov profile Sat Oct 21 19:08:15 2023 pencil

userpic

Re: Проектирование программных комплексов

> А с книгами про проектирование программ (не комплексов) ситуация аналогичная?

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

> не могут же это быть все книги про программирование

Практически любые книги, адресованные состоявшимся программистам. В смысле не учебники. Ну и не справочники, но справочники вообще не про то, "как надо".

parent From Lervile (unverified) Sat Oct 21 21:41:37 2023 pencil

Re: Re: Re: Проектирование программных комплексов

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

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

parent From Andrey V. Stolyarov profile Sun Oct 22 00:34:22 2023 pencil

userpic

Re: Проектирование программных комплексов

> Отдельных должностей "архитектора ПО" я, наверное, вообще не видел

Странно, кстати — я видел.

From Anonymous (unverified) Sun Oct 15 08:31:00 2023 pencil

Математические символы

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

Или же стоит вообще не делать такого на сайтах?

parent From Andrey V. Stolyarov profile Sun Oct 15 11:56:55 2023 pencil

userpic

Re: Математические символы

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

parent From Anonymous (unverified) Mon Oct 16 06:08:26 2023 pencil

Re: Математические символы

На сайте dxdy.ru для ввода математики используют ЛаТех. Вот как они его прикрутили, я не знаю (не специалист).

parent From Anonymous (unverified) Mon Oct 16 13:27:58 2023 pencil

Re: Re: Математические символы

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

parent From Anonymous (unverified) Mon Oct 16 07:22:29 2023 pencil

Re: Математические символы

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

parent From Anonymous (unverified) Mon Oct 16 13:30:47 2023 pencil

Re: Re: Математические символы

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

parent From Anonymous (unverified) Tue Oct 17 03:34:51 2023 pencil

Re: Математические символы

Вообще, есть такая штука как MathML. https://en.wikipedia.org/wiki/MathML

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

parent From Andrey V. Stolyarov profile Tue Oct 17 10:28:41 2023 pencil

userpic

Re: Математические символы

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

Но что забавно, статья содержит просто-таки великолепную иллюстрацию "почему SGML-подобная разметка не имеет права жить". Там сначала приводят пример в этом поганом XML:

<math>
 <apply>
  <plus/>
  <apply>
   <times/>
   <ci>a</ci>
   <apply>
    <power/>
    <ci>x</ci>
    <cn>2</cn>
   </apply>
  </apply>
  <apply>
   <times/>
   <ci>b</ci>
   <ci>x</ci>
  </apply>
  <ci>c</ci>
 </apply>
</math>

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

(plus
  (times a (power x 2))
  (times b x)
  c)

Причём там, насколько я понимаю, рассматривают как достоинство предложенной XML-схемы именно то, что она вот так вот легко переводится в S-выражения.

По-моему, это всё, что нужно знать про XML и вообще SGML-подобные языки.

parent From Anonymous (unverified) Tue Oct 17 11:15:00 2023 pencil

Re: Re: Математические символы

HTML, вроде как, происходит от SGML... Да и вообще похож. Получается, он тоже не должен жить?

parent From Andrey V. Stolyarov profile Tue Oct 17 11:38:36 2023 pencil

userpic

Re: Re: Re: Математические символы

Разумеется, не должен. Как и веб в его нынешнем виде. А что, в этом есть какие-то сомнения?

P.S. см. также вот это недавнее обсуждение.

parent From Anonymous (unverified) Tue Oct 17 12:51:10 2023 pencil

Re: Re: Re: Re: Математические символы

Существует ли язык разметки, который вы могли бы рекомендовать для замены HTML? Совсем без разметки-то всё же грустно. Markdown какой-нибудь, или там GemText, может быть?

parent From Andrey V. Stolyarov profile Tue Oct 17 13:17:21 2023 pencil

userpic

Re: Математические символы

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

Если говорить конкретно о разметке для чего-то такого, что заменит современный веб, то тот же GemText в принципе шаг в правильном направлении, но сам проект Gemini, на мой взгляд, с самого начала пошёл не туда: так напирать на простоту реализации и при этом потребовать не просто криптографию, а прямо TLS со всеми его прелестями, включая зависимость от OpenSSL или какого-то её аналога, эмммм... ну так нельзя.

parent From Anonymous (unverified) Thu Oct 19 21:02:57 2023 pencil

Re: Re: Математические символы

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

Нужно ли два разных формата для художественных электронных книг и для технической документации?

parent From Andrey V. Stolyarov profile Thu Oct 19 21:50:12 2023 pencil

userpic

Re: Математические символы

> А если

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

Вообще по-моему под ваши требования вполне подходят и ReST, и Markdown, и GemText. Хотя могу ошибаться.

> Нужно ли два разных формата

Подозреваю, что их нужно намного больше, чем два.

parent From Anonymous (Michael) (unverified) Tue Oct 17 19:40:33 2023 pencil

Re: Re: Математические символы

Всё путем сравнения познается. XML может и поганый, но тогда интересно какими словами вы охарактеризуете разметку JSON.

parent From Andrey V. Stolyarov profile Tue Oct 17 20:38:53 2023 pencil

userpic

Re: Математические символы

Цитирую сам себя:

All these “semi-structured” formats, primarily SGML and its descenders XML and HTML, were initially intended for native language text markup. The mere fact people come up with other markup languages, such as ReST, BBcode, various wiki languages, Gemtext etc., clearly demonstrates one thing: HTML is a failure. These “angle-bracketed tags” are too bad even for the purpose they were intended: for native-language document formatting.

As of using XML for machine-readable data (which is not a native-language text), it is simply a nonsense, and for healthy-minded people it was clear from the very start. But healthy-minded people are a dying-out species nowadays, as clearly shown by the mere fact such an ugly beast as JSON appeared long after it became clear nothing like this has any right nor even a reason to exist.

So here's the rule: data formats with recursive nesting are forbidden.

Primarily this applies to text-based formats, namely SGML-based languages (XML and HTML) and JSON, but in case you encounter binary format defined to have recursive nesting, please remember it is in no way better.

NB: if you think you really need recursive nesting, it means you just don't realize something important. Look, there's theory of databases. It is a well-known fact that relational model is able to solve any database-related task. And the First Normal Form (1NF) — the simplest one among the nine known normal forms — is, simply speaking, just a requirement for all values (elements in any column of any row) to be atomic.

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

parent From Anonymous (unverified) Wed Oct 18 12:34:31 2023 pencil

Re: Re: Re: Математические символы

Я, конечно, извиняюсь, но сравнивая json и xml, мне всегда казалось, что XML в разы хуже, чем JSON. Хотя бы наличием открывающего и закрывающего тега с дублированием имени.

parent From Andrey V. Stolyarov profile Wed Oct 18 13:55:35 2023 pencil

userpic

Re: Математические символы

Прежде всего:

сравнивая json и xml, мне всегда казалось

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

По существу вопроса: полагаю, что сравнение сортов дерьма — дело неблагодарное, но при этом есть парочка интересных моментов. Для разметки естественного текста XML (или скорее SGML с добавлением "и его потомки") хоть как-то подходит, JSON не подходит и не предназначен для этого в принципе. Т.е. те, кто JSON придумали, изначально предполагали его именно как формат машиночитаемых данных, а не как язык разметки. Я не знаю, из какого перегнившего дерьма должен состоять мозг, чтобы такое выдумать, особенно с учётом того, что к тому времени УЖЕ повсеместно можно было наблюдать попытки в этой же роли использовать XML, и не было совершенно никаких проблем увидеть своими глазами, какая адская хрень из этого получается.

parent From Anonymous (unverified) Wed Oct 18 15:42:11 2023 pencil

Re: Re: Математические символы

Всё же JSON это не совсем даже формат данных. Он обрабатывается ныне как формат данных, но вообще-то это код на JavaScript. Когда он только появился, вся обработка его сводилась к скармливанию полученного файла тому же интерпретатору JS, в котором работала "обрабатывающая" его программа. Потом, конечно, все схватились за головы и быстренько сделали отдельные либы для его разбора, но всё равно это было эпично.

parent From Andrey V. Stolyarov profile Wed Oct 18 16:48:42 2023 pencil

userpic

Re: Математические символы

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

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

Хотя, конечно, больше всего тут доставляют те, кто ломанулись писать парсеры для JSON, вместо того чтобы элементарно и цинично дать по башке всем, кто в таком виде пытался передавать данные.

From Anonymous (unverified) Fri Oct 13 16:34:05 2023 pencil

Библиотека C++ "на все случаи жизни"

STL место на свалке истории. Boost давно скатился и творит какую-то невероятную фигню. Андрей Викторович, знаете какую-нибудь нормальную библиотеку для решения типовых проблем языка для C++98 (речь про сам язык, а не про STL и т.п.)?

Чтобы были динамические массивы, которые можно сортировать (нормально, .quik_sort(), а не std::sort) разными способами (.quik_sort(), .bubble_sort(), .merge_sort() and so on) Чтобы были списки однонаправленные и двунаправленные, карты (хэш-таблицы и двоичные деревья) с индексацией по нескольким ключам и так далее. Чтобы была нормальная строка, которую можно превратить в премитив (.to_int16(), .to_uint16(), .to_int32(), .to_uint32(), .to_float32() and so on) и проверить сколько уникальных символов в ней есть, найти все вхождения подстроки.

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

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

parent From Andrey V. Stolyarov profile Fri Oct 13 17:04:01 2023 pencil

userpic

Re: Библиотека C++ "на все случаи жизни"

Ага, ну конечно.

STL сделали, херня получилась.

Boost сделали, херня получилась.

Надо ещё что-нибудь сделать.

Когда в третий раз херня получится, пойдёте на четвёртый круг? Или всё-таки остановитесь? Хотя вряд ли, конечно, такие не останавливаются. Some people never learn.

Какого чёрта таких персонажей вообще тянет на мой сайт, а?

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

Если что: создателей Qt надо было пристрелить маленькими в кроватках. Но этого никто не сделал, а жаль.

parent From Anonymous (unverified) Sat Oct 14 09:08:56 2023 pencil

Re: Re: Библиотека C++ "на все случаи жизни"

>Если что: создателей Qt надо было пристрелить маленькими в кроватках. Но этого никто не сделал, а жаль.

Обратитесь в хамас, они как раз на этом специализируются

parent From Andrey V. Stolyarov profile Sat Oct 14 12:51:48 2023 pencil

userpic

Re: Библиотека C++ "на все случаи жизни"

Я сильно сомневаюсь, что в их распоряжении имеется машина времени.

parent From Anonymous (unverified) Wed Oct 18 15:47:58 2023 pencil

Re: Библиотека C++ "на все случаи жизни"

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

parent From Andrey V. Stolyarov profile Wed Oct 18 20:48:15 2023 pencil

userpic

Re: Библиотека C++ "на все случаи жизни"

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

From Anonymous (unverified) Thu Oct 12 19:24:17 2023 pencil

Мечтать не вредно

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

Можно отгородиться? Но это не на всегда. Зверь в клетке только яростней становится. Государство защитит? Не всегда прибывает в нужное время и нужное место

По-моему, самое адекватное - вооружаться самому.

parent From Andrey V. Stolyarov profile Thu Oct 12 20:46:49 2023 pencil

userpic

Re: Мечтать не вредно

> в предверии

Гм, пред-верие... Это как, ещё не верю, но вот-вот поверю? Достали уже, следите за тем, что печатаете. Если что, из контекста тут должно быть скорее "преддверие", но...

> последних событий

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

> то что с ними делать?

Если они не являются гражданами одного с вами государства, то ответ очевиден: уничтожать.

Если являются, то да, вопросы к государству. Впрочем, если оно почему-то не справляется, то останется тоже только уничтожать. Но оно, как ни странно, обычно справляется. Которые не справляются — перестают существовать как государства, превращаются в failed state.

> Можно отгородиться?

Нельзя. В смысле можно, но бесполезно, всё равно прорвёт.

> самое адекватное - вооружаться самому

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

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

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

parent From Anonymous (unverified) Sun Oct 15 10:12:04 2023 pencil

Re: Re: Мечтать не вредно

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

parent From Andrey V. Stolyarov profile Sun Oct 15 11:53:32 2023 pencil

userpic

да хоть супермаркет

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

From Anonymous (unverified) Thu Oct 12 06:19:10 2023 pencil

есть мнение ?

Как вам книга "Чистый код" (автор Robert Martin) ?

parent From Andrey V. Stolyarov profile Thu Oct 12 09:55:42 2023 pencil

parent From Anonymous (unverified) Thu Oct 12 11:26:51 2023 pencil

Re: Re: есть мнение ?

А её имеет смысл читать если уже прочитал четырёх/трёхтомник?

parent From Andrey V. Stolyarov profile Thu Oct 12 11:43:40 2023 pencil

userpic

Re: есть мнение ?

Из неё много материала вошло в текст трёхтомника — по кусочку в разных местах. Но, во-первых, разрозненно, а во-вторых, всё-таки не всё. Так что да, пожалуй, всё же имеет.

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

From Alejandro profile Thu Oct 12 06:05:40 2023 pencil

GNU Readline

Здравствуйте, Андрей Викторович. В параграфе 8.2.3 вы описываете функции sigsetjump и siglongjump и как они используются с функциями библиотеки Readline. Есть такой вопрос: как вы думаете, почему авторы Readline использовали такой, хм, необычный способ завершать выполнение функций?

parent From Andrey V. Stolyarov profile Thu Oct 12 09:58:05 2023 pencil

userpic

Re: GNU Readline

Подозреваю, что это было тупо первое, что в голову пришло. Иного объяснения этому чудовищному решению у меня нет.

From В Раздумье (unverified) Sat Oct 7 18:17:46 2023 pencil

Кратенькая история UNIX в начале четвёртой части Учебника

В части 4 всех изданий учебника к истории UNIX, уже кратко изложенной в первом томе, добавлена примерно такая фраза: "система уже работала на популярной тогда PDP-11, которая была несовместима с PDP-7 по машинному коду, но ассемблерные мнемоники на этих компьютерах использовались почти одинаковые, так что перенести систему с одной машины на другую удалось сравнительно быстро"

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

PDP-7 UNIX: http://www.tuhs.org/cgi-bin/utree.pl?file=PDP7-Unix/sys/s4.s

alloc: 0
   -1			" Decrement the # free block numbers in the cache
   tad s.nfblks		" kept at s.fblks. Jump to 1f if no free blocks left.
   spa
   jmp 1f
   dac s.nfblks		" Update the count of free block numbers
   tad fblksp
   jms laci
   dac 9f+t
   jms copyz; dskbuf; 64
   lac 9f+t
   jms dskwr
   dzm .savblk
   lac 9f+t
   jmp alloc i		" Return from routine
1:
   lac s.nxfblk
   sna
   jms halt " OUT OF DISK
   dac s.fblks
   jms dskrd
   lac dskbuf
   dac s.nxfblk
   jms copy; dskbuf+1; s.fblks+1; 9
   lac d10
   dac s.nfblks
   jmp alloc+1

PDP11: http://www.tuhs.org/cgi-bin/utree.pl?file=V1/u5.s

alloc:
	mov	r2,-(sp) / save r2, r3 on stack
	mov	r3,-(sp)
	mov	$systm,r2 / start of inode and free storage map for drum
	tst	cdev
	beq	1f / drum is device
	mov	$mount,r2 / disk or tape is device, start of inode and free
	                  / storage map
1:
	mov	(r2)+,r1 / first word contains number of bytes in free
			 / storage map
	asl	r1 / multiply r1 by eight gives, number of blocks in device
	asl	r1
	asl	r1
	mov	r1,-(sp) / save # of blocks in device on stack
	clr	r1 / r1 contains bit count of free storage map
1:
	mov	(r2)+,r3 / word of free storage map in r3
	bne	1f / branch if any free blocks in this word
	add	$16.,r1
	cmp	r1 ,(sp) / have we examined all free storage bytes
	blo	1b
	jmp	panic / found no free storage
1:
	asr	r3 / find a free block
	bcs	1f / branch when free block found; bit for block k is in
		   / byte k/8 / in bit k (mod 8)
	inc	r1 / increment bit count in bit k (mod8)
	br	1b
1:
	tst	(sp)+ / bump sp
	jsr	r0,3f / have found a free block
	bic	r3,(r2) / set bit for this block i.e. assign block
	br	2f

free:
	mov	r2,-(sp) / save r2, r3
	mov	r3,-(sp)
	jsr	r0,3f / set up bit mask and word no. in free storage map
		      / for block
	bis	r3,(r2) / set free storage block bit; indicates free block
2:
	mov	(sp)+,r3 / restore r2, r3
	mov	(sp)+,r2
	tst	cdev / cdev = 0, block structured, drum; cdev = 1
		     / mountable device
	bne	1f
	incb	smod / set super block modified for drum
	rts	r0
1:
	incb	mmod / set super block modified for mountable device
	rts	r0

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

parent From Andrey V. Stolyarov profile Sat Oct 7 19:20:41 2023 pencil

userpic

Re: Кратенькая история UNIX в начале четвёртой части Учебника

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

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

P.S. поменял в вашем комменте тэги code на pre, ибо code делает совершенно не это.

From Anonymous (unverified) Sat Oct 7 02:32:58 2023 pencil

Архив гостевой

Теперь сюда http://stolyarov.info/guestbook/archive можно попасть по стрелочке вверх ⇑ ?

parent From Andrey V. Stolyarov profile Sat Oct 7 02:54:37 2023 pencil

userpic

Re: Архив гостевой

В смысле "теперь"? Раньше тоже можно было, ровно с момента перехода на новый движок.

parent From Anonymous (unverified) Sat Oct 7 03:07:25 2023 pencil

Re: Re: Архив гостевой

Неправильный вопрос. Кроме стрелочки где-то есть ещё ссылка русским языком с текстом "Архив гостевой"?

parent From Andrey V. Stolyarov profile Sat Oct 7 10:47:47 2023 pencil

userpic

Re: Re: Re: Архив гостевой

Хороший вопрос, кстати. Пожалуй, сейчас сделаю.

From Anonymous (unverified) Thu Jul 27 19:15:18 2023 pencil

Грязные хаки с памятью

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

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

Вы часто упоминаете что на машинах Фон Неймана нужно работать с памятью. А нужно ли это за пределом ассемблера?

Даже на чистом Си, где работа с памятью неизбежна все стремятся с ней по возможности не работать. Попытаюсь пояснить.

struct some_data a, b;
memcpy(&b, &a, sizeof(struct some_data));

или

struct some_data a, b;
b = a;

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

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

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

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

Как думаете, здравый ли это подход: выкинуть работу с памятью из прикладного ПО, заменив её высокоуровневыми конструкциями, которые реализуют те немногие нужды работы с памятью так же эффективно?

parent From admin profile Fri Oct 6 00:10:51 2023 pencil

userpic

Об одном популярном мифе и его последствиях

Конечно, плотность грубейших косяков в этом коротеньком тексте способна удивить сама по себе. Начать с того, что работу с адресами и указателями ТС обзывает "работой с памятью" (если что, с памятью работает вообще любая программа на любом языке). Ещё ТС неявно отождествляет системное программирование с работой на языке ассемблера, что уже просто кромешная чушь. А кроме того — выражает надежду, что можно придумать язык, который "работал бы так же быстро как С", хотя как раз скорость работы тут сто лет не главное, и вообще это не характеристика языка как такового, тормозную программу можно написать на любом языке, не исключая языков ассемблера; и если программа тормозит, то виноват (всегда!) не язык, а автор программы. Но это всё, как ни странно, не так уж важно.

Более интересное мифотворчество начинается с утверждения, что эта вот, в терминологии автора коммента, "работа с памятью" якобы представляет собой "просто лишнее усложнение". Делается даже заявление, что-де "все стремятся" присваивать переменные структурного типа вместо явного вызова memcpy. Ага, вот прямо все. Не знаю, кто такие эти "все" и где ТС их откопал, но лично я не припомню, когда в последний раз видел присваивание переменных структурного типа, передачу их по значению в функции или возврат их из функций в качестве значения в программах на чистом Си. В C++ — сколько угодно, но это совершенно другой язык с другими традициями (дополнительное пояснение см.ниже); если же такое встречается в коде на чистом Си — это довольно явный признак профнепригодности или как минимум полного непонимания, что такое этот самый чистый Си и зачем он нужен.

На всякий случай отмечу, что в таких случаях явный вызов memcpy играет очевидную дисциплинирующую роль: копирования структур как целого можно избежать едва ли не в любой задаче (если чуть-чуть подумать, обычно оказывается, что достаточно присвоить/скопировать/передать либо адрес, либо какое-нибудь одно поле, в крайнем случае два, возможно, ценой небольшой модификации используемого алгоритма), плюс к тому во многих случаях копирование структуры — это в принципе не то, что с ней следует делать (например, когда переменная "владеет" чем-то за пределами самой себя, неважно, память это, файловый дескриптор или ещё какой-то ресурс), но когда это копирование делается одной операцией присваивания, программист обычно просто перестаёт обо всём этом думать. В C++ так можно, поскольку там переопределением присваивания и введением собственного конструктора копирования можно бремя отслеживания корректности копирования компаундов благополучно взвалить на компилятор и забыть о нём, но в чистом Си забывать о содержимом структуры недопустимо.

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

Между прочим, языки, в которых динамическая память, как выразился ТС, является "фундаментальными конструкциями языка", давно уже придуманы, можно ничего нового не городить. Вся скриптуха, например, именно такова. Лиспы там всякие, опять же. Да и вообще всё, кроме тех языков, с которыми хоть как-то ещё можно работать в качестве языков общего назначения (а таких я знаю ровно два: чистый Си и C++, оба ужасны, оба сделаны чёрт-те как, но всё остальное вообще никуда не годится).

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

Пожалуй, здесь я не откажу себе в удовольствии процитировать самого себя (см. третий том, пар. 9.3.3 "Два подхода к сравнению языков"):

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

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

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

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

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

parent From nelson profile Sat Oct 7 16:01:25 2023 pencil

Re: Грязные хаки с памятью

Даже на чистом Си, где работа с памятью неизбежна все стремятся с ней по возможности не работать.

Вас обманули.

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

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

Может резко, но реально задолбали эти страдания "сложна работать с памятью". Сложно, ну иди в доставку еды или ещё куда.

parent From Andrey V. Stolyarov profile Sat Oct 7 16:40:01 2023 pencil

userpic

Re: Грязные хаки с памятью

> должны создавать какой-то инструмент под его глупые запросы?

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

parent From Anonymous (unverified) Mon Oct 9 09:12:05 2023 pencil

Re: Re: Грязные хаки с памятью

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

parent From Andrey V. Stolyarov profile Mon Oct 9 10:40:26 2023 pencil

userpic

Re: Грязные хаки с памятью

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

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

parent From nelson profile Mon Oct 9 11:56:14 2023 pencil

Мартышки-жертвы

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

parent From Gogi (unverified) Mon Oct 30 14:20:41 2023 pencil

Re: Re: Грязные хаки с памятью

Насколько мне известно, в разработке go основную (ну или по крайней мере очень значительную) роль сыграли Дэнис Ритчи, Кен Томпсон и Роб Пайк.

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

parent From Andrey V. Stolyarov profile Mon Oct 30 15:39:05 2023 pencil

userpic

ух какое жирное, даже удивительно

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

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

Так ты что сказать-то хочешь? Что если типа "уважаемые люди делали", то это дерьмо — Go, изначально предполагающий сборку мусора — станет чем-то отличным от дерьма? Вообще мне вот что интересно, тебя кто научил, что ссылка на авторитет может выступать самостоятельным аргументом? Ну так Торвальдс вон вообще говорит, что goto можно использовать сколько угодно, а все, кто придумал, что от goto есть вред — это жертвы образования по специальности computer science (в отличие от software engineering). А ещё анекдот есть про прапорщика, которого спрашивали, летают ли крокодилы. Вот он тут как раз к месту.

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

UPD: Что непонятно? Вон с моего сайта, тема закрыта, любые твои дальнейшие комментарии премод не пройдут.

parent From nelson profile Mon Oct 30 16:49:16 2023 pencil

Re: Re: Re: Грязные хаки с памятью

в разработке go основную (ну или по крайней мере очень значительную) роль сыграли Дэнис Ритчи, Кен Томпсон и Роб Пайк.

Какая разница кто там принял участие, если на выходе получился очередной нескучный язычёк для мартышек?

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

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

Хотя, что тут объяснять: для ньюфагов любое изделие от хухля - это априори "безусловное нужно".


pencil

пояснение


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

Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда.

Андрей Михайлович Столяров в библиотеке Мошкова

ваш сеанс


Авторские права © Андрей Викт. Столяров, 2009 — 2024