Forth http://www.fforum.winglion.ru/ |
|
Форт и ООП http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2050 |
Страница 2 из 6 |
Автор: | вопрос [ Вт апр 07, 2009 20:59 ] |
Заголовок сообщения: | |
Цитата: Ведь от ООПа на самом деле не все и не всегда нужно. Не всегда, но долгоиграющий проект лучше делать с ООП - сильно организует
|
Автор: | Wlad [ Вт апр 07, 2009 23:04 ] |
Заголовок сообщения: | |
Согласен. Например, в обсуждаемом нами Инферно-Лимбо, применен приём (как я называю) "выбор типа по месту". Если в функцию (метод) передаётся некий объект, то мы можем затребовать у этого объекта наличие метода данной сигнатуры. И тогда не нужны чисто "антуражно-украшательские" танцы с бубнами по описанию интерфейсов-классов. Очень удобно. Напрмер мы имеем некую обобщённую функцию, в которой описан вызов методов (именно с такой сигнатурой), про которые мы думаем, что они именно такую функциональность и обеспечивают. И не заморачиваемся типами и классами даже ещё не созданных (и не спроектированных!) классов и типов. Более того, собственно ничего формального (обусловленного в языке правилами описания "классов-типов") делать-то и не надо! Просто вводим в объект функцию нужного вида и наполняем её неким кодом. А всякия там синтаксически-мазохистические изыски оставляем дяде Бьярну со товарисчи. |
Автор: | garbler [ Ср апр 08, 2009 09:57 ] |
Заголовок сообщения: | |
Wlad писал(а): в обсуждаемом нами Инферно-Лимбо, применен приём (как я называю) "выбор типа по месту".
у этого есть общепринятое название - "duck typing" - свои недостатки тоже есть http://www.xoltar.org/old_site/misc/static_typing_eckel.html, подход, кстати, не уникален, используется многими языками и в чём-то перекликается со "structural subtyping". в любом случае, этот подход не является взаимоисключающим к тому, что принято называть ООП. |
Автор: | mOleg [ Ср апр 08, 2009 11:06 ] |
Заголовок сообщения: | |
пардон, выделил обсуждениее Форт и ООП в отдельную тему для удобства. |
Автор: | mOleg [ Ср апр 08, 2009 11:09 ] |
Заголовок сообщения: | |
вот интересно, в какой последовательности вы определите свойства ООПа с точки зрения важности\частоты применимости? вот по-моему скромному мнению, главное самое - это управление пространством имен, а остальное второстепенно и как бы в нагрузку идет. |
Автор: | garbler [ Ср апр 08, 2009 13:26 ] |
Заголовок сообщения: | |
Wlad писал(а): А ЧТО ПРИНЯТО НАЗЫВАТь ООП ? Опять скатимся на .... Необязательно, всё уже сказано http://www.helloworld.ru/texts/comp/other/oop/ch02.htm особенно интересно сравнить с первым изданием (это там, где был common lisp, smalltalk, object pascal, ada и куча других экзотических систем). mOleg писал(а): вот интересно, в какой последовательности вы определите свойства ООПа с точки зрения важности\частоты применимости?
в книгах за последние 10-15 лет точка зрения плавно смещается от encapsulation, inheritance, polymorphism к abstraction, encapsulation, modularity, hierarchy. а что касается моего мнения - я бы не выделял, чем больше можно использовать в процессе написания (и при этом контролировать получающийся код) - тем лучше. |
Автор: | mOleg [ Ср апр 08, 2009 14:36 ] |
Заголовок сообщения: | |
garbler писал(а): а что касается моего мнения - я бы не выделял, чем больше можно использовать в процессе написания (и при этом контролировать получающийся код) - тем лучше.
в данном случае стоит как раз выделить и обсудить каждый, откуда и почему взялся, какая есть альтернатива в Форте. Все-таки наше все - это ПРЕОБРАЗОВАНИЕ ПОТОКА ДАННЫХ, или как там у Броуди написано? ООП в Форте лишняя и самое главное - это чужеродный набор абстракций/понятий (имхо, конечно), а главное есть собственный набор средств и методик, позволяющих делать то же. к тому же, когда говорят про ООП, сразу возникает необходимость/проблема типизации... Мне кажется, что разговоры про ООП в Форте чаще всего возникают из незнания/непонимания идеалогии Форта и собственно самого языка. |
Автор: | K`[f [ Ср апр 08, 2009 20:23 ] |
Заголовок сообщения: | |
mOleg писал(а): Мне кажется, что разговоры про ООП в Форте чаще всего возникают из незнания/непонимания идеалогии Форта и собственно самого языка.
ООП есть способ структурирования нашего представления предметной области. Обеспечивает, конечно, некоторый оверхед, но это цена за гораздо большую гибкость. В чём противоречие со средствами Форта - мне не ясно, например. |
Автор: | Wlad [ Ср апр 08, 2009 20:52 ] |
Заголовок сообщения: | |
А в чём гибкость? |
Автор: | K`[f [ Чт апр 09, 2009 07:15 ] |
Заголовок сообщения: | |
Wlad писал(а): А в чём гибкость?
Гораздо меньшая связность между компонентами. Это надо самому попробовать, чтобы понять. Особенно полезная штука - полиморфизм. Чем-то напоминает обычные операторы +/-* в каком-нибудь Си - их тоже можно произвольно применять к аргументам, которые это допускают. Только уровень, в общем, другой - даже в Форте это будет оправдано. |
Автор: | K`[f [ Чт апр 09, 2009 07:24 ] |
Заголовок сообщения: | |
Вообще, на это можно взглянуть несколько по другому. Мы не можем <u>эффективно</u> сделать операцию +, работающую с произвольным типом данных (в разумных пределах, конечно). Просто в силу природы Форта - это обратная сторона его расширяемости. Поэтому у нас и есть набор D+ F+ и т.п. Там, где обычный компилятор заранее знает аргументы, которые будут, мы можем лишь потребовать их. Т.е. для "+" - чтобы было две ячейки на стеке. Опять же, возвращаясь к давнему спору, именно поэтому я сторонник раздельных стеков для адресов. Ну а в классических скриптовых языках эта проблема решается сами знаете как... оверхед жуткий. Но вот в случае с манипуляцией объектами нам ничто не мешает использовать полиморфизм, т.к. на нижнем-то уровне это всегда будет работа с адресами - т.е. зоопарка из <u>физически</u> разных типов тут нет! Поэтому, имхо, некоторый <u>стандартный</u> ООП в Форте иметь дюже желательно. Да и вообще стандартную библиотеку следовало бы развить. Конечно, оффтопик, но я хотел бы видеть примерно следующее: 1.ООП 2.Стандартный GUI (примитивный, но достаточный для мелких задач) 3.Работу с потоками 4.Строки - СТАНДАРТНЫЕ (с этим есть сейчас некоторые проблемы, да, что именно делать) Ну и т.д. Но это, опять же, не для микроконтроллеров задачи решать... |
Автор: | VoidVolker [ Чт апр 09, 2009 08:08 ] |
Заголовок сообщения: | |
K`[f писал(а): 4.Строки - СТАНДАРТНЫЕ (с этим есть сейчас некоторые проблемы, да, что именно делать)
Я постоянно в ннкроне работаю со строками и соответственно есть опыт и наработки, так что могу поделиться |
Автор: | Wlad [ Чт апр 09, 2009 17:12 ] |
Заголовок сообщения: | |
K`[f писал(а): Wlad писал(а): А в чём гибкость? Гораздо меньшая связность между компонентами. Это надо самому попробовать, чтобы понять. Особенно полезная штука - полиморфизм. Чем-то напоминает обычные операторы +/-* в каком-нибудь Си - их тоже можно произвольно применять к аргументам, которые это допускают. Только уровень, в общем, другой - даже в Форте это будет оправдано. Понятно. Позвольте поинтересоваться, Лёха, а Вам, извините, годкофф-то скольки? Никакого наезду! Всё - касательно перечисленных Вами "гибкостей"! И - "надо самому попробовать, чтобы понять". Просто, видите ли, СТОЛЬКО, не то, что "пробовал", а прям-таки изваял систем, что - "имею право"... Я, извините, уже просто ДЫШУ ООП. Лет 17. И, в отличие от восторженных юношей, которые только-только начинают входить в серьёзную программерскую и проектную жизнь, мне уже не всё (ДАЛЕКО НЕ ВСЁ!!!) в таком розовом свете видится и зрится. ОСОБЕННО - на счёт "меньшей связности между компонентами"... |
Автор: | mOleg [ Чт апр 09, 2009 18:51 ] |
Заголовок сообщения: | |
K`[f писал(а): Гораздо меньшая связность между компонентами. Это надо самому попробовать, чтобы понять. Особенно полезная штука - полиморфизм. Чем-то напоминает обычные операторы +/-* в каком-нибудь Си - их тоже можно произвольно применять к аргументам, которые это допускают. Только уровень, в общем, другой - даже в Форте это будет оправдано. вот недавно приводил пример для человека, повторюсь: util/ utit.fts похоже? |
Автор: | mOleg [ Чт апр 09, 2009 18:57 ] |
Заголовок сообщения: | |
K`[f писал(а): Опять же, возвращаясь к давнему спору, именно поэтому я сторонник раздельных стеков для адресов. я вас понимаю, и думаю о том же, но есть ряд неприятностей тут: 1) код становится не совместим 2) может не хватить регистров для указателя стека (на ix86 это проблема) 3) увеличение количества слов K`[f писал(а): 3.Работу с потоками что под этим имеется ввиду? в смысле что не так с потоками в том же СПФ, например? K`[f писал(а): 4.Строки - СТАНДАРТНЫЕ (с этим есть сейчас некоторые проблемы, да, что именно делать)
Какие проблемы по-вашему? P.S. почему-то как только к Форту приходит человек с маинстрим языка, сразу пытается писать ООП собственный... а старые Фортеры ООП как-то не слишком пользуют в Форте |
Страница 2 из 6 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |