ailev.ru

Обсуждение

В архиве: 17 комментариев.

Читать и комментировать в ЖЖ ↗

Анатолий Левенчук · 19 марта 2007

Комментарий

.net не обладает сверхпоздним связыванием, рефлексией и возможностью интроспекции. А проект FONC ставит эти три задачи как главные. К тому же зависимый от конкретной архитектуры железа один из прототипов базового модуля FONC был примерно 1.5Кбайт, а все остальное уже было записано на целевых языках виртуальной машины (всего там четыре языка) -- не думаю, что .NET способен на такое. Вы почитайте внимательно материалы FONC, там достаточно статей в открытом доступе.

Ответ на комментарий

Имя не сохранено · 19 марта 2007

Комментарий

Очень интересная вещь и, на мой взгляд, перспективная вещь. А вот о специализированном железе они думают зря - опыт смолтока и джавы показывает, что выигрыш при этом очень маленький получается. Или имеется в виду не "железо специально для этой ВМ", а разные встраиваемые решения?

Имя не сохранено · 19 марта 2007

Сверхпозднее связывание, рефлексия и интроспекция

Я больше знаком с наследованием, инкапсуляцией и полиморфизмом. Теперь вижу три новых термина и пытаюсь их осмыслить. Хочу понять, что лично Вы в них вкладываете. Разбираю по порядку: 1. Сверхпозднее связывание. Такого термина не нашел. Однако по аналогии с ранним связыванием (статическая линковка) и с поздним связыванием (DLL) предполагаю, что сверхпозднее связывание (объектов с их использованием?) происходит уже в процессе выполнения кода с заранее неизвестным классом\объектом. 2. Для этого нужно уметь получать информацию о классах данных в самой программе (а не в линкере например). Это рефлексия? Рефлексия, лат., психолог., вообще мышление, в частности - обращение внимания на собственную деятельность сознания. В спец. смысле у Локка Р.- внутреннее восприятие, то есть постижение психических процессов посредством внутреннего чувства; рассматривается им как один из источников нашего познания; др. источник - ощущение. http://slovari.yandex.ru/art.xml?art=brokminor/34/34275.html&encpage=brokminor&mrkp=http%3A//hghltd.yandex.com/yandbtm%3Furl%3Dhttp%253A//encycl.yandex.ru/texts/brokminor/34/34275.html%26text%3D%25F0%25E5%25F4%25EB%25E5%25EA%25F1%25E8%25FF%26reqtext%3D%25F0%25E5%25F4%25EB%25E5%25EA%25F1%25E8%25FF%253A%253A820677%26%26isu%3D2 Если да, то я сверхпоздним связыванием и рефлексией занимался ровно 10 лет назад, на Delphi. Там есть такой тип (и сопутствующие классы) RTTI (RealTime Type Information). Большинство плагинов строится по такому принципу на любой платформе. NET тут не исключение: Применение рефлексии для написания плагинов ( http://www.inln.ru/vng/Publ/Plugins.aspx ) 3. Интроспекция, наблюдение душевных явлений непосредственно в самом себе, самонаблюдение. http://slovari.yandex.ru/art.xml?art=brokminor/19/19812.html&encpage=brokminor&mrkp=http%3A//hghltd.yandex.com/yandbtm%3Furl%3Dhttp%253A//encycl.yandex.ru/texts/brokminor/19/19812.html%26text%3D%25E8%25ED%25F2%25F0%25EE%25F1%25EF%25E5%25EA%25F6%25E8%25FF%26reqtext%3D%25E8%25ED%25F2%25F0%25EE%25F1%25EF%25E5%25EA%25F6%25E8%25FF%253A%253A16440975%26%26isu%3D2 Разница между рефлексией и интроспекцией с точки зрения кода столь мала, что я ее например совсем не вижу :(

Ответ на комментарий

Анатолий Левенчук · 19 марта 2007

Re: Сверхпозднее связывание, рефлексия и интроспекция

