OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 20 Сентябрь, 2019 04:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 15:26 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Есть проблема: деление на ноль вызывает исключение

А у вас проблемы никакой нет. Делайте интерфейс уже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 15:42 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 693
Откуда: Псков
Опять же Франц, stand-alone messages (в Lagoonа) и всё остальное, предотвращают семантические конфликты.
http://citeseerx.ist.psu.edu/viewdoc/do ... 1&type=pdf
Это опять к тому, что полезно поискать о чём уже подумано было :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 15:55 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Спасибо, посмотрю.
Ну утиные интерфейсы как бы тоже не вчера придуманы: http://www.emeraldprogramminglanguage.o ... 0paper.pdf


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 16:00 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
ilovb писал(а):
Есть проблема: деление на ноль вызывает исключение

Это не проблема, проблема была бы если бы не вызывало.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 16:06 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Нет желания участвовать в этом интеллектуальном сексе


ps Мне это все напоминает про споры о синезолотом платье. Ну или про совместимость типов "по имени" или "по структуре".
Сюда же забава по определению прав: "запрещать" или "разрешать". Инвертирование тут кроме удобства в конкретном случае ничего по сути не меняет. Количество информации и содержимое остается без изменений.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 16:21 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
ilovb писал(а):
Я не знаю как это воспринимают другие, но на мой взгляд, тот факт что можно рассматривать многих животных как нечто с четырьмя конечностями - это и есть обобщение (aka абстракция).
Канешна абстракция, что же ещё? Кто-то спорит? Только абстракция чего?
ilovb писал(а):
Давай я микролекцию тут прочитаю о сущности абстракции и абстрагирования (чую это давно уже надо было сделать, чтоб ссылаться):
Не, это себе читай.
Речь не об абстракциях, если ты не понял. А та не понял.
Речь о том, что в языках со статической типизацией сущности должны быть статичны на этапе компиляции. То, что интерфейсы позволяют иметь некую ограничительную вариативность, статически защищая некую сущность и унифицируя конекторы, обработчики, акторы и прочую хрень, не меняет статики в целом.
Динамические интерфейсы - для интерпретируемых, логических и тп языков, яп с динамической типизацией и тд. - там достаточно мусора и еще немного не помешает.
Но в языках со статической типизацией динамические интерфейсы не нужны. Если хочется динамики и, соответственно, потери управляемости, вэлком, но используя библиотечные штуки в виде рефлекшена, как предлагал Инфо21 или библиотечные методы, как предлагал Илья.
Не надо это в Обероны тащить.
Ну а вырожденные интерфейсы из одного метода... где-то они нужны, но таки адстракции нужно делать покрупнее, чтобы не заблудиться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 16:50 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Цитата:
Речь о том, что в языках со статической типизацией сущности должны быть статичны на этапе компиляции. То, что интерфейсы позволяют иметь некую ограничительную вариативность, статически защищая некую сущность и унифицируя конекторы, обработчики, акторы и прочую хрень, не меняет статики в целом.
Динамические интерфейсы - для интерпретируемых, логических и тп языков, яп с динамической типизацией и тд. - там достаточно мусора и еще немного не помешает.


Откуда ты всю эту фигню собрал, что должно быть, а что нет?
Если уж идти тут до конца, то и методы динамические нужно запретить, так чтоль?
Да что уж там, и наследование записей запретить - это ж тоже динамика. Тип то не фиксирован в рантайме.
И чем тут бодрые утки хужей?

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

А в интерпретируемых языках в основном и нет никаких интерфейсов. Там ваще что угодно куда угодно...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:00 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Борис, ты путаешь динамическую типизацию с полиморфизмом.
Когда ты определяешь ссылочные типы, и у тебя есть переменная некоторого базового типа, то тип этой переменной статичен на всем протяжении жизненного цикла. Даже если ты присвоишь этой переменной наследника базового типа, сама переменная тип не изменит. В этом и есть суть статической типизации. А при динамической типизации, тип переменной изменится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:09 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Kemet, в скриптовых языках это ровно так же. Тип статический везде один: Variant )))
А динамический тип меняется в рантайме. Блин, да про это даже сам Вирт ЕМНИП писал.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:21 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
ilovb писал(а):
Kemet, в скриптовых языках это ровно так же. Тип статический везде один: Variant )))
А динамический тип меняется в рантайме. Блин, да про это даже сам Вирт ЕМНИП писал.
Забавный ты человек ))) при написании скриптового языка, например на С++ ил Дельфи, может использоваться некая реализация типа variant, а могут используется различные наследники базового типа и указатель. Но это не значит, что в получившемся языке есть такой тип.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:28 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Госпади, да я привел пример того что вспомнил. В VisualBasic этот тип так кличется.
В других языках его обычно никак не называют, но тем не менее он есть (просто он один в языке). И реализован он, примерно одинаково везде.
И да, можно использовать наследование записей для реализации этой фигни для скриптовых языков.
Я это и имел ввиду, когда говорил, что в скриптовых языках это ровно так же.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:35 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Kemet писал(а):
Valery Solovey писал(а):
Глобальная таблица - это таблица внутри модуля или таблица на всё виртуальное адресное пространство?
В А2 в старом компиляторе была поддержка интерфейсов. Была она там для jvm изначально, но и в Активном Обероне была начальная недопиленая реализация. Для хранения интерфейсов использовалась двойная хеш-таблица (для ускорения ).
Да, я тоже думал про хеш-таблицы. Ключ - сигнатура, а значение - уникальное число. Тогда можно и без массива. Только размер у таблицы должен быть приличный, чтобы редко перестраиваться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:49 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
ilovb писал(а):
...
Хоспадиии, та в VB статическая типизация, а variant это динамический тип.
В Delphi тоже есть variant и он вшит в язык.


