Re[55]: Являются ли макросы свидетельством недостаточной выр
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.08.07 19:11
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[45]: Являются ли макросы свидетельством недостаточной выр
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.08.07 19:33
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[45]: Являются ли макросы свидетельством недостаточной выр
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.08.07 19:33
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[58]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 08.08.07 19:48
Оценка:
Здравствуйте, IT, Вы писали:

C>>А ты просто не используй Windows. Какие проблемы-то?

IT>Всё, я больше не могу Кто-нибудь там поближе, киньте в этого маньяка чем-нибудь тяжёлым!
Отскочит и обратно прилетит

Я для чего сравнение делал — не всегда возможно просто так отказаться от индусокода.
Sapienti sat!
Re[56]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 08.08.07 19:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>
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]: Являются ли макросы свидетельством недостаточной выра
От: deniok Россия  
Дата: 08.08.07 20:27
Оценка: 10 (1)
Здравствуйте, VladD2, Вы писали:



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, и возвращающий тип r
type GenericQ r = forall a . Data a => a -> r


Добавим теперь ко всем строкам внутри типа суффикс " hi", не трогая других типов (это аналог твоей задачи)
myTransform  = everywhereBut notStrings (mkT (\s ->  s ++ " hi"))

-- строим конкретный запрос (mkQ - оператор их построения)
notStrings :: GenericQ Bool
notStrings = True ‘mkQ‘ isNotString

isNotString :: String -> Bool
isNotString s = False


Здесь обобщённый запросопостроитель mkQ (родственник mkT):
-- из Data.Generics.Aliases
mkQ :: (Typeable a, Typeable b) => r -> (b -> r) -> a -> r
(r ‘mkQ‘ q) a = case cast a of
                     Just b -> q b
                     Nothing -> r

работает так (ord возвращает ASCII-код)
Prelude> (22 ‘mkQ‘ ord) ’a’
97
Prelude> (22 ‘mkQ‘ ord) ’b’
98
Prelude> (22 ‘mkQ‘ ord) True
22


Вся фишка в том, что тип в Хаскеле — алгебраический: его можно явно рассматривать как дерево и ездить по нему снизу вверх (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]: Являются ли макросы свидетельством недостаточной выр
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.08.07 20:39
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[58]: Являются ли макросы свидетельством недостаточной выр
От: . Великобритания  
Дата: 08.08.07 20:53
Оценка:
IT wrote:

> C>А ты просто не используй Windows. Какие проблемы-то?

>
> Всё, я больше не могу Кто-нибудь там поближе, киньте в этого маньяка
> чем-нибудь тяжёлым!
Дело он говорит. Иногда бывает очень трудно объяснить, почему нужно писать так, а не иначе. Притом "мои инспекции
показывают..." не прокатывает — компилируется и ладно. Вот люди не знают про bind-параметры, не понимают объяснений, что
такое sql-injection — ради бога, пусть дальше мучаются, свои правила навязывать не всегда возможно.
Так что считай, что инспекции — типа вонингов в С++ (но не отнимающих время при компиляции), они проверяются,
показываются, но запустить и поиграться с кривым кодом возможно. И инспекции служат для проверки качества кода, а не его
работоспособности.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[59]: Являются ли макросы свидетельством недостаточной выр
От: IT Россия linq2db.com
Дата: 09.08.07 00:55
Оценка:
Здравствуйте, ., Вы писали:

.>Иногда бывает очень трудно объяснить, почему нужно писать так, а не иначе.


Макросами можно сделать любые инспекции и выдавать во время компиляции хоть ворнинги, хоть ошибки компиляции. В самом компиляторе, например, нельзя объявить член любого класса типа Location не mutable. Ты такое можешь со своими инспекциями?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: FR  
Дата: 09.08.07 03:33
Оценка:
Здравствуйте, cl-user, Вы писали:


FR>>Скорость и близость к железу не всегда совпадают


CU>А нафиг "близость к железу", если она не даёт скорость? Для самоудовлетворения?


У форта для близких к железу решений есть два железных преимущества, легкость портирования (аппаратно зависимые части ядра всего килобайты) и компактность получаемого кода (обгоняет многие ассемблеры). Поэтому для встраиваемых устройств очень хороший выбор. Кроме того по параметру размер реализации / высокоуровневость кода, форт рекордсмен до сих пор.
Re[9]: Являются ли макросы свидетельством недостаточной выра
От: FR  
Дата: 09.08.07 03:48
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Руби, Питон и ЯваСкрипт — это скрипыт. Скрпты до мозга костей. Их методы метапрограммирования на прочь убивают любые потуги в лпане повышения производительности (компиляции), надежности (статические проверки) и поддерживаемости.