Я приводил ссылки на статьи, которые вводили эти термины. Увы, я забываю, что мало кто проходит потом по приведенным мной ссылкам, и использую замеченные мной термины в своих постах. И каюсь потом. Утешает меня только то, что я пишу свой блог во многом как дневник -- заметки для себя. Итак, все три слова -- главные для Ian Piumarta (http://piumarta.com/cv/), главного в проекте FONC. Достаточно посмотреть на заголовки его презентаций. рефлексивность -- http://www.laputan.org/ref89/ref89.html (двадцатилетней давности статья -- а с этих времен много воды утекло ;) Рефлексивность -- это возможность программы судить о себе самой (или писать себя саму). сверхпозднее связывание (extreme-late binding) -- это про то, что синтаксис, семантика и прагматика в языках программирования могли бы быть первоклассными объектами. http://216.239.59.104/search?q=cache:q0QmIOjL59wJ:wiki.eranova.si/esug/Extremely%2520late%2520binding+%22Extremely-Late+Binding%22+%22first-class%22&hl=en&ct=clnk&cd=1 (пришлось вытаскивать из кэша -- это трехлетней давности работа). Свежее использование термина -- http://www.vpri.org/pdf/NSFproposal.pdf (в варианте completely late binding of everything -- что связывание должно работать даже в том случае, когда непонятно, какой язык будет наворочен над исполнительным механизмом в результате его раскрутки-bootstrapping), в варианте extremely late bound (deeply dynamic) system -- в http://piumarta.com/papers/albert.pdf Тут есть еще и multidimension dynamic bind -- http://www.vpri.org/pdf/prototypes1.pdf Интроспекция -- "Explanation and Self-Disclosure: All the personal computing systems we are aware of, including our own, are very poor at explaining themselves, even to professionals, and are essentially opaque to non-expert users. A number of AI and expert systems have employed filtered versions of deductive histories to produce a narrative explanation of their inferences [Exp]. We have experimented with these ideas to allow any structure to explain and show how it was made. These simple explanations can be annotated to produce richer and more forgiving renditions, but the real value in explanations are those that can be generated automatically in a setting that allows end-user exploration. Our particular approach to modeling time (see ahead) also allows extensive undo, redo, checkpointing, and the ability to run computations both forwards and backwards to understand what is going on. Our aim here is to have “the system be the curriculum”. This will eventually require this system to go beyond being reflective to being introspective via a self-ontology. This can be done gradually without interfering with the rest of the implementation." Это из http://www.vpri.org/pdf/NSFproposal.pdf Дальше уж сами :)

Ответ на комментарий

Анатолий Левенчук · 19 марта 2007

Комментарий

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

Ответ на комментарий

scriptum · 19 марта 2007

Комментарий

Antlr (antlr.org) генерирует джава и c# интерпретаторы различных языков, включая функциональные, что позволяет достаточно просто совмещать различные парадигмы прямо сейчас.

Анатолий Левенчук · 19 марта 2007

Комментарий

Ага, но он сам не написан на себе самом и не позволяет модифицировать сам себя на лету. Цели другие, получилось другое.

Ответ на комментарий

Имя не сохранено · 20 марта 2007

Re: Сверхпозднее связывание, рефлексия и интроспекция

Итого имеем - рефлексивность есть необходимое условие для наличия позднего связывания. Программа должна уметь судить о себе самой, чтобы рассказать о себе объектам, подключаемым на этапе позднего связывания. Писать себя саму - больше похоже на фантастику, чем на здравый смысл, поэтому этот пойнт просто опускаю. Отличия интроспекции от рефлексивности с точки зрения программы не увидел. В общечеловеческом смысле разницу увидел только в одном - программа имеет автоматическую возможность объяснять свое устройство не только другой программе, но и человеку, причем мало подготовленному (в смысле разработки программ), с показом истории развития и непосредственно процесса выполнения. В общем отвечаю на Ваш вопрос - у NET вполне себе есть и позднее связывание, и рефлексия. Ссылку с примером уже приводил выше. Глубинную необходимость интроспекции "ниасилил". В терминах Пайтона так вообще эти слова - синонимы. Какова ее практическая применимость? Особенно порадовал Тим Питерс: "Метаклассы (это которые описывают и на лету создают классы) - бОльшая магия, чем нужно 99% пользователей. Если вы задаетесь вопросом, нужны ли они вам, значит, они вам не нужны (те, кому они действительно нужны, точно это знают, и им не требуется объяснение, зачем)" А читать Вас много приятнее, чем ссылки, потому что 1) по-русски и 2) можно задать вопросы. PS: Много лет назад участвовал в процессе разворачивания процедурного языка высокого уровня в лисп, а его в свою очередь в лямба-исчисление, в надежде через какое-то время спроектировать мегабыстрый процессор под комбинаторную логику. Нафих никому это не нужно оказалось. А где нет денег, там нет и [быстрого] результата.

Ответ на комментарий

