Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Цитата:
Сообщение от 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();
  }
}
Alex11223 вне форума   Ответить с цитированием
Старый 03.10.2019, 22:46   #12
Pavia
Лис
Участник клуба
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,982
По умолчанию

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

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

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

Запустили поток, передали ему данные (допустим вместо лямбды объект просто передается через конструктор или сеттер).
Alex11223 вне форума   Ответить с цитированием
Старый 04.10.2019, 08:07   #14
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,609
По умолчанию

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

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

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

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

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

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

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

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

Абстракция должна реализовывать инкапсуляцию, их нельязя разделить.
rrrFer вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Холивар - язык программирования 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


07:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.