Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > BuKT

Оценить эту запись

О вопросе энтропии в реализации интерфейсов

Запись от BuKT размещена 02.07.2012 в 01:08
Обновил(-а) BuKT 02.07.2012 в 01:16

Попал в интересную логическую ловушку.

В институте учили, что бит информации, полученный от системы, это такое её количество, которое снижает её неопределённость вдвое. То есть бит информации можно воспринимать как булевый ответ "может" или "не может". "В состоянии" или "в противоположном состоянии" находится. Это - то, чему учили и что сомнению подвергать не хочется.

Дальше проводим мысленный эксперимент. Пишем класс и определяем в нём некий функционал. Кода написано опционально много, но количество этой информации мы не учитываем, ибо она остаётся внутри системы.

Рассмотрим два состояния - опубликованный и неопубликованный интерфейс класса. В первом случае, казалось бы, мы даём больше информации о системе, но рантайм неизвестно что с системой произойдёт (в этом, как я понимаю, суть абстракции) - неопределённость возрастает. Если же интерфейс не публиковать - очень даже понятно, что произойдёт с системой: при попытке вызвать метод или поле интерфейса вылетит ошибка.

Получается, публикация интерфейса (передача информации компилятору) повышает неопределённость, и наоборот.

В чём подвох?
Всего комментариев 14

Комментарии

Старый 02.07.2012 01:30 TanaTiX вне форума
TanaTiX
 
Аватар для TanaTiX
Существует некий объект с определенным набором методов.
Когда мы создаем такой объект, то компилятор "знает" какие у объекта есть методы. При обращении к несуществующему методу (даже если он реально существует) возникает ошибка на этапе компиляции. Это приведет к повышению стабильности в релизной версии. Это в случае если мы обращаемся к типизированному объекту, а не к динамическим свойствам. Таким образом можно сделать вывод что сила в типизации, типизация уменьшает вероятность ошибок.
Цитата:
бит информации, это такое её количество, которое снижает неопределённость системы вдвое
Я учился в другом университете, но предположу что данное высказывание справедливо относительно беспорядочно расположенной информации, а ведь любая программа, как бы отвратительно она не была написана, обладает хоть какой-то структурой, следовательно такое высказывание по отношению к программе (как к структуре) не справедливо, но справедливо относительно беспорядочного набора байтов.
Старый 02.07.2012 01:37 BuKT вне форума
BuKT
 
Аватар для BuKT
Цитата:
Я учился в другом университете, но предположу что данное высказывание справедливо относительно беспорядочно расположенной информации, а ведь любая программа, как бы отвратительно она не была написана, обладает хоть какой-то структурой, следовательно такое высказывание по отношению к программе (как к структуре) не справедливо, но справедливо относительно беспорядочного набора байтов.
Не совсем так. Данное высказывание справедливо относительно неизвестно насколько структурированной информации. То, что у программы есть структура нам запрещает знать абстракция. И немного помогает её понять - интерфейс.

Из ловушки я выбрался, завтра дам правильный ответ
Старый 02.07.2012 06:15 ramshteks вне форума
ramshteks
 
Аватар для ramshteks
Цитата:
Рассмотрим два состояния - опубликованный и неопубликованный интерфейс класса. В первом случае, казалось бы, мы даём больше информации о системе, но рантайм неизвестно что с системой произойдёт (в этом, как я понимаю, суть абстракции) - неопределённость возрастает. Если же интерфейс не публиковать - очень даже понятно, что произойдёт с системой: при попытке вызвать метод или поле интерфейса вылетит ошибка.
неправильно рассуждаете, то что происходит за интерфейсом отвечает на вопрос не "что" а "как". Поэтому любой "открытый" интерфейс дает вам бит информации, о том "что" может быть сделано, а каждая реализация бит информации о том "как" это может быть сделано. По мне так неопределенность как раз снижается
Обновил(-а) ramshteks 02.07.2012 в 06:45
Старый 02.07.2012 10:52 BuKT вне форума
BuKT
 
Аватар для BuKT
Там всё проще. Если при вызове опубликованного метода что-то происходит с системой - она перестаёт быть инерциальной (а следовательно перестаёт действовать второе начало термодинамики). Если же это просто геттер - то энтропия как раз снижается: определяя интерфейс мы налаживаем канал связи с системой и не более.
Старый 02.07.2012 12:29 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Как программирование связано с термодинамикой?

Речь о том, что энтропия снижается у системы. В замкнутной системе у рантайма не бывает "сбоев". Если где-то произошло обращение к null свойству, это удивление для тебя, но не для системы. С точки зрения системы всё верно и логично, и скорее всего для тебя тоже, если ты найдешь эту ошибку.
Есть интерфейс без реализации, или интерфейс без реализации - результат предопределен, возможно, совсем неочевидный для тебя. И системе пофиг, они общается только через интерфейсы и ждет ответ. Энтропия не меняется.
Старый 02.07.2012 15:12 Rzer вне форума
Rzer
 
Аватар для Rzer
Что только люди ни придумывают, чтобы не писать код
Старый 03.07.2012 00:07 Storfus13 вне форума
Storfus13
 
Аватар для Storfus13
При искусственном перенесении общих понятий на конкретные системы (чего-либо) необходимо вводить граничные условия и обозначать область определение. Тогда не будет логических ловушек.
В математике есть более глобальное понятие, например, множества (хоть бит, хоть молекул). И есть понятие меры множества, которое определяется (подчиняется) определенным правилам и, следовательно, ее можно пощупать мат. аппаратом.
А чем в данном контексте характеризуется понятие "неопределенность", если ее можно изменить вдвое (или втрое...)?
Старый 03.07.2012 08:39 Silicium вне форума
Silicium
 
Аватар для Silicium
Согласен, так-же добавлю, что неопределенность возникает при попытке "измерения" системы. Т.е. неопределенность имеет смысл только по отношению к внешней системе. Так что тут надо четко определить, что является исследуемой системой, а что - измеряющей (определяющей состояние). Из поста не ясно, является ли системой код, а "наблюдателем" компилятор, или же системой является код+компилятор, а наблюдателем, все-таки, кодер. Разные ситуации по отношению к передаче информации и возникновению неопределенностей.
Старый 03.07.2012 12:57 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Кот шредингера.
Старый 03.07.2012 16:15 Silicium вне форума
Silicium
 
Аватар для Silicium
Код Шредингера))
Старый 03.07.2012 16:20 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Подвох в том что нельзя вселенную под булевые значения подвести. Изначально бредовая постановка вопроса.
Старый 04.07.2012 13:04 BuKT вне форума
BuKT
 
Аватар для BuKT
Цитата:
Подвох в том что нельзя вселенную под булевые значения подвести.
Не совсем верно. Под булевые значения можно подвести получение информации о вселенной.
Старый 04.07.2012 23:27 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Цитата:
Под булевые значения можно подвести получение информации о вселенной.
дада: "получил/не получил."
Старый 05.07.2012 10:06 BuKT вне форума
BuKT
 
Аватар для BuKT
Цитата:
дада: "получил/не получил."
Я знаю отличную шутку про UDP... ©
 

 


Часовой пояс GMT +4, время: 10:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.