Анатолий Левенчук · 20 марта 2007

Re: Сверхпозднее связывание, рефлексия и интроспекция

Да. Именно так. Сокращение объема текста программ в разы, плюс аспект-ориентированность (под десятком разных имен, все из которых подразумевают операции по модификации текста программы). Плюс повышенная портируемость на самые разные архитектуры. Это, действительно, ползет новое поколение (путем попадания в промышленные системы больших кусков из исследовательских проектов: .NET не на ровном месте появился.) На Смоллтоке есть, кстати, средства аспект-ориентированного программирования. Но чистый Смоллток для полномасштабной аспектной работы пока не годится, чем и озаботились его авторы и разработчики. И пошли дальше. Сквик (свободная смолток-среда), а Крокет -- библиотека и набор инструментов к ней (SDK, software development kit), причем такая библиотека, в которой сама виртуальная машина Сквика по потребностям (много пользователей, много машин в P2P, синхронизации времени, 3D-интерфейсы) немного изменена. Sophie -- это тоже не столько приложение, сколько набор библиотек (пакетов). Берете, например, Крокет за основу, набираете себе далее из Сквика, Sophie и других проектов нужные пакеты и пишете потребные вам приложения.

Ответ на комментарий

Имя не сохранено · 20 марта 2007

Re: Сверхпозднее связывание, рефлексия и интроспекция

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

Ответ на комментарий

Имя не сохранено · 20 марта 2007

Комментарий

Слушал прошлым летом Dr. Nicholas Negroponte первое живое представление OLPC. Еще то шоу было. Но речь шла о традиционном железе. Новое железо очень дорого.

Ответ на комментарий

Анатолий Левенчук · 20 марта 2007

Re: Сверхпозднее связывание, рефлексия и интроспекция

1. "Наша попытка" -- это чья?! Ian Piumarta, на которого я ссылаюсь, родился в UK, работал значительную часть своей жизни во France, а последние пару лет -- в USA. И кто тут "наши"? :)) 2. Было четыре веточки: Лисп, Пролог, ОО (Симула/Смоллток) и "нейрокомпьютеры". Как я понимаю, Ian Piumarta заявил, что может сделать объектно-функциональное программирование. И неуклонно движется к цели, демонстрируя не только теорию, но и работающие прототипы. Нейрокомпьютеры заняли свою нишу, а декларативные языки (и затесавшийся к ним чужак Пролог) закончились чем-то типа www.cyc.com и пытаются найти вторую жизнь в рамках Semantic Web (в частности, RDF, OWL, языки формальных правил и т.д. -- там довольно много уже намешано). 3. Мне сильно нравится то, что делает Piumarta. Это действительно похоже на новое поколение программирования. Только непонятно, насколько это все сможет пойти в массы: для освоения таких идей до уровня мыслительной беглости нужно полностью менять подход к обучению студентов, а также иметь системы промышленного качества (что трудно в университетах).

Ответ на комментарий

Анатолий Левенчук · 20 марта 2007

Комментарий

Как я понял, за последний год железо в этом проекте довольно сильно поменялось. И оно там не традиционное (один экран чего стоит!).

Ответ на комментарий

Имя не сохранено · 22 марта 2007

Комментарий

Года четыре вертелись подобные мысли, а теперь вот походил по ссылкам и понял что это уже реализуют полным ходом. Но - блин, какие монстры! :) И тут мене интересует, что это не просто новый способ писать программы, это другой способ мыслить. В своих собственных мозгах на метауровнях можно запутаться глубоко и долго, а уж делать программу по такому принципу........... ....надо будет попробовать :)

Анатолий Левенчук · 27 мая 2007

Комментарий

Случайно просматривал эту ветку комментов и вспомнил, что уже про это (отношение этих ребят к железу) писал -- речь действительно идет о другой архитектуре, и целевом "архитектурном ускорении" на три порядка -- в 1000 раз, просто повторением архитектуры Burroughs 1961 с модификациями 1979 года (http://ailev.livejournal.com/481100.html): Just as an aside, to give you an interesting benchmark—on roughly the same system, roughly optimized the same way, a benchmark from 1979 at Xerox PARC runs only 50 times faster today. Moore’s law has given us somewhere between 40,000 and 60,000 times improvement in that time. So there’s approximately a factor of 1,000 in efficiency that has been lost by bad CPU architectures. The myth that it doesn’t matter what your processor architecture is—that Moore’s law will take care of you—is totally false.

Ответ на комментарий