Архив гостевой книги с 25.09.2012 по 02.06.2019Эта страница гостевой книги является архивной. Новые комментарии просьба оставлять в действующей гостевой книге. Ответы на старые комментарии здесь по-прежнему возможны. Учтите, что комментарии на этом сайте премодерируются. |
пояснениеВы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям. Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда. Андрей Михайлович Столяров в библиотеке Мошковаваш сеанс |
☞ From newx Fri Apr 23 21:55:00 2021 UTC
Насчет комбинаторной задачи про шахматистов
Только что осилил параграф 1.3.1 про элементы комбинаторики.
Задачки из этого параграфа я пытался сперва сам честно решить, а только потом "подсматривал" авторикий вариант решения.
В конце параграфа, наткнулся на "хрестоматийную задачу" про шахматный турнир:
Эту задачку я тоже решил сперва попробовать решить своими силами... и первая мысль которая пришла мне в голову:
блин, это ж ровным счетом задача на поиск кол-ва сочитаний из n по k. Ну типа: "сколькими способами можно выбрать двух игроков из семи без учета порядка выбора?"
Вобщем честно нашел ответ и принялся читать дальше в надежде увидеть отсылку к поиску числа сочетаний...
короче я был несколько удивлен тем, что про этот подход решения задачи не было ни слова, а совсем другими рассуждениями автор вывел формулу
Я сразу же вооружился ручкой и быстренько вывел тождество
Короче к чему я все это: я получил неподдельное удовольствие разбираясь в задачах этого раздела(хоть они и совсем школьные) -- приятно осознавать что еще не все мозги вытекли и ты еще способен хотя бы изредка шевелить извилинами :-D
ответить
From admin Sat Apr 24 11:12:00 2021 UTC
Открою один
Открою один секрет: мне никогда не приходило в голову эту задачу решать через комбинации. Хотя ваше решение, несомненно, верное.
P.S. вы ещё глубже свой комментарий закопать не могли? Этот раздел гостевухи был закрыт почти два года назад.
ответить
From Parthen Sat Apr 24 12:13:00 2021 UTC
Между прочим
Если в блоке аккаунта нажать на ссылку "Гостевая книга", то пользователь придет именно сюда.
ответить
From admin Sat Apr 24 14:45:20 2021 UTC
Спасибо,
Спасибо, поправил.
ответить
☞ From Anonymous (unverified) Tue Jun 25 13:30:00 2019 UTC
CSS3 и отказ от JS
Андрей Викторович, хочу поинтересоваться вашим мнением относительно возможностей аминирования и визуализации с помощью Cascading Style Sheets третьего поколения (CSS3).
Как вы относитесь к применению гибкой компоновки страницы сайта с использованием плавных анимаций сжатия/растягивания?
И стоит ли пытаться задействовать всю мощь CSS3, при отказе от JavaScript, или это уже за гранью излишества?
ответить
From admin Wed Jun 26 15:23:00 2019 UTC
С моей точки
С моей точки зрения все возможности CSS, находящиеся за пределами спецификации CSS1, являются недопустимыми. Что касается CSS3, то эта мерзость алгоритмически полна, то есть её использование недопустимо по тем же причинам, по которым недопустимо использование JS и любого другого исполнения на стороне клиента. А ещё, как мне кажется, вы ошиблись сайтом: здесь вам делать явно нечего.
ответить
From Anonymous (unverified) Wed Jun 26 17:42:00 2019 UTC
Спасибо вам за
Спасибо вам за ответ! :)
Ну почему же ошибся, я взялся читать ваши книги -- черпаю из них знания, методологии -- очень интересно, и мне нравится ваш стиль трактовки.
К сожалению бумажные варианты томов мне пока заполучить не удалось, а электронку читать -- не всегда удобно -- ни стикерных-закладок не влепить, ни маркером нужные строки не пометить.
Первой вашей книгой мне попалась "Введение в язык Си++" -- вступление было настолько захватывающим, что в тот же день я попытался найти возможность приобрести бумажный вариант, но за границей такой возможности не было, посему на второй день я уже гуглил как распечатать и сшить книгу самостоятельно на дому -- и удалось это только на третий день. :D
Книга, кстати, к середине оказалось довольно тяжелой в понимании. Да, я уже осведомлён, что не верно действовал, и надо было сначала осилить первый том "введению в профессию", но печатать и сшивать такие объёмы уже не очень хотелось, а с чтением электронки -- всё медленно и печально.
ответить
From admin Mon Jul 1 08:09:21 2019 UTC
Я бы сказал, что
Я бы сказал, что осилить надо не первый том, а первые два по меньшей мере: изучение C++ без знания и уверенного владения чистым Си — это путь в никуда, ну а освоению чистого Си должны предшествовать как минимум освоение программирования как такового (на примере Паскаля, ибо больше ничего для этого толком нет) и работы на уровне машинных команд (т.е. на ассемблере). Третий том уже не обязателен, там немного про другое.
К сожалению, первые два тома в бумажном виде я предложить уже не могу, придётся подождать переиздания, а оно случится ещё не скоро. Сначала мне нужно четвёртый том добить, потом, во-первых, подготовить текст всей книги ко второму изданию (там, помимо обнаруженных ошибок, ещё предстоят довольно чувствительные переделки) и где-то найти, мягко говоря, кучу денег на то, чтобы издать все тома разом.
ответить
☞ From Anonymous (unverified) Tue Jun 11 06:48:00 2019 UTC
InfoViolence
Можно ли считать информационным насилием выступления певцов-музыкантов и продавцов мелочью в вагонах электричек? Есть ли разница между ними и теми, что выступают в переходах метро? Порой хочется побыть в тишине по пути на/c работу/ы, предаться своим мыслям, но в вагоне деваться некуда, да и лень пересаживаться на другое место, а в метро ты мимо проходишь, если не нравится.
ответить
From admin Tue Jun 11 16:01:47 2019 UTC
Можно ли
Можно ли считать информационным насилием выступления певцов-музыкантов и продавцов мелочью в вагонах электричек?
Несомненно.
Есть ли разница между ними и теми, что выступают в переходах метро?
Разница если и есть, то чисто количественная:
в вагоне деваться некуда, да и лень пересаживаться на другое место, а в метро ты мимо проходишь, если не нравится.
Вообще-то и деваться есть куда, и беруши в уши воткнуть можно, если честно. Просто если целенаправленно не защищаться от этого дела, то в метро вы в штатном режиме пройдёте мимо (вы же не сюда шли, а дальше) и насилие над вами будет длиться от силы 15-20 секунд, тогда как в электричке это затягивается.
Иной вопрос, что вся эта проблематика требует системного решения. Надо для начала понять, что информационное насилие в местах открытого доступа тупо неизбежно: просто выйдя на улицу, вы уже навязываете тем, кто там есть, как минимум информацию о своём внешнем облике. А дальше кому-то неприятен вид стариков и инвалидов, кому-то — например, вид людей с жевательной резинкой, а кого-то реально бесят красивые девушки (да, есть и такие люди). И мы плавно приходим к тому, что в применении к местам открытого доступа не может быть никакой речи ни о какой "свободе самовыражения", поскольку всё это в действительности никакая не свобода, а узаконенное насилие над другими. Полностью устранить информационное насилие такого рода можно только если избавиться от мест, в которых люди вынуждены бывать одновременно с другими людьми (привет "абсолютно абстрактному обществу" Поппера), на нынешнем уровне развития цивилизации это технически невозможно, но это не значит, что в местах открытого доступа следует позволять вообще что угодно.
Хуже всего то, что вопрос "а где граница?" не имеет однозначного ответа. Но если в принципе осознать проблему (чего пока что и близко нет) и перестать разглагольствовать о "свободе самовыражения" и прочих "свободах" в применении к местам открытого доступа, то, пожалуй, уж проблема коробейников и попрошаек окажется решена всерьёз и с концами.
ответить
From gmoshkin (unverified) Tue Jun 25 12:20:00 2019 UTC
А как Вы
А как Вы относитесь к такой точке зрения, что все (или большинство) примеров, которыми вы иллюстрируете информационное насилие, на самом деле являются симптомами системных проблем устройства государства. Например повсеместное распространение рекламы напрямую связано с ростом прибыли компаний, и поэтому сильно поощряется текущей экономической системой (которая на защиту конечных потребителей не нацелена). Также и "проблема попрошаек" вызвана в большой степени тем, что доступа к хорошему образованию у людей гораздо меньше чем к дешёвому алкоголю. Как по мне, так рассматривать эти проблемы с социо-экономической точки зрения гораздо продуктивнее.
К тому же вопрос о границах по-моему всплывает не только в проблеме музыкантов, но и в рассмотрении информационального насилия как концепции вообще. По-моему не трудно было бы продолжить логику Ваших размышлений до того, чтобы считать насилием даже этот мой комментарий (и вообще любую инициацию общения). Я например этим комментарием могу заставить Вас думать о темах, которые Вам были бы неприятны (не то, что бы я считал, что поднимаю такие темы. Пример чисто гипотетический), или могу оскорбить Вас грамматическими ошибками. Как Вы относитесь к задаче построения границ в этом плане?
ответить
From admin Mon Jul 1 07:17:03 2019 UTC
Что-с? Как я отношусь к гуманистическим бредням? :-)
А как Вы относитесь к такой точке зрения,
Как-как, обычный пропагандистский баллшит, причём то ли придуманный людьми без мозгов, то ли (что более вероятно) предназначенный для людей без мозгов. Ну вот смотрите сами:
Также и "проблема попрошаек" вызвана в большой степени тем, что доступа к хорошему образованию у людей гораздо меньше чем к дешёвому алкоголю.
Эта фраза очевидным образом предполагает, что общество (с вашей точки зрения) могло бы стать лучше, если бы доступ к образованию был больше, а доступ к алкоголю — меньше.
Начнём с алкоголя. Себестоимость производства спирта такова, что бутылка более-менее качественной водки — не hi-end, но и не сивушной — должна бы на выходе с завода стоить примерно 10-15 рублей, на полке в магазине — от силы рублей тридцать. То, что мы видим — в пять-семь-десять раз больше — есть результат усилий государства в виде госмонополии на спиртное, акцизного налога и прочих мер, направленных на ограничение того самого доступа к алкоголю. С моей точки зрения все эти меры категорически недопустимы, государство обязано быть нейтральным по отношению ко всевозможным этическим, философским и прочим идеям, и пока это не так — имеет место государственный волюнтаризм, а само государство выступает как враг собственных граждан. В обществе, устроенном лучше, чем сейчас, доступ к алкоголю должен быть, разумеется, больше, проще и шире, нежели здесь и сейчас; если говорить совсем точно, не должно быть вообще никаких ограничительных мер для такого доступа, а вопрос, что, когда и в каких количествах употреблять внутрь, не может касаться никого, кроме самого индивида лично. Собственно говоря, свобода как таковая начинается с права каждого распоряжаться самим собой. На всякий случай: я, как и большинство либертарианцев, также считаю, что гражданам должны быть доступны вообще любые вещества, которые способен изготовить человек, в том числе наркотики любой степени тяжести. Единственное возможное ограничение здесь состоит в необходимости информированной доброй воли, т.е., например, условием законного приобретения какого-нибудь героина должна быть расписка о том, что с объективной (!) информацией о последствиях употребления этой штуки приобретающий ознакомлен.
Теперь вот «хорошее образование». Даже в МГУ, где я работаю, едва ли не трети студентов всё это ваше хорошее образование даром не нужно, а "учатся" они просто потому, что их мама с папой пинками в университет загнали и сказали, чтоб без диплома не возвращался. Мой опыт работы в ВУЗе третьего эшелона показал, что там таких студентов — процентов девяносто, если не больше. Иначе говоря, в настоящее время реальный спрос на образование (внезапно) намного ниже предложения. Да я вам больше скажу: вы можете мне указать хоть один университетский учебник, который невозможно было бы достать? Я вот ни одного такого не знаю, большинство вообще прекрасно из интернета скачивается, оставшиеся можно без особых проблем добыть в букинистических. Так что, если говорить о доступности именно образования как такового, а не мест в ВУЗах, то оно вообще доступно абсолютно всем желающим. Просто оно им не надо. В таких условиях стенания о том, что, мол, доступа к хорошему образованию мало, выглядят просто нелепо.
Теперь ещё вот это:
По-моему не трудно было бы продолжить логику Ваших размышлений до того, чтобы считать насилием даже этот мой комментарий (и вообще любую инициацию общения).
Логику так «продолжить» нельзя, если это именно логика, а не бессмысленный гуманитарный словесный понос. Я здесь на сайте сделал возможность оставлять комментарии, хотя мог бы её выключить; более того, я здесь выделил страницу под гостевую книгу и сделал на неё ссылку в навигации со всех страниц сайта. Больше того, я сам написал (см. вверху страницы) вот это вот Здесь вы можете ... написать всё, что думаете по этому поводу. Т.е. я явным образом обозначил своё согласие на получение комментариев. Единственное ограничение здесь — моя же фраза «просьба придерживаться темы и соблюдать приличия», но ваш комментарий формально этого не нарушает. В прицнипе я мог бы, наверное, обозначить своё нежелание тратить время на бессмысленное перемалывание сто лет в обед известных «аргументов» моих идеологических противников, но посчитал, что премодерации для этого более чем достаточно, тем более что иногда попадаются вот такие вот перлы вроде вашего комментария, ответ на которые мне даже становится интересно написать.
На самом деле здесь даже довольно просто локализовать точку столкновения мнений. Я считаю индивидуальную свободу (т.е. право и эффективную возможность каждого индивида не подвергаться инициированному насилию ни с чьей стороны) единственной ценностью, притом ценностью терминальной, то есть ценностью-в-себе; это означает, что идеальное (с моей точки зрения) общество должно рассматривать именно свободу индивидов, а не что-то другое, как основную цель своего существования и деятельности. Совершенно очевидно, что вы с этим не согласны, и, более того, я прекрасно знаю, что пытаться вас в чём-то убедить заведомо бесполезно. На том, видимо, и порешим.
ответить
From Anonymous (unverified) Tue Jul 2 15:09:00 2019 UTC
свобода и либертарианство
Андрей, с интересом прочёл ваш содержательный ответ некоему gmoshkin. Спасибо!
А не подскажете ли пару-тройку проясняющих книг и/или статей на тему либертарианства? Мне очень близка ваша точка зрения на индивидуальную свободу, но в теме я плаваю и даже не знаю, могу ли я с уверенностью называть себя либертарианцем.
Как, кстати, вы относитесь к художественным популяризациям Розова на эту тему?
ответить
From admin Wed Jul 3 11:59:28 2019 UTC
Либертарианство - штука сложная
Изначально этим термином вообще назывались философы, придерживающиеся точки зрения о свободе воли, т.е. об отсутствии предопределённости (в противоположность детерминистам). Уже в середине XX века "либералами" начали называть себя всевозможные "левые" — скорее популисты, нежели сторонники индивидуальной свободы. Основной пример различий между ними — отношение к социальному обеспечению a.k.a. вэлферу: эти вот новоиспечённые "либералы" все как один за вэлфер, тогда как сторонник индивидуальной свободы не может быть сторонником вэлфера, ведь вэлфер предполагает, что деньги сначала будут отобраны у кого-то другого, а то, что грабёж называют налогами, не делает его чем-то отличным от грабежа. В таких условиях сторонникам именно свободы, а не чего-то другого, прошлось искать для себя новое самоназвание, в качестве которого закрепилось слово "либертарианцы".
Надо сказать, что либертарианцы тоже бывают весьма и весьма разные, и там чёрт ногу сломит в их классификации. Так, обычно ту же Айн Рэнд называют классиком либертарианства, но вот лично я с ней мало в чём согласен.
В принципе у меня в диссертации (http://www.croco.net/croco/papers/stolyarov_philosophy_thesis_infofreedom.pdf, стр. 17--35) есть некий обзор, можете там посмотреть ссылки на источники, но на полноту охвата темы я претендовать не могу, меня всё-таки в основном интересовало информационное насилие — тема совершенно не исследованная.
Про Розова — к сожалению, не знаю, о чём идёт речь.
ответить
From Anonymous (unverified) Wed Jul 3 14:24:00 2019 UTC
В принципе у
В принципе у меня в диссертации (стр. 17--35) есть некий обзор
Спасибо! Просмотрю эти страницы повнимательнее. (Мой PDF-просмотрщик подсказывает мне, что диссертацию вашу я уже когда-то в нём открывал. Видимо, приводил в порядок свои мысли по поводу информационной свободы.)
Надо сказать, что либертарианцы тоже бывают весьма и весьма разные, и там чёрт ногу сломит в их классификации.
Значит, мои затруднения в самоклассификации достаточно объективны. Ну да и чёрт с ним, всё равно никогда не любил ярлыки. Всегда полезнее и понятнее сказать "я придерживаюсь такой-то и такой-то идеи", чем "я -- либертарианец".
Про Розова — к сожалению, не знаю, о чём идёт речь.
Розов пытается продвигать социально-философские идеи под видом художественных произведений. Насколько эти идеи близки к либертарианству -- не берусь судить, об этом я как раз хотел спросить у вас.
Вот он в википедии.
А вот первая книга цикла, самая, наверное, известная.
Посмотрите, вполне возможно, что вам понравится.
ответить
☞ From Anonymous (unverified) Fri Jun 7 04:19:00 2019 UTC
Андрей
Андрей Викторович, можете дать советы по изучению ядра Linux и написанию драйверов для него? Может, какие книги прочесть или на что обратить внимание?
ответить
From admin Fri Jun 7 14:22:33 2019 UTC
Я никогда не
Я никогда не пытаюсь никого учить тому, чего не умею сам.
ответить
☞ From Anonymous (unverified) Tue May 21 11:20:00 2019 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович. Ко мне попала программа одного вашего курса на ВМК. Интересны ваши мысли по поводу следующих вопросов в ней.
- Может ли программа, работающая под управлением современной ос, рассматривать компьютер как фоннеймановский?
- Что такое прерывание и почему вокруг этого термина нагородили много ахинеи?
Спасибо.
ответить
From admin Sun Jun 30 20:57:19 2019 UTC
Может ли
Может ли программа, работающая под управлением современной ос, рассматривать компьютер как фоннеймановский?
Нет. В многозадачных системах секция кода доступна работающему процессу только на чтение, так что программа не может изменять свой собственный код в рантайме. Раннее фоннеймановское программирование славилось именно этим — пока не придумали косвенную адресацию, единственным способом работы с массивом была прямая модификация адреса в коде команды, осуществляющей к этому массиву доступ.
Что такое прерывание и почему вокруг этого термина нагородили много ахинеи?
Ответ на этот вопрос имеется во втором томе, параграфы 3.6.3 и 3.6.4. К сказанному там добавлю, что превращение программирования из инженерной дисциплины, доступной (и интересной) лишь узкому кругу, в явление массовое пришлось на 1980-е годы, когда господствующей "платформой" был MS-DOS. При программиовании под MS-DOS довольно часто приходилось упоминать так называемые "программные прерывания" (термин само по себе дебильный), и слово "программное" часто забывали, так что публика стала забывать изначальный смысл слова "прерывание".
ответить
☞ From Daring (unverified) Tue Apr 30 09:08:00 2019 UTC
Задачники
Андрей Викторович, изучаю программирование по Вашим книгам. Пока только на середине первого тома. Потом планирую перейти на второй том (НАСМ и Си) и после него на Вашу книги по С++.
Буду признателен, если подскажите подходящие задачники по Си и С++.
Спасибо!
ответить
From admin Fri May 10 23:27:50 2019 UTC
Увы, я не видел
Увы, я не видел вообще ни одного задачника по Си и тем более по Си++, которые мог бы рекомендовать. Да и вообще я настороженно отношусь к задачникам по программированию. Если вам нравится программировать, то заморочку вы себе найдёте сами, а если не нравится — то какой смысл мучиться?
ответить
From Daring (unverified) Sun May 12 09:48:00 2019 UTC
Лично мне
Лично мне задачник интересен в качестве закрепления знаний синтаксиса языка, алгоритмов и структур данных.
P.S. Заморочку для себя пока ищу :) Пока же предварительный план - подготовится к студенческой олимпиаде по программированию, которая пройдет в следующем году.
ответить
From admin Sun May 12 15:49:23 2019 UTC
У меня для вас плохие новости
Во-первых, все эти "синтаксис, алгоритмы и структуры" закреплять не нужно. Вообще. Если, конечно, вы собираетесь программировать всерьёз. Первый же более-менее объёмный (но главное -- практический) проект всё расставит по местем.
А во-вторых, если будете заниматься олимпиадами, о серьёзном программировании можете забыть. Люди с олимпиадностью головного мозга годятся потом разве что на быстрое прототипирование.
ответить
From Daring_ (unverified) Mon May 13 04:38:00 2019 UTC
Если я вас
Если я вас правильно понял, основные алгоритмы и структуры данных нужно осваивать в ходе работы на собственным (объемным) проектом?
Разве изучение алгоритмов не важно само по себе?
Но ведь, в списке литературы в 1 тому вы указали книги Вирта, Кормена и Кнута, которые подностью посвящены алгоритмам.
ответить
From admin Mon May 13 22:34:00 2019 UTC
Если я вас
Если я вас правильно понял, основные алгоритмы и структуры данных нужно осваивать в ходе работы на собственным (объемным) проектом?
Да. Как и всё программирование в целом.
Разве изучение алгоритмов не важно само по себе?
Я даже больше скажу: "само по себе" оно бессмысленно. Пустая трата времени и дебильное зазубривание.
Но ведь, в списке литературы в 1 тому
Ага, пофлеймить решили? Ну что же. Берём первый том. Находим контекст, в котором появились эти ссылки (все скопом). И имеем вот что:
Весь этот текст находится на стр.406. Если кто не понял, сказано тут буквально следующее: вся эта хрень вам сейчас нафиг не нужна, но если очень хотите, то вот вам сразу три книжки, развлекайтесь, а я это всё рассказывать не буду.
И вот что. Попытка меня поймать на содержании моей же книги мне не понравилась, несмотря на её явную неуклюжесть. Посему потрудитесь освободить мой сайт от своего присутствия. Дальнейшие ваши комментарии здесь премодерацию не пройдут: у меня есть более интересные занятия, нежели бодаться с флеймерами.
ответить
From Anonymous (unverified) Tue Dec 28 18:59:00 2021 UTC
Можно ли
Можно ли назвать программу за заморочку, напр. состваить таблицу первоначальных чисел, или найти наибольший общий делитель двух, трех и более чисел. Я увлекаюсь математикой, вот и возникают такие идеи. Хотелось бы написать что-нибудь серьёзного, но никакие идеи не возникают. Или всему своё время?
ответить
From admin Tue Dec 28 21:08:24 2021 UTC
Вы сами не
Вы сами не видите полнейшей нелепости вопроса "Можно ли назвать программу за заморочку"?
ответить
From Anonymous (unverified) Wed Dec 29 05:33:00 2021 UTC
Да, наверное
Да, наверное вопрос получился нелепым, просто мне хотелось знать, в правильном ли я направление двигаюсь, что делаю такие программы.
ответить
From admin Wed Dec 29 15:58:15 2021 UTC
Я не знаю, что
Я не знаю, что такое "правильное направление", зато очевидно, что в данном случае это направление — ваше. Если такие программы вам писать по приколу, а другие пришлось бы вымучивать — тут одно можно сказать совершенно точно: ничего лучшего вы сейчас сами себе предложить не можете. Чего уж точно не надо делать — так это самого себя останавливать и не давать себе делать то, что хочется.
ответить
From Anonymous (unverified) Wed Dec 29 20:32:00 2021 UTC
Большое
Большое спасибо вам за ответ!
ответить
From syscaller (unverified) Tue May 14 12:46:00 2019 UTC
Да возьмите
Да возьмите какую-нибудь небольшую настольную игру и сделайте программу. Можно, например, те же крестики-нолики сделать.
ответить
From admin Tue May 14 19:31:02 2019 UTC
Крестики-нолики
Крестики-нолики разве что на бесконечном поле, классическое поле 3x3 -- скучная штука, давно полностью исследованная. Но в целом да, идея здравая: берётся любая настолка и превращается в программу.
ответить
☞ From langevaj (unverified) Thu Apr 18 22:01:00 2019 UTC
"программирование, введение в профессию: том 1"
Андрей Викторович, здравствуйте!
Взял в руки первый том "введения в профессию", пока очень нравится. Однако меня как сына учителя русского языка и литературы зацепило кривоватое слово "донейторы" во введении. Это неоправданное иноязычное заимствование, то бишь совершённое уже при наличии прижившихся синонимов, полностью аналогичных по смыслу. Сходу: жертвователь, меценат, благодетель, благотворитель, филантроп. Дело, конечно, Ваше, но был бы рад, если исправите - по моему скромному мнению, это всё равно, что тащить анонимные функции в Си. :)
Не стоит путать с оправданными заимствованиями - "панталоны, фрак, жилет, всех этих слов на русском нет", как писал классик. :)
И в любом случае спасибо за ваш во многом бескорыстный труд на благо человечества. С уважением.
ответить
From admin Thu Apr 18 22:54:34 2019 UTC
Гм
Пардон, а что ж вы, будучи сыном учителя и всё такое прочее, "сходу" вместе пишете? :-) Я, впрочем, тоже так же писал, пока меня мой корректор от этой плохой привычки не отучила.
Если серьёзно -- да, от слова "донэйтор", видимо, придётся как-то отказываться. Проблема в том, что из предложенных вами синонимов относительно подходит разве что "меценат", но чем это лучше? Разве тем, что заимствовано было раньше и из другого языка. Я ещё донэйторов иногда спонсорами называл, но и это тоже слово иностранное.
В общем, что-то делать надо, но что именно -- я пока не понял.
ответить
From langevaj (unverified) Fri Apr 19 13:02:00 2019 UTC
"Меценат" лучше
"Меценат" лучше тем, что это _оправданное_ заимствование. Равно как и "спонсор". В таковых словах ничего плохого нет, они наоборот язык только обогащают.
"Оправданность" у конкретного заимствования определять несложно: отсутствие точных синонимов или их неблагозвучность. Надо ли напоминать, что русского мата раньше не было? ;)
Процесс появления заимствований в русском продолжается и сейчас, вот только раньше слова брали из куда более подходящих по фонетике французского и немецкого (не говоря уже о греческом и латинском), а английские заимствования изменялись сильнее прочих (например "свитер", "шорты", "джинсы"). Мода же на их прямое использование началась только в конце прошлого века - это стало модным способом показать свою "продвинутость". Но это вы и сами лучше меня должны помнить.
Так или иначе, не обессудьте. Давайте беречь русский язык вместе. :) И в любом случае спасибо за понимание.
А "сходу" - это да, привычка дурная. Та же проблема у меня с "иметь в виду / ввиду". Что взять с технаря. :)
ответить
From admin Sat Apr 20 18:37:36 2019 UTC
С точными синонимами есть проблема
"Меценат" — это не точный синоним, вот в чём проблема. Это слово скорее обозначает свойство человека (ну что вот он благотворительностью занимается), нежели его отношение к отдельно взятому проекту или иному объекту благотворительности.
И "спонсор" — это тоже не точный синоним. Спонсор — это тот, кто берёт на себя расходы, и совершенно не факт, что делает это бескорыстно.
Критерий оправданности синонимов тоже не шибко впечатляет, ежели вспомнить знаменитое "Хорошилище идёт по гульбищу с позорища на ристалище". Да и современные заимствованные слова в этом плане не особенно радуют: например, "бизнес" почти всегда заменяется словом "дело" и его производными, причём (в отличие от "хорошилища по гульбищу") без смены коннотации: в самом деле, ну чем вот "деловой центр" хуже корявого "бизнес-центра", в котором отдельные идиоты ещё и дефис забывают поставить прямо на фасаде; всякое "-арт" и "арт-" почти всегда адекватно заменяется прилагательным "художественный", опять же, без смены оттенков смысла, и так далее. В этом плане "донэйтор" даже более заковыристая сущность, хотя вроде всё и понятно, но формальный перевод, не теряющий информации — разве что "вноситель пожертвования", а звучит это коряво.
В общем, сложен этот вопрос, увы.
ответить
☞ From Anonymous (unverified) Mon Apr 1 13:56:00 2019 UTC
gopher
Тут Девуан выкатил первоапрельскую шутку, от которой мне стало скорее грустно, чем весело. По причине того, что это всего лишь шутка. Не про "взлом", конечно, а про переход на гофер. Надеюсь, что гофер-сервер девуана будет продолжать работать и после дня дурака.
А как вы, Андрей, относитесь к гоферу? Может ли он стать нашим если не спасением, то хотя бы отдушиной от засилья жаваскрипта и прочих неприятностей современного веба?
ответить
From admin Tue Apr 2 17:49:49 2019 UTC
Честно говоря,
Честно говоря, очень давно собираюсь поставить gopher-сервер. Никак не находится время для этого, но, я надеюсь, рано или поздно найдётся.
ответить
☞ From Anonymous (unverified) Fri Mar 29 11:11:00 2019 UTC
Добрый день,
Добрый день, Андрей Викторович. Позвольте внести предложение, касающееся работы сайта: как вы относитесь к идее добавить в гостевую книгу своеобразную "бездну", куда бы попадали комментарии, не прошедшие премодерацию, а затем, по прошествии, допустим, недели, удалялись окончательно? Довольно обидно, когда далеко не праздный вопрос, не содержащий скрытых смыслов/двойных доньев/попыток троллинга и прочего, по какой-либо причине "теряется", хотя ответ на него (да и сам вопрос) мог бы быть полезен не только для вопрошающего, но и для других посетителей сайта.
ответить
From admin Sat Mar 30 23:06:12 2019 UTC
Отрицательно
Политика премодерации у меня очень простая: я раскрываю только те комментарии, которые по какой-то причине хочу видеть на сайте, либо такие, на которые мне (опять же по какой-то причине) интересно написать ответ. Все прочие — такие, на которые мне, к примеру, просто лень отвечать, и которые при этом, с моей точки зрения, сайт интереснее не сделают — остаются закрытыми.
Менять в этом плане я ничего не буду. Если не нравится — в Интернете есть много других сайтов.
Кстати, ваша идея мне не вполне понятна. На самом деле я вообще не удаляю комментарии, даже самые одиозные, так что никакое "окончательное удаление" мне здесь (сугубо технически) не требуется. Если же речь идёт о том, чтобы комментарий, не получивший моего одобрения, всё же можно было как-то увидеть кому-то кроме меня — то об этом не может быть вообще никакой речи.
ответить
From Anonymous (unverified) Fri Apr 26 22:20:00 2019 UTC
Позвольте
Позвольте узнать, что дает указание e-mail при отправке комментария? В случае, если комментарий не проходит премодерацию, вы как-то уведомляете об этом автора, оставившего адрес эл. почты?
ответить
From admin Fri May 10 23:25:40 2019 UTC
ничего не даёт
Спам я не рассылаю, никакого другого разумного использования для этих адресов мне в голову не приходило. О результатах премодерации я никого не уведомляю и не собираюсь.
Вынужден подчеркнуть ещё раз, что в Интернете есть очень много других сайтов. Если вам не нравится то, как здесь устроена премодерация — посещайте сайты, где всё устроено иначе.
ответить
☞ From Anonymous (unverified) Wed Mar 27 18:03:00 2019 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович. Вы неоднократно писали здесь, что вы против "платы за воздух" - электронные книги (к ним ваше отношение известно давно) и проприетарный софт (недавний комментарий, касающийся игр). С книгами, в принципе, все прозрачно: плату "электронные издательства" требуют, фактически, за возможность скачать файл с сервера, причем автор, вероятнее всего, не получит из этих денег ни шиша. Но помогите, пожалуйста, разобраться с кашей в моей голове: если ПО - "воздух", насколько правомочно вообще работать программистом за деньги, формально - производить этот самый "воздух"? Более того, "производителями воздуха" окажутся при таком подходе люди, работающие в сфере отношений "человек-человек" (преподаватели/учителя, юристы и т.д.) - те, чей труд не имеет непосредственного материального воплощения. Не хочу показаться троллем, кажется, ответ здесь прост как две копейки, но от моего понимания, увы, ускользает.
ответить
From admin Sat Mar 30 23:26:16 2019 UTC
М-да, тяжело.
Про книги вы, видимо, не поняли: даже если бы издатели отдавали все полученные деньги авторам. торговля электронными книгами не стала бы ничуть менее омерзительным явлением. То есть вот даже если бы лично я тут на своём сайте попытался торговать электронными копиями своих собственных книг — то меня надо было бы пристрелить.
Теперь по поводу софта. Когда речь идёт о "покупке" или "продаже" якобы "софта", на самом деле при этом вам ни в каком смысле не продают софт — вам продают эфемерную сущность, именуемую "лицензией". Эта сущность не имеет никакого (прописью: никакого) отношения к работе программиста, результатам его труда и т.д. Более того, к работе (и к зарплате) подавляющего большинства программистов вообще не имеет никакого отношения так называемое "авторское" право, поскольку примерно 99,99% всего софта в мире, если считать, скажем, по объёму исходников, пишется на заказ для одного конкретного заказчика, который, собственно говоря, всё и оплачивает.
Оставшиеся 0,01% — это так называемый "коробочный" софт, т.е. такой, который пишется не под конкретного заказчика/пользователя, а в инициативном порядке по принципу "ща наваяем, а потом кому-нибудь продадим". С таким же успехом можно выйти на улицу, выкопать яму 1x1x1 метр и требовать за это вознаграждения. И да, программистов, которые соглашаются в таких проектах участвовать, я, мягко говоря, не понимаю — они своими руками разрушают собственный мир.
Весь ваш бред про юристов, преподавателй и т.п., разумеется, никакого отношения к делу не имеет вообще ни с какой точки зрения: эти люди тратят своё время по заказу конкретного заказчика. Собственно говоря, в мире есть всего две категории сущностей, которые могут стоить денег: это (1) материальные предметы и (2) время, потраченное человеком по прямой просьбе/заказу/etc другого человека.
ответить
From Anonymous (unverified) Sun Mar 31 07:44:00 2019 UTC
Спасибо,
Спасибо, местами довольно жестко, зато доходчиво.
Про книги вы, видимо, не поняли
Про книги я, возможно, неудачно выразился, упомянув "оставшегося без денег" автора, здесь для меня как раз-таки все предельно ясно.
Выходит, единственным "правильным" способом получить деньги за свою работу для программиста, не работающего "за зарплату" (сюда же фриланс), остается краудфандинг?
материальные предметы
Получается, за абстрактный диск или флешку с записанной программой тот же программист вправе требовать уже любую сумму, даже многократно превышающую стоимость носителя?
ответить
From admin Sun Mar 31 10:58:00 2019 UTC
Выходит,
Выходит, единственным "правильным" способом получить деньги за свою работу для программиста, не работающего "за зарплату" (сюда же фриланс), остается краудфандинг?
Чушь какая-то. Если вы работаете по чьему-то заказу — совершенно неважно, за зарплату ли, на фрилансе ли, ещё как-то — то деньги вам платит заказчик. Если же вы зачем-то решили устроить инициативную разработку, то это вы делаете в своё удовольствие, какие ещё деньги? Не хотите — не делайте.
Есть некие побочные варианты, например, можно что-то такое сваять, выложить в интернет и надеяться, что кому-нибудь потребуется не просто ваша софтина, а какая-то доработка к ней; скорее всего, её закажут исходному автору. Но я бы на такое надеяться не стал.
Получается, за абстрактный диск или флешку с записанной программой тот же программист вправе требовать уже любую сумму, даже многократно превышающую стоимость носителя?
Здесь вопрос договорённостей, и он, как водится, не имеет никакого отношения к исходному вопросу.
И вообще, что значит "имеет право"? Юридически? Конечно имеет, это же его флешка. Но юридически программист "имеет право" много на что, копирайтное законодательство пока что не отменено. Или вы какое-то непонятное "моральное право" имеете в виду? Так всё равно имеет, разумеется. Он же силой деньги ни у кого не отнимает. Больше того, программист, в приницпе, может поставить условием передачи программы пользователю подписание некоего договора (NDA), по которому пользователь обязуется больше никому эту программу не отдавать. Заметим, для GPL это уже будет грубым нарушением условий лицензии, но я не считаю GPL догмой.
Копирайтное законодательство распространяет такое ограничение автоматически НА ВСЕХ, то есть если, например, кто-то эту флешку нашёл на улице или откуда-то программу скачал по интернету (фиг знает, кто её туда выложил), то согласно копирайтной парадигме он никакого права использовать или распространять дальше эту программу не имеет. Это, собственно, и есть то, что превращает авторско-правовое законодательство в разновидность цензуры: людям, которые никаких добровольных обязательств на себя не брали, тем не менее запрещают передавать имеющуюся у них информацию.
Кстати, если бы копирайтного законодательства не существовало, торговля электронными копиями, с одной стороны, не была бы ничем ужасным (! именно так), а с другой — этим бы никто не занимался ввиду полной бессмысленности: даже если условием скачивания с сайта какой-нибудь книжки, музыки, фильма, программы, что там ещё скачивают, поставить, кроме уплаты денег, ещё и нераспространение дальше, то достаточно кому-то двоим этот объект скачать, а потом одному из них, не раскрывая своей личности, выложить тот же объект в интернет уже бесплатно, и всё — торговец воздухом ничего не сможет сделать, поскольку у него не будет возможности установить, кто из двоих нарушил NDA. Но для этого сначала надо ликвидировать копирайтные законы, а такое в одночасье не произойдёт.
ответить
From Anonymous (unverified) Mon Apr 1 14:35:00 2019 UTC
Технический момент
торговец воздухом ничего не сможет сделать, поскольку у него не будет возможности установить, кто из двоих нарушил NDA.
Ну, в случае фильмов, например, они это могут установить с помощью т.н. цифровых водяных знаков. То есть кадры модифицируются определённым образом так, что человеческий глаз этого не замечает, но гарантированно удалить этот след сложно.
В случае с кодом программы ему это, конечно, будет сложнее: всё-таки программный код -- не бинарник, там проще будет подобную вставку найти и удалить, но в случае если исходный код достаточно большой, то теоретически можно и суметь как-то что-нибудь туда запрятать, хотя на практике я про такое не слышал.
ответить
From admin Tue Apr 2 17:45:05 2019 UTC
Ну хорошо, с
Ну хорошо, с двумя я погорячился. Даже когда у вас пять покупателей или десять — на водяные знаки уповать ещё можно. Когда их становится больше — фффффсё. Смысл водяных знаков в том, чтобы каждому покупателю выдавать "персонализированную" копию; узнать, где именно происходит "персонализация", элементарно: взять две разные копии и сравнить. И выстричь из них всё, что их друг от друга отличает. Результат выкладываем на веб, и аста ла виста, копирасты.
Так или иначе, NDA работает, пока вы не претендуете на массовость, то есть когда, например, сами либо знакомы, либо иным способом непосредственно взаимодействуете с каждым получателем информации. Это, в общем, практически разновидность работы по заказу. Как только ситуация выходит из-под тотального контроля (а уже при паре десятков получателей это неизбежно), NDA работать перестаёт.
ответить
From Anonymous (unverified) Thu Apr 4 08:27:00 2019 UTC
Собственно
Собственно говоря, в мире есть всего две категории сущностей, которые могут стоить денег: это (1) материальные предметы и (2) время, потраченное человеком по прямой просьбе/заказу/etc другого человека.
Будет ли платой за воздух посещение музыкальных концертов? Вроде бы люди тратят свое время, но не по прямому заказу/просьбе, да и цена билета не зависит от количества посетителей. Кинотеатры, как я понимаю, по этой логике однозначно торгуют воздухом?
ответить
From admin Fri Apr 5 11:15:00 2019 UTC
Будет ли платой
Будет ли платой за воздух посещение музыкальных концертов?
Нет, почему. Вы платите за аренду места в зале. Место в зале — это вполне материальный объект, особенно если вспомнить, что оно вообще-то является частью здания (что здание само по себе материальный объект — сомнений, надеюсь, нет?)
Заказчиком работы исполнителей на концерте выступают не зрители, а устроитель концерта; потраченного исполнителями времени это не отменяет, как и того, что время потрачено по заказу.
Впрочем, можно назвать и такой вариант концерта, плата за билет на который однозначно была бы платой за воздух (в том числе и в буквальном смысле) — это любого рода концерты под открытым небом. Вот там платить однозначно не за что, и всякую ерунду вроде обустройства временной сцены, обеспечения охраны порядка и прочие расходы можно не вспоминать — зрители это всё не заказывали; при организации концерта вне зданий устритель, задабы взимать плату, ограничивает доступ людей на некую территорию, и это возмутительно (если что, я не считаю допустимой концепцию собственности на участки земли, хотя это уже из другой сказки).
Кинотеатры, как я понимаю, по этой логике однозначно торгуют воздухом?
Формально говоря, нет, и по той же причине: они торгуют своим помещением, освещением, отоплением, etc. Иной вопрос, что в современных условиях кинотеатры лучше своими деньгами не поддерживать, да хотя бы даже потому, что они считают своим долгом вам за ваши же деньги сначала минут десять крутить рекламу.
Но, так или иначе, в концертных залах и кинотеатрах материальная составляющая присутствует — точно так же, как при покупке книг и дисков. Это всё тоже не очень хорошо, но, в отличие от платы за чистый контент (т.е. за воздух) это не криминал, то есть плохо, но допустимо.
Кстати говоря, это всё, как говорят, бОян, и не знать ответа на свой собственный вопрос вы, подозреваю, не могли. Как следствие, вы совершенно напрасно на этот сайт забрели, пойдите куда-нибудь ещё.
ответить
☞ From Anonymous (unverified) Wed Mar 27 14:37:00 2019 UTC
Добрый день.
Добрый день. Начаал изучение первого тома вашей книги. Это лучшее, что я видел по программированию, огромная благодарность вам за ваш труд. Но возникли вопросы.
Вы мельком упоминаете в главе про работу на Юникс-машинах, что опытные пользователи не допускают наличия команды sudo в системе. Каким тогда образом выполнять команды, требующие привилегий суперпользователя так, чтобы это было правильно?
И еще. Вы почему-то делаете упор на Паскаль, а Бейсик совершенно обходите вниманием. Почему? Простой же язык совсем.
ответить
From admin Sat Mar 30 23:12:21 2019 UTC
Про команды под
Про команды под root'ом: нажимаете Ctrl-Alt-F1, попадаете на текстовую консоль, там входите под root'ом (то есть вводите имя пользователя root и его пароль), получаете приглашение командной строки привилегированного сеанса работы. Собственно, в этом сеансе всё и делаете, что требует полномочий root'а (и это должно быть как можно меньше).
Относительно бейсика — если вы не видите разницы между ним и Паскалем, то у меня для вас крайне плохие новости.
Так или иначе, я Паскаль рассматриваю уж точно не потому, что он "простой"; конкретные причины выбора языков программирования подробно расписаны во втором ("методическом") предисловии к первому тому. Что же касается бейсика, то его рассмотрение мозгам начинающего программиста может только повредить. Есть языки ещё проще, чем бейсик, и с ними часто бывает примерно такая же ситуация, хотя и не всегда.
ответить
From Anonymous (unverified) Sun May 31 20:26:00 2020 UTC
Выключение компьютера и sudo
А как правильнее всего пользователю, который не root, выключать/перезагружать компьютер из командной строки? Он ведь может и вообще не знать пароля root. Допустимо ли для этой (и только для этой) цели использование sudo? Или есть какие-то более аккуратные способы?
ответить
From admin Mon Jun 1 22:51:00 2020 UTC
Конечно, есть способы
Во-первых, и в-главных: использование sudo недопустимо ни для чего и никогда. В сеансе работы нельзя повышать полномочия, и система не должна для этого предоставлять возможности.
Во-вторых:
Собственно говоря, всё. В этой системе все пользователи из группы adm могут запускать shutdown с любыми параметрами. Как соответствующий chmod сделать, сообразите или подсказать?
А ещё — попробуйте, переключившись на текстовую консоль, нажать Ctrl-Alt-Del. Если у вас systemV init, то конкретную реакцию на Ctrl-Alt-Del можно задать редактированием /etc/inittab. Я, в частности, всегда там меняю перезагрузку на останов (-r на -h, попросту говоря). Если другой init — не подскажу, обратитесь к документации.
ответить
From Anonymous (unverified) Tue Jun 2 08:57:00 2020 UTC
Спасибо за
Спасибо за ответ, но, к сожалению, не заработало. Результат команды ls такой же, как у Вас, но все равно Not enough permissions to execute. У меня Void Linux, на их сайте в документации описаны два способа предоставления обычным пользователям прав на выключение: через ConsoleKit/Polkit при наличии DE и, собственно говоря, через sudo во всех прочих случаях. А может система игнорировать SetUid и SetGid подобно Sticky Bit?
ответить
From admin Wed Jun 3 13:11:05 2020 UTC
Если DE это
Если DE это может делать, то заведомо есть способ делать то же самое не через DE. И sudo тут ни при чём.
Игнорировать suid/sgid система теоретически может, например, если файловую систему, содержащую suid'ный бинарник, примонтировать с соответствующим флажком, но я слабо себе представляю, как будет работать система, если у неё такой флажок окажется на /sbin. В любом случае -- DE ведь это делает как-то. Подчёркиваю: если DE делает, то и вы сами можете, волшебства в юниксе не бывает.
Есть ещё одна засада -- у вас shutdown может быть скриптом, на скрипты suid/sgid не действует. Проверьте этот момент. Ну и, естественно, проверьте, входите ли вы в соответствующую группу (дайте команду id).
ответить
From Anonymous (unverified) Wed Jun 3 18:32:00 2020 UTC
В
В соответствующую группу вхожу, но вот shutdown действительно оказался скриптом.
если DE делает, то и вы сами можете, волшебства в юниксе не бывает
Я понимаю, что не бывает, но любое DE == дохреналлион граблей верхом на костылях, через которые порой трудновато пробиться.
Но я разобрался, как заставить Void'овский runit выключать машину по Ctrl-Alt-Del вместо перезагрузки, что можно, в принципе, считать решением проблемы. Большущее Вам спасибо за уделенное время.
ответить
From admin Wed Jun 3 19:25:35 2020 UTC
Ну так
Ну так посмотрите, что этот скрипт делает — делов-то. Скорее всего, он вызывает команды вроде /sbin/halt и /sbin/reboot. Если нет — то сами эти команды никто не отменял.
Если и они скриптами окажутся — ну посмотрите, что делают уже они.
ответить
From Anonymous (unverified) Thu Jun 4 12:26:00 2020 UTC
Ну так
Ну так посмотрите, что этот скрипт делает — делов-то.
Ну уж... До этого-то я додумался ;) /bin/halt он вызывает (как и reboot, что любопытно). Еще раз большое спасибо, теперь вопрос решен окончательно!
ответить
From admin Thu Jun 4 17:49:28 2020 UTC
Эти вроде
Эти вроде должны быть честными бинарниками, вешаете на них suid (только не забудьте закрыть исполнение для others, оставьте только для user и group) и дело в шляпе.
ответить
From Vladimir_M Sat Jun 20 08:06:00 2020 UTC
Но ведь sudo
Но ведь sudo можно можно настроить на разрешение конкретных команд от конкретного пользователя с конкретным хостом. Разве в этом случае полномочия не те же самые, если не меньшие?
ответить
From admin Sat Jun 20 09:17:00 2020 UTC
всё совсем не так просто
настроить на разрешение конкретных команд от конкретного пользователя с конкретным хостом
Тут есть целый ряд факторов. Во-первых, команды там обычно задают по имени, а не по полному пути к исполняемому файлу. Во-вторых, разрешённая команда может (внезапно) предоставлять возможность запустить через неё shell (или произвольную другую команду, что то же самое), и, собственно говоря, всё. В-третьих, и в-главных, чаще всего в sudoers прописывается ALL=ALL по принципу "это же квалифицированный человек, зачем его ограничивать", или, что ещё хуже, "это же сисадмин" или "это же я сам, хозяин системы". То есть sudo используется не как лазейка для отдельных команд, а как средство предоставления админских полномочий. И вот тут уже у подавляющего большинства админов тупо не хватает соображалки, чтобы понять, что собственную систему они окончательно продырявили. Самое интересное, что в Debian'е и Ubuntu это сделано "из коробки", так что всем, кто не особенно задумывается о безопасности, предоставлен этакий образец для подражания. Крайне неудачный образец, если не сказать хуже.
К тому же сама sudo -- это довольно развесистый бинарник, который вполне может стать мишенью для атаки. В правильно настроенной системе множество suid'ных бинарников должно минимизироваться, и среди них не должно быть ничего сложного. В Openwall Linux вон вообще ни одного siud'ника нет.
Ну и последнее. Ввод пароля, который там предусмотрен, с точки зрения безопасности бесполезен абсолютно, но при этом создаёт ложное ощущение безопасности. Это совершенно никуда не годится.
Разве в этом случае полномочия не те же самые, если не меньшие?
Должен признать, что здесь ход ваших мыслей мне в принципе не понятен. Как это "те же" и тем более как это "меньшие", если пользователю разрешается выполнить то, на что у него прав изначально нет?
ответить
From Vladimir_M Sat Jun 20 19:37:00 2020 UTC
>Во-первых,
>Во-первых, команды там обычно задают по имени, а не по полному пути к исполняемому файлу.
Необязательно. Я, когда добрался до этих настроек, сразу указывал, к примеру, /usr/bin/poweroff или /usr/bin/reboot.
>В-третьих, и в-главных, чаще всего в sudoers прописывается ALL=ALL
Ну да. Сам я от этого уже отказался и здесь такой вариант не рассматривал.
>В Openwall Linux вон вообще ни одного siud'ника нет.
И как там решать вопрос с выключением? Хотя, это вроде серверная система, там ради этого можно и под root зайти. Но все же, должны же как-то и там полномочия распределяться.
Кстати, любопытно, в Devuan изначально SUDO нет или вы очень сильно настраиваемую установку делали? Или уже после установки его удалили? Или просто не стали ничего туда прописывать, хотя это вряд ли. Если не секрет.
И вообще, известны ли вам несерверные дистрибутивы, не предполагающие использования SUDO? Вроде в Archlinux его по-умолчанию нет. Но там systemd.
>Ввод пароля, который там предусмотрен, с точки зрения безопасности бесполезен абсолютно
Прям абсолютно? То есть не пароль пользователя превращается в пароль root а пароля фактически нет? Даже если настроить на ввод пароля каждый раз а не на свободный доступ в течение n минут?
>Должен признать, что здесь ход ваших мыслей мне в принципе не понятен.
Да вроде мысль простая. В обоих случаях полномочия оговариваются заранее под root и из обычного сеанса изменены быть не могут.
К тому же в visudo можно еще и название хоста прописать. И пароль там вводить надо. И вроде можно настроить выполнение определенных программ только с определенными аргументами. Хотя тут я пока не вникал, да и, видимо, это лишнее. Если уж запрещать, то запрещать полностью.
ответить
From admin Tue Jun 23 17:24:49 2020 UTC
Вот именно что абсолютно
Злоумышленник, получивший доступ к аккаунту юзера, подсунет туда (например, в .profile, или как-нибудь ещё) программу, которая спросит пароль под видом sudo, отдаст этот пароль настоящей sudo, но при этом его запомнит и позже применит. "В лоб" такую программу не все могут написать, но те, кто знают, как обращаться с виртуальными терминалами - могут, это не сложно.
Следовательно, если в ходе обычной работы под данным аккаунтом там этот пароль хотя бы изредка вводится, то следует предполагать, что злоумышленник, имеющий доступ к аккаунту, имеет доступ и к этому паролю тоже. И тут уж совершенно неважно, "каждый раз" или "раз в пять минут", или совсем его не вводить.
Под Devuan'ом сейчас вроде нет sudo по умолчанию. Под Ubuntu -- есть, и именно что с ALL=ALL из коробки, так что там приходится сразу после инсталляии делать sudo bash, устанавливать пароль для root, проверять, работает ли он, после чего сносить нафиг sudo (просто тупо apt remove sudo и до свиданья).
Openwall лично я обычно выключаю "тремя кнопками" с клавиатуры, благо там и иксов нет, дистр чисто терминальный. Иксы, конечно, собрать можно из исходников, но я этого под Owl не делал ни разу.
ответить
From Vladimir_M Wed Jun 24 00:16:00 2020 UTC
Спасибо за
Спасибо за разъяснение. Все же хочется уточнить. Получается у злоумышленника есть еще и возможность изменить настройки sudo чтобы через него выполнялись не только те команды которые там были прописаны изначально?
Позавчера устанавливал систему. Решил ради эксперимента удалить sudo. Ощущения специфические. Раньше у меня не получалось монтировать диски с ntfs без sudo. Не помогали ни прописки в fstab, ни suid (с ext4 все fstab'ом настроилось без проблем). Помогла в итоге установка пакета nfs-3g-fuse из пользовательского репозитория. Но не знаю что будет если захочу сменить дистрибутив. В других репозиториях мне этот пакет не попадался.
И при сборке этого пакета в обычном сеансе всплывал запрос пароля от root. Хотя тут без особого труда разобрался как собирать в непривилегированном сеансе, а устанавливать под root'ом.
В общем понятно, что надо вникать и разбираться. И все же возникают сомнения- стоит ли в данном случае менять привычки?
ответить
From admin Wed Jun 24 10:58:00 2020 UTC
Стоит-стоит
Получается у злоумышленника есть еще и возможность изменить настройки sudo чтобы через него выполнялись не только те команды которые там были прописаны изначально?
Штатно такой возможности, конечно, нет, но поймать саму sudo на каком-нибудь очередном buffer overflow кто-нибудь может и справиться, она всё-таки довольно развесистая.
стоит ли в данном случае менять привычки?
Если интересует моё мнение -- то да, однозначно стоит. С NTFS реально всё не очень здорово, но это не повод систему превращать в решето.
ответить
☞ From Anonymous (unverified) Tue Mar 26 11:15:00 2019 UTC
В последнем
В последнем разделе статьи о достижениях развития FreeBSD описывается следующее:
«Продолжена разработка системного менеджера nosh предоставляющего инструменты инициализации, загрузки, ведения логов, управления фоновыми процессами и терминалами.»
http://www.opennet.ru/opennews/art.shtml?num=50385
Воспринимать ли это как аналог SystemD в системах BSD?
Прошу прощения за отнятое время, если вопрос не очень разумен.
Я весьма посредственен в использовании UN*X-Like систем и долгое время не видел разницы между классическим SysVinit и SystemD, до тех пор, пока с s-d не возникли проблемы. Сейчас использую систему с классическим SysVinit
Если системный менеджер nosh будет являться аналогом s-d, то уйти от подобных «оптимизаций», поменяв ядро Linux на ядро BSD, будет весьма проблематично.
Благодарю за ответ.
ответить
From admin Sat Mar 30 23:07:28 2019 UTC
А чёрт его
А чёрт его знает, как это воспринимать. Сон разума рождает чудовищ.
ответить
From Anonymous (unverified) Sun Mar 31 13:10:00 2019 UTC
BSD много и они разные
В вашем вопросе содержится несколько неявных неверных предположений. Если хозяин этой гостевой книги мне позволит, то я бы попробовал ответить на эти предположения и на сам вопрос.
Воспринимать ли это как аналог SystemD в системах BSD?
Если системный менеджер nosh будет являться аналогом s-d, то уйти от подобных «оптимизаций», поменяв ядро Linux на ядро BSD, будет весьма проблематично.
Во-первых, нет никакого единого "ядра BSD". Каждая из основных современных BSD-систем (OpenBSD, FreeBSD, NetBSD, DragonFlyBSD) имеет своё ядро, разрабатываемое отдельно.
Во-вторых, нельзя просто "поменять ядро Linux" на ядро, например, OpenBSD. Все BSD-системы, в отличие от Linux, это цельные системы, требующие для корректной работы не только своего ядра, но и своей базовой системы, также разрабатываемой отдельно. Теоретически подменить базовую систему какой-либо BSD на базовую систему из Linux возможно, но практически это сделать достаточно непросто. Не знаю, кстати, насколько жив сейчас проект Debian/FreeBSD.
В-третьих, помимо FreeBSD, о которой вы пишете, есть и другие, перечисленные мной выше, BSD-системы. Они пока, насколько я знаю, ничего подобного systemd внедрять не собираются. Да и использовать ядро Linux без systemd, взяв соответствующий дистрибутив, пока ещё вполне возможно. Так что, есть вполне куда отступать.
Лично я ушёл с Linux на OpenBSD пару лет назад, чем очень доволен. Жалею только, что не сделал этого раньше (лет 10 назад возникала у меня такая мысль, но тогда я её не осуществил).
ответить
☞ From ждущий (unverified) Sun Mar 24 19:21:00 2019 UTC
четвертый том
добрый вечер! как продвигаются дела с вашей рукописью? :)
ответить
From admin Sat Mar 30 23:28:35 2019 UTC
Увы, отвратительно
Навалилась куча дел, никак с книгой не связанных. Надеюсь, что где-нибудь через неделю их разгребу и продолжу работу над рукописью.
ответить
☞ From Anonymous (unverified) Mon Mar 4 11:33:00 2019 UTC
Здравствуйте!
Здравствуйте! Видел от вас комментарий, в котором вы говорили, что олимпиады для программистов вредны. У меня возник вопрос, а насколько вредны работодатели, которые требуют быстрого выполнения задач(я имею ввиду то, что если выполнять задачу быстро, то ошибки неизбежны и в итоге все придется переделывать и это все может занять ещё больше времени, чем если бы задача выполнялась более медленно, но зато и более качественно). Также такие работодатели дают тестовые задачи на время. Я лично считаю, что это не верный подход к разработке, да и нехорошее отношение к разработчику. Таких работодателей надо обходить стороной. Конечно, у любой задачи есть свои временные рамки, но ведь они(работодатели) требуют быстрое написание софта и хотят получить быстрее деньги (потому что это бизнес).
ответить
From admin Wed Mar 6 16:31:51 2019 UTC
Собеседование
Собеседование — это вообще довольно специфическая штука, нужно за (от силы) полчаса определить, подходит ли вам программист, которого вы впервые видите. Ну то есть да, давать задачки на скорость — идея чрезвычайно сомнительная, но там все идеи сомнительные.
В любом случае если вам не понравилось то, что происходит на собеседовании — у вас есть два варианта: либо вообще туда не пойти, либо пойти и в течение первого месяца, от силы двух, понять, адекватно ли отражает стиль собеседования те процессы, которые реально происходят в компании. Вы при этом в любом случае не слишком много потеряете, а шанс, что работать там вам понравится больше, чем собеседоваться, есть всегда.
Ну хотя и сбежав сразу, в принципе, не особенно много потеряете :)
ответить
☞ From Anonymous (unverified) Mon Mar 4 07:40:00 2019 UTC
MacOS
Как вы относитесь к продукции фирмы Apple? Возможно ли изучать программирование в MacOS, в среде с стандартом POSIX и являющейся потомком UNIX?
ответить
From admin Wed Mar 6 16:27:00 2019 UTC
Я сильно
Как вы относитесь к продукции фирмы Apple?
Очень плохо отношусь.
Возможно ли изучать программирование в MacOS
Я сильно сомневаюсь, что при работе под MacOS вы сможете сделать командную строку своим основным интерфейсом для работы. Там оконные приложения ("родные" маковские) из командной строки вроде и запускаются, но через жуткую гадину.
Одно можно сказать в пользу MacOS: это всё же лучше, чем Windows. Но это не потому, что MacOS хорошая, а потому что придумать что-то хуже, чем Windows, вообще вряд ли возможно. Ну, это если про операционку как таковую говорить. А вот железки от Apple — это, я бы сказал, за гранью приличия; если у вас есть настолько лишние деньги, можно найти очень много способов их потратить с пользой, а не отдавать этим уродам.
ответить
From Anonymous (unverified) Tue Jun 4 11:54:00 2019 UTC
А вот железки
А вот железки от Apple — это, я бы сказал, за гранью приличия
"Отказ от техники Apple сродни вегетарианству. В какой-то момент ты понимаешь, что есть вещи, которые лучше не трогать, потому что ты не хочешь быть никоим образом причастным к способу производства этих вещей, и доходу их производителей". (c) https://bash.im/quote/456138
ответить
From admin Fri Jun 7 14:34:03 2019 UTC
Я не
Я не вегетарианец, но мысль в целом интересная :-)
ответить
☞ From Anonymous (unverified) Mon Mar 4 07:22:00 2019 UTC
Уязвимости hardware
Здравствуйте, хотел узнать ваше мнение по поводу нашумевших уязвимостей в процессорах под названием meltdown & spectre и по поводу не менее опасной технологии intel me. Что вы можете об этом сказать?
ответить
From admin Wed Mar 6 17:05:09 2019 UTC
Есть сомнения?
Что-что, известно что: только массовые расстрелы спасут цивилизацию. Мне вот другое интересно, вы что вообще услышать ожидали? И с какой целью задаёте вопросы, ответ на которые заведомо очевиден?
ответить
From Anonymous (unverified) Thu Mar 7 08:01:00 2019 UTC
продолжение
Возможно ответ очевиден. Но только для тех у кого есть большой опыт в низкоуровневом программировании. Но вот мне из этого понятно только, то что в интернете сказано, что это уязвимости и возможно очень опасные. Почему я про это спрашиваю, потому что хочу сам управлять своей системой и компьютером и не хочу чтобы кто-то другой имел возможность извне влиять на нее, тем более иметь полный доступ к ней. Я видел есть решения которые устраняют это. Например прошивка libreboot, coreboot. Хотел узнать действительно ли они это делают или это просто маркетинговый ход и прочая лож. Просто получается так, что устанавливай ты хоть linux либо freebsd это будет бесполезно т.к твой пк будет все равно уязвим несмотря на то что эти ОС сами по себе не содержат слежки и являются открытыми и этичными в отличии от того же самого микрософта или андройд.
ответить
From admin Thu Mar 7 08:29:41 2019 UTC
Увы
Я этот вопрос -- как сделать, чтобы заткнуть Intel ME -- пока плотно не изучал, поскольку все компьютеры, которые у меня есть, относятся к той эпохе, когда Intel ME ещё не было.
ответить
From Anonymous (unverified) Thu Mar 7 12:03:00 2019 UTC
Тогда
Можно ли считать ARM и MIPS процессоры безопасной и достойной альтернативой процам Интеллов и Амудэ? Игры не интересуют, главное чтобы запускались *NIX системы и выполнялся стандартный круг задач (Интернет, верстка текстов, работа с медиафайлами, программирование, научные вычисления и пр.)
ответить
From admin Thu Mar 7 20:57:35 2019 UTC
Чёрт их знает
Возможно. Хотя если в ARMах тоже что-нибудь найдут, лично я не удивлюсь.
ответить
From Anonymous (unverified) Tue Mar 19 13:13:00 2019 UTC
Puri.sm
Есть такая фирма Puri.sm, они выпускают ноутбуки с отключенным IME, свободным BIOS и с форком Debian в качестве ОС и прочими ништяками в плане безопасности и приватности, при этом ноутбуки имеют современный дизайн и широкие конфигурации железа. Самое интересное, что это тоже краудфандинговый проект и осуществляют доставку в любую точку планеты (таможенные пошлины оплачиваете сами). В скором времени обещают выпустить полностью свободный смартфон. Недостаток один - эти ноутбуки стоят как макбук, а то и дороже, но как говорится "Freedom isn't free".
ответить
From Anonymous (unverified) Fri Mar 8 20:22:00 2019 UTC
про Android
Раз уж упомянули "андрюшу", вставлю свои 5 копеек. Андроид, все же, сам по себе открытый - пожалуйста, качайте исходники, читайте и наслаждайтесь. Есть и порты типа почившего CyanogenOS и сменившего его LineageOS. Драйвера периферии таки да, проприетарные в большинстве своем, но это вопросы к производителям тех или иных устройств. Реальных проблем у этой оси две:
Если и дружиться с Android, то только убедившись заранее в возможности установки на свой гаджет девственно чистого LineageOS, чтобы собрать его ручками и развернуть свое собственное окружение. Обе выше перечисленные проблемы так лечатся. Правда, всё, что новее Android 4.1 (2012 г.), лично у меня вызывает, мягко говоря, недоумение, особенно м#дацкий MTP (Media Transfer Protocol), заменивший простое и логичное подключения устройства к компу в режиме накопителя. Захотел скинуть на планшет/смартфон музыку, чтобы послушать в дороге? "Хм, парень, - говорит тебе MTP, - я тут пользовался слухом, что это у тебя не плеер. Ты уверен, что файлы mp3 тебе вот прям так необходимы? Они же могут тут не воспроизвестись... Ой, а это что? Фильм?! ТЫ ЧО??? Это же у тебя не проигрыватель фильмов какой-нибудь. Может, хрен на него? Нет? Ок, как скажешь. Погоди, ты хочешь вот этот файл переместить из одного каталога в другой? Просто переместить? Я хз, как это сделать, я его просто побайтово скопирую, а потом удалю из исходного каталога, годится? Да можешь и не отвечать." Вот так, в общем. А старенький китайский планшет на Android 4.1, купленный в далеком 2013 за 1900 рубликов для чтения книжек, имел на борту из левака только файловый менеджер и простенький 2D бильярд и позволял выворачивать себя "мехом внутрь": на нем был Busybox, после установки терминальной программы абсолютно штатно удалось chroot-нуться в Fedora ARM (с другими дистрибутивами не пробовал), опять же без плясок и шаманств устанавливать/использовать/удалять пакеты из репозитория, стучаться в /dev к подключенным по USB устройствам (даже микроконтроллеры прошивал программатором) и юзать иксовые программы через XSDL. Попробуйте сейчас провернуть это с анального огороженной 9-кой...
ответить
From Anonymous (unverified) Mon Mar 11 18:44:00 2019 UTC
Поправка
CyanogenOS -> CyanogenMod (исправленному верить, как говорится)
ответить
From Anonymous (unverified) Wed Apr 3 15:54:00 2019 UTC
MTP -- "user-friendly"
MTP -- "user-friendly" поделие мелкомягких, а это объясняет все его, ммм, "причуды". К вышеназванным я бы, кстати, добавил общую дичайшую медлительность и - вишенка на торте - молчаливый отказ записывать на носитель файлы с "немедийным" расширением (прогресс-бар честно пробежит-пролетит-проползет за секунды-минуты-часы, а файла нет). Нужно отправить какой-нибудь foo.zip на девайс? Будь добр, сперва переименуй его в, скажем, foo.zip.mp3, и только тогда будет тебе "щщастье"...
ответить
From Anonymous (unverified) Fri Apr 5 18:29:00 2019 UTC
Честно говоря,
Честно говоря, для меня понятие "user-friendly" стараниями мелкомягких и прочих корпораций настолько дискредитировано, что иначе чем "придумано маркетологами для идиотов" я его воспринимать уже не могу.
ответить
☞ From Anonymous (unverified) Fri Mar 1 11:08:00 2019 UTC
И снова о JavaScript...
Андрей Викторович, тема JS и вообще исполняемого кода в браузерах здесь обсуждалась неоднократно и, в целом, себя изжила, да и ответ на вопрос о правомочности использования разномастных "скриптиков" на web-страничках для любого мало-мальски активного пользователя Интернета с машиной "не первой свежести", имхо, очевиден. Но можно ли узнать ваше мнение касательно JavaScript как явления вообще (безотносительно его изначальной web-ориентированности)? В последнее время достаточно активно развиваются JS-движки и системы на их основе, превратившие JavaScript в "оффлайновый" скриптовый язык. И если с Node.JS все понятно - он давно разросся в JS-аналог монструозного питоновского npm с обилием пакетов разной степени паршивости на любой чих, то весьма интересно, имхо, выглядит изначально ориентированный на встраиваемое использование движок Duktape, состоящий из одного сишного файла и двух заголовочников и не требующий вообще никаких внешних зависимостей. JavaScript без многочисленных web-специфичных надстроек крайне лаконичен - это, в принципе, чуть-чуть "присахаренный" Lua, принципиальных отличий между ними практически никаких. Имеет ли он право на жизнь в таком виде, как по-вашему?
P.S. На всякий случай: я не адепт JavaScript и не web-разработчик вообще, просто хочу услышать мнение авторитетного человека и расширить кругозор.
ответить
From admin Fri Mar 1 13:16:08 2019 UTC
Я тут недавно
Я тут недавно набрёл на термин «дихотомия Оустерхаута» (Оустерхаут — это, если что, автор Tcl). Вот тут описано, что это такое: Ousterhout's_dichotomy
Плюс к этому есть ещё моё глубочайшее убеждение, что единственная допустимая зависимость времени исполнения — это ядро операционной системы, всё остальное — хамство в отношении пользователя. Ну а статически собранные бинарники нынче даже из программы на Си не всегда возможно получить, увы.
Мораль: в роли языка общего назначения (вот эти всякие Node.JS и прочее) интерпретируемые языки не годятся вообще никакие и никогда. В роли языка для скриптинга... э... ну, может быть, но зачем, когда есть Tcl?
ответить
From Anonymous (unverified) Fri Mar 1 15:12:00 2019 UTC
спасибо
Виноват, рука дрогнула: "питоновский pip", конечно же, npm как раз с Node используется, но это, повторюсь, то же, только в профиль.
За ответ спасибо, но я, правда, не совсем уловил, что не так с Оустерхаутом: встраиваемые языки разве не укладываются в "additional layers of functionality on top of existing programs"? Хотя сейчас в IT, как в доме Облонских, "всё смешалось". В любом случае, вашу мысль я уловил.
ответить
From admin Fri Mar 1 21:48:33 2019 UTC
Встраиваемые --
Встраиваемые -- укладываются, это тот же скриптинг. Но для скриптинга есть Tcl. Да даже Лисп есть (и примеров много такого его использования). Нафиг нужен JS, кроме как для трудоустройства бывших уЭбдевелоперов с травмой головного мозга -- для меня непрозрачно.
ответить
From Anonymous (unverified) Tue Mar 5 08:27:00 2019 UTC
На Tcl можно
На Tcl можно реализовать интерактивные и при том безопасные веб-странички?
ответить
From admin Wed Mar 6 16:22:28 2019 UTC
Ваш вопрос
Ваш вопрос лишён смысла, поскольку не вполне понятно, что такое по-вашему "интерактивные веб-странички".
Server-side scripting можно сделать на любом языке программирования, хотя лично мне совершенно непонятно, зачем это делать на Tcl, когда есть C или C++. Client-side scripting, т.е. что-то такое, что исполняется в браузере (а не на сервере) — это преступление, притом вне всякой зависимости от того, на каком языке это делается. Сейчас client-side делается на JS, поскольку браузеры ничего другого не держат, но здесь проблема не в языке, а в самой идее прислать пользователю не appearance, а behavior. За это надо если не казнить, то по меньшей мере сажать в тюрьму и пожизненно лишать права профессиональной деятельности в области компьютеров.
ответить
From Anonymous (unverified) Wed Mar 20 05:16:00 2019 UTC
Андрей
Андрей Викторович, вопрос касательно интерактивных страничек - похоже, сколько людей, столько и подходов к трактовке этого понятия. Для большинства client-side "свистелок" достаточно CSS, но, предположим, есть такая абстрактная задача: на веб-страничке требуется отображать показания с нескольких датчиков (температура/давление/влажность), возможно - строить графики, причем желательно, чтобы показания изменялись динамически, без перезагрузки страницы. Как я понимаю, такие вещи "обычно" делаются по пинку таймера, крутящегося где-то в JS-коде. Можно ли как-то обновлять часть страницы, содержащую эти данные, по инициативе сервера, не прибегая к JS? Или для решения такой задачи следует писать приложение для клиентской стороны? Простите за, возможно, глупый вопрос - с вебом дела не имел.
ответить
From admin Thu Mar 21 18:34:59 2019 UTC
CSS1 "достаточно"
CSS1 "достаточно" разве что для изменения внешнего вида элементов странички под мышиным курсором. CSS2 и 3 недопустимы, поскольку тьюринг-полны.
Для обновления странички по инициативе сервера есть какие-то очередные "модные" технологии, но они ничем не лучше JS: обновление страницы — это тоже поведение.
Когда-то давно для этих целей (например, для веб-чатов эпохи второй половины девяностых) использовалось штатное периодическое обновление документа, предусмотренное протоколом HTTP, это и сейчас, естественно, возможно сделать — например, все обновляемые часть загнать в тэги iframe в виде отдельных совсем мелких html-документов ("совсем мелких" в данном случае означает -- меньше одного килобайта, чтобы в один IP-пакет укладывались вместе с заголовком запроса) и в заголовке HTTP-ответа присылать указание на обновление (через пять секунд, или через две секунды, или сколько там надо в зависимости от задачи). Это точно лучше, чем JS и всякие webPush'и, хотя бы тем, что алгоритмической полноты тут в помине нет. Вот только это извращение. Да, для таких целей должно быть специальное приложение, а не браузер несчастный.
ответить
From Anonymous (unverified) Thu Mar 21 17:56:00 2019 UTC
Проблема ещё в
Проблема ещё в том, что behavior behavior'у рознь - всё-таки между "интерактивными страничками" десятилетней давности и современными "дистанции огромного размера". Одно дело, когда на всю страницу у вас был единственный скрипт-однострочник, слушающий событие и обновляющий по его возникновению текст внутри div'а (пример условный), другое - современные монстры-фреймворки, которые тянут за собой мегабайты левого кода для "совместимости". И вот когда сгенерированный каким-нибудь конструктором сайт обрастает "интерактивщиной", притом тоже в виде выхлопа какого-нибудь кодогенератора (о, Элберет, они даже скриптики вручную уже не пишут), получается неповоротливая, жрущая память как не в себя гадина с веселеньким узором. Притом усилия, которые затрачиваются современными "девелоперами" на создание столь модных нынче одностраничных веб-приложений, многократно превышают усилия, необходимые для создания дюжины статичных страничек, способных покрыть весь требуемый от такого сайта функционал. Пару лет назад была опубликована на Хабре статья из разряда "в каждой шутке доля шутки", очень хорошо описывающая современное положение дел в веб-разработке. Остаётся только удивляться, с каким усердием человек порой способен придумывать себе проблемы.
ответить
From admin Thu Mar 21 18:27:13 2019 UTC
behavior behavior'у
behavior behavior'у рознь
Убийство убийству тоже рознь. Но существование убийств с богатым букетом отягчающих обстоятельств, особым цинизмом или садизмом, с целью сексуального насилия или грабежа, серийные убийства, совершаемые маньяками и прочие прелести, которые можно изыскать в нашем замечательном обществе, никаким образом не могут оправдать какого-нибудь "заурядного" убийства вроде "выпили, повздорили, хватил палкой по башке, да силы не рассчитал, сам пришёл в полицию сдаваться, горе-горе".
Сама мысль о том, что браузеру клиента можно диктовать поведение, чудовищна и преступна, и всякое "да мы же только чуть-чуть" здесь не канает.
ответить
From Anonymous (unverified) Thu Mar 21 19:03:00 2019 UTC
всякое "да мы же
всякое "да мы же только чуть-чуть" здесь не канает
С этим и спорить не собираюсь; комментарий, по большей части, был о том, что "отягчающих обстоятельств" в вебе с каждым днём становится всё больше и больше, причём для большинства используемых ныне технологий характерно срастание appearance и behavior, которого не было в подходе с "чуть-чуть" - отключение javascript там приводило всего лишь к частичной потере сайтом функционала. Квинтэссенция - сайт, демонстрирующий вам просто белый экран при отключенном javascript (а таковы продукты, порождаемые всякими модными Angular и React, в которых даже примитивные формочки лепятся на JSX - помеси JS и XML).
ответить
From Anonymous (unverified) Wed Mar 6 19:42:00 2019 UTC
Опасно, опасно,
Опасно, опасно, вы бы хоть первое сообщение в цепочке прочитали :)
ответить
From Anonymous (unverified) Mon Mar 18 15:38:00 2019 UTC
Андрей
Андрей Викторович, а как же здоровый плюрализм? Почему "тиклем единым"? Чем объективно Tcl лучше всяких питончиков-руби-жабаскриптов? Проблема в их "мейнстримовости"? Или они просто режутся бритвой Оккама, поскольку Tcl занял эту нишу раньше? Ну так и shell-скриптами можно обойтись... Если что, никого ни на что не провоцирую - возможно, в 4-м томе "Введения в профессию" вы аргументируете такой выбор.
ответить
From admin Thu Mar 21 22:03:28 2019 UTC
Если говорить о
Если говорить о Питоне и Руби — то их сторонники, как я уже неоднократно отмечал, упорно пытаются забыть про исходно скриптовую сущность этих языков и использовать их как языки общего назначения. Собственно, и сами эти языки вкючают такие средства, которым в скриптовых языках не место (ООП, например).
Про JS вообще и говорить не хочется. Я не видел его за пределами веба (хотя точно знаю, что иногда бывает и так, но вот лично сам не видел), а веб с его помощью превратили в кучу дерьма.
Что касается всех остальных скриптовых языков, то из всех, что я видел, Tcl — единственный, имеющий логичное построение, начиная от лексики. Остальные слеплены на коленке, по ощущениям — вообще без применения головы.
В четвёртом томе про это будет рассказ. Точнее, он уже есть в той части рукописи, которая готова.
ответить
From Anonymous (unverified) Fri Mar 22 05:13:00 2019 UTC
Спасибо за
Спасибо за ответ. Т.е. проблема здесь, все же, как говорил классик, "не в клозетах, а в головах" - в той публике, с которой, как правило, ассоциируются эти языки? Никто ведь не заставляет использовать все возможности скриптового языка, включая ООП (так-то Tcl его тоже поддерживает с версии 8.6), равно как и вкорячивать интерпретаторы везде, начиная с веба и заканчивая драйверами устройств и прошивками микроконтроллеров (привет MicroPython). Но именно такими действиями адепты этих языков дискредитируют свои, возможно даже, исходно неплохие инструменты.
P.S. Андрей Викторович, а Lua так же плох? Когда-то сталкивался с ним, и мне он казался довольно неплохим примером эдакого "программистского пуританства".
P.P.S. Позвольте еще терминологический вопрос: где проходит грань, после который скриптовый язык в "умелых" руках начинает превращаться в язык общего назначения? Та же связка Tcl/Tk позволяет создавать весьма сложные программы с развитым графическим интерфейсом. В какой момент начнется использование инструмента не по назначению?
ответить
From admin Sat Mar 23 11:43:41 2019 UTC
Т.е. проблема
Т.е. проблема здесь, все же, как говорил классик, "не в клозетах, а в головах" - в той публике, с которой, как правило, ассоциируются эти языки?
Не совсем так. Тот же питон очевидным образом провоцирует своё использование в роли языка общего назначения. Так что проблема и в самих языках тоже.
Но вообще разграничение выглядит искусственным. Эти языки и эта публика не существуют друг без друга, то есть они вместе составляют одно явление.
с версии 8.6
Что делать с этими "новыми версиями", я пока не понял. Видимо, его форкать придётся. Последней разумной версией Tcl была версия 8.4.
Кстати, какие-то форки вроде уже есть.
Lua так же плох?
Не так же, конечно, но Tcl всё-таки логичнее.
В какой момент начнется использование инструмента не по назначению?
Скриптовые языки должны управлять другими программами — либо "склеивать" их, как bash, либо управлять изнутри, встроенными интерпретаторами. Для всего остального, с моей точки зрения, должна применяться компиляция и недопустимы зависимости времени исполнения.
ответить
From Anonymous (unverified) Sun Mar 24 00:50:00 2019 UTC
форки и реализации Tcl
Кстати, какие-то форки вроде уже есть.
Есть такой JimTcl. У него запросы, вроде бы, изначально скромнее, чем у современного Тикля. ОО там есть, но в виде отдельного модуля расширения, компиляция которого по умолчанию не включена. И много других свойств языка тоже оформлено в виде модулей, которые можно включать или отключать при компиляции.
ответить
From admin Sat Mar 30 23:32:54 2019 UTC
Не только, есть
Не только, есть ещё и вот такое: http://tinytcl.sourceforge.net
ответить
From Anonymous (unverified) Fri Mar 22 14:18:00 2019 UTC
жабоскрипт
Я не видел его за пределами веба (хотя точно знаю, что иногда бывает и так, но вот лично сам не видел)
Я вот, лично, видел. Как-то раз пришлось конфигурировать PolicyKit и, опа, там в конфигах ОН.
Впрочем, для меня это послужило ещё одним подтверждением тезиса, что всё, чего касается жабоскрипт и его пропоненты, либо изначально было ненужным говном, либо станет таковым вследствие этого касания.
polkit с той машины снёс при первой возможности.
ответить
From nelson (unverified) Sun Mar 3 11:34:00 2019 UTC
Язычёк программирования для веб-макак
http://www.opennet.ru/opennews/art.shtml?num=50231
В более сложных ситуациях в контексте сайта запускается JavaScript-код, исправляющий проблемы с совместимостью.
жаба-скрипт по иронии судьбы уже используется для исправления косяков веб-макак. конечно, это даже не дно - это просто таки адский пример криворукости т.н. "веб-разработчиков", которые даже не в состоянии нормально сверстать веб-страничку.
впрочем, в тормозилле, судя по всему, сидят такие же макаки, потому как идея запуска жаба-скрипта на клиентской стороне для исправления косяков веб-макак - это просто за гранью добра и зла.
кстати, сам по себе жаба-скрипт - однозначное зло, потому как с подачи этого язычка для макакинга, получила широкое распространение идея запуска скриптов на клиентской стороне
ответить
From Anonymous (unverified) Mon Mar 25 20:49:00 2019 UTC
Проблема
Проблема подавляющего большинства скриптовых языков в безобразно низком пороге входа, позволяющем с лёгкостью ваять лютую дичь и при этом спокойно любоваться результатом, ибо интерпретатор, в отличие от компилятора, не краснеет. Если говорить конкретно о JS, следует отметить его, мягко скажем, контринтуитивность (это язык, в котором невозбранно можно сложить объект с пустой строкой и получить ноль), в которую вносят посильный вклад и горе-разработчики, с нездоровой радостью встречающие каждую новую фичу, вышедшую из-под пера стандартизаторов. Простой пример: в ES2015 добавили т.н. стрелочные функции, самое очевидное применение которых - более краткая запись функций-однострочников, например, в коде типа:
Казалось бы, в чём подвох? А вот "крутые разрабы" теперь, похоже, вообще забыли про ключевое слово function и лепят из "стрелочек и скобочек" такую лапшу, что небезызвестный Brainfuck обзавидуется (полюбуйтесь хоть на оф. документацию к Node.js, которую, по идее, не последние раздолбаи писали).
Но JS, всё же, не самый плохой язык, а с приходом ES2015 ещё и ставший довольно выразительным, если подходить к его использованию с умом и невысоким коэффициентом кривизны рук.
P.S. Из вашего комментария можно сделать вывод, что есть тут некоторое лукавство: в предмете вы все же разбираетесь, т.к. вопрос, по всему видно, не праздный и продиктован некой насущной потребностью. Зачем вам в таком разрезе спрашивать чьего бы то ни было разрешения на использование того или иного инструмента, не совсем понятно. Новичку вряд ли бы понадобился встраиваемый язык в сишном проекте. Ну а раз душа лежит к JS, берите этот самый Duktape и пользуйтесь, а уж пользователи вашей программы дадут ей оценку.
ответить
From Anonymous (unverified) Fri Apr 26 22:13:00 2019 UTC
Вот буквально
Вот буквально вот только что попался на глаза любопытный пример из одной статьи - функция на JS, перемножающая две матрицы 2x2:
Серьезно, сколько потребуется времени (хорошо, если измеряемого секундами), чтобы понять, что творится в этом коде? ИЧСХ, комментатора, указавшего на моветонистость сего, нещадно заминусовали (ага, Хабр), что лишний раз подверждает слова выше о "стандартофилах" и их слепой любви ко всем новым фичам, которыми их старательно кормят дяденьки из комитетов.
ответить
From nelson (unverified) Thu May 30 16:38:00 2019 UTC
JS-макаки
А чего можно ожидать от веб-макак, которые всерьёз считают, что покупка дополнительных мощностей - это решение проблемы низкой производительности их поделий на всяких электронах и прочем веб-шлаке. Решение от гугла для веб-макаки - это образец "инженерной" мысли. Веб-макака будет использовать какой-нибудь сервис гугла для сохранения закладок браузера вместо того, чтобы тупо их экспортировать, только потому, что "это так принято". Веб-макака может всерьёз(!!!) считать, что ядро ОС может быть написано на жаве (я такой перл слышал лично). Веб-макака с радостью помигает светодиодом программой на жиэсе и напишет об этом на хипстерском хабре. При этом у подобного ""разработчика"" даже не возникнет мысли о том, что код на жиэсе вообше никак не отражает логику работы микроконтроллера и никакой разработки тут и близко нет. Напоследок, веб-макака пойдёт дальше гадить в веб жаба-скриптами и бутстрапами.
Серьезно, сколько потребуется времени (хорошо, если измеряемого секундами), чтобы понять, что творится в этом коде?
А что там может творится ? Отжирание оперативной памяти и процессорного времени. По-другому в веб-поделиях на жаба-скрипте не бывает.
ответить
From Anonymous (unverified) Tue Jun 4 13:43:00 2019 UTC
Веб-макака с
Веб-макака с радостью помигает светодиодом программой на жиэсе
Вот это-то и страшно: до недавнего времени программирование микроконтроллеров оставалось одной из немногих областей в IT-сфере, для входа в которую в обязательном порядке требовались мозги. Становится не по себе, когда на том же Тюбике взрослые дядьки с детским восторгом расписывают прелести Espruino или MicroPython и даже дают "типа уроки", ни хрена не понимая, что творится у железки под капотом. Вот выпустили китайцы в свое время ESP8266 - весьма интересная платформа с массой плюшек за копейки. Но найти в Интернете хоть какую-нибудь информацию по нативной разработке под этот камушек практически нереально. А ведь есть и тулчейн, и документация; но народу гораздо проще накатить туда Espruino, NodeMCU или MicroPython (а чо, 80-160 Мгц и 4 МБ флеша и не такое стерпят), а потом строчить посты / снимать видосики "как я делал автополив с сервером на питончике". IoT, хуле.
ответить
From nelson (unverified) Thu Jun 13 11:01:00 2019 UTC
ESP8266
Из википедии:
Производитель не предоставляет документации на внутреннюю периферию микроконтроллера.
Тут как бы уже понятно позициониронаие данного изделия - всяческие наколенные поделки для т.н. IoT.
Далее:
Вместо этого он дает набор библиотек, через API которых программист получает доступ к периферии.
Ну "спасибо". Прям WinAPI в сфере эмбеддинга какой-то...
Поскольку эти библиотеки интенсивно используют ОЗУ контроллера, то производитель в документах не указывает точное количество ОЗУ на кристалле, а только приблизительную оценку того количества ОЗУ , что останется пользователю после линковки библиотек — порядка 50 кБ.
Дичь полная. Всерьёз рассматривать этот камень для нормальных проектов нельзя.
есть и тулчейн
Так себе тулчейн, мягко говоря, если для работы с периферией требуются библиотеки.
Прошивки с встроенными интерпретаторами разнообразных языков высокого уровня. Эти прошивки позволяют подгружать через UART и исполнять скрипты разработчика устройства.
Ну тут уже макаки оторвались на полную: MicroPython, Lua, жабаскрипт, Basic. Лучше языков для написания прошивок не найти, ага.
ответить
From Anonymous (unverified) Fri Jun 14 13:38:00 2019 UTC
Производитель
Производитель не предоставляет документации на внутреннюю периферию микроконтроллера
набор библиотек
Это вы совершенно правильно отметили, но всё же API - меньшее зло в сравнении с чисто интерпретируемым исполнением. Дело даже не в том, кто кому чего предоставляет - прошивка Espruino на JS появилась сначала для STM32, все пороха которых как раз подробнейшим образом описаны в тысячестраничных даташитах. Та же HAL для STM32 или, прости Господи, Arduino - вполне себе открытые библиотеки, но есть персонажи, мигающие светодиодом через digitalWrite() и блокирующую задержку, основанную на декременте переменной в цикле, знать не знающие ни о каких регистрах или таймерах, в глаза не видевшие ни документации производителя, ни кода своих излюбленных библиотечек, но при этом мнящие себя матёрыми электронщиками. Но если у ардуинщика ещё есть шанс эволюционировать, то с питонистами-жабаскриптерами, каким-то образом оказавшимися "при железе", всё гораздо печальнее. А уж с каким воодушевлением они рассказывают про "упрощение разработки"! Отправить бы их на денек-другой лет на 30 назад и заставить перепечатывать шестнадцатеричный дамп операционки для ЮТ-88 с пожелтевшей странички - может, дури бы поубавилось...
Так что спорить о плюсах и минусах того или иного камня большого смысла нет - от любителей скриптиков, пишущих код торчащими из пятой точки пальцами, наличие документации производителя, увы, не спасёт. ESP8266 после выхода, вроде, начинали реверсить, хотя возможно, что сейчас всё это заглохло, не знаю.
ответить
From nelson (unverified) Thu Jun 27 14:14:00 2019 UTC
Документация
не знающие ни о каких регистрах или таймерах, в глаза не видевшие ни документации производителя, ни кода своих излюбленных библиотечек, но при этом мнящие себя матёрыми электронщиками
а зачем веб-макаке документация ? она из неё всё равно ничего не поймёт. современная веб-"разработка" - это юзание всевозможных жирнющих фреймворков путём манипуляций с их компонентами. как такового программирования там нет. пхпшники уже до того деградировали, что не хотят ничего писать на чистом пхп, хотя это по сути и есть фреймворк для создания веб-страничек. какие там регистры и таймеры )
Свежий пример веб-дурости
И откуда у них такая нездоровая тяга к нецелевому использованию браузера...
ответить
From Anonymous (unverified) Mon Jul 1 15:48:00 2019 UTC
И откуда у них
И откуда у них такая нездоровая тяга к нецелевому использованию браузера
Из благих намерений, как обычно: представляете, бедному-несчастному пользователю не придется качать и устанавливать компиляторы-программаторы-вот-это-вот-всё, достаточно ткнуть мышкой в браузере и радостно пустить слюну. Кто же виноват, что кому-то в свое время показалось удобным забивать гвозди дохлой кошкой вместо микроскопа, который вместо молотка...
Статейку про WebFPGA я видел. Особо нет желания разбираться, что там к чему, но, поскольку заявлена поддержка только Lattice iCE40, есть подозрение, что ребята просто взяли исходники Yosys, прогнали через какой-нибудь asm.js и прикрутили к этому делу GUI, чтобы мышкоблудить удобно было, вот и весь стартап. Короче, как говорил М. Н. Задорнов, "вот эту бы энергию, да на пользу Родине". Если бы они зареверсили файлы прошивок хотя бы парочки наиболее распространенных альтеровских-интеловских ПЛИСин да написали свободный легковесный маппер или хотя бы библиотеку для того же Yosys, чтобы отказаться при разработке под ПЛИС от многогиговой проприетарщины, цены бы им не было. Но это же не модно...
ответить
From nelson (unverified) Tue Jul 9 22:34:00 2019 UTC
FPGA
А стоит ли заморачиваться с реверс-инжинирингом этих самых ПЛИС ? ) В последние несколько лет из каждого утюга про них вещают, неужели есть какие-то реальные области применения программируемых микросхем, помимо прототипирования с их помощью ? Стоимость, по сравннению с MCU, у них, можно сказать, запредельная. О широком применении их в разработках не может идти и речи.
ответить
From Anonymous (unverified) Wed Jul 10 19:42:00 2019 UTC
Надо сказать,
Надо сказать, что мы с вами изрядно отошли от темы - начали с JS, закончили обсуждением разномастных железяк. Интересно, Андрей Викторович еще долго нас терпеть будет? :-)
А стоит ли заморачиваться с реверс-инжинирингом этих самых ПЛИС ?
Ну, все полезнее, чем сайтики клепать на JS.
неужели есть какие-то реальные области применения программируемых микросхем
О широком применении их в разработках не может идти и речи
А широкое применение и не нужно - это устройства для специфических задач, например, для хитрой цифровой обработки сигналов, высокоскоростных интерфейсов и т. д. То, что
В последние несколько лет из каждого утюга про них вещают,
не говорит ни о чем: для широкой публики стал доступным некий новый/необычный/непривычный (подчеркните нужное) инструмент, вот и вещают. Кому-то кажется, что нашлась серебряная пуля для всего на свете, кому-то просто в диковинку, а заядлым хоббийщикам часто и вовсе наплевать на финансовую сторону вопроса или оправданность использования того или иного камня, только дай новую железку пощупать. И каждый считает своим долгом поделиться "передовым опытом", пусть даже это светодиодная мигалка.
Короче, пусть вещают, время покажет. В конце концов, в массе гуляющих по Интернету "проектов" и микроконтроллер можно двумя транзисторами заменить, но это уже давно ни у кого ни раздражения, ни недоумения не вызывает - может, лет через несколько и с FPGA такая же песня будет.
ответить
From nelson (unverified) Sun Jul 14 23:53:00 2019 UTC
FPGA
А широкое применение и не нужно - это устройства для специфических задач, например, для хитрой цифровой обработки сигналов, высокоскоростных интерфейсов и т. д.
тем не менее, сами производители упорно пытаются представить FPGA как продукт массовый. не удивлюсь, если их скоро начнут пихать в потребительские устройства. очередные игры в "прогресс" за счёт конечных потребителей.
для широкой публики стал доступным некий новый/необычный/непривычный (подчеркните нужное) инструмент, вот и вещают.
а что там необычного и непривычного? те же полузаказные микросхемы, только распиаренные маркетолухами.
заядлым хоббийщикам часто и вовсе наплевать на финансовую сторону вопроса или оправданность использования того или иного камня, только дай новую железку пощупать
что-то мне подсказывает, что подобный контингент и является основным потребителем всех этих FPGA - "современный айтишник" на макбучке, адепт современных "технологий", любитель гугла и веб-поделий.
ответить
From Anonymous (unverified) Tue Mar 26 19:48:00 2019 UTC
Вдогонку
Возможно, в контексте браузерного JS кому-то покажется интересным сей текст. Хотя такой эсперимент, разумеется, каждый может провести самостоятельно.
P. S. Андрей Викторович, если не секрет, что за софтина у вас генерирует такую лютую капчу?
ответить
☞ From Anonymous (unverified) Mon Feb 25 20:06:00 2019 UTC
Андрей
Андрей Викторович, а что вы думаете о Wine? Считаете ли вы, например, для себя возможным использовать подобные средства, или предпочитаете отказаться от запуска Windows-only программ в среде Linux, даже если альтернатив нет или они проигрывают по тем или иным показателям? Вопрос не провокации ради, но, к сожалению, не всякому софту (да хоть и играм, чёрт их дери) возможно найти близкую по функционалу замену.
ответить
From admin Fri Mar 1 13:21:54 2019 UTC
Я не использую
Я не использую Wine -- пока ещё ни разу не возникло в этом потребности.
По поводу "если альтернатив нет" — ну, так практически не бывает, это разве что всякие маргинальные случаи: например, из моей практики — вот для налоговой или ПФР нужно некие бумажки подготовить в определённом формате и для этого есть какая-то "бесплатная" программа, естественно, под Win. Для этой мерзости у меня есть ноутбук с WinXP :-) Включается в среднем раз в два месяца, остальное время выключен и завален бумажками.
Что же до варианта "проигрывают по тем или иным показателям" — это в принципе некорректная постановка вопроса. Программ, для которых недоступен исходный текст, просто нет, они не существуют. Сравнивать по каким бы то ни было показателям то, что существует, с тем, чего не существует — занятие исходно дебильное.
ответить
From Anonymous (unverified) Fri Mar 1 19:17:00 2019 UTC
К сожалению, Linux
К сожалению, Linux не особо интересен для разработчиков игр, хотя в последнее время ситуация улучшается. В принципе, разнообразные инди-проекты с небольшим бюджетом (меня вот зацепили "программистские" головоломки от Zachtronics) все чаще имеют поддержку Linux на релизе, а вот с проектами AAA-класса все гораздо печальнее. В таких случаях только пляска с бубном и Wine остается (ну, есть Steam для Linux, но там, похоже, что-то Wine-образное крутится, только и всего).
P.S. (специально для Андрея Викторовича) Да, я знаю про NetHack ;)
ответить
From admin Sat Mar 2 21:48:16 2019 UTC
К счастью, мне
К счастью, мне совершенно не интересны ни сами разработчики игр, ни та идиотская проприетарная хрень, которую они разрабатывают. Мне непонятно, как можно на всё это тратить время, а уж как можно тратить ещё и деньги — вообще совсем странная штука.
ответить
From Anonymous (unverified) Mon Mar 4 11:40:00 2019 UTC
К счастью, мне
К счастью, мне совершенно не интересны ни сами разработчики игр, ни та идиотская проприетарная хрень, которую они разрабатывают.
Ну, на вкус и цвет, как говорится, все фломастеры разные - хрени там хватает, но, имхо, попадаются и крайне годные экземпляры. Хотя, конечно, если вопрос проприетарщины принципиальный, их и рассматривать смысла нет, здесь согласен на все 100%.
Хотелось бы отметить вот что: неинтересен Linux, скорее, не разработчикам (им-то, в сущности, какая разница?), а кровопивцам-издателям, ибо крутятся в этом деле бешеные бабки, до разрабов порой и не доходящие. Особенно прикольно наблюдать "эксклюзивы для консолей": дескать, на PC пиратят все, кому не лень, вот у нас $GAME_NAME only for PlayStation 4 - только купите (и то, и другое, ясен пень)! Про то, что PS4 - это, в сущности, брендированный x86-комп с весьма посредственными характеристиками, а за красивым словом Orbis скрывается FreeBSD, почему-то предпочитают умолчать. Так что правит бал тут, как правило, красивая обёртка.
ответить
From admin Wed Mar 6 16:43:23 2019 UTC
если вопрос
если вопрос проприетарщины принципиальный, их и рассматривать смысла нет
Именно так
не разработчикам (им-то, в сущности, какая разница?), а кровопивцам-издателям
аминь
ответить
From Anonymous (unverified) Tue Mar 5 08:29:00 2019 UTC
Вы говорите,
Вы говорите, что вам не интересны(и вы против) вообще любые игры(даже самые простые) или только те, на которые можно потратить деньги?
ответить
From admin Wed Mar 6 16:34:06 2019 UTC
Я не против игр
Я не против игр как таковых (если не выходить за пределы разумного). Я против (а) проприетарщины и (б) уплаты денег за воздух.
ответить
From Anonymous (unverified) Fri Mar 8 19:26:00 2019 UTC
> с проектами
> с проектами AAA-класса все гораздо печальнее
Прошу прощения, что вклиниваюсь в дискуссию, но я был бы просто счастлив, если бы "проекты AAA-класса" сдохли как явление. И я не только про игровую индустрию, туда же киноблокбастеры за миллионы баксов, всякая раскрученная эстрадная попса, и тому подобные явления. Естественно, вместе с корпорациями, которые всё это дерьмо производят.
Я совершенно не против игр и прочих развлечений как таковых, но игры, книги, музыка, кино и прочее должно быть максимально авторским. А не всего лишь очередным сравнительно честным способом отъёма денег у населения, поставленным на индустриальный поток. И с IT, кстати, та же фигня.
ответить
From Anonymous (unverified) Fri Apr 5 06:46:00 2019 UTC
"программистски
"программистские" головоломки от Zachtronics
"Знаем об его работах" (c) Но если вас увлекает программирование на игрушечных языках и поиск ошибок в написанном на них коде, обратите внимание на милую сердцу любого линуксоида игру - gdb. В головоломках от Zachtronics имеет место еще и соревновательная часть - там доступны данные по скорости работы и объему кода в решениях других игроков. Так вот, тут рецепт тоже прост до безобразия: берете любую не особо сложную софтину, собираете с ключом -pg, запускаете под игрой gprof, изучаете ее выхлоп (колонки time и calls, в первую очередь), а затем запускаете редактор кода. Серьезно, не оторветесь!
ответить
From admin Fri Apr 5 13:12:05 2019 UTC
Кстати, да
Поддержу предыдущего оратора :-)
ответить
☞ From Anonymous (unverified) Thu Feb 21 10:54:00 2019 UTC
Tiny Core?
Добрый день. Андрей Викторович, можно узнать ваше мнение о Tiny Core Linux? На фоне современных монстров, имхо, весьма интересный дистрибутив. Да и в сторону systemd эти ребята, похоже, даже смотреть не собираются.
ответить
From admin Thu Feb 21 12:11:17 2019 UTC
А оно вообще живое?
На сайте самые поздние даты, какие удалось найти — 2009 год; ссылка на репозиторий ведёт на дефолтную страничку апача, т.е. этой части сайта уже просто нет. Новости там без дат, так что когда эта их 10.0 вышла — непонятно.
ответить
From Anonymous (unverified) Thu Feb 21 12:51:00 2019 UTC
Вполне и очень даже
Для x86/x86_64 версия 10.0 вышла 7.11.2018 - пруф. А вот список пакетов - extensions по их терминологии.
P.S. Хронологию можно восстановить по упомянутой в новости версии ядра - 4.19.10. Но на счет сайта согласен - информативностью не отличается. Зато без JS :)
ответить
From Anonymous (unverified) Thu Feb 21 15:18:00 2019 UTC
Да
Живет и здравствует, регулярно обновляется.
ответить
☞ From Anonymous (unverified) Thu Feb 21 10:38:00 2019 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович! Заинтересовал ваш недавний комментарий касательно поисковиков, где вы писали, что рано или поздно придется запретить все виды рекламы. Не могли бы вы поподробнее рассказать, что же, на ваш взгляд, должно произойти, чтобы "такое счастье нас постигло"? Вопрос не холивара/троллинга ради, чисто человеческое любопытство.
ответить
From admin Thu Feb 21 12:16:02 2019 UTC
Могу только дать пару ссылок
Вот раз:
http://infoviolence.org/ru/vblog/ (если предпочитаете youtube, то вот: https://www.youtube.com/c/infoviolence)
Вот два: http://www.croco.net/croco/papers/stolyarov_philosophy_thesis_infofreedom.pdf
А "что должно произойти" — ну это довольно очевидно: людей происходящее должно задолбать в достаточной для социальных потрясений степени.
ответить
From Anonymous (unverified) Tue Mar 5 08:33:00 2019 UTC
Задолбать
Задолбать может задолбает(реклама кстати давно уже задолбала всех, наверно даже самих рекламщиков, одно дело её делать, а другое её видеть/слышать), но не факт, что это перевернет порядок. Ах если бы так и случилось бы...Что-то совсем не верится.
ответить
From admin Thu Mar 7 21:05:04 2019 UTC
Поживём-увидим
Года три назад в Москве интересная история была. Мужик взял охотничье ружьё и из окна своей квартиры "снял" девицу-рекламщицу с матюгальником.
Сел, естественно. Аж, если мне память не изменяет, на 12 лет.
Между тем, он сначала требовал прекратить шум под его окнами от самих уродов с мегафонами, потом от их начальства (хозяев магазина), потом обращался в полицию, и только когда все его послали, схватился за ружьё. В общем, всё как всегда: если государство устраняется от своих прямых обязанностей, начинается суд Линча.
Что характерно, после того случая звуковой рекламы в Москве примерно полгода не было вообще, потом начали потихоньку снова появляться эти мрази. Мужик, можно сказать, пожертвовал собой ради нашей тишины.
Я, в общем, не считаю, что он правильно сделал -- но лишь по одной причине: я противник самопожертвования. А теперь, как говорится, внимание -- вопрос: сколько ещё трупов нужно, например, мэрии Москвы, чтобы всё-таки запретить звуковую рекламу на улицах?
ответить
From Anonymous (unverified) Wed Mar 13 06:11:00 2019 UTC
Вспомнился
Вспомнился "День не в счет" Генри Каттнера. Печально, конечно, особенно если учесть, на каких условиях приходится работать таким "девицам-рекламщицам": поверьте, вопли в мегафон каждый божий день для подавляющего большинства из них под угрозой лишения зарплаты/увольнения - отнюдь не предел мечтаний. Я никого не оправдываю, не подумайте, но если они "уроды" и "мрази", то кто же тогда хозяева магазинов, считающие возможным так продвигать свой товар?
Матюгальники и ссущая в уши "музыка" - к сожалению, давние спутники магазинов, отравляющие жизнь людям, вынужденным жить по соседству с ними. Но если в случае магазинов мотивы "хозяев" хотя бы понятны (еще раз повторюсь, недопустимы, но понятны), то вот подобный подход на выборах вызывает у меня недоумение. Я не знаю, как в Москве, но вот в небольших городках почему-то очень любят зазывать людей на выборы громкой "музыкой" (имею удовольствие проживать по соседству с учреждением, в котором разворачивают избирательный пункт). Как связаны выборы и эстрадная срань, да еще и на децибелах, сотрясающих оконные стекла и роняющих парфюмерию с зеркал? Какую аудиторию они хотят привлечь? Молодежь? Весьма сомнительная идея.
ответить
From admin Fri Mar 15 22:36:42 2019 UTC
Каттнер
Каттнер прекрасен, и этот его рассказ — в особенности, а уж если учесть, когда он был написан (если не ошибаюсь, это что-то вроде 1953 года), всё становится совсем интересно. Впрочем, в те годы тема навязчивой рекламы стала популярна у антиутопистов, даже у Бредбери в "451 градусе" оно есть.
Что до условий работы, то тут всё просто. Человек всегда может решать, где ему стоит работать, а где — нет. Если человек соглашается глушить людей рекламой через матюгальник (или рассылать спам, или "холодные" обзвоны делать), он в моём понимании перестаёт быть человеком. У такого, э-мммм, персонажа нет ни пола, ни возраста, ни каких-либо иных свойств, это просто мразь и всё.
ответить
☞ From Anonymous (unverified) Thu Feb 14 17:48:00 2019 UTC
Здравствуйте!
Здравствуйте! Можете пожалуйста подробно рассказать об учебных предметах, которые преподаются в ВМК?
ответить
From admin Fri Feb 15 22:32:08 2019 UTC
8-()
Нет, не могу. Эта тема реально необъятна.
ответить
☞ From Anonymous (unverified) Fri Feb 1 13:10:00 2019 UTC
the majority is always wrong
Андрей, вы много говорите о, мягко говоря, недостатках мейнстрима в IT и ориентированной на него индустрии. Может быть вам будет интересна эта ссылка: the majority is always wrong.
Основная мысль там, как я понял, примерно такая: если одновременно существуют несколько продуктов или технологий, решающих одну и ту же задачу, и одна/один из них заметно популярнее других, то, почти наверняка, менее популярные решения технически окажутся лучше (или, по крайней мере, не хуже), чем наиболее популярное.
ответить
From admin Fri Feb 1 19:46:27 2019 UTC
Спасибо :)
Я бы основную мысль сформулировал по-другому: если есть популярное решение и при этом хоть кто-то пользуется решением менее популярным, то это менее популярное решение лучше, чем популярное: иначе им бы вообще никто не стал пользоваться.
А вообще прикольный текст, спасибо :)
ответить
From Anonymous (unverified) Sat Feb 2 12:08:00 2019 UTC
Eliezer Yudkowsky
Если вы вдруг не знаете, то это тот самый Элиезер Юдковский, который написал широко известную в узких кругах книгу "Гарри Поттер и методы рационального мышления". Ну и один из основателей блога LessWrong, о рациональном мышлении и преодолении когнитивных искажений.
ответить
From admin Sun Feb 3 09:49:24 2019 UTC
Спасибо ещё раз
Да, не соотнёс. Книжку я читал, был доволен как три слона. Похоже, Юдковский — человек весьма нетривиальный.
ответить
☞ From Anonymous (unverified) Wed Jan 30 09:26:00 2019 UTC
Здравствуйте!К
Здравствуйте!
Когда вновь появится возможность приобрести ваши книги с доставкой их в регионы? С лета 2018 много времени прошло, способ так и не был найден? Очень уж хочется иметь печатные версии ваших книг, но не ехать же в Москву за ними.
ответить
From admin Wed Jan 30 13:42:00 2019 UTC
Увы
Это оказалось труднее, чем я думал. Держать свой кассовый аппарат для этой цели абсолютно бессмысленно, расходы на его содержание превысят не то что прибыль — скорее даже "грязную" выручку. Я хотел найти какой-нибудь действующий интернет-магазин для этой цели, но, к своему удивлению, не нашёл. Собираясь его искать, я не учёл одной простой вещи: те, кто торгуют бумажными книгами, нынче практически поголовно продают ещё и воздух в виде электронных книг, мне с ними сотрудничать религия не велит. Так что официальной возможности продавать книги физлицам у меня нет и не предвидится.
ответить
☞ From Anonymous (unverified) Sat Jan 26 18:27:00 2019 UTC
Андрей
Андрей Викторович, а можно узнать ваше мнение касательно систем автоматизации сборки, подобных CMake? Оправдано ли их использование, или это вещи "от лукавого"?
ответить
From admin Mon Jan 28 19:35:59 2019 UTC
Не знаю как
Не знаю как насчёт систем "вообще", но вот конкретно авторов CMake, а также тех, кто его использует в своих проектах, надо топить в бочках с дерьмом.
Предвосхищая вопрос "за что", вот: https://openwall.info/wiki/people/croco/crocos_lamp <-- искать по слову "cmake".
Вообще что можно сказать о разработчиках, которые решают какую-то там свою проблему, которая не факт что вообще существует, и при этом устраивают тонны геморроя майнтейнерам? Майнтейнеров-то побольше, чем разработчиков. Это даже не безответственность, это какой-то беспредел, и касается это не только cmake. Например, любая разработка на интерпретируемых языках, если предполагается неопределённый (неограниченный) круг пользователей, оказывается из той же серии. Вообще любые действия разработчика, которые налагают дополнительные требования на систему конечного пользователя (типа, надо, чтобы у вас там стоял интерпретатор, или библиотека, или ещё что-то), да и на систему сборщика пакетов тоже — это безответственность.
ответить
From Anonymous (unverified) Mon Jan 28 21:19:00 2019 UTC
Спасибо за
Спасибо за ответ, собственно, вопрос возник как раз после того, как "I wasted several days" (да-да) и "read tons of various docs", правда, не с MySQL, так что очень хорошо Вас понимаю.
В общем, нужны все эти штуки ровно для одного - навязать вынутый кем-то из самого темного места у белого мустанга "стандарт". Ну и отучить писать по-человечьи Makefile, куда ж без этого.
ответить
From Anonymous (unverified) Tue Jan 29 10:21:00 2019 UTC
Нельзя ли поподробнее?
Очень неожиданное утверждение.
Судя по вашим комментариям по ссылке, данный комментарий рискует нарваться на ответ в весьма грубой форме, а то и вовсе не пройти премодерацию. Тем не менее, надеюсь, что этого не случится, так как вопрос задаётся информации ради.
Нельзя ли поподробнее о проблемах, возникающих при сборке проектов, использующих cmake? Лично я, собирая различные проекты, наблюдал прямо противоположную картину: проекты на cmake или automake собирались без проблем и всегда одинаково, в то время как в проектах с рукописным make-файлом, этот Makefile, как правило, приходилось сильно допиливать в случае, если система хоть немного отличается от той, что была у разработчика. Правда я не пытался собирать пакеты с этими программами, просто устанавливал у себя в системе. По указанной вами ссылке указано про проблемы с DESTDIR, но если верить документации (https://cmake.org/cmake/help/latest/envvar/DESTDIR.html), то вроде бы он и в make-файлах, порождённых cmake, работает. Кстати, в проекте с рукописным Makefile это почти наверняка не будет работать, если только автор программы лично этим не озаботился, вероятность чего на практике стремится к нулю.
Я не в курсе, возможно, эта возможность есть только в новых версиях cmake или работает как-то не так. Но так или иначе, пакетов, использующих cmake, просто огромное количество (KDE, LLVM и другие), и каким-то образом маинтейнеры справляются с их сборкой.
Аналогию с интерпретируемыми языками вообще не понял. Использование cmake вроде бы как раз не налагает никаких требований на систему, которая установлена у пользователю -- это просто инструмент для сборки программы, какие там требования?
ответить
From admin Tue Jan 29 11:35:00 2019 UTC
Пожалуй, даже отвечу
Парочка моментов мне тут показались стоящими того, чтобы на них ответить, а так, конечно, я подобного рода комменты обычно не раскрываю, ибо с подобными вам людьми о чём-то спорить — только время терять.
Итак, начнём с DESTDIR. То, что по вашей ссылке — это совершенно не то, что было нужно мне. В традиционных (основанных на posix make или gnu make) сценариях сборки это обычно называется PREFIX — то место, куда программа будет инсталлирована на целевой системе, и, в частности, в её конфигурационных файлах и опциях времени сборки этот PREFIX тоже прописывается. Мне же нужно было, чтобы программа на ЦЕЛЕВОЙ системе (то есть там, где будет установлен пакет) ставилась в /usr/{bin,share,etc}, но на МОЕЙ системе — той, где всё это собиралось — чтобы команда make install добавила к этому спереди ещё ту временную директорию, которая будет закатана в пакет. Например, если на целевой системе будет файл /usr/bin/foobar, то чтобы на МОЕЙ системе make install этот файл записал в /home/avst/.rpm/(что-то-там-не-помню)/usr/bin/foobar, а потом это вот "что-то-там-не-помню" целиком закатывается в пакет (в моём случае это был, как можно догадаться, RPM).
Конечно, если автор программы конченный м$дак, он может этим "не озаботиться", но при применении обычного make я влезу в Makefile и за три минуты эту фишку добавлю, поскольку она примитивна, и сами Makefile тоже примитивны, как их хачить — очевидно. А вот cmake — это вещь в себе, с которой я не смог, как видим, разобраться в течение нескольких дней. То есть тривиальные функции — вот взять эту кучу исходников, эту груду библиотек, всё собрать и чтоб работало — там делаются без проблем, оно на то и рассчитано; но как только нужно что-то менее тривиальное — нужно копать намного глубже. Я не мог себе позволить потратить ещё больше времени (судя по всему, там счёт уже должен был идти на недели) ради одного пакета, учитывая, что эти "знания" мне не пригодились бы в дальнейшем и оказались бы просто забыты через полгода. Жизнь для этого слишком коротка.
Это, кстати, заодно и ответ на вопрос, как же "мейнтейнеры справляются". Разумеется, и RedHat, и другие конторы, содержащие мейнстримные дистры, могут себе позволить содержать целый штат людей, создающих пакеты под эти дистры. Если человек собирается упаковкой пакетов заниматься постоянно и за деньги, то потратить пару недель на освоение премудростей cmake он, в общем и целом, может себе позволить. Решает ли это возникшую проблему? Разумеется, нет. Те моральные уроды, которые используют в своих проектах cmake, получают в своё распоряжение "доброго гномика", который делает за них часть их работы (можно не писать низкоуровневые makefile'ы), но при этом, как видим, резко повышает требования к квалификации мейнтейнеров. Для мейнстрима это не проблема, а для всего, что не совсем мейнстрим — проблема, и ещё какая.
Ну и "аналогия" с интерпретируемыми языками на самом деле никакая не "аналогия", это просто та же самая ситуация. Разработка на интерпретируемом языке вроде питона, руби или перла (который вроде уже потихоньку дохнет, но что-то эта агония затянулась) может быть несколько менее трудоёмкой, нежели на компилируемом языке, допускающем полностью статическую компоновку (C, C++, да хоть Паскаль), но при этом каждый пользователь вынужден терпеть на своей машине интерпретатор с его экосистемой и прочими капризами. Чтобы эти проблемы прочувствовать в полной мере, нужно сделать шаг в сторону от мейнстрима, туда, где нет добрых дядек, изготавливающих для вас готовые инсталляционные пакеты с интерпретаторами всего, что движется. Но даже в пределах мейнстрима, как ни странно, бывают крайне "интересные" ситуации, связанные с конфликтом версий интерпретаторов или всякого другого, входящего в их пресловутые "экосистемы", так что приходится распространять программу в виде "бандла", включающего в себя собственный экземпляр интерпретатора и всего его окружения.
Могут ли эти проблемы быть решены? Несомненно! Но если проблема поддаётся решению, то само по себе это совершенно не означает, что её следует создавать. Напротив, ответственный подход к разработке состоит в том, чтобы ни у мейнтейнеров, ни у пользователей никогда не возникло ни одной такой проблемы, которую разработчик мог бы своими действиями (например, выбором другого языка программирования или другой системы сборки) решить или просто изначально не создавать. Разработчик-то один, а пользователей много.
Между прочим, autoconf/autotools вообще-то из той же серии, я неоднократно видел скрипт configure, который упирался в отсутствие на моей системе неких команд, которые его афффтар посчитал само собой разумеющимися и везде заведомо присутствующими — то есть эта штука, предназначенная, чтобы адаптироваться к особенностям разных систем и через это повышать переносимость, на самом деле часто оказывается источником непереносимости. Поэтому для меня эти "инструменты" — категорическое табу, а их распространённость (пожалуй, девять софтин из десяти собираются с их помощью) для меня не аргумент вообще ни в каком виде. Современная IT-индустрия состоит в том, что идиот на кретине сидит и придурком погоняет, а потому распространённые практики авторитетом служить не могут; для меня сей вопрос решён и пересмотру не подлежит.
NB: в дальнейшей дискуссии я не заинтересован.
ответить
From Anonymous (unverified) Tue Jan 29 19:28:00 2019 UTC
Да уж, а в
Да уж, а в некоторых особо запущенных случаях сгенеренный Makefile сам запускает configure по поводу и без. Т.е. после ./configure все чинно-благородно, запускаешь make, часа полтора вся кухня крутится, после чего рушится со словами: "Ой, а где же -lyet_another_fucked_super_puper_library?" Ставило её, запускаешь make для продолжения сборки... и обнаруживаешь, что объектных файлов-то твоих уже нет, а скрипт снова-здорова услужливо проверяет, что есть у тебя gcc, что такие-то фичи он поддерживает, и всё вот это вот заново.
ответить
From Anonymous (unverified) Fri Sep 6 14:47:00 2019 UTC
Но даже в
Но даже в пределах мейнстрима, как ни странно, бывают крайне "интересные" ситуации, связанные с конфликтом версий интерпретаторов или всякого другого
Не надо далеко за примером ходить - достаточно вспомнить "питонью болячку" c python 2 и python 3, которую, наверное, никогда уже не вылечат. Есть такая софтинка GPAW для расчетов по квантовой химии с интерфейсами к библиотечным функциям, написанными на этом дивном языке. Всем хороша эта свободная софтинка: и расчетных методов реализовано дикое количество, которое и не снилось иным проприетарным пакетам, и возможностей масса; можно, помимо прочего, собрать локальную версию документации в виде набора html-файлов с красивыми графиками и табличками, чтобы не тыкаться носом в их сайт постоянно. Красота, одним словом. Но вот решили разрабы перевести последнюю версию в режим "Python 3 only", а система сборки документации как работала с Python 2, так и работает. Получается интересная история: чтобы собрать документацию, нужен Python 2, но данные, которыми она наполняется, обсчитываются в ходе сборки самим GPAW, который теперь дружит только с Python 3. Без некромантии и шаманских плясок теперь никак...
ответить
From admin Fri Sep 6 15:46:58 2019 UTC
Красочный пример безответственности
Вот так вот взяли и сломали обратную совместимость. Красота. И я не про GPAW, я про создателей самого Питона. Примерно так: «Ну что, ребята, изучили наш Питончик? Ну молодцы, а теперь ооооооппп-ля — с сегодняшнего дня он совсем другой, начинайте изучать заново!»
Меня вот интересует, почему эти люди ещё живы. А они ведь не просто живы — безумное количество людей продолжает писать на этом их питоне, когда следовало бы — сразу после первого нарушения обратной совместимости — создателей питона утопить в ближайшей луже, а их поделье забыть как страшный сон.
ответить
From Anonymous (unverified) Sat Sep 7 11:33:00 2019 UTC
Проблема с GPAW
Проблема с GPAW таки оказалась решаемой, причём малой кровью. К сожалению, глобальной проблемы с несовместимостью версий языка это не снимает. К вашим же словам по этому поводу добавить, кроме "аминь", пожалуй, нечего.
ответить
☞ From Anonymous (unverified) Mon Jan 21 15:42:00 2019 UTC
Андрей
Андрей Викторович, скажите пожалуйста, что вы думаете о поисковой системе YaCy.
ответить
From admin Tue Jan 22 10:18:36 2019 UTC
Идея была хорошая
Ничего я про неё не думал, пока вы мне про неё не сказали. Просто вообще не знал о её существовании.
Стало интересно — прочитал википедию. Стало ещё интереснее. Распределённая система поиска P2P, никому не принадлежит, никому не подчиняется, ну просто класс. Сразу же возникли технические вопросы — а сколько она сгенерит трафика (ну не весь же веб она ко мне в локальный индекс притащит), а как там с действующими пирами, а... Ну, вы поняли. Аж захотелось попробовать.
Зашёл на сайт, и началось. С отключённым JS там тупо блоки друг на друга налезают, за такую вёрстку надо убивать просто сразу — это даже не техническая безграмотность, это какое-то дебильное и бессмысленное вредительство. Сама она написана на Java, ну спасибо, матерь ихнюю так. О возможности разделения на серверную и клиентскую часть — ни слова, во всяком случае с ходу; вот у меня есть сервер в датацентре, я бы ту часть, которая по вебу ползает и с пирами общается, там запустил, а с домашних машин уже бы к этому всему хозяйству обращался. Впрочем, даже если бы такая возможность была предусмотрена, я на своих серверах Java в любом случае поднимать не стану, это долго и не факт, что вообще получится. Под Openwall её придётся собирать из исходников, и в своё время с Erlang'ом у меня это не вышло, вот просто тупо не собралось с невнятной диагностикой, а Java пожирнее будет и уж наверняка покапризнее.
Короче, разбег на рубль, прыжок даже не на копейку, а на грошик ломаный. В нынешнем виде это не взлетит.
Что нужно, чтобы она взлетела? Нужно говорить не о "программе", а о системе с открытым протоколом. Нужно подробно, вдумчиво документировать этот протокол, чтобы кто-нибудь мог сделать альтернативную реализацию хотя бы серверной части. Потом нужно найти того (тех), кто реально это сделает на чистом Си или хотя бы на C++. Вот после этого появится призрачный шанс, что оно хоть как-то взлетит.
А вообще поисковики, как я уже говорил, зло. Они тупо брутфорсят проблему, требующую аккуратного и вдумчивого решения. И я сильно сомневаюсь, что вот этой "грубой силы" окажется достаточно (хоть для какой-то осмысленной работы) у любой системы, пусть и распределённой, если в неё не вбухано много-много ярдов баксов, как в поисковики гугла и яндекса. Но проблемы надо решать не грубой силой, а приложением интеллекта; вместо поисковиков с их огромными тупыми индексами нужно разрабатывать распределённые системы каталогизации и классификации. Вот только пользоваться этим никто не будет, пока есть гугл. Выхода из ситуации я не вижу.
ответить
From Anonymous (unverified) Tue Jan 22 13:56:00 2019 UTC
пессимизм?
вместо поисковиков с их огромными тупыми индексами нужно разрабатывать распределённые системы каталогизации и классификации. Вот только пользоваться этим никто не будет, пока есть гугл.
Почему такой пессимизм? Я бы с удовольствием пользовался каталогом интернета, создаваемым по принципу той же википедии, например. Думаю не только я, многие разумные люди бы не отказались от нормального каталога вместо хаотичного гугления. Ну а неразумные пусть дальше рекламу в гугле/яндексе смотрят.
Хм, задумался... Может я слишком хорошего мнения о "разумных людях" (и/или об их количестве)? Вы-то наверняка, больше общаетесь с реальным миром, чем я.
ответить
From admin Tue Jan 22 15:34:00 2019 UTC
Реализм, увы
Вот есть распределённые системы IM, но основная масса народу продолжает торчать в телеграмчике и вотсапчике; есть всякие диаспоры и GNU Social, но миллионы юзверей как сидели в фейсбучике и вконтактике, так там и сидят, и никакие катаклизмы вроде массовых утечек из FB и отжатия VK кровавой гебнёй у Дурова не могут повлиять на ситуацию.
И если с "социалочками" и IM я, как мне кажется, какой-то выход всё же вижу, то переход от индексов к каталогам требует слишком серьёзной смены парадигм. А поскольку отсутствует заинтересованная корпорация с большими бабками, зафорсить эту смену парадигм будет некому.
P.S. Ах да, про Википедию. Она централизованная. От некоторых проклятий спасает то, что она при этом некоммерческая, это формальный non-profit; но, увы, сильно не от всех.
ответить
From Anonymous (unverified) Wed Jan 23 13:05:00 2019 UTC
По поводу IM и
По поводу IM и телеграммчиков/вотсапов. Лично для меня (и по-моему мнению для многих) платформа для использования мессенджеров --- это прежде всего телефон, а дальше уже ПК. Поискав мобильный клиент для IM, который бы из коробки поддерживал синхронизацию диалога на двух устройствах я не нашел. Может вы можете подсказать?
Мне кажется, когда некоторые важные функции не поддерживаются из коробки, то вероятность начала повсеместного пользования, увы, мала :(
ответить
From admin Thu Jan 24 11:57:50 2019 UTC
Увы
Я не пользуюсь смартфонами, так что этот вопрос не исследовал.
ответить
From Satarsa (unverified) Sat Jan 26 21:04:00 2019 UTC
Я пользуюсь
Я пользуюсь джаббером, на сервере ejabberd, на смартфонах conversation, на компах gajim. Синхронизация всего со всем работает, общая история через сервер (всё равно он личный), группы есть, картинки передаются, даже вроде можно звонки сделать, но мне без надобности. Можно ставить транспорты в другие мессенджеры, но мне религия не позволяет. Работает отлично много лет, всё опенсорс, правда в Gentoo ставлю из оверлеев, в главном портадже очень старые версии.
ответить
☞ From Anonymous (unverified) Thu Jan 17 07:29:00 2019 UTC
ziglang
Здравствуйте! А что вы можете сказать о Zig? Язык с претензией на нишу C/C++, управление памятью осуществляется вручную, на оф. сайте примеры проектов, в том числе, для запуска на голом железе. Пока, правда, кажется сыроватым, но это вопрос времени.
ответить
From admin Thu Jan 17 09:12:24 2019 UTC
Выглядит
Выглядит неплохо.
Что резко не понравилось -- unicode в языке. Работа с бинарными форматами данных -- забота библиотек, а не языка. И, увы, из приведённых примеров не видно, насколько там в действительности библиотека отграничена от языка. Термина "стандартная библиотека" эти ребята не избежали, а зря -- не должно быть такой сущности; с другой стороны, библиотека (в том числе стандартная) там импортируется в виде объекта, имеющего имя (притом заданное пользователем), что, в принципе, демонстрирует правильное отношение к библиотечным возможностям.
В общем и целом, посмотрим, что из этого всего вырастет.
ответить
☞ From Anonymous (unverified) Tue Jan 15 10:59:00 2019 UTC
Добрый день,
Добрый день, Андрей Викторович! Скажите, пожалуйста, что, на ваш взгляд, есть большее зло при программировании на чистом Си: использование многострочных параметризованных макросов или ключевого слова inline из C99? В обработчике прерывания микроконтроллера, например, где "честный" вызов функции по тем или иным причинам нежелателен.
ответить
From admin Tue Jan 15 17:19:47 2019 UTC
Слишком толсто
1) Слово inline пришло не из стандарта, а из C++, где оно присутствовало изначально (то есть до того, как за C++ всерьёз принялись стандартизаторы). C99 лишь "согласился" с реальностью, в которой на тот момент жили едва ли не все компиляторы. Ответом на ваш вопрос, видимо, является то, что лично я слово inline использую, в том числе и в программах на чистом Си.
2) Не думаю, что для вас приходить на этот сайт было хорошей идеей.
ответить
From Anonymous (unverified) Tue Jan 15 18:40:00 2019 UTC
Простите, если
Простите, если мой вопрос показался вам оскорбительным, это ни разу не была попытка "потроллить" или как-то зацепить, с большим уважением отношусь к вам и вашей работе. Я знаю, что inline появился с C++, знаю о __inline и __inline__, с незапамятных времён существующих в gcc и иже с ним. Просто, зная ваше отношение к пресловутым "стандартам" и попыткам кровосмешения, породившим т.н. C/C++ (спасибо Неназываемой компании), как раз и хотелось узнать, что предпочли бы в таком случае именно вы - небезопасные, но существовавшие испокон веку макросы, или встраиваемые функции, которых не было в изначальной концепции языка Си (вы как-то писали здесь, что не используете namespace в C++ именно по этой причине), только и всего.
P.S. Если бы я видел, что вы используете inline в чистом Си, вопрос бы отпал сам собой. Ещё раз прошу извинить.
ответить
From admin Tue Jan 15 19:44:46 2019 UTC
принято
namespaces как раз пришли из стандарта, то есть пока их стандартизаторы не придумали, их не было. Так что причина не "эта", а другая. Const тоже из C++ пришёл, и его даже нет в книжке Кернигана и Ритчи, то есть авторы языка так и не одобрили const, но и его я использую, и не считаю, что он пришёл из стандарта. Больше того, я в некоторых (впрочем, редких) случаях использую stdint.h — но я вообще не считаю библиотеку частью языка ни в каком виде, и если есть библиотечная возможность, которая мне нравится и кажется осмысленной, то мне пофигу, что она есть в стандарте.
Ну а "кровосмешение" бывает осмысленное и бессмысленное. Const и inline -- это осмысленно. Комментарии двумя слэшами или какой-нибудь stdbool.h -- бессмысленно.
ответить
☞ From Anonymous (unverified) Sun Dec 23 21:46:00 2018 UTC
Linux для новичка
Какой дистрибутив Linux, кроме Ubuntu, вы бы посоветовали новичку?
ответить
From admin Mon Dec 24 21:04:40 2018 UTC
Сложный вопрос
У убунты есть несомненное достоинство — она ставится легко. На этом её достоинства заканчиваются.
Если не боитесть сложностей — берите вообще любой дистрибутив, лишь бы он не был чисто серверным или супер-замороченным вроде Gentoo. Ну, возможно, лучше выбрать какой-то без systemd.
ответить
From dochturow (unverified) Wed Dec 26 15:49:00 2018 UTC
Lubuntu == Ubuntu?
У Lubuntu есть достоинства, или это тоже самое что Ubuntu?
ответить
From admin Wed Dec 26 17:01:06 2018 UTC
Там другой
Там другой оконный менеджер, и он, разумеется, лучше, чем то тормозное удолбище, которое по умолчанию используется в обычной Убунте. Но в целом это тот же дистрибутив, то есть для начинающих подходит, более опытных раздражает.
ответить
From Anonymous (unverified) Wed Mar 27 09:53:00 2019 UTC
Что вы думаете
Что вы думаете о дистрибутиве fedora!Будет это лучшим выбором чем ubunta и lubuntu.
ответить
From admin Sat Mar 30 23:39:34 2019 UTC
Нет, лучшим не
Нет, лучшим не будет. Худшим, впрочем, тоже не будет. Дерьмо — оно и есть дерьмо.
ответить
From Anonymous (unverified) Fri Apr 5 07:04:00 2019 UTC
Для
Для повседневных задач, да и для обучения программированию, уверяю вас, разницы между дистрибутивами практически никакой - среднестатистический пользователь работает не с системой, а с софтом. Администрировать - да, везде есть свои заморочки. Но у Fedora есть большой плюс для начинающих пользователей - громадное количество пакетов в репозиториях, начиная от распространенных программ и заканчивая спецсофтом для научных вычислений. В то же самое время можете столкнуться с проблемой: Fedora была, есть и будет своеобразным полигоном для тестирования фич, планируемых в RHEL, поэтому радость от регулярного появления обновлений пакетов может быть омрачена, когда вам подсунут альфу/бету.
P.S. Можно дать вам совет? Лучше не пытайтесь затевать спор о преимуществах того или иного дистрибутива с человеком, который его не использует. Примерно в 80% случаев этот спор будет подобен спору с раввином о пользе свинины :)
ответить
☞ From Anonymous (unverified) Wed Dec 19 13:52:00 2018 UTC
О JavaScript
Какие возможны альтернативы JavaScript в плане снижения нагрузки на сервер со стороны клиентов и экономии трафика? Вопрос особенно актуален для крупных сайтов с большой базой данных.
ответить
From admin Fri Dec 21 12:39:00 2018 UTC
расстрелять, немедленно расстрелять (с)
Вопрос был бы корректен, если бы «решение» в виде JavaScript можно было бы считать хоть сколько-нибудь допустимым; но это не так, применение JS на сайтах по сути своей преступно. С тем же успехом подсудимый, которого отправляют в тюрьму за серию квартирных краж и разбойных нападений, мог бы требовать от судей указать ему «альтернативу кражам в плане быстрого получения большого количества денег, что особенно актуально, когда не хочется работать».
Вычислительные мощности клиентского компьютера — не ваши, и распоряжаться ими не вам. Если не хватает мощности сервера, надо либо её наращивать, что требует денег, либо умерять свои «хотелки», чтобы они соответствовали имеющимся возможностям, а не перекладывать свои проблемы на головы пользователей.
И, кстати, JS как средство экономии трафика — миф. Если бы кто-то реально хотел экономить трафик, мы не наблюдали бы (чуть менее чем везде) HTML-код, в котором собственно содержание занимает считанные проценты общего объёма. Зато именно с помощью JS хозяева сайтов со всякими видосиками и музончиками делают так, чтобы неискушённый пользователь мог посмотреть или послушать, но якобы не мог скачать (то есть сохранить себе локальную копию). Экономия такая экономия — как раз самые тяжёлые формы контента скачиваются по десять раз вместо одного.
На всякий случай отмечу, что этот ваш "вопрос" я раскрыл, потому что мне показалось интересным сформулировать на него ответ, но дальнейшие ваши сообщения здесь вряд ли пройдут премодерацию. У меня есть более интересные занятия, нежели спорить о чём-то с жабаскриптерами.
ответить
From Anonymous (unverified) Fri Mar 1 12:54:00 2019 UTC
Справедливости
Справедливости ради надо отметить, что одно полезное дело хозяева таких сайтов всё-таки делают, пусть и неосознанно - повышают компьютерную грамотность части своей аудитории. Из десяти человек четверо смиренно продолжат сидеть "на проводе", сетуя, что не везде ловит Wi-Fi/3G, трое уйдут на другой ресурс, парочка заплатит, подпишется на какую нибудь рассылку или репостнет чего-нибудь во вконтактике, а один нажмет Ctrl+U, пороется в исходнике страницы (пусть предварительно огребет трулялей на каком-нибудь форуме, выясняя, как это сделать), пошаманит с GET/POST-запросами (опять же, после того, как его окрестят м@даком на том же Lor'е за нубские вопросы), получит вожделенное "быстро бесплатно в хорошем качестве без смс и регистрации" и... через пару лет запилит аналогичный сайтик с преферансом и куртизанками, ибо профит (шутка, конечно, хотя, как известно, в ней обычно доля шутки).
Впрочем, отношения к таким "хозяевам" это не меняет ни на йоту.
ответить
From admin Fri Mar 1 13:08:07 2019 UTC
LOL что?
Из десяти человек?! Один? Вы в каком воображаемом мире поселились, простите? Перечисленное вами сделает хорошо если один из десяти тысяч.
ответить
From Anonymous (unverified) Fri Mar 1 14:51:00 2019 UTC
Ну промахнулся
Ну промахнулся на три порядка, с кем не бывает :) Может, я просто не успел разочароваться в людях...
ответить
From admin Sat Mar 2 00:13:39 2019 UTC
Попробуйте
Попробуйте позаниматься частными уроками, и потеря веры в человечество не займёт много времени.
ответить
From Anonymous (unverified) Sat Mar 2 08:01:00 2019 UTC
Мне пока группы
Мне пока группы первокурсников хватает )))
ответить
From admin Sat Mar 2 16:26:38 2019 UTC
Неееее, это не то
Когда вы ведёте занятие в группе, обычно весь видимый фидбек вам создают два-три-четыре человека из всей группы, те, кто понимает лучше всех. Остальные тщательно помалкивают, но этого не видно, поскольку вроде кажется, что отклик аудитории активный, вопросы по делу и всё такое.
На частных уроках весь этот маскирующий отклик создавать некому, и внезапно выясняется, что всё совсем не так плохо, как вы думали — всё не просто ещё хуже, всё вообще одна большая катастрофа.
ответить
☞ From Anonymous (unverified) Tue Dec 11 13:45:00 2018 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович!
Что вы думаете по поводу Google-free инициативе? А в частности по поводу предлагаемых тут https://nomoregoogle.com/ альтерантив?
Заранее спасибо за ответ
ответить
From admin Wed Dec 12 13:02:47 2018 UTC
Гм
С одной стороны, давно пора.
С другой стороны, большинство перечисленных по ссылке "альтернатив" лучше разве что тем, что они скромнее по масштабам. Вот никак люди не поймут — вся инфраструктура должна быть своя, а не «любезно предоставленная добрым дядей».
ответить
From Anonymous (unverified) Mon Dec 17 07:58:00 2018 UTC
Поясните,
Поясните, пожалуйста, что значит не «любезно предоставленная добрым дядей», а «своя»? Нужно разворачивать свой поисковик, DNS, сервис карт или приложение для перевода?
ответить
From admin Tue Dec 18 14:42:24 2018 UTC
Посмеялся
Ну, начнём с приложения для перевода. Начать с того, что автопереводом вообще не следует пользоваться — по причинам, для меня совершенно очевидным. Эти причины вам тоже пояснить? Продолжить тем, что, разумеется, программы подобного рода, если их вообще использовать, должны быть установлены локально, и если вам кажется иначе, то у вас, я бы сказал, э.... Web2.0 головного мозга, пожалуй, наиболее адекватное название.
Далее, DNS. Разумеется, в любой локальной (стационарной) сети он должен быть свой, у меня квартирную сеть обслуживает DNS-сервер, поднятый на той Raspberry Pi, которая у меня по совместительству работает маршрутизатором и NAT'ом. Времени на его развёртывание у меня ушло минут семь от силы.
Под "сервисом карт" можно понимать разные вещи; так или иначе, карты, которые используются, должны храниться локально, это для меня совершенно очевидный момент. Скачивать карты из Интернета, естественно, можно, точно так же, как бумажные карты можно в магазине покупать, а не рисовать самому. А вот строить свою работу с картами в расчёте на то, что у вас всегда есть и всегда будет доступ в Интернет и через него к халявным картам — это откровенный дебилизм.
Сложнее всего с поисковиком. Приличный поисковик стоит много ярдов баксов, тут уже никак — не всякое государство может себе такое позволить, о частных лицах я вообще молчу. И это проблема, причём проблема тут даже не в том, что поисковики реально нужны, а в том, что из-за их наличия и доступности в Интернете совершенно не развиты справочно-каталожные службы (directory services). Между тем, поиск по вхождениям текста - это совершенно не панацея, у меня бывали случаи, когда мне не удавалось отыскать текст, который я хорошо помню и который точно есть в Сети. Далеко не всегда результаты текстового поиска - это то, что нужно пользователю, в отличие от структурированных каталогов; но в большинстве случаев текстовый поиск оказывается тупо быстрее, так что все пользуются им, а в результате нормальных каталогов просто нет. Так что поисковики - это зло, причём просто как явление.
Между прочим, достаточно запретить все виды рекламы (что рано или поздно сделать придётся), и поисковики сдохнут сами собой, что, с моей точки зрения, было бы просто замечательно; но Интернет к этому явно не готов (ибо замены нет, directory services в загоне), а стоило бы.
Да, кстати, если вы сюда пришли поспорить, то пойдите поспорьте с кем-нибудь ещё.
ответить
☞ From Anonymous (unverified) Wed Nov 21 12:44:00 2018 UTC
Не могли бы вы
Не могли бы вы описать случаи, при которых используется ключевое слово volatile и const volatile? В книгах об этом пишется как-то вскользь, а в Кернигане-Ритчи даже не встречается.
ответить
From admin Wed Nov 21 17:26:56 2018 UTC
Конечно, не встречается
У Кернигана с Ритчи и const вообще-то не встречается.
Словом volatile вы сообщаете компилятору, что эту переменную может изменить кто-то, кто НЕ находится под контролем компилятора. Какой-то "внешний игрок", о существовании которого компилятор не в курсе. Реакция на это — компилятор перестаёт пытаться оптимизировать работу с такой переменной на основе собственного знания, что вроде бы сгенерённый им код эту переменную не меняет. Например, компилятор мог бы временно "слямзить" значение переменной в регистр — и если вроде бы менять её некому, то компилятор не будет переменную из памяти перезагружать в регистр каждый раз, когда она используется; а вот если она volatile — то будет, поскольку мало ли кто её там успел поменять в этой вашей памяти.
Вариант const volatile изрядно напоминает взаимоисключающие параграфы, но на самом деле встречаются ситуации, когда это может быть осмысленно. Такая область памяти запрещена к изменению _вашей_ _программой_, но при этом вы сообщаете компилятору, что эту же самую область памяти может внезапно поменять _кто-то_ _другой_. Элементарный пример: у вас есть кусочек разделяемой памяти, который вашей программе доступен только на чтение, но вы точно знаете, что есть какие-то другие программы, которые к той же разделяемой памяти обращаются на запись.
ответить
From Александр (unverified) Thu Nov 29 00:15:00 2018 UTC
Volatile и многопоточность
Прошу прощения, что вмешиваюсь в диалог. Не так давно начал знакомство с pthreads.Уважаемый Андрей Викторович, хотелось бы узнать ваше мнение по поводу целесообразности использования ключевого слова volatile в многопоточных программах. Например, имеет ли смысл объявление общих для нескольких потоков переменных с ключевым словом volatile, если используются такие примитивы синхронизации, как мьютексы? Поиск по этому вопросу привел меня к диаметрально противоположным результатам: кто-то утверждает, что volatile полезен в многопоточных программах, кто-то - что отключение оптимизации не несет в себе положительных эффектов, а может даже "замедлить" выполнение кода. Надеюсь, вы сможете пролить свет на этот вопрос. Спасибо!
ответить
From admin Thu Nov 29 10:25:00 2018 UTC
Вас на поисковиках забанили?
Вот тут https://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading обсуждение, к которому мне технически добавить нечего — здесь даже рассмотрены экзотические случаи, когда разделяемую переменную можно (!) не обвешивать мьютексом без потери корректности программы, и тогда (ага) нужен volatile.
От себя я могу добавить только одно: в природе не существует задач, для решения которых (если мы говорим о программах, работающих под управлением ОС) были бы осмысленны и адекватны треды. Следовательно, в норме этот вопрос вообще не должен возникать. В третьем томе, части VII, которая целиком посвящена параллельному программированию, этот момент неоднократно подчёркивается. То, как в действительности устроено параллельное программирование, нужно знать, во-первых, чтобы понимать, как устроено ядро (увы, в ядре ОС работа с разделяемыми данными практически неизбежна), и, во-вторых, чтобы понимать, почему ни в коем случае не следует использовать треды в обычных программах.
ответить
From Anonymous (unverified) Fri Aug 30 16:47:00 2019 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович. Прошу прощения, что поднимаю тему чуть ли не годовалой давности, но возник вот такой вопрос: volatile широко используется в программировании микроконтроллеров при работе с периферией, порты которой отображаются в память. В данном случае с "внешними игроками" все понятно: пользователь может нажать кнопку, по тому или иному интерфейсу могут прийти данные. Но нужно ли снабжать этих ключевым словом переменные, изменяемые, например, в обработчике прерывания от таймера? Скажем, какую-нибудь переменную-счетчик, инкрементируемую в обработчике прерывания и анализируемую программой в бесконечном цикле функции main, или массив с буфером кадра дисплея, также обновляемый по прерыванию от таймера?
ответить
From admin Wed Sep 4 20:21:48 2019 UTC
Очевидно же
Компилятор что, знает что-нибудь про таймер? Про то, на какую частоту выдачи прерываний этот таймер настроен? Да даже если бы и знал, как вы себе представляете предсказание того, в какой момент (во время выполнения какой машинной команды основной программы) оно таки стрясётся?
Мораль: не только обработчики прерываний (с ними вообще всё понятно), но даже обработчики юниксовых сигналов, чьё поведение намного более предсказуемо, для компилятора остаются "внешними силами".
ответить
☞ From Anonymous (unverified) Sun Nov 18 23:41:00 2018 UTC
Что лучше
Что лучше использовать при итерации цикла: ++i или i++? В Интернете не нашел однозначного ответа на этот вопрос. Вроде первый вариант выполняет на одну инструкцию меньше и для больших циклов разница в скорости прогонки будет заметной. С другой стороны, вроде современные компиляторы оптимизируют этот момент и становится без разницы как писать. Я могу, конечно, вопреки привычки использовать только первый вариант, но хотелось бы прояснить этот вопрос раз и навсегда. Спасибо.
ответить
From admin Mon Nov 19 19:54:00 2018 UTC
++
Вне контекста вопрос лишён смысла, но я попробую восстановить несколько разных контекстов. Итак, если вы пишете на чистом Си, то в роли i у вас или целочисленная переменная (не обязательно int, это может быть целое любого размера), или указатель. Поскольку речь идёт об итерации (по-видимому, цикла for), операция ++ используется ради побочного эффекта, то есть вас не волнует значение, ею порождаемое (то, чем как раз и отличаются ++x и x++). Так вот, в этой ситуации, можете быть уверены, в машинном коде окажется команда inc, причём переменную цикла ваш компилятор будет стараться разместить в регистре, так что это будет что-то вроде inc ecx. И это никак не зависит от формы, в которую вы облечёте вашу операцию, будь то ++i или i++. Или даже i+=1. Да напиши вы хоть i=i+1, машинный код получится тот же самый. Компилятор не дураки писали. При этом традиционно более популярен именно вариант i++; почему? а чёрт его поймёт.
Если даже вы пишете на Си++, но не пользуетесь мерзким подельем по имени STL, то ситуация в общем и целом будет ровно та же.
А вот если вы таки используете STL, в котором все так называемые итераторы за каким-то лядом реализуют обе формы ++, причём в сигнатуре, "соответствующей исходной семантике" (кто только эту хрень выдумал), то всё резко меняется. В форме ++i значением, возвращаемым из operator++, будет новое значение итератора, так что, как правило, этот operator++ имеет форму примерно такую:
Здесь "соблюдение семантики" ничего не стоит, ну подумаешь, возвращаем ссылку на свой собственный объект, к тому же оптимизатор это выкинет всё равно (если, конечно, метод останется inline'овым, что не факт).
Совсем другое дело -- i++. Тут нужно вернуть то значение, которое _было_, поэтому ссылка на себя не работает. Получаем вот такого монстрика:
То есть приходится сделать копию самого себя (где? а на стеке, ну где же ещё), потом её возвращать по значению (а как ещё локальную переменную вернуть). В принципе оптимизатор с этим теоретически может что-то сделать, но на практике такое громадное тело уже не будет inline'овым, так что и оптимизации нам не видать.
В итоге STL-фаги и прочие маньяки "рекомендуют" в Си++ писать всегда ++i. Вообще. Просто вот привыкнуть так писать и никогда не писать наоборот. Чтобы случайне не вызвать "не тот" метод итератора.
Что по этому поводу можно сказать -- обычно на мой сайт STL-фаги не ходят :-)
ответить
From Anonymous (unverified) Wed Nov 21 12:48:00 2018 UTC
Спасибо за
Спасибо за столь развернутые и подробные оббъяснения! Я не STL-фаг, но теперь, благодаря вашему ответу, понимаю откуда ноги растут во всей этой нелогичности и несуразности. Обидно, что эти нелогичности и несуразности распространяются в Сообщество и приводят к вопросам, подобным моему.
ответить
☞ From Ego Brain (unverified) Thu Nov 1 05:57:00 2018 UTC
Поиск по тексту книги
Наверняка вопрос поднимался, но искать здесь и вопрос и ответ крайне сложно, проще обновить тред.
Я так понимаю PDF документ был каким-то образом защищен от копирования текста и почему то от поиска по тексту (видимо это побочный эффект).
Есть ли способ, всё таки как-то получить возможность осуществлять полнотекстовый поиск?
P.S.: Замучился капчу подбирать...
ответить
From admin Sat Nov 3 09:56:43 2018 UTC
Нет
Это не "защита от копирования" — копировать файлы вы можете без технических ограничений (что не отменяет условий лицензии, но речь сейчас не об этом). Это защита от перевода в другой формат. Во всех PDF-файлах, представленных на этом сайте, намеренно сломан текстовый слой. Поиск при этом, естественно, невозможен, в файлах нет той информации, которую можно искать.
Стоит заметить, что отсутствие поиска в бумажных книгах и их отсканированных версиях (например, djvu) почему-то никому не мешает. PDF-файлы здесь выложены в открытый доступ, чтобы книги можно было прочитать, не покупая бумажный вариант. Эта цель достигнута. Целей сделать электронный вариант удобнее бумажного я себе никогда не ставил.
ответить
From Anonymous (unverified) Wed Nov 7 21:45:00 2018 UTC
djvu
Справедливости ради, стоит отметить, что отсутствие поиска в отсканированных книгах многим вполне себе мешает. Настолько, что формат djvu даже может содержать текстовый OCR-слой. Впрочем, это никак не отменяет остальные аргументы.
ответить
☞ From Anonymous (unverified) Tue Oct 16 13:44:00 2018 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович.
Очень интересно узнать ваше мнение по поводу ключевого слова auto, которое появилось в c++11. Я знаю ваше отношение к новым стандартам языка C++ и его «стандартной» библиотеке, поэтому мой вопрос касается только конкретно этой новой возможности. Я понимаю, что даже добавление одной глупости в стандарт может сделать его употребление невозможным в принципе (по идеологическим убеждениям), но может с auto все нормально? Не могли бы вы рассказать, какие вы видите беды при его использовании (если вы их видите)?
Заранее спасибо за ответ.
ответить
From admin Wed Oct 17 12:27:00 2018 UTC
Вот уж вряд ли
auto в значении "тип выводится из контекста" — это совершенно очевидный источник ошибок из тех, которые компилятор мог бы выловить при компиляции, если бы ему не мешали. Когда программист пишет тип переменной в явном виде, он тем самым указывает, чтО он имеет в виду; если инициализатор при этом имеет другой тип (мало ли, ошиблись в имени функции, или в количестве звёздочек, или ещё в чём), компилятор это поймает. Со словом auto компилятор молча введёт переменную того типа, какого получился инициализатор — например, молча сделает локальный (стековый) объект размером в пару мегабайт вместо указателя на такой объект. Ну а "неявные" шаблонные методы — это вообще за гранью добра и зла, они позволяют макакам делать то, чего они не понимают.
То есть, пользуясь вашими терминами, вот как раз одной только этой глупости (а точнее, преступного дебилизма — врочем, там всё именно такое) хватило бы, чтобы новую спецификацию отправить на свалку, и желательно вместе со всеми, кто её придумывал. Причём даже если бы эта спецификация не называлась "стандартом". Что касается стандартов, то их создателей необходимо физически уничтожать — как и всех международных террористов, вне всякой зависимости от содержания конкретного стандарта.
ответить
From Satarsa (unverified) Thu Oct 18 18:46:00 2018 UTC
А что вы
А что вы думаете про лямбды?
ответить
From admin Fri Oct 19 16:09:26 2018 UTC
Что-что, чушь собачья
Это ведь даже не функции, а функторы -- объект типа структура, для которого вводится операция вызова функции. И даже для такой дебильной реализации пришлось язык, которому уже и так "хорошо", искривить ещё больше.
Вообще любая такая возможность компилятора, которая не может работать без поддержки со стороны библиотеки — это приём, с моей точки зрения, категорически запрещённый, и тех моральных уродов, которые уже натащили таких возможностей в "стандарты" C++, очень хочется убивать, причём долго и со вкусом. Это раз. Между прочим, первой такой возможностью была, увы, обработка исключений — то есть ещё до первого "стандарта"; впрочем, там изначально была поддержка со стороны "невидимого" рантайма, а вот при появлении RTTI (и когда исключения через неё переделали) всё стало совсем плохо со всеми этими типами идентификации типов, которые описаны в хидерах.
Кроме того, замыкания (те самые "лямбды") — очевидно чужеродная возможность для компилируемого языка. То есть это вообще не следовало включать в C++, даже если бы не было других недостатков.
Ну и наконец — универсальный аргумент: любая примочка, привнесённая "стандартизаторами", не имеет права на жизнь просто потому, что пришла из "стандартов" (придумана комитетом, позиционируется как общеобязательная, etc.) И это уже безотносительно лямбд. Например, я не имею ничего против namespaces — кроме того, что их раньше не было. И не использую их только по этой причине.
ответить
From Anonymous (unverified) Sat May 25 16:55:00 2019 UTC
Из всех
Из всех новшеств, появившихся в C++ "благодаря" стандартизаторам, относительно осмысленными и полезными можно назвать разве что enum classes, не вываливающие имена констант в объемлющее пространство имен. Причем пользы от них, имхо, было бы больше в чистом Си, ибо в C++ и без них можно было писать так
и использовать RainbowColors::red и RGBColors::red без конфликта имен. Возможно, существуют где-то в природе ситуации, в которых оказываются полезными variadic templates, хотя мне доводилось наблюдать разве что "игры в функциональщину" на их основе.
Все остальное - как раз та самая одна сплошная глупость, делающая употребление стандарта невозможным не только, как вы изволили выразиться, по идеологическим убеждениям, но и по соображениям здравого смысла.
ответить
From admin Sat May 25 17:54:00 2019 UTC
Вот хоть убей,
Вот хоть убей, не понимаю, что вы полезного нашли в обеих этих сущностях. Обыкновенное захламление спецификации всем, что в голову взбредёт.
ответить
From Anonymous (unverified) Sat May 25 19:33:00 2019 UTC
При
При рассмотрении остальных сущностей обнаруживается, что они либо завязаны на трех волшебных буковках std, либо ломают прежнюю спецификацию (старый "ноль" для обозначения нулевого указателя vs новомодный nullptr, например), либо и то, и другое сразу. Выделение именно этих двух "синтаксических сахаринок" как более-менее интересных - всего лишь иллюстрация бесполезности стандартов в целом. Я не считаю их необходимыми, если что (см. "относительно полезные" и "возможно"): для первой сущности приведен аналогичный по функционалу код (ладно, без запрета неявного преобразования в целый тип, как велит стандарт), вторая - экзотика; заморочку, в которой она может пригодиться, еще нужно придумать.
ответить
☞ From Anonymous (unverified) Sat Sep 29 16:45:00 2018 UTC
Значения слов
У вас встречаються незнакомые слова в книге стоит ли их заучивать? н/р феномен этюд и т.д
ответить
From admin Mon Oct 1 19:24:36 2018 UTC
Не знаю ответа
Не знаю ответа на ваш вопрос. По моим ощущениям носители русского языка эти слова обычно всё-таки знают. Что касается русского в качестве иностранного, то вопросы об этом предмете, по-видимому, следует задавать соответствующим преподавателям, а не мне.
ответить
From Anonymous (unverified) Tue Oct 2 20:43:00 2018 UTC
Сколько весит паскаль компилятор? 20 мб?
Когда скачиваешь используя терминал.А то скачал fp-compiler и потом fpc и какая то ошибка. Использовал проприетарный nvidia наверное изза него
ответить
From admin Sat Oct 6 17:28:54 2018 UTC
Именно это вам
Именно это вам и нужно -- поставили пакет fp-compiler, используйте теперь fpc. Nvidia и прочее железо тут вообще ни при чём, компилятор на железо вообще никак не завязан (и не может быть завязан по своей сути).
ответить
☞ From Anonymous (unverified) Mon Sep 24 11:19:00 2018 UTC
Infoviolance
Здравствуйте, Андрей Викторович, есть ли ещё смысл обновлять страницу вашего канала на ютубе?
ответить
From admin Mon Sep 24 14:37:46 2018 UTC
Есть
Совсем бросать этот канал в мои планы не входило, так что смысл, несомненно, есть. Только не спрашивайте, когда там очередной ролик появится, я сам не знаю. Очень надеюсь, что скоро.
ответить
☞ From Anonymous (unverified) Sat Sep 22 14:52:00 2018 UTC
про функциональные языки программирования
Если есть препятствия чтобы поставить линукс на комп. Я могу изучать программирования с функциональных языков. Н/Р на хаскеле или clojure?
ответить
From admin Sat Sep 22 16:56:05 2018 UTC
Я думаю, вам
Я думаю, вам просто не настолько нужно изучать программирование.
ответить
From Anonymous (unverified) Sat Sep 22 17:42:00 2018 UTC
А если опасаюсь
А если опасаюсь что в процессе установке ubuntu Windows будет уничтожена, и не установиться Ubuntu. И тогда получается и без винды и без ubuntu
ответить
From admin Sun Sep 23 08:28:49 2018 UTC
Опасайтесь
Опасайтесь дальше, что я могу сказать.
Есть ещё один вариант — купите где-нибудь старый компьютер, которому лет десять. Стоимость таких компьютеров чисто символическая, а для Linux он вполне подойдёт. На основной машине замените систему, когда уже с ней нормально освоитесь.
ответить
From Anonymous (unverified) Sun Sep 23 19:35:00 2018 UTC
стоит ставить 32
стоит ставить 32 битную ? 64 не стоет?
ответить
From admin Sun Sep 23 20:02:30 2018 UTC
Почему?
У меня у самого 64-битные Linux'ы на тех машинах, где процессор 64-битный.
Вот этот комментарий я пишу с машины, процессор которой 32-битный, и на ней, естественно, система 32-битная.
ответить
From Anonymous (unverified) Sat Sep 22 18:19:00 2018 UTC
А xubuntu
А xubuntu подходит для искушенного пользователя?
ответить
From admin Sun Sep 23 08:27:09 2018 UTC
Для
Для пользователя, хорошо знающего Linux, все дистры семейства ubuntu только создают лишние помехи в работе. А вот для начинающих они, пожалуй, подходят наилучшим образом.
ответить
☞ From Anonymous (unverified) Mon Jul 2 15:24:00 2018 UTC
Фундаментальное образование для разработчика в 2018
Добрый вечер Андрей Викторович! Как вы считаете, действительно ли так необходимо фундаментальное образование (математика и алгоритмы, иногда даже физика) для современного разработчичка? Исходя из рынка вакансий, я понял, что в 2018 году самое большое количество вакансий - это веб-разработка, где, как правило, не требуется знаний математики и алгоритмов, которые обычно преподаются в вузах.
Понятно, что математика развивает мозг, учит человека думать, но, мои знакомые, которые несколько лет работают в разработчиками, утверждают, что все фундаментальные знания, которые им давали в вузе, никак им не пригодились, и они все уже давно забыли.
ответить
From admin Wed Jul 4 19:56:05 2018 UTC
Для
Для веб-разработки, разумеется, не требуется вообще ничего. Не только математики с физикой, но и мозгов как таковых. Более того, если у человека на входе в веб-разработку мозги почему-то есть (точнее, если человек с мозгами зачем-то попёрся в веб-разработку), то либо он оттуда сбежит, либо мозгов у него не станет. Деградация там происходит очень быстро.
Если говорить о программистах (а не о веб-разработчиках, которые такие же программисты, как маляры — художники), то мозги для них обязательны, вопрос лишь в их уровне. Можно ли быть программистом, не имея высшего образования? Можно, я многих таких знаю. Можно ли быть программистом, не зная математики? Можно. Можно ли быть ХОРОШИМ программистом, не зная математики? Лично для меня этот вопрос открыт, я ни одного такого не видел пока.
А что знания "непосредственно не применяются" — это детский лепет тех, кто так и не понял, зачем нужно высшее образование. NB: знания (точнее, навыки) для непосредственного применения дают разве что в техникумах и прочих ПТУ.
ответить
From Anonymous (unverified) Sat Jul 7 17:41:00 2018 UTC
>то либо он
>то либо он оттуда сбежит, либо мозгов у него не станет
То же самое касается Java Enterprise?
ответить
From admin Mon Jul 9 18:32:17 2018 UTC
не факт
Лично у меня Java вызывает здоровое отвращение, но я не могу с уверенностью сказать, что работа на этом языке неминуемо ведёт к деградации. Не всегда. Временами — безусловно, но не всегда.
ответить
From Alex Klonov (unverified) Sat Aug 25 09:38:00 2018 UTC
Почему?
Почему Джава вызывает омерзение? Потому, что проприетарный? Так ведь есть опенсорсные реализации. Вот Столлман например считает Джаву неплохим развитием С. Чем она вам не нравится, объектно-ориентируемостью или еще чем?
ответить
From admin Sat Sep 1 17:29:32 2018 UTC
Столлман тут ни при чём
Мне, честно говоря, фиолетово, что там думает Столлман по поводу того или иного языка программирования, как программист этот ваш Столлман, мягко говоря, вызывает сомнительные ощущения (да и как общественный деятель в последнее время тоже, увы).
Первый, главный, фатальный и принципиально неустранимый «недостаток» Джавы — сочетание императивного программирования со сборкой мусора. Вообще не понимаю, как языки такого сорта можно воспринимать всерьёз.
Ну а дальше всякая фигня по мелочи. Полуинтерпретируемое исполнение (здравствуй, JVM на машине конечного пользователя), отсутствие различия между объектом и ссылкой на него, все методы виртуальные (не волнуйтесь, я знаю про final, но это надо чётко понимать, что делаешь), общий предок для всех объектов, рефлексия, да мало ли там ещё закидонов, которые заведомо превращают этот язычок в чучелко для custom business apps, полностью исключая какое бы то ни было его серьёзное использование. NB: мне бы хватило каждого из этих пунктов по отдельности, чтобы об использовании такого языка даже не помышлять.
ответить
From Alex Klonov (unverified) Mon Sep 3 17:56:00 2018 UTC
Императивность и сборка мусора
Скажите, а в чем заключается проблема сочетания в языке императивности и одновременно сборки мусора? Возможные утечки памяти? Но ведь и в функциональных языках с ленивыми вычислениями они возможны при рекурсивных вызовах. Поясните пожалуйста, если вам это не трудно.
ответить
From admin Wed Sep 5 22:27:48 2018 UTC
Вы тут сами с собой поговорить решили?
пояснение вот здесь: http://www.stolyarov.info/pvt/anti_c#comment-129
если вдруг оно окажется непонятно (что вполне ожидаемо, когда пытаешься разговаривать с джавистом, питонистом и т.п.), объясняю ещё раз: единственное, что оправдывает существование императивного программирования — это то, что программы в итоге выполняются на реальном компьютере, который построен как машина фон Неймана. Ни на Лиспе, ни на Хаскеле, ни даже на Форте мы никогда не выжмем из машины всё, на что она способна. Любая более-менее толстая прослойка между программой и машиной лишает нас всякой возможности выжимать машину как лимон. Ну а если нас устраивает использовать возможности машины на 15%, противоестественное фоннеймановское (a.k.a. императивное) программирование лишено смысла. Как следствие, тот же Clojure (есличо, он на JVM как раз сделан) имеет право жить, поскольку он не императивен ни анфас, ни в профиль; но Java — нет.
Можно и иначе сказать: если нас устраивает сборка мусора, то от базового вычислителя мы уже бесконечно далеки (нет никакой сборки мусора на машине фон Неймана), а если мы уже всё равно далеки, то продолжать с маниакальной настойчивостью использовать сугубо фоннеймановские присваивания и циклы — это слишком тупо, чтобы это было можно.
И вот что, свою интереснейшую беседу с самим собой я вам настоятельно рекомендую продолжить в другом месте.
ответить
From Anonymous (unverified) Mon Jul 9 17:55:00 2018 UTC
Спасибо за ваше
Спасибо за ваше мнение!
Тогда можно еще один вопрос, в какую область можно пойти начинающему разработчику (закончил матмех СПБГУ).
Стоит ли обратить внимание на компьютерное зрение и машинное обучение?
ответить
From admin Mon Jul 9 18:30:28 2018 UTC
Возможностей масса
Стоит обратить внимание на любые области, где пишут программы, а не скриптики на пару сотен строчек (пусть даже этих скриптиков самих нужно несколько сот на проект).
Вообще ваш вопрос выглядит как-то искусственно. Поспрашивайте знакомых, однокурсников и т.п., кто где работает и чем занимается, и не нужен ли им там программист. Программистов реально дефицит, многие с удовольствием берут на работу вчерашних студентов без опыта. Только от веб-разработки держитесь подальше, иначе есть риск так в ней на всю жизнь и остаться. Ещё я рекомендовал бы по возможности воздержаться от работы в банках, хотя это уже не столь фатально — там деградация хотя и происходит, но довольно медленно.
ответить
From lake (unverified) Sat Sep 4 17:17:00 2021 UTC
Наверное вы меня спасли
Пусть это и старое обсуждение.
Подумывал пойти в бэкенд. Увидел какие там языки пришло какое-то разочарование. Даже думал что вы под вебом подразумевали только вёрстку, а оказывается оно все.
Видимо моё желание немедленно начать зарабатывать надо отложить на потом. Всё таки мы студенты люди молодые надо брать планку повыше. Пока время есть и мозги работают надо учиться изо всех сил.
ответить
From Anonymous (unverified) Tue Aug 21 07:12:00 2018 UTC
А что вы
А что вы называете веб-разработкой?
Формочки делать на Javascript, или распределённый отказоустойчивый бэкенд, чтобы эти формочки работали? Или всё вместе?
ответить
From admin Sat Sep 1 17:19:51 2018 UTC
Конечно, всё вместе!
Разумеется, всё вместе, и странно, что тут возникли сомнения. Но у меня есть встречный вопрос: вы всерьёз полагаете, что применение разных модных слов вроде вот этого вот «распределённый отказоустойчивый бэкенд» способно предохранить от деградации мозга? (если что, тема распределённых и отказоустойчивых раскрыта полностью с появлением DNS три с лишним десятка лет назад).
И вот что, если вы участвуете (неважно в каком качестве) в проекте, результатом которого становятся "формочки на Javascript" (и вообще что угодно с применением JS, webAssembly, WebGl и любого другого исполнения в браузере), то не будете ли вы столь любезны освободить мой сайт от своего присутствия? Пойдите куда-нибудь ещё, в Интернете достаточно мест даже для тех, кто этот Интернет планомерно превращает в кучу дерьма.
ответить
From Alex Klonov (unverified) Mon Sep 3 18:00:00 2018 UTC
Исторические причины
А Вы не в курсе исторических причин вообще того подхода, когда код исполняется в браузере? Что это было? Целенаправленное вредительство? Или концепция задумывалась как безусловное благо? Или может просто недостаточно продумали?
ответить
From admin Wed Sep 5 22:43:25 2018 UTC
По-моему, тут всё достаточно очевидно
Изначально эта "технология" (в очень жирных кавычках, поскольку с таким же успехом можно считать технологией забивание шурупов в доску кирпичом по причине отсутствия молотка и отвёртки) придумана дебилами по дебильным причинам, то есть это не "недостаточно продумали", это гораздо хуже: идиот на дебиле сидит и кретином погоняет, как, собственно, и устроена практически вся современная IT-индустрия. Коротко говоря, прежде чем начинать натягивать сову на глобус, следует хотя бы допустить мысль, что вообще-то сову на глобус натягивать не надо; в данном случае — не надо было пытаться использовать веб как "решение для всех мировых проблем".
Так или иначе, на нынешнем этапе всё гораздо хуже. Все новомодные "технологии" в применении к вебу активней всех форсит Google, он же завязывается в узел, чтобы только заставить всех пользователей в мире регулярно менять версию браузера (замечу, браузеры при этом деградируют, а не улучшаются — mozilla вот уже настолько потяжелела своим гуём, что её стало невозможно (!) гонять через ssh даже на локальной машине, лично мне пришлось перейти на palemoon). Тот же Google с превеликим удовольствием всем желающим предоставляет всевозможные повязанные на JS "сервисы" вроде google-analytics и т.п. Ну что же, Google понять можно: им очень хочется присутствовать в каждом компьютере мира, и самое забавное, что им это уже фактически удалось, всякие одиночки вроде меня не в счёт — погоды не делают.
В ответ на возможный (и достаточно часто задаваемый) вопрос "ну и чО" предлагаю вот эту ссылочку: https://mediamera.ru/post/1029 — и категорически отказываюсь продолжать обсуждение, пока текст по ссылке не будет прочтён целиком. Впрочем, всё на самом деле гораздо хуже: Google — это первая со времён Александра Македонского серьёзная заявка на власть над всем миром.
ответить
From Anonymous (unverified) Thu Sep 6 10:22:00 2018 UTC
Андрей
Андрей Викторович, в связи с выше упомянутой статьей, можете поделиться какими-нибудь правилами использования интернета: какие программы использовать, а какие нет, какой поисковик использовать, какой телефон приобретать? Заранее благодарю за ответ. И большое спасибо Вам за ваши книги.
ответить
From admin Fri Sep 7 22:59:37 2018 UTC
Смешно, да
Может быть, вам ещё написать пособие «Как жить на свете» в пятидесяти томах? (в меньшее количество томов тут точно не уложиться)
ответить
☞ From Anonymous (unverified) Sat Jun 23 17:27:00 2018 UTC
А что должен знать начинающий системный администратор?
Добрый день, Андрей Викторович! Хотел Вас спросить как человека, имеющего опыт в системном администрировании. Что, по-вашему, должен знать и уметь начинающий сисадмин? Есть ли какой-то теоретический минимум, который показывает хорошего специалиста от плохого (как, например, знание Си любому программисту, который хочет стать профессионалом)? Или же в этой сфере всё слишком размыто, чтобы однозначно определить квалификацию человека? Мне это интересно, т.к. я задумываюсь выбрать именно эту область. Ваш профессиональный совет будет очень полезен! Заранее спасибо!
ответить
From admin Tue Jun 26 11:21:49 2018 UTC
Сложный вопрос
Я бы сказал, что сисадмину надо скорее не знать, а уметь. А список этих умений очевидным образом зависит от того, что конкретно предстоит администрить. Сеть предприятия, сеть банка, сеть интернет-провайдера, инфраструктура хостингового провайдера, сеть дэйта-центра — между ними различий больше, чем общего.
Если речь идёт о базе, "без которой никуда" — ну, поставить незнакомый дистр линукса можете? А FreeBSD? А дальше с ними работать через сеть удалённо в терминальном режиме? А поднять на них веб-сервер? А почтовую систему поднять? А воткнуть в машину вторую сетёвку и превратить её в маршрутизатор? А сетку из десятка машин собрать? А NAT настроить? А порт статический пробросить (через NAT снаружи внутрь)? А бекапы автоматические заточить?
Конечно, это только начало списка, и из него может потребоваться далеко не всё, зато к бабушке не ходи, что потребуется прорва того, что в список не вошло. Поэтому самое главное умение для сисадмина — самостоятельно извлекать информацию из окружающего мира (да хоть бы и из гугла, хотя я предпочитаю duckduckgo) и немедленно её применять на практике. Без этого точно ни черта не выйдет.
ответить
☞ From Anonymous (unverified) Mon Jun 4 06:20:00 2018 UTC
Парадигмы программирования
Добрый день, Андрей Викторович. Увидел на вашем сайте, что Вы преподаете предмет "Парадигмы программирования". Ознакомился с темами, которые затрагиваются, и мне стало интересно, есть ли материал этих лекций в свободном доступе? Если нет, то по каким книгам Вы преподаете данный предмет студентам?
ответить
From admin Mon Jun 4 07:28:35 2018 UTC
Увы
Этого материала нет не только в свободном, но и вообще в каком бы то ни было доступе. Чтобы он — материал то есть — был, его нужно написать, т.е. воплотить в виде текста. Надеюсь это в ближайшее время сделать, т.к. это планируется в качестве части четвёртого тома.
Что касается книг, то к моему курсу прилагается, конечно, список литературы, но там можно найти далеко не всё из того, что говорится на лекциях.
ответить
☞ From Anonymous (unverified) Thu May 31 04:47:00 2018 UTC
Обязательно ли учить С++ ?
Добрый день, Андрей Викторович! Я изучаю программирование по Вашим книгам. И у меня вопрос. Обязательно ли учить С++ после С? Или в схеме Pascal - Assembler - C после С можно вставить другой высокоуровневый язык с ООП (тот же Java, к примеру).
ответить
From admin Sat Jun 2 18:10:46 2018 UTC
Нет, это уж точно не обязательно
Получив опыт Паскаля, языка ассемблера и чистого Си, вы, скорее всего, сможете сами понять, куда двигаться дальше. Лично я джаву всерьёз воспринимать не могу, но это, возможно, мои проблемы :-)
ответить
☞ From Anonymous (unverified) Fri May 25 08:23:00 2018 UTC
Олимпиадное программирование
Добрый день, Андрей Викторович. Я являюсь начинающим программистом, занимаюсь по Вашим книгам. И вот у меня возник вопрос касательно олимпиадного программирования. Недавно я наткнулся на мнение, что к олимпиадному программированию не стоит готовиться совсем, т.к. "олимпиадное программирование применяет совершенно другие приёмы, чем программирование длительных проектов, которые только и встречаются в обычной жизни". Когда я впервые увидел те задачи, которые решаются на таких соревнованиях, то понял, что мне они не под силу и что стоит сделать упор на них для практики своих способностей. Собственно сам вопрос. Насколько эффективно решать задачи из ОП для начинающего? Разве это не является полезной практикой для мозгов? Заранее спасибо!
ответить
From admin Sat May 26 20:39:00 2018 UTC
Всё ещё хуже
Олимпиадное программирование создаёт такие привычки, что после этого работать программистом (писать программы за деньги) практически нереально, да и вообще совершенно невозможно писать качественные программы. Некоторым бывшим олимпиадникам удаётся преодолеть эту свою "олимпиадность", но далеко не всем.
Короче говоря, если хотите стать программистом, то олимпиадное программирование вам категорически противопоказано. Была б на то моя воля, я бы олимпиады по программированию вообще запретил.
ответить
From Anonymous (unverified) Sat May 26 21:33:00 2018 UTC
Поискав в
Поискав в интернете информацию по данной теме, я понял, что всё не так хорошо, как мне казалось раньше. Ваш ответ тоже меня заставил задуматься. А что вы думаете о собеседованиях в компании, где кандидатам предлагают задания как раз таки из ОП? Считаете ли вы это плохим способом выявления кандидатом на работу? Конечно, в моем положении пока рано задумываться об интервью на работу, но всё же хочется быть подготовленным)
ответить
From admin Sun May 27 08:13:00 2018 UTC
Сложный вопрос
Реальные олимпиадные задачи предлагать на собеседованиях может себе позволить разве что Google, остальным программистов и так не хватает, чтобы от них ещё и такого ждать. Ну а в Google лично я бы работать не хотел.
С другой стороны, сами по себе олимпиадные задачи можно рассматривать как отвлечённые головоломки; решать их, в принципе, полезно — это мозг стимулирует. Главное — не пытаться реально участвовать в олимпиадах или готовиться к ним, то есть не решать эти задачи на время.
ответить
From Anonymous (unverified) Wed May 30 08:27:00 2018 UTC
А дальнейшее
А дальнейшее трудоустройство?
Никогда не слышал про всеросников по информатике, которые не могут себе найти работу по специальности.
ответить
From admin Sat Jun 2 18:22:00 2018 UTC
И что?
Я вам больше скажу, я не могу в современных условиях вообще представить себе человека, который может написать программу на сотню строчек на любом самом голимом язычке вроде VB или PHP, и чтобы он не смог найти работу "по специальности". Дефицит-с. Острая нехватка программистов.
Да и спрос на "накатать тяп-ляп-чтоб-хоть-как-то-работало", как ни странно, тоже есть. Не вижу, чтобы это всё как-то опровергало сказанное мной: если эти люди и находят работу, то уж точно не благодаря участию во всеросах, а, напротив, вопреки ему.
ответить
From Anonymous (unverified) Fri Mar 1 10:55:00 2019 UTC
Вы против
Вы против именно олимпиад по программированию или против олимпиад и в других сферах?
ответить
From admin Sat Mar 2 00:11:33 2019 UTC
Я ничего не
Я ничего не имею против олимпиад по математике и физике. Про все остальные сферы сказать ничего не могу — не в курсе.
ответить
☞ From Anonymous (unverified) Sat May 12 18:24:00 2018 UTC
Блокировка рекламы
Добрый день, Андрей Викторович! Недавно наткнулся на приложение для блокировки рекламы Pi-hole, созданное командой энтузиастов. По их словам, они разрабатывают так называемую «чёрную дыру для рекламщиков". Мне это показалось очень интересным, поэтому решил поделиться с Вами. Их официальный сайт: url removed. Их идеи мне напомнили то,что Вы писали о рекламе и говорили в роликах по infoviolence. И меня, как ненавистника навязчивой рекламу и таргетинга, их проект очень заинтересовал. Надеюсь, что и Вас это тоже заинтересует.
ответить
From admin Wed May 16 16:44:11 2018 UTC
Не вижу ничего
Не вижу ничего принципиально нового, во всяком случае на первый взгляд это обычная прокся. ACL'ы для того же squid'а, режущие рекламу, мне попадались ещё в конце прошлого века :-)
ответить
☞ From Anonymous (unverified) Wed May 9 01:24:00 2018 UTC
Вопрос про информационно свободное общество
Добрый день, прочитал Вашу диссертацию по философии и у меня возник вопрос: как в информационно свободном обществе начать личный диалог к примеру с Вами? Одно дело когда вы на сайте публично размещаете свой email для связи(тем самым давая согласие на получение по этому адресу писем связанных с тем, что Вы тут публикуете), другое дело, когда(теоретически) Вас встречаешь на улице и хочется задать вопрос лично(на что Вы получается согласия не давали)?
Правда ли что, к примеру, попытка просто побеседовать с незнакомым человеком на улице будет являться информационным насилием на ним?
ответить
From admin Wed May 16 15:52:11 2018 UTC
как в
как в информационно свободном обществе начать личный диалог к примеру с Вами?
Вы сами дали ответ на свой вопрос:
Одно дело когда вы на сайте публично размещаете свой email для связи(тем самым давая согласие на получение по этому адресу писем связанных с тем, что Вы тут публикуете)
Именно так, причём открытая публикация адреса, да и вообще любое (не обязательно открытое) сообщение своего адреса ещё не означает, что таким адресом можно воспользоваться для чего угодно. Как правило, из контекста понятно, с какой целью адрес предоставлен, если же непонятно — следует исходить из наименее удобного для себя предположения.
другое дело, когда(теоретически) Вас встречаешь на улице и хочется задать вопрос лично(на что Вы получается согласия не давали)?
Совершенно верно, я согласия не давал ко мне на улице приставать с вопросами. Если кому-то "хочется", то это его проблема, не моя.
Правда ли что, к примеру, попытка просто побеседовать с незнакомым человеком на улице будет являться информационным насилием на ним?
Да, естественно. Заведомо. Я вам больше скажу, я глубоко убеждён, что в отдельных случаях (сильно не во всех, конечно) в ответ на попытку навязать коммуникацию на улице должно быть официально разрешено открыть огонь из огнестрельного оружия на поражение.
ответить
☞ From Anonymous (unverified) Fri Apr 20 10:40:00 2018 UTC
Блокировки
Андрей Викторович, не могли бы вы рассказать ваше мнение по поводу ситуации с Телеграмом и действий Роскомнадзора? Очень интересно услышать ваше мнение.
ответить
From admin Sat Jun 2 18:35:00 2018 UTC
У этой палки два конца
С одной стороны, я этот ваш телеграм в гробу видал вместе с его создателем -- как, впрочем, и "вконтактик", и "фейсбучек", и всякие твиттеры и инстаграмы, то есть вообще любые коммуникационные среды, имеющие (как целое) владельца.
С другой стороны, не каждый день можно насладиться таким шикарным шоу — государство с размаху село задницей в лужу, где и продолжает сидеть, делая вид, что так и надо, и вообще это никакая не лужа.
В общем, тот случай, когда я искренне и от всей души желаю сдохнуть обеим сторонам конфликта, хотя и по совершенно разным причинам.
ответить
☞ From Anonymous (unverified) Tue Feb 27 19:15:00 2018 UTC
Infoviolence
Андрей Виктович, давно не было новых видео в Вашем блоге об информационном насилии. Планируете ли продолжать выпускать ролики или уже высказали все что хотели?
Тема интересная, может что почитать посоветуете?
ответить
From admin Wed Feb 28 11:28:48 2018 UTC
Надеюсь, что не всё так плохо :-)
Я планирую вернуться к выпуску роликов для этого канала в обозримом будущем. На самом деле уже давно надо было, но есть техническая проблема: имеющееся у меня железо банально не тянет даже простейший видеомонтаж :-)
Что касается "почитать" — насколько мне известно, кроме меня никто информационное насилие не рассматривал в таком значении термина. Так что кроме своего диссера, пожалуй, мне нечего предложить на эту тему. Диссер, если что, тут: http://www.croco.net/croco/papers/stolyarov_philosophy_thesis_infofreedom.pdf
ответить
☞ From Anonymous (unverified) Sat Feb 24 18:37:00 2018 UTC
microsoft и opensource
Добрый день, Андрей Викторович!
Что вы думаете о подвижках Microsoft к опенсорс сообществу? В частности факту открывания исходников clr, jit-компилятора, сборщика мусора и прочего для новой итерации .net которая core, а также слогану "microsoft loves linux" и вообще новой "политике партии" microsoft.
Смягчает это ваше к ним отношение или нет?
PS капча очень сложная
ответить
From admin Sun Feb 25 11:06:44 2018 UTC
Как мы знаем, в
Как мы знаем, в 1861 году в Российской Империи было отменено крепостное право; часто можно видеть, как этот (безусловно правильный) шаг вменяют в заслугу тогдашнему царю Александру II. К чему это я? А к тому, что не отменить крепостничество в России было объективно невозможно: промышленности требовались рабочие, ну и прочее в таком духе. Если там где-то и есть "заслуга" царей, включая Александра, то она разве что в том, что отживший и изживший себя феодализм продержался в России лет на сто дольше, чем ему объективно стоило.
Вот примерно такова же ситуация и с M$. Поддерживать своё проприетарное ядро ОС силами одной конторы в современных условиях невозможно, Apple эту фишку просекли на рубеже веков, так что MacOS X внезапно оказалась представителем семейства юниксовых. Вот теперь допёрло и до мелкомягких.
И нет, моего отношения к ним это не смягчает, даже наоборот. Билл Гейтс и его контора обокрали цивилизацию на пару десятков лет развития. Логика развития мира устроена так, что они должны были сдохнуть, но вместо этого они, чего доброго, уморят Linux. Всё, к чему эти мрази прикасаются, превращается в дерьмо, давно пора это понять.
ответить
☞ From Anonymous (unverified) Mon Jan 22 17:00:00 2018 UTC
Что думаете о современном софте
Здравствуйте, Андрей Викторович. Есть мнение, что совремменый софт - это отстой (вот даже книга есть, сам правда не читал https://www.amazon.com/Why-Software-Sucks-What-About/dp/0321466756). Что думаете об этом вы? Стоит ли пробовать идти против системы (писать что-нибудь своё, проводить время в поисках лучшего и т.п.) или это не стоит потерянного времени. Также хотелось бы узнать ваше мнение о данном ресурсе, где люди делятся вроде как хорошим софтом https://suckless.org/ и ещё одним, где есть некоторые рекомендации http://harmful.cat-v.org/software/.
ответить
From admin Sun Feb 4 07:51:14 2018 UTC
Всё в одну кучу -- как-то странно получилось :-)
Начать с книги Платта. Конечно, весь современный софт именно что sucks, только не факт, что именно по тем причинам, про которые говорит Платт. Если на то пошло, мне больше нравится книга Алана Купера "Психбольница в руках пациентов" (переведена на русский, в инете представлена в изобилии) — вроде она про то же (usability), но как-то более конструктивно, что-ли.
Заметим, следующая ваша ссылка — suckless — не только не про то, но даже наоборот. "Задолбал софт для идиотов, мы пишем только для умных". В принципе, это тоже весьма правильный подход: у меня временами складывается ощущение, что, не зная, как сделать софт удобным для сферического "конечного пользователя" в вакууме, софтописальщики считают своим долгом сделать софт НЕудобным для профессионалов и потом похваляться тем, что якобы их софт написан не для всяких там программистов, а для пользователей. Чушь, разумеется.
Третья ссылка самая прикольная :-) Там вот прямо на первой странице список вида "что на что заменить". Далеко не со всеми пунктами я согласен, но больше всего мне понравилось в конце
Harmful things that are so superfluous and useless that require no alternative:
Unicode BoM in UTF-8.
IDN.
Dynamic linking, in particular in Unix systems.
PoSix locales.
Adobe Flash.
GNOME and KDE.
Boost.
UML.
вот тут я согласен с каждым из пунктов :-) то есть буквально с каждым.
ответить
☞ From Anonymous (unverified) Fri Jan 5 14:15:00 2018 UTC
3 вопроса
Доброго времени суток, Андрей Викторович!
Как вы думаете, актуальны ли книги Криса Касперски по сей день(если нет, то какие есть альтернативы)?
Каким дистрибутивом Unix вы пользуетесь и что порекомендуете после Ubuntu?
И ещё вопрос. Пожалуйста, объясните очередному неофиту, почему вы считаете сборку мусора мракобесием?
ответить
From admin Mon Jan 8 14:43:06 2018 UTC
какие вопросы, такие ответы
С одной стороны, я совершенно не вижу, когда бы книгам Криса Касперски успеть утратить актуальность. С другой стороны, насколько эти книги адекватны описываемой предметной области и потребностям целевой аудитории — судить не возьмусь, для этого надо как минимум быть профессионалом в рассматриваемой предметной области, т.е. в данном случае — быть хакером; увы, я не хакер.
По поводу "дистрибутива Unix" (гм...), ну в общем если интересно, то на серверах у меня Openwall, а на домашнюю машину последнее, что я взгромождал — Devuan. Я при этом совершенно не уверен, что Devuan сейчас прямо-таки правильный выбор, но на то, чтобы поставить десяток разных дистров без systemd, попробовать с каждым из них поработать и выбрать лучший, нужна реально прорва времени, а результаты таких "исследований" за пару лет устаревают (вот кто бы мог подумать, что CentOS скурвится — а поди ж ты, переползли тоже на systemd). Короче говоря, нету у меня такого количества лишнего времени.
Что касается сборки мусора, то мракобесием я считаю не её саму как таковую, а её сочетание с императивным программированием. См.тут: http://www.stolyarov.info/pvt/anti_c#comment-129 и тут http://www.stolyarov.info/books/programming_intro/vol2#comment-1171
ответить
From Игорь (unverified) Tue Jan 30 06:15:00 2018 UTC
Андрей
Андрей Викторович, а вариант использования FreeBSD как рабочей лошадки не рассматриваете? Разработчики там вроде шибко консервативные и намёков на системд нет.
ответить
From admin Sun Feb 4 04:28:11 2018 UTC
Конечно, рассматриваю
Несомненно, я этот вариант держу в уме. Если мир Linux окончательно схлопнется, то и выходов других не останется.
ответить
☞ From Anonymous (unverified) Thu Dec 14 04:31:00 2017 UTC
Математико-юмористическая статейка
Андрей Викторович, вы человек умный и серьёзный, но думаю не лишены отменного чуства юмора. Посему осмелюсь предложить вам на прочтение забавную статью на математическую тематику.
[URL removed]
Как я понял из своих наблюдений - технарям смешно, а не технарям не смешно :)
ответить
From admin Sat Dec 16 00:20:19 2017 UTC
Прикольно
Только ссылаться всё же лучше на оригинал, благо запрос Гуглу, дословно повторяющий заглавие статейки, эту ссылку выдаёт первой:
https://sly2m.livejournal.com/620353.html?nojs=1
Hint: перед тем, как кликнуть по ссылке, выключите в браузере JS. Тогда вы не увидите там рекламы.
А вообще спасибо — в поисках оригинала текста я обратил внимание на этот блог как таковой, так вот его можно читать не отрываясь, пока не кончится. Всем рекомендую. Жаль только, что он в ЖЖ. А автор, с одной стороны, в одном из постов возмущается, что реклама от СУПа добралась даже до платных аккаунтов, а с другой -- в каком-то старом посте превозносит Носика, а в более новом -- сокрушается, что тот помер.
ответить
☞ From Anonymous (unverified) Thu Nov 9 17:36:00 2017 UTC
Racket
Здравствуйте, Андрей Викторович.
Меня интересует Ваше отношение к языку Racket и его инфраструктуре. Расскажите, пожалуйста.
ответить
From admin Fri Nov 10 10:56:38 2017 UTC
Насколько я
Насколько я понимаю, это бывшая PLT Scheme, а переименовали её, чтобы дистанцироваться от дебильного R6RS. Ну, я в принципе против лиспов и схем ничего не имею, против дистанцирования от "стандартов" — тем более. С другой стороны, беглый взгляд на список "новых возможностей" заставляет подозревать, что на выходе получился очередной монстр.
Впрочем, однозначного мнения я здесь высказать не могу, для этого её надо поставить и попробовать, а на это у меня нет ни времени, ни, главное, желания.
ответить
From Anonymous (unverified) Mon Mar 5 18:45:00 2018 UTC
О, а можно чуть
О, а можно чуть поподробнее, чем дебилен R6RS?
Ну, то есть, мне интересно, дебильнее ли R6RS, чем R5RS (или R7RS), и если да, то чем именно.
Спасибо.
ответить
From admin Wed Mar 7 19:55:13 2018 UTC
"Чуть"
"Чуть" подробнее тут не получится, более-менее адекватныйответ на этот вопрос потребует потратить на него часа полтора-два, а то и больше. Извините, сейчас у меня такой возможности нет. Если же говорить кратко, то ответ будет простой: а вы попробуйте почитать первоисточники. И тот, и другой текст свободно доступны в Интернете.
А если нет времени читать, то хотя бы сравните их объём.
ответить
From Anonymous (unverified) Thu Mar 8 14:59:00 2018 UTC
Ага, спасибо.То
Ага, спасибо.
То есть, я так понимаю, R7RS можно, вообще говоря, считать "возвратом к адекватности" после дебильного R6RS.
ответить
From admin Sat Mar 10 19:31:44 2018 UTC
Насколько я
Насколько я понимаю, нельзя. Последней адекватной спецификацией Scheme был R5RS.
ответить
From Anonymous (unverified) Sun Mar 11 15:12:00 2018 UTC
Гм, а можно
Гм, а можно пару-тройку ключевых слов по поводу неадекватности R7RS? А дальше я уже сам поищу-подумаю.
Насколько я понимаю, создатели R7RS как раз таки пытались уйти от неадекватности R6RS. Выходит, попытка не совсем удалась?
ответить
From admin Mon Mar 12 20:54:00 2018 UTC
R7RS
R7RS — это попытка сделать "и нашим и вашим", результатом которой стало две совершенно разные спецификации в одной обложке. Типа, вот такая вот Scheme у нас будет для тех, кто не любит монстров, а вот такая - для тех, кто монстров любит. Там в преамбуле утверждается, что к первым относятся те, кто Scheme использует в академической среде для обучения, а ко вторым — типа, индустриалы.
Комитеты по сути своей всегда вредоносны, а когда комитет ещё и раскалывается надвое, но прекращать свою деятельность в качестве "единого целого" всё равно не желает — это уже даже не клиника, это ещё хуже.
Собственно говоря, никакой "попытки уйти от неадекватности" там не было, была попытка хоть как-то заткнуть тех, кто об этой неадекватности заговорил.
ответить
From Anonymous (unverified) Tue Mar 13 16:15:00 2018 UTC
Ясно,
Ясно, спасибо.
Кстати, на фоне всего этого, что думаете про Common Lisp и его стандарты?
ответить
From admin Fri Mar 16 17:35:14 2018 UTC
А что тут думать?
Собственно, Common Lisp — это и есть стандарт, называется он так; в CLTL многократно упоминаются результаты голосования соответствующего комитета. Судя по тому, что происходит с его реализациями, этого бегемота уже более-менее настигла заслуженная судьба :-) Проблема в том, что при этом нестандартных лиспов я давно уже не видел, так что, похоже, вместе с этим стандартом мы можем лишиться Лиспа как явления, и это печально. Со стороны выглядит так, что нежизнеспособный монстр сначала всех убедил, что тут только он ТруЪ, а остальные типа фигня, ибо не соответствуют, видите ли, стандарту; ну а потом сдох, ибо монстр.
ответить
☞ From Антон (unverified) Mon Nov 6 23:06:00 2017 UTC
1% для JS
Здравствуйте, Андрей Викторович!
А каков тот самый ничтожный процент случаев, когда сабж становится неизбежным злом и обойтись без него никак?
ответить
From admin Tue Nov 7 20:13:30 2017 UTC
Ноль
Если нужно что-то выполнять на машине клиента, то для этого надо сделать нормальное эффективное приложение (притом, естественно, свободно распространяемое и в открытых исходниках), а не издеваться над браузерами.
ответить
☞ From Anonymous (unverified) Mon Oct 30 06:32:00 2017 UTC
Функциональное программирование
Здравствуйте,Андрей Викторович! Что вы думаете о письме Дейкстры, где говорится, что новичков стоит обучать функциональным языкам программирования? Я сам новичок в этой области, обучаюсь по вашим книгам и недавно наткнулся на перевод письма,и мне стало интересно,насколько данный подход эффективен. Спасибо за ваш труд!
ответить
From admin Mon Nov 6 08:36:28 2017 UTC
Известное дело
И точка зрения далеко не нова, и SICP был на Схеме основан, и, больше того, у меня есть примеры студентов, которым императивщина покоряться не хотела, а рекурсивное программирование они осваивали с полпинка (и потом уже переходили на императивщину).
Проблема тут в том, что, во-первых, столько преподавателей, способных адекватно рассказывать фунциональное программирование, нет и не предвидится. Во-вторых, на той или иной стадии обучения совершенно неизбежен чистый Си, а значит — неизбежен и Паскаль как средство освоения указателей; то есть это надо не заменять что-то в существующих программах обучения, а добавлять функциональщину в начало, то есть брать откуда-то минимум ещё один семестр.
В общем, скорее на утопию похоже, хотя выглядит хорошо.
ответить
☞ From Rhard (unverified) Fri Oct 13 10:01:00 2017 UTC
Чем так плох systemd?
Здравствуйте! Очень интересно, чем так сильно systemd проигрывает тому же openrc, в чем его недостатки или "вредоностность", кроме неюниксвейности? Сам перешел недавно с archlinux (systemd) на gentoo (OpenRC), особой разницы пока не понял, кроме того, что openrc не такая "изкоробочная", как systemd. И чем обусловлена массовая миграция на этот самый systemd?
ответить
From admin Sun Oct 15 08:01:00 2017 UTC
Лично для меня
Лично для меня systemd в основном плох (фатально) ровно одним: это, я бы сказал, хрестоматийный пример ньюфажства. Любая "новая технология" имеет право на существование лишь при соблюдении определённых условий; в частности, она должна решать реально существующие проблемы, которые старая технология решить не может. В противном случае трата времени на освоение новой технологии бессмысленна; а бессмысленно тратить время я себе позволить не могу, жизнь для этого слишком коротка.
Так вот, systemd не решает ни одной из тех проблем, которые у меня есть. При этом при наличии в системе systemd многие привычные вещи нельзя выполнить так, как я привык и умею, а нужно тратить время на то, чтобы понять, как то же самое сделать с помощью systemd. Вдобавок к этому, если система основана на systemd, то она на него повязана вся целиком, убрать systemd невозможно. Т.е. майнтейнеры основной массы мейнстримовых дистрибутивов пытаются мне этого бастарда навязать, то есть украсть у меня моё время, и это возмутительно.
В принципе этим не только systemd славится, я вот тут потратил примерно час, чтобы понять, как в нынешнем X.org таки вернуть возможность убивать сервер по Ctrl-Alt-Backspace, и чтобы при этом не сломалось переключение регистров клавиатуры. Проблема, как выяснилось, была в том, что теперь, оказывается, xkb options берутся не из собственной конфигурации X.org, а от долбаного udev, у него свой отдельный конфигурационный файл для клавиатуры (/etc/default/keyboard, его я нашёл grep'ом, но не сразу понял, что это именно udev его использует), и потом ещё udev надо перезапустить, причём обязательно с помощью udevadm, поскольку обычный перезапуск на него не действует. Кто мне вернёт этот час?! Какого чёрта кто-то там решил, что "так будет круче", а я за это вынужден расплачиваться собственным временем?
Таки да, я противник не только systemd, мне и udev, и hal, и прочие подобные примочки тоже не нравятся. Они мне низачем не нужны, в том смысле, что они мне не дают никакого профита, а вот на борьбу с их изысками мне приходится тратить время и силы. Если говорить об init'е, то меня вполне устраивает (то есть более чем) классический system V init со всеми его скриптами, так что мне не нужны ни upstart, ни openrc, ни какие-либо иные потуги заменить якобы "старую" технологию, которая полностью справляется с моими потребностями.
ответить
From Rhard_ (unverified) Sun Oct 22 23:30:00 2017 UTC
Время
Сейчас ситуация мне видится следующей. Из-за подобной массовой миграции на системд приходится тратить время для его выпиливания, настройки (что бы не притащитить его как зависимость к какому-либо пакету), поиск информации, так как офф вики её давно выпилили. Получается, что тратить время приходится в любом случае. Сколько у вас ушло времени убрать системд из Дебиана? Какие возникают с этим трудности?
ответить
From admin Tue Oct 24 20:07:49 2017 UTC
Чушь
Во-первых, это не о том. Вопрос был не в том, допустить или не допустить использование systemd, а в том, почему systemd — это плохо.
Во-вторых, я поставил Devuan. Огромное спасибо тем, кто его сделал. А если бы не Devuan, я бы поставил что-то ещё без systemd, благо их вполне себе есть. На то, чтобы найти дистрибутив без systemd, времени уходит уж точно меньше, чем на последующую борьбу с этой дрянью. В конце концов, можно ведь и на *BSD уйти.
В третьих, даже если бы пришлось больше времени убить на избавление от systemd, чем на его освоение — это уже вопрос принципа, под всякую мейнстримовую мразь прогибаться я не намерен и другим не советую. А то так можно и до форточек докатиться.
ответить
☞ From cher_nov (unverified) Thu Oct 12 15:03:00 2017 UTC
Уважаемый
Уважаемый Андрей Викторович!
Сделайте, пожалуйста, показ отзывов в гостевой книге наоборот: от новых к старым. Или соответствующий переключатель, что ещё лучше.
С уважением.
ответить
From admin Sun Oct 15 08:30:36 2017 UTC
Сделано.
Переключателей, к сожалению, не завезли :) Но изменить порядок на противоположный оказалось возможно.
ответить
☞ From Андрей (unverified) Sat Oct 7 06:15:00 2017 UTC
Версия UNIX
Здравствуйте! Какую версию UNIX Вы рекомендуете установить?
Заинтересовала Ваша первая книга Азы программирования. У меня есть возможность установить только на один жёсткий диск с Windows7. Ubuntu подойдёт?
Спасибо!
ответить
From admin Sun Oct 8 18:10:22 2017 UTC
Да что угодно подойдёт
... и Ubuntu в том числе. Dual boot, опять же, умеют и все известные мне дистрибутивы Linux, и FreeBSD.
Хотя чего я бы не рекомендовал — это оставаться на убунте надолго. Для начинающих этот дистрибутив вполне подходит, для более искушённых пользователей — не очень.
ответить
☞ From Anonymous (unverified) Thu Sep 21 07:23:00 2017 UTC
Youtube-канал
Здравствуйте. АВ, укажите в описании под каждым видео на канале ссылки на ваши сайты. Это может быть полезно.
ответить
From admin Thu Sep 21 15:43:52 2017 UTC
Что, вот прямо
Что, вот прямо под каждым? И прямо на все сайты? По-моему, это слегка перебор.
ответить
From Anonymous (unverified) Fri Sep 22 02:04:00 2017 UTC
Youtube-канал
Можно только на этот сайт, а можно и на infoviolence (но на этот важнее, я думаю, если выбирать).
Но да, под каждым видео (старым, коих не много и будущим) в описании. Всего пару ссылок с пояснением. Это нормальная практика, которая может привести на сайт нового человека, который узнает о книгах.
P.S. Был перерыв с выходов видео и я уже начал волноваться. )
ответить
From admin Sat Sep 23 07:30:51 2017 UTC
Эти ссылки есть
Эти ссылки есть в описании канала; поскольку тематика канала никак с тематикой этого сайта не связана, ставить ссылку сюда в описании видеороликов, да ещё прямо всех, мне по-прежнему кажется перебором.
ответить
☞ From Anonymous (unverified) Tue Sep 12 15:25:00 2017 UTC
papers 403
Доброго времени суток!
Публикации со странички http://www.croco.net/croco/papers.html недоступны (403 Forbidden).
ответить
From admin Wed Sep 13 18:53:33 2017 UTC
Вроде работает
У меня страничка открывается без проблем и я для этого ничего не делал. Э?
ответить
From Anonymous (unverified) Thu Sep 14 13:53:00 2017 UTC
Я, вероятно,
Я, вероятно, недостаточно точно выразился. Страничка и у меня открывается без проблем. А вот при попытке с этой странички скачать какой-нибудь pdf/ps/etc в ответ я получаю ответ типа "Forbidden. You don't have permission to access /croco/papers/bolshakova_stolyarov_2000.ps.gz on this server."
ответить
From admin Sat Sep 16 09:23:30 2017 UTC
Да, факт
Спасибо!
Там на директорию права были неправильно установлены, видимо, рука дрогнула на команде chmod :-) Сейчас всё нормально.
ответить
☞ From Anonymous (unverified) Mon Sep 11 11:59:00 2017 UTC
Здравствуйте,
Здравствуйте, Андрей Викторович! Хотел бы спросить о четвертом томе. Есть ли примерный список глав будущей книги?
ответить
From admin Mon Sep 11 16:17:35 2017 UTC
Четвёртый том
К сожалению, пока есть только список частей, вот здесь вот.
Первая из этих частей уже готова, она лишь слегка отличается от содержания "Введения в язык Си++"; остальные части, напротив, я ещё не начинал не только писать, но и прикидывать, так что плана глав для них нет.
ответить
☞ From Anonymous (unverified) Wed Sep 6 05:50:00 2017 UTC
Программа дополнительного образования ВМК МГУ
Андрей Викторович, имеет ли смысл учебы по программе профессиональной переподготовки «Разработчик профессионально-ориентированных компьютерных технологий» ВМК МГУ?
ответить
From admin Mon Sep 11 16:11:21 2017 UTC
Честно говоря,
Честно говоря, не знаю, я не в курсе, что это за программа. Факультет большой, за всем не уследишь.
ответить
☞ From Anonymous (unverified) Mon Aug 28 20:02:00 2017 UTC
Здравствуйте,
Здравствуйте, почему в ваших книгах (Азы программирования) нет упражнений? Как предлагаете закреплять прочитанный материал?
ответить
From admin Thu Aug 31 23:08:27 2017 UTC
Объём-с, знаете ли
Книжка и так получилась довольно большая по объёму, так что разве что когда-нибудь сподоблюсь сделать задачник отдельной книгой.
А закреплять предлагаю очень просто: берёте компьютер и пробуете все возможности, которые описаны в книге. Придумать задачу можно для себя самому. Лично я вообще никогда в жизни, даже в школе, не решал программистских задач из задачников, это же скучно.
ответить
☞ From Родион Панфилов (unverified) Sat Aug 26 14:11:00 2017 UTC
Вопрос по файловым менеджерам
Андрей Викторович, здравствуйте.
Интересуюсь вашим мнением по поводу консольных файловых менеджеров (желательно - vim-совместимых).
Нахожусь в процессе перехода с сублайма на вим, и параллельно возникло желание сменить файловый менеджер.
Я попробовал использовать vifm, но обнаружил в нем отсутствие встроенных очевидных фич (вроде быстрого выделения всех файлов в каталоге), а также некоторые проблемы (например, при работе с именами из нескольких слов).
Поскольку проект уже не молод, все это показалось странным, поэтому сейчас ищу достойную замену.
При работе с файлами часто использую терминал, но в некоторых случаях он не совсем удобен, иногда хочется использовать 2 панели.
Можете порекомендовать что-нибудь?
ответить
From admin Sun Aug 27 08:55:00 2017 UTC
Мне не вполне
Мне не вполне понятно, зачем нужны файловые менеджеры как класс. Графический (иконочный) файловый менеджер я использую ровно в одной ситуации — при сортировке фотографий, слитых с флешки из фотоаппарата (ради превьюшек). Собственно, всё; для всего остального есть команды командной строки, это и быстрее, и понятнее, и вообще правильнее.
Так что вопрос я не изучал и ответа на него дать не могу. Ну то есть понятно, что существует, к примеру, Midnight Commander, о его существовании я знаю примерно с тех времён, когда вообще начал работать с *nix (то есть с 1994 года, вроде как раз тогда он и появился), но никогда его сам не использовал, ибо по-моему неудобно.
ответить
From Ne01eX_ (unverified) Thu Feb 8 01:00:00 2018 UTC
На вкус и цвет, как говорится...
Я mc использую уже около 15-20 лет. :-) Да, многое неудобно, не комбайн, но какой-либо альтернативы ему я не вижу (при этом я периодически пробую разные файловые менеджеры, но в итоге опять возвращаюсь на mc).:-) При этом я бы не назвал себя фанатом консоли, - просто исторически так сложилось. :-) А файловые менеджеры удобней для работы с файлами. Как не крути, - горячими клавишами, стрелочками и ВК, гораздо быстрее, чем одним автодополнением по TAB (в случае с шеллами, которые это поддерживают). :-)
ответить
From admin Thu Feb 8 13:41:51 2018 UTC
Вот именно, что
Вот именно, что как ни крути, а автодополнением, перенаправлением ls в файл с последующим редактированием оного и использованием обратных апострофов — гораздо быстрее и удобнее, нежели с помощью каких бы то ни было стрелочек и прочих примочек. Что до шеллов, НЕ поддерживающих автодополнение, то покажите мне того фашиста, который вас заставляет ими пользоваться.
ответить
From Anonymous (unverified) Mon Jan 1 19:13:00 2018 UTC
попробуйте ranger
попробуйте ranger (выделение всех файлов там точно есть)
ответить
☞ From bergentroll_anon (unverified) Tue Aug 1 12:54:00 2017 UTC
информационное насилие
Посмотрел vlog, посвящённый информационному насилию. Согласен во всём. Я и до просмотра придерживался подобных взглядов, но они были не структурированы.
У меня есть татуировка с Tux'ом. Я планировал добавить изображение Gnu чтобы не расстраивать Ричарда Столлмана. Но теперь подумал, ведь подобное тату — как есть пропаганда и информационное насилие!
С вашей точки зрения, Андрей Викторович, должен ли ответственный член общества избавиться от подобных изображений на своём теле и на своей одежде, или индивидуальность и символы идентичности неприкосновенны?
ответить
From admin Mon Aug 14 08:27:28 2017 UTC
М-да
Это вопрос, не имеющий правильного ответа. Общественные места, как было уже в одном из роликов сказано, делают информационное насилие неизбежным, вопрос лишь в том, где провести границы.
Что до меня, то я вообще не люблю татуировки как идею, хотя это уже не относится к обсуждаемому вопросу.
ответить
From Anonymous (unverified) Mon Aug 14 20:42:00 2017 UTC
О боже!.. Информационно изнасилованному
Я крутейший линуксоид -
Тукс-пингвин на попе виден,
И одно лишь беспокоит -
Столлман не был бы в обиде!
Дядя Столлман - тот суровый,
Ой, беды я с ним хлебну!
Зад оглядываю снова -
Где бы втиснуть ещё GNU?
Это будет мне не в минус,
Пусть дивятся моей силе,
Ведь меня не только Линус,
Но и Ричи изнасилил!
ответить
From bergentroll_anton (unverified) Sun Aug 20 11:33:00 2017 UTC
насилие
Должен сказать, что с Р. Столлманом у нас связь сугубо по обоюдному согласию. Но за стихи спасибо, мне их первый раз посвятили.
ответить
☞ From zhekas (unverified) Thu Jul 27 09:48:00 2017 UTC
Не верная ссылка (проблемы копипаста)
На этом сайте На странице купить ссылка на третий том ведёт на второй.
ответить
From admin Mon Aug 14 08:24:46 2017 UTC
Спасибо,
Спасибо, исправлено.
ответить
☞ From Игорь (unverified) Sat Jun 17 18:22:00 2017 UTC
Может мы про разные возрасты говорим?
К вопросу откуда спектрум, так очевидно что из личной юности.
Дома и ПК нормальный есть, и старый-старый ноутбук с гентой на борту, так что в плане мат. обеспечения проблем нет.
Говоря об отсутствии у ребёнка доступа к ПК, я имел в виду что ребёнок за компом не сидит, игры/мультики на компе не смотрит и в интернете не лазит.
Ребёнок просто на самом деле ещё совсем малыш, 2 года. И я не собираюсь его садить за комп прямо сейчас, просто в каком-то возрасте когда ещё ребёнок не умеет писать и читать, может ему можно в качестве развлечения дать такой комп с игрушками. Там и игры простые, и в процессе их загрузки волей-неволей приходится управлять компьютером. Да и простейшие рисунки с помощью точек, кругов и линий очень доступны для понимания и формируют понимание двухмерной системы координат.
Всё же считаете что это бесполезно и контрпродуктивно?
ответить
From admin Sun Jun 18 21:55:46 2017 UTC
Да нет, просто странно
Вот чем вас этот ваш "старый-старый ноутбук" не устраивает, чем спектрум лучше? По мне так пусть лучше ребёнок вам этот ненужный ноут раздолбает, чем живой (пока) спектрум :-)
Игрушек простеньких, в том числе развивалок, для Linux имеется реально прорва.
ответить
From Anonymous (unverified) Mon Jun 19 02:09:00 2017 UTC
Компьютерщик дед - горе в семье.
"К вопросу откуда спектрум, так очевидно что из личной юности...
Всё же считаете что это бесполезно и контрпродуктивно?"
Из первой фразы (когда появились спектрумы и писюки, извините, знаем!) очевидно вытекает, что иначе, как дедушкой двухлетнему ребёнку, вы приходиться никем не можете! Что, дедушка, ограничили общение со внуком(внучкой) родители? :) Да я бы вообще таких "бесполезных и контрпродуктивных" дедушек грязной метлой гнал! Сами-то понимаете, о чём говорите? Два года! А вы о каких-то компьютерах, извините! Офигеть... "Умнее" ребёнка сделать удумали? Так с вашими подходцами, получить что-либо кроме очкастого и болезненного существа, не вылезающего из чатов и бьющегося сутками в Танки, решительно невозможно! Если хотите чтобы ребёнок рос и развивался нормально, оставьте его родителям. Если же такое (по любым причинам!) невозможно, учитесь сами. Всему! Кончил учиться - кончил жить. Здесь цель простая - на любой вопрос, заданный ребёнком, у вас должен быть ответ "на пальцах", понятный на его уровне развития. В принципе, теорию вероятностей можно объяснить ребёнку "на пальцах". Общую, конечно, специальную не каждому выпускнику профильного вуза объяснить возможно! ;) Вот какой программой "обучения ребёнка" вы должны бы быть обеспокоены. В этом случае, возможно, вы поможете ему и его родителям в его развитии. Но для начала (я вас умоляю!) выкиньте из головы бредовые затеи относительно как спектрумов, так и РС. Всему свое время. Сказки ему читайте, чёрт подери...
ответить
From admin Mon Jun 19 09:02:36 2017 UTC
Экий крик души :-)
На всякий случай — это был не я, в смысле не автор сайта :-)
Кстати, почему сразу "дедушкой"? Владельцу спектрума сейчас с равным успехом может быть от сорока до пятидесяти, вполне нормальный возраст для размножения. А про сказки и математику, пожалуй, соглашусь.
ответить
From Игорь (unverified) Mon Jun 19 16:43:00 2017 UTC
Многовато даёте годов
Андрей Викторович, перегнули немного с границами. Спектрум у меня был с начальных классов школы в 93-96 годах.
Не то чтобы критично как товарищ выше, но больше половины десятка минимум вы мне добавили :)
ответить
From admin Mon Jun 19 18:32:13 2017 UTC
Ну звиняйте :-)
Сами понимаете, я ж не телепат. Ну не угадал. Опять же этот аноним со своим "дедом" меня с толку сбил, настроил на завышение.
Вообще, я так скажу — да не слушайте вы никого, воспитывайте отпрыска как считаете нужным. Хотя затея со спектрумом мне по-прежнему непонятна, но это она мне непонятна, а вам там с горы может быть изрядно виднее. И меня вы тут за авторитета зря держите, я не педагог, я ВУЗовский преподаватель, это совершенно другой вид спорта. Студенты всё-таки уже не дети. Да и старшеклассники, с которыми я частным образом занимаюсь иногда, тоже уже не дети. А вот как с детьми работать — мне неведомо.
ответить
From Игорь (unverified) Mon Jun 19 14:45:00 2017 UTC
Мимо кассы
Сорри уважаемый, вы мимо кассы :) По крайней мере со своими выводами про дедушек и внуков.
Я бы отнёсся может с каким-то вниманием к вашему посту, не будь он таким категоричным и безапелляционным.
Книжки уж поверь сыну читаю с самого детства, и он сам с ними ко мне прибегает, чтобы я ему тех самых "Дядю Стёпу" или "Крокодила Гену" почитал.
Ваши агрессивные перлы про моё неумение учить ребёнка, играть с ним и изъясняться на его языке меня просто заставляют улыбаться, так как мало что может быть таким же смешным как человек говорящий полную чушь и уверенный при этом в своей нерушимой правоте.
Так что, вы прошли чуть мимо. Ну и идите дальше туда же, ни в коем случае не сворачивайте :)
ответить
From Алла (unverified) Tue Jun 20 12:27:00 2017 UTC
От студентов к детишкам? Что ж...
А вот как с детьми работать — мне неведомо.
Да-да, Андрей Викторович, детей у вас нету покамест, это заметно!
Иначе однозначно обратили бы внимание не только на синклеронесообразные мысли, но и на возраст ребенка - 2 года! Кому приходилось сталкиваться с детьми подобного возраста, знают точно что они могут, что умеют, а до чего им - просто как до звезды.
Да и "дедушке-папе" двухлетних детей, очевидно, видеть не приходилось. Иначе вряд ли бы пришло ему в голову говорить чего-то о "двумерной системе координат". "Дедушка-папа", на будущее - если захочется еще пофантазировать на тему двухлетних детей, хоть в интернетах поинтересуйтесь, что они из себя представляют. Ну, да пожалею ваше время и ваши потуги (сложно ведь в Гуглах, не правда ли?) Вот, к примеру ссылочка (таких море в сети), дающая представление о двухлетних детях:
Дети в два года
Обратите внимание на имеющиеся навыки, словарный запас, да сопоставьте с вашими мыслями относительно синклеров всяких. Идея сама по себе бредовая, впрочем! И это должно быть очень хорошо понятно человеку у которого на древней машине установлена аж гента, требующая довольно неплохого знания системы и, разумеется, прикладных программ, в частности, обучающих, коих под Линуксом, действительно немерено. И думать вместо этого о каких-то синклерах довольно нелепо! Кстати, обучающие-то программы опять же никак не для двухлетних детей! Так что, количеству фантазий в одном посте на одно вменяемое слово позавидовали бы лучшие писатели-фантасты.
На будущее, можно вполне посмотреть, что из себя представляют дети уже трех лет и через годик отписаться, например, на этом сайте полюбопытствовав, не будет ли очень здорово, если трехлетнего ребенка обучить системе команд калькулятора МК-61 (ой, знаменитая, некогда штука - игрушек тысячи было понаписано). Там тоже, думаю, люди оценят и посмеются!
Что касается эмоционального довольно поста относительно обучения детей, ничего предосудительного там найти нельзя. Скорее всего, человеку просто пришлось столкнуться со старшими родственниками, пытавшихся взять на себя обучение ребенка, которому безусловно в будущем предстоит стать не менее, чем академиком. Ни к чему хорошему такие вещи привести не могут. Все должно идти своим чередом. Ну, и очевидная описка имеется - теория не "вероятностей", а "относительности" явно имеется в виду. А то, что ее можно объяснить на пальцах - так это не можно, а НУЖНО делать. Ибо возможно. И предложение учиться всегда - абсолютно правильно, хотя и довольно банально.
Впрочем, по любому повеселили, спасибо!
ЗЫ А вот про дядю Степу, крокодила Гену "дедушка-папа" очень правильно читает - развивающее чтение! ;)
ответить
From admin Tue Jun 20 16:13:00 2017 UTC
Э?
Мне почему-то кажется, что у вас имеются проблемы с чтением. В смысле вот просто с чтением текста на русском языке. Иначе бы вы заметили вот эту вот фразу в тексте нашего топик-стартера:
И я не собираюсь его садить за комп прямо сейчас, просто в каком-то возрасте когда ещё ребёнок не умеет писать и читать, может ему можно в качестве развлечения дать такой комп с игрушками.
Что до меня, то я вообще childfree, из чего никогда не делал секрета. Но это обстоятельство никак не относится к обсуждаемой тематике, и дальше я его здесь обсуждать не намерен, и другим не дам (на всякий случай, да, это предупреждение).
ответить
From Anonymous (unverified) Tue Jun 20 16:18:00 2017 UTC
Не, проблем с
Не, проблем с чтением у меня нет.
А по поводу "прямо сейчас", могла бы только спросить - "прямо когда"? Лет через 5? :) Боюсь, что к этому времени и архитектура PC уже уйдет, так что про какие-то синклеры в наше время говорить уж точно смешно.
ответить
From admin Wed Jun 21 12:00:16 2017 UTC
Ну знаете
Вот уж что-то, а соответствие модным современным трендам вообще дело даже не десятое, а десятитысячное. Какая разница, что там куда уйдёт? Это что, как-то влияет на обучение? Разве что негативно.
ответить
From Игорь (unverified) Tue Jun 20 18:49:00 2017 UTC
И тут тётя Алла набросилась на деда-папу :)))
Собственно по поводу тезиса "тётя не читатель, тётя - писатель" раньше меня высказался Андрей Викторович.
Коль тема так пошла в массы и глубоко задела как минимум 2-х человек, то сразу чтобы снизить накал негодования в свой адрес сообщу отдельные пункты моих затей с ребёнком:
- Не собираюсь в 2 года садить ребёнка за комп. (на всякий случай, сейчас ему вообще год и 11 месяцев. Почти 2)
- С ребёнком у нас отличное взаимопонимание, и мои затеи с его обучением, производятся исключительно в игровой и ненавязчивой для него форме. Никаких требований делать то, никаких требований делать это. Если малыш не настроен на что-то, что я хочу ему показать/рассказать/объяснить/попросить, то я на этом не настаиваю.
- Не считаю правильным рассказывать другим как жить и что им делать, и с трудом принимаю поучения от других, тем более совершенно незнакомых мне людей.
Калькулятор этот мне кстати тоже знаком, чуть чуть на нём "писал" простые расчёты в 10-11 классе. Правда он был не мой а соседа, но это неважно.
Теперь к сути темы, про спектрум. Почему именно этот ПК? Потому что я с ним столкнулся будучи маленьким (начальные классы), и этот комп был у мужа моей сестры - электронщика. Так вот я прекрасно помню насколько всё там было для меня наглядно и просто. Эта вот "двухмерная система координат" стала ясна тут же, когда мне показали команду plot и результат её действий. Ещё понятней стало когда показали команду draw, тут можно наверное сказать что и вектора стали понятны, но не буду этого говорить чтобы совсем не нагнать на себя немилость публики :)
Я в процессе общения по этой теме тут, понял более точно для себя, чем я считаю такой ПК может быть полезен ребёнку. Тем что он подталкивает к изучению. Там всё очень наглядно, просто и не заумно. Я не считаю спектрум - инструментом для программирования, скорей как обучающая игрушка.
Чем мне не угодил линукс для подобной затеи? Тем что например вы его позиционируете таким образом:
"... в частности, обучающих, коих под Линуксом, действительно немерено." Мне не нужны обучающие программы для ребёнка. Я сам его до какого-то возраста вполне способен и главное имею желание обучать всему что ему будет интересно и что ему необходимо. Не собираюсь это отдавать на "аутсорсинг" какому-то компьютеру. А дав ребёнку линукс, что он будет с ним делать?
вариант 1. Если линукс консольный, то совсем сложно. Рассказывать про пакетные менеджеры для установки той или иной игры? Безумие. Давать список команд для запуска той или иной проги, тоже тупость. Совершенно бессмысленный ввод команды после которой появляется та или иная игра.
вариант 2. Линукс с графикой. Ну это по мне совсем лишнее. Это и будет то самое красноглазие, с тыканьем мышкой в те или иные пункты меню, с единственным потенциальным выхлопом для ребёнка в виде запуска "развивающих" программ.
Вобщем я уже немного запутался в том, что я хотел написать и что пишу, поэтому пока остановлюсь, подожду продолжения нашей увлекательной беседы с уважаемыми тётями и дядями :)))
Насчёт вашей фразы "Всё должно идти своим чередом", это похоже на псевдофилосовский статус в соцсети у псевдофилософа. Что она значит? Всё итак идёт своим чередом, уж время течёт точно лишь в одном направлении. А если вы про то, что не надо ни во что вмешиваться и всё пустить на самотёк, то я с этим просто не могу согласиться. У вас такая позиция, не стоит её навязывать другим. Я с такой жизненной позицией точно не согласен.
ответить
From admin Fri Jun 23 07:49:00 2017 UTC
Всё же очень странно
У меня нет сейчас времени искать реализацию для Linux такой же двумерно-координатной графической программы с plot/draw, но что она существует — в этом я совершенно уверен. Сделать так, чтобы после загрузки системы запускалась именно она и на весь экран — дело техники. Но при этом на Linux'е будет что-то ещё, а точнее — там будет всё, возможность выйти за очерченные пределы, и эта возможность будет спокойно "за углом" ждать своего часа, когда чаду надоест рисовать точки и отрезки.
Вообще вы, мне кажется, не вполне правильно понимаете термин "обучающая программа". Вот этот ваш бейсик на спектруме — он и есть обучающая программа, только кривая, потому что бейсик. На Linux'е есть лучше.
upd: не удержался, вот вам раз: http://www.tuxpaint.org/ вот вам два: https://www.maketecheasier.com/5-best-linux-software-packages-for-kids/ (первое там упомянуто, а здесь упоминается программа с Logo-графикой, всяко лучше бейсика), дальше я уже не стал смотреть.
ответить
☞ From Игорь (unverified) Sat Jun 17 13:42:00 2017 UTC
Про детей и IT
Андрей Викторович, хочу с вами как опытнейшим педагогом в IT посоветоваться.
Стоит ли ребёнка начиная с какого-то разумного возраста знакомить с ПК на базе спектрума? Для понимания азов самостоятельной работы с ПК и основам программирования. Хоть и на бейсике, но не C ведь в малом возрасте давать.
Если ребёнок всякими гаджетами не играет, телек не смотрит и к обычному ПК доступа не имеет.
Поделитесь своим мнением на этот счёт пожалуйста
1. Стоит ли ребёнку начинать со спектрума?
2. В каком возрасте стоит начинать подобное знакомство? Не обязательно число, можно описать условия.
3. Если не 1, то с чего по вашему стоит начинать?
ответить
From admin Sat Jun 17 17:20:00 2017 UTC
Какой-то очень странный вопрос
У меня встречный вопрос, вы где этот спектрум откопали-то? И уж если откапывать непойми что, то почему бы не откопать какой-нибудь, таки да, ПК — ну, скажем, десятилетней давности, не поставить на него Linux и не начать ребёнка знакомить с чем-то более-менее живым. "Нет доступа к ПК" — это, по-моему, может быть обусловлено разве что финансовыми вопросами, но компьютер десятилетней давности можно найти бесплатно или за бутылку пива; живой спектрум сейчас, подозреваю, стоит (в качестве коллекционного экспоната) в десятки, если не сотни раз больше.
Си, конечно, в малом возрасте давать не надо, ну так Паскаль никто не отменял. Всяко лучше, чем спектрумовский бейсик. А про возраст и условия тут ответ, на мой взгляд, очевидный: если ребёнок хочет этим заниматься, то уже можно, и пофигу возраст, а если не хочет — то всё равно бесполезно, и тоже возраст никакого значения не имеет.
ответить
☞ From Студент (unverified) Wed May 10 17:56:00 2017 UTC
Выбор доменного имени
Добрый день, Андрей Викторович!
Почему вы выбрали домен первого уровня '.info', а не, например, '.me' или какой-нибудь ещё?
Это вызвано личными предпочтениями или просто следствие случая?
ответить
From admin Thu May 11 09:46:56 2017 UTC
Какой нафиг .me
Простите, какое отношение ко мне имеет Черногория? Если что, ccTLD .me -- "национальный" домен Черногории, а точнее -- домен верхнего уровня, названный в соответствии с ISO Country Code этой вот самой Черногории.
Кроме .info, меня ещё устроил бы .net, но он на тот момент был занят, сейчас не знаю -- не смотрел.
ответить
From Студент (unverified) Mon May 15 16:50:00 2017 UTC
Опечаточка по Фрейду
Действительно, '.me' -- это глупость, конечно.
Подсознательно имел в виду '.name' -- общий домен верхнего уровня для персональных сайтов. Но сейчас проверил -- соответствующий домен второго уровня свободен, но в стоп-листе (почему-то).
P. S. '.net' также занят.
ответить
From Anonymous (unverified) Sat Nov 18 18:37:49 2023 UTC
Re: Какой нафиг .me
http://thalassa.croco.net/license.html
Andrey "Croco" Stolyarov Cetinje, Montenegro August 13, 2023
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:%22%D0%A1%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%3F_%D0%9D%D0%B5_%D0%B4%D1%83%D0%BC%D0%B0%D1%8E%22.jpg#/media/Файл:"Совпадение?_Не_думаю".jpg
Простите, не удержался :)
ответить
From Andrey V. Stolyarov Sat Nov 18 19:17:07 2023 UTC
Re: Какой нафиг .me
Ну кто ж мог в 2017 году знать, как всё повернётся. Хорошее время было...
ответить
☞ From Anonymous (unverified) Fri Mar 17 11:41:00 2017 UTC
И тут
И тут оптимизаторы!
Не поленился, сходил в гараж - есть там два динозавра. На одном (частота 1.8) предложенная кавалерийская атака привела к тому, что файрфокс вообще стал крайне задумчивым. А на втором (частота 2.4 - без гипертрединга) больший эффект возымело изменение приоритета иксов - вообще, стало более все отзывчивое. Так что, по разному бывает. Готовых рецептов нет.
ответить
☞ From Anonymous (unverified) Tue Mar 14 10:01:00 2017 UTC
"Всего делов"
Если система у вас не падает в результате ваших "оптимизаций" с найсами, это говорит лишь о ее надежности и устойчивости. Но никак не о том, что что-то там стало работать лучше. Браузер нормально работать на калькуляторе не будет, даже если удастся его туда установить.
И вообще, основное назначение найсов - регулирование жадных до процессорного времени нескольких фоновых процессов. тут еще можно что-то срегулировать. Но браузер у вас один, ни с кем за процессорное время не воюет, а работает, между тем, паршиво. Что вы там хотите соптимизировать? Некоторую (возможно даже измеримую) эффективность вы получите, но она будет настолько ничтожна, что овчинка выделки не стоит.
ответить
☞ From Anonymous (unverified) Wed Mar 1 09:01:00 2017 UTC
А не
А не подскажете, Андрей Викторович, какой браузер вы используете?
Оно, конечно, дело сугубо личное и интимное, но, всё же? :) За последние годы практически ушёл в мир иной такой браузер, как Firefox. Ну, то есть, он, конечно, не "ушёл", но использовать его стало куда менее приятно - если стою на двухъядерной машине (как минимум!), то, вроде, всё и ничего! Однако, как только попадаю на машину с Northwood или Prescott (памяти до 2 Гб), это полный абзац! Тормоза такие, что даже и запускать браузер не хочется. Неужели четвёртые пни так безнадёжно устарели? Да нет же! Все достаточно современные системы они тянут вполне прилично - и последние минты-убунты, и jessie... То же касается и недебианообразных систем. Не, не "летают", но работать вполне можно! А вот браузер (а слово "Firefox" уже сколько лет жёстко ассоциировано со словом "браузер") - просто беда какая-то! Спасают временами такие красавцы, как dwb, surf, но, всё же, они больше подходят на роль "оперативного", второго браузера. А вот с "первым" уже, наверное, с год - не определиться ни в какую! :( То есть, просто очевидно, что главные дураки занимаются вовсе не разработкой операционных систем, а именно браузеров! На четвёртых пнях лучшей системой (из полутора десятков поставленных) оказалась Windows XP, которая ведёт себя на этих машинах достойно (если Лису, конечно, не ставить последних версий)! Так и что же это за безобразие? Может, чего-то просто не вижу?
ответить
From admin Wed Mar 1 16:34:57 2017 UTC
Вот её, родимую,
Вот её, родимую, и использую. Ну, точнее iceweasel :)
А так — да, всё именно так и плохо, и именно настолько.
ответить
From Anonymous (unverified) Sat Mar 11 12:04:00 2017 UTC
Смартфоны
Доброго дня! Позвольте развить этот вопрос и в сторону мобильных устройств. Вы пользуетесь смартфоном или традиционным телефоном? Если пользуетесь смартом, то с какой ОСью?
ответить
From admin Mon Mar 13 08:23:42 2017 UTC
В качестве
В качестве основного телефона у меня кнопочник Nokia C2-03. А ещё я не люблю праздное любопытство, так что развить этот вопрос у вас уже не получится.
ответить
From Anonymous (unverified) Wed Mar 1 18:31:00 2017 UTC
"главные дураки
"главные дураки занимаются вовсе не разработкой операционных систем, а именно браузеров"
Дык, "маркетинг", как всегда! Intel платит.
А чего еще можно ожидать от общества, в котором в принципе возможна "разработка" таких процессоров, как Celeron? В здоровую технологическую цепочку включаются процессы, целенаправленно гадящие исходно годный продукт в целях создания товара иной ценовой категории. Давно уже не удивляют такие перекосы.
Что касается firefox, то тоже случается запускать его на процах Пентиум-4. Да, нездорово, тут не попрешь! Хотя сама система работает вполне годно. Все к чему пришел - ставить не самую последнюю версию (у меня получилось минимально - firefox 31), выделить 400 Мб в памяти под профиль, да что-нибудь навроде renice -5 -p `pidof firefox`. Это машины Celeron 2000(2700 разгон)Мгц, 1,2 Гб памяти, Debian 7(wheezy). Полностью проблему не решает, но уже поприличнее... И, разумеется, никаких ненужных, скорее всего, bluetooth, zeitgeist, modemmanager, networkmanager и т.п. быть не должно.
ответить
From Anonymous (unverified) Thu Mar 9 10:38:00 2017 UTC
С тем, что
С тем, что процессоры Celeron, как явление, мерзость неописуемая, спорить сложно. Однако, справедливости ради, не худо бы отметить, что именно по этой причине - а Celeron это не только укороченный второй кэш, но и отсутствие Hyper Threading - называть их "Pentium 4"
Что касается firefox, то тоже случается запускать его на процах Пентиум-4
нельзя никак. Это не "Pentium 4". Вы используете именно Celeron. На ядре Northwood. Последние же полновесные Intel на этом ядре HT имеют и работают повеселее, в том числе и с Firefox. А Celeron'ы этих лет (как и однопоточные Пентиум) можно считать абсолютно устаревшими с точки зрения таких программ, как Firefox, которые исходно разрабатывались исходя из многопоточности процессора. Уже Firefox 3.6 - 2010 года, не забывайте! Так что, версию там уменьшай, не уменьшай... А процы - 2002-2003 года, извольте видеть! Ещё на Pentium 2-3 его запускайте и удивляйтесь.
Что касается WinXP - тоже сравнение не совсем корректное - это же ось конца прошлого века, а вы её сравниваете с предпоследней версией debian! Она просто работает пошустрее (кстати, незначительно совсем для полутора десятка лет разницы!), а то что там Firefox работает лучше, так это просто кажется так. Работает абсолютно точно так же. С чего быстрее-то?
Ну, а искать и находить какие-то выходы из положения даже на откровенно устаревшем оборудовании, что ж, здесь плохого, разумеется, ничего нет. Тут только флаг в руки - здесь уж ресурсы приходится использовать все, что возможно.
Что до Firefox, то тоже использую именно его. Спорить с его удобством и расширяемостью, по-моему, просто глупо. Хотя, и недостатки - очевидны. Недостаточно он продуман с точки зрения модульности, например. Вот на кой чёрт мне в браузере хоть какие средства разработки?! Не заказывал! На JavaScript писать - дело вообще пионерское. А средства эти, заметьте, по любому включаются, и ресурсы жрут... Но заменить - нечем. Потому довольствуемся тем, что есть.
ответить
From admin Sat Mar 11 10:23:31 2017 UTC
Ещё на Pentium 2-3
Ещё на Pentium 2-3 его запускайте и удивляйтесь.
Не хочу на пентиуме 2-3. Хочу на Raspberry Pi. Там никакого HT. И именно Raspberry Pi (вот прямо самая первая из них) -- это квинтессенция того, какой должен быть компьютер для SOHO при нынешнем развитии технологий. Питание 5 вольт, около 0.7 ампера (то есть 3.5 ватта мощности, блин... десяток Raspberry соответствуют одной тусклой лампочке), никаких вентиляторов. Потому что ничего лишнего.
Кстати, интересно, как создатели Raspbian со всем этим справились, ведь браузер там работает вроде сносно.
ответить
From Anonymous (unverified) Thu Mar 9 10:51:00 2017 UTC
Вдогонку
Вот, может, кто знает, кстати, как собрать Firefox по минимуму из исходников? Нигде ничего толкового не попадалось. Есть же любители ставить несколько дней какую-нибудьгенту, а потом три года тащиться именно от того факта, что система ставилась несколько дней (пусть даже она упала через неделю!) Переболели уже давно. Система - она для того, чтобы работать, а не ставить её насколько возможно дольше. А вот, что касается Firefox, тут я бы на недельку запарился!
Может, тогда и на Celeron'ах работать будет по-божески.
ответить
From Anonymous (unverified) Sun Mar 12 06:30:00 2017 UTC
На четвёртых
На четвёртых пнях лучшей системой (из полутора десятков поставленных) оказалась Windows XP, которая ведёт себя на этих машинах достойно
А вот и неправда ваша, дяденька! Это не ХР работает "достойно", это просто вы ни черта не сделали для того, чтобы нормально работал ресурсоемкий на сегодняшний день Firefox. Фактически (полагаем у вас однопоточный Celeron), вы имеете "однозадачную операционную систему", все процессы которой предназначены для запуска и нормальной работы Firefox. Можно сказать, вернулись во времена славного чернодосья. Вам частоты в 2 ГГц мало? Да вам требуется всего лишь обеспечить работу этой самой одной-единственной задачи! То есть, отработать вместо не сильно интеллектуального диспетчера операционной системы, распределяющего ресурсы процессора. И в случае именно однопоточного процессора, сделать это куда проще, чем с процессорами, обеспечивающими ряд потоков. Там система усложняется коcмически. А здесь-то чего? Как совершенно правильно было показано, берете и меняете приоритеты. Только не надо ожидать, что на вас сразу же посыплются шоколадные конфеты с неба, как только вы произнесете волшебное "renice ... firefox" и убьете парочку ненужных процессов. По сути, скрипт, запускающий Firefox, будет выглядеть как длинная последовательность renice'ов, касающихся самых разных процессов и заканчивающийся словом "firefox". Ага, мы же обеспечиваем работу лишь одной программе! Остальные будут подождать. Сетка в 40 значений приоритетов в никсах (ну, реально несколько меньше) - довольно широкое поле для самых разнообразных настроек. Под любую программу. И все у вас будет работать.
А теперь попробуйте то же самое учудить под вашей ХР! Если вы давно не видели синий экран, то уже после изменения приоритетов 2-3 процессов (а этих приоритетов там штук пять, наверно, наберется - от реального до никакущего), мы будете приятно удивлены.
На самом деле, частоты однопоточного процессора за глаза хватает для нормальной работы браузера, хоть какого. Решили запустить другую ресурсоемкую задачу - по той же схеме. А моща современных процессоров и операционных систем просто в разы превышает то, что необходимо тому же браузеру. Конечно удобно, когда "включил и все"! Но и процов десятилетней давности тоже вполне достаточно. Просто нужно уметь использовать имеющиеся ресурсы. Чуть приложиться надо, только и всего... И уж сравнивать невесть что с нормальными операционными системами - совсем уж не дело!
ответить
From admin Mon Mar 13 08:26:56 2017 UTC
По сути, скрипт,
По сути, скрипт, запускающий Firefox, будет выглядеть как длинная последовательность renice'ов, касающихся самых разных процессов и заканчивающийся словом "firefox"
Мне уже очень интересно, как этот скрипт выглядит. Примерчик в студию :)
ответить
From Anonymous (unverified) Mon Mar 13 15:04:00 2017 UTC
Вообще, как-то
Вообще, как-то предполагалось (с надеждой!), что Андрей Викторович, обладающий властью зачётной над учащимися, предложит им сей ребус для самостоятельной работы. Глядишь, удумают чего полезное (а чего - нет!) обеспечат себе же хорошую жизнь в будущем... Настроение препода, у которого ни с того, ни с сего, вдруг на Пентиум 4 будет летать Файерфокс сложно переоценить...
Но, видать, не судьба!.. Эх, грехи мои тяжкие! )))
Приступим к нашим играм... Будем крушить только пользовательские процессы, рутовские пусть пока поживут - может, сгодятся для чего ещё!
Предположим, что у нас имеется пользователь с аккаунтом student, который имел счастье прикупить на Avito за 500 рублей один из последних двух, оставшихся в природе, Четвёртых Пней (второй в Эрмитаже, справа за мумией). И умудрился-таки поставить на него Debian 8 ака jessie - ну, не винду же, блин, ставить - XXI век на дворе!
И всё, вроде бы, ничего, да браузер тормозит, собака (Лиса, конечно, то есть)... Но случай несмертельный, будем лечить!
Для начала выясним, какие процессы для чего надобны, а какие уж точно нет. Последние безжалостно и навечно прибиваем. Смотрим, что остаётся. И ведь дофига ещё остаётся-то! Но это проблема разве - если мы под student, то делаем как-нибудь так (ну, или похоже:
ps aux|grep -oP "^student[ ]{1,}\d\d\d\d[ ]{1,}" | grep -oP "\d\d\d\d" > my_pids.txt
То есть, по идее (глядя на доску не проверял), должны бы поиметь в файле my_pids.txt построчно pid'ы наших процессов. Замечаем, между делом (с помощью какого-нибудь ps), что они все какие-то наглые и имеют явно необоснованные претензии к собственному приоритету - большинство должны иметь 0. Это очень много! Делаем как-нибудь так:
while read line; do renice -n 19 pidof $line; done < ./my_pids.txt
Всё! Хватит с них и 19-го приоритета. Осталось не забыть запустить Лису (а на кой мы это всё делали?!)
firefox
sudo renice -n -15 -p `pidof firefox`
Процесс, разумеется, может называться как-то иначе, например, iceweasel, ice-cat, firefox-esr и т.п.
Ну, или сразу его с нужным nice'ом запустить. Всего делов.
PS К сожалению, администрация Эрмитажа на дала поизгаляться над ценным экспонатом (экcгумация - куча бумажек, подписей разных, всё такое), так что, купившему на Avito Четвёртый Пень счастливчику придётся самостоятельно реализовывать все эти сложнейшие манипуляции с приоритетами на его свежекупленной суперскалярной архитектуре. Как бы то ни было, на любой системе даже такие совершенно отпетые действия приведут к ускорению работы браузера. А ведь мы поступили очень грубо - градаций приоритетов - аж 40! Плюс имеются рутовские процессы. По любому сравнивать произвольный Линукс с какой-то "ХП" просто смешно Да, это было действительно лучшее достижение от Майкрософт, но - не более!
ответить
From Anonymous (unverified) Tue Mar 14 00:17:00 2017 UTC
ps aux|grep -oР... тра-та-та...
Если уж хочется настолько оскорбить и унизить процессы юзера student, достаточно простого sudo renice -n 19 -u student. Правда, в случае с промежуточным файлом, sudo почему-то не требуется, хотя разницы не вижу. Странно как-то...
И в "^student[ ]{1,}\d\d\d\d[ ]{1,}" лучше бы [0-9]{4,5}, пятизначные процессы тоже есть.
На этих путях, наверно, что-то можно выиграть, но не думаю, что много.
Правда, задачка могла бы получиться интересная - формируем массив структур вида {char name_proc[]; int pid_proc} по наличным в системе процессам, некоторую целевую функцию (например, скорость запуска/исполнения какой-либо программы, после чего во всех возможных вложенных циклах вида for int i = -20; i < 20; ++i, изменяя приоритеты процессов, ищем верхушки полученного симплекса, если таковые найдутся - минимальное время запуска/исполнения. То есть, просто запускаем эту программу, измеряя время. Какая-никакая, а оптимизационная модель.
ответить
From Anonymous (unverified) Wed Mar 15 16:15:00 2017 UTC
Впечатление
Впечатление такое, что побыстрее несколько, действительно.
Правда, не файерфокс запускал с -19, а vivaldi - он на Webkit и побыстрее по жизни (процесс vivaldi-bin), но разница есть в отрисовке страниц. И остальные процессы в задницу не загонял. Зачем?
Что удивило, так это то, что система продолжала работать нормально. Компьютер, впрочем, не начала века, посовременней будет.
ответить
☞ From Anonymous (unverified) Wed Feb 15 18:23:00 2017 UTC
Эк вас тут всех
Эк вас тут всех расфункционалило! :) Хотя, вещь, конечно, не вредная... Помнится, именно с поползновений в сторону Лиспа, для меня обрели какой-то вменяемый смысл указатели на функции. До этого помимо функции qsort() не применялось нигде. Инструментарий пошире, конечно...
Но, правда, и увлекаться особо, наверно, не стоит - как волка ни корми, а на Си - всё равно быстрее! ;)
ответить
From admin Fri Feb 17 14:41:14 2017 UTC
Когда я на
Когда я на третьем курсе столкнулся с Лиспом, моим основным языком был Паскаль (да, я на нём деньги зарабатывал :) дело было осенью 1995 года). И я на тот момент был уверен, что умею пользоваться рекурсией. Так вот, реально я рекурсией пользоваться научился только после Лиспа. А программы-то, конечно, на Си работают шустрее, если их нормально писать. Вот только писать их на Си несколько медленнее.
Кстати, насчёт qsort -- на массивах примерно элементов на 20 (и меньше) тупой пузырёк, вручную написанный, рвёт этот qsort аки тузик грелку.
ответить
☞ From Anonymous (unverified) Sat Jan 14 23:51:00 2017 UTC
Лёгкий спам
Ну, что касается С++, то "Введение" представляется вполне достаточным "введением" для сишника. То есть, можно вполне, несмотря на некоторые сложности, разобраться и использовать при необходимости именно "плюсы". И даже если таковой необходимости нет, по любому знание С++ - вещь обязательная хотя бы с точки зрения понимания "плюсового" кода, который то тут, то там всплывает. Никуда без этого. Но языки Си и С++, всё же, обладают даже на уровне распоследних стандартов очень высокой совместимостью, что упрощает как начальное освоение С++, так и переход на него. А можно ли дать какие-то рекомендации относительно освоения сишником языка Лисп? Честно говоря, его практическая применимость выглядит для меня довольно мутной. Но иногда всё же хочется почувствовать себя при галстуке! :) То есть, какие диалекты более удобны (пусть для самого начального освоения Лиспа), какая литература могла бы здесь помочь? И почему бы для исходного обучения программированию не использовать не алголообразный язык, а нечто функциональное? Почему такой подход - редкость, что препятствует? Избыточная "академичность", "оматематиченность" функциональных языков, или что-то другое?
ответить
From admin Mon Jan 16 18:46:32 2017 UTC
Про Лисп
Я знаю только один приличный учебник Лиспа для начинающих (в смысле, начинающих лисперов). Хювёнен, Сеппянен. Мир Лиспа. Т.1. Вроде в инете где-то валялись djvu от него. Второй том не нужен, ибо лет двадцать как утратил остатки актуальности, а вот первый как был, так и есть.
А про функциональщину в качестве начального этапа обучения программированию всё, на мой взгляд, просто: где вы найдёте столько адекватных преподавателей функциональщины.
ответить
From Anonymous (unverified) Tue Jan 17 07:20:00 2017 UTC
Про Лисп again
Припадки "интеллектуального голодания" бывают у многих "сишников". Есть в Лиспе что-то, тут не попрёшь! Тоже не раз в этом направлении двигаться пытался. Один из наиболее длительных "лисповых запоев" был связан с таким диалектом, как newlisp, представляющим собою откровенно скриптовый язык и довольно здорово отличающийся от классических реализаций (Common Lisp, прежде всего). Около года ваял скрипты общего назначения именно на нём. И вроде, даже интересно было, доволен был. Правда, когда в какой-то момент написал какой-то скрипт (по старинке!) на Python, отложив уже привычный newlisp в сторону, неожиданно даже для себя вздохнул с облегчением! :) Окинув взглядом всё, что было на нём понаписано, опять же неожиданно для себя обнаружил, что написано-то всё в стиле исключительно процедурном (никакой функциональщины там даже и рядом не лежало). Наличие синтаксических скобок в языке сами по себе не делают его ещё функциональным. Везде, где "по-хорошему" должна бы быть рекурсия, вопрос решался итеративно. Так и зачем оно было надо? Если для решения моих задач существуют языки именно для моих задач! Вот не попадались сроду задачи, требующие Лиспа! Так что, никаких "слёз радости" не было и в помине. Ну, а двадцать одну минуту вполне можно и выбросить из жизни - вполне достаточно, думаю, для понимания основ. Там всё просто. Тем более, для "сишника"...
ответить
From Anonymous (unverified) Fri Jan 20 12:01:00 2017 UTC
"только один
"только один приличный учебник"
На самом деле не всё так уныло!
Маленьким "сишникам" можно, к примеру, ещё посмотреть "The Little Schemer" (Daniel Friedman), "Land of Lisp..." (Conrad Barsky), Paul Graham "Ansi Common Lisp" имеется даже на русском. Есть и с чего начать, и чем продолжить.
ответить
From Anonymous (unverified) Thu Jan 19 22:23:00 2017 UTC
"Честно говоря,
"Честно говоря, его практическая применимость выглядит для меня довольно мутной."
В общем, да! :) Понять могу. Примерно также полагаю, поскольку тоже не раз хватался и за Lisp, и за некоторые другие "нестандартные" языки. И если, скажем, Пролог находил у меня применение как некая достаточно удобная среда для органицации баз данных - очень своеобразный язык - сформулировал условия, ограничения, и тут же имеешь ответ, то задачи для Lisp'а не находилось вообще!
ответить
From admin Wed Feb 1 23:04:08 2017 UTC
Попробуйте на
Попробуйте на досуге решить задачу символьного дифференцирования. Дана формула в текстовом виде, надо взять производную по заданной переменной, попутно выкинув всякие сложения с нулём и умножения на единицу, которые при автоматическом дифференцировании отовсюду вылезают.
А ещё Лисп хорош при анализе и преобразованиях всяческих SGML-подобных разметок, в смысле XML и HTML. Я вообще не понимаю, какого чёрта мы вынуждены рисовать эти нелепые тэги в угловых скобках; тема слабоструктурированных данных полностью раскрыта S-выражениями в конце 1950-х годов, то есть за четверть века до появления HTML.
ответить
From Anonymous (unverified) Mon Jan 23 12:42:00 2017 UTC
Не холивару
Не холивару ради, а токмо справедливости для, можно было бы "сишнику" предложить на пробу такой язык, как Tcl. Уж коли автор был неподалёку упомянут. В нём тоже есть нечто интересное. Во всяком случае, идея метапрограммирования, имеющаяся в нём, вполне может быть понята "сишником" быстрее, чем при изучении языков семейства Lisp. Мне, например, кажется, что некто Столлман в оценке этого языка был неправ абсолютно.
ответить
From admin Wed Feb 1 23:05:19 2017 UTC
Будет-будет, я
Будет-будет, я как раз Tcl собирался рассматривать как представителя командно-скриптовой парадигмы. Вот только при чём тут Лисп, пардон?
ответить
From Anonymous (unverified) Thu Mar 16 11:35:00 2017 UTC
Лисп здесь при
Лисп здесь при том, что из всех встреченных по жизни языков, Tcl показался мне ближе всего именно к Лиспу. То есть, исходилось не из разницы в парадигмах, а из сходства самих языков. Ну, правда, оставил очень неоднозначное впечатление... Совершенно неинтуитивный язык, много конструкций, которые сравнить оказалось не с чем. Взять upvar, uplevel, к примеру - это же додуматься надо вводить в язык такую кочергу для доставания адресов переменных, давно уже закопанных в стеке! Чего бы просто и понятно не указать в передаваемых аргументах или в параметрах вызываемой функции то, что значение переменной будет меняться? Людям-то понятней будет!
Но в целом, язык достаточно интересный (именно в силу своей неинтуитивности, неожиданности, своеобразия синтаксиса), хотя и практически проще применять тот же Python и даже Perl. Каких-то особых преферансов выявлено не было.
ответить
From Anonymous (unverified) Tue Mar 14 16:53:00 2017 UTC
"Мне, например,
"Мне, например, кажется, что некто Столлман в оценке этого языка был неправ абсолютно."
Да понять человека несложно! Видел я этот язык давненько, но вряд ли что там изменилось. Помнится был там такой оператор incr - вроде, понятно, что incr i инкрементирует i (i++) (правда, непонятно, почему не требуется $), а теперь догадайтесь с трех раз, как i декрементируется! Угу, incr i -1. Нормально? Думаю, что и Столлман о том же.
И там таких "изящных" горбушек сколько хочешь!
ответить
☞ From Anonymous (unverified) Fri Dec 16 05:30:00 2016 UTC
Эх, string, понимаешь...
Вот нет у людей чувства прекрасного!
Бывает засидишься малость подольше, код разных языков воспринимается уже несколько своеобразно - видишь "красоту" кода, что ли... Чисто визуально. Неестественность любая в языке прослеживается. Сложно довольно объяснить ощущение, но когда посреди откровенно сишного кода встречается какой-нибудь "вехтор" заместо массива, то выглядит он каким-то ублюдком просто! Инородным чем-то. Нечто типичное не то. По глазам просто бьёт. Вот в Python почему-то любой контейнер выглядит изящно - на месте он. На своем месте. Да и синтаксис красивше. "Стринги" опять же эти! Ну, не мущинская одёжа, эти ваши "стринги"... Char! И крути его как хочешь! Не для стрингов С++, не для стрингов. Ведь наваяют целые контейнеры стрингов - смотреть на код страшно! А ведь начиналось когда-то так хорошо... Классы. Классы в Си дадены были для сотворения мира - от атома до Вселенной, любой уровень! Для созидания. Для строительства. Для выражения мысли, которая более по-человечески звучит по-сравнению с чистым Си. А сейчас в какой кусок кода ни плюнь - что от лукавого, что от Степанова, что от прочих затейников... В общем, сплошные стринги! Просто глазу отдохнуть негде...
Вот в чистом Си почему-то ничего никогда глаз не режет!
ответить
From admin Mon Dec 19 22:08:00 2016 UTC
В чистом Си -- ещё как режет
Знаете, что ОНИ сделали с переменной errno? Она теперь не переменная, она теперь макрос. Примерно такой:
Вот не знаю как вам, а мне макрос маленькими буквами ещё как глаз режет. И константы, вводимые enum'ом, но при этом набираемые капсом — тоже. И то, что если
f
— имя функции, то написать можно хоть простоf
, хоть&f
, хоть*f
— и это всё будет одно и то же — режет-режет. А если вернуться к библиотеке, то как вам, например, мьютекс внутри malloc'а? Вот я, например, принципиально никогда — НИКОГДА — не использую треды и другим не советую, почему я должен терпеть мьютексы в библиотечных функциях? Хоть свою libc пиши.Увы, чистый Си — коленно-гаражная поделка, не более того, и каждый новый теракт в виде очередного стандарта это всё только усугубляет. Но, как я неоднократно подчёркиваю в тексте книги, будь он хоть триста раз гаражной поделкой, любим мы его не за это.
ответить
From Anonymous (unverified) Sun Jan 15 05:54:00 2017 UTC
Ужас внутри malloc'а
как вам, например, мьютекс внутри malloc'а?
Взмедитировал было, но не осознал почему-то, не ужаснулся. Надо будет попробовать! :)
Что "нехорошо" - понял. Далее будем посмотреть.
ответить
From admin Mon Jan 16 18:41:40 2017 UTC
Так классика же
Классика любого правильного развития инструмента состоит в том, что каждый расплачивается только за то, чем пользуется, а за ненужное — не платит. Мьютекс внутри malloc'а нужен только тредофагам, а расплачиваются за него все, кто пишет на Си и/или пользуется однопоточными программами, написанными на Си.
Давить давилкой.
ответить
From Anonymous (unverified) Thu Oct 26 09:12:00 2017 UTC
Есть thread-safe
Есть thread-safe библиотеки, а есть не thread-safe библиотеки, в том числе и stdlib есть в не thread-safe реализации. Есть опции/ключики для отключения thread-safe. Слышали про такое?
ответить
From admin Mon Nov 6 04:36:03 2017 UTC
ЩАЗ
Если бы всё это было, настал бы рай.
В действительности есть только некоторые функции (вроде localtime_r), которые специально сделаны как multithread safe, в отличие от их прообразов без _r, которые в их исходной спецификации реализовать как mt-safe невозможно. Никаких "ключиков/опций" для "отключения" mt-safety нет, не существует даже compile-time options в реализации самих библиотек для этого -- во всяком случае, в glibc и в musl. Не могу сказать, что смотрел прямо вот _все_ реализации libC, но очень сомневаюсь, что такое есть хоть где-то. Если говорить о стандартах, то в "современных" их версиях прямо написано, что замена malloc/free собственными функциями пользователя ведёт к U.B.
Между прочим, сделать две параллельные версии функций, имеющих/не имеющих в пузе мьютексы, можно было бы без особых проблем, и те их версии, которые с мьютексами, включить в pthread, так что при наличии -lpthread подхватывались бы именно эти версии, а при отсутствии — версии из libc без всяких мьютексов. Но этим, разумеется, никто не заморочился, ни гнушники с их монстром по имени glibc, ни Rich Felker с его более-менее разумным musl'ом. Не, нуачо, маленький же оверхед, и вообще, все же пишут на тредах, ога.
Так что прежде чем спрашивать меня, слышал ли я о чём-то, иди сам предмет поизучай.
ответить
From Anonymous (unverified) Sun Jan 15 09:27:00 2017 UTC
"Вот я,
"Вот я, например, принципиально никогда — НИКОГДА — не использую треды"
А почему? Что-то не так с многопоточностью в принципе?
ответить
From admin Mon Jan 16 18:33:00 2017 UTC
Офигеть можно
Мне вот интересно, вы такие вопросы всерьёз задаёте? Если да, то вам треды использовать просто опасно: тем, кто в теме разбирается, заведомо известны все аргументы противников многопоточности (как, например, мне известны все аргументы её сторонников). Ну то есть с этими аргументами можно не соглашаться, но ЗНАТЬ их строго обязательно.
Настоятельно рекомендую что-нибудь на эту тему погуглить. Я с двух запросов нашёл вот такую презенташку: https://web.stanford.edu/~ouster/cgi-bin/papers/threads.pdf По правде говоря, у меня этот урл не открылся, пришлось скачивать сохранённую копию из веб-архива. Вот этот файл: http://www.croco.net/misc/why_threads_are_a_bad_idea.pdf Останавливаться на этом не следует: во-первых, это всего лишь презенташка без текста, только тезисы, а во-вторых, она охватывает далеко не всё.
В качестве продолжения напомню старую цитату из Алана Кокса:
A computer is a state machine. Threads are for people who can't program state machines.
Я с Коксом полностью согласен, и не потому что он Кокс, а потому что он, зараза, тут абсолютно прав.
ответить
From Anonymous (unverified) Tue Jan 17 06:41:00 2017 UTC
Маленькие треды - маленькие беды, большие треды...
Да, спасибо. В столь явном виде мысль "threads are a bad idea" попалась впервые.
Но, правда, это действительно лишь "презенташка". К чему-то. И без этого "чего-то" она выглядит довольно убого. По сути, всё, что там выражено - это то, что треды - вещь запарная ("very hard to program"), слабодуракоустойчивая ("Forget a lock? Corrupted data."), требующая квалификации и однозначного понимания, куда их можно пихать, а куда нет ("Too hard for most programmers to use."). И потом, "презенташка" 95-го года от автора тикля - как раз время появления и развития наиболее популярных графических интерфейсов. Так что, не исключаю, что многоупоминаемое "event-driven programming" связано именно с этим. И именно поэтому треды оказались нехороши. Когда прикручивался к Tcl Tk уже не помню. Но то, что последние версии Tcl имеют уже многопоточность - это есть факт. Отказ от многопоточности... эдак недалеко и до признания, что и вытесняющая многозадачность - фигня. А чего - каждому процессу свой процессор! "One thread per CPU"? Да никто ж не против! Собственно, вполне реально... лет так через "дцать". Ну, а пока - треды, как бы нехороши они не были! :)
Как бы то ни было - за новую для меня информацию благодарю. Вопрос бы надо угуглить повнимательней.
ответить
From admin Wed Feb 1 23:07:00 2017 UTC
По сути, всё,
По сути, всё, что там выражено - это то, что треды - вещь запарная ("very hard to program"), слабодуракоустойчивая ("Forget a lock? Corrupted data."), требующая квалификации и однозначного понимания, куда их можно пихать, а куда нет ("Too hard for most programmers to use.").
Простите, вам МАЛО? Ладно, добавлю ещё один аргумент: от них нет никакого полезного толка, одни проблемы.
Отказ от многопоточности... эдак недалеко и до признания, что и вытесняющая многозадачность - фигня.
Чушь собачья. Я никогда не имел ничего против использования параллельных процессов, если это делается по делу. Но не тредов, работающих в одном адресном пространстве.
ответить
From Anonymous (unverified) Wed Oct 25 20:02:00 2017 UTC
А в-третьих, эта
А в-третьих, эта презенташка очень слишком древняя.
http://russian.joelonsoftware.com/Articles/Craftsmanship.html
ответить
From admin Mon Nov 6 04:51:29 2017 UTC
Вообще не о том
Ссылка любопытная, но где там хоть слово о том, чтобы треды могли быть полезны? Впрочем, и о том, что они вредны, только ссылка на Реймонда и всё.
ответить
From maxim (unverified) Fri Dec 23 00:22:00 2016 UTC
Вот в чистом Си
Вот в чистом Си почему-то ничего никогда глаз не режет!
Бгг, а вы код openssl, например, смотрели?
ответить
From admin Fri Dec 23 12:52:55 2016 UTC
Справедливости ради
это всё-таки не язык виноват. Написать как курица лапой можно на любом языке.
ответить
From maxim (unverified) Fri Dec 23 16:36:00 2016 UTC
Так и я про то
Так и я про то же.
ответить
☞ From maxim (unverified) Tue Dec 6 23:20:00 2016 UTC
Раз уж начал тут писать
Раз уж начал тут писать, то не могу не спросить про STL. Почему вам кажется, что это плохая идея включить его в стандарт? Для примера возьму std::string -- разве чем-то плохо его использование в коде? На мой взгляд, это удобно всегда иметь под рукой некий автообъект, который содержит в себе строчку и который присутствует на всех компиляторах. Ну, то есть я серьезно не понимаю, в чем проблема присутствия этого класса в стандарте с вашей точки зрения. Чтобы как-то "прорекламировать" этот класс, я на досуге порылся в ваших исходниках, и обнаружил ошибку в http://www.croco.net/software/inifile/ :
IniFileParser::Parameter::Parameter(const char *aname, const char *aval)
{
name = new char[strlen(aname)+1];
strcpy(name, aname);
value = new char[strlen(aval)+1];
strcpy(value, aval);
next = 0;
}
IniFileParser::Parameter::~Parameter()
{
delete[] name;
delete[] value;
if(next) delete next;
}
-- в случае если второе выделение памяти закончилось неудачей (= выкинулось исключение), то первое выделение памяти утекает в неведомые края и остается с процессом до конца. Конечно, проблема так себе, но она имеет место. ИМХО, если использовать std::string в данном случае, то данная проблема исключена просто автоматически, и какого то оверхеда с тем, что сейчас имеется в этом коде, в связи с использованием STL, я не могу придумать (ну, кроме пары dword'ов, которые увеличат размер класса).
ответить
From admin Thu Dec 8 10:36:28 2016 UTC
Полчаса здорового смеха продлевают жизнь на сутки
На вопрос про STL тут на сайте в комментариях ответы неоднократно давались, даже прямо на этой странице. Повторять одно и то же мне изрядно надоело, поэтому не буду (впрочем, как правило, это и бесполезно: если человек не понимает, почему STL ни на что не годен, то никакие объяснения ничего не дадут).
Но вот дальше, гм... э...
и обнаружил ошибку
если второе выделение памяти закончилось неудачей (= выкинулось исключение), то первое выделение памяти утекает в неведомые края и остается с процессом до конца
Вы ведь пошутили, да? Хотя, похоже, не пошутили.
Ну так вот, в современных (читай — послеDOSовских) условиях операция выделения динамической памяти может кончиться неудачей в двух случаях: если процесс дошёл до максимального возможного размера виртуального пространства (обычно 3Gb на 32-битных системах, на 64-битных можно считать, что этого предела нет вообще) и если в системе реально кончилось пространство для свопа. О наступлении второго случая ваш процесс не узнает — в такой ситуации, во-первых, встаёт раком вся система, и тут уже не до какого-то там несчастного процесса, и, во-вторых, ошибка как таковая случается не при выделении памяти, а при обращении к ней, и выглядит это как прилетевший фатальный сигнал, а вовсе не как NULL из malloc'а и тем более не как исключение из new. Что касается первого случая, то ежели процесс дорос до 3Gb, то, очевидно, работать дальше он заведомо не сможет, так что даже если при этом система его не пристрелит (насколько я понимаю, это зависит от версии ядра), то он в любом случае сдохнет сам, причём прямо сейчас. И уж во всяком случае жалкая утечка памяти, случившаяся непосредственно перед полным армагеддецом — это самое последнее, что должно нас волновать.
(NB: да, я не проверяю значение, возвращаемое malloc'ом)
если использовать std::string в данном случае, то данная проблема исключена просто автоматически
Безотносительно того, что в данном случае проблема существовала исключительно в вашем воображении — если хотите, чтобы проблемы решались автоматически, пишите на питоне или на пхп — там вообще динамической памяти нет.
ответить
From maxim (unverified) Sat Dec 10 01:35:00 2016 UTC
На вопрос про STL
На вопрос про STL тут на сайте в комментариях ответы неоднократно давались, даже прямо на этой странице.
Так я ж все их прочитал. На мой взгляд, они все несколько неконкретны, например "С ними не так буквально всё. Впрочем, это либо очевидно, либо — если не очевидно — то любые объяснения, как правило, бессмысленны". Не могли ли бы вы пояснить на примере, чем, по вашему мнению, замена голых указателей, в той же либе inifile, на std::string плоха? (я не про внешние интерфейсы, а про реализацию)
Ну так вот, в современных (читай — послеDOSовских) условиях операция выделения динамической памяти может кончиться неудачей в двух случаях: если процесс дошёл до максимального возможного размера виртуального пространства (обычно 3Gb на 32-битных системах, на 64-битных можно считать, что этого предела нет вообще) и если в системе реально кончилось пространство для свопа
А разве нельзя через ulimit ограничить память процесса? В OpenBSD вроде вообще это ограничено по дефолту довольно жестко.
И уж во всяком случае жалкая утечка памяти, случившаяся непосредственно перед полным армагеддецом — это самое последнее, что должно нас волновать.
Здесь соглашусь, думал, что этот параметр прилетает извне (из файла, например, где могут быть строки по 768мб), но по какой-то причине конструктор вызывается только с "" во втором параметре, если я ничего не пропустил. Вот, видимо, более "честный" пример на тему std::string vs char*:
delete[] value;
value = new char[ll+1];
-- тут строка вроде может прийти через
IniFileParser::SetParam
от пользователя либы (который мог прочитать целый гигабайт из файла), а т.к. value не обнуляется после delete[], то рано или поздно будет double free.ответить
From admin Mon Dec 19 21:57:00 2016 UTC
Тут вопросов целый ряд
Пардон, долго я на этот коммент внимания не обращал, поскольку в нём, кажется, вопрос всего один, но на самом деле их тут целый ряд:
На часть этих вопросов тут в комментариях ответы уже были даны, вы просто предпочли их не заметить, зацепившись за "рамочную" фразу и решив, видимо, что она тут единственная. Так или иначе, рано или поздно мне придётся сформулировать развёрнутые ответы на каждый из этих вопросов. Извините, но это не прямо сейчас, тут каждый из этих вопросов тянет на статью килобайт по тридцать каждая.
Но есть одна вещь, за которую вам большое спасибо: это насчёт ulimit'ов. Я почему-то был уверен, что при достижении любого из установленных setrlimit(2)'ом предела процессу тут же приходит полярный зверь песец в виде фатального сигнала, ан нет: лимит на максимальный объём адресного пространства (который ulimit -v, он же
RLIMIT_AS
) работает мягче, там, оказывается, brk и mmap возвращают ошибку, и — вуаля! — malloc возвращает NULL. Вот те номер. Я-то был уверен, что заставить malloc вернуть NULL в современных условиях вообще невозможно, ну то есть если, конечно, не давать ему заведомо неправильный параметр, либо нулевой или отрицательный, либо превышающий размер адресного пространства.С другой стороны, гм... double free? Программа, упёршаяся в лимит, до double free не доживёт, и разница между программой, проверяющей malloc на NULL, и программой, которая этого не делает, лишь в том, в каких конкретно выражениях она свалится. Точнее, кто нам скажет, что наша программа "всё": она сама или её окружение (последнее в форме SIGSEGV с сакраментальным "Segmentation fault, core dumped" в результате разыменования нулевого указателя). Программу, которая после NULL из malloc'а ещё что-то сможет сделать, я теоретически могу себе представить (ну там всякие свои кеши подропать, что-то на диск слить и освободить, etc), но на практике таких не бывает. Слишком много сил на это надо и слишком редко до такой ситуации доходит дело.
Хотя, конечно, валиться по SIGSEGV'у — это моветон. Придётся мне, видимо, пересмотреть своё отношение к значению, возвращаемому malloc'ом.
ответить
From maxim (unverified) Fri Dec 23 00:13:00 2016 UTC
но на самом
но на самом деле их тут целый ряд
Не силен в формулировке своих мыслей, тут вы правильно сформулировали, что я хотел спросить:)
Сразу замечу, что я тоже считаю, что нельзя использовать STL при обучении конструкциям языка C++, потому что это несколько странно.
Так или иначе, рано или поздно мне придётся сформулировать развёрнутые ответы на каждый из этих вопросов.
Было бы интересно почитать:)
На часть этих вопросов тут в комментариях ответы уже были даны
почему я считаю сугубо дебильным класс string
Замечу, что, насколько я помню, на этом сайте были только претензии к отсутствии copy-on-write в реализации строк. Но и при использовании malloc/free этого же тоже не происходит. Тем более с COW строками появляются неприятные проблемы, типа того, что если позвали c_str(), то надо делать копию памяти внутри вызовы перед возвратом указателя, т.к. кто-то может сохранить этот указатель (аналогично при любых вызовах приводящих к возврату сырой памяти).
но и свой собственный класс, созданный для обработки строк, который я называю ScriptVariable (см. там же библиотеку scriptpp)
Ну это-то почти очевидно почему. Подозреваю, тот класс создавался для своих узких целей с использованием refcount (и где, возможно, это было оправдано), а в либе inifile это просто не за чем, потому что самой с собой ей скорее всего нечего шарить, а обязывать пользователя передавать такой класс в методы -- это мазохизм для клиента и, скорее всего, пример плохого интерфейса.
С другой стороны, гм...
Я тут еще раз попытаюсь сформулировать что я хотел сказать на примере, безотносительно вашего кода. Допустим, у кого-то есть веб сервер, на который можно аплоадить .zip файлы и получать распакованные из архива файлы. Но нельзя же писать кодяру типа (далее псевдокод в стиле C с допущениями, что не будет integer overflow и не будет ошибок распаковки, связанных с форматом. По какой-то причине отступы пропали)
Потому что кто-то может скрафтить такой zip файл, что несколько первых malloc'ов будут успешными, а последний потребует много-много памяти и выделение окончится ошибкой. Т.о. образом повесить (с помощью memory leak) или убить (из-за разыменования NULL'а) подобный сервер не будет проблемой. В таком контексте, игнорирование результата выделения памяти кажется крайне диким. Ну то есть такое такое поведение возможно для написания программ написанных на коленке для собственных целей, но это не уровень библиотек, которые можно использовать в подобных местах. И поощрять такой подход, на мой взгляд, неправильно. А если же корректно обрабатывать результат malloc'а, то занятая память освободится, сколько бы ее ни было и с сервером ничего не случится.
ответить
From admin Tue Jan 3 13:05:00 2017 UTC
Пардон за
Пардон за задержку, было сугубо не до того.
Было бы интересно почитать:)
Ну да, осталось только написать.
насколько я помню, на этом сайте были только претензии к отсутствии copy-on-write в реализации строк
Свой класс ScriptVarable я написал (и перешёл на него, тем самым полностью отказавшись от стандартной библиотеки C++) лет за десять до того, как std::string утратил своё единственное полезное свойство.
Нет, класс string я считаю дебильным не поэтому, а потому, что, во-первых, его интерфейс построен дебильно (ЕМНИП, пять методов find, шесть методов replace и всё в таком духе; можете для сравнения посмотреть, как построен интерфейс ScriptVariable), и, во-вторых, потому что этот класс, вроде бы предзназначенный для работы со строками, не умеет как раз того, что постоянно приходится со строками делать — разбиение на слова/токены и перевод чисел в строковое представление и обратно.
с COW строками появляются неприятные проблемы, типа того, что если позвали c_str(), то надо делать копию памяти
Ага, то есть вам дали адрес _чужой_ памяти, а вы возмущаетесь, что не можете её использовать как свою, и (упс) виноват-то, оказывается, COW.
Я бы сказал, что при любых передачах адресов не надо забывать про правило одного владельца, а если про него забыть, то тут уж хоть COW, хоть не COW — не поможет вообще ничего. Ну, разве что сборка мусора, но я сильно надеюсь, что такой вариант вы предлагать не станете.
а в либе inifile это просто не за чем
Дело не в этом, и, больше того, использование класса ScriptVariable с его развесистой функциональностью сделало бы реализацию inifile раза в полтора короче.
Дело в том, что библиотеки не должны зависеть друг от друга. Никакие, никогда, ни за что. До недавнего времени я считал, что стандартная библиотека чистого Си — это исключение из общего правила, сейчас я уже и в этом сомневаюсь.
кто-то может скрафтить такой zip файл,
Ну так проблема-то, естественно, не в zip-файле, а в том, что (а) надо проверять размеры и (б) чтение файла в память целиком допустимо только для очень небольших файлов, т.е. надо либо отказываться работать с файлами, размер которых превышает некую константу, либо, если файлы могут оказываться большими по смыслу задачи, то уметь обрабатывать их порциями.
Т.е. malloc тут вообще ни при чём.
P.S. отступы пропали, потому что тэг code так не работает :) Поменял его на pre. А ещё длина строк в коде не имеет права вылезать за 80 символов, о причинах — вот тут, параграф 1.3.4, стр. 22.
ответить
From maxim (unverified) Wed Jan 11 22:48:00 2017 UTC
во-первых, его
во-первых, его интерфейс построен дебильно (ЕМНИП, пять методов find, шесть методов replace и всё в таком духе; можете для сравнения посмотреть, как построен интерфейс ScriptVariable)
Ну, это, возможно, действительно странно. Вообще, я думаю, что этому в строке не место, т.к. это алгоритмы, внешние по отношению к контейнеру (хотя бы по тому, что должна быть возможность делать подобные операции и для сырых данных, не конструируя std::string). Предположим, что это legacy-ужосы уровня std::cout -- вас же не заставляют это использовать. Вообще, я строку тоже местами странной нахожу, но можно же выбрать "удовлетворительное" подмножество и пользоваться им. В любом случае, в std::vector подобных странностей нет, если говорить про контейнеры из STL.
шесть методов replace
Забавно, что бывает и больше.
во-вторых, потому что этот класс, вроде бы предзназначенный для работы со строками, не умеет как раз того, что постоянно приходится со строками делать — разбиение на слова/токены и перевод чисел в строковое представление и обратно.
Этож уже алгоритмы. Т.е. это и не должно входить в интерфейс std::string -- в чем проблема использовать что-то внешнее? Для разбиения -- std::find, для перевода чисел в строковое и обратно -- что-то другое. В любом случае невозможно впихнуть в класс строки все, что может кому-либо потребоваться в операциях с ней (сегодня переводим целые положительные числа, завтра числа с плавающей запятой с экспонентой и мантиссой, а послезавтра вообще захотим получать числа из строки "сорок два").
Ага, то есть вам дали адрес _чужой_ памяти, а вы возмущаетесь, что не можете её использовать как свою, и (упс) виноват-то, оказывается, COW.
Если у меня лежит const объект то я считаю, что должна быть гарантия того, что для внешнего наблюдателя (т.е. меня) объект не изменится ни при каких условиях (если честно им пользоваться без всяких кастов, конечно). Иначе это не по правилам языка как-то.
Я бы сказал, что при любых передачах адресов не надо забывать про правило одного владельца, а если про него забыть, то тут уж хоть COW, хоть не COW — не поможет вообще ничего.
Да, я тоже так думаю. Но в примере выше, это было бы несколько неожиданно, что мой const (!) объект которым я владею вдруг может перестать быть владельцем памяти и я это могу заметить, притом что его никто не менял (например, я в другом месте вызвал operator[] для того же объекта, при условии, что там нет константности).
Возвращаясь к теме "чужой" памяти, зачем нужен EnsureOwnCopy() здесь:
? Это же точно такая же "чужая" память, что и в c_str(), т.е. эти рассуждения можно переложить и на эту функцию, но здесь почему-то создание отдельной копии имеет место (на всякий случай уточню, что я в курсе, что если написать иначе, то будет ошибка).
Дело в том, что библиотеки не должны зависеть друг от друга.
Когда вы писали про использование этой строки, я и подумать не мог, что вы под этим имеете ввиду использование другой библиотеки, в которой реализация строки -- это не основное для чего эта библиотека нужна. Вообще, я подразумевал, что имеется ввиду написание аналогичного класса/копирование имеющегося.
До недавнего времени я считал, что стандартная библиотека чистого Си — это исключение из общего правила, сейчас я уже и в этом сомневаюсь.
Сразу делаете сисколы с неистовой переносимостью?:)
Ну так проблема-то, естественно, не в zip-файле,
Так я это и не утверждал.
(а) надо проверять размеры
Не совсем понял: какие размеры и как их проверять?
(б) чтение файла в память целиком допустимо только для очень небольших файлов, т.е. надо либо отказываться работать с файлами, размер которых превышает некую константу, либо, если файлы могут оказываться большими по смыслу задачи, то уметь обрабатывать их порциями.
Так а я же не против. Можно обрабатывать порциями в памяти, результат писать на жесткий диск, например. Но проблема-то не уйдет: раньше кончалась оперативная память теперь -- жесткий диск. И не думаю, что эти техника работы с RAM/HDD должна как-то отличаться друг от друга с т.з. обработки ошибок. А брать какую-нибудь константу -- это имхо вообще не очень: у кого-то она будет адекватно выглядеть на его машине, у другого она будет выглядеть слишком большой. А через 100 лет константа будет казаться смешной.
А ещё длина строк в коде не имеет права вылезать за 80 символов
А у вас негров линчуют^W^W табы с пробелами перепутаны в scriptpp-0.3.00.tgz . И тега <strike> в комментариях нет.
ответить
From admin Mon Jan 16 19:20:52 2017 UTC
это алгоритмы,
это алгоритмы, внешние по отношению к контейнеру
Строка — не контейнер. Точнее, она мне в качестве "контейнера" не интересна и не нужна, в моём понимании строка есть абстрактный тип данных, хранящий (спасибо Капитану) строку (в смысле, текст или его фрагмент). То, что строка может рассматриваться как массив символов (причём осторожно, с оговорками и не всегда) — это одно из её свойств, не единственное и не главное.
если говорить про контейнеры из STL
Вроде бы речь не шла о контейнерах. А если бы пошла, то я бы использовал совершенно другие выражения. Если строка мне всё-таки нужна, не в том виде, так в другом (свой-то класс я для этого в итоге всё-таки сделал), то контейнеры не нужны никогда, ни для чего, ни в каких случаях — это заведомо вредная сущность, не имеющая права на существование.
Этож уже алгоритмы
Разделение вида "контейнеры отдельно, алгоритмы отдельно" — это парадигма, внедрённая, собственно говоря, STL'ем и вредная, как и всё, что с этим бастардом связано. На самом же деле в ООП не бывает ничего "внешнего по отношению", там есть только объекты и их методы. Иной вопрос, что STL — это не ООП, а АТД, а его долбаный автор вообще не умеет ООП и неоднократно заявлял, что ООП есть методологическая ошибка.
Если у меня лежит const объект
Тут у вас наблюдается путаница. Как это "лежит const-объект"? Я ни разу не видел, чтобы свой собственный объект (именно объект) делали const'ом, хотя язык это и допускает.
Так вот, если у вас лежит ОБЪЕКТ — ваш собственный объект, например, локально сконструированный в стековом фрейме вызванной функции, и вы с этим объектом не делаете ничего, что могло бы изменить его состояние, то он не может вдруг внезапно перестать быть владельцем его памяти. При COW свою собственную копию делает тот, кого изменяют, а не тот, кто остаётся неизменным.
Если же у вас на самом деле не объект, а константный адрес такового (неважно, ссылка или указатель), то объект при этом не ваш. Как следствие, нельзя предполагать его неизменность, если вы допускаете передачу управления кому-то, кто хотя бы теоретически может этот объект изменить.
Сразу делаете сисколы с неистовой переносимостью?:)
Пока нет. Но не исключаю, что придётся, если дело так дальше пойдёт. Между прочим, сисколлы постабильнее будут, чем libc, в том смысле что в libc поведение некоторых функций то и дело меняется, а сисколлы (во всяком случае, ядра Linux) сохраняют обратную совместимость чуть ли не со временами, когда версия ядра начиналась с нолика.
Не совсем понял: какие размеры и как их проверять?
Прежде чем начинать размещать содержимое файла в памяти, нужно проверить его размер, сравнив таковой с константой, заданной, например, в конфигурационном файле.
раньше кончалась оперативная память теперь -- жесткий диск.
Вообще-то мы вроде malloc обсуждали. Впрочем, проблема с нехваткой жёсткого диска решается теми же сравнениями: во-первых, должен быть установлен верхний предел для размеров файла, а во-вторых, многие сервера отказываются принимать информацию, которую потом нужно будет сохранить, если в результате такого сохранения места на диске останется меньше, чем, опять же, некая константа. Например, postfix так работает.
через 100 лет константа будет казаться смешной
Во-первых, я сильно сомневаюсь, что хоть какой-нибудь софт проживёт сто лет, а во-вторых, если константу задавать в конфиге, проблем с её абсолютным значением возникнуть вроде не должно.
табы с пробелами перепутаны
где?
И тега <strike> в комментариях нет
Так его и нет в XHTML вообще-то.
ответить
From maxim (unverified) Mon Jan 16 22:34:00 2017 UTC
По поводу STL,
По поводу STL, видимо, мне придется подождать статьи (если она будет, конечно), потому что сейчас обсуждение идет как-то урывками. Например, неясно, чем вам контейнеры не угодили, что не так с контейнерами-алгоритмами, в чем проблема использовать "удовлетворительное" подмножество и т.д. -- слишком большое обсуждение получается.
Тут у вас наблюдается путаница.
Да, я написал полную ерунду. К сожалению, возможности отредактировать комментарий не было.
Между прочим, сисколлы постабильнее будут, чем libc
Я ж говорил, про переносимость на разные UNIX'ы (хотя бы) и на разные хардварные платформы. Даже на линуксе x86 эти сисколы по разному делаются вроде (sysenter/syscall/int 80h). В этом плане, полагаю, переносимость околонулевая (если вы собрались хардкодить линуксовые вызовы, конечно, а не как интересный факт написали).
в том смысле что в libc поведение некоторых функций то и дело меняется
Я не специалист по libc -- можно ли примеры, ради интереса?
сравнив таковой с константой, заданной, например, в конфигурационном файле
Возможно, это логично для какой-то конечной программы, но не для либы. Я, например, (как разработчик конечной программы, которая использует некую либу), могу ограничить потребляемый размер через ulimit или запуская x86 на x64, позволяя использовать программе все что она пожелает. Не совсем ясно, в этих случаях, почему либа должна меня ограничивать в выборе средств. Впрочем, вы вроде согласились задуматься над проверкой кода возврата malloc'а, поэтому, видимо, и обсуждать здесь нечего.
где?
Вот здесь, файл scrvar.cpp, например.
ответить
From admin Mon Feb 6 17:23:47 2017 UTC
По поводу STL,
По поводу STL, видимо, мне придется подождать статьи
Будет, конечно. Пока не могу сказать, когда.
Я ж говорил, про переносимость на разные UNIX'ы (хотя бы) и на разные хардварные платформы.
В этом случае достаточно сделать обёртки для сисколлов. У меня вон для асма (!) в книжке приводится файл, позволяющий все примеры из книжки запускать на Linux и FreeBSD, хотя там разные конвенции.
Даже на линуксе x86 эти сисколы по разному делаются вроде (sysenter/syscall/int 80h)
Насколько я понимаю, sysenter не использовался никогда, а syscall стал использоваться на x86_64. При этом ядро благополучно продолжает поддерживать int 80h для сохранения совместимости с 32-битными бинарниками. Но это к делу не относится :-)
если вы собрались хардкодить линуксовые вызовы
Если под "хардкодить" понимается "делать вручную в каждом месте, где нужно обратиться к ядру", то это тупо неудобно, переносимость тут вообще ни при чём.
Я имел в виду несколько другое: Си вполне позволяет написать свои собственные обёртки для сисколлов и работать без стандартной библиотеки. И вот такую возможность я рассматриваю, да.
Я не специалист по libc -- можно ли примеры, ради интереса?
Да хоть бы тот же многострадальный signal. В ядре Linux этот сисколл есть и имеет семантику System V ("одноразовую"). В libc имеется одноимённая функция, реализованная через sigaction, и она долгое время демонстрировала семантику BSD; потом кому-то пришло в голову зачем-то ещё и SA_RESTART из неё взводить, что лично мне испортило песню: я студентов учил, что блокирующие системные вызовы при приходе сигнала вылетают с EINTR, что нужно учитывать, а ушлые студенты в какой-то момент мне продемонстрировали, что никто никуда уже не вылетает (хотя ещё недавно вылетало). А не далее как полгода назад у нас в терминальных классах обнаружилось, что дебианеры опять всё сломали и signal у них теперь снова в семантике System V.
Всё это время поведение _вызова_ signal оставалось абсолютно неизменным, только до него ещё поди доберись.
Возможно, это логично для какой-то конечной программы, но не для либы.
Для либы всё ещё проще: она соответствующий лимит должна получить от головной программы (например, как параметр функции инициализации, или что-нибудь ещё в таком духе), даже никакой конфигурационный файл не нужен.
ответить
From maxim (unverified) Wed Feb 8 21:29:00 2017 UTC
Уж отчаялся
Уж отчаялся получить ответ:)
Если под "хардкодить" понимается "делать вручную в каждом месте, где нужно обратиться к ядру", то это тупо неудобно
Я имел ввиду, что где-то придется вшивать в бинарь OS specific инфу, типа "какой сискол надо позвать для вызова open если это Linux для ARMv7".
Я имел в виду несколько другое
Так а это и не особо важно с т.з. зрения переносимости. Здесь проблема в том, что я не могу просто так взять и скомпилировать сорцы под другую ОС/архитектуру, если использовать такой подход (вызов голых сисколов вместо функций из стандартной библиотеки). Ну то есть, вы же физически не учтете в своей "прокладке" те ОС и архитектуры которые еще не появились, т.е. потенциальным клиентам придется допиливать эту "прокладку". Конечно, это все можно вынести в stand-alone либу, но тут получается зависимость либы от либы, а подобные зависимости вам (да и мне тоже) не нравится. И это даже не учитывая всякие экзотические случаи типа cygwin'а (подозреваю, что там внутри libc'шных функций прямых сисколов вообще не происходит).
Да хоть бы тот же многострадальный signal.
Всё это время поведение _вызова_ signal оставалось абсолютно неизменным
Я если, честно такого сискола, как signal не нашел ни в Linux, ни во FreeBSD. Есть только sigaction, который вполне себе фиксированный. Т.е. если я ничего не упустил, то в данном контексте несчетовый пример: сискола такого нет, соответственно, переход на сисколы бы не решил проблемы (такого сискола же нет!). А если использовать переносимый sigaction, то проблемы бы не возникло.
я студентов учил, что блокирующие системные вызовы при приходе сигнала вылетают с EINTR, что нужно учитывать, а ушлые студенты в какой-то момент мне продемонстрировали, что никто никуда уже не вылетает
Подозреваю, что необходимость учета ошибки EINTR из системных функции не зависит от версии Debian в машзале:)
ответить
From admin Wed Feb 8 23:01:46 2017 UTC
придется
придется вшивать в бинарь OS specific инфу
Не надо в неё ничего вшивать, бинарь сама по себе os-specific.
я не могу просто так взять и скомпилировать сорцы под другую ОС/архитектуру, если использовать такой подход
Условная компиляция поможет гиганту мысли
Я если, честно такого сискола, как signal не нашел
В Linux/i386 он имел номер 48, смотрите внимательнее. Правда, в x86_64 я его не вижу, видимо, всё-таки выкинули. Про FreeBSD не скажу, у меня её сейчас нет под рукой.
если использовать переносимый sigaction, то проблемы бы не возникло
Какой "проблемы"? Вы просили пример, я его привёл, ни о каких проблемах речи не шло. У меня вообще странное ощущение, что вы не помните, о чём сами же писали полтора поста назад. Ну так полистайте вверх и посмотрите. Про существование sigaction я, как можно догадаться, в курсе.
необходимость учета ошибки EINTR из системных функции не зависит от версии Debian в машзале
Студентам мало сказать, что вот так надо, а так не надо. Им ещё надо ответить на вопрос "почему". Иначе не поверят и правильно сделают.
Вот я им рассказал "почему", а они полезли проверять. И, опять же, правильно сделали, так и надо: многие вещи пока руками не потрогаешь, не поверишь. И -- упс -- всё оказалось не так.
ответить
From maxim (unverified) Wed Feb 8 22:01:00 2017 UTC
Для либы всё
Для либы всё ещё проще: она соответствующий лимит должна получить от головной программы
Ну, честно говоря, не видел ни одной либы, которая бы принимала себе на вход такой параметр как "лимит памяти". Все известные мне либы, в которых есть параметр связанный с аллокациями, принимают на вход кастомный аллокатор (например, curl, zlib, openssl), что позволяет полностью управлять динамической памятью либы, в т.ч. ограничивать ее. В таком подходе либа обязана правильно обрабатывать ошибки аллокации. А т.к. такой подход похоже более общий, то нет причин использовать передачу лимита памяти (и придется считаться с тем, что аллокация может вернуть NULL).
ответить
From admin Wed Feb 8 23:04:09 2017 UTC
И что? Какое
И что? Какое это всё имеет отношение к предмету обсуждения? Или вы тут вываливаете всё, что по ассоциации вспомнили?
ответить
☞ From Anton (unverified) Tue Nov 29 15:52:00 2016 UTC
HTTPS
Андрей Викторович, почему сайт не работает через https? Порт 443, насколько я вижу, закрыт. Просто потому что действительный сертификат стоит денег, или есть какие-либо другие причины?
ответить
From admin Wed Nov 30 12:55:01 2016 UTC
Основная
Основная причина именно эта. Точнее говоря, сертификат не СТОИТ денег, за него ХОТЯТ денег. А стоить сгенерённые компьютером биты и байты не могут вообще нисколько, то есть принципиально — этим паразитам я не заплачу ни цента.
ответить
From Товарищ (unverified) Thu Dec 1 06:31:00 2016 UTC
Про сертификаты
Так сейчас же появился свободный центр сертификации Let's encrypt, у них бесплатные сертификаты.
ответить
From admin Thu Dec 1 07:14:25 2016 UTC
В принципе
В принципе штука любопытная, я про неё не знал, спасибо.
К сожалению, сходу ничего не вышло, там требуется клиент для ACME, и тот клиент, который они предлагают (certbot) написан на питоне. На моих серверах везде Opewall GNU/*/Linux, раскурить на нём питон в принципе можно (существуют пакеты от Гремлина и ещё от кого-то), но, откровенно говоря, лень, особенно если учесть, что результат далеко не всегда получается положительным, там постоянно вылезают трудности с библиотеками. Ещё два цента в мою копилку ненависти к развесистым интерпретируемым языкам.
Скорее всего, есть другие клиенты для этого ACME, прямо сейчас нет времени исследовать этот вопрос.
ответить
From Товарищ (unverified) Fri Dec 2 04:39:00 2016 UTC
Список АСМЕ клиентов
Андрей Викторович, если вопрос получения сертификата для вас в какой-то момент станет шибко актуальным, то чтобы может сэкономить ваше время на поиски клиента для манипуляций с сертификатами этой конторы, вот их список на сайте самого проекта:
https://letsencrypt.org/docs/client-options/
ответить
From admin Fri Dec 2 10:19:46 2016 UTC
Уже нашёл.
Уже нашёл. Осталось выбрать время и попробовать с этим что-то сделать.
ответить
From Anonymous (unverified) Sun Dec 4 23:08:00 2016 UTC
А стоить
А стоить сгенерённые компьютером биты и байты не могут вообще нисколько
Почему? Как минимум, они могут стоить сумме эквивалентной затратам на потраченное электричество для их генерации. Кроме того, сюда же можно включить выплаты программистам, которые написали программу для генерации. (Это я безотносительно центров сертификации рассуждаю).
ответить
From admin Mon Dec 5 12:08:10 2016 UTC
Вот именно потому
Затраты электричества на генерацию одного сертификата — сумма настолько ничтожная, что о ней невозможно говорить всерьёз, это сотые доли цента. А вот идея выплат программистам как раз категорически неприемлема, собственно говоря, точно так же, как и в любых инициативных разработках, а равно и в других областях, где для этого пытаются применять так называемую "интеллектуальную собственность". В данном конкретном случае трудозатраты на создание программного обеспечения никак не связаны с количеством сертификатов, которые потом будут этим ПО сгенерированы. Следовательно, невозможно (вообще никак) связать стоимость сертификатов с зарплатой программистов, а все разговоры на эту тему представляют собой лишь прикрытие для откровенной торговли воздухом.
Вообще пора бы уже понять, что модель производственных отношений, заточенная под материальное производство, совершенно непригодна для случая "производства" информации.
ответить
From Anonymous (unverified) Mon Dec 5 20:11:00 2016 UTC
Затраты
Затраты электричества на генерацию одного сертификата — сумма настолько ничтожная, что о ней невозможно говорить всерьёз, это сотые доли цента.
А вот идея выплат программистам как раз категорически неприемлема, собственно говоря, точно так же, как и в любых инициативных разработках, а равно и в других областях, где для этого пытаются применять так называемую "интеллектуальную собственность".
Так я же и написал в скобочках, что говорю это безотносительно центров сертификации. И про зарплату программистов тоже безотносительно этого. Пример несколько надуманный, но, допустим, кто-то хочет найти закрытый RSA ключ по открытому и для этого нанимает людей, платит им деньги за код/анализ, платит за электричество (большие деньги скорее всего), в итоге получает меньше килобайта информации за много денег. Разве и эти сгенеренные компьютером биты и байты тоже будут стоит нисколько?
А по поводу центров сертификации, хоть я и не имел с ними дела никогда, но, подозреваю, они берут деньги за подтверждение личности и траты своего времени на это, а не за генерацию цифроподписи к сертификату.
ответить
From admin Tue Dec 6 18:32:53 2016 UTC
Пример
Пример несколько надуманный, но, допустим, кто-то хочет найти закрытый RSA ключ по открытому и для этого нанимает людей, платит им деньги за код/анализ, платит за электричество (большие деньги скорее всего), в итоге получает меньше килобайта информации за много денег
Это совершенно другой случай, потому что...
эти сгенеренные компьютером биты и байты
потому что эти биты и байты нельзя считать "сгенерёнными компьютером". Они получены в результате целенаправленной деятельности людей, которые использовали компьютеры, то есть их не компьютер сгенерил, их люди получили, и то, что они при этом пользовались компьютерами, никак сути не меняет.
Говоря про "сгенерённые компьютером биты и байты", я имел в виду такие биты и байты, которые сгенерированы компьютером по запросу без участия людей, то есть люди не тратят своё время на обслуживание отдельно взятого запроса. Если это не так, то есть если люди тратят своё время на обслуживание запроса, то стоимость таких битов и байтов будет определяться стоимостью трудозатрат. Собственно говоря, в мире есть всего две сущности, которые могут стоить денег: человеческое время (при условии, что оно потрачено не "вообще", а на обслуживание конкретного заказа; кто музыку заказывает, тот за неё и платит) и материальные (т.е. расходуемые) объекты. Электричество относится ко второй категории, то есть оно тоже стоит денег.
берут деньги за подтверждение личности и траты своего времени
Там не требуется подтверждать личность, к тому же в ряде стран "подтвердить личность" вообще практически невозможно ввиду отсутствия аналогов российских паспортов. Всё, что там требуется — это продемонстрировать свой контроль над доменом, это не требует вмешательства человека и траты человеческого времени.
ответить
From Anonymous (unverified) Tue Dec 6 22:45:00 2016 UTC
Говоря про
Говоря про "сгенерённые компьютером биты и байты", я имел в виду такие биты и байты, которые сгенерированы компьютером по запросу без участия людей, то есть люди не тратят своё время на обслуживание отдельно взятого запроса.
Значит я вас не так понял:)
Всё, что там требуется — это продемонстрировать свой контроль над доменом, это не требует вмешательства человека и траты человеческого времени.
Ну, это жесть какая-то, действительно. Видимо, оплата за подобное пропадет из-за бесплатных сервисов, того же let's encrypt, предложенного выше.
Btw, на этом сайте похоже время спешит на час вперед (по крайней мере у меня в браузере так в таймстампах комментариев).
ответить
☞ From Anonymous (unverified) Thu Nov 10 07:18:00 2016 UTC
Что почитать по С++
" ...буквально нечего было студентам ответить на вопрос "что почитать по C++""
Ирэ Пол. "Объектно-ориентированное программирование на языке С++", издание, которое существовало в 1997 году.
(В более поздних изданиях имя автора перевели как Айра Пол)
Выпускник ВМК,
преподавателя практикума (и С++) на 2 курсе - Т.В.Руденко вспоминаю с огромной благодарностью и уважением.
ответить
From admin Thu Nov 10 17:06:08 2016 UTC
Ну, нынче год не тот
Если оно на русском было издано в 1997 или раньше, то на языке оригинала, скорее всего, вышло году этак в 1994. То есть до начала степановской эпохи.
Более поздние издания (которые как раз под именем "Айра Пол") я листал, не понравилось. Уже, к сожалению, не помню, чем конкретно не понравилось.
ответить
From Oleg_68 (unverified) Thu Nov 10 20:43:00 2016 UTC
Можно
Можно бесконечно долго вспоминать книги, на которых учился - их у всех наберется немалая книжная полка. Конечно, их помнишь, как и преподавателей, которые чего-то тебе объясняли, благодаря которым ты на сегодня что-то знаешь. Но не будешь же предлагать нынешним студентам всю эту книжную полку! Хорошо бы ее представить в каком-нибудь очень конспективном, "квинтэссентивном" виде. Убрав лишнее. Книги по С++ вовсе не закончили еще писать и издавать, так что нынешние студенты свое еще огребут. Но на вопрос студента "что почитать" конкретно, указать на что-то пальцем в самом деле непросто. Как сказал поверху совсем уже нестуденческого возраста "Гриша" - это только если искать по ВУЗам методички. Похоже на истину. Действительно, их пишут люди, которые сегодня и сейчас обучают программированию. А здесь еще и целые книги издаются, не методички даже. Так что, на вопрос "что почитать", по мне - так уже есть куда показать пальцем. И думаю, что место это не единственное, хотя много их быть не может. Но поди найди, если даже на этот сайт, где издаются книги по программированию, я попал совершенно случайно, по какой-то совершенно серой, незаметной ссылке!
ответить
From admin Fri Nov 11 11:33:04 2016 UTC
Есть такая проблема, да
попал совершенно случайно, по какой-то совершенно серой, незаметной ссылке!
Поскольку коммерцией я тут не занимаюсь, делать для своего сайта рекламу в традиционном формате мне кажется несколько нелепым, особенно если учесть моё хорошо известное отношение к рекламе как к явлению.
Так что мне остаётся надеяться на word of mouth, также известное как «сарафанное радио». С учётом этого я ценю любую ссылку, будь она сколь угодно серой и незаметной.
ответить
From Anonymous (unverified) Fri Nov 11 01:29:00 2016 UTC
Тоже помню
Тоже помню этого автора, это издание. И тоже не понравилось. Правда, очень хорошо помню почему "конкретно". Препод у нас такой был - дяденька тихий, спокойный, весь из себя добродушный-добродушный, лекцию отчитает, что-то пробубнит себе под нос: "Книжечку посмотрите эту, эту... примерчики вот эти гляньте... эту еще книжечку... запишите, забудете..." Кто бы знал, записали бы! На зачете вроде тоже все хорошо, тихо, спокойно, вчистую зачеты вроде всем... За "маленьким" совсем исключением:
— Книжечку эту смотрели?
— Да!!!
— Примерчики эти делали?
— Конечно!!!
— Все получилось?
— Да!!!
— И на компьютере запускали?
— А то!!!
— Вот и славно, приходите через две недели...
Вот как раз и "примерчик" из этой самой "книжечки".
Уже при беглом взгляде видно, что одна из функций банально не дописана. То есть, программа не будет работать никак. И пример этот далеко не единственный. Типографии тогда работали просто жутко. Про переводы и говорить не приходится. Качество книг было совершенно отвратное. Вот этот наш "добродушный дяденька", оказавшийся на деле злым и коварным, этим и пользовался - говорят на такой ерунде полгруппы как-то завалил. Сейчас-то, даже весело, пожалуй, а тогда было не очень!
Правда потом (уже значительно позже), когда попалась подобная же типографская дребедень, уже даже интересно было привести ее к нормальному виду - не везде ошибки настолько тривиальные. Но - это было потом...
ответить
From Anonymous (unverified) Fri Nov 11 15:17:00 2016 UTC
А чего вам не
А чего вам не нравится? Смотрю по тексту, там еще через пару примеров вводятся понятия дружественной функции и перегрузки операторов. В трех словах буквально. А далее пример, в котором помимо отсутствующей той же функции, ещё и новые косяки! Похоже, книжка просто исполнена ребусов - разбирайся, да исправляй! Хороший задачник! ;)
ответить
☞ From Олег (unverified) Sun Nov 6 12:32:00 2016 UTC
Книги ваши
Книги ваши прочитал. Отзывов положительных немало вижу. Действительно, есть нечто отличное, от того, что читал ранее. Да и движение какое-то чувствую!
А по каким книгам Вы сами учились? Какие могли бы порекомендовать? Интересует прежде всего С++. Литературы-то очень много, только всю подряд молотить - дело совсем неблагодарное, да и не думаю, что оно того стоит.
ответить
From admin Sun Nov 6 16:21:00 2016 UTC
Иных уж нет, а те далече
Сам я учился программировать примерно в 1989--1993 гг. Это, понятное дело, был совсем другой мир. Цапнуть любую книжку, в которой хоть что-то полезное есть, и немедленно пробовать, пробовать, а вдруг получится, а компьютеров дома тогда ещё ни у кого не было (понятное дело, когда несчастная 286-я, уже тогда безнадёжно устаревшая, стоила как два автомобиля), поди урви себе пару часов машинного времени, ещё и не сразу найдёшь.
Большую часть книг, которые я тогда прочитал, я уже просто не помню, то есть помню, как выглядели, о чём там было написано, но не помню ни авторов, ни заглавий. Да и не интересны они сейчас. Вот разве что помню, по какой книге изучал C++, тут всё просто: по второму изданию Страуструпа. Это такой двухтомничек был не шибко большого формата, кстати, если попадётся — готов купить за любые разумные деньги, чисто для коллекции. (UPD: всё, неактуально, нашёл :-))
Ну а из того, что сейчас есть... э... у меня в книжках есть небольшие списки литературы, и даже эти книги я не все готов именно что рекомендовать к прочтению. Того же Танненбаума упоминаю просто по принципу "если очень хочется, то вам туда".
ответить
From Olga (unverified) Mon Nov 7 11:00:00 2016 UTC
Second Edition
Андрей Викторович, а как Вы, интересно, поступите, если к Вам на экзамен заявится скандинавской наружности лысый очкастый вьюнош и со знанием дела начнет излагать примерно следующее:
"Парадигмы программирования. Объектно-ориентированное программирование - это метод программирования, способ написания "хороших" программ для множества задач. Если этот термин имеет какой-то смысл, то он должен подразумевать: такой язык программирования, который представляет хорошие возможности для объектно-ориентированного стиля программирования..."
Извольте видеть - второе издание! Типа, собралась расширить чисто сишный кругозор...
ответить
From admin Mon Nov 7 13:26:04 2016 UTC
Во как :)
Довольно косноязычный перевод, мне почему-то казалось, что тот, который я когда-то читал, не отличался таким косноязычием. Ну хотя давно дело было.
Про парадигмы и их соотношение с языком программирования можно говорить более детально, я в своём курсе, который так и называется "Парадигмы программирования", привожу семь различных уровней. Да и не такая уж это "пустая трата сил", во всяком случае ООП на чистом Си (с ручным выписыванием таблиц виртуальных функций, например) -- это то, как написано ядро Linux.
ответить
From Anonymous (unverified) Mon Nov 7 19:34:00 2016 UTC
То, что перевод
То, что перевод был абсолютно тот же самый, можно даже не сомневаться. Правда, англоязычного исходника я не нашел - везде только 3-е и 4-е издание, а там несколько все иначе написано, но несколько русскоязычных переводов дают тот же самый текст. Думаю, что если бы на сегодня Андрей Викторович взяли эту книгу (впервые!), да увидели это безобразие, эффект мог бы быть довольно интересным! :) Но это сейчас он дважды кандидат с доцентом, а когда он читал эту книжку именно впервые, он еще студентом был, если вообще не пионером. Тогда, очевидно, и подходы, и цели были несколько другие. Но однозначно - это перевод. Такую байду даже в детском саду услышать сложно.
Но такой подход, как у Ольги - посмотреть, нарваться на паршивый перевод, плюнуть, да сказать, что "мне и в Си хорошо", может, не самый лучший. Все-таки "плюсы" не просто так появились, не просто так на них люди пишут. Кстати, не только профессионалы! Кто-то тут на странице с обсуждением двухтомника упоминал об интерпретаторе ROOT, разработанном и используемом в CERN'е (называйте его просто - центр ядерных исследований!;)). Так используют его именно пользователи - всякие математики, физики - им, вообще говоря, по барабану, что Python какой-нибудь выучить (который с точки зрения программиста подходил бы к задаче больше), что "плюсы" - образование, работа, вытекающая оттуда системность мышления... Ну, чего от них еще ожидать-то, от этих математиков, да физиков? :) Вот башка у них так заточена - потому и используют и "плюсы", и STL, и все что хочешь для своих нужд! И в интерпретируемом варианте, до кучи. Сам же процесс программирования для них глубоко побочный - вычисляют там чем-то, рисуют-визуализируют... На чем они это делают - им все равно, у них другие проблемы. Даже тут уже видно, что С++ для чего-то все-таки нужен.
Так что, с точки зрения "расширения сишного кругозора", возможно, следовало взять для начала не Страуструпа (тем более, с такими горбушками в переводе), а нечто более описательное - любой учебник по "плюсам". И на английском. Во избежание. Уж этого-то - как грязи! Вот, к примеру, вполне подходящая для такой цели книжка. С десяток тычков в Гугле. Обращено внимание лишь на год (2002), чтоб не сильно остандарчено было, да на сам текст - чтобы не носитель писал. По языковой "бедности" изложения это обычно хорошо видно. А то, попадутся такие, что идиоматов на полстраницы натолкают, еще и не каждый переводчик без стакана разберется, какого-нибудь специалиста филолога звать придется... Книжку по программированию, называется, взял! :)
Простейшее совершенно описание языка на элементарных примерах. Страниц под тысячу, но для "сишника" - это неделя максимум. Не исключено, что где-то зацепишься за кусок кода, который "вдруг" захочется куда-то запихать, мысль какая-то появится. А вот тогда уже придется вернуться к Страуструпу, несмотря на горбушки в переводе, или взяв более позднее издание (кстати, можно уже и на русском - качество переводов за последние годы стало куда выше, чем в начале века - там вообще беда была с этим!). Примерно таков может быть путь. По любому повеселее, что плюнуть на это мутное дело из-за плохого перевода и продолжать смотреть на "плюсы" сверху вниз. Есть в них что-то, есть...
ответить
From admin Mon Nov 7 20:08:00 2016 UTC
Э-мммм, всяк кулик своё болото...
...вот и я, пожалуй, обращу внимание почтеннейшей публики на свою книжку по C++. Чуть больше 120 страниц. Если речь идёт о том, чтобы понять, чем C++ отличается от чистого Си и зачем это всё надо — imho в самый раз. Написана она была, как обычно, от безысходности — ну вот буквально нечего было студентам ответить на вопрос "что почитать по C++".
Текст этой книжки планируется сделать первой частью четвёртого тома, но это будет, скорее всего, где-то через год, так что ждать не обязательно, благо книжка в электронном виде доступна, пользуйтесь на здоровье.
ответить
From Anonymous (unverified) Tue Nov 8 12:34:00 2016 UTC
Все бы так
Все бы так писали "от безысходности"! Очень даже приличный учебник.
Тем более, что ориентирован он именно на "сишников", а не как это обычно водится, неизвестно на кого. У "сишника" (даже со стажем в год - это уже программист) возникают сто раз уже наблюдаемые мною проблемы - поскольку это УЖЕ программист, то уже и имеет некоторые свойственные мышлению черты. Прежде всего, для него важна последовательность изложения. Галопом по европам он скакать не будет. Поэтому даже корявый перевод (буквально в одном месте) - далеко ходить не надо! - вызывает негативную реакцию и остановку. Более того, возможно, на долгие годы очень подозрительный взгляд в сторону С++. Плюс, как УЖЕ программисту, необходимо при решении задачи (в том числе задачи обучения) видеть картину целиком. Какое там "целиком" может быть в случае языка С++, если на сегодня он, мало того, что уже представляет собой большое многоэтажное здание, еще и каждые три года изменяется-дополняется "стандартами"? Думаю, относительно необходимости таких "изменений-дополнений" ни у кого никаких иллюзий не возникает. Кстати, боюсь, что последний стандарт и сам Страуструп не знает, хотя он имеет все же еще некоторое отношение к языку С++. Так что, созданный чуть выше анекдотичный образ студента Страуструпа на экзамене можно легко развить:
— Студент Страуструп, назовите основные, наиболее важные изменения в языке, которые произошли с введением стандарта С++ 2023?
— Э...М-ммм...
— Студент Страуструп, как вы собираетесь учиться дальше?! Мы со следующего семестра приступаем к изучению таких книг, как "The C++ Programming Language", "The Design and Evolution of C++". Что вы сможете там понять? Если вам незнакомы самые элементарные, самые основополагающие вещи!
Фактически, на сегодня Страуструп стал просто придатком комитетов по стандартам С++, которые книжки-то свои, похоже, издает-переиздает именно по договорам с этими комитетами, в качестве рекламы грядущего стандарта. Т.е. по сути некогда самостоятельный и толковый человек был сожран этими самыми комитетами. Как он сам себя чувствует в связи с этим, сказать сложно. Впрочем, это уже совсем другая история!
Что касается "Введения в С++", то думаю, что многие из тех, кто вообще попадал на сайт, ее безусловно видели. Книжки-то все в одном месте! По любому, в авторском "Введении в С++" есть помимо четкой целевой направленности ("сишник"), еще и некоторое описанное подмножество языка С++, которое можно бы попробовать использовать именно "сишнику" с целью определения "а не может ли мне чего из этого пригодиться". И совершенно не исключено, что что-то вполне "может"! Ну, а дальше - это самое многоэтажное, многостандартное и многострадальное здание С++. На все ли этажи заходить - дело хозяйское, но и не дети ведь уже! Си - это очень даже приличная подготовка. Короче, лиха беда начало...
Ну, а по поводу "безысходности"... Будет настроение или состояние, близкое к "безысходному", Вы пишите, Андрей Викторович, пишите. А люди разберутся! :) Кстати, сам факт, что разогнав больше половины возможных читателей, да отплевавшись от предложений разместить лекции на ютубах (популяризация, реклама, однако!), удается еще собирать какие-то деньги на типографии, да издавать книги - это уже чудом попахивает! Так что, "безысходность" - это не для всех плохо...
ответить
From Гриша (unverified) Wed Nov 9 01:59:00 2016 UTC
Ого!
Вот это нонича цены на стандарты! $212 — членам, $265 — не-членам.
По памяти, вроде, полтинник было. Но то ли давно не заходил, то ли овес нынче дорог.
Конечно, вопрос стандартизаций — это прежде всего, вопрос денег. Так было всегда. Кстати, и время для первых атак стандартизаторов на язык было выбрано очень удачно — конец прошлого, самое начало этого века, время, когда поднималась Java ("Написанное однажды — работает везде" — лозунг очень мощный!), время, когда много известных, авторитетных весьма программистов полностью ушли в Java. Сообщество было ослаблено. Так что, произнесенное где-то выше "профсоюз программистов ниже среднего уровня" применительно к стандарту 2003 года имеет под собой вполне реальную основу. А такие настроения, как "еще год-два, и все, абсолютно все будут писать на Java" в начале века были действительно очень популярны. Очевидно, что сбыться этому было никак не суждено. Но настроения такие были.
Что касается Страуструпа, то ничуть его не жалко, как бы он там себя ни чувствовал — пусть даже разгул стандартизаторов станет его личной трагедией, виноват он сам. Да, на сегодня он просто придаток стандартов, не больше. Просто картинка на упаковке. Но они же почти одного возраста с хайрастым и бородатым Столлманом! Сколько тот орал о собственности, о лицензировании? И на сегодня попробуй срубить бабла на чем-нибудь GNU-том, воткнув хотя бы маленький кусочек кода в какой-нибудь закрытый коммерческий проект! А Страуструп как в другом мире жил! Столлман это же не какой-то классово-чуждый элемент для Страуструпа — такой же программист, из страны вполне демократической, а вовсе не какой-то герой-комсомолец с горящими глазами, ратующий "за обчественность" на общественных же началах из советской литературы. Первые версии emacs, кстати, по триста баксов уходили, хоть и по большей части платилось за доставку — по тем временам совсем немало. То есть, прислушаться к нему Страуструп вполне мог, не просто же так тот распинался! Дело по большей части именно в этом. Отпустил вожжи Страуструп. Вот зачем? В Perl, Python — лицензии ведь есть? Для человека незнакомого совершенно с тем как живут и мыслят эти самые по Задорнову "ну тупы-ы-ые", они просто смешны. Однако, именно благодаря им ни в Perl, ни в Python ни одна мышь в языке и пукнуть не посмеет без ведома Larry и Guido. А здесь — стандарт за стандартом! И если это дело нравится Страуструпу, то с четверть века назад я его представлял себе несколько другим. Но все возможно, конечно... Остается лишь радоваться, что дело это не затрагивает язык Си. А могло вполне! Просто "младший брат" прикрыл грудью. Может, именно в этом его историческая миссия. Стандартных "нововведений" в Си не так уж много. Из откровенно непристойных только переменные массивы вспоминаются. Видать, кто-то из стандартизаторов сподобился изучить Бейсик. А скорее просто оператор REDIM. Честь ему и хвала, конечно, и большое человеческое спасибо за то, что на этом остановился.
Относительно же "Введения в С++" — да, написано хорошо и полезно. Более десяти лет, правда, не заходил в российские книжные магазины, но практически уверен, что ничего нового, касаемо программирования, там появиться не могло — в сети бы появилось. Это только по вузам если выискивать-вылавливать какие-то методички, это еще возможно, с тиражом сто штук на круг. А в магазинах кроме откровенной макулатуры, из которой в лучшем случае можно что-то выдирать поабзацно, сроду ничего не видел. А уж тем более, ожидать нечто целостного, что можно на полном серьезе воспринимать как учебник, не приходится никак. Здесь же, как раз, имеется некое последовательное изложение. Причем очень короткое (менее 150 страниц — это учебник по "плюсам", где вы такое видели?) и ненапряжное. Которое стопроцентно может быть понято человеком, владеющим Си. Даются именно те основы, которые являются принципиально необходимыми. И славно! Толстенный учебник, в который заталкивают все, что можно (уж кто во что горазд!) оптимизм вряд ли у кого вызовет. Да это и не нужно вовсе! В то же время этих полутора сотен страниц вполне достаточно чтобы начать переделывать свои же программы на Си. Пожалуй, это лучший способ разобраться с С++. Заодно выработается обычная совершенно способность для людей пишущих как на Си, так и на С++ легко переключаться между взглядом на программу с точки зрения Си и "плюсовой" точкой зрения. Она действительно совершенно обычная. А расхожий штамп, идущий от Страуструпа, что человеку, хорошо знающему Си, сложнее обучиться С++ ничего реального под собой не имеет. Скажем так, "неаккуратно человек выразился". То, что сам ход мышления на этих двух языках несколько отличается, так это понятно каждому, кто прочитал с десяток страниц любого совершенно учебника. Но никаких фатальных последствий для знатоков Си, разумеется, нет. Имхо. Правда, как ни крути, знание Си, все же, обязательно — это уже не "имхо", это даже и не смешите! Иначе... короче, даже и не смешите. Так что, книжка вполне, и как раз. Отписываться, впрочем, в обсуждении не стал, "имеющий глаза, да увидит". Да это и не удивляет особо — если человек 74-го года, пусть даже в 20 лет начал учиться программировать, то он в любом случае попадает на еще достандартный С++. То есть, по возрасту никак не относится к тому пионерскому отряду, место которому уже заботливо подготовлено Майкрософт — резервация .NET. Ведь какую бы систему лично не предпочитали представители этого пионерского отряда, деньги зарабатывать в качестве программистов им, скорее всего, придется, именно под Windows. А Майкрософт уже лет десять как целенаправленно выбивает из Windows программистов на С++. Самыми разными методами. Так что, точка зрения Столярова, что учиться программированию надо не под Windows, совпадает полностью с точкой зрения Майкрософт (в части языка С++). Хоть и по разным причинам — первый Windows вообще, похоже, за систему не держит, что же касается второй, то их цель предельно простая — оставить С++, как системный язык, лишь для программистов Майкрософт, всех же остальных — засунуть под .NET. Что ж, логика ясна как день — безопасность системы. Пущай делают чего хотят под виртуальной машиной, а в систему — ни-ни!
Как-то зашел на эту страницу, пробежался сверху, почему-то начало века вспомнилось, время для меня значительно более активное, нежели сейчас, потому и отписался несколько больше, чем предполагал. В Питере еще жил, говорил и читал по-русски, нечто ностальгическое просто... В любом случае, автору удачи пожелаю — "Написанное хорошо, читают всегда". А научить-объяснить вряд ли проще, чем самому что-то придумать. Во всяком случае, изобретают-придумывают что-то новое куда чаще, чем появляются люди, которые в состоянии это новое толково объяснить. Хоть и стоять на крайних точках зрения и переть против течения более характерно лет для 20, когда 40 — не уверен. Впрочем, каждому — свое. Мне-то уже еще на 20 больше, может, и в этом дело. Но, как бы то ни было — удачи.
ответить
From Anonymous (unverified) Wed Nov 9 15:39:00 2016 UTC
120 страниц
120 страниц, и очень даже хорошо! Куда больше? Основы языка даны? Даны. Чего еще-то? Именно язык и может вызывать сложности - там немало нового по сравнению с Си. Концептуально. А библиотеки - они и в Африке библиотеки, если язык знаешь, какие проблемы? Тем более, что не обязательно это стандартные библиотеки. Это может быть и Qt, и U++, и тот же ROOT. И все разные! А язык в основе своей везде один. Так что, это куда лучше, чем долбать толстенный учебник, нацеленный именно на стандартные "плюсы". Ну, а то, что язык в принципе не должен бы включать каких бы то ни было библиотек - это само собой, просто в случае С++ на это можно давно уже плюнуть и позабыть :) Хотя, понимать это надо и осложнять себе жизнь толстенными учебниками без необходимости вовсе ни к чему. Есть короткий, толковый учебник по языку - и зашибись! Понадобится чего-то еще (скорее всего, библиотеки) - доберешь по ходу пьесы, не маленький...
ответить
From Anonymous (unverified) Thu Nov 10 07:57:00 2016 UTC
Да, 120 страниц.
Кстати, по-моему, единственная книжка, в которой даже iostream отсутствует.
То есть, декларируется исходно - ИЗУЧАЕМ ЯЗЫК! Помнится, в целях оказания помощи младшим товарищам, я пытался определить для них последовательность изучения С++, зачеркивая фломастером в Шилдте то, что к языку не относится. Оставлял то, что должно быть понято в первую очередь. Просто брал на их глазах и зачирикивал целые страницы. Ну, очень грубо, конечно, получилось... Но они поняли! У них до этого момента был какой-то барьер при подходе к С++. Ничуть не способствовал его преодолению размер книжки Шилдта. А ведь по сравнению с тем, что можно увидеть сейчас - это не такая уж большая книжка. И тем не менее, барьер был! И он ушел. Люди поняли принципиальную последовательность изучения (начиная именно с языка!), и пошел нормальный процесс обучения. Сами, естественно, читали/разбирались, я не препод. Гавкнуть могу разок, когда вижу что людей откровенно не туда несет, но люди взрослые уже, и читать умеют сами. Да, в языке для сишника проблемы быть могут, концепции для него новые. Но и запредельно сложного ничего нет. Особенно, если не брать громадный учебник, паря себе же мозги.
А вот во "Введении в С++" Столярова уже все зачирикано. Причем с чувством, с толком, с расстановкой. Препод же! Его цель - именно научить. И не понимать нужную последовательность обучения он просто не может. Потому нету даже iostream. При чем здесь iostream? Вот, коли напомнили про Qt с UPP - именно сейчас ваяю небольшую приблуду на UPP. Нужно элементарно вывести в консоль отладочную запись. Попробуем "cout"? Ошибка! Извольте писать "Cout". С большой буквы. Другой iostream. И в кьюте все иначе. И другие библиотеки STL. Свои библиотеки. Хотя, к ним относится все то, что можно сказать про STL - использовать никто не запрещает, разумеется, но без них - будет эффективней. Это большие фреймворки, там все свое. Быть может, я сейчас пишу не на С++? На чем-то другом? Ну, можно сказать, что на "нестандартном С++". Что это меняет? Язык-то тот же! Тот самый, который описан во "Введении в С++". Причем, коротко, четко и ясно. Без лишних нахлобучек.
В общем, "Введение в С++" - хороший стартовый учебник. Останется немногое - взять свой последний купленный, тяжеленный и с трудом донесенный до дома учебник по "плюсам", отыскать его автора, затолкать этот учебник по его прямому назначению, и все - весь С++ у вас как на ладони! :)
ответить
☞ From Anonymous (unverified) Thu Nov 3 18:53:00 2016 UTC
А вдруг...
Здравствуйте, Андрей Викторович!
Вопрос, быть может, не совсем корректный, не знаю... А может, даже и не вопрос...
Книги ваши читал, некоторую дополнительную информацию выдал этот форум. Однако, досадно временами, что нигде и никогда не встречалось ваших лекций - именно тех, что читаются вживую. Книги-то вы издаете? И вовсе не "банального прибытку" ради, как вижу. А вот живые лекции почему-то отсутствуют! Хотя, по жизни, текста в них ничуть не меньше, а толку (пусть даже со всеми отклонениями от темы) еще и поболе будет! Уж если даете возможность людям учиться по книгам, и неплохим книгам - скажем, общее количество книг от "сиплюспюс-донцовых" (думаю, термин ясен!) уже давно превышает общее количество "донцовых литературных", что те, что другие не тянут даже на подставку для чайника, а вот по вашим - учиться вполне можно! И по комментам вижу, что я не одинок в своей точке зрения. Так почему бы и живые лекции не издать, не распространить? Ну, или хотя бы дайте какую-нибудь (пусть профессионально в будущем никчемную), но аккуратную студентку, которая записывать умеет, пусть даже не понимая что! Повеселее было бы всяко... Не все же в Москве живут, да учатся! Это может на частных уроках какие тайные знания/откровения, а то, что по любому в аудитории-то звучит...
Город у нас немаленький, ВУЗов хватает, и тем не менее. Было тут вообще пожелание обратиться к Столярову с затеей откомментировать построчно последнее издание Страуструпа - жанр-то, редчайший, умер, фактически, не родившись в средние века. В основном, "комментировали" Аристотеля (а кто такому суровому дядьке перечить будет? Потому и шли в основном упрощающие понимание комменты), но здесь-то всяко пошире поле деятельности! Ну, об этом только помечтать... А в лекциях-то сложного ведь ничего нет? Хороший, нечасто встречающийся материал и лишь для нескольких десятков человек! Мрак, короче...
ответить
From admin Thu Nov 3 20:16:32 2016 UTC
Живые лекции?
Как вы себе это представляете?
Конспекты своих лекций, даже написанные студентками-отличницами, я неоднократно видел — это просто ужоснах и триллер. То есть от лекции как таковой не остаётся вообще ничего. Видео всякое я считал и считаю суррогатом и самообманом.
Мне известен только один способ доступа к "живой лекции" — находиться в аудитории во время её чтения. Никаких других способов лично я не знаю.
ответить
From Anonymous (unverified) Fri Nov 4 18:51:00 2016 UTC
Да, тут был
Да, тут был мимоходом в Москве, тоже была идея заехать, да послушать Столярова "вживую"! :)
Прежде всего, потому, что где-то в сети встречалось описание манеры его преподавания. Своеобразно и весело написано, похоже, действительно, есть на что глянуть, что послушать. В частности, так славно описывались децибелы голоса, что послушать бы неплохо, конечно... Впрочем, идея эта была не настолько серьезна, как у Анонимуса с постом №73. Разумеется, были и более серьезные дела, да и попасть на лекцию в один день в конкретный ВУЗ - это же как подгадать надо!
Что касается видео, то - да, неплохо бы. Однако, вопрос уже этот задавался, и однозначный ответ был дан. И спорить тут, очевидно, бесполезно - "суррогат", и все тут! :) Ну, а лекции "девочек-отличниц", конечно, никакой критики не держат - ведь то, что в книге, самим автором вычитывается и правится десятки и сотни раз, чего тут можно ожидать от какой-то девочки, сидящей на лекции?! Конечно, триллер...
Мне единственное что по тексту Анонимуса показалось, что это явный студент, которому понравилась ПОНЯТНОСТЬ изложения и который бы хотел получать такое же ПОНЯТНОЕ изложение дальше. Спору нет, подобная ПОНЯТНОСТЬ - вещь, действительно, редкая. И она обращает на себя внимание. И дано сие не всем. И связана она, похоже, вовсе даже не с предыдушим опытом программирования автора, с чем-то другим... Дело лишь в том, что никакой Столяров на ВСЕ ВОПРОСЫ ответы не даст. Самому постараться придется. Вот вижу написано - "книги ваши читал". И чего? Допустим, в первом томе очень даже ПОНЯТНО описаны некоторые структуры данных. Действительно, очень ПОНЯТНО, мне тоже очень понравилось. На примере Паскаля. А на сях делал? Смотрел? А на плюсах? А как это в STL? Или "сам сказал", что STL - это бяка? А может, врет! Почему нет? Взял, да посмотрел - как оно... Вот это и есть самая настоящая "живая лекция"! :) Замечу, что в обсуждении книги не один человек (и это совсем не новички "хэлловорлдные"), уже по коду в самых маленьких программах видно, САМИ что-то смотрят, ставят вопросы, ищут ответы, находят, интересуются точкой зрения... Вот это и есть опять же "живая лекция"! Люди сами учатся. Кстати, Столяров тоже учиться не прекращал - в этом можно не сомневаться...
Не в огорчение, студент - даже если в каждую аудиторию вашего ВУЗА запихать по столярову, умеющему объяснять ПОНЯТНО, то без самостоятельной работы (чисто в расчете на столяровых), как пришел на первый курс идиотом, так и останешься им на пятом! А диплом - это бумажка, сам по себе, от идиотизма никого и никогда не спасал!
Впрочем, надо отметить еще и такой момент - как бы Андрей Викторович не упирались с видеолекциями, а популярность однако растет без всяких ютубов - чего стоит одно предложение целую книгу Страуструпа откомментировать! :) А ведь личный сайт незаметный совсем! Да и тиражи изданных книг не поражают воображение - поди, найди в магазинах! И тем не менее...
ответить
From Anna (unverified) Sat Nov 5 16:36:00 2016 UTC
Из того, что
Из того, что человек интересуется видеолекциями, еще не вытекает, что он студент.
Например (специально порыла), вижу что кроме меня до №73 никто видеолекциями не интересовался. И именно мне был дан ответ о "суррогатности" и "самообманности" последних. Хотя, я уже не студентка вовсе.
Ну, а по поводу самостоятельной работы само собой! Институт в принципе и должен научить работать самостоятельно. Это лишь самое начало обучения, которое потом продолжается всю оставшуюся жизнь. Дело, разумеется, не в аспирантурах, ученых степенях и званиях (тут особый разговор, здесь надо немного представлять себе кухню на кафедрах ВУЗов - а она довольно специфичная!), просто существование человека после ВУЗа немыслимо без дальнейшего постоянного обучения, совершенствования собственных навыков в профессии. Иначе, человек просто зря учился - его не научили учиться, он просто зря потратил время. И таких навалом - вроде, отучился, а работает каким-нибудь манагером, продавая коврики для кошек... Кстати, о "кухне"! ))) Недавно совершенно встретила однокурсника, профессором стал. И настолько его образ, создавшийся за годы обучения не вязался со словом "профессор", что первые секунды была просто в шоке. Правда, чуть пообщавшись с ним, с мыслью "я вас умоляю!", поняла, что за прошедшие годы не изменилось ровным счетом ничего! И такого сколько хочешь... В общем, под обучением понимается просто процесс самостоятельной работы.
Что же касается именно видеолекций, оно, конечно, хотелось бы, просто не худо себе представлять, что одно дело пользователям отыскать где-нибудь на ютубе нечто сообразное, а другое совершенно самому автору разместить там же свои же лекции. Не то чтобы это совсем уж себя не уважать - люди-то и на ютубе разные, просто припоминая контент, который можно выудить по запросу, скажем, "С++", это все же, в изрядной степени, искупаться в дерьме. Так что, дело здесь не совсем в том, что лекция, записанная на видео совсем ничего уж не несет. Нести, она в любом случае несет. Дело не в том.
В общем, книжки есть - читаем! По этим "началам программирования" с учетом самостоятельной работы, вполне можно получить приличный средний уровень. Не случайно, думаю, в обсуждении двухтомника откровенных новичков не видно. У всех отписавшихся самые "начальные" навыки уже есть. А они, тем не менее, читают почему-то "Введение в профессию". А некоторые из моих знакомых, так и вообще в РЕФАЛ полезли, да в InteLib'ы всякие - за 10-15 лет, конечно, многое изменилось, но и в древних манускриптах, видать, что-то интересное от автора отыскать можно.
Вообще, в разное время отслеживались сайты, на которые вполне реально можно послать обучающихся программированию. Это был когда-то и сайт разработчиков PascalABC (ныне - ABC.NET - совсем уж не та балалайка), и питерского препода Полякова (только с С++ и школьниками он всяко погорячился - даже уровень абстракции там явно не по возрасту, но информация полезная была), из Сибири кое-кто был... В общем, немного совсем. А на сегодня только если сюда отослать, больше некуда!
ответить
From Anonymous (unverified) Sun Nov 6 11:13:00 2016 UTC
Насмешили!
Какие "видеолекции", вы о чём? :) Вот этого уж никак ожидать не приходится!
Книжки откройте ещё разок, просмотрите. По форуму пробегитесь. Для кого написано? Для всех ли? В это сложно поверить, но даже на сегодня существует куча людей (в том числе программистов), которые ни разу в жизни не ставили nix'ы ни в каком виде. Ни разу! Можно посочувствовать, конечно, но факт остаётся фактом — они из потенциальных читателей выпадают однозначно. Грубо — половину "всех" уже выкинули. Можно ли подготовить программиста под Windows? Ну, разумеется! Как и под любой другой системой. Но здесь-то постановка чёткая — nix'ы, и никак иначе! Итак, половины уже нет.
Идём дальше. Точку зрения про STL, про стандарты все видели? Наверно, не был бы столь категоричен, но основания для отрицания "стандартных нововведений" безусловно есть. Стандартно-разжиревший С++, например, позволяет писать откровенно неприличный код. Откровенным дуракам. И они его пишут! Кстати, если по совести, то всегда казалось, что разработка стандарта 2003 года (просто за обсуждением и подготовкой этого стандарта ещё следил) вообще имела целью создание "профсоюза программистов среднего и ниже среднего уровня". То есть, под отрицанием STL (Столяров здесь, кстати, вовсе не одинок) неплохо бы понимать просто неприятие халтуры, уважение к себе, к собственному коду. И существует немало людей, которые используют подмножество С++, не включающее STL. Но сколько народу выкинем дополнительно, безусловно о ней возрыдающих? ;) Сколько осталось?
Ну, а теперь прикинем расклад стандартной студенческой группы, присутствующей обычно на лекции. Сколько человек в принципе пригодны для обучения? Тех, которые обладают нужным для конкретного преподавателя объёмом знаний, способностями, возможно, некоторым сходством понятий. Пять! Если десять — это очень сильная группа. Можно сказать, "повезло". Хотя, это "везение" принесёт с собой и больший объём работы. Оставшийся контингент интересует обычно не более, чем прошлогодний снег в Зимбабве. Да и вообще, "народнохозяйственное значение" подготовленных специалистов вряд ли кого интересовало даже в советские времена. Некоторое значение оно, конечно, имеет, как показатель успешности собственной преподавательской деятельности, но в основном, преподавание — это просто самовыражение, утверждение собственной точки зрения — "как оно должно быть".
Так и если хотя бы частично признать правоту того, что написано оно и преподаётся оно не для всех (а в случае Столярова это особенно заметно), для кого он будет записывать видеолекции? Тем более, что они неминуемо попадут на какой-нибудь ютуб, а это, как совершенно справедливо замечено, означает "искупаться в дерьме"? Ну, разумеется, на ютубе можно отыскать очень даже приличные лекции, они есть, но готовы "искупаться", всё же, не все! ;) Как-то так...
ответить
From Алла (unverified) Thu Nov 10 16:44:00 2016 UTC
Две большие разницы
Что касается учителя Полякова, то это не совсем "обучение программированию". Здесь две большие разницы - то, чему он учит, входит в область "общих знаний". Что, собственно, и должна давать школа. Всё, что касается информатики - это у них обязательные предметы. Потому и отношение школьников к этим предметам самое, что ни на есть обычное. Зачастую дофенистическое. Слов нет, если из них кто-то продолжит обучение по тому же направлению, ему будет проще. Но выход там будущих программистов не более, чем из школ с математическим уклоном математиков. То есть, один на несколько выпусков. Хотя, общая грамотность у них, конечно, повыше. Не случайно Поляков "заслуженный учитель". Но факт остается фактом - реальный выход небольшой. Даже несмотря на то, что люди вообще и школьники в частности стали значительно более прагматичны с тех пор, как я заканчивала школу, о выборе профессии в школе даже и речи быть не может.
А у Столярова направленность именно на человека, который сознательно выбрал профессию и по ней учится. Это уже студенты. Другая возрастная категория. Именно поэтому поляковские книжки вполне можно читать, а столяровские нужно отрабатывать. Два неплохих преподавателя, но у них совершенно разные цели. И то, что у Полякова контингент учащихся несколько мифологический - ну, не потянет школьник многие из тем, которые он вещает, совершенно однозначно. Тем не менее, и плохого ничего нет. Но это, всё же, не "обучение программированию".
ответить
☞ From Родион (unverified) Tue Sep 20 15:12:00 2016 UTC
Вопрос по оконному менеджеру fvwn2
Андрей Викторович, здравствуйте.
Хочу задать вопрос по оконному менеджеру fvwn.
Несколько месяцев являюсь пользователем Линукс. На основном компьютере установлена Mint, благо производительности машины хватает.
На второй машине (небтуке, у которого оперативная память всего гигабайт) иногда "подтормаживают" даже kubuntu и lubuntu.
В вашей книге прочитал про оконный менеджер fvwn2, хочу попробовать установить его на нетбуке, чтобы еще чуть повысить производительность.
Данный менеджер, как я понял, требует серьезной кастомизации. Можете порекомендовать какие-нибудь материалы по первым шагам в работе с этим менеджером? Попытки чтения мануалов (на языке оригинала) даются тяжеловато...
ответить
From admin Thu Sep 22 16:24:52 2016 UTC
Поставьте IceWM
Поставьте IceWM :-)
Что касается fvwm2, то я его всю жизнь настраивал "по аналогии", там с ним идёт образец конфига, из которого более-менее всё понятно. Начать с ним работу можно и без кастомизации. Иной вопрос, что, пожалуй, это всё-таки не очень хорошая идея. Для меня fvwm2 -- дело привычки, но у вас-то привычек таких нет.
ответить
From Anonymous (unverified) Fri Sep 23 10:41:00 2016 UTC
Да, рабочий
Да, рабочий стол - это дело привычки. Помнится, когда-то меня вполне устраивали вторые "кеды". Но когда они подросли на размерчик, я сместился на тогдашний Gnome. Правда, когда и он дорос до "gnome 3", вынужден был уже перейти на xfce, где сейчас и пребываю. И пока доволен. Единственное, что смущает, так это возможные перспективы его "развития" в сторону вещей, которые (по возможности) будут все равно отключаться, что опять же может привести к изменению привычек. При всем при этом, я бы не сказал, что у меня машина слабая.
Это я к тому, что в линуксах тоже далеко не все так безоблачно.
ответить
From admin Sat Sep 24 12:43:19 2016 UTC
Гыгыгы
Поставьте IceWM :-)
ответить
☞ From Anonymous (unverified) Tue Aug 16 21:40:00 2016 UTC
What about D language?
Если возможно, хотя бы одним словом...
ответить
From admin Sat Aug 27 09:19:31 2016 UTC
Одним словом не могу
Одним словом у меня не получится, могу вот тремя: "чёрт его знает" :-)
ответить
From Anonymous (unverified) Sat Aug 27 13:06:00 2016 UTC
Ага!
Что ж, спасибо! Тогда займёмся. Мнение важно.
Программистом быть, конечно, неплохо, но быть чёртом... Ещё заманчивей! :)
ответить
From Anonymous (unverified) Tue Sep 13 13:13:00 2016 UTC
Нет, всё же, не "ага"!
Передумал я быть чёртом.
Две недели ушло на чтение Александреску вперемешку с каким-то турком. В результате написанные тестовые программки по размеру (в десятки и сотни раз, как ни старайся) оказались больше, чем аналоги на Си. Скорость исполнения в разы ниже. Если в этом самом "D" понаотключать всё подряд, то, может, дела будут обстоять и получше. Но уж системным языком D я назвать бы не решился никак! Короче, не торт. Каждому своё, конечно, но для меня это было просто даром потраченное время.
ответить
☞ From Slava (unverified) Mon Jul 25 19:20:00 2016 UTC
Желанный Язык
Здравствуйте!
Очень интересует ваше мнение!
Представьте себе язык программирования на котором бы вам хотелось писать, такой что бы некоторый круг задач решался бы на нем наиболее эффективно по параметрам:
- скорости решения/написания, т.е. времени которое будет потрачено программистом,
- легкости, т.е. умственных усилий которые будут потрачены программистом,
- дизайн ориентированный на избавление от избыточной сложности,
- размера получаемых программ,
- размера используемой памяти при выполнении,
- скорости выполнения,
- пригодности и для системного программирования (например путем описания упрощенного подмножества)
- пригодности и для самого высокоуровнего программирования (например путем описания надмножества языка, даже допускаю введение раздельных режимов компиляции для любого модуля, т.е. модуль на низко или высоко уровневом подмножестве языка может быть написан и соответственно скомпилирован),
- созданы все условия для надежного и безопасного программирования.
И во вторую очередь, что бы этот круг задач которые решаются эффективно - был бы как можно больше.
Является ли вопрос синтаксиса для построения такого языка, - достаточно ключевым? Что бы и программист легко мог не только освоить такой язык, но и быстро разбираться с чужим кодом, и быстро кодировать алгоритмы и абстракции.
Такой же аналогичный вопрос насчет синтаксического сахара и его количества! Мне думается важно качество сахара, но что насчет количества?
Как же все таки создать такой язык?
Может взять какой то из уже существующих и просто правильно его огранить, если видны недостатки может быть должно быть видно то что станет достоинством ?
Мне кажется кандидатами на донорство могли бы выступить такие языки как:
- Oberon
- Nim
- Seed7
- D
- Ruby
- Basic (Euphoria, FreeBasic, LangMF)
Если можно, напишите после раздумий и ответа, хорошую статью, а то и даже побудите, найдя хороший путь, кого то на создание такого языка, а может быть сами сможете "родить" хотя бы черновик спецификации?
ответить
From admin Sat Aug 27 12:22:50 2016 UTC
Уже
Относительно того, каким должен быть идеальный язык, уже пара статей была написана, первая из них ещё в 2007 году:
http://www.croco.net/croco/papers/stolyarov_2007b.pdf
Если коротко, то в самом языке вообще не должно быть синтаксического сахара, должны быть средства для его создания в библиотеках; библиотеки как раз и должны быть его источником, а равно и источником большинства свойств, которые вы хотите видеть в языке. Сам язык должен быть ещё более низкоуровневым, чем чистый Си, и это должно быть его основное свойство, точнее, одно из двух основных; второе -- широкие возможности по введению новых абстракций. Из перечисленных вами ни один язык не может стать "донором", поскольку они все высокоуровневые.
ответить
☞ From Rhard (unverified) Sat Jul 23 18:46:00 2016 UTC
Программа diamond "Азы программирования".
На стр. 239 в программе diamond есть небольшая недоработка в строке: "until (h > 0) and (h mod 2 = 1);", в этом случае можно ввести 1, тогда бриллиант не получается, а лишь 1 *. Если установить h > 2, то получится бриллиант из 4 *.
ответить
From admin Sun Aug 14 14:51:33 2016 UTC
Ну так это вроде бы нормально
Да, я при написании этого примера решил, что высота, равная единице, представляет собой валидный частный случай, хотя и вырожденный. Не вижу в этом проблемы, программа работает вполне корректно.
ответить
☞ From Rhard (unverified) Thu Jul 21 17:57:00 2016 UTC
Опечатка в "Азы программирования".
Ошибка на стр. 217. Во втором предложении сверху -- путаница.
ответить
From admin Thu Jul 21 20:58:02 2016 UTC
?
Несколько раз перечитал весь верхний абзац, путаницы не обнаружил. Может быть, у меня взгляд уже настолько замылен?
ответить
From Rhard (unverified) Fri Jul 22 18:27:00 2016 UTC
Возможно туплю
На стр. 215 в последнем абзаце -- "... правильнее будет говорить о "вводе из стандартного потока ввода."", а на стр. 217 -- "... правильнее говорить о выводе в ((из(?)) стандартный поток вывода...".
ответить
From admin Sun Aug 14 14:37:57 2016 UTC
Всё ещё не вижу проблемы
Когда мы что-то вводим, то это что-то есть где-то там в потоке ввода, а мы это оттуда (_ИЗ_ потока) добываем. А когда мы что-то вЫводим, то оно, вот это вот "что-то", есть у нас, и мы это "что-то" в поток запихиваем. _В_ поток.
Или я вас опять не понял? :)
ответить
From Rhard (unverified) Fri Aug 19 20:20:00 2016 UTC
Я уже и сам
Я уже и сам запутался.) Вроде логичнее, когда вводим _В_ и выводим _ИЗ_. В любом случае, у Вас в книге вроде как одна и та же мысль на стр. 215 и 217.Если это так, то похоже, что в одном из предложений есть неточность.
P.S. Капча стала невероятно сложной. :(
ответить
From admin Sat Aug 20 19:00:58 2016 UTC
Когда вводим,
Когда вводим, информация идёт В нашу программу (в её переменные) -- естественно, _из_ потока ввода. В случае вывода всё наоборот.
ответить
From Rhard (unverified) Tue Aug 23 23:05:00 2016 UTC
Так я именно об
Так я именно об этом и говорю, а в книге написано иначе.)
Обнаружил ещё две неточности. В томе II на стр.193 написано - дает себя знать, вместо дает о себе знать.Так же а стр.210 в полном примере discr вместо discrim, программа не скомпилируется и не заработает.
ответить
From admin Sat Aug 27 09:17:00 2016 UTC
Проверил ещё
Проверил ещё раз. Насколько я могу судить, в тексте книги всё в порядке (это про потоки).
Про discrim -- да, есть такое.
ответить
☞ From Nick Pepper (unverified) Wed Jul 20 20:14:00 2016 UTC
Go
Go перенаправляется на /dev/ass, как и все прочие поделки от Гугеля (простите, не удержался)...
Но у меня к Вам похожий чисто внешне вопрос и вовсе не холивару священнага ради - а что думаете о Rust? Таки сможет ли он, так долго зревший в утробе и ныне, наконец-то родившись, увы, сразу же отданный на растерзание покемонам от программизма прийти на смену усталому С, да ещё не просто заменить, но превзойти (как это высоко и красиво мечталось его первому биологическому отцу)?
ответить
From admin Thu Jul 21 07:57:38 2016 UTC
Не знаю ответа, увы
Исходно было похоже, что ничего у Rust не получится, поскольку там тоже была сборка мусора и ещё много чего, но, говорят, к 1.0 от всего этого мракобесия избавились.
С другой стороны, говорят (сам не видел), что в Rust имеются высокоуровневые конструкции, реализация (то есть перевод в машинный код) которых неочевидна и может быть выполнена многими разными путями. Если это так, то на смену чистому Си этот язык не годится. Disclaimer: я не знаю Rust :-)
ответить
☞ From Rhard (unverified) Wed Jul 20 10:11:00 2016 UTC
Опечатка в "Азы программирования".
Здравствуйте. На странице 177 второй снизу абац содержит опечатку -- "...далеко не все их (из) них существуют..."
ответить
From admin Thu Jul 21 08:02:48 2016 UTC
Спасибо!
Есть такое, да.
ответить
☞ From Дмитрий (unverified) Sat Jul 16 11:18:00 2016 UTC
SeekEof и конвейер
Здравствуйте, Андрей. Есть вопрос по параграфу 2.7.4 первого тома "Введения в профессию".
После замены
eof
наSeekEof
правильно работают ввод с клавиатуры и перенаправление из файла, но не конвейер.Здесь у кого-то тоже проблемы с SeekEof. Неужели это баг в Free Pascal?
ответить
From admin Thu Jul 21 07:53:09 2016 UTC
Похоже на то
Судя по тому, что strace показывает, эта штука убеждается, что на входе не терминал, и на этом основании решает, что можно использовать lseek. А на pipe это у неё, естественно, не получается. Руки бы поотрывать :-)
ответить
From Anonymous (unverified) Sun Mar 22 17:47:00 2020 UTC
RTFM
Неужели это баг в Free Pascal?
Этот "баг" известен уже лет десять. И в документации на SeekEOF чётко написано:
The SeekEOF function can only be used on real textfiles: when assigning the file to other kinds of (virtual) text files, the function may fail, although it will perform a number of tests to guard against wrong usage.
ответить
From admin Sun Mar 22 20:11:25 2020 UTC
Берите выше -- я
Берите выше -- я думаю, скорее лет двадцать. Я даже думал его пофиксить сам, место нужное нашёл и ужаснулся -- там откровенный write-only code. Авторы этого фрагмента даже постоянный размер отступов выдержать не справились.
В общем, плохо всё с этой функцией.
ответить
☞ From Anonymous (unverified) Mon May 30 10:28:00 2016 UTC
Go
Доброго времени суток!
Хотелось бы услышать Ваше мнение о языке Go. После поверхностного ознакомления, мне он показался хорошей альтернативой таким языка как С++ и Java. Что Вы думаете о нем?
ответить
From admin Mon May 30 22:09:13 2016 UTC
Императивный
Императивный язык со сборкой мусора -- это нонсенс. Ну то есть оно может быть альтернативой для Java, поскольку там тоже сборка мусора, но это просто замена одного сорта дерьма на другой. Альтернативой C++ эта хреновина быть не может. К большому сожалению -- поскольку "плюсам" давно уже требуется замена.
ответить
From Anonymous (unverified) Tue May 31 12:31:00 2016 UTC
Так Go
Так Go объектно-ориентированный, просто вместо иерархии классов есть интерфейсы, совсем непохожие на интерфейсы в Java.
Не знаю читали или нет вот эту статью (15 глава: Composition not inheritance).
ответить
From admin Wed Jun 1 17:11:41 2016 UTC
В чистом
В чистом объектно-ориентированном языке не может быть ни вызовов функций, ни самих функций (только методы), ни переменных, ни присваивания. Так что Go нельзя рассматривать как чисто объектно-ориентированный язык, это, очевидно, очередной представитель семейства императивно-объектных гибридов, к которым относятся и C++, и Java, и C#. Повторяю, с моей точки зрения сборка мусора в таком языке означает приговор этому языку, я вообще не готов всерьёз рассматривать подобных бастардов (да, Java и C# тоже именно такие бастарды и даже, наверное, хуже).
Впрочем, ваш вопрос исходно имел отношение к тому, можно ли рассматривать Go в качестве альтернативы C++ и Java. Я не готов отвечать на вопрос, кто лучше -- Java или Go, поскольку имею некое предубеждение против сравнительного анализа сортов дерьма; в качестве же "альтернативы" C++ этот Go вообще никак не годится, то есть заведомо, то есть можно даже об этом не думать. Хотя бы даже из-за GC, хотя не только из-за него: там и range checking неотрубаемый, и много чего ещё.
ответить
☞ From Anonymous (unverified) Sun Apr 3 20:48:00 2016 UTC
Опечатка в первом томе книги
Внимательно прочитайте последний абзац на странице 92 книги "Программирование: введение в профессию". Похоже, туда вкралась опечатка.
ответить
From admin Sun Apr 3 21:16:42 2016 UTC
Уже нашли
Ну да, единица -- это исполнение, а не чтение; вы ведь это имели в виду?
ответить
☞ From Anonymous (unverified) Sat Apr 2 12:00:00 2016 UTC
Авторское Право
А вы не задумывались о том, что поступили очень некорректно по отношению к авторам оригинала картинки на обложке вашей книги?
Вы украли концепт и идею и даже не знаете назначение многих символов там и что под ними скрыто.
ответить
From admin Sat Apr 2 12:14:27 2016 UTC
Не только задумывался, но и точно знаю ситуацию
Прежде чем разглагольствовать об авторском праве, следует хотя бы изучить, что это такое. Во-первых. и в-главных, ни в одной юрисдикции мира никакие имущественные права не охраняют идеи как таковые, причём это касается даже патентного права, не говоря об авторском. Ни сюжет литературного произведения, ни сюжет рисунка не подлежат никакой правовой защите в роли "имущества", то есть имуществом не являются.
Во-вторых, безусловно, кроме юридических крючков, существует ещё и такая вещь, как авторство -- право неимущественное и имеющее существенно более широкую область действия, нежели область действия юридических норм, относимых к интеллектуальной собственности. В частности, выдача чужой идеи за свою, безусловно, являет собой плагиат. Но это тоже не мой случай: я в своей книге, как можно заметить, (стр.12, второй абзац сверху), подробно описал, откуда взялся сюжет картинки для обложки, и никогда не выдавал эту идею за свою.
Теперь к делу. Я требую извинений за слово "украл". Если таковых не последует, дальнейшие ваши комментарии на этом сайте премодерацию не пройдут.
ответить
☞ From Anonymous (unverified) Sat Mar 26 15:01:00 2016 UTC
В конце 28
В конце 28 страницы pdf стоит число 20286 - ОПЕЧАТКА!
ответить
From admin Sun Mar 27 17:35:06 2016 UTC
Да, факт.
Естественно, должно быть 80286.
ответить
☞ From Студент (unverified) Fri May 15 21:57:00 2015 UTC
Сетевая академия Cisco
Добрый день, Андрей Викторович.
Стали бы вы обучаться в Сетевой академии Cisco, будучи студентом, например, если бы обладали такой возможностью (по времени и пр.)? Другими словами, видите ли вы пользу (учебно-научную, практическую или какую-нибудь другую) в такой программе?
P. S. Спрашиваю у вас, поскольку Cisco --- один из мировых лидеров производства сетевой аппаратуры, Сетевая академия --- комплекс образовательных программ, направленных на повышение компетентности IT-специалистов в области сетей и пр., а вы, если не ошибаюсь, достаточно долго работали с организацией/администрированием сетей и хорошо с этим делом знакомы.
ответить
From admin Tue May 19 21:14:00 2015 UTC
Не стал бы, разумеется
Cisco — просто один из монополистов с задранными в космос ценами на железо. Заниматься изучением их "технологий" можно, на мой взгляд, в одном и только одном случае: если вам прямо здесь и сейчас необходимо срочно что-то делать с их железками. Такое бывает, если (1) вас УЖЕ взяли на работу и там надо дрессировать этих "кошечек" или (2) вам кто-то (буквально) подарил железку от Cisco (мне вот на день варенья недавно задарили старый каталист, чисто на поностальгировать) и вы хотите из неё извлечь какую-нибудь пользу.
NB: я с этими "кошками" в своё время разобрался без каких-либо "академий", без документации и даже без гугла в помощь, ибо гугла тогда ещё не было (1997 год). Правда, на моё счастье, было у кого спросить, когда становилось совсем непонятно. А сейчас на дворе вовсе не 1997 год, а совсем даже 2015-й, в интернете просто ПРОРВА информации о том, как справиться с любой мало-мальски распространённой железкой, феерическое количество всевозможных форумов, где можно задать вопросы, когда всё остальное не помогает, и т.д. Я это к тому, что если вдруг (!) вам понадобятся эти или другие железяки, то никаких проблем с тем, чтобы с ними разобраться, не будет. Просто пусть они вам сначала понадобятся.
А пока они вам не понадобились, не тратьте своё бесценное время на изучение чьих бы то ни было проприетарных бастардов. Изучайте лучше математику, накачивайте эластичность мозга. Оно всяко полезнее. Это можно выразить и иначе: своё драгоценное время очевидно полезнее инвестировать в себя, любимого, нежели чем в благополучие коммерческого гиганта, у которого, кстати, и так всё хорошо. Изучая технологии, которые являются чьей-то собственностью, вы попросту дарите собственное время владельцу этой технологии. У вас что, много лишнего времени? Я бы сказал, время вообще не может быть лишним, жизнь гораздо короче, чем хотелось бы.
Ах да, ещё один момент: если бы я сейчас строил провайдера, как в тогда 1997 году, то ни одной циски в моей сети бы не было. Это, замечу, несмотря на то, что обращаться я с ними прекрасно умею, там по моим наблюдениям почти ничего не поменялось за 15 лет.
ответить
From Владимир (unverified) Tue Sep 29 12:33:00 2015 UTC
В целом я
В целом я поддерживаю Ваше мнение о том, что на курсы не стоит тратить времени и денег. С одной стороны, на курсы будут потрачены время и деньги, а полученный сертификационный статус нужно будет периодически подкреплять, т.к. он со временем устаревает. С другой стороны, я думаю что курсы Cisco полезно пройти хотя бы один раз, человеку, который занимается вопросами архитектуры сети. Полезно, потому что рецепты и ответы на вопросы из интернета не дадут охватить одним взглядом всю сеть и правильно спроектировать её. Курсы в этом cлучае ознакомят со всем ассортиментом технологий и общепринятыми хорошими практиками проектирования сетей. При этом при реальном проектировании сети совсем не обязательно зацикливаться только на одном
производителе, а делать уже осознанный выбор из всех доступных вариантов оборудования разных производителей, принимая во внимание доступные функции, цену, надёжность, наличие гарантийных центров, удобной технической поддержки и прочие критерии.
Для себя я уже давно определился, что проходить курсы по сетевым технологиям Cisco не хочу, как не хочу вообще заниматься телекоммуникациями. Для меня важно, чтобы круг интересных задач и потенциальных работодателей был несколько шире, чем одни лишь телекоммуникации и телекоммуникационные компании. Вне телекоммуникационных компаний и телекоммуникаций знание проприетарного оборудования не даёт мне почти ничего.
Поскольку Вы сказали, что в настоящее время обошлись бы без оборудования Cisco при строительстве провайдера, интересно узнать, какое оборудование Вы бы выбрали сейчас и по каким причинам?
ответить
From admin Wed Sep 30 17:15:00 2015 UTC
И при чём тут курсы конкретного вендора?
Не забывайте, что Cisco — коммерческая компания, так что всё, что они делают, направлено на извлечение прибыли (по определению; это не плохо и не хорошо, это просто факт). Естественно, и все их курсы направлены в основном на пополнение рядов специалистов, умеющих работать именно с их оборудованием. Когда такой "спец" приходит куда-то строить сеть, он, естественно, требует закупить оборудование Cisco, мотивируя это тем, что оно такое замечательное, продвинутое, классное и всё такое, но на самом деле причина одна: он, вот этот "спец" хренов, Cisco умеет, а остальное не умеет. А уж это ваше «охватить одним взглядом всю сеть и правильно спроектировать её» вообще ни к каким курсам не имеет отношения, то есть вообще, заведомо. Это ремесло. Ремёсла осваиваются только в мастерской. Наймитесь в помощники к опытному админу, пасущему серьёзную сеть, лучше всего провайдерскую, и через полгода, если захотите, будете всё уметь. При этом ни какие-либо курсы, ни какое бы то ни было образование в каких бы то ни было учебных заведениях вам того же самого не даст, притом вообще ни за какое время. А уж курсы конкретного вендора — тем более! Такие вещи скорее вредят общему кругозору, нежели наоборот.
какое оборудование Вы бы выбрали сейчас и по каким причинам?
Поставил бы обычные компьютеры. Ну, возможно, в 19"-корпусах, для пущего удобства, всё-таки стойки эксплуатировать проще, чем скопище обычных боксов; и, возможно, там материнские платы были бы серверными, чтобы можно было втыкать больше сетёвок; больше того, возможно, что там вместо жёстких дисков стояли бы SSD с SATA-интерфейсом; но, тем не менее, это были бы именно обычные компьютеры, а не специальные маршрутизаторы. Возможно, управляемые свичи я бы взял от кого-то из брендов, этот вопрос я не изучал на современном рынке; кстати, возможно, даже и cisco'вские взял, тут нужно сравнивать цену/качество, скорее даже просто цены — скажем, определить, что мне нужен vlan-capable manageable switch на 24 порта, потом из всех, которые удовлетворяют задаче, рассмотреть три самых дешёвых, из них выбрать тот, который больше понравится. Но маршрутизаторами у меня бы были Linux box'ы, и даже могу сказать, под чем — под Openwall'ом.
Причина банальна: я не люблю вхолостую тратить деньги, ни свои, ни чужие.
ответить
From Владимир (unverified) Fri Oct 2 22:52:00 2015 UTC
> он,
> он, естественно, требует закупить оборудование Cisco
Вот совершенно не естественно.
Насчёт ремесла и приобретения опыта в реальной работе тоже не соглашусь с вами. В реальной работе за деревьями леса не видно. Часто люди делают что-то просто потому что так принято, не задумываясь о наличии более эффективных путей решения задачи. А чтобы найти эти пути, нужно обладать в том числе и хорошим кругозором, уметь охватить всю картину в целом.
Забавно, что в компании, где я работаю, как раз от маршрутизаторов и серверов стараются избавляться. Больше NAT-трансляций, больше PPP-соединений держит специализированное оборудование с ASIC'ами, заточенными именно на эти задачи. Большое количество серверов - это дополнительные траты на администрирование, на кондиционирование, место в узле связи, больше затраты на электричество, на ИБП для этого оборудования и на бригады инженеров, выезжающие в случае аварии на электросети всё это запитывать от генератора или просто менять ту же вышедшую из строя сетевую карту или жёсткий диск.
У нас стремятся уменьшить количество хопов между клиентом и
пограничным маршрутизатором, заменяя промежуточные маршрутизаторы производительными коммутаторами с поддержкой QinQ и стараясь уменьшить транзитный трафик между узлами связи, за счёт чего повышается эффективность использования производительности оборудования. Лучше потратить эту производительность конкретно на обслуживание клиента, а не бесполезный перегон трафика из одного узла связи в другой.
Благодарю вас за ответ.
ответить
From admin Sat Oct 3 13:26:00 2015 UTC
> Вот
> Вот совершенно не естественно.
То есть как это не естественно? Очень даже естественно, "я умею решать поставленную задачу, для этого мне нужно оборудование Cisco". Слово "мне" обычно опускают для верности. И так происходит не только с Cisco, тот же Oracle живёт исключительно за счёт "специалистов", не умеющих работать с другими СУБД и не знающих, что в большинстве ситуаций СУБД вообще не нужна. Про "неназываемых" вообще молчу. Ещё раз подчёркиваю, что создание таких "специалистов" (в очень жирных кавычках) как раз и является основной целью всех "программ обучения", продвигаемых "крупняком".
Что касается достоинств сетки на коммутаторах в сравнении с сеткой на роутерах -- всё это никак не противоречит сказанному мной и вообще является иррелевантным в нашем обсуждении. ИНОГДА сервера и роутеры нужны, и никуда не денешься; вот в этих случаях, когда роутеры таки оказываются нужны (например, на пути к аплинку) я Cisco использовать не стал бы, и вообще никакие специальные железки, а поставил бы Linux box'ы. Ну а сетки из свитчей я тоже люблю, но цисковские каталисты — не единственный в мире вид управляемых свитчей.
Ах да, и ещё: роутеры на статике никакого трафика не порождают, кроме ARP. Когда свичи между собой договариваются о span tree, трафика они генерят, пожалуй, побольше.
ответить
From Владимир Ступин (unverified) Sun Oct 4 14:37:00 2015 UTC
>Ещё раз
>Ещё раз подчёркиваю, что создание таких "специалистов" (в очень жирных кавычках) как раз и является основной целью всех "программ обучения", продвигаемых "крупняком".
Это не понимают только дураки. Дураки другого рода считают, что на курсах Cisco занимаются ТОЛЬКО агитацией и ничему не учат.
>вот в этих случаях, когда роутеры таки оказываются нужны (например, на пути к аплинку) я Cisco использовать не стал бы, и вообще никакие специальные железки, а поставил бы Linux box'ы. Ну а сетки из свитчей я тоже люблю, но цисковские каталисты — не единственный в мире вид управляемых свитчей.
Когда роутеры таки оказываются нужны, оказывается что Linux box'ы не способны прокачать через себя такой объём трафика. Представьте себе маршрутизатор с десятками портов 10G, который к тому же держит BGP Full View от нескольких вышестоящих операторов, терминирует десятки тысяч PPP, NAT'ит, аутентифицирует, авторизует и учитывает по RADIUS'у и NetFlow льёт.
Даже если упереться в Linux box'ы, то окажется что вместо одной стойки дорогого фирменного оборудования нам понадобится десяток стоек с дешёвыми Lixux box'ами, коммутаторами для них (не забывайте, что каждый Linux box - это дополнительные порты на коммутаторе, а значит дополнительные коммутаторы), ИБП для них и кондиционерами для них. И как вершинка тортика - понадобится высокопроизводительное оборудование, которое сагрегирует весь этот трафик Linux box'ов для вышестоящего оператора. И всё это дело нужно настраивать, менять у него жёсткие диски, распределять между ними нагрузку и т.д. Значит нужно больше людей, которые всем этим будут заниматься.
В сети провайдера, о котором я говорю, используются D-Link'и, редкие H3C/HP и Force10/Dell, и те самые QinQ-коммутаторы - Extreme с 50-ю 10G портами. Кстати, где это возможно, и от коммутаторов стараются избавиться, заменяя их на DWDM-оборудование. Из маршрутизаторов используются считанная пара десятков Cisco (76xx для разного рода MPLS и ASR как пограничные маршрутизаторы) и несколько штук BRAS'ов Ericsson. Catalyst'ы я где-то видел, в единичных экземплярах. Возможно на пробу покупали. Сейчас вместо D-Link пробуют кое-где использовать SNR.
Избавляются как раз от серверов FreeBSD с quagga и mpd - дорого обходятся. Вместо 250 серверов проще и дешевле по всем показателям оказывается парочка BRAS'ов, трафик до которых доводится из узла связи через коммутаторы.
STP порождает много трафика, медленно сходится. Сегментация трафика и кольца RSTP позволяют избавиться от штормов из-за петель и быстро перенаправлять трафик проблемного участка через другой аплинк.
В общем, судя по опыту этого провайдера, выгоднее оказывается покупать дешёвое оборудование для домовой сети, но дорогое - для узлов связи. Не выгоден ни подход "только Cisco", ни "дешёвые коммутаторы и Linux box'ы c Openwall". Нужно подходить ко всем решениям с умом.
ответить
From admin Sun Oct 4 19:53:00 2015 UTC
Дураки другого
Дураки другого рода считают, что на курсах Cisco занимаются ТОЛЬКО агитацией и ничему не учат.
Если ничему не учить, то полученная на выходе макака не будет ничего уметь (спасибо КО), то есть её, макаку эту, на работу никто не возьмёт и к решению о финансовых затратах не подпустит и толку с неё вендору не будет. Так что совершенно очевидно, что там чему-то учат. Причём, на мой взгляд, очевидно также и то, чему там учат: решать задачи, используя решения данного конкретного вендора. Любые общезначимые знания и навыки, которые там проскакивают — это чистая случайность, некоторые такие вещи слушателям рассказывать приходится, потому что они иначе не поймут того, что им навешать необходимо по правилам игры.
Вопрос тут в другом: зачем вообще нужно такое «перекошенное» обучение, калечащее мозги, особенно если учесть, что там нет и не может быть никаких знаний, которые нельзя было бы приобрести без всяких вендорских курсов.
Обсуждать инженерную конкретику построения сетей я не готов — я сети уже пятнадцать лет не строил, для такой дискуссии нужно хотя бы чуток освежить знания, но тратить на это время только затем, чтобы тут что-то такое ответить, сами понимаете, мне некогда и смысла особого нет, а прикладного смысла для себя я тут не вижу — мне вряд ли когда-нибудь ещё придётся строить провайдерскую сетку. Сказанное про FreeBSD&quagga вызывает вопросы, но лучше я в эту область сейчас не полезу.
ответить
☞ From Анонимный донор (unverified) Thu Jan 15 10:47:00 2015 UTC
Добавьте,
Добавьте, пожалуйста, нумерацию в списке доноров для вашей книги, посетителям сайта будет удобнее оценивать их количество.
ответить
From admin Sat Jan 17 12:16:00 2015 UTC
Давайте по-другому
У меня вызывает внутреннее противодействие идея снабжать людей номерами, когда в этом нет серьёзной необходимости. Давайте я лучше отдельной строчкой это количество буду указывать.
ответить
☞ From Anonymous (unverified) Sat Jan 10 04:49:00 2015 UTC
Здравствуйте!
Здравствуйте!
Случайно наткнулся на ссылку на ваш сайт в сообществе "Типичный Программист"
Хотелось бы спросить у вас совета, с чего стоит начинать программировать? Просто, я пробовал начинать писать на многих языках, писать программки из учебников, но очень быстро сталкивался с тем, мне, грубо говоря, нечего писать, потому что нет никакой конкретной сложной задачи, на которой можно было бы научиться чему-то новому, а самому придумывать такие у меня не получается. Может, есть какой-то учебник, или сборник задач, или просто какой-нибудь способ, как пройти этот порог?
ответить
From admin Sat Jan 10 13:53:00 2015 UTC
Пройти порог
Ну да, это проблема. В принципе, довольно типичная "первая сложная задача" — это какая-нибудь игрушка. Естественно, без графики и без GUI. Отсутствие графики само по себе вас смущать не должно, вон в Nethack люди десятилетиями рубятся, и ничего.
А ещё рекомендую глянуть здесь на сайте статью "Почему Unix".
ответить
☞ From Severtsev (unverified) Thu May 22 10:09:00 2014 UTC
Обработка ошибок
Здравствуйте. Интересно узнать Ваше мнение об обработке исключительных ситуаций в С++ и обработке ошибок в целом.
С одной стороны, механизм исключений удобен, но в языке без сборки мусора, единой иерархии классов или хотя бы ограничения на тип исключения он несёт больше проблем, чем решает. При наличии исключений трудно дать какие-либо гарантии, утечки ресурсов могут возникнуть в самых неожиданных местах (да, да, стандарт пытается заткнуть эти дыры). Потенциально исключения позволяют передать произвольную информацию обработчику, но в реальной жизни даже узнать, какой фрагмент кода выборосил исключение, не всегда возможно. Отдельной проблемой является избыточное использование исключений и использование не по назначению (для управления потоком управления, хотя многие считают это достоинством). Причём, последнее зачастую решается только -fno-exceptions со старта.
ответить
From admin Fri May 23 12:51:57 2014 UTC
и при чём тут единая иерархия?!
Вот уж чего совершенно в упор не вижу, так это связи между исключениями с одной стороны и этими вашими сборкой мусора и единой иерархией — с другой. Auto cleanup и деструкторы никто не отменял, так что за высвобождением ресурсов контроль полный в любом случае, если работать аккуратно; ну а безалаберность надо лечить не средствами языка, а лишением премии и увольнением с работы, или ещё лучше электрошоком. С другой стороны, как сборка мусора, так и единая иерархия классов (и, как следствие, таблица виртуальных методов в каждом объекте, а то и, чего доброго, все вызовы методов оптом виртуальные) — это приговор языку сразу и без вариантов, то есть такие языки (вроде пресловутой джавы) использованию не подлежат вообще. Хотя, конечно, C++ после выхода новых стандартов хуже уже не станет, понятное дело, то есть мертвее уже не будет, но тут по крайней мере можно декларировать, что используется подмножество, и ещё некоторое время более-менее нормально жить.
У исключений C++ есть другие недостатки, и прежде всего то, что оно тянет за собой RTTI и вообще очень большой и жирный кусок рантайма, да плюс к тому в генерируемом коде возникает (в начале и конце каждой функции) ТАКОЕ, что в машинный код просто страшно заглядывать. Если бы, к примеру, исключения символизировались не типом объекта, как это сделано в C++, а, например, адресом в памяти (то есть делаем глобальную переменную произвольного типа, в ней же храним информацию об обстоятельствах исключения, а кидаем не "объект произвольного типа", а адрес этой переменной, и ловим исключение не по типу, а путём указания глобальной переменной, отвечающей за данный вид исключения), реализация стала бы проще в разы, и рантайм бы в разы уменьшился. Вон на уровне чистого Си есть setjmp и longjmp, они, по ходу, вообще ничего в программу не втаскивают, и, больше того, даже не являются средством языка, обычные библиотечные функции, правда их реализация зависит, конечно, от платформы и компилятора, но это уже детали.
Короче, резюме такое: надо бы пользователю (программисту) отдать возможность принятия решения о том, сколь сложный механизм обработки исключений ему нужен. В языке такового быть не должно, но должны быть средства для его создания (в частности, архитектурно-независимые средства манипуляции стековыми фреймами с возможностью их, фреймов, пометки для последующего анализа на размотке).
Ну а за использование исключений для управления, то есть для штатного выхода из вложенных контекстов, надо убивать сразу. Желательно насмерть. Если в команде есть такие люди, то -fno-exceptions не более чем полумера, а правильная мера — гнать в три шеи. Хотя, конечно, при нынешнем дефиците программистов это не всегда реально.
ответить
☞ From Александр (unverified) Tue Oct 29 07:17:00 2013 UTC
Пара слов благодарности
Скажу огромное спасибо Андрею Викторовичу за его стиль преподавания, который чрезвычайно и невероятно раскладывает все по полочкам в голове (хотя иногда это стоит некоторым студентам пары миллионов их нервных клеток :) )
Отдельное спасибо за материалы (книги и статьи), которые подготовлены автором и, более того, выложены в свободный доступ в прекрасном виде. (Жалко только, что pdf зашифрованные, неудобно растаскивать на цитаты :) )
Эти книги и материалы тоже написаны безумно интересно и познавательно - читается легко, понять не сможет только тот, кто не хочет.
Короче говоря, МГУ повезло, что человек с таким талантом преподавания и богатым опытом работы в IT сфере соглашается вкалывать в университете.
ответить
From admin Tue Oct 29 18:53:00 2013 UTC
Музыкой навеяло
Что-то мне вспоминается классика:
Уж сколько раз твердили миру...
Если серьёзно — да пожалуйста, заходите ещё :-)
ответить
From Anonymous (unverified) Thu Nov 24 16:31:00 2016 UTC
Вы разместили
Вы разместили ссылку на сайт с JavaScript => на вредоносный сайт.
ответить
From admin Thu Nov 24 18:55:00 2016 UTC
Да неужели?
Контент по ссылке доступен при полностью отключённом в браузере исполнении JS. Если у вас JS включён — это ваши проблемы.
(обращаясь к публике) попкорн за углом продают, рассаживайтесь поудобнее...
ответить
From Anonymous (unverified) Fri Nov 25 10:09:00 2016 UTC
То есть если я
То есть если я размещу ссылку на вредоносный exeшник, то я не виноват, а это проблемы тех, кто пользуется Windows?
ответить
From admin Fri Nov 25 20:56:02 2016 UTC
Ну, вообще-то да
Ну, вообще-то да :-) То есть лично я не имею совершенно ничего против распространения вирусов, троянов и прочей гадости, которая усложняет жизнь виндузятников. Правда, уголовный кодекс со мной не согласен, но тут уж я ничего поделать не могу.
ответить
☞ From Сергей (unverified) Fri Jul 26 08:08:00 2013 UTC
Благодарю за
Благодарю за выложенные работы, с интересом прочитал статьи об авторском праве и информационном насилии.
Вы в курсе проекта под названием Diaspora?
https://joindiaspora.com
Как раз то, что вы цените в средствах общения как я понимаю (открытый код, приватность информации)
ответить
From admin Sat Jul 27 13:38:00 2013 UTC
Интересная ссылка, thanks
В принципе, ощущение такое, что это шаг в правильном направлении. Среди вещей, которые я ценю, в применении к социальным связям основная -- это распределённость, её вы не упомянули, но тут она присутствует.
Что сходу не понравилось -- там на всех страницах javascript и мне не удалось найти ничего на тему его отстригания. Ну а второе -- конечно же, ruby on rails. На моих серверах везде Openwall GNU/*/Linux, для него соответствующих пакетов нет, а самому их делать меня совершенно точно заломает. Мораль -- свой pod мне не запустить. А на чужом я жить не стану, с меня достаточно.
Вообще, на самом деле, центром такой системы должна быть не реализация, а протокол, то есть набор соглашений о структурировании информации и обмене таковой. И как минимум две (для начала) реализации, желательно выполненные на разных языках и совсем разными командами. Если такое будет достигнуто - это будет некая точка невозврата. Ну а у этих ребят, увы, фокусировка прямо противоположна, про протоколы там вообще ничего не говорится, очевидно, что общаться они собираются исключительно сами с собой, в смысле с другими экземплярами того же приложения.
Но так всё же лучше, чем никак.
ответить
☞ From Severtsev (unverified) Fri May 31 18:35:00 2013 UTC
Лучше бы не наблюдал вовсе
В том всё и дело, что это не "упёртые плюсовики", а как раз предпочитающие те самые сверхвысокоуровневые языки. Но как только берутся за то, что собираются выложить на общественное поругание, зачем-то делают это на С++. И ситуация уже даже не смешная: "хочу шоб було то, то, и то, мне не нравится, но всё равно буду делать так". Тысячи вопросов, тонны недовольств, и продолжают упорствовать. А наблюдается это при внимательном взгляде на публичную деятельность обозначенных персонажей в различных хостингах (может, не такой уж и показатель, но за последние несколько лет для студентов и выпускников в первые 1-2 года ничего принципиально не изменилось), в результате чего и берётся "большой опыт". В любом случае благодарю за некоторое уточнение ситуации.
P.S. Вопрос с ответом уползли в архив, наткнулся случайно.
ответить
From admin Tue Jun 4 16:50:00 2013 UTC
Они не
Они не "уползли", они там [ http://www.stolyarov.info/guestbook/archive/1#comment-715 ] изначально и были — я забыл в своё время запретить на той странице новые комментарии, а вы свой вопрос зачем-то оставили там, а не здесь.
Ну а про плюсы — а фиг знает, что движет людьми. Вот как можно, например, на PHP писать? Я имею в виду, как можно себя настолько не уважать, что не брезговать ТАКИМИ инструментами? Но ведь пишут.
ответить
☞ From Anonymous (unverified) Tue Apr 9 04:51:00 2013 UTC
Физические основы построения ЭВМ
Здравствуйте, Андрей Викторович!
Я учусь в Ташкентском филиале МГУ им. Ломоносова и скоро у нас начнут читать предмет "Физические основы построения ЭВМ". Не могли бы Вы посоветовать литературу (на русском или английском языке), желательно книгу, по которой можно было бы ознакомиться с "Физическими основами построения ЭВМ". На http://msu.uz/e/4f81a3881adf57d776000001 заявлена очень интересная программа, однако большую ее часть на наших лекциях мы проходить не будем.
Спасибо.
ответить
From admin Fri Apr 12 18:32:58 2013 UTC
Гм
У меня возникает ровно один вопрос: а при чём тут я? К Ташкентскому филиалу я, к счастью, уже скоро пять лет как никакого отношения не имею, к курсу "физ.основы" — тем более.
Если попробовать ответить по существу вопроса, то под названием "Физ.основы построения ЭВМ" может скрываться всё что угодно; когда я был студентом, нам в рамках этого предмета рассказывали, как между собой надо соединять микросхемы памяти (и, кажется, всё - во всяком случае, я больше ничего не помню). Что будут вам читать в рамках этого курса, я не имею и не могу иметь никакого представления, это полностью зависит от лектора.
В общем, вы не по адресу. Совсем.
ответить
☞ From Anonymous (unverified) Sat Mar 2 16:32:00 2013 UTC
В каком направлении должен развиваться С++ ?
Здравствуйте. В http://www.stolyarov.info/guestbook/archive/1#comment-468 вы высказали свое недовольство по поводу нового стандарта C++11 и таким вещам, как STL и RTTI. Не могли бы вы более подробно описать, что именно не так с этими вещами? Вы предлагаете для каждого проекта каждый раз писать свое подмножество STL? Или есть что-то лучше, чем STL? В каком направлении должен развиваться С++ ?
ответить
From admin Tue Mar 5 17:11:00 2013 UTC
О направлениях
вы высказали свое недовольство
Начнём с того, что слово "недовольство" крайне превратно описывает то, что я сказал. Тут больше подходит словосочетание "крайняя степень возмущения", причём не самими STL и RTTI, а теми идиотами, которые их сначала создали, а затем протащили в стандарт языка.
что именно не так с этими вещами
С ними не так буквально всё. Впрочем, это либо очевидно, либо — если не очевидно — то любые объяснения, как правило, бессмысленны.
Вы предлагаете для каждого проекта каждый раз писать свое подмножество STL?
Разумеется, нет. Тогда уж лучше использовать STL, всё равно хуже уже не будет. Впрочем, можно предложить ещё "лучше": писать на PHP. Или на бейсике. Или на коболе. Чего напрягаться-то понапрасну, Си-плюс-плюс какой-то там, классы, методы, это всё слишком сложно. Берём вижуал васик и вперёд.
Если же PHP или бейсик не устраивает, то я не вполне понимаю, как может устраивать связка C++/STL. Контейнеры, очевидно, вообще нельзя использовать — сама идея таковых порочна. Структуры данных не бывают универсальными, за исключением самых простых (массивов и списков), но использование контейнеров для массивов и списков заведомо бессмысленно — за более чем сомнительный выигрыш во времени кодирования мы при этом вынуждены расплачиваться феерическими приключениями во время отладки и сопровождения, причём ставки там приблизительно неделя (проигрыша) за пять минут (экономии); ну а более сложные структуры данных должны, естественно, проектироваться под каждую конкретную задачу (не под проект, а именно под каждую возникающую задачу), и generic они быть не могут — как следствие, ни о каком применении шаблонов при построении сложных (проблемно-ориентированных) структур данных не может быть никакой речи. Это я уже не говорю о том, что
list
вообще-то двусвязный, тогда как в большинстве задач список требуется односвязный; или о том, чтоstring
в последнее время перестал быть copy-on-write, ну и так далее. То есть даже самые простые порождения STL'я вообще-то никуда не годятся.Подчеркну, это совершенно не означает, что нельзя использовать шаблоны; напротив, их можно и нужно знать и уметь использовать, но контейнеры тут ни при чём.
Или есть что-то лучше, чем STL?
Конечно, есть: его отсутствие.
Если же имеется в виду "есть ли библиотека для решения той же задачи, что и STL, которая решает задачу лучше", то такие наверняка есть (можете поискать в гугле, если не лень), если только допустить, что "та же задача" вообще существует. Я утверждаю, что задачи как таковой попросту нет, поэтому вопрос о существовании аналога STL, который был бы "лучше", оказывается бессмысленным. Не нужен ни STL, ни какие-либо его аналоги. Тем, кто с этим не согласен, следует, очевидно, выбрать другой язык программирования, потому что тратить силы на работу на довольно сложном языке только для того, чтобы идиотская библиотека съела (причём с запасом) все его преимущества — со стороны выглядит как-то глупо.
В каком направлении должен развиваться С++ ?
Теперь уже, видимо, ни в каком. Нужен другой язык, который займёт нишу языка произвольного уровня, в отличие от существующих языков уровня низкого (asm/*, plain C) или высокого (всё остальное). C++ мог занять эту нишу до включения в него RTTI (STL, к счастью, свойством языка не является, так что он бы, в принципе, не смог всерьёз помешать — хотя размах подрывной деятельности стандартизаторов впечатляет, да). В нынешнем своём состоянии C++, особенно в связке с STL — язык, я бы сказал, уровня безнадёжно высокого, приближающийся к командно-скриптовым. Зачем такой нужен ещё один такой язык, не вполне понятно, их уже и так — как грязи.
ответить
From Anonymous (unverified) Thu Jan 1 15:02:00 2015 UTC
т.е по вашему
т.е по вашему
подход Степанова [url removed]
поданный в Началах Программирования([url removed])
бесполезен?
зы. [url removed]
ответить
From admin Wed Jan 7 18:49:00 2015 UTC
Бесполезен?!
Это неправильное слово. Правильное будет по меньшей мере "вреден" или, лучше сказать, "вредоносен".
Степанов — это человек, который нанёс индустрии (и в конечном счёте всей цивилизации) больше вреда, чем Гейтс и Джобс вместе взятые. Именно он фактически уничтожил уникальный инструмент, каковым был ранний язык Си++, при этом так и не поняв, что это было.
Обсуждать здесь нечего.
ответить
From qulinxao (unverified) Fri Jan 9 19:50:00 2015 UTC
Вы серьёзно?т.е
Вы серьёзно?
т.е Страуструп пригрел на груди .... ?
С++ (то что у языка нет однозначной грамматики это зигзаг истории) - без stl , а тем более ранний это что?
пропатченый препроцессор - транслятор в old-C
ответить
From admin Sat Jan 10 13:43:00 2015 UTC
Ага, точно
Нет, блин, я не серьёзно, я тут так, тряпки жгу и смеюсь. У меня встречный вопрос: а вы это тут серьёзно спрашиваете, "что же такое C++ без STL"?
На самом деле, вопрос типичный, его в наше идиотическое время задают на удивление часто (и за одно это Степанова стоило бы публично четвертовать: он не только сам не понял, с чем имеет дело, но и сделал так, что сейчас этого почти никто не понимает). Ну так я вам на этот вопрос отвечу. C++ без STL и без некоторых поздних возможностей — например, исключений — это низкоуровневый язык (то есть пригодный, например, для ядер операционных систем или для микроконтроллеров), но при этом позволяющий навертеть сколь угодно высокоуровневые абстракции. То есть, иначе говоря, это язык произвольного уровня.
Можно зайти с другой стороны. Если из описания C++ выкинуть любые упоминания его треклятой стандартной библиотеки (как это сделал я), то останутся, во-первых, классы с механизмом защиты; во-вторых, конструкторы и деструкторы, в том числе их автоматический вызов в определённых ситуациях (кроме автоматического вызова деструктора при исчезновении объекта тут следует отметить ещё конструкторы копирования и преобразования); перегрузка символов операций для пользовательских типов, что, собственно, даёт на выходе абстрактные типы данных в полный рост. Что с помощью всего этого можно сделать? Ну, например, вот это: http://www.intelib.org ; а точнее — можно сделать что угодно, практически любые инструменты из других языков программирования поддаются моделированию таким способом. А язык при этом сам по себе низкоуровневый (ну, был когда-то, пока исключения в него не впендюрили), то есть у него отсутствуют (отсутствовали) ограничения, не позволяющие где попало использовать ту же джаву, C# и прочее.
Итого: C++ мог (когда-то давно) стать универсальным языком, то есть таким, перед которым ни у каких других языков нет осязаемых преимуществ вне зависимости от решаемой задачи. Разумеется, этот момент упущен, сейчас C++ (даже без STL) — просто язык высокого уровня, притом кривой, а с учётом последних "стандартов" — попросту нежизнеспособный.
Ну а что когда-то на самых ранних этапах своего развития C++ был реализован в виде компилятора, выплёвывающего чистый Си (не "old", а "plain" — plain C остаётся самостоятельным языком и, в отличие от C++, подыхать совершенно не собирается, поскольку альтернатив ему просто нет) — ну так и что с того? Некоторые компиляторы той же Scheme тоже на выходе plain C выплёвывают, и вроде никого это не смущает.
Уж не знаю, кто там кого "на груди пригрел", Степанов-то постарше Страуструпа будет (аж на полтора месяца, гыгы). Но тут скорее другое. Тексты Страуструпа, написанные раньше третьего издания книги "Язык C++", производят впечатление гениальных, а само третье издание и всё, что за ним последовало — впечатление, что это писал душевнобольной. При этом сам Степанов в одном из своих интервью заявил, что Страуструп — упрямый чёрт, но и его удалось переупрямить. Ощущение со стороны такое, что Степанов — из той породы особо опасных дураков, в которых очень сложно разглядеть дурака, а опасность в том, что они делают дураками окружающих, обращая их в свою веру. Степанов превратил гения Стауструпа в дурака Страуструпа. Больше того, эта его дурь сейчас владеет умами тысяч программистов, которые могли бы быть гораздо умнее, если бы не вот эти вот дифирамбы STLю на уровне религиозных. Код, написанный с использованием STL, превращает maintenance в ночной кошмар, а две трети пишущих на нём совершенно не понимают, что делают (есть даже такие, для которых list отличается от vector отсутствием операции индексирования, а значит просто неудобная хреновина — и такие люди пишут программы за деньги) — но всё равно все продолжают петь осанну STLю. Кто поумней — уходят "вниз" на чистый Си или "вверх" на джаву, C# или какой-нибудь питон, и правильно делают — если рассматривать STL как часть C++, то писать на C++ просто нельзя, такие инструменты не подлежат использованию.
ответить
From Anonymous (unverified) Thu Dec 17 18:14:00 2015 UTC
Тема на ЛОР про метапрограммирование на C++
Я на ЛОРе создал тему про метапрограммирования на плюсах, и вспомнил про вашу библиотеку intelib. Просьба ответить там https://www.linux.org.ru/forum/development/12198201/page1?lastmod=1450364216809#comment-12201925
данный комментарий можно не раскрывать
ответить
From admin Fri Dec 18 16:36:00 2015 UTC
Увы
К сожалению, я вообще не вижу, что мне там в этой теме отвечать, на что и зачем. InteLib к метапрограммированию никакого отношения не имеет.
ответить
From Anonymous (unverified) Fri Dec 18 16:57:00 2015 UTC
Т.е. InteLib
Т.е. InteLib непригоден для написания макросов, работающих с неким подобием абстрактного синтаксического дерева, и таким образом расширять изначальный синтаксис, добавляя в язык некие новые конструкции или вводя некие правила преобразования AST (как в LISP)? Какая же область применения у данной библиотеки? Вот вы пишите, что C++ мог стать универсальным, что > а точнее — можно сделать что угодно, практически любые инструменты из других языков программирования поддаются моделированию таким способом Похоже что это как раз одна из вещей, которую таким способом смоделировать нельзя, как не старайся. И для языка С++ единственный выход из ситуации - использовать кодогенерацию и всякие DSL. Я хочу сказать, что у С++ и прочих производных c Си подобным синтаксисом (obj-C, D) просто изначально нет шанса стать тем самым языком произвольного уровня, и стандартизаторы тут непричем совершенно. К тому же все эти RTTI и обработки исключений легко отключаются соответствующими опциями компилятора, и STL-ом вас тоже никто под дулом пистолета пользоваться не заставляет, так что введением новых фич язык не испортить.
ответить
From admin Fri Dec 18 22:42:00 2015 UTC
Т.е. InteLib
Т.е. InteLib непригоден для написания макросовРазумеется, нет. Там вообще нет макросов.
Какая же область применения у данной библиотеки?
Вы не поверите: программирование на Лиспе (то есть в S-выражениях) в рамках проекта, основным языком которого является C++.
Что меня крайне удивляет, так это то, откуда вы вообще нашли в окрестностях InteLib все эти ваши макросы, синтаксические деревья и прочее метапрограммирование. Ничего подобного там никогда не было и не задумывалось.
Последний ваш абзац мне кажется бессмысленным набором слов, ответить на него я вообще ничего не могу.
ответить
From Anonymous (unverified) Fri Dec 18 23:35:00 2015 UTC
> Что меня
> Что меня крайне удивляет, так это то, откуда вы вообще нашли в окрестностях InteLib все эти ваши макросы, синтаксические деревья и прочее метапрограммирование. Ничего подобного там никогда не было и не задумывалось.
Ну я подумал, что если там есть S-выражения, то логично было бы добавить туда макросы, которые позволяли бы на этапе компиляции работать с этими S-выражениями.
> Последний ваш абзац мне кажется бессмысленным набором слов, ответить на него я вообще ничего не могу.
Попробую переформулировать. Последним абзацем я хотел сказать, что универсальный язык произвольного уровня не может быть построен на основе С++ ввиду его унаследованного Си синтаксиса, негомоиконности и невозможности работать с AST (что возможно в лиспе, но лисп не проходит по другой категории - в нем GC)
ответить
From admin Sat Dec 19 12:12:00 2015 UTC
макросы,
макросы, которые позволяли бы на этапе компиляции работать с этими S-выражениями
Во-первых, макропроцессор в Си/Си++ крайне беден и такие сложные задачи решать не может в принципе. Он, если на то пошло, вообще не годится для метапрограммирования, там же ни циклов нет, ни рекурсии, то есть он сам по себе алгоритмически неполон, а конструкций языка ещё нет (ведь маропроцессор проходит до синтаксического анализа).
Во-вторых, S-выражения в InteLib моделируются иерархией классов с виртуальными функциями, то есть используется динамический полиморфизм в полный рост; работа со всем этим хозяйством во время компиляции тоже, естественно, невозможна, поскольку невозможно определить, с S-выражением какого типа мы имеем дело (заметим, в Лиспе происходит то же самое).
универсальный язык произвольного уровня не может быть построен на основе С++ ввиду его унаследованного Си синтаксиса
Синтаксис здесь вообще ни при чём. Определяющими для универсального языка являются два момента: (1) его низкоуровневость, без которой он оказывается принципиально неприменим в проектах вроде ядер операционных систем и (2) возможность создания сколь угодно сложных абстракций.
негомоиконности
Если я только правильно понимаю, о чём идёт речь, то на универсальность языка такое повлиять в положительную сторону не может. В отрицательную -- запросто: если язык обладает гомоиконностью, то есть в нём программа и данные представляются каким-то одним универсальным способом (S-выражения в Лиспе, строки в командно-скриптовых языках), то возникает соблазн ввести в него EVAL — и всё, прощай низкоуровневость.
невозможности работать с AST
С одной стороны, написать на языке программу, которая генерирует программу на этом же языке, можно на любом языке, обладающем алгоритмической полнотой. С другой стороны, если с AST можно работать в рантайме -- такой язык в плане универсальности заведомо безнадёжен.
ответить
☞ From Anonymous (unverified) Wed Jan 9 15:15:02 2013 UTC
Обнаружил
Обнаружил небольшую опечатку. При добавлении комментария появляется "Ваш комментарий помещён в очередь на модерирование. Как только администрация одобрит его, комментарий будеь опубликован."
ответить
From admin Wed Jan 9 21:07:20 2013 UTC
Спасибо
поправлено
ответить