Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2019, 21:00   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Если объекты изолированы друг от друга т.е они не взаимодействуют то они будут потоко-безопасными.
Изолировано что от чего? Если ничего ни с чем не взаимодействует, то что же программа делает?

Вот это же вроде не нарушает упомянутый закон Деметра, но не потокобезопасно:
Код:
public class Account {
  private decimal balance = 500.00m;

  public decimal GetBalance() {
    return balance;
  }

  public void Withdraw(decimal amount) {
    if (balance < amount)
      ...;
    balance -= amount;
  }
}

...
class Foo {
  var acc = new Account();
  
  void DoStuff() {
    RunThread(acc);
    RunThread(acc);
  }

  void RunThread(Account acc) {
    var thread = new Thread({
      while (true) {
        acc.Withdraw(1);
      }
    });
    thread.run();
  }
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.10.2019, 21:46   #12
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Изолировано что от чего? Если ничего ни с чем не взаимодействует, то что же программа делает?
Вот по этому я и дал более точную формулировку.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вот это же вроде не нарушает упомянутый закон Деметра, но не потокобезопасно:
Зато это уже не ООП стиль, а функциональный.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 03.10.2019, 21:50   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что тут функционального?

Запустили поток, передали ему данные (допустим вместо лямбды объект просто передается через конструктор или сеттер).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2019, 07:07   #14
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Так я вам говорил, что вы неправильно термины понимаете. Что-бы избавится от if state надо было брать не гибкую библиотеку. А ту у которой изоляция лучше, выше.
... Не вы проверяете, а ваша библиотека должны проверять IF.
Изоляция лежит около абстракции.
Например, все тот же malloc/free - реализуют прекрасную абстракцию. За счет того, что хорошо инкапсулирует (читай - изолирует).
С терминами все окей, вроде бы. Классическая литература трактурет так же, не вижу ни одной нестыковки.
rrrFer вне форума Ответить с цитированием
Старый 08.10.2019, 14:37   #15
oldsnowman
Участник клуба
 
Аватар для oldsnowman
 
Регистрация: 20.02.2015
Сообщений: 1,226
По умолчанию

Во всех ооп языках есть некоторые отклонения от эталонного ооп.
oldsnowman вне форума Ответить с цитированием
Старый 10.10.2019, 08:20   #16
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Сообщение от oldsnowman Посмотреть сообщение
Во всех ооп языках есть некоторые отклонения от эталонного ооп.
Именно, поэтому первый совет по дальнейшему изучения из этого "учебника":
Цитата:
посмотрите как описанные механизмы реализуются в вашем любимом языке и попробуйте реализовать небольшой проект.
rrrFer вне форума Ответить с цитированием
Старый 10.10.2019, 10:56   #17
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Изоляция лежит около абстракции.
Например, все тот же malloc/free - реализуют прекрасную абстракцию. За счет того, что хорошо инкапсулирует (читай - изолирует).
С терминами все окей, вроде бы. Классическая литература трактурет так же, не вижу ни одной нестыковки.
В данном случае речь скорее не об абстракции, а о сокрытии информации.
Мы скрываем детали реализации.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 10.10.2019, 11:29   #18
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
В данном случае речь скорее не об абстракции, а о сокрытии информации.
1) Доклад от Яндекса "Память - идеальная абстракция": https://www.youtube.com/watch?v=i87W3KyZgPw

Идеальная потому, что очень хорошо скрывает детали реализации.

2) Доклад про иерархию кэшей: https://vk.com/@for_programmer-annot...ef=group_block - автор (10 лет работает в IBM) говорит "любая абстракция протекает". Тут абстракцией является процессор, а протекает, потому что бенчмарками удается установить (раскрыть) детали реализации - размеры кешей, в частности.

3) о том, что абстракции текут (а не должны, т.к. их суть в сокрытии деталей реализации, т.е. инкапсуляции) говорит Джоэл Спольски - у него есть "Закон дырявых абстракций"

Абстракция должна реализовывать инкапсуляцию, их нельязя разделить.
rrrFer вне форума Ответить с цитированием
Старый 14.04.2023, 11:48   #19
mirudom
Заблокирован
 
Регистрация: 14.03.2022
Сообщений: 50
Радость

Цитата:
Сообщение от rrrFer Посмотреть сообщение
ИМХО, немного холиварная статья про "принципы ООП". С одной стороны, все это ООП - это очень просто, т.к. "добавили class, public, protected, virtual и ... все?".

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

А еще есть шаблоны проектирования, что с ними делать - пытаться понять или зазубрить? Преподаватель, отвечает на такие вопросы не всегда. Зато на эти вопросы пытается ответить статья, можно поспотрить и пообсуждать эту тему...

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

Последний раз редактировалось mirudom; 14.04.2023 в 19:45.
mirudom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Холивар - язык программирования 13th Общие вопросы по программированию, компьютерный форум 36 31.05.2012 23:41
Что такое холивар ЯП? Web-User Помощь студентам 11 22.07.2011 09:50
Принципы работы icq Mantell Общие вопросы .NET 0 30.06.2009 10:42
Классы vs. функции (вопрос, а не холивар) Qousio Общие вопросы C/C++ 7 21.05.2009 18:00