Последний раз редактировалось Kemet Понедельник, 09 Октябрь, 2017 17:52, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:51 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Kemet писал(а):
Объект сам должен предоставлять возможные интерфейсы.
Так он и предоставляет. В обоих случаях.

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

Если в кратце, то есть два направления ООП. В одном первичен класс, а в другом объект. И особенности интерфейсов растут отсюда. Со своими достоинствами и недостатками.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:56 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Kemet писал(а):
ilovb писал(а):
...
Хоспадиии, та в VB статическая типизация, а variant это динамический тип.
В Delphi тоже есть variant и он вшит в язык.


http://www.csidata.com/custserv/onlineh ... s/vbs6.htm

Давай прекратим этот бестолковый спор. Я устал. Все равно каждый при своем останется


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 17:57 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Valery Solovey писал(а):
И если резюмировать, то динамические интерфейсы плохи потому, что не дают нормально структуроировать большую програму, а статические интерфейсы плохи потому, что не дают нормально структурировать большую программу. Кто-то может возразить, что их интрфейсы не имеют таких проблем, если хорошо проектировать. Но и в противоположном лагере могут сказать то же самое.


Ну хоть один трезвый в этом пабе )))



ps Любопытно, что в первом же посте сказано, что преложено ДОПОЛНЕНИЕ к классическому ООП. Чуть ниже об этом было напомнено. Но внимательно читает походу только Valery Solovey.
Оба механизма остаются. Оба! Хотите ограничить конкретный параметр только набором типов - делайте конкретный тип и наследуйтесь от него. Хотите широкий интерфейс - используйте утиную типизацию. Мне тащемта тоже не нравится одна только утиная типизация как в Go. Таких извратов мне тоже не надо: https://github.com/golang/go/blob/maste ... ast.go#L43
Этот метод нужен только чтобы сделать интерфейс узким (дабы лишнее в него не запихать)
А потом они узлы типизируют так: https://github.com/golang/go/blob/maste ... st.go#L491
Т.е. тут по сути эмуляция расширения записей.
Я предпочитаю иметь в языке расширение записей вместо этих интеллектуальных упражнений.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 20:35 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
ilovb писал(а):
Ну утиные интерфейсы как бы тоже не вчера придуманы: http://www.emeraldprogramminglanguage.o ... 0paper.pdf

А можно вернуться в 70-е и посмотреть на clu.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 20:52 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
У меня сегодня уже всплывала в памяти Барбара со своими абстракциями )) Но я в упор забыл че там у нее было )
Надо освежить память, да...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 09 Октябрь, 2017 21:41 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
Динамики там не было, все статически. Но были "казуальные" интерфейсы.
Код:
  where t has quacks : proctype(t)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 10 Октябрь, 2017 12:23 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1113
Откуда: СССР v2.0 rc 1
Option Explicit превращает VBA в такой типизированный язык, что чтобы сделать Variant -- придётся прилично поизвращаться.
Динамические языки, аля питон -- обладают строгой типизацией. Если это целое -- то это целое, и никакая не строка. Но если сделаем принудительное приведение -- опля -- и уже строка!) И этим динамическая типизация страшна.
Множественное наследование -- это тоже хреново. Та самая Барбара уже не в первый раз всплывает за последние дни, как первая буква в SOLID. А это значит: множественное наследование в топку, привет композиции.
Итого, Борис. Садись повторять/вникать в SOLID. В твоих идеях, как минимум -- нарушается ТРИ принципа))
Абстрактные методы нужны тогда, когда процедуры гвоздями прибиваются записям. Посмотри внимательно, как сделано в Оберон-07, например как это может быть:
Код:
мФайл.Открыть(файл_указ, имя, режим);
мФайлТекст.Открыть(файл_указ, имя, режим, кодировка);
НАЧАТЬ
  мФайл.Отрыть(файл_указ, имя, режим);
  мФайлТекст.Перекодировать(текст, кодировка)
КОНЕЦ мФайлТекст.Открыть;

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB