Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2020-11-28 23:24:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: sick
Музыка:Soft Kill - CHOKE
Entry tags:gentoo, linux

упаковано с поддержкой apulse
Много лет боялся везде поднимать новую версию firefox,
который после 52-й версии отказался поддерживать
звук без pulseaudio, так и сидел с 52-й, которая
давно сдохла. Но тут по случаю поднял последнюю,
обнаружил, что в Gentoo оно по умолчанию
упаковано с поддержкой apulse, и ни в какой
pulsaudio не нуждается. Неожиданно, но приятно.

Вообще gentoo в таких вещах радует, но надо не
забывать отключать говно, когда оно добавляется;
например, USE="-elogind", чудовищно вредоносная
штука, которую зачем-то добавили дефолтом к иксам.
И eudev вместо udev, естественно, он работает
на порядок стабильнее и лучше.

Это я тут себе всю систему пересобирал по случаю
всеобщего перехода на 17.1,
сто потов сошло.

Привет



(Читать комментарии) - (Добавить комментарий)


(Анонимно)
2020-11-30 07:14 (ссылка)
Ну это как сказать... Я бы сказал что ооп это прежде всего идеология, которая оказалась очень заразная и пустила корни в обе плоскости - и техническую, и социальную. Причем социальная это даже не про менеджерьё (оно как раз в такие низкоуровневые детали не лезет как правило, ну или мне так повезло просто), а про самых что ни на есть обычных программистов, среди которых, увы, нет, далеко не все понимают, что им навешали лапши на уши преподы в институтах и профессиональные пиздоболы вроде боба мартина.

В примере про индуса никакого ооп и классов не требуется, это не про ооп даже вовсе, а про "модульность" - программирование against интерфейса as opposed to реализации; вместо оопшного чисто виртуального класса интерфейсом с таким же успехом может быть сишный хедер с именами структурок и прототипами функций или ml-style сигнатура. Пока один индус пишет реализацию оставшиеся 9999 пилят свой код, который использует этот модуль, в предположении, что он ведет себя так, как предписано интерфейсом. Ну это в теории, на практике не всегда понятно бывает не то что какой интерфейс, а из скольки и каких именно модулей программа будет состоять. Т.е. это номинально "правильный", но довольно тяжеловесный подход. Гораздо разумнее действовать по ситуации, типа как в ядре: интерфейсы между подсистемами не высечены в граните, потому что проще пройтись и быстренько поправить по месту когда/если это потребуется, чем в долгих муках рожать Идеальный Интерфейс, который переживет и автора, и его внуков. А вот пройтись по всему юзерспейсу уже так просто не выйдет, поэтому там все гораздо строже.

А идеология оказалась такой заразной, я даже не знаю почему (помимо агрессивного ее насаждения всеми правдами и не)... наверное, потому что обещала золотые горы - единый способ моделирования Реальности с помощью всего двух отношений: is-a (наследование) и part-of (композиция), причем так чтобы, имея на руках "Cat c1 = ...;", знать Всё что можно вообще знать о с1 и ее поведении. Что, во-первых, естественно, полная лажа и никакой критики не выдерживает (e.g. circle-ellipse problem). А, во-вторых, кто вообще сказал что программировать надо, "моделируя реальность"? Умные люди типа дейкстры предупреждали еще тогда - одумайтесь, мол, вы не ведаете что творите, проблем от этого будет больше чем профита!, но их никто не послушал (профитом-то в виде денег запахло уже сейчас, кого ебет какое-то там "потом"?). Ну вот примерно откуда-то отсюда и вылезают "классы" - попытка создать языковую конструкцию, которая это видение помогла бы воплотить в жизнь, что уже в свою очередь приводит к проблемам чисто техническим (и уже даже не связанным с организацией кода). Как инстанцировать класс? Кто аллоцирует память? В каком порядке? Кто её инициализирует? Всю или нет? Чем? Почему? В каком порядке? И самое главное, что делать, если что-то пошло не так? Как удалить такой объект? В каком порядке? Что делать если что-то пошло не так во время удаления? Короче говоря, как это обычно бывает в сиплюсплюсах, ни одной старой проблемы не решили, а новых насоздавали целую кучу на абсолютно ровном месте. А если начать _честно_(а не в терминах "эксепшен сейфти") отвечать на эти вопросы, то все модномолодежное программирование очень быстро "деградирует" до старперсколуддитского си. Ой.

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


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

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2020-11-30 17:15 (ссылка)
спасибо за простыню. Я лишь понюхал программерство (как раз со стороны плюсцов), прояснил сейчас для себя некоторые вещи.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]sometimes
2020-11-30 19:26 (ссылка)
Советую нюхать со стороны free pascal, scheme (через sicp) и ocaml. ООП на примере pharo или squeak.

Кресты и даже просто C слишком перекрученный язык для первого знакомства имхо.

Для паскаля есть очень хорошая книжка "Программирование: теоремы и задачи"; после элементарного знакомства с языком.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2020-11-30 20:00 (ссылка)
спасибо

(Ответить) (Уровень выше)


(Анонимно)
2020-11-30 18:45 (ссылка)
is-a может быть subtyping без классического ООП(implementation inheritance)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]sometimes
2020-11-30 19:29 (ссылка)
Зло даже не implementation inheritance, а non-pure virtual functions, то есть абьюз паттерна template method (который следует делать через параметризованную callback'ами функцию модуля, видимо, практически всегда).

(Ответить) (Уровень выше)


(Читать комментарии) -