• Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    При этом в другом ответе меня убеждали, что ядро линукс - это ООП
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    jcmvbkbc:
    В линуксе куча глобальных переменных и куча функций и лишь совсем чуть-чуть "методов"

    many independent implementations. Many of those wrong. A common implementation was needed


    Речь шла о том, почему конкретно для устройств или конкретно для refcounted вещей нужно что-то вроде ООП. А почему вообще нужен ООП или почему для обычных примеров из учебника типа текстового редактора или тетриса нужен ООП, никто мне не говорил. (Да и вообще, никто не говорил, что kobject - это ООП. У них есть инкапсуляция, наследование и полиморфизм? Ну полиморфизм, видимо, есть, остальное - не уверен)
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    Да-да-да, https://lwn.net/talks/fosdem-kobject/

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

    ООП -- один из возможных путей уменьшения сложности

    Один из тех неконкретных аргументов, который я ненавижу. Ты мне пример дай, где показывается, почему ООП упрощает дело
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    А почему вы отрицаете статический?


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

    А как же мы у STL-контейнеров тогда это вызываем и всё прекрасно работает без наследования и виртуальных функций?


    Да потому что там на этапе компиляции известно, скажем, на какой тип указывают итераторы, которые мы передаём в std::sort. А у библиотеки виджетов такое не всегда.

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


    Сперва я был удивлён, как такое возможно. Т. е. если на этапе компиляции мы точно знаем, какие именно виджеты будут в составе большого, то да, без динамического полиморфизма можно обойтись. С помощью template'ов, кодогенерации и пр. А если не известно? Тогда, мне кажется, вообще никак обойтись нельзя. Разве что на std::variant заменить. Так что пошёл искать этого вашего Sean Parent. И нашёл. Вот он: sean-parent.stlab.cc/presentations/2017-01-18-runt... . В общем, просмотрел я эту презентацию. И скажу вот что. Там всё равно есть динамический полиморфизм. И наследование. Просто он скрыт от юзера либы.

    А вообще я в этом вопросе просил убедить меня в том, что нужно юзать ООП. А вы делаете наоборот. Да, я согласен с вами во многом. И с Sean Parent. Но мне-то надо, чтоб меня в ООП убедили. В том варианте, в котором обычно пишут на C++.

    идеология C++ в трёх, как вы сказали, китах: контейнеры, итераторы и алгоритмы


    Я надеюсь, вы имели в виду "идеология STL"?

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


    Тех, кто неправильно использует деепричастия, нужно расстреливать. Бесит. rus.1september.ru/article.php?ID=200403608
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    longclaps: Да, я хочу научиться тому, что не нравится. Ну а что поделать? В современном программировании считается, что ООП нужно почти в любом языке. Значит, почти на любой работе от меня будут требовать ООП. Написание ООП программ (чтобы другим якобы было проще изменять) и внесение изменений в существующие. Вообще, есть одна область, которая мне нравится, и где ООП нужно лишь по минимуму, именно в той степени, как мне надо. Это низкоуровневое программирование. На C, C++ и асме. Под какой-нибудь чип. Ну или написание драйверов. И тому подобное. Там как раз ООП будет ровно в той степени, в какой оно есть в упомянутом ядре Linux. Как раз как надо.

    Вот только как туда попасть? Опыт коммерческой разработки у меня всего 8 месяцев, остальное - всякие личные проекты на гитхаб. Не уверен, что меня сразу допустят прогать под какой-нибудь чип, на столь ответственную работу. А даже если возьмут, могут просто сразу выпереть за низкую производительность труда и низкую дисциплину (собственно, за это меня вчера уволили из DSSL). Идеально было бы сейчас юниором, но под чипы. Чтоб мало требовали. А дальше уже постепенно расти. А такая работа есть разве?!
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    Окей, но я хочу научиться ООП. Писать всю программу разделённой на классы
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @safinaskar Автор вопроса
    AquariusStar: Ещё раз, хочу научиться писать именно на ООП. Ну вот, допустим, надо написать тетрис на ООП. Надо и всё. Но одновременно хочется понять этот ООП, его философию, а не то, чтоб "Раз надо, значит, надо, напишу, чтоб отстали"
  • Перенаправление части интернет-трафика через VPN в Windows

    @safinaskar
    >> дать возможность Outlook доступаться к почтовому серверу, доступному только в локальной сети при коннекте к внешнему VPN
    Ну дык. Запишите в таблице роутинга, чтобы запросы к почтовому серверу и серверу Джаббера шли через VPN, а остальные — нет.
  • Мотивация программирования — деньги. Это нормально?

    @safinaskar
    Ээээээ, писать свободное ПО не обязательно на гитхабе. Вон Линус написал ядро когда хостингов свободного ПО вообще не было