Влад тебе уже наверно десятки раз здесь показывали как работает метапрогроаммирование в том же питоне или Smalltalk'е, но ты все равно как попугай повторяешь свои любимые мантры.
Re[41]: Являются ли макросы свидетельством недостаточной выр
От: cl-user  
Дата: 09.08.07 06:56
Оценка: +1 -1
Здравствуйте, mkizub, Вы писали:

M>>>Заменить текст деревом.


CU>>Деревом-деревом!.. В виде списка... в текстовом файле


M>Пробовали — херня получается , Lisp называется.


1. "ниасилил"?

2. Вы просто не умеете его готовить.

P.S. Можно выбрать оба варианта
Re[10]: Являются ли макросы свидетельством недостаточной выр
От: cl-user  
Дата: 09.08.07 06:59
Оценка:
Здравствуйте, mkizub, Вы писали:

CU>>>>Гибкость — да, скорость — нет.


FR>>>Скорость и близость к железу не всегда совпадают


CU>>А нафиг "близость к железу", если она не даёт скорость? Для самоудовлетворения?


M>Думай, голова, думай — не только кушать дана.


"Памяти мало, на скорость положить" — слишком узкий спектр задач. Даже в мобилку не пойдёт. Вот и остаётся только что засовывать в медленные но хитрые контроллеры да в бутромы всякие — скорость загрузки не критична.
Re[10]: Являются ли макросы свидетельством недостаточной выр
От: cl-user  
Дата: 09.08.07 07:05
Оценка:
Здравствуйте, FR, Вы писали:

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


Так я и не спорил с применением во всяких контроллерах и прочей "ембедщине". Но тут его вроде как GPL предлагали?..
Re[46]: Являются ли макросы свидетельством недостаточной выр
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 09.08.07 07:43
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>
AVK>class UI
AVK>{
AVK>  void OnLoad()
AVK>  {
AVK>    binder.List = from c in Customer select c;
AVK>  }
AVK>}
AVK>

AVK>Это биндинг. Вот он с анонимными типами будет работать без проблем, несмотря на то, что реализован в сборках FCL.

А какого типа List? (В примере будет Customer, как я понимаю, но меня интересует "вообще"). Там же не Object, который разгребается рефлексией?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[42]: Являются ли макросы свидетельством недостаточной выр
От: mkizub Литва http://symade.tigris.org
Дата: 09.08.07 08:28
Оценка:
Здравствуйте, cl-user, Вы писали:

M>>Пробовали — херня получается , Lisp называется.


CU>1. "ниасилил"?

CU>2. Вы просто не умеете его готовить.

Спасибо за предложенный список, но у меня есть свой вариант.
Лисп в качестве языка мета-программирования — это вроде ассемблера для императивных языков.
На ассемблере можно многое сделать, но почему-то делают мало, а много предпочитают делать на ЯВУ.
У меня к Лиспу нежное отношение, поскольку они на пару с Фортом демонстрируют всю мощь мета-программирования. Как говорится, "и сжёг он то, чему поклонялся; и поклонился тому, что сжёг". Так я и сделал — реализовал систему мета-программироварния, которая так-же относится к Лиспу, как ЯВУ к ассемблеру. И поклонился дедушке Лиспу, сказав ему последнее прости-прощай.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[43]: Являются ли макросы свидетельством недостаточной выр
От: cl-user  
Дата: 09.08.07 08:38
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Спасибо за предложенный список, но у меня есть свой вариант.

M>Лисп в качестве языка мета-программирования — это вроде ассемблера для императивных языков.
M>На ассемблере можно многое сделать, но почему-то делают мало, а много предпочитают делать на ЯВУ.
M>У меня к Лиспу нежное отношение, поскольку они на пару с Фортом демонстрируют всю мощь мета-программирования. Как говорится, "и сжёг он то, чему поклонялся; и поклонился тому, что сжёг". Так я и сделал — реализовал систему мета-программироварния, которая так-же относится к Лиспу, как ЯВУ к ассемблеру. И поклонился дедушке Лиспу, сказав ему последнее прости-прощай.

Спасибо. Очень заинтересовало.

Что есть ЯВУ в мета-программировании? (N не вспоминать )
Re[11]: Являются ли макросы свидетельством недостаточной выр
От: mkizub Литва http://symade.tigris.org
Дата: 09.08.07 08:48
Оценка:
Здравствуйте, cl-user, Вы писали:

CU>"Памяти мало, на скорость положить" — слишком узкий спектр задач. Даже в мобилку не пойдёт. Вот и остаётся только что засовывать в медленные но хитрые контроллеры да в бутромы всякие — скорость загрузки не критична.


— Скорость работы специализированной железяки определяется в первую очередь этой железячностью.
— Никому, как правило, нафиг не нужно исполнять программы общего назначения на специализированной железяке, и писать под неё компилятор для С — нафиг не нужно, а нередко и просто невозможно.
— Компилятор на С врядли обеспечит значительный прирост скорости, поскольку специализированные вещи делаются на ассемблере, а связка между функциями занимает 5% времени исполнения, оптимизировать эти 5% такой ценой — безумие.
— Несмотря на всю низкоуровневость С или аналогичных языков — у них есть неприятное свойство в виде наличия call conventions, которые сильно затрудняют их работу с ассемблерными методами.

Учитывая всё это (а может что-то и позабыл) — реализация кода на Форте в 99% случаев (т.е. кроме крайне массовых продуктов, вроде специлизированного GPU) будет быстрее, дешевле, надёжней, мощнее. Мизерные потери на скорость на этом фоне никого не волнуют. Я тебе больше скажу — на 9 телефонах из 10 (с ARM CPU), с которыми я работал — код компилируется в Thumb режиме. Да, это медленее на 30%, но на эти же 30% сокращает размер кода — и производители выбирают размер, и это не для специализированной железяки, а для девайса общего назначения.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[44]: Являются ли макросы свидетельством недостаточной выр
От: mkizub Литва http://symade.tigris.org
Дата: 09.08.07 09:06
Оценка:
Здравствуйте, cl-user, Вы писали:

CU>Что есть ЯВУ в мета-программировании? (N не вспоминать )


Что есть ЯВУ вообще? Удобный синтаксис (отображение, восприятие кода), программирование в более высокоуровневых абстрациях (врочем, этого к Лиспу тяжело добавить больше, чем у него уже есть) и оптимизация опираясь на эти абстракции, а так-же переносимость (вот этого у Лиспа не очень). Есть ещё несколько полезных средств разработки, ассоциированных с ЯВУ (вроде IDE), которые менее удобны для "ассемблеров" в виду отсутствия у них конструкций со сложной семантикой. У Лиспа семантика расширяемая, но нет средств "сообщить/описать" эти расширения в IDE, поэтому последний так-же слабо поможет в написании мета-программ. Или в декларацию новых семантических конструкций необходимо добавлять описание для их понимания IDE — что-то вроде мета-протокола, как CLOS описывает ОО, так и какой-нибудь CLIDE будет описывать интеграцию с IDE.

Вот тут статья, которую всё никак не собирутся опубликовать на RSDN.
http://www.symade.org/SOP_and_SymADE.doc
Я пишу новую и побольше, но это ещё не один день займёт.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[58]: Являются ли макросы свидетельством недостаточной выр
От: Cyberax Марс  
Дата: 09.08.07 10:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Чего будем переписывать? Все касты во всем коде включая библиотеки?

C>>Как оно тогда работает? Неужто поставили хак прямо в JIT?
AVK>Именно так. Я тебе об этом с самого начала говорил.
Добавить, что ли, на досуге в JRE такой же хак? Кстати, тоже самое МОЖНО сделать переписывание байт-кодов. Только нужно будет переписывать ВСЕ касты.

Это возможно, но достаточно дорого по времени получится (ага, теперь понятно, почему портированое на Java приложение работало на 20% быстрее).

AVK>>>Почему не ввиде расширения Jini? Может потому что последний заметно проще чем WCF и в его архитектуру все потребные фичи просто не укладываются?

C>>Потому как в Java предпочитают разнообразие.
AVK>Перевожу на русский — любят изобретать велосипеды.
Именно. И в итоге выживает наиболее приспособленый, простой и удобный велосипед.

C>> Гораздо проще сделать Tango без дополнительного слоя поверх существующей инфраструктуры сервлетов

AVK>А Jini работает поверх сервлетов?
Опционально, при использовании HTTP в качестве транспорта.

C>>Аутентификация+авторизация — это занятия для протокола передачи.

AVK>С чего бы это?
А с чего бы это должно быть проблемой самого JINI?
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.