Здравствуйте, Cyberax, Вы писали:
C>А... А я думал, что что-то действительно серьезное. Берем и переписываем байт-код в Java так, чтобы касты объекта типа Proxy превращались в вызовы специального метода. Спокойно делается в рантайме.
object o = GetProxy();
var x = o as X;
Чего будем переписывать? Все касты во всем коде включая библиотеки?
AVK>>А что там интероперировать, если WCF поддерживает все стандарты WS? C>Так Tango и есть просто реализация всех стандартов WS.
Почему не ввиде расширения Jini? Может потому что последний заметно проще чем WCF и в его архитектуру все потребные фичи просто не укладываются? Как в Jini с поддержкой messaging, streaming, notifications, reliable messaging, p2p, metadata exchange? Есть ли в jini реализация аутентификации kerberos, x509, cardspace, ws-federation, ntlm? Что там насчет поддержки авторизации?
AVK>>Jini нельзя добавить поддержку веб-сервисов в полном объеме? C>В Jini можно добавить все что угодно, там архитектура гибкая.
Зачем тогда Tango?
... << RSDN@Home 1.2.0 alpha rev. 693 on Windows Vista 6.0.6000.0>>
Здравствуйте, Andrei N.Sobchuck, Вы писали:
AVK>>Ты все перепутал.
ANS>Я ниче не мог перепутать, потому как я спрашивал как именно оно работает.
Значит перепутал тот, кто тебе отвечал.
AVK>>Анонимные типы недоступны компилятору за пределами метода.
ANS>То есть возвращаемое Linq-ом значение нельзя вернуть из метода (кроме как Object)?
Да.
AVK>>С точки зрения рантайма (а биндинг работает только в рантайме) никаких анонимных типов нет, есть обычные классы.
ANS>Дык тем фактом, что Linq всё во время компиляции проверяет, а не в ран-тайм. Или ты о чем?
Ты чего, совсем не читаешь тред, на который отвечаешь?
class UI
{
void OnLoad()
{
binder.List = from c in Customer select c;
}
}
Это биндинг. Вот он с анонимными типами будет работать без проблем, несмотря на то, что реализован в сборках FCL.
... << RSDN@Home 1.2.0 alpha rev. 693 on Windows Vista 6.0.6000.0>>
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>хм. начал думать причем тут clr. Так и не понял.
Во-первых:
var x = new {Customer.Name, Customer.Description};
var y = new {Person.Name, Person.Description};
Console.WriteLine(x.GetType() == y.GetType()); // true
Во-вторых, как только анонимный тип станет доступен за пределами метода (а значит и за пределами сборки), это, в условиях .NET, автоматом означает, что генерацию анонимных типов должен делать уже не компилятор, как сейчас, а JIT, потому что только JIT обладает полной информацией о всех загруженных сборках.
... << RSDN@Home 1.2.0 alpha rev. 693 on Windows Vista 6.0.6000.0>>
Здравствуйте, IT, Вы писали:
C>>А ты просто не используй Windows. Какие проблемы-то? IT>Всё, я больше не могу Кто-нибудь там поближе, киньте в этого маньяка чем-нибудь тяжёлым!
Отскочит и обратно прилетит
Я для чего сравнение делал — не всегда возможно просто так отказаться от индусокода.
Sapienti sat!
Re[56]: Являются ли макросы свидетельством недостаточной выр
AVK>object o = GetProxy();
AVK>var x = o as X;
AVK>
AVK>Чего будем переписывать? Все касты во всем коде включая библиотеки?
Как оно тогда работает? Неужто поставили хак прямо в JIT?
C>>Так Tango и есть просто реализация всех стандартов WS. AVK>Почему не ввиде расширения Jini? Может потому что последний заметно проще чем WCF и в его архитектуру все потребные фичи просто не укладываются?
Потому как в Java предпочитают разнообразие. Гораздо проще сделать Tango без дополнительного слоя поверх существующей инфраструктуры сервлетов — так что так и сделали.
AVK>Как в Jini с поддержкой messaging, streaming, notifications, reliable messaging, p2p, metadata exchange? Есть ли в jini реализация аутентификации kerberos, x509, cardspace, ws-federation, ntlm? Что там насчет поддержки авторизации?
Messaging, notifications точно есть. Reliable messaging — это JMS. Аутентификация+авторизация — это занятия для протокола передачи.
AVK>>>Jini нельзя добавить поддержку веб-сервисов в полном объеме? C>>В Jini можно добавить все что угодно, там архитектура гибкая. AVK>Зачем тогда Tango?
Для совместимости
Sapienti sat!
Re[9]: Являются ли макросы свидетельством недостаточной выра
VD>Ну, скажем простейшая задача. Хочу сгенерировать некий код для Х типов меня в нем код функции в зависимости от тех или иных условий. Ну, скажем если в типе есть строки, то вывести их на консоль, а если нет, то ничего не делать.
Для этого есть
-- из Data.Generics.Schemes
everywhereBut :: GenericQ Bool -> GenericT -> GenericT
everywhereBut q f x
| q x = x
| otherwise = f (gmapT (everywhereBut q f) x)
-- из Data.Generics.Aliases
-- знакомый нам тип обобщённого трансформераtype GenericT = forall a . Data a => a -> a
-- обобщенный тип запроса, принимающий любой тип a, и возвращающий тип rtype GenericQ r = forall a . Data a => a -> r
Добавим теперь ко всем строкам внутри типа суффикс " hi", не трогая других типов (это аналог твоей задачи)
Вся фишка в том, что тип в Хаскеле — алгебраический: его можно явно рассматривать как дерево и ездить по нему снизу вверх (everywhere) и сверху вниз (everywhere'), по пути фильтруя узлы (everywhereBut) и делая ещё ряд вкусностей:
--Summarise all nodes in top-down, left-to-right order
everything :: (r -> r -> r) -> GenericQ r -> GenericQ r
--Get a list of all entities that meet a predicate
listify :: Typeable r => (r -> Bool) -> GenericQ [r]
--Bottom-up synthesis of a data structure;
-- 1st argument z is the initial element for the synthesis;
-- 2nd argument o is for reduction of results from subterms;
-- 3rd argument f updates the synthesised data according to the given term
synthesize :: s -> (s -> s -> s) -> GenericQ (s -> s) -> GenericQ s
Re[57]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, Cyberax, Вы писали:
AVK>>Чего будем переписывать? Все касты во всем коде включая библиотеки? C>Как оно тогда работает? Неужто поставили хак прямо в JIT?
Именно так. Я тебе об этом с самого начала говорил.
AVK>>Почему не ввиде расширения Jini? Может потому что последний заметно проще чем WCF и в его архитектуру все потребные фичи просто не укладываются? C>Потому как в Java предпочитают разнообразие.
Перевожу на русский — любят изобретать велосипеды.
C> Гораздо проще сделать Tango без дополнительного слоя поверх существующей инфраструктуры сервлетов
А Jini работает поверх сервлетов?
C>Аутентификация+авторизация — это занятия для протокола передачи.
С чего бы это?
... << RSDN@Home 1.2.0 alpha rev. 693 on Windows Vista 6.0.6000.0>>
IT wrote:
> C>А ты просто не используй Windows. Какие проблемы-то? > > Всё, я больше не могу Кто-нибудь там поближе, киньте в этого маньяка > чем-нибудь тяжёлым!
Дело он говорит. Иногда бывает очень трудно объяснить, почему нужно писать так, а не иначе. Притом "мои инспекции
показывают..." не прокатывает — компилируется и ладно. Вот люди не знают про bind-параметры, не понимают объяснений, что
такое sql-injection — ради бога, пусть дальше мучаются, свои правила навязывать не всегда возможно.
Так что считай, что инспекции — типа вонингов в С++ (но не отнимающих время при компиляции), они проверяются,
показываются, но запустить и поиграться с кривым кодом возможно. И инспекции служат для проверки качества кода, а не его
работоспособности.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[59]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, ., Вы писали:
.>Иногда бывает очень трудно объяснить, почему нужно писать так, а не иначе.
Макросами можно сделать любые инспекции и выдавать во время компиляции хоть ворнинги, хоть ошибки компиляции. В самом компиляторе, например, нельзя объявить член любого класса типа Location не mutable. Ты такое можешь со своими инспекциями?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Являются ли макросы свидетельством недостаточной выра
FR>>Скорость и близость к железу не всегда совпадают
CU>А нафиг "близость к железу", если она не даёт скорость? Для самоудовлетворения?
У форта для близких к железу решений есть два железных преимущества, легкость портирования (аппаратно зависимые части ядра всего килобайты) и компактность получаемого кода (обгоняет многие ассемблеры). Поэтому для встраиваемых устройств очень хороший выбор. Кроме того по параметру размер реализации / высокоуровневость кода, форт рекордсмен до сих пор.
Re[9]: Являются ли макросы свидетельством недостаточной выра
VD>Руби, Питон и ЯваСкрипт — это скрипыт. Скрпты до мозга костей. Их методы метапрограммирования на прочь убивают любые потуги в лпане повышения производительности (компиляции), надежности (статические проверки) и поддерживаемости.
Влад тебе уже наверно десятки раз здесь показывали как работает метапрогроаммирование в том же питоне или Smalltalk'е, но ты все равно как попугай повторяешь свои любимые мантры.
Re[41]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, mkizub, Вы писали:
M>>>Заменить текст деревом.
CU>>Деревом-деревом!.. В виде списка... в текстовом файле
M>Пробовали — херня получается , Lisp называется.
1. "ниасилил"?
2. Вы просто не умеете его готовить.
P.S. Можно выбрать оба варианта
Re[10]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, mkizub, Вы писали:
CU>>>>Гибкость — да, скорость — нет.
FR>>>Скорость и близость к железу не всегда совпадают
CU>>А нафиг "близость к железу", если она не даёт скорость? Для самоудовлетворения?
M>Думай, голова, думай — не только кушать дана.
"Памяти мало, на скорость положить" — слишком узкий спектр задач. Даже в мобилку не пойдёт. Вот и остаётся только что засовывать в медленные но хитрые контроллеры да в бутромы всякие — скорость загрузки не критична.
Re[10]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, FR, Вы писали:
FR>У форта для близких к железу решений есть два железных преимущества, легкость портирования (аппаратно зависимые части ядра всего килобайты) и компактность получаемого кода (обгоняет многие ассемблеры). Поэтому для встраиваемых устройств очень хороший выбор. Кроме того по параметру размер реализации / высокоуровневость кода, форт рекордсмен до сих пор.
Так я и не спорил с применением во всяких контроллерах и прочей "ембедщине". Но тут его вроде как GPL предлагали?..
Re[46]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, cl-user, Вы писали:
M>>Пробовали — херня получается , Lisp называется.
CU>1. "ниасилил"? CU>2. Вы просто не умеете его готовить.
Спасибо за предложенный список, но у меня есть свой вариант.
Лисп в качестве языка мета-программирования — это вроде ассемблера для императивных языков.
На ассемблере можно многое сделать, но почему-то делают мало, а много предпочитают делать на ЯВУ.
У меня к Лиспу нежное отношение, поскольку они на пару с Фортом демонстрируют всю мощь мета-программирования. Как говорится, "и сжёг он то, чему поклонялся; и поклонился тому, что сжёг". Так я и сделал — реализовал систему мета-программироварния, которая так-же относится к Лиспу, как ЯВУ к ассемблеру. И поклонился дедушке Лиспу, сказав ему последнее прости-прощай.
Здравствуйте, mkizub, Вы писали:
M>Спасибо за предложенный список, но у меня есть свой вариант. M>Лисп в качестве языка мета-программирования — это вроде ассемблера для императивных языков. M>На ассемблере можно многое сделать, но почему-то делают мало, а много предпочитают делать на ЯВУ. M>У меня к Лиспу нежное отношение, поскольку они на пару с Фортом демонстрируют всю мощь мета-программирования. Как говорится, "и сжёг он то, чему поклонялся; и поклонился тому, что сжёг". Так я и сделал — реализовал систему мета-программироварния, которая так-же относится к Лиспу, как ЯВУ к ассемблеру. И поклонился дедушке Лиспу, сказав ему последнее прости-прощай.
Спасибо. Очень заинтересовало.
Что есть ЯВУ в мета-программировании? (N не вспоминать )
Re[11]: Являются ли макросы свидетельством недостаточной выр
Здравствуйте, cl-user, Вы писали:
CU>"Памяти мало, на скорость положить" — слишком узкий спектр задач. Даже в мобилку не пойдёт. Вот и остаётся только что засовывать в медленные но хитрые контроллеры да в бутромы всякие — скорость загрузки не критична.
— Скорость работы специализированной железяки определяется в первую очередь этой железячностью.
— Никому, как правило, нафиг не нужно исполнять программы общего назначения на специализированной железяке, и писать под неё компилятор для С — нафиг не нужно, а нередко и просто невозможно.
— Компилятор на С врядли обеспечит значительный прирост скорости, поскольку специализированные вещи делаются на ассемблере, а связка между функциями занимает 5% времени исполнения, оптимизировать эти 5% такой ценой — безумие.
— Несмотря на всю низкоуровневость С или аналогичных языков — у них есть неприятное свойство в виде наличия call conventions, которые сильно затрудняют их работу с ассемблерными методами.
Учитывая всё это (а может что-то и позабыл) — реализация кода на Форте в 99% случаев (т.е. кроме крайне массовых продуктов, вроде специлизированного GPU) будет быстрее, дешевле, надёжней, мощнее. Мизерные потери на скорость на этом фоне никого не волнуют. Я тебе больше скажу — на 9 телефонах из 10 (с ARM CPU), с которыми я работал — код компилируется в Thumb режиме. Да, это медленее на 30%, но на эти же 30% сокращает размер кода — и производители выбирают размер, и это не для специализированной железяки, а для девайса общего назначения.
Здравствуйте, cl-user, Вы писали:
CU>Что есть ЯВУ в мета-программировании? (N не вспоминать )
Что есть ЯВУ вообще? Удобный синтаксис (отображение, восприятие кода), программирование в более высокоуровневых абстрациях (врочем, этого к Лиспу тяжело добавить больше, чем у него уже есть) и оптимизация опираясь на эти абстракции, а так-же переносимость (вот этого у Лиспа не очень). Есть ещё несколько полезных средств разработки, ассоциированных с ЯВУ (вроде IDE), которые менее удобны для "ассемблеров" в виду отсутствия у них конструкций со сложной семантикой. У Лиспа семантика расширяемая, но нет средств "сообщить/описать" эти расширения в IDE, поэтому последний так-же слабо поможет в написании мета-программ. Или в декларацию новых семантических конструкций необходимо добавлять описание для их понимания IDE — что-то вроде мета-протокола, как CLOS описывает ОО, так и какой-нибудь CLIDE будет описывать интеграцию с IDE.
Вот тут статья, которую всё никак не собирутся опубликовать на RSDN. http://www.symade.org/SOP_and_SymADE.doc
Я пишу новую и побольше, но это ещё не один день займёт.
Здравствуйте, AndrewVK, Вы писали:
AVK>>>Чего будем переписывать? Все касты во всем коде включая библиотеки? C>>Как оно тогда работает? Неужто поставили хак прямо в JIT? AVK>Именно так. Я тебе об этом с самого начала говорил.
Добавить, что ли, на досуге в JRE такой же хак? Кстати, тоже самое МОЖНО сделать переписывание байт-кодов. Только нужно будет переписывать ВСЕ касты.
Это возможно, но достаточно дорого по времени получится (ага, теперь понятно, почему портированое на Java приложение работало на 20% быстрее).
AVK>>>Почему не ввиде расширения Jini? Может потому что последний заметно проще чем WCF и в его архитектуру все потребные фичи просто не укладываются? C>>Потому как в Java предпочитают разнообразие. AVK>Перевожу на русский — любят изобретать велосипеды.
Именно. И в итоге выживает наиболее приспособленый, простой и удобный велосипед.
C>> Гораздо проще сделать Tango без дополнительного слоя поверх существующей инфраструктуры сервлетов AVK>А Jini работает поверх сервлетов?
Опционально, при использовании HTTP в качестве транспорта.
C>>Аутентификация+авторизация — это занятия для протокола передачи. AVK>С чего бы это?
А с чего бы это должно быть проблемой самого JINI?