Гостевая книгаЗдесь вы можете оставить сообщение для владельца сайта, отзыв о функционировании, оформлении, содержании и вообще написать всё, что думаете по этому поводу. Просьба придерживаться темы («по этому» — это ещё не «по любому») и соблюдать приличия :-) Обратите внимание, что связаться с автором сайта можно также и через страницу обратной связи, которая позволяет отправить автору email. Более старые комментарии можно посмотреть в архиве гостевой книги. Учтите, что комментарии на этом сайте премодерируются. ![]() |
пояснениеВы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям. Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда. Андрей Михайлович Столяров в библиотеке Мошковаваш сеанс |
☞ From Anonymous (unverified) Wed Nov 29 13:37:11 2023
Кодогенерация в Си
В ANSI C (который успел стать "классикой", после фактического вымирания K&R) ещё нет конструкции препроцессора
, которая позволяет "приклеивать" аргументы макроса к тексту. (Такое появилось только в C99, использование которого весьма сомнительно).
В связи с чем вот какой вопрос: а как писать шаблоны на Си? В C99 можно написать
внутри которого будет созданы структуры и функции вида some_##T (например some_int, some_float и т.п.).
Насколько я понял, раньше это решали кодогенерацией. Как это предпочитаете делать Вы? Много слышал о GNU Autogen, но никогда не пробовал. Кто-то говорит, что генерят скриптами.
ответить
Re: Кодогенерация в Си
> ещё нет конструкции
С чего бы это вы так уверены?
Текста стандарта у меня под рукой нет, да и не полез бы туда, но компиляторов, не поддерживающих
##
(при сколь угодно жёстких ограничениях, заданных флагами) мне не встречалось. Впрочем,...> как писать шаблоны на Си?
мой ответ в любом случае совершенно однозначен: никак. Независимо от того, возможно это или нет.
> раньше это решали кодогенерацией
Генерация кода — это, конечно, инструмент важный и нужный, но уж точно не для подобных извращений.
> Как это предпочитаете делать Вы?
Ну, ответ очевиден, но на всякий случай повторю: никак.
> GNU Autogen, но никогда не пробовал
И не пробуйте. Пожалейте тех, кому ваше изделие придётся собирать.
ответить
☞ From Anonymous (unverified) Wed Nov 22 09:42:12 2023
Антинатализм
Здравствуйте, как относитесь к антинатализму? Считаете ли вы акт рождения/зачатия человека, насилием по отношению к рожденному со стороны его родителей?
Ведь человек появился на свет, во первых, заведомо против своей воли (нельзя спросить разрешения у того, кого еще несуществует), и во вторых, с гарантией обречен на страдания в том или ином количестве по сравнению с "нибытием" до рождения.
Эти страдания можно либо приуменьшить, либо приумножить, но полностью их избежать невозможно, в то время как несуществующая личность страдать по определению не способна. На аргумент "У каждого есть свобода прекратить свою жизнь" я считаю не уместным, так как попытка суицида зачастую болезненна, может быть неудачна, принесет страдания близким, и даже если будет использована эвтаназия и у человека нет близких, насилие уже совершено и некое количество страданий он уже получил, что хуже их полного отсутствия.
ответить
Re: Антинатализм
Всё сказанное достаточно очевидно, я бы добавил ещё, что рождение человека обрекает его на смерть. Страдания ещё можно попытаться "уравновесить" получаемыми в течение жизни удовольствиями, и даже заявить, что наслаждения в жизни превалируют, а типа страдания — это так, незначительный побочный эффект; но вот предстоящую смерть так просто "отменить" не получится.
Больше того, процесс, известный под термином "воспитание", представляет собой перманентное насилие, "в лучшем случае" (хотя ничем он не лучший) чисто информационное, и избежать этого, если ребёнок уже рождён, нельзя вообще никак.
Вопрос лишь в том, какие из этого следует сделать выводы.
Лично для себя я несомненным здесь считаю только один вывод — что для индивида нет большей глупости, как благодарить своих родителей (как и кого бы то ни было ещё) за сам факт его, индивида, существования. А со стороны родителей — ожидать такой благодарности от своих детей.
ответить
Re: Re: Антинатализм
Ну не очевидно тут например что с этим делать, ведь запрещать другим рожать детей само по себе грубейшее нарушение свободы, да и с технической точки зрения, гуманно реализовать это врядли получится. Еще есть вариант добровольного вымирание человечества путем отказа от рождения детей всех 8 миллиард человек поголовно, чего ждать не следует. Остается только смирится и принять...
ответить
Re: Антинатализм
Если цивилизация устоит (что в свете последних событий, особенно пропалестинских демонстраций в европейских столицах, совершенно не факт), то рано или поздно будет достигнуто индивидуальное потенциальное бессмертие (в том смысле, что умереть можно только в результате несчастного случая или самоубийства; биологическое старение остановлено, все болезни лечатся). После этого, подозреваю, даже не придётся ничего запрещать, рождение детей само собой естественным путём перейдёт в категорию общественно-осуждаемых поступков, примерно как сейчас кошек мучить.
Что касается запрета кому-то рожать (якобы в интересах нерождённых детей), то тут есть один интересный момент. Вот лично я вообще считаю, что всякая этика, мораль и прочие подобные сущности — не более чем словоблудие, притом опасное словоблудие, которое можно и нужно изживать. При этом мне от окружающего мира нужно ровно одно: моя личная свобода, то есть меня вообще всё остальное интересует лишь постольку, поскольку оно уменьшает или увеличивает мою личную свободу. В современных условиях добиваться свободы лично для себя эффективнее всего через свободу для всех; в этом плане общий запрет на инициированное насилие повышает мою свободу, а не понижает её, несмотря на то, что на меня этот запрет тоже распространяется. Т.е. я готов терпеть запрет врезать кому-то кирпичом по башке, но лишь потому, что взамен всем другим запрещено мне выдать кирпичом по башке, так что я тут получаю больше, чем теряю. Т.е. здесь получается, что каждый в ответ на защиту его интересов (не получать кирпичом по башке, в этом заинтересованы буквально все) предоставляет собственное согласие тоже никому кирпичом по башке не шарашить.
А теперь, внимание, вопрос: что конкретно я получу для себя, если в обществе будет запрещено рожать детей? Меня-то самого уже родили, всё. Ну а нерождённые дети в ответ на якобы защиту их интересов не могут предоставить буквально ничего, их же нет.
ответить
Re: Re: Антинатализм
Однажды я задумался, что было бы, если бы люди могли умереть только из-за некоего внешнего воздействия, но не от дряхлости или болезни. Честно говоря, мне стало противно. Эти люди представились мне потрясающе трусливыми и совершенно беспринципными созданиями.
ответить
Мысль не нова
Любые аргументы против биологического бессмертия я готов рассматривать не раньше, чем они будут исходить от лиц, обладающих этим самым биологическим бессмертием. Пока, насколько я понимаю, таких лиц нет, так что все (вот то есть вообще любые) разговоры, что, мол, нету и не надо, относятся к категории "зелен виноград".
Впрочем, Юрий Нестеренко в своё время написал рассказ Дневник мальчика, в котором, в числе прочего, фигурировала некая "последняя война", в ходе которой были физически истреблены все противники индивидуального бессмертия. И да, я полностью согласен с героем рассказа в его мысли по этому поводу (рассказ ведётся от лица девятилетнего мальчика эпохи, когда индивидуальное бессмертие стало нормой):
ответить
Re: Мысль не нова
Я не против бессмертия) Но меня пугают возможные метаморфозы личности от этого.
Ссылка на рассказ ведёт не на сам рассказ, а на главную сайта, и я бы не назвал её содержимое нейтральным (я уж как-нибудь сам разберусь со своей этнической принадлежностью). Видимо, это из-за жабаскрипта.
ответить
Re: Мысль не нова
Ссылку поправил, прошу прощения. Та страница, на которую предыдущая ссылка вела, да, э... ну в общем автор рассказа слегка с прибабахом, это давно известно. Я, что характерно, эту страницу увидел только после того, как попробовал ссылку (ту, что была) в деле. Как ни странно, это не из-за JS, это из-за фреймов, и там даже инструкция есть, "как правильно ставить ссылки", но в целом нахер надо так делать — вопрос не ко мне.
Касаемо возможных метаморфоз личности — с одной стороны, новое всегда пугает, а с другой — жить для себя намного проще, когда растущая арифметическая разница между текущим годом и годом рождения перестаёт напрягать. Ну а когда все живут именно что для себя, в обществе становится намного меньше всяких нехороших эксцессов.
ответить
Re: Re: Мысль не нова
> возможные метаморфозы личности
Проще говоря, "вы зае... устанете столько жить" :)
> а на главную сайта
Спасибо за сэкономленное (потенциально) время :-) Но что там связанного с этническими моментами?
ответить
Re: Мысль не нова
Для тех, кто начал уставать жить, существует очень много вариантов развлечений, сопряжённых с риском для жизни. Я вон в своё время с парашютом прыгал, пока ногу не сломал, и даже после этого немножко ещё попрыгал, но мотивацию утратил и в итоге бросил, напрыгав 309 прыжков. Но вообще-то парашютизм — как ни странно, довольно безопасное занятие. А вот в области спортивного туризма у меня получилось интереснее, там я дошёл до КМС (увы, грядущей весной протухнет, оно на три года выдаётся), и пару раз в водных походах реально был на грани летального исхода, типа, на тоненького, то есть спасли товарищи по группе, но могли вполне и не спасти. Если жизнь по времени потенциально не ограничена, то вот такие вот мероприятия, сопряжённые с небольшим вроде бы риском, чисто вероятностно обеспечат не слишком долгую жизнь, но при этом можно будет не обращать внимания на циферку текущего возраста — по-моему, это бесценно.
Что касается сайта — ну, типа, сходите на главную (в смысле с пустой локальной частью URL'а, там кликните по башне, дальше можете полюбоваться. Как относиться к представленным там точкам зрения на разные вопросы — личное дело каждого, с чем-то я даже согласен :-)
ответить
Re: Re: Мысль не нова
Ну так это вы :-) А сколько людей не сделали на свете не сделали вообще ни одного прыжка с парашютом, и даже CMS'ки для собственного сайта не написали :) От такой скуки реально можно при случае устать.
> там кликните по башне, дальше можете полюбоваться
А, нашёл. На свою голову...
ответить
Re: Мысль не нова
Подозреваю, что как раз те, кто ничего интересного не делают, от скуки не страдают совершенно. Иначе нашли бы себе заморочку, не ту так другую. Экстремальные занятия — это как раз для тех, кому внезапно стало скучно.
ответить
☞ From Proton (unverified) Wed Nov 22 08:06:22 2023
Книги
Здравствуйте, Андрей Викторович, очень нравятся ваши книги "Программирование введение в профессию". Подскажите пожалуйста какой-нибудь аналог ваших книг на английском языке. Чтобы прям излагалось всё с полнейшего нуля и с простой подачей. Спасибо!)
ответить
Re: Книги
Когда я в 2015 году начинал этот трёхтомник писать, точно знал, что на русском ничего подобного нет, но был практически уверен, что уж на английском-то кто-нибудь что-то похожее уже сделал. За прошедшие восемь (вот уже скоро девять) лет так ничего и не обнаружилось. Похоже, действительно нет.
ответить
☞ From Anonymous (unverified) Mon Nov 20 21:12:27 2023
Что почитать из Лема
Андрей Викторович, добрый день.
В интервью с АйТи Бородой (да, давно было дело, но решил посмотреть) вы упоминаете книгу Станислава Лема "Возвращение со звёзд", но говорите, что без подготовки начинать с этой книги знакомство с творчеством Лема не стоит.
Что бы вы посоветовали почитать? Хочу приобщиться.
ответить
Re: Что почитать из Лема
Вообще, конечно, путь у каждого свой, но раз уж спросили — попробую ответить.
Начните с рассказов, сборники "Кибериада", "Сказки роботов", "Звёздные дневники Ийона Тихого", "Рассказы о пилоте Пирксе". Из более крупной формы — ну, "Непобедимый", например. Потом уже, пожалуй, в любом порядке "Осмотр на месте", "Дознание", "Футурологический конгресс", да тот же "Солярис", в принципе. Ну и где-то тут "Возвращение со звёзд". Можно и раньше. А уже после них — "Мнимая величина", "Абсолютная пустота", ну и "Больница преображений" (на всякий случай: это вообще не фантастика).
А вообще, честно говоря, фигня это всё, просто берите всё, что под руку попадётся, и читайте. Лем стоит потраченного на него времени.
ответить
☞ From Anonymous (unverified) Sun Nov 19 09:00:33 2023
Текстовый интерфейс
Здравствуйте. Появилась необходимость написать программу с текстовым пользовательским интерфейсом, но хотелось бы использовать для этого средства, которыми можно было бы пользоваться и в долгосрочной перспективе. Из Вашей книги узнал про библиотеку ncurses, но считаете ли вы ее тем самым инструментом для длительного (в течение многих лет) использования?
ответить
Re: Текстовый интерфейс
Сугубо учебным материалом я считаю только то, что в первом томе. Что касается ncurses, то с её использованием написано чуть менее чем всё, что работает в терминале "на весь экран". Ну то есть не всё, конечно, контрпримеры найти можно, но это надо специально искать.
ответить
☞ From Anonymous (unverified) Sun Nov 19 07:04:42 2023
Книги по Linux/Unix
Добрый день, Андрей Викторович. Не могли бы вы посоветовать дополнительную литературу для изучения Linux/Unix? Или второго тома в целом достаточно?
ответить
Re: Книги по Linux/Unix
Честно говоря, вопрос не вполне понятен. Достаточно для чего? Для программирования в ядре, конечно, не достаточно. Для построения датацентров тоже, наверное, недостаточно. Да даже для написания программ с GUI недостаточно, хотя тут третий том, возможно, спасёт :-)
Я больше скажу, моих книг "недостаточно", чтобы просто перенести всю свою работу в тот же Linux, ведь в них не описано, как поставить Linux — и не может быть написано, поскольку конкретика зависит от дистрибутива, а дистрибутивов этих — сотни.
С другой стороны, наверное, моих книг достаточно, чтобы при условии, что вы уже работаете под *nix, самостоятельно осознать, что представляет собой вставшая перед вами конкретная задача, чего не хватает для её решения, откуда взять всю недостающую информацию и как понять тексты источников этой информации.
ответить
Re: Книги по Linux/Unix
https://download.freebsd.org/doc/en/books/handbook/handbook_en.pdf
многое для линукса актуально. сюда наверное можно отнести генту хендбук и генту вики, это не значит, что я рекомендую вообще связываться с ос генту. дальше можно почитать форум фряхи, если поискать есть книги о разработке ядра и драйверов от разрабов ос, советовать из них ничего не стану в теме не секу
ответить
Re: Книги по Linux/Unix
На всякий случай: коммент я раскрыл, пусть будет, но сам я этот handbook не видел, понятия не имею, что он собой представляет и никоим образом не даю ему никаких рекомендаций (ни положительных, ни отрицательных).
ответить
Re: Книги по Linux/Unix
Установите себе Slackware, и в Интернете можно найти руководство, книжку по Slackware. Кроме книг и документации в Интернете, в самой Slackware есть документация в /usr/doc/. По мне, это - хороший способ именно изучить Линукс.
ответить
Re: Книги по Linux/Unix
Я тоже задался подобным вопросом после прочтения второго тома. И тут мне на помощь пришел список литературы, из которого я узнал о таких фундаментальных работах как "UNIX: Разработка сетевых приложений" и "UNIX: взаимодействие процессов" Уильяма Стивенса (знаю, что это легендарные книги, про которые слышали почти всё, но я на тот момент про них не знал).
ответить
Re: Книги по Linux/Unix
Вот уж не знаю, что в этих двух томах "легендарного". Хороший, годный справочник с понятными примерами, но по мне так не более того. Ну то есть я не могу себе представить варианта "читать" Стивенса, в смысле вот прямо взять, сесть за книгу и вперёд от корки до корки. То есть, конечно, физически это возможно, но я в этом не вижу никакого смысла.
ответить
☞ From Anonymous (unverified) Fri Nov 17 08:18:22 2023
FAQ. Многопоточное программирование
Здравствуйте, Андрей Викторович. Можно ли добавить в FAQ обсуждение про многопоточное программирование?
ответить
Re: FAQ. Многопоточное программирование
Так? Или какое-то другое ещё?
ответить
Re: Re: FAQ. Многопоточное программирование
Да, спасибо большое!
ответить
☞ From Anonymous (unverified) Tue Nov 14 09:33:06 2023
Объективная реальность математики?
Не знаю, спрашивали у вас это в комментариях или нет, но вот такой вопрос есть.
Вот все эти штуки, которые исследуются математикой — числа, фигуры, функции и прочие более странные вещи вроде тензоров.
Они существуют объективно и математики их только открывают или они являются лишь плодом их размышлений и математики их создают?
Да, понятно, что можно придумать бесконечное множество разных формальных систем, но некоторые из них настолько простые и при этом мощные, что их открытие кажется неизбежным. В первую очередь, это конечно арифметика, затем её расширение от натуральных чисел к целым, рациональным, действительным и комплексным кажется неизбежным.
Так всё-таки была арифметика изобретена или открыта?
ответить
Re: Объективная реальность математики?
С тех пор, как появление сначала альтернативных геометрий, а потом математической логики как базиса для математики вышибло опору из-под всякой гуманитарной ерунды вроде "априорного знания" Канта, вот этот вот вопрос, причём именно в такой формулировке — считать ли математические теории открытиями или изобретениями — висит в воздухе и вряд ли может быть разрешён в ту или другую сторону. Есть, между прочим, и третий вариант — что математические теории следует считать произведениями искусства.
ответить
Re: Re: Объективная реальность математики?
Но кстати и с технологиями всё не так просто.
Палка-копалка — это изобретение или открытие того, что с палкой землю копать легче, чем просто пальцами? Огонь — это изобретение или открытие уже существующего класса химических реакций? А колесо?
Вот какие-то более сложные штуки — это уже несомненно изобретения, поскольку пространство вариантов становится просто монструозным, если взять механизмы из шестерёнок и рычажков, или электронные схемы или ещё что-то такое.
ответить
Re: Объективная реальность математики?
> Палка-копалка — это изобретение или открытие того, что с палкой землю копать легче
Подозреваю, что палка-копалка — это именно изобретение. "Открытием" тут можно считать разве что установление того факта, что дерево твёрже и прочнее пальцев, но само по себе это открытие могло в течение многих поколений оставаться как есть и не приводить к появлению палки-копалки.
> Огонь — это изобретение или открытие уже существующего класса химических реакций?
Какие ещё нахрен химические реакции?! Что там реально происходит, стало понятно только после открытия кислорода, до этого ещё несколько сот лет мудрецы вешали друг дружке и публике лапшу в виде флогистона. Но и флогистонная теория возникла по глобальным меркам совсем недавно. Те же чуваки, которые придумали, что от огня можно не только убегать, но и использовать его для своей пользы, вообще-то ничего не открыли. Я даже не уверен, что они умели говорить (хотя тут я не уверен, не спец), а когда знание не может быть передано, говорить о каких бы то ни было открытиях несколько странно.
> А колесо?
Разумеется, изобретение. В природе нет колёс, так что "открыть" колесо невозможно за неимением.
А вообще это всё, как водится, бессмысленное терминологическое словоблудие. Причём бессмысленность его вполне очевидна: если сейчас, скажем, сдохнет очередной мамонт и я соглашусь, что и палка-копалка, и костёр (не огонь как таковой, именно костёр), и колесо внезапно перестали быть изобретениями и стали открытиями — от этого хоть что-нибудь изменится? По-моему, ровно ничего.
ответить
Re: Объективная реальность математики?
> Так всё-таки была арифметика изобретена или открыта?
Ни то, ни другое. Это некорректный вопрос, точнее его постановка. Возьмите любой естественный человеческий язык. Его главная и, в общем-то, единственная функция - описательная. Был ли он изобретён или открыт? Очевидно, ни то, ни другое. Я недаром оговорился про "естественность", потому что есть искусственные (плановые) языки вроде пресловутого эсперанто.
Точно то же самое с математикой и вообще любыми формализациями. От естественных языков они отличаются только одной вещью, но вещью фундаментальной: из них исключена неоднозначность передаваемого смысла ввиду наличия правил вывода. Тогда как любым естественным языкам она неотъемлемо присуща. Даже одно-единственное слово можно понять по-разному.
Скажем, например, слово "кошка". О чём идёт речь? О домашней кошке, о тигре, об абордажной кошке, об альпинистской или какой-нибудь ещё? И в естественных языках эта проблема НЕРЕШАЕМА принципиально. И единственный доступный людям способ её хоть как-то сводить к приемлемой, оставаясь в рамках своего языка - обыкновенная информационная избыточность. То есть говорить вместо "кошка" нечто вроде "животное ко́шка, на латыни называемое felis catus, живущее вместе с человеком, вес 3 килограмма, зовут Юлей". Но здесь моментально возникает проблема масштаба: устранив (и то не до конца) неоднозначность понятия "кошка", мы ввели гору других понятий. Что такое "латынь"? Что такое "человек"? Что такое "килограмм"?
На первый взгляд это может показаться абсурдным, но это буквально именно то, почему любые достаточно большие описательные тексты не имеют смысла. Потому что на самом деле они содержат в себе множество смыслов, которые оттуда можно извлечь. Большинство из них будет логически бессвязными, но смыслы оставшейся части будут вполне себе сопоставимы по выразительной состоятельности. И какого из них придерживаться? Какой именно принадлежит непосредственно автору, а какие являются вторичными? А что, если автор сам ошибался, но эта ошибка может быть исправлена просто чутка другим прочтением?
Здесь и начинается т.н. "борьба интерпретаций". И это та самая причина, которая погубила континентальную философию в начале прошлого века. Потому что открытия в области языка (начавшиеся, кстати, с Лобачевского и его переиначивания "пятого постулата") доказали, что он не абсолютен, а относителен, и поэтому не может использоваться для изложения сколь-нибудь сложных мыслей.
Теперь возвращаясь к Вашему вопросу. Возьмём, например, такой математический объект, как матрицы. Можно ли считать без них? Можно, конечно. Просто неудобно. А прямой аналог этого явления в мире естественных языков - непереводимые слова. То, на что русскому понадобится с десяток-другой слов, какой-нибудь швед выразит одним. И наоборот.
Или, например, можно взять историю Марджори Райс: https://en.wikipedia.org/wiki/Marjorie_Rice Её пример показателен тем, что для своего открытия она буквально изобрела собственный формализм, так как не обладала знанием общепринятой академической записи. Да, весьма запутанный и кривой. Но всё же формализм. Исключение самой возможности думать не в ту сторону. Сюда же можно отнести и математические нотации прошлого: https://en.wikipedia.org/wiki/History_of_mathematical_notation
Читайте аналитических философов, они все эти вопросы давно уже разобрали. Там проблемы уже совершенно другого порядка стоят. В конце концов, именно из Венского кружка в конечном итоге образовалась вся нынешняя математическая логика и информатика.
ответить
☞ From Anonymous (unverified) Sun Nov 12 05:57:33 2023
Онтологический аргумент
Чувствую, что он какой-то сомнительный, но логическую ошибку найти сразу не могу.
Считается, что бог совершенный, то есть обладает всеми положительными свойствами. Существование - положительное свойство. Следовательно, бог существует.
Интутивно кажется, что аргумент фигня, но найти в интернете толковое опровержение не удалось, наоборот пишут, что не фигня и что его можно исправить или сделать строго формальным, чтобы критика не работала.
ответить
Слишком тупо
Тут существенно больше одной ошибки, просто решето. Начать вот с этого:
> Считается, что бог совершенный
Первая ошибка — вот в этом слове "считается", точнее, в вашем толковании такового. Что значит "считается"? Поскольку ни из чего внешнего это не следует, сие есть предположение. Т.е. в действительности тут говорится следующее: "Предположим, существует бог, т.е. нечто обладающее всеми положительными свойствами. Тогда бог существует". Если выкинуть конкретику, тут имеет место "Пусть существует A. Тогда существует A." Обыкновенная тавтология.
Дальше как в старом мультике: "-- Не хочу идти к кактусу, он колючий! -- Допустим, он не колючий. -- Нет, не допустим!"
Но это далеко не всё. Что такое "положительные свойства"? Вот вам парочка примеров from the real life: скажем, быть патриотом — положительное свойство? Между прочим, большинство людей считает, что да, а я вот считаю, что патриотам, причём вне зависимости от национальной принадлежности, место за пятью решётками, а лучше вообще в гробу, поскольку это именно от патриотов и войны, и терроризм. Или вот вам другой пример: "быть китайцем" — положительное свойство? Тут я свой ответ оставлю при себе :-)
Возвращаясь к рассматриваемому примеру, задам такой вопрос: а с какого бодуна существование — положительное свойство? Вон Хайдеггер всю жизнь потратил на "исследование" не-сущего, и, похоже, только его, вот это вот "ничто", полагал реально стоящим внимания. Ну, мы можем заявить, что Хайдеггер был неправ, но он, будь он ещё жив, вряд ли нас бы послушал.
Т.е. получается, что и множество "положительных свойств" ни из чего не следует и просто постулируется, точнее, в данном случае постулируется, что существование входит в множество положительных свойств. Если "вынести за скобки" предположение о существовании бога как таковое, получится (заметим, уже в выстроенном логическом универсуме, в котором бог предполагается существующим) "предположим, что бог обладает таким множеством свойств, в которое входит свойство существования; тогда бог существует". Т.е. ещё одна тавтология, да к тому же непонятно, нахрен вообще сдалось обосновывать существование бога внутри логической системы, где таковое существование уже предполагается самой системой.
Короче, это называется гуманитарщина в плохом смысле слова: заведомая чушь, облечённая в "умные" (на самом деле просто непонятные) слова и рассчитанная на публику, не умеющую думать.
ответить
Re: Слишком тупо
> Короче, это называется гуманитарщина в плохом смысле слова: заведомая чушь, облечённая в "умные" (на самом деле просто непонятные) слова и рассчитанная на публику, не умеющую думать.
Мне так не кажется. Всё-таки на эту тему писали учёные, которых трудно заподозрить в желании зомбировать население.
Я думаю, это просто что-то вроде логических парадоксов типа апорий Зенона и забавных трюков с математическим ожиданием вроде парадокса Монти-Холла и парадокса конвертов:
Вам предлагают взять один из двух запечатанных идентичных внешне конверта, в одном из которых вдвое больше денег, чем в другом. Когда вы берёте конверт, но пока ещё не открыли вам предлагают его поменять на другой. Стоит ли это делать?
С одной стороны, вроде пофиг, менять или не менять, что там неизвестное количество, что там. С другой стороны, предположим, у вас в конверте X денег. Тогда во втором конверте или X/2 или 2*X, причём эти исходы равновероятны. Тогда математическое ожидание получается M=X/2*0.5+2*X*0.5=1.25*X > X. То есть выгодно всё-таки поменять конверт?
Разумеется, там есть логическая ошибка, но сходу неочевидно где она скрывается. Ну и парадокс Монти-Холла подобный, но там выбрать предлагается из трёх вариантов, только один из которых выигрышный. Когда вы выбираете один из вариантов, ведущий убирает один из двух оставшихся вариантов, демонстируя, что он проигрышный и предлагает поменять выбор. Стоит ли его менять?
То есть наоборот, задачка для публики, умеющей думать. Хотя конечно в случае онтологическим аргументом потенциал для злоупотреблений больше.
ответить
Re: Слишком тупо
> Всё-таки на эту тему писали учёные
Да неужели? Ну, философы, разумеется, не учёные, вот тот же Хайдеггер — шваль безмозглая, а не учёный, да и вообще онтологией нормальный человек всерьёз заниматься не станет, там ничего, кроме бессмысленных заклинаний, невозможно, как и во многих других областях философии, в этике, например. Впрочем, среди философов были и учёные — это те, кто чего-то реального достиг в настоящей науке, с ходу припоминаются Паскаль (гениальный инженер, математик и физик, но совершенно отвратительный философ, прямо скажем), Декарт, Рассел, ну в меньшей степени Хомский.
И кто из них что-то подобное написал? А если не кто-то из них, то он, в принципе, тоже может быть учёным — так каковы его достижения за пределами гуманитарных псевдо- и лже-наук?
Впрочем, есть, конечно, и такие люди, которые философов и прочую гуманитарную публику держат за учёных. Если вы из тех, то на мой сайт забрели напрасно, вам не сюда.
И нет, к математическим софизмам всё это никакого отношения не имеет. Ну а всерьёз вспоминать про парадокс Зенона может разве что человек, патологически неспособный воспринять понятие предельного перехода.
ответить
Re: Re: Слишком тупо
Я Рене Декарта и Курта Гёделя имел ввиду. Правда Гёдель свою версию онтологического аргумента вродё публиковать вроде как не хотел из-за того что из-за этого люди могли подумать что он верующий.
Декарт много всяких штук придумал, например. Ну вот ещё Лейбниц был — он так вообще крут, придумал можно сказать половину матана пополам с Ньютоном. Правда он как раз против был этого аргумента, вроде как.
> Ну а всерьёз вспоминать про парадокс Зенона может разве что человек, патологически неспособный воспринять понятие предельного перехода.
У него там несколько было. И для своего времени они неплохо мозги ломали. Дихотомия и Ахиллес с черепахой - это да, предельный переход, который в то время ещё не придумали.
ответить
Re: Слишком тупо
Декарт, Гёдель и Лейбниц — несомненно, учёные. Стоит отметить, что их достижения в математике известны намного шире, нежели упражнения в онтологическом словоблудии.
Если рассматривать версию онтологического аргумента Декарта (см. тут), то там в кучу свалены два совершенно разных понятия "существует", а именно математическое (в математике, как известно, существующим считается любой абстрактный объект, который возможен, т.е. его описание не содержит в себе противоречий) и физическое, оно же обыденное, когда объект, причём ни фига не абстрактный, является частью реальности. Сомневаюсь, что кому-нибудь придёт в голову молиться, скажем, правильному додэкаэдру с ребром в 1м., точно так же вряд ли интересен такой бог, который существует лишь в том смысле, что его описание не содержит внутренних противоречий.
Дальше не смотрел. Откровенно говоря, жалко тратить время на подобную словесную шелуху.
ответить
☞ From Anonymous (unverified) Fri Nov 10 18:09:47 2023
Оконные менеджеры
Здравствуйте, в книге вы рекомендуете стараться избегать графики там, где в ней нет необходимости. А как вы относитесь к оконным менеджерам? Может могли бы порекомендовать какой, если не считаете это явление злом
ответить
Re: Оконные менеджеры
Я использую fvwm2, но публике обычно рекомендую IceWM. Кстати, в книге об этом сказано.
ответить
Re: Re: Оконные менеджеры
Если нужен тайлинг, dwm самый удобный (имхо, конечно) в использовании. Меньше 2к строк кода, на сайте также есть патчи от пользователей, потому что из коробки идёт только самый основной функционал. Андрей Викторович, как относитесь к suckless?
ответить
Про suckless
Идея suckless мне, безусловно, нравится, но на мой взгляд они в несомненно правильном направлении прошли недостаточно далеко. Мой собственный список табу намного шире, и это он ещё далеко не весь.
ответить
Про IceWM
В книге вы пишите "не подсаживаться" на него. Исходя из этого такой вопрос. Есть оконный менеджер, который прошел достаточно близко к в несомненно правильном направлении? Знаете ли вы такой и можете что-то предложить после использования IceWM?
ответить
Re: Про IceWM
Во-первых, посмотрите в грамматических справочниках, как правильно пишется глагол "писать" во втором лице множественного числа, если подразумевается изъявительное наклонение (в отличие от повелительного). Реально задрали уже.
Во-вторых, пойдите и поищите в моих книгах, где конкретно (издание, номер тома, страница или хотя бы параграф) я написал, что якобы нужно "не подсаживаться" на IceWM.
Пока будете искать, возможно, найдёте и ответ на ваш вопрос, который, разумеется, в книгах есть.
ответить
В книге
2 издание, 1 том, параграф 1.2, страница 133, 4 строка сверху. Цитирую: "Автор книги рискнет порекомендовать для начала IceWM, но не "подсаживаться" на него намертво;"
ответить
Re: В книге
Ага, это параграф 1.2.18, я уже забыл, что он там есть как отдельная сущность. Прошу пардону. Просто первое упоминание IceWM в книге изрядно раньше, в параграфе 1.2.3.
Впрочем, ответ на ваш вопрос находится буквально там же, в смысле прямо в том же абзаце: главное — НЕ использовать DE, а всё, что не DE, использовать можно, только желательно попробовать другие оконники, отличные от IceWM. Какой больше понравится, тот и используйте. Ну, этой фразы там нет, но она подразумевается, для чего ещё "пробовать другие оконники"?
ответить
Re: Про suckless
> список табу
Очень интересный и полезный текст, но, к сожалению, очень тяжело читается. Выглядит почти как пословный перевод с русского на английский. Ну и просто явные ошибки тоже есть.
Позвольте дать вам один совет, не пишите по-английски сложных предложений. Они там составляются совсем по другим правилам, чем в русском языке. Если вы будете писать короткими фразами, получится гораздо читабельнее.
ответить
Re: Про suckless
Это, конечно, никакой не перевод, поскольку русского оригинала не существует. От этого, впрочем, не легче: я знаю, что мой уровень английского слабоват для объёмных текстов (почему, кстати, не берусь за перевод своих книг на английский), и что с этим делать, я пока не понял.
Такой вопрос, вы не могли бы указать хотя бы на явные ошибки, коль скоро их видите? На всякий случай, исходник этой страницы, как и всей документации к Талассе, есть в архиве исходников Талассы, его дают здесь: http://thalassa.croco.net/download/, файл внутри архива называется
examples/thalassa/pages/banned_techniques
. Это не к тому, что обязательно с ним что-то делать, просто, возможно, будет удобнее.Наверняка там есть устойчивые ошибки, вот за их высвечивание я был бы особенно признателен.
А вот писать простыми предложениями я, увы, просто не умею, даже когда пытаюсь делать целенаправленные усилия.
ответить
Re: Re: Про suckless
> Это, конечно, никакой не перевод, поскольку русского оригинала не существует.
В каком-то смысле это всё-таки перевод. Очень явно видно, что вы сначала продумывали структуру предложения на русском, а потом уже переводили его на английский.
> Такой вопрос, вы не могли бы указать хотя бы на явные ошибки, коль скоро их видите?
Сходу вспоминаю одну устойчивую ошибку, использование "the lesser" вместо "the less" в паре мест.
В остальном пока сейчас времени нет, чтобы специально вычитывать. Да и не настолько я хорошо владею английским. Одно дело увидеть ошибку на уровне "по-английски так не пишут", а совсем другое адекватно объяснить, в чём именно ошибка. Не говоря уже про предложить вариант исправления.
Но буду помнить про ваш вопрос, когда буду перечитывать тот текст.
> А вот писать простыми предложениями я, увы, просто не умею, даже когда пытаюсь делать целенаправленные усилия.
Это самый простой способ, который мне приходит в голову. Другиим вариантом будет нанимать переводчика и/или редактора.
Ну вот смотрите, самый простой способ исправить "подъезжая к городу у меня слетела шляпа" не зная толком русского языка, это написать "Я подъехал к городу. У меня слетела шляпа."
ответить
Re: Про suckless
> вы сначала продумывали структуру предложения
Тут у вас, как говорят, глюк. Я не продумываю структуру предложения, я просто пишу. Когда потом читаю и вижу совсем уж жёсткого монстра, начинаю думать, как его переформулировать, но это бывает не так часто, как хотелось бы — сказывается эффект замыленного глаза.
> использование "the lesser" вместо "the less"
Кстати да, спасибо. Там это в обоих случаях в составе идиомы "the less (whatever) the better", несомненная ошибка, и даже понятно, почему я её сделал.
> Да и не настолько я хорошо владею английским.
Можете не сомневаться, ни одно замечание я не приму на веру, сначала триста раз проверю :-)
> самый простой способ исправить
Я прекрасно понимаю, о чём идёт речь, это, в конце концов, классика экзаменационных сочинений: если все предложения простые, негде накосячить с пунктуацией. В моём случае этот способ мог бы работать, если бы я в принципе умел писать короткими фразами — но я, увы, не умею.
ответить
Re: Re: Про suckless
> Тут у вас, как говорят, глюк.
Согласен, мой глюк. Сам я, когда пишу, иногда задумываюсь над структурой предложения. Вот видимо на вас и спроецировал.
Но в любом случае, вы меня, наверное, поняли. Я имел в виду, что структура многих предложений, особенно сложносочинённых, соответствует не английским, а русским правилам построения этих предложений. Причём я даже не уверен, что все эти случаи можно жёстко классифицировать как ошибку. Есть же всякая авторская стилистика, в конце концов.
ответить
Re: Про suckless
Желание пользоваться поделками suckless резко улетучилось после знакомства с их кодом. Попробуйте разобраться с десятками глобальных переменных, которыми кишит их код. Зато минималистично -- всего 3к строчек кода в dwm.
ответить
Re: Про suckless
Короче, нужен свой проект.
С блекджеком и...ответить
☞ From Anonymous (unverified) Tue Nov 7 20:55:31 2023
Как относитесь к патентам?
Это тоже форма информационного насилия? Заранее извините если уже был такой вопрос, не смог найти.
ответить
Re: Как относитесь к патентам?
Что форма насилия — безусловно, но никоим образом не информационного, их ведь публиковать никто не запрещает, хотя и не заставляет. Если кому-то запрещают производить некую продукцию, потому что там технология, запатентованная кем-то другим — ну да, это насилие, как и любой запрет что-то делать. Если производить не запрещают, но ухитряются слупить патентные отчисления — это вымогательство и просто грабёж, но, опять же, это хотя и насилие, но вряд ли информационное.
Короче говоря, просто один из тысяч вариантов государственного беспредела на ровном месте.
ответить
Re: Re: Как относитесь к патентам?
Согласен с вами, однако слышал такое мнение, что до патентов изобретатели просто хранили в тайне свои идеи/наработки, боясь конкурентов, тем самым, чисто в теории, патенты должны были продвинуть их изобретения в широкую публику, убив страх конкуренции. Правда, к сожалению, получилось так, что лежали туфли в подвале за замком, а теперь за ветриной лежат - посмотреть можно, надеть нельзя.
ответить
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
Арифмометр Паскаля
Здравствуйте, в первой главе первого тома (с. 47) вы описываете математический принцип работы арифмометра Паскаля, а именно трюк с девятичным дополнением. Вы пишите: "однако оператор продолжал смотреть на цифры девятичных дополнений, где отображалось 99999-(99999-x+y), то есть просто x-y." По этой логике в примере 00500-00134, оператор должен видеть 00366, девятичное дополнение 99633. Я нашел два англоязычных видео, где визуально демонстрируется работа арифмометра (Pascaline). К примеру, оператор хочет вычесть 15 из 25, вводит 99925 в верхнем ряду (не 00025 и не 99974), прокручивая по ч.с. колесики, потом также прибавляет 15, и в открытом верхнем окне появляется 99910, т.е. 10, искомый ответ. Пытаюсь сравнить это с вашим описанием, но не получается, выглядит по-другому. Подскажите, что я упускаю?
ответить
Re: Арифмометр Паскаля
> вводит 99925
Чушь какая-то. Я не могу себе представить арифметическую схему, в которой 99925 имело бы какое-то отношение к числу 25.
ответить
Re: Re: Арифмометр Паскаля
Да, возможно стоит меньше доверять авторам с ютубчика, ну кроме вас конечно :D
ответить
Re: Арифмометр Паскаля
Доверять вообще никому не надо, вредно для здоровья. Возможно, эти ваши авторы видосиков привели какое-то своё арифметическое объяснение, ну так ознакомьтесь с ним.
ответить
☞ From Anonymous (unverified) Tue Nov 7 00:19:59 2023
Обучение детей и подростков арифметике
Что можно сделать с учеником средней школы, не понимающем абстракцию умножения и не умеющем умножать и делить без калькулятора, у которого сложение/вычитание столбиком работает, но через раз?
ответить
Re: Обучение детей и подростков арифметике
Ну это вы по адресу вопрос задаёте. Я вообще-то ни с детьми работать не умею, ни математике учить. Учить математике я хотя бы пробовал и, наверное, умею это лучше большинства школьных учителей (но хуже большинства, опять же, ВУЗовских преподавателей, специализирующихся по математике — потому и говорю, что не умею). Но вот что делать с немотивированным ребёнком — не имею понятия даже близко, вся эта возрастная психология, работа с мотивацией и прочая педагогика для меня тёмный лес.
Вообще я как-то раз задал вопрос учительнице физматшколы с 20+ годами опыта, что делать с 11-классником, не понимающим, что такое функция. Ответ был "пристрелить". Это, конечно, была шутка, но в каждой шутке есть доля шутки, как мы знаем.
Ну то есть я практически уверен, что в мире где-то есть педагоги, умеющие такую ситуацию скорректировать, но я не только не представляю, как они это делают, я даже не знаю, где таких специалистов найти. Увы.
ответить
Re: Обучение детей и подростков арифметике
Что делать? Устроить его к себе на предприятие уборщиком. Зарплату не выплачивать - он всё равно считать не умеет, даже наверное и не поймёт, что что-то не так. Выгодно!
ответить
Re: Re: Обучение детей и подростков арифметике
Ну как-то категорично вы.
Я в школе математику очень любил, но дико ненавидел гуманитарные предметы. "Войну и мир" так и не прочитал, но в уборщики записывать себя не собираюсь, работаю программистом, и мне эта классическая литература ни разу в жизни не пригодилась.
Ясно, что с математикой работает точно так же: есть люди, которые ее не любят и не понимают, и в жизни она им не пригодится. Может из упомянутого ученика когда-нибудь талантливый писатель вырастет.
ответить
А вот не надо ляля
Гуманитарные предметы в школе не просто не нужны, они вредоносны. Тратить в школе время на графскую графоманию — это вообще преступление, у человека ещё тянется период, когда возможно интенсивное формирование новых связей в мозгу, то есть когда можно наращивать мощность интеллекта, и этот период весьма и весьма конечен, после 25 лет крайне сложно изучать что-то новое. А подростка, вместо того чтобы ему интеллект раскачивать, заставляют пережёвывать всяких толстых с достоевскими, и если первое просто бесполезно, то второе жёстко вредно, Достоевский всё-таки был редкостной гнидой даже по меркам т.н. русской философской школы, но при этом столь же несомненно обладал литературным талантом, то есть это просто катастрофа.
А математика — это, собственно говоря, абстрактное мышление как таковое, т.е. заявлять, что кому-то математика может "не пригодиться" — это буквально то же самое, как утверждать, что кому-то может не пригодиться его собственный головной мозг.
ответить
Re: Re: Re: Обучение детей и подростков арифметике
Может из упомянутого ученика когда-нибудь талантливый писатель вырастет.
Из гуманитария может получится "писатель" разве что уровня дарьи донцовой.
Да и вообще тут как-то анекдот сразу вспомнился: - Бабушка, а кто такие гуманитарии? - Ну как тебе объяснить, внучек... Раньше их называли дураками.
ответить
Про гуманитариев
Я бы не был столь категоричен. У гуманитариев обычно есть одна способность, отсутствующая у технарей и точников — перелопачивать феерические объёмы текстов, превращаясь в ходячие справочники.
Иной вопрос, что в большинстве своём они из проглоченных текстов не делают никаких выводов, просто помнят, где там что есть. И, опять же, не все.
Мне, больше того, встречались люди, самопозиционирующиеся как гуманитарии, но вполне владеющие и логикой, и даже до определённой степени математикой — во всяком случае, понимающие, что такое функции и про что матан. Почему они считали себя при этом гуманитариями — ну, мне понять не удалось, но если человек сам себя величает гуманитарием, я что, спорить с ним буду?
ответить
Re: Про гуманитариев
Мне, больше того, встречались люди, самопозиционирующиеся как гуманитарии, но вполне владеющие и логикой, и даже до определённой степени математикой
Ну, технически, это не гуманитарии. Более того, разделение на "гуманитарий" и "технарь" достаточно условно. Я не спорю насчёт того, что гуманитарий, имеющий базовые математичекие знания, может быть неплохим писателем. Но человек, не обладающий базовым логическим мышлением, врят ли способен написать что-то толковое.
Насчёт "технарей", к слову, тоже "не всё так однозначно". Есть программисты с руками из пятой точки, а есть формальные гуманитарии, которые сами своё авто ремонтируют (конкретный пример - работник банка, но именно что не технарь, специалист по документообороту чего-то там). Хотя, в случае с программистами, наблюдается сильная корреляция с предметной областью: всякие "веб" и "энтерпрайз" часто вообще нихрена не умеют по простейшим бытовым задачам. В то же время, знаю С++ - разраба, который сам на даче плитку положил, предварительно выгнав жопоруких "специалистов".
ответить
Re: Про гуманитариев
Ну, короче, гуманитарий не обязательно дурак, хотя и бывает. Как, впрочем, и среди технарей тоже дураки встречаются.
ответить
Re: Про гуманитариев
Мне сам этот термин "гуманитарий" видится наследием советской системы, когда считалось, будто в науках об обществе и человеке уже сказано всё, и любой дурак теперь может быть гуманитарием.
Например, сложно представить себе науку более гуманитарную, чем лингвистика, но математики там столько, что не по себе становится. Например, происхождение слов именно что вычисляется. И лингвист, что не понимает математики, программирования и биологии, едва ли заслуживает звания лингвиста.
ответить
☞ From Дмитрий (unverified) Mon Nov 6 15:38:47 2023
Целесообразность оптимизации кода
Здравствуйте Андрей Викторович. Подскажите пожалуйста, стоит ли избавляться, по возможности, от условных операторов, и применять другие техники оптимизации?
Например:
Ведь это уменьшит читаемость кода, что повлечет за собой усложнение процесса отладки и расширения программы…
Мы с товарищем, который, кстати, является обладателем ваших книг с автографом, решили что не будем так делать. А сами размышления возникли после предмета «Многокритериальная оптимизация программного кода» в университете на 4 курсе. Где кроме рекомендаций по оптимизации, нам советовали использовать STL, многопоточность и не соваться в ассемблер. Естественно, мы посмеялись, но хотелось бы услышать ваше мнение.
И отдельно вопрос лично от меня, можно ли писать эти оптимизации вместе с читаемым кодом, разделяя их директивами условной компиляции? Это станет еще менее читабельнее, но тогда появится возможность протестировать влияют ли они на скорость работы программы, и если что-то действительно окажет большой вклад, можно было бы пойти на уступки и оставить оптимизацию в коде.
Большое вам спасибо за возможность стать грамотным специалистом!
ответить
Re: Целесообразность оптимизации кода
Э-мммм, что-с?!
a = b * (a > b) + a * (a <= b);
За такое программирование убивать надо. Ну то есть если руководитель разработки, увидев ТАКОЕ в коде, этого любителя оптимизаций не уволит к чёртовой матери, то разве что от полной безысходности.
Кстати, э... вам что, сказали, что это быстрее будет работать? Проверять сейчас некогда, но если компилятору оптимизацию отключить (типа мы крутые, нам всякие там оптимизаторы в компиляторе нафиг не сдались), то что-то мне сдаётся, что код, полученный из if'а, будет короче раза в четыре и работать будет быстрее раза в два, если условие истинно, а если ложно — то раз в десять. Команда знакового умножения ни фига штука не быстрая, а тут их две. Да плюс ещё присваивание выполняется всегда, а не только при выполненном условии. А ещё, между прочим, арифметической операции "больше" на большинстве процессоров нет, как и "меньше либо равно", то есть условие проверить можно, но результат будет не в регистре, а во флаге, и чтобы его использовать как операнд умножения, компилятору придётся вставить условный переход. Короче, был один if, стало два, да плюс ещё два умножения, да плюс сложение, да ещё присваивание всегда, а не только когда надо. Офигеть как оптимально.
А если оптимизацию в компиляторе включить, то, опять же, что-то я сомневаюсь, что он вот это вот выражение осилит. Хотя тут я, пожалуй, не поручусь, то есть надо смотреть. Если осилит, то оно в итоге превратится в тот же if :-)
Есличо,
gcc -S
знаете? :) можете сами на досуге посмотреть, что там получится в том и в другом случае, как с оптимизацией, так и без.кроме рекомендаций по оптимизации, нам советовали использовать STL, многопоточность и не соваться в ассемблер
дайте-ка угадаю, к этому практикум (или лабораторки, или как у вас там это называется) — на форточках?
P.S. Я ваш тэг code поменял на pre, ибо code делает совершенно не то.
ответить
Re: Re: Целесообразность оптимизации кода
> А ещё, между прочим, арифметической операции "больше" на большинстве процессоров нет, как и "меньше либо равно", то есть условие проверить можно, но результат будет не в регистре, а во флаге, и чтобы его использовать как операнд умножения, компилятору придётся вставить условный переход.
А как же SETcc инструкции, существующие со времён i386?
ответить
Re: Целесообразность оптимизации кода
Это условное присваивание в зависимости от значений флагов, при чём тут операция "больше"? Кстати, опять же, проверять лень, но что-то мне подсказывает, что все эти SETcc работают медленнее, чем пара из JNcc+MOV (ну, по аналогии с теми же LOOP, ENTER/LEAVE и что-то там ещё такое было).
ответить
Re: Re: Целесообразность оптимизации кода
Мой комментарий был про то, что компилятору совсем не обязательно использовать условный переход для получения результата сравнения в регистре общего назначения.
SETcc работает почти так же быстро как обычный MOV. Это логично, ведь технически SETcc копирует несколько бит из регистра флагов и применяет к ним пару простых битовых операций. Одна инструкция условного перехода (Jcc) по скорости примерно соответствует SETcc, но только если процессор верно её предсказывает. Если же предсказание не верно, то это лишние 15-20 тактов.
Задержки я смотрел в https://www.agner.org/optimize/instruction_tables.pdf. Всё вышесказанное относится к Skylake, но в других поколениях микроархитектуры, ситуация должна быть примерно такой же.
ответить
Re: Целесообразность оптимизации кода
> лишние 15-20 тактов
Это на чём такие потери, из-за очистки конвейера?
ответить
Re: Re: Целесообразность оптимизации кода
Да. Сам процесс примерно следующий: очистка конвейера, удаление промежуточных результатов, запуск. Точную картину того, что там происходит, сказать не могу, так как ещё в этом не разбирался.
ответить
Re: Re: Целесообразность оптимизации кода
Основным аргументом преподавателя, о котором идёт речь в исходном комментарии, против условных переходов было то, что при ветвлении происходят кэш промахи. Из-за чего приходится полностью обновлять информацию о следующих инструкциях в конвейере.
Ещё он советовал использовать тернарный оператор, если совсем не получается избавиться от условных операторов... Если посмотреть ассемблерный код с тернарным оператором, генерируемый компилятором gcc, то там будет инструкция cmovge, так что программа с тернарным оператором работает быстрее. Но при использовании компилятора clang разницы в скорости уже нет, так как он реализует тернарный оператор через команды условных переходов.
Но ведь текст программы предназначен в первую очередь для читателя-человека, а тернарные операторы часто делают читаемость кода хуже.
ответить
Re: Целесообразность оптимизации кода
> что при ветвлении происходят кэш промахи
ага, конечно, при прыжке на пять байт вперёд тут же промах будет, вот прямо сразу
> тернарный оператор
Слушайте, ну что за хрень, сколько можно?! Нет никакого "тернарного оператора" в природе и никогда не было, есть тернарная операция. Русское слово "оператор", так уж повелось, в программистском контексте соответствует английскому statement, вот if и while — это операторы. А английское operator, соответственно, переводить словом "оператор" нельзя совершенно категорически, так что остаётся уповать на то, что в одном тексте не придётся придумывать русские аналоги одновременно для operator и operation. Мне, кстати, ещё ни разу не пришлось, так что есть надежда, что проскочили.
Между прочим, в книге этот казус подробно разобран.
ответить
Re: Re: Целесообразность оптимизации кода
Мне стало интересно, как изменится скорость выполнения, если заменить условный оператор на присваивание хитро составленного выражения, поэтому привожу результаты тестирования, проводившегося на массиах, заполненых случайными элементами.
Сперва рассмотрим нахождение максимального элемента в массиве беззнаковых.
Прямое решение:
Решение, использующее трюк:
В отличие от кода, который привёл автор стартового комментария, предложенный мной трюк не использует умножение. Помимо версии с трюком, тестировались версии 3 и 4, обе написанные мной на ассемблере. Третья использует условный переход, а четвёртая представляет собой более или менее прямой перевод второго варианта и использует SETcc. Десятый gcc вставил в код обеих функций на C CMOV'ы и они получились одинаковыми по скорости. Скорость ассемблерного решения с условным переходом также оказалать примерно равной тому, что выдал gcc. Ассемблерная версия с SETcc оказалась в 2.5 раза медленнее. Тут нет ничего необычного -- предсказатель переходов работает эффективно. Предсказанный состоявшийся переход занимает ~1 такт.
Однако если у нас нет условных присваиваний и предсказатель переходов будет предсказывать хуже, станет ли "хитрая" версия быстрее?
Задача: Найти сумму элементов массива, которые больше элементов, стоящих прямо перед ними.
Наивное решение:
"Хитрое" решение:
Ассемблерное "хитрое" решение:
Наивную ассемблерную версию, я приводить не буду, комментарий и так получается длинным. Условных переходов нет на i386, поэтому собирал под него. Здесь ситуация меняется. Обе наивные версии оказываются в 3-4 раза медленее версиий без ветвлений.
В данном случае результат сравлений случаен, поэтому предсказатель ветвлений на каждое верное предсказание должен один раз ошибаться. gcc 13, который установлен у многих пользователей, вставляет условный переход в версию без условного оператора, что приводит к её замедлению в 3-4 раза, поэтому я вставил сюда оптимизированную версию на ассемблере, вдруг кто-то захочет проверить.
Тестирование проводилось на i5 8250 и на core 2 duo p8600. На втором различия были меньше, но всё равно существенные - 2.5 раза. Отношение скоростей не зависит от размера массива. Я брал 4K, 16K, 4M.
Вторая задача подобрана почти специально, однако это не так важно. У меня нет намерения убедить кого-то использовать подобное в полноценных программах.
ответить
Re: Целесообразность оптимизации кода
Тот случай, когда кода много, а толку мало. Попросту говоря, недостаточно информации, чтобы хоть что-то понять. Вот сишные фрагменты: какой применялся режим оптимизации при их компиляции? -O2, -O3 или таки без них? как (конкретно!!!) производился замер времени работы? что там у компилятора получилось из этого исходника? Теперь вот ассемблерный листинг, судя по синтаксису, он написан вручную, и нафига? Чтобы что? Из поясняющего текста о чём-то можно догадаться, но именно что догадаться, не более того.
Потом вот это ещё
> Условных переходов нет на i386
как это нет? точнее, понятно, что тут опечатка, но это не отменяет вопроса, а чего там на самом деле нет?
Понятно, что пытаться повторять эксперимент лично я не полезу, у меня с лишним временем напряжёнка. Но в таком виде, увы, из всего сказанного уважаемым far'ом вынести вообще ничего невозможно.
ответить
Re: Re: Целесообразность оптимизации кода
> как это нет? точнее, понятно, что тут опечатка, но это не отменяет вопроса, а чего там на самом деле нет?
Да, это - опечатка. На i386 нет условных присваиваний, то есть CMOV'ов.
Признаю, что написано сумбурно и не хватает важных деталей. Придётся написать README, упаковать исходники в tar архив и выложить в сеть. На неделе сделаю и поделюсь ссылкой.
ответить
Re: Целесообразность оптимизации кода
На всякий случай, чтобы время не тратить: ссылки на файлопомойки, не работающие без JS, а равно ссылки на GitHub, GitLab, SourceForge и прочие "бесплатные" хостинги репозиториев я не раскрываю.
ответить
Re: Re: Re: Целесообразность оптимизации кода
http://userd.net/tests/cmovemul.tar.xz
ответить
Не издевайтесь над людьми
Представьте себе лицо человека, который увидит выражение
a = b * (a > b) + a * (a <= b);
. А потом его лицо, когда выяснится, что это на самом делеif(a > b) a = b;
. А также сколько времени потребуется потерять, чтобы понять, что тут к чему :-)ответить
Re: Не издевайтесь над людьми
Да тут автор коммента, судя по всему, сам всё прекрасно понимает, а издевательством над людьми являются даже не лекции, на которых вот такое говорят, а то обстоятельство, что этого гениального преподавателя допустили до студентов.
ответить
Книжка
Кстати, про недопустимость подобных выражений упомянуто во втором издании "Введения в профессию": том 2, страница 48.
ответить
Re: Книжка
Я там хоть не умножал на условные выражения — просто в голову не пришло.
ответить
Re: Целесообразность оптимизации кода
Да... Вот и "реформа" образования, точнее её "результаты".
ответить
Re: Целесообразность оптимизации кода
Да не факт, на самом деле. Ну то есть это вполне может быть результатом реформы образования, но с таким же успехом это может быть и прямым следствием судорожных попыток ещё советского государства (причём не позднесоветского, скорее наоборот) сделать высшее образование массовым, а не штучным. Нужно массовое высшее — надо где-то брать преподавателей, а лекции читать, например, имеют право только обладатели учёных степеней, значит надо устроить натуральные конвейеры по штамповке бессмысленных диссертаций (в особенности этим всегда отличались "технические науки" и, увы мне, "философские"). Потом эти кандидаты околовсяческих наук взрослеют, матереют, собираются в новые учёные советы, в которых, собственно говоря, все такие, то есть никто не знает, что может быть как-то иначе, и такие советы воспроизводят всю эту псевдонаучную деятельность круг за кругом, аккуратно исполняя все формальные требования, но не делая ничего полезного, даже не пытаясь.
Ну и студентов такие преподаватели учат соответствующим образом. Студенты, впрочем, иначе и не могут, потому что для штучного высшего образования абитуриентов надо тщательно отбирать, а тут недоборы, берут вообще всех, кто придёт, лишь бы не сбежали.
Мой дядя преподавал в Волгограде в каком-то инженерном ВУЗе, вот он, когда я в школе только-только прошёл тригонометрию, для прикола меня спросил, вот у тебя есть прямоугольный треугольник, ты от него одну "боковину" (вот так и сказал "боковину", видимо, чтобы не напоминать термин "катет") знаешь, и знаешь, какой при ней угол, а тебе нужна вторая боковина, как её найти? Ну я сначала думал, что там подвох какой-то, а, говорю, тангенс я могу найти? Ну он такой, типа, можешь-можешь, я тебе таблицы Брадиса выдам. Времена ещё были такие, калькуляторы уже вроде были, но стоили как паровоз и были, соответственно, сильно не у всех. В общем, говорит, ну вон таблицами пользоваться умеешь? Ну я тогда уже в полном недоумении — а в чём проблема-то, эту боковину на тангенс угла умножить и всё. Ну и он такой — вот, мол, все видели? А у меня студенты в институте не могут.
Я эту историю вспоминал, когда пытался хоть чему-то научить студентов ВУЗа "третьего эшелона". А дядя тогда ещё был жив (сейчас, к сожалению, уже нет), и при встрече рассказывал, как увидел свежую методичку какого-то из московских институтов, типа, как спроектировать какой-то там механизм — та хрень, которая была в методичке описана, по словам дяди, работать не могла в принципе, то есть её бы заклинило намертво на первом обороте, и это всё уже лет триста известно, но вот нашлись такие преподы, которые студентов учат вот так вот проектировать механизмы. Причём он в это время был уже на пенсии, так попытался всё равно как-то связаться с этим ВУЗом, обратить внимание, так сказать — ну в общем был послан. Не так уж давно дело было, в 2009, что-ли, году.
Так что реформа-то, может, и ни при делах тут. Давно уже всё вот так.
ответить
Re: Re: Целесообразность оптимизации кода
свежую методичку какого-то из московских институтов
А, это вообще известная тема: их дают составлять студентам со словами "наберите мне методичку - поставлю 5". Я сам такое наблюдал когда-то. Хотя, возможно, составляются они тоже студентами, причём далеко не самыми умными.
ответить
Re: Re: Re: Целесообразность оптимизации кода
А тут всё даже хитрее может быть - нарочные ошибки, чтобы палить тех, кто втупую списывает. Я буквально учился у преподавательницы диффуров, которая в своей методичке такой метод использовала, притом довольно успешно (по ней она давала коллоквиумы).
ответить
Re: Re: Re: Re: Целесообразность оптимизации кода
Спорный подход. Что можно списать из методички?
Да и не о том речь - посыл тут таков, что учебные пособия сейчас пишутся хз пойми кем, плюс набор самого учебного пособия "аутсорсится" студентам за оценки. За такое, по понятным причинам, берутся люди не самого большого ума. Потому как выполнять работу машинистки за подачку - ну как бы стрёмно, что-ли. Я ещё понимаю, когда какой-нибудь учебник пишется толковым специалистом и кто-то вызывается с этим помочь. А просто побыть машинисткой за оценку - ну такое себе. В ВУЗе надо обучаться, а не машинисткой работать.
ответить
Re: Целесообразность оптимизации кода
Если мы говорим про x86_64, то gcc может, по меньшей мере, преобразовать условный оператор в 'cmp rax, rdx; cmovge rax, rdx'. Это примерно 2 такта и должно быть близко к оптимуму.
ответить
Re: Целесообразность оптимизации кода
Подозреваю, что даже самый топорный вариант без какой бы то ни было оптимизации, что-то вроде
— ну то есть вот вообще "что вижу, то и компилю", даже без очевидной оптимизации обмена с регистрами — всё равно будет работать быстрее, чем что угодно, что компилятор сможет из себя выдавить при трансляции предлагаемого "оптимального" арифметического выражения.
ответить
☞ From Anonymous (unverified) Thu Nov 2 08:22:42 2023
Обучение детей и подростков обращению с компьютером
Здравствуйте, Андрей Викторович. У Вас есть своё видение и подход к обучению программистов, и Ваши книги это убедительно подтверждают. Не могли бы Вы, как преподаватель и человек с большим опытом в сфере информационных технологий, сказать: какие навыки и умения требуется приобрести детям и подросткам, с чего стоит начать обучение, что могло бы помочь им как будущим специалистам в сфере ИТ. Сейчас много направлений в дополнительном образовании, таких как Scratch, Arduino и пр., но это ли нужно, с этого ли стоит начинать? Я спрашиваю, как педагог, Ваше мнение и рекомендации были бы очень полезны и могли бы послужить основой для написания образовательной программы.
ответить
Re: Обучение детей и подростков обращению с компьютером
Ну для начала: про Scratch забудьте как страшный сон, про Arduino тем более — там на выходе обезьянка получается, причём не только программистская, но и схемотехническая.
Коль скоро вопрос задан, отвечу так: самое важное — командная строка. Иконочно-мышевозную парадигму детки найдут где взять, целенаправленное обучение для этого не нужно; коль скоро вопрос стоит, чему именно учить — вот учить как раз обращению с компьютером с помощью командной строки, это они нигде сами не возьмут (ну, кроме самых продвинутых, каких примерно один тысяч на пять, но этих учить бесполезно, они ещё сами кого-нибудь научат), а показать как можно раньше, что с компьютером можно по-другому, т.е. без иконочек — ну, это бесценно.
Проблема только в том, где взять учителей, готовых сделать командную строку своим основным инструментом работы с компьютером в повседневных делах. Это обязательное условие. Невозможно научить тому, во что не веришь сам.
ответить
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. А потом у меня появился новый комп.
ответить
Re: Обучение детей и подростков обращению с компьютером
Ага, вот так примерно выглядит тот самый "один из пяти тысяч".
ответить
Re: Re: Обучение детей и подростков обращению с компьютером
А какой из, который показал команды или который потом стал ставить всякие линуксы? Или оба?
ответить
Re: Обучение детей и подростков обращению с компьютером
Да нет, который показал команды — это ему папа или мама дома могли "тайное знание" показать, а он его усвоил только затем, чтобы потом в школе продемонстрировать "фокус". Таких, по моим наблюдениям, довольно много, ну, сравнительно много.
А вот целенаправленная деятельность по совершенствованию собственных возможностей управлять именно через командную строку — это как раз вполне себе признак перспективного компьютерного самоучки.
ответить
☞ From Anonymous (unverified) Sat Oct 28 02:52:55 2023
OpenBSD всё?
https://lwn.net/Articles/949078/
Уже перелинковка системы при каждой загрузке намекала, что они идут куда-то не туда, но дальнейшие шаги уводят ещё дальше.
ответить
Re: OpenBSD всё?
С одной стороны, ломать обратную совместимость нехорошо. С другой стороны, я не вижу, зачем вообще этот syscall нужен, и слабо себе представляю такие программы, которые бы его использовали.
Но вообще текст письма наводит на интересные размышления. Не сказал бы, что это уже вот прямо "всё", но да, настораживает.
ответить
Re: Re: OpenBSD всё?
Системный вызов
syscall
иногда используют разработчики библиотек для своих обёрток системных вызовов. Видимо, боятся условной компиляции и готовы тратить процессорное время на то, чтобы получить ошибкуENOSYS
:-)ответить
Re: OpenBSD всё?
с лора притащил? оно не может быть "всё" тк тупо аналогов нет сходу назови систему в которой из коробки не будет network manager'a, systemd (в тч его огрызков), pulseaudio, dbus, avahi, openssl, sudo, python'a(удаление которого может привести систему в нерабочее состояние), apparmor'a (который любят добавлять, но не писать для него правила) и тд и тп openbsd не учит плохому в отличие от линукса, в коем, чтобы понять, что есть плохо, а что есть хорошо, надо попользоваться и быть любознательным. это особенно весело на начальных этапах, где даже гайдлайны для нубов учат плохому. в openbsd гайдлайны не нужны вся актуальная документация находится в системе
ответить
следите за знаками препинания
В следующий раз подобный континуальный поток эмоций не раскрою, следите за тем, что пишете.
ответить
Re: следите за знаками препинания
отступы не отобразились, поэтому и выглядит, как творчество душевнобольного :D
ответить
Re: Re: следите за знаками препинания
При чём тут отступы, это вроде не стихи, а автор коммента не Маяковский.
ответить
NetBSD
Чем перелинковка системы при каждой загрузке лучше вышеперечисленного?
Качественный код, аудит, простота устройства и тд — это да, это ценно, а мастурбация на "безопасность" через усложнение системы, не приносящее никаких практических удобств — уже нет.
Если враг получил исполнение произвольного кода — это всё уже, финиш. Мешать ему по мелочи, при этом создавая неудобства пользователю и легитимному софту — это уже клиника.
ответить
Re: NetBSD
> Если враг получил исполнение произвольного кода — это всё уже, финиш.
Так он ещё не получил, в этом и фишка. Когда получил — ему пофигу, куда там у кого шляпа сдвинута. А вот когда только поймал что-нибудь на очередном buffer overflow, может быть намного проще подменить параметры системного вызова, нежели что-то ещё, а в EAX/RAX/whatever может быть проще зафорсить ноль вместо настоящего номера вызова.
Иное дело, конечно, что так дела не делаются, это да. Если где-то дыра, то надеяться, что у автора эксплойта тупо не хватит пространственного воображения, причём вот только что хватало, но мы банановую шкурку на пол кинули — и уже не хватает, ... Ну, он старшего брата позовёт, у того уже нормально воображения хватит. То есть, конечно, завалить весь пол банановыми шкурками, чтоб грабитель на них поскользнулся — так себе идея.
Особенно лично меня насторожило, что execve теперь можно вызвать только из libc — стало интересно, как там проверяется, что оно в libc. И можно ли теперь вообще программировать без libc. Скажем, если они там в погоне за безопасностью сломали статическую линковку и/или переносимость статических бинарей — то даже я тогда присоединюсь к мысли, что эта система здесь и сейчас "всё", хотя, возможно, они ещё одумаются. Я, впрочем, понятия не имею о реальной конкретике, это просто то, что меня насторожило в тексте по ссылке.
ответить
Re: Re: NetBSD
> Скажем, если они там в погоне за безопасностью сломали статическую линковку и/или переносимость статических бинарей — то даже я тогда присоединюсь к мысли, что эта система здесь и сейчас "всё", хотя, возможно, они ещё одумаются.
Вот именно поэтому я ссылку и кинул. Возможно, что теперь уже без линковки с libc нельзя.
С другой стороны, в той же Windows NT, например, тоже со статической линковкой всё совсем никак, программа просто обязана подхватывать то ли kernel32.dll, то ли ещё что-то такое, точно не помню, а системные вызовы меняются от версии к версии и программа, обращающаяся напрямую к ним не переносима никуда. Наверное и в Wine тоже не заработает.
То есть в целом, жить с необходимостью всегда линковаться с libc в принципе можно. Пусть и не очень хорошо, а скорее даже плохо.
Но пока ещё есть NetBSD. Есть ли в ней какие-то свои приколы или нет — вот этого не знаю. Но работала на моём компе она как-то не очень охотно, так что в деталях потыкать не удалось.
ответить
Re: Re: Re: NetBSD
> Возможно, что теперь уже без линковки с libc нельзя.
А проверить?
Но если реально так, то всё, систему можно хоронить.
> программа просто обязана подхватывать то ли kernel32.dll
Во-первых, винда уж точно не пример для подражания, а во-вторых, там эта kernel32 "идёт" вместе с ядром и её API используется вместо системных вызовов, это принципиально другая роль, нежели у libc.
ответить
Re: Re: Re: Re: NetBSD
>> Возможно, что теперь уже без линковки с libc нельзя. > А проверить?
Можно. Пока. cur64$ cat sys_start.s
cur64$ cat main.c
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 идея так себе.
P.S. А предосмотр отправляемых комментариев в этой систеесть?
ответить
про предпросмотр
Зарегистрированные пользователи могут свои комментарии редактировать 20 минут после их отправки. Насчёт конкретно предпросмотра — думаю на эту тему, пока нет, но я уже практически свыкся с мыслью, что надо сделать.
ответить
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: Сложно отправлять текст без предпросмотра. Понавставлял пустых строк везде, на всякий случай.
ответить
Re: OpenBSD
Спасибо за ссылки. Собственно, вот цитата из письма по ссылке:
Всё, лично для меня OpenBSD больше не существует. А вопрос, который меня очень давно мучает, остаётся всё тот же: как земля носит такую мразь.
Вообще говоря, статические бинарники там не сломали, в этом плане всё нормально, только от этого не сильно легче. Важно ровно одно: там нашёлся один отдельно взятый мудак, который считает, что ему все должны (точнее, что все должны программировать так, как он считает правильным), и этот мудак имеет возможность принимать решения.
ответить
Re: Re: OpenBSD
Когда обличённый подобной властью человек дважды цитирует космического фашиста из известного фантастического сериала, то конец "немного предсказуем".
https://www.youtube.com/watch?v=3D8TEJtQRhw
ответить
ёлки, да смотрите же, что пишете!
А скажите, вам известна разница между "облИчённый" и "облЕчённый"? Если нет, погуглите и прикиньте, каков реальный (буквальный) смысл того, что вы тут написали. Конечно, из контекста всё понятно, но это не повод.
ответить
Re: ёлки, да смотрите же, что пишете!
Спасибо за замечание. А вам известно значение слова "реальное"? Если нет (спойлер: реальное есть бесконечное, имеющее в себе конечное (идеальное, законченное) как свой момент), загляните в "Науку логики" Гегеля. Заодно узнаете, чтO есть само "конечное" (еще спойлер: конечное есть нечто, взятое со своей имманентной границей). Понятия нечто и граница тоже определены, даны определения определённости и самого определения. Сама книга даёт развитие системы всеобщих понятий начиная с чистого бытия (того единого, что есть) в отличие от других наук, в основе которых лежат условно принятые положения (аксиомы).
ответить
-
Вон с моего сайта, мразь.
ответить
У Adult Swim этот момент забавнее
https://www.youtube.com/watch?v=31HaTbWONmQ
ответить
Re: Re: OpenBSD
там нашёлся один отдельно взятый мудак, который считает, что все должны программировать так, как он считает правильным, и этот мудак имеет возможность принимать решения.
Ну он собственно для этого, насколько я понимаю, 30 лет назад NetBSD и форкнул.
Всё, лично для меня OpenBSD больше не существует.
Вы всерьёз считаете, что Linux (поскольку Linux, очевидно, для вас пока существует) лучше OpenBSD в этом плане? Учитывая, что в Linux сейчас количество реальных мразей, имеющих возможность принимать решения, несравнимо больше. Не говоря уже о том, что в отличие от Тео, их решения обычно не имеют отношения к техническому совершенству системы и не освещаются открыто.
ответить
Re: OpenBSD
В Linux, насколько я вижу, никто не ломает обратную совместимость, i386'е статические бинарники до сих пор нормально работают с 64-битными ядрами. А на то, что происходит внутри ядра, можно до определённого момента не обращать внимания, если сам не пытаешься в этом участвовать.
Ну то есть, конечно, линуксовое ядро катится совершенно очевидно не туда, и, скажем, если там таки в мейнстримных ядрах появится Rust, и при этом не будет форка rust-free, на который можно было бы сползти, то Linux придётся закапывать. Но лично я при этом OpenBSD даже рассматривать не буду.
ответить
Re: Re: OpenBSD
>если там таки в мейнстримных ядрах появится Rust
если ниче не путаю, он там уже год, вроде тогда еще сам финский босс сказал, что идея хорошая. https://en.wikipedia.org/wiki/Rust_for_Linux
не понятно о какой "стадии рака" идет речь. если предположить один из оптимистичных, но не идеальных, исходах что сишечку они полностью выкидывать не будут, то всё равно форкать с каждым днем будет сложнее и сложнее, сизифов труд, так сказать, слишком много сил будет уходить на это.
в openbsd(да, снова она), ситуация проще, если никто не знает, как работает код, который писали разработчики, которые, например, рипнулись, его просто выкидывают, как было с поддержкой bluetooth
ЗЫ похоже, что здесь больше не будут воздавать почести(даже шуточные) openbsd, эх, мне нравилось читать разговоры об этой ос.
ответить
Re: OpenBSD
> не понятно о какой "стадии рака" идет речь
Насколько мне известно, пока что эта штука в "боевых" ядрах выключена, чем, в целом, можно объяснить отсутствие соответствующих (то есть декларирующих именно что rust-free) форков.
> сизифов труд
В отличие от *BSD, где каждый форк ядра воспринимается как отдельная ось и вообще эпохальное событие, форков ядра Linux вполне себе хватает. Достаточно кому-то из них сказать "к нам ржавчина не пролезет", и задача окажется решена.
ответить
Re: Re: Re: OpenBSD
похоже, что здесь больше не будут воздавать почести(даже шуточные) openbsd
Лично я использую опёнка как единственную систему уже достаточно давно и пока никуда переходить не планирую. Ну да, бинарная совместимость не гарантируется, но у разработчиков, в частности у Тео, есть свои, сугубо технические, причины на это. А мне, если что, несложно и перекомпилировать под свежее ядро то, что нужно.
А куда переходить? На линукс возвращаться категорически не хочу, от всего этого линуксового переусложнённого говна я совсем отвык. Как вспомню сколько времени я тратил в линуксе на то, чтобы привести его хоть в сколько-нибудь приличный вид, страшно становится.
Фряха по сравнению с опёнком мне тоже не особо нравится. Она и сложнее, и запутаннее. Это получится опять шаг в сторону линукса.
Ну а с NetBSD и DragonFlyBSD, я подозреваю, придётся мириться с гораздо большей кучей неподдерживаемого железа, чем я уже мирюсь в опёнке.
Так что не знаю насчёт почестей, а комментарии про опёнка я тут оставлять по-прежнему буду. Другой вопрос, пройдут ли они премодерацию у нашего уважаемого хозяина.
ответить
Re: Re: Re: Re: OpenBSD
А точно ли NetBSD имеет чем-то отличающийся список поддерживаемого железа? Может стоит попробовать прежде чем делать выводы? Так-то Open и Net не сильно и отличаются, вроде, только дрочки на "безопасность" во второй поменьше.
ответить
NetBSD
Девиз NetBSD "Конечно это работает на NetBSD!"
NetBSD портированна на 57 аппаратных платформ. Драйвера устройств платформонезависимые.
В свое время разработчики NetBSD за месяц портировали ОС на x86_64 всего за месяц. А разработчики Linux это делали примерно полгода. А теперь сравните количество разработчиков Linux и NetBSD.
ответить
Re: NetBSD
Судя по тому, как там относятся к обратной совместимости, всё остальное не имеет никакого отношения к делу. Эту систему использовать нельзя, всё, точка, все свободны. И да, я тебя сюда не звал, вали с моего сайта туда, откуда припёрся.
ответить
Re: Re: NetBSD
Так NetBSD же, не OpenBSD. Вроде в нэтке ничего особо не ломали.
ответить
Re: NetBSD
Так, ну систему я, допустим, перепутал, но это не повод учиться у позорных маркетоидов бессмысленным лозунгам и тащить всю эту ахинею на чужой сайт.
Если что, я вот об этом:
ответить
Re: Re: OpenBSD
>там нашёлся один отдельно взятый мудак
ну это с какой стороны посмотреть, это же Тэо. если со стороны netbsd, то да, нашелся. а если со стороны openbsd, то Тэо там уже был, причем с самого начала, он её основал, это целиком и полностью его игрушка, да и процесс разработки вращается вокруг него, это изначально так сделано, как Тео сказал, так и будет. вроде в freebsd н-ое кол-во лидеров, которые каждые н-ое кол-во лет меняется методом голосования, опять же если ничего не путаю, лидеры задают вектор разработки, и в случае чего именно к ним будут претензии, что они просрали все полимеры и разработка в какой-то момент пошла куда-то не туда.
имхо, подобные претензии не могут быть(вернее могут, тк обзываться никто не может запретить, ну вы поняли) адресованы к Тео, тк это изначально его территория, ситуация напоминает этот сайт, люди могут задавать тему разговора, выражать свое мнение, спорить, не соглашаться и тд, конечное решение все равно будет за вами, и каждый это знает и принимает. в любом случае я ценю такие проекты, как openbsd, этим суперудобно пользоваться, да и они кучу полезных вещей создали. stolyarov.info тоже ценю, таких сайтов в интернете всё меньше с каждым днем
ответить
Re: OpenBSD
Пусть он там сам тогда в эту свою игрушку играет. В смысле, без меня.
Ну то есть да, реальных претензий к нему, пожалуй, быть не может, не нравится — в конце концов, делай свой форк. Сделать свой форк я не могу, силёнок не хватит. Использовать ядро, авторы которого положили болт на обратную совместимость — не вижу никакой возможности. Да даже и поддерживать такое ядро, становясь его пользователем (хотя вроде это крайне незначительная поддержка) тоже не вижу для себя возможности.
ответить
раз речь зашла про форки
>Сделать свой форк я не могу
гнутые, года три назад, решили форк 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/ , давно к ним в гости не заходил
ответить
Re: раз речь зашла про форки
> гнутые, года три назад, решили форк openbsd таки сделать
Эм, а точно это "гнутые решили"? Просто фраза звучит так, как будто сам Столлман решение принимал.
Я сам поглядываю иногда на сайт гиперболы, из любопытства и уважения к безумству храбрых. Но мне всегда казалось, что это всего лишь горстка очень радикально настроенных арчеводов. Которые сначала форкнули арч-линукс, потом постепенно, но последовательно и непримиримо, выкинули оттуда всё говно, и теперь прикидывают, как бы им и ядро заменить на что-нибудь более приличное.
Но список отринутого в гневе ПО, конечно, внушает: https://wiki.hyperbola.info/doku.php?id=en:philosophy:incompatible_packages
ответить
Re: раз речь зашла про форки
> список отринутого в гневе ПО, конечно, внушает:
По-моему, всё правильно делают. В особенности systemd, dbus, pulseaudio и avahi, давно пора этих монстров прикончить. Потом ещё openssl, rust (!), electron, nodejs, go — вот прямо всё как надо.
Несколько настораживает, что они sudo выкинули только затем, чтобы найти ему замену, но ёжику же понятно, что не должно быть в системе ни самой sudo, ни чего бы то ни было подобного.
Но в целом да, движутся в правильном направлении. Остался всего один шаг до идеала — запретить внешние зависимости как явление.
ответить
Re: Re: раз речь зашла про форки
fpc выкинули из-за циклической зависимости. Но ведь у gcc она тоже есть.
ответить
Re: раз речь зашла про форки
У fpc с этим полное мракобесие, я как-то столкнулся с тем, что установленный в системе экземпляр fpc "слишком старый" для компиляции текущего снапшота с их сайта. gcc, насколько я помню, можно отбутстрапить, имея любой компилятор ANSI C — во всяком случае, раньше так было, сейчас уже не знаю, от этих всякого можно ждать — команда gcc утратила моё доверие начиная с пятых версий.
Плюс к тому там какие-то крайне дебильные проблемы с сосуществованием в системе разных версих fpc, поскольку сам бинарник fpc — это обёртка, которая лезет куда-то в /etc/чтототам, узнаёт, где "настоящий" компилятор и запускает уже его, то есть если в системе есть старый компилятор, для запуска нового (свежеоткомпилированного) требуется некое тайное знание.
Короче, поддерживать опакеченный fpc — это что-то такое высокое, и всё время возникает ощущение, что его авторы об тебя демонстративно вытирают ноги. Хотя это ощущение, скорее всего, ложное — они просто тупые.
ответить
Re: Re: Re: Re: NetBSD
Так в OpenBSD libc тоже вместе с ядром идёт. И другие языки могут и libc использовать, если очень надо. Я, если что, не говорю, что это ОК, но просто по-моему такая система теоретически может работать.
ответить
Re: NetBSD
Работать и форточки могут. И всякие iOSы тоже. И даже не теоретически, а на самой что ни на есть лютой практике.
Это не делает ситуацию навязывания libc программистам юзерспейса хоть сколько-нибудь допустимой, даже если они пишут на чистом Си. Все "современные" реализации libc, которые я видел, представляют собой негодных монстров, подлежащих тотальному геноциду.
ответить
Re: Re: Re: NetBSD
Но пока ещё есть NetBSD. Есть ли в ней какие-то свои приколы или нет — вот этого не знаю. Но работала на моём компе она как-то не очень охотно, так что в деталях потыкать не удалось.
Она-то есть, только при установке можно запросто столкнуться с ситуацией, что она тупо "не увидит" ваш жёсткий диск, для контроллера которого не окажется драйвера. Более-менее сносно на ПК можно использовать только FreeBSD. Да и то с драйверами могут быть сюрпризы.
ответить
☞ From Арсений (unverified) Thu Oct 26 06:59:23 2023
Дырявые интерпретаторы
Вы как-то упоминали про неизбежные дыры в тьюринг-полных интерпретаторах. Есть какой-то материал на эту тему? Или тут очевидное доказательство?
ответить
Re: Дырявые интерпретаторы
Нет, тут очевидная практика.
ответить
Дырявые интерпретаторы
Ну и теоретическая алгоритмическая неразрешимость целого класса утверждений о машинах Тьюринга.
ответить
Re: Дырявые интерпретаторы
Это вряд ли вообще имеет отношение к делу, как ни странно.
ответить
Дырявые интерпретаторы
На практике Postcript-принтеру обычно не разрешают неограниченно долго размышлять о проблеме остановки во время распечатки страницы отчёта.
ответить
Re: Дырявые интерпретаторы
Что, увы, не делает адобовских бастардов — что постскрипт, что PDF — сколько-нибудь меньше бастардами.
ответить
Re: Re: Дырявые интерпретаторы
А теорема Гёделя о неполноте?
Вроде как из неё следует, что любой интерпретатор или можно заставить крашнутся или неверно интерпретировать какую-то программу. Или это так не работает?
ответить
Re: Дырявые интерпретаторы
Во-первых, сильно сомневаюсь, что теорема Гёделя здесь применима, но чтобы это утверждать наверняка, мне не хватает квалификации.
А во-вторых, речь идёт не о том, чтобы "крашнуться", а о том, что в любом интерпретаторе есть эксплойтабельная дыра. Вот тут уже я точно могу сказать, что никакие теоремы и доказательства не проканают, поскольку причина здесь не в математических свойствах предметной области, а в ограниченности возможностей человека.
ответить
Re: Re: Дырявые интерпретаторы
Ну так-то есть языки с формальными доказательствами корректности, Coq например.
И интерпретируемый язык может быть достаточно простым, вроде Brainfuck.
Неужто дыры будут даже так?
ответить
Re: Дырявые интерпретаторы
> Coq
Если верить интернету, это автоматическая доказывалка теорем. При чём тут вообще программирование?
> Brainfuck
Корректный интерпретатор подобного языка сделать, наверное, можно, только на таком языке писать невозможно — и что толку тогда от корректности интерпретатора.
ответить
Re: Re: Дырявые интерпретаторы
вообще можно сделать компилятор из нормального языка в brainfuck и таким образом писать.
ответить
Re: Дырявые интерпретаторы
Компиляторы тут вообще ни при чём, вы потеряли тему.
ответить
Re: Re: Re: Дырявые интерпретаторы
Формальное доказательство корректности программы есть формальное доказательство того, что она соответствует своему описанию на каком-то другом языке (естественном, математическом...). Не более. Это формально корректная программа, а не программа, чью защиту невозможно обойти. Дыры бывают не только в реализации, но и в концепции, и в алгоритме.
ответить
Re: Дырявые интерпретаторы
Прежде всего отмечу, что формально доказать свойства программы вручную можно разве что для мелких программ на десяток строчек; если программа больше — у человека на такое доказательство не хватит сил.
Следовательно, естественный язык в роли языка формального описания отпадает. Нужен какой-то формальный язык, с которым справится некий софт, с помощью которого мы что-то там собираемся доказывать. Ошибки можно допустить уже на этапе формирования описания программы на формальном языке.
Но вообще-то тут есть более интересная засада. Что такое сама программа как таковая, как не формальное описание того, чтО должен делать компьютер? Т.е. получается, что формальное описание программы — это формальное описание формального описания. Если они оба являются исчерпывающими, то зачем их тогда, спрашивается, два? Это же получается две якобы-эквивалентные программы, просто на разных языках, причём один язык — собственно язык программирования — удобен и автору программы, и автору транслятора, тогда как второй — на котором сделано это вот "формальное описание" — никому не удобен и вообще непонятно зачем нужен.
Если же пресловутое "формальное описание" не позволяет его вот прямо взять и выполнить как программу, то оно, следовательно, не исчерпывающее, и что тогда толку в соответствии программы этому описанию? Очевидно, что какие-то аспекты функционирования программы это описание не покрывает, иначе оно само уже было бы готовой программой, просто на странном и неудобном языке.
Кстати, проверить эквивалентность двух программ в общем случае невозможно, проблема эквивалентности сводится к проблеме останова. Это уже из серии "получи фашист гранату".
Вообще мне тут вот что непонятно. Я когда был помоложе и поактивнее, доказательным программированием интересовался, в материалах копался, и в общем, если мне память не изменяет, обнаружил, что пик интереса к доказательному программированию пришёлся примерно на середину 1980-х. Пришёлся — и прошёл. Просто потому что ничего полезного там накопать не удалось, так, чуть-чуть эвристических проверок, позволяющих показать в какое-то место программы и сказать, что здесь с хорошей степенью вероятности имеется косяк.
Может, пора уже эту стюардессу закопать, а?
ответить
Re: Re: Дырявые интерпретаторы
Ну, не совсем прошёл. Например, ядро seL4 было написано в 2006 году, и в 2009 его формально верифицировали при помощи программы на Haskell. А в 2015 были сведения об успешной реализации беспилотного вертолёта для американских военных на основе этого ядра, ещё нескольких верифицированных программ для него и паравиртуализованного Linux.
ответить
Re: Дырявые интерпретаторы
Я же не сказал, что вообще про него забыли, я сказал, что пик прошёл. Судя по тому, что я про эти проекты ничего не слышал, при том что в 2009 я ещё весьма активно пытался заниматься наукой, да и в 2015 вполне себе следил за новинками, чего-то серьёзного там достигнуто не было. Подобного рода "наукоёмкие" разработки возникают довольно часто в разных областях, надо же чем-то оправдать расходование грантовых денег.
Диссертации в области доказательного программирования до сих пор защищаются с завидным постоянством.
ответить
☞ From Anonymous (unverified) Thu Oct 26 01:45:54 2023
Изучение первого тома
Я изучил первый том до раздела математики (с.138). Мой основной род деятельности - администрирование Linux, однако для изучения некоторых страниц книги требуется несколько дней, а то и вовсе приходится откладывать, осмыслить и спустя месяц удаётся уже "переварить" эту информацию, например, так у меня произошло по теме архитектуры ЭВМ. Мне не терпится многое пропустить и сразу же начать что-то программировать (по книге, н-р, Pascal), чтобы получить удовольствие от готовой программы, кот. что-то уже делает реально, хоть и очень простое, но я понимаю, что уровень подготовки очень необходим для дальнейшего эффективного развития и понимания что такое программирование. Мотивация есть, я продолжаю изучать по порядку. Напишите, пожалуйста, ваше мнение по вышенаписанному. Нормально ли, что процесс идёт медленно (иногда очень медленно) и хочу спешить? Есть ли какой-то ориентир, чтобы понимать хочется программировать или хочется программировать, но тяжело расти, чтобы прийти к результату - программировать?
ответить
Re: Изучение первого тома
Я бы настоятельно рекомендовал усвоить из первой части хотя бы следующее:
Но в целом, если совсем припрёт, вы ко всему этому можете вернуться потом. Вряд ли попытки программировать на Паскале могут возыметь какой-то серьёзный негативный эффект.
ответить
☞ From Robert (unverified) Wed Oct 25 13:53:11 2023
Сообщения об ошибках в книге
Здравствуйте, Андрей Викторович. Прошу простить за беспокойство, но очень уж мучает меня вопрос. Могло ли так получиться, что мои комментарии не прошли премодерацию по какому-либо недоразумению или по техническим причинам? Дело в том, что я оставлял комментарии об ошибках в книге, а так же комментарий с вопросом по содержанию, но ни один из них не прошёл премодерацию, что меня очень удивило. При этом одна из обнаруженных ошибок, по всей видимости, не относится к категории ошибок, допущенных по невнимательности. Да, я читал, что вне зависимости от содержания комментария Вы можете просто не захотеть его раскрывать; быть может комментарий с вопросом мог показаться недостойным рассмотрения (хотя меня, как новичка, он заставил помучиться не один час), но мне кажется крайне маловероятным, что вы решили бы не раскрывать комментарии об ошибках, которых ещё нет в списке найденных.
ответить
Re: Сообщения об ошибках в книге
Всё несколько проще. У меня сейчас тупо нет времени и сил на разгребание сообщений об ошибках, которых накопилось очень много. Это процесс достаточно трудоёмкий — нужно найти ошибку в книге, в смысле убедиться, что она там реально есть, потом решить, что с ней делать, найти нужное место в таблице известных ошибок, вписать туда описание ошибки, ну в общем это всё не так чтоб мгновенно. На одну ошибку может уйти минут десять, бывает и больше.
Так вот, если я сообщения об ошибках буду раскрывать, но не обрабатывать, то от них не будет никакого толка — я потом концов не найду, что уже отработано, что — ещё нет. Поэтому я просто оставляю все сообщения об ошибках в очереди на премод — до лучших времён, когда у меня найдётся пара дней, чтобы это всё разгрести.
ответить
Re: Re: Сообщения об ошибках в книге
Хорошо, я понял. Благодарю за ответ и за отличные книги!
ответить
☞ From Anonymous (unverified) Fri Oct 20 20:33:15 2023
проект "infoviolence"
Доброго времени суток, Андрей Викторович. прошу простить, если ответ на этот вопрос уже где-то имеется, но планируется ли (или, может, уже можно) возможность прослушивания Ваших видеороликов в режиме подкастов, например, в стриминговых сервисах?
ответить
Re: проект "infoviolence"
На стриминговых сервисах, безусловно, нет и никогда не будет.
В принципе если очень надо, могу выложить отдельно звуковые дорожки от роликов, например, в mp3, но вообще у меня нужность таких вещей вызывает определённые сомнения.
Ну и, конечно, традиционный вопрос в таких случаях: на infoviolence.org вообще-то есть своя гостевая книга, почему обязательно надо сюда постить оффтопик?
ответить
Re: Re: проект "infoviolence"
Простите великодушно, не заметил ее. Нужду можно объяснить тем, что не всегда удобно смотреть материал именно в видеоформате, тем более что основная нагрузка, конечно, в аудиодорожке. Если такое сделать возможно - будет очень хорошо.
ответить
Можно не нагружать Андрея Викторовича
Если у вас Linux, то скорее всего в вашем репозитории будет программа ffmpeg. После установки берете локальную копию видео и запускаете софт. Например: user@host~$ ffmpeg -i video.mp4 -q:a 0 -map a sample.wav.
ответить
Re: Можно не нагружать Андрея Викторовича
Э-ммм, wav?! 8-()
ответить
Re: Re: Можно не нагружать Андрея Викторовича
Вообще можно использовать фильтр copy чтобы попытаться вытащить звуковую дорожку без перекодирования.
ответить
Re: Можно не нагружать Андрея Викторовича
Я именно это и собирался сделать, а звук там, увы, в mp3. Ну, можно ещё попробовать в Ogg Vorbis пережать, чисто из принципа. Но пока я не собрался, и это у меня никак не высший приоритет; если кто соберётся раньше, подсказываю — вытащить все видосы одной командой можно так:
13G за всё про всё. Жалко, что уже не лезет на 8G-флешку, нужна следующего размера :-)
ответить
Re: Re: Можно не нагружать Андрея Викторовича
Я думаю, на настоящий момент уже пофиг. Вроде как все патенты, которые делали mp3 несвободным форматом уже кончились.
ответить
Re: Re: Можно не нагружать Андрея Викторовича
Не хватает параметра -np, иначе мы скачаем не только сайт целиком, но и видосики по два раза каждое. Ну и это... Не в mp3 там звук. В mp4a, по мнению ffmpeg.
Я могу залить получившуюся россыпь ogg или tar-архив (660.26 MB), если подскажете, куда.
ответить
Re: Можно не нагружать Андрея Викторовича
С опциями погорячился, спасибо за замечание — поправил.
Заливать не надо, я ещё не решил, что со всем этим делать.
ответить
Ага
Обычно я вытаскиваю дорожку и делаю wav для запуска через программу play. Анониму выше можно себе таким образом наклепать аудиозаписей и потом просто делать user@host~$ play audio.wav. При попытке проиграть mp3 или другие форматы софт, описанный выше, дает сбой :(
ответить
Re: Ага
Ну play не умеет mp3, и что? Если у вас есть ffmpeg, то есть и ffplay,
спасёт гиганта мысли. Точно так же, как и cvlc, и mplayer.
ответить
Спасибо за наводку
Не знал про это. Только разве что mplayer использовал :)
ответить
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
ответить
Re: Re: Re: Ага
Видимо, у вас play из пакета sox. А у комментатора выше это, возможно, псевдоним для aplay, который действительно не умеет в сжатые форматы.
ответить
Re: проект "infoviolence"
>стриминговых сервисах?
чем mpv --no-video http://infoviolence.org/ru/vblog/v720view/infoviolence_060.mp4 не стриминговый сервис? сайт через консольный браузер открывается
ответить
Re: проект "infoviolence"
Объём видео намного больше, чем аудиодорожки. Короче, не надо так делать, каналы нынче широкие, но это не повод совсем забивать на эффективность их использования.
ответить
☞ From Арсений (unverified) Wed Oct 18 06:24:08 2023
Проектирование программных комплексов
В 3м томе в параграфе 9.1.1 Вы упоминаете "Проектирование программных комплексов". Не подскажете литературу на эту тему?
ответить
Re: Проектирование программных комплексов
Мне такое не попадалось. Я вообще сильно сомневаюсь, что в природе могут существовать сколько-нибудь полезные книги, посвящённые вот прямо-таки проектированию программных комплексов.
ответить
Re: Проектирование программных комплексов
На практике сейчас "Проектирование программных комплексов" называют "Архитектурой решений" (Solution Architecture), под это есть отдельные должности "Архитектора решений". Часто слово "решений" опускается и в вакансиях можно видеть позиции "архитектора" - это оно.
Эта деятельность уходит от практического программирования в сторону системного анализа - архитекторы обычно пишут не код, а дизайн-документы, описывающие, какие программы надо написать.
Из литературы могу посоветовать "Software Architecture in Practice" от Басса, Клементса и Казмана - PDF можно найти в поисковиках. Книжка почти не дает практически применимых навыков, но позволяет открыть для себя новую парадигму мышления.
На всякий случай - соваться туда без уверенного опыта разработки особо смысла нет, проблемы, которые там поднимаются, буду попросту непонятны.
ответить
Re: Re: Проектирование программных комплексов
> в вакансиях можно видеть позиции "архитектора" - это оно.
Что-то сомнительно мне это утверждение. Архитектура есть у любой программы, превращать её именно в программный комплекс для этого не обязательно.
> от Басса, Клементса и Казмана
На правах владельца сайта считаю нужным подчеркнуть: я ничего не знаю и никогда не слышал об этих авторах. Пока что подавляющее большинство книг, которые я видел на тему "как надо программировать", представляют собой бессмысленные (а часто и вредоносные) измышления.
Исключения крайне редки: мне в своё время понравилась "eXtreme programming installed", но её авторы описывали свой собственный опыт, то есть это были не так чтобы измышления; впрочем, та же команда нагвоздила целую серию книжек про "extreme programming", и всё остальное, кроме вот этой вот "installed", с тем же успехом могло бы и не появляться.
Ещё была "Психбольница в руках пациентов" Алана Купера, ну и ещё когда-то давно "Мифический человекомесяц" Брукса. Ну и всё.
NB: конкретно к программным комплексам всё это не относится примерно никак.
ответить
Re: Re: Re: Проектирование программных комплексов
> Пока что подавляющее большинство книг, которые я видел на тему "как надо программировать", представляют собой бессмысленные (а часто и вредоносные) измышления.
А с книгами про проектирование программ (не комплексов) ситуация аналогичная? Не совсем понимаю, какие книги относятся к категории "как надо программировать" (не могут же это быть все книги про программирование)
ответить
Re: Проектирование программных комплексов
> А с книгами про проектирование программ (не комплексов) ситуация аналогичная?
Именно с ними она и есть. Книг про проектирование именно программных комплексов я, как уже говорил, никогда не встречал и вообще сомневаюсь, что такие бывают.
> не могут же это быть все книги про программирование
Практически любые книги, адресованные состоявшимся программистам. В смысле не учебники. Ну и не справочники, но справочники вообще не про то, "как надо".
ответить
Re: Re: Re: Проектирование программных комплексов
> Архитектура есть у любой программы, превращать её именно в программный комплекс для этого не обязательно.
Безусловно, поэтому делается акцент на том, что это архитектура решений - противопоставляя архитектуре ПО. Отдельных должностей "архитектора ПО" я, наверное, вообще не видел - эта часть полностью находится в зоне ответственности разработчиков.
ответить
Re: Проектирование программных комплексов
> Отдельных должностей "архитектора ПО" я, наверное, вообще не видел
Странно, кстати — я видел.
ответить
☞ From Anonymous (unverified) Sun Oct 15 08:31:00 2023
Математические символы
Не подскажите как лучше отображать математические символы на своем сайте? Правильно ли я понимаю, что для этого не подойдут всякие шрифты (которые не у всех есть), а стоит использовать обычные картинки? (Например, как на Википедии).
Или же стоит вообще не делать такого на сайтах?
ответить
Re: Математические символы
Ну, что лучше такого не делать — это однозначно. То есть математических формул на сайтах следует избегать настолько, насколько это возможно. Но вот что делать, если без этого никак — не знаю, не изучал вопрос.
ответить
Re: Математические символы
На сайте dxdy.ru для ввода математики используют ЛаТех. Вот как они его прикрутили, я не знаю (не специалист).
ответить
Re: Re: Математические символы
Да как... Не сижу на этом сайте, но зайдя в тему, где есть уравнения, да потыкав их палочкой, увидел простые PNG.
ответить
Re: Математические символы
Если сильно нужно, то я бы картинками делал. Математические символы весьма разнообразны, и вряд ли все они будут присутствовать в произвольно взятой кодировке и в произвольном взятом наборе шрифтов.
ответить
Re: Re: Математические символы
Больше того - в математике есть вещи, которые вообще нельзя изобразить текстом. Скобка, объединяющая уравнения в систему, например. Или матрица. Тут как ни крутись, а без языка разметки не обойдёшься. А языков таких больше одного, и они далеко не везде есть. Так что да, только картинка.
ответить
Re: Математические символы
Вообще, есть такая штука как MathML. https://en.wikipedia.org/wiki/MathML
Можно в принципе сделать генератор картинок из latex-подобного языка, причём исходный код оставлять в комментарии к тегу IMG, чтобы он всплывал в подсказке.
ответить
Re: Математические символы
Википедийная статья по ссылке содержит историю комитетских плясок, которые, как и любые комитетские пляски, породили целое семейство комитетских бастардов. Начать с того, что всё, что входит в HTML5, не имеет права на существование просто потому, что входит в HTML5. Продолжить тем, что XML namespaces никогда не должны были появиться, а сам XML уже лет двадцать тому должен был бы умереть и сейчас о нём не должно было бы быть даже воспоминаний — это если бы развитие технологий определялось гомо сапиенсами, а не дебилами и террористами из комитетов.
Но что забавно, статья содержит просто-таки великолепную иллюстрацию "почему SGML-подобная разметка не имеет права жить". Там сначала приводят пример в этом поганом XML:
а потом показывают, во что весь этот беспредел превратится, если использовать старые (уж не знаю насколько добрые) S-выражения:
Причём там, насколько я понимаю, рассматривают как достоинство предложенной XML-схемы именно то, что она вот так вот легко переводится в S-выражения.
По-моему, это всё, что нужно знать про XML и вообще SGML-подобные языки.
ответить
Re: Re: Математические символы
HTML, вроде как, происходит от SGML... Да и вообще похож. Получается, он тоже не должен жить?
ответить
Re: Re: Re: Математические символы
Разумеется, не должен. Как и веб в его нынешнем виде. А что, в этом есть какие-то сомнения?
P.S. см. также вот это недавнее обсуждение.
ответить
Re: Re: Re: Re: Математические символы
Существует ли язык разметки, который вы могли бы рекомендовать для замены HTML? Совсем без разметки-то всё же грустно. Markdown какой-нибудь, или там GemText, может быть?
ответить
Re: Математические символы
Зависит от решаемой задачи. Скажем, для подготовки печатных документов меня вполне устраивает LaTeX.
Если говорить конкретно о разметке для чего-то такого, что заменит современный веб, то тот же GemText в принципе шаг в правильном направлении, но сам проект Gemini, на мой взгляд, с самого начала пошёл не туда: так напирать на простоту реализации и при этом потребовать не просто криптографию, а прямо TLS со всеми его прелестями, включая зависимость от OpenSSL или какого-то её аналога, эмммм... ну так нельзя.
ответить
Re: Re: Математические символы
А если разметка нужна для подготовки электонных книг, которые будут именно правильными электронными книгами в итоге, то есть предназначенными только для чтения на экране, то есть без разбивки на страницы, но с разбивкой на главы/подглавы, кликабельным оглавлением и каким-никаким форматированием, то есть как миниму чтобы можно было поставить ударение где нужно, выделить жирным/курсивом/подчёркиванием отдельные слова и добавить иллюстрации? При это должна быть возможность легко масштабировать на экраны разных размеров, то есть точно не PDF.
Нужно ли два разных формата для художественных электронных книг и для технической документации?
ответить
Re: Математические символы
> А если
Не знаю, не изучал вопрос. И, кстати, если вы мои книги считаете неправильными, то какого дьявола вообще забыли на моём сайте? Есть много других мест, "правильное" ищите там, где оно есть, а не там, где его нет и никогда не будет.
Вообще по-моему под ваши требования вполне подходят и ReST, и Markdown, и GemText. Хотя могу ошибаться.
> Нужно ли два разных формата
Подозреваю, что их нужно намного больше, чем два.
ответить
Re: Re: Математические символы
Всё путем сравнения познается. XML может и поганый, но тогда интересно какими словами вы охарактеризуете разметку JSON.
ответить
Re: Математические символы
Цитирую сам себя:
А если коротко — я уже лет пятнадцать говорю одно и то же: отстреливать вебщиков надо. Из чисто санитарных соображений.
ответить
Re: Re: Re: Математические символы
Я, конечно, извиняюсь, но сравнивая json и xml, мне всегда казалось, что XML в разы хуже, чем JSON. Хотя бы наличием открывающего и закрывающего тега с дублированием имени.
ответить
Re: Математические символы
Прежде всего:
сравнивая json и xml, мне всегда казалось
приведите в порядок свою манеру использования родного языка. Подобные "конструкции" — это неуважение ко всем, кто их будет вынужден прочитать. Деепричастный оборот относится к подлежащему, а подлежащего здесь тупо нет; не умеете использовать "сложные" конструкции русского языка — не используйте их вовсе.
По существу вопроса: полагаю, что сравнение сортов дерьма — дело неблагодарное, но при этом есть парочка интересных моментов. Для разметки естественного текста XML (или скорее SGML с добавлением "и его потомки") хоть как-то подходит, JSON не подходит и не предназначен для этого в принципе. Т.е. те, кто JSON придумали, изначально предполагали его именно как формат машиночитаемых данных, а не как язык разметки. Я не знаю, из какого перегнившего дерьма должен состоять мозг, чтобы такое выдумать, особенно с учётом того, что к тому времени УЖЕ повсеместно можно было наблюдать попытки в этой же роли использовать XML, и не было совершенно никаких проблем увидеть своими глазами, какая адская хрень из этого получается.
ответить
Re: Re: Математические символы
Всё же JSON это не совсем даже формат данных. Он обрабатывается ныне как формат данных, но вообще-то это код на JavaScript. Когда он только появился, вся обработка его сводилась к скармливанию полученного файла тому же интерпретатору JS, в котором работала "обрабатывающая" его программа. Потом, конечно, все схватились за головы и быстренько сделали отдельные либы для его разбора, но всё равно это было эпично.
ответить
Re: Математические символы
Ага, то есть те, кто это придумали, не понимали даже самых элементарных азов безопасности. Ну я даже не знаю, это что, так сложно — задуматься, что в файле, который "скормили" интерпретатору, может быть не только присваивание некой структуры данных некой переменной, но и ещё что-нибудь, написанное на том же JS. Совершенно ведь не rocket science.
При этом в последнее время активно муссируется миф, что любая программа, написанная на чистом Си, обязательно дырява через переполнения буферов. Замечу, те, кто этот миф разгоняет, сами совершенно однозначно не понимают ни того, как возникают подобные дыры, ни того, как их эксплойтить.
Хотя, конечно, больше всего тут доставляют те, кто ломанулись писать парсеры для JSON, вместо того чтобы элементарно и цинично дать по башке всем, кто в таком виде пытался передавать данные.
ответить
☞ From Anonymous (unverified) Fri Oct 13 16:34:05 2023
Библиотека 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).
В общем ничего нормального найти не получается, а пользоваться тем, что есть, крайне не хочется. Писать самому - много работы, за которую, увы, никто не заплатит. Может есть какое-нибудь решение?
ответить
Re: Библиотека C++ "на все случаи жизни"
Ага, ну конечно.
STL сделали, херня получилась.
Boost сделали, херня получилась.
Надо ещё что-нибудь сделать.
Когда в третий раз херня получится, пойдёте на четвёртый круг? Или всё-таки остановитесь? Хотя вряд ли, конечно, такие не останавливаются. Some people never learn.
Какого чёрта таких персонажей вообще тянет на мой сайт, а?
UPD: Слушай, сделай одолжение, свали отсюда, а? Мне с такими как ты обсуждать нечего, и если тебе непонятно, что сам этот подход заведомо ублюдочен — то я, извини, тебе ничего нового не объясню. Набьёшь шишек сам, авось допрёт.
Если что: создателей Qt надо было пристрелить маленькими в кроватках. Но этого никто не сделал, а жаль.
ответить
Re: Re: Библиотека C++ "на все случаи жизни"
>Если что: создателей Qt надо было пристрелить маленькими в кроватках. Но этого никто не сделал, а жаль.
Обратитесь в хамас, они как раз на этом специализируются
ответить
Re: Библиотека C++ "на все случаи жизни"
Я сильно сомневаюсь, что в их распоряжении имеется машина времени.
ответить
Re: Библиотека C++ "на все случаи жизни"
Напишите себе "библиотеку" - так называемый набор необходимых функций, часто используемых, и пользуйтесь ими. Хотя, даже собственные "заготовочки" могут сыграть злую шутку - через некоторое время после их написания, вы можете забыть, как вы их написали. То есть вот взять и начисто написать какую-нибудь из вами написанных функций вам станет очень не легко. Хотя кому как.
ответить
Re: Библиотека C++ "на все случаи жизни"
Чувак же явно хочет свою библиотеку контейнеров, что вы ему такое советуете? Он же, чего доброго, напишет.
ответить
☞ From Anonymous (unverified) Thu Oct 12 19:24:17 2023
Мечтать не вредно
Личная свобода - это здорово, к этому надо стремиться. Но в предверии последних событий возникает вопрос: если существуют люди, у которых цель жизни - уничтожить вас и будут делать всё возможное, чтобы подвергнуть вас насилию, то что с ними делать?
Можно отгородиться? Но это не на всегда. Зверь в клетке только яростней становится. Государство защитит? Не всегда прибывает в нужное время и нужное место
По-моему, самое адекватное - вооружаться самому.
ответить
Re: Мечтать не вредно
> в предверии
Гм, пред-верие... Это как, ещё не верю, но вот-вот поверю? Достали уже, следите за тем, что печатаете. Если что, из контекста тут должно быть скорее "преддверие", но...
> последних событий
... но как можно говорить о "преддверии" событий, которые, судя по всему, уже произошли — не вполне понятно. Ну то есть если бы речь шла о том, что я или вы или кто-то ещё думал/делал недели этак две назад, это было бы даже правильно, но тут я не вижу, чтобы как-то по контексту подразумевалось недавнее прошлое.
> то что с ними делать?
Если они не являются гражданами одного с вами государства, то ответ очевиден: уничтожать.
Если являются, то да, вопросы к государству. Впрочем, если оно почему-то не справляется, то останется тоже только уничтожать. Но оно, как ни странно, обычно справляется. Которые не справляются — перестают существовать как государства, превращаются в failed state.
> Можно отгородиться?
Нельзя. В смысле можно, но бесполезно, всё равно прорвёт.
> самое адекватное - вооружаться самому
Я никогда даже мысли не допускал о том, что ограничение оборота личного огнестрельного оружия может быть легитимно, это всегда государственный беспредел. И, как и любой государственный беспредел, должно быть искоренено. Скажем, короткоствол и охотничье оружие должно продаваться вообще свободно без ограничений, примерно как пылесосы или телевизоры, не должно быть никаких ограничений на их хранение и ношение. Ну то есть может быть запрещено иметь при себе снаряженное оружие в определённых обстоятельствах (например, в общественном транспорте — будь любезен, вынь обойму и положи в другой карман), и даже в некоторых особых случаях может быть вообще запрещено при себе иметь оружие (в заведениях, где продаётся алкоголь, типа ресторанов и ночных клубов — будь любезен, в гардеробе тебе предоставят сейфик, положи туда и запри, потом заберёшь; а ещё в самолётах — сдай в багаж, причём да, обойму отдельно). Но не более того. Я даже противник любого рода регистрации стволов, если речь идёт о пистолетах и ружьях.
С автоматическим оружием и снайперскими винтовками вопрос сложнее, у меня есть на него ответ, но спойлерить не буду — об этом скоро будет ролик.
Только это всё не имеет никакого отношения к защите от внешнего врага, особенно от нашествия варваров. Против толпы вооружённых варваров в одиночку ничего толком не сделать в любом случае, будь у вас хоть собственный оружейный магазин. Да и даже если с другими скорефаниться, то разве что можно продержаться до подхода государственных сил, и то если повезёт. Если же государственных соответствующих сил не найдётся, то личная вооружённость не спасёт.
ответить
Re: Re: Мечтать не вредно
Не сочтите за неуважение, но из оружия вытаскивают магазин, а не обойму.
ответить
да хоть супермаркет
Формально оно так, но по факту я ни разу не слышал, чтобы этот самый магазин в разговоре называли именно магазином, когда речь идёт о каком-нибудь ПМ. Возможно, общаюсь не с теми.
ответить
☞ From Anonymous (unverified) Thu Oct 12 06:19:10 2023
есть мнение ?
Как вам книга "Чистый код" (автор Robert Martin) ?
ответить
Re: есть мнение ?
А никак. Есть намного лучше и втрое короче.
ответить
Re: Re: есть мнение ?
А её имеет смысл читать если уже прочитал четырёх/трёхтомник?
ответить
Re: есть мнение ?
Из неё много материала вошло в текст трёхтомника — по кусочку в разных местах. Но, во-первых, разрозненно, а во-вторых, всё-таки не всё. Так что да, пожалуй, всё же имеет.
А ещё, пардон, четырёхтомник — это уже музейная история, в бумаге вы его вряд ли найдёте (по моим подсчётам, полных комплектов в итоге существует чуть больше сотни, хотя разрозненных томов по рукам гуляет довольно много), а если всё равно читать с экрана, то нафига это старьё. Во втором издании тоже много известных косяков, но всё же лучше.
ответить
☞ From Alejandro
Thu Oct 12 06:05:40 2023
GNU Readline
Здравствуйте, Андрей Викторович. В параграфе 8.2.3 вы описываете функции
sigsetjump
иsiglongjump
и как они используются с функциями библиотеки Readline. Есть такой вопрос: как вы думаете, почему авторы Readline использовали такой, хм, необычный способ завершать выполнение функций?ответить
Re: GNU Readline
Подозреваю, что это было тупо первое, что в голову пришло. Иного объяснения этому чудовищному решению у меня нет.
ответить
☞ From В Раздумье (unverified) Sat Oct 7 18:17:46 2023
Кратенькая история UNIX в начале четвёртой части Учебника
В части 4 всех изданий учебника к истории UNIX, уже кратко изложенной в первом томе, добавлена примерно такая фраза: "система уже работала на популярной тогда PDP-11, которая была несовместима с PDP-7 по машинному коду, но ассемблерные мнемоники на этих компьютерах использовались почти одинаковые, так что перенести систему с одной машины на другую удалось сравнительно быстро"
Не могу понять, в чём заключалась почти одинаковость мненмоник, и как она ускорила перенос системы на машину с совсем другой архитектурой.
PDP-7 UNIX: http://www.tuhs.org/cgi-bin/utree.pl?file=PDP7-Unix/sys/s4.s
PDP11: http://www.tuhs.org/cgi-bin/utree.pl?file=V1/u5.s
Вопрос с дальнейшим изложением не связан и не мешает работе с книгой, поэтому спросил не в обсуждении конкретных изданий, а в гостевой.
ответить
Re: Кратенькая история UNIX в начале четвёртой части Учебника
Честно? Да хрен его знает, я сейчас за давностью лет даже не вспомню, откуда я это утверждение выкопал, впервые оно появляется в книжке 2006 года, то есть писал я первую версию этого текста 18 лет назад.
Видимо, придётся в следующем издании этот фрагмент переписать и вообще произвести некий фактчекинг, благо сейчас информации на эту тему доступно намного больше, чем тогда. Ну, это если переиздание вообще будет. Что-то я в этом сомневаюсь.
P.S. поменял в вашем комменте тэги code на pre, ибо code делает совершенно не это.
ответить
☞ From Anonymous (unverified) Sat Oct 7 02:32:58 2023
Архив гостевой
Теперь сюда http://stolyarov.info/guestbook/archive можно попасть по стрелочке вверх ⇑ ?
ответить
Re: Архив гостевой
В смысле "теперь"? Раньше тоже можно было, ровно с момента перехода на новый движок.
ответить
Re: Re: Архив гостевой
Неправильный вопрос. Кроме стрелочки где-то есть ещё ссылка русским языком с текстом "Архив гостевой"?
ответить
Re: Re: Re: Архив гостевой
Хороший вопрос, кстати. Пожалуй, сейчас сделаю.
ответить
☞ From Anonymous (unverified) Thu Jul 27 19:15:18 2023
Грязные хаки с памятью
Вы часто упоминаете что на машинах Фон Неймана нужно работать с памятью. А нужно ли это за пределом ассемблера?
Даже на чистом Си, где работа с памятью неизбежна все стремятся с ней по возможности не работать. Попытаюсь пояснить.
или
Всегда, когда будет возможность не работать с памятью (без понижения производительности / повышения потребления этой самой памяти) мы не будем с ней работать. Это просто лишнее усложнение, которое можно избежать.
Если массив на куче и объект на куче будут фундаментальными конструкциями языка, то работа с памятью (за исключением передачи аргумента по ссылке) вообще не нужна в прикладных программах.
Не переоцена ли работа с памятью в прикладных программах? Мне кажется если подумать, то можно придумать язык, в котором памяти как будто не существует вообще, но при этом он работал бы так же быстро как С.
Вся "работа с памятью" сводится тупо к размещению объекта в памяти и его освобождение, а также получения доступа к объекту. Настоящая же работа с может понадобиться лишь в ядре и для демок, где с помощью определённых извращений можно творить "магию".
Как думаете, здравый ли это подход: выкинуть работу с памятью из прикладного ПО, заменив её высокоуровневыми конструкциями, которые реализуют те немногие нужды работы с памятью так же эффективно?
ответить
Об одном популярном мифе и его последствиях
Конечно, плотность грубейших косяков в этом коротеньком тексте способна удивить сама по себе. Начать с того, что работу с адресами и указателями ТС обзывает "работой с памятью" (если что, с памятью работает вообще любая программа на любом языке). Ещё ТС неявно отождествляет системное программирование с работой на языке ассемблера, что уже просто кромешная чушь. А кроме того — выражает надежду, что можно придумать язык, который "работал бы так же быстро как С", хотя как раз скорость работы тут сто лет не главное, и вообще это не характеристика языка как такового, тормозную программу можно написать на любом языке, не исключая языков ассемблера; и если программа тормозит, то виноват (всегда!) не язык, а автор программы. Но это всё, как ни странно, не так уж важно.
Более интересное мифотворчество начинается с утверждения, что эта вот, в терминологии автора коммента, "работа с памятью" якобы представляет собой "просто лишнее усложнение". Делается даже заявление, что-де "все стремятся" присваивать переменные структурного типа вместо явного вызова memcpy. Ага, вот прямо все. Не знаю, кто такие эти "все" и где ТС их откопал, но лично я не припомню, когда в последний раз видел присваивание переменных структурного типа, передачу их по значению в функции или возврат их из функций в качестве значения в программах на чистом Си. В C++ — сколько угодно, но это совершенно другой язык с другими традициями (дополнительное пояснение см.ниже); если же такое встречается в коде на чистом Си — это довольно явный признак профнепригодности или как минимум полного непонимания, что такое этот самый чистый Си и зачем он нужен.
На всякий случай отмечу, что в таких случаях явный вызов memcpy играет очевидную дисциплинирующую роль: копирования структур как целого можно избежать едва ли не в любой задаче (если чуть-чуть подумать, обычно оказывается, что достаточно присвоить/скопировать/передать либо адрес, либо какое-нибудь одно поле, в крайнем случае два, возможно, ценой небольшой модификации используемого алгоритма), плюс к тому во многих случаях копирование структуры — это в принципе не то, что с ней следует делать (например, когда переменная "владеет" чем-то за пределами самой себя, неважно, память это, файловый дескриптор или ещё какой-то ресурс), но когда это копирование делается одной операцией присваивания, программист обычно просто перестаёт обо всём этом думать. В C++ так можно, поскольку там переопределением присваивания и введением собственного конструктора копирования можно бремя отслеживания корректности копирования компаундов благополучно взвалить на компилятор и забыть о нём, но в чистом Си забывать о содержимом структуры недопустимо.
Что касается явной работы с адресами и указателями, то для программиста (в отличие от жабопитонорастомакак и прочих недоучек, с какой-то радости считающих себя программистами, но таковыми не являющихся) работа с адресами никакой сложности не представляет, а утверждение, что адреса есть "лишнее усложнение", представляет собой миф, порождаемый, насколько я могу судить, теми "преподавателями" программирования, которые сами программировать не умеют (и не пытаются) и для которых адреса и указатели реально могут представлять серьёзную и даже непреодолимую сложность, как и весь предмет программирования в целом. Но миф есть миф, а реальность устроена совершенно иначе: если у персонажа, пишущего код, сохраняется некий дискомфорт в отношении явной работы с адресами, то это повод потренироваться и привести свою квалификацию в соответствие с избранной профессией, или сменить профессию, но уж никак не пытаться подогнать окружающий мир (вместе с программированием как профессией) под собственную лень или ограниченные способности.
Между прочим, языки, в которых динамическая память, как выразился ТС, является "фундаментальными конструкциями языка", давно уже придуманы, можно ничего нового не городить. Вся скриптуха, например, именно такова. Лиспы там всякие, опять же. Да и вообще всё, кроме тех языков, с которыми хоть как-то ещё можно работать в качестве языков общего назначения (а таких я знаю ровно два: чистый Си и C++, оба ужасны, оба сделаны чёрт-те как, но всё остальное вообще никуда не годится).
Но главный, основной и самый кошмарный по своим последствиям миф, который мы тут наблюдаем, состоит в том, что якобы существует какое-то такое "прикладное программирование", и не просто существует, а представляет собой отдельный вид деятельности, настолько отдельный, что для него должны быть какие-то "другие" языки программирования. ТС этого явным образом не сказал, но на следующем шаге тут обычно возникает утверждение, что к тем, кто собирается заниматься этим вот "прикладным" программированием, можно применять сниженные требования, а значит — можно не учить их "всяким премудростям". Это утверждение, разумеется, очень удобно для халтурщиков, якобы "преподающих программирование", при этом не знающих предмета, который преподают.
Пожалуй, здесь я не откажу себе в удовольствии процитировать самого себя (см. третий том, пар. 9.3.3 "Два подхода к сравнению языков"):
К этому добавлю, что макаками следует называть (и считать) не тех, кто пишет программы с использованием высокоуровневых абстракций, а исключительно тех, кто не понимает, как эти абстракции устроены, во что они превращаются при компиляции и как компьютер в итоге с ними справляется. Иначе говоря, макаки — это те, кто не понимают, что делают. Откровенно плачевное состояние мировой IT-индустрии, которое мы сейчас наблюдаем, представляет собой как раз прямое следствие распространения мифов, которыми нас тут попытался накормить автор исходного коммента. Сначала одни говорят, что работать с адресами (в неведомом "прикладном программировании") не обязательно, другие из этого делают вывод, что и уметь работать с адресами не обязательно, а третьи — те самые преподы-халтурщики, всевозможные инфоцыгане и т.п. — облегчённо вздыхают, потому что теперь можно будущим (якобы) программистам не рассказывать всё то, чего они сами начисто не понимают и не умеют.
Вот чего мне никогда не понять, так это за каким дьяволом такие люди, как автор обсуждаемого коммента, вообще пытаются программировать. Кому программировать нравится — тех работа с указателями вряд ли способна хоть немного смутить. А вот если не нравится — то такая работа превращается в непрерывный бессмысленный мазохизм; тут, конечно, кому как, но по мне так даже сравнительно высокие программистские зарплаты не способны компенсировать такое издевательство над собой.
Хотя мы, по правде говоря, не знаем, пытается ли этот субъект, скрывшийся под сакраментальным именем "Anonymous", программировать; возможно, он как раз из тех самых преподов-халтурщиков. По стилю, во всяком случае, похоже. Честно говоря, очень хочется им всем посоветовать пойти утопиться, но тут есть одна сложность: если все, кто преподаёт программистские предметы, не умея при этом программировать, разом самовыпилятся, вести программистские предметы в учебных заведениях всех уровней станет просто некому, оставшихся считанных единиц действующих или хотя бы бывших программистов на всех не хватит никак. Увы, реальность именно такова. Но есть одна фраза, от которой я в отношении этой публики точно не откажусь: не знаешь предмета, который преподаёшь — хотя бы не лезь в методисты.
Ну а если это всё-таки программист, а не препод, то моя рекомендация будет ещё проще: не мучайся, смени профессию. Нельзя же так всю жизнь-то.
ответить
Re: Грязные хаки с памятью
Даже на чистом Си, где работа с памятью неизбежна все стремятся с ней по возможности не работать.
Вас обманули.
Если массив на куче и объект на куче будут фундаментальными конструкциями языка, то работа с памятью (за исключением передачи аргумента по ссылке) вообще не нужна в прикладных программах.
Это просто какой-то позор... Какая-то нездоровая тенденция "упростите мне жизнь донельзя, чтобы я "программировал" местом, на котором сижу и не включал мозг". С какого бодуна выпускнику говнокурсов (судя по контексту коммента), который, вероятно, до этого работал каким-нибудь продавцом-консультантом, должны создавать какой-то инструмент под его глупые запросы? От этого коммента вообще отдаёт какой-то наглостью: неосилятор сетует, что ему не сделали очередной нескучный и несложный язычёк "шоб работа с памятью меня не напрягала". Так есть питон и жаба - в чём проблема? Или тенденция последних лет "вылета на мороз" всяких принеси-подай от IT напугала? Тут, походу, типичные страдания "случайного попаданца", который решил попробовать в серьёзное программироваие и сдулся, потому что "сложно работать с памятью".
Может резко, но реально задолбали эти страдания "сложна работать с памятью". Сложно, ну иди в доставку еды или ещё куда.
ответить
Re: Грязные хаки с памятью
> должны создавать какой-то инструмент под его глупые запросы?
К сожалению, он вполне может понимать, что никто ему ничего не должен. А ещё хуже то, что иногда среди подобных персонажей встречаются те, кому хватает сил этот "инструмент" сваять самому. Иначе откуда бы взялись перл, питон, пыхапы, жаба, Go, Rust, в конце концов? Вот оттуда они и берутся.
ответить
Re: Re: Грязные хаки с памятью
Ну вот не согласен, точнее упущено одно важное звено, которое во многом и сильно больше ответственно за это безобразие. Это бизнес, которому совершенно не важно, как технически решена задача, главное чтобы она была решена быстро. И он (а точнее крупные корпорации, для которых это тоже бизнес) спонсируют разработку вот таких вот инструментов. На энтузиастах которые что-то там в плюсах не осилили, уверен далеко бы перечисленные технологии не ушли.
ответить
Re: Грязные хаки с памятью
На самом деле всё не так просто с корпорациями. Макаки с их макачьими инструментами, конечно, могут навалиться и "решить задачу быстро", точнее, сравнительно быстро (на самом деле обычно нет) сделать то, что им сказали — а не то, что было реально нужно, это обычно две большие разницы. Потом финальные заказчики более-менее снимаются с ручника и с опозданием на полгода таки формулируют, чего хотели на самом деле. И вот тут программу, нормально написанную адекватными людьми, можно было бы слегка доработать, но макаковый высер приходится переписывать полностью. Так что "быстро" в итоге не получается. Зато очень хорошо получается осваивать бюджет: вон сколько мы набрали программистов, вон сколько они сваяли кода.
Хотя, конечно, проблема безграмотности конечного заказчика не отменяет вредоносности корпораций как явления. Но, опять же, кто-то ведь должен продать манагерам — тем, кто может выделить бюджет — вот эту вот идейку создания очередного инструмента для обезьянок. И этот персонаж, который продаёт — сам он не может быть совсем обезьянкой. Вот таких я, собственно, и имел в виду.
ответить
Мартышки-жертвы
Ага, ну мартышки, собственно, очень любят прикрываться описанным порядком вещей, типа "не мы такие - жизнь такая". "Программируем" на том, за что платят, называется. Правда эйфрория и энтузиазм мартыхи внезапно, улетучивается (а если повезёт, наступает и прозрение), когда очередной бодишоп начинает проводлить оптимизацию, выгоняя лишних "операторов стековерфлоу" за ненадобностью.
ответить
Re: Re: Грязные хаки с памятью
Насколько мне известно, в разработке go основную (ну или по крайней мере очень значительную) роль сыграли Дэнис Ритчи, Кен Томпсон и Роб Пайк.
Относительно первых двух, по меньшей мере, очень сложно сказать, что они идиоты. В конце концов это люди, давшие миру UNIX, C и огромное количество других полезных инструментов.
ответить
ух какое жирное, даже удивительно
Ну, положим, Ритчи там не участвовал, но Томпсон и Пайк да, отметились. Будучи, что вполне естественно для их возраста, уже в глубоком маразме. Я больше скажу, поскольку дело происходило в недрах Гугла, эти двое, очевидно, были приглашены на роль свадебных генералов, а Ритчи просто отказался продаваться мудакам из гугла для их мудацких плясок, потому и не попал в эту позорную компанию. Разумеется, ни о какой основной и даже сколько-нибудь значительной роли этих великих старцев в разработке одного из самых дебильных языков программирования, пардон, и речи быть не может, основным создателем этой позорной хрени был никому не известный на тот момент гугловский программист по фамилии Гризмеер.
Впрочем, насчёт того, чтО там кто дал миру, правильнее говорить совершенно иначе: эти люди первыми на коленке, не ощущая никакой ответственности за содеянное и, разумеется, не предполагая, что их наколенные поделья переживут их самих, слепили ЯВУ, на котором оказалось возможно сделать операционку, и собственно саму эту операционку. В итоге прочно своими подельями заняли нишу, из которой минимум одно из тех поделий — именно, язык Си — вышибить никто не может уже лет тридцать по меньшей мере — ну то есть уже в середине 1980-х было понятно, насколько Си чудовищен, крив и дебилен, но всё, поздно пить боржом — ниша занята, нарисовался — хрен сотрёшь.
Так ты что сказать-то хочешь? Что если типа "уважаемые люди делали", то это дерьмо — Go, изначально предполагающий сборку мусора — станет чем-то отличным от дерьма? Вообще мне вот что интересно, тебя кто научил, что ссылка на авторитет может выступать самостоятельным аргументом? Ну так Торвальдс вон вообще говорит, что goto можно использовать сколько угодно, а все, кто придумал, что от goto есть вред — это жертвы образования по специальности computer science (в отличие от software engineering). А ещё анекдот есть про прапорщика, которого спрашивали, летают ли крокодилы. Вот он тут как раз к месту.
Сделай одолжение, чмошник, свали с моего сайта и дорогу сюда забудь навсегда. Мне тут такое никаким боком не требуется.
UPD: Что непонятно? Вон с моего сайта, тема закрыта, любые твои дальнейшие комментарии премод не пройдут.
ответить
Re: Re: Re: Грязные хаки с памятью
в разработке go основную (ну или по крайней мере очень значительную) роль сыграли Дэнис Ритчи, Кен Томпсон и Роб Пайк.
Какая разница кто там принял участие, если на выходе получился очередной нескучный язычёк для мартышек?
Ну разработал хухль "инструмент" для каких-то своих целей? И что с того? Ну взяли его на вооружение бодишопы всякие - ну так там сфера такая - пишут на чём попало, без разбора.
Этот Go не решает ни одной из существующих проблем, более того, сборка мусора - это вообще несерьёзно. "Системное программировнаие на Go" - звучит вообще как стёб. Фейспалма добавляют заказы на фриланс-биржах по типу "Переписать с Go на С++". Всё в лучших традициях "наняли мартыху на копейки, теперь ищем того, кто сделает как надо".
Хотя, что тут объяснять: для ньюфагов любое изделие от хухля - это априори "безусловное нужно".
ответить