Здравствуйте, eao197, Вы писали:
E>Я эти разговоры слышу с 91-го года. Всегда находятся умники, которые утверждают, что писать программы на бумаге невозможно.
Не невозможно, а не разумно. Что называется почувствуйте разницу.
VD>>Ясно. Твой подход дико усторел. И ты снова пропагандируешь средневиковье. E>И что? Если не ошибаюсь, сейчас люди платят огромные деньги за продукты, выращенные экологически чистым способом, фактически, средневековыми методами. Но зато без всех вредных последствий развития прогресса в виде пестицидов, нитратов и прочей дряни.
В огороде бузина, а в Киеве дидька. К чему эта демагогия? Одно с другим ну никак не связано.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Mirrorer, Вы писали:
M>Мммм. Возможно я неправильно понимаю, но не связность ли пытаются уменьшить различные паттерны ? M>Я к тому что если большой проект, да еще и сильносвязанный получается может в архитектуре чего-то не того ?
Всё правильно. И никакая статическая типизация не поможет если перед тобой огромная "куча макарон".
Здравствуйте, WolfHound, Вы писали:
E>>Я эти разговоры слышу с 91-го года. Всегда находятся умники, которые утверждают, что писать программы на бумаге невозможно. WH>Не невозможно, а не разумно. Что называется почувствуйте разницу.
А в чем разница?
Если это возможно и получается нормальный результат, то в чем неразумность?
Когда ты рассказываешь, что неделями не компилируешь код, потому что еще не придумал решения -- это, надо полагать, разумно. Когда я время-от времени трачу пару часов/дней на то, чтобы макет программы набросать на бумаге -- это уже неразумно.
VD>>>Ясно. Твой подход дико усторел. И ты снова пропагандируешь средневиковье. E>>И что? Если не ошибаюсь, сейчас люди платят огромные деньги за продукты, выращенные экологически чистым способом, фактически, средневековыми методами. Но зато без всех вредных последствий развития прогресса в виде пестицидов, нитратов и прочей дряни. WH>В огороде бузина, а в Киеве дидька. К чему эта демагогия? Одно с другим ну никак не связано.
Связано. Прогресс, понимаете ли, быстрей, быстрей, больше, больше. Дадим результат сейчас, а потом придумаем, как лечиться от последствий.
Наколбасим больше кода, когда-нибудь, дай бог, отрефакторим, когда поймем, что именно нужно рефакторить. Это нормальный подход. Умные дядьки его рекламируют. Специальные инструменты для этого продают. Мейнстрим, как же. Хрен поспоришь.
А вот то, что можно сначала подумать, потом еще раз подумать, потом выбросить все, что успел на бумаге начирикать, потом еще раз начирикать по новой, а потом сделать и уже не переделывать -- это фантастика. Про это умные дядьки в книжках не пишут. И инструментов для этого не купить. Так что этого нет.
Ты прав, демагогия сплошная.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Что-то вспомнилось.
Ты как-то говорил что если бы у Лиспа была нормальная типизация и синтаксис, то он имел бы большие шансы стать твоей следующей игрушкой.
Допустим (чисто гипотетически) что у тебя есть требование не использовать .NET
Твое мнение о Qi в таком случае ?
P.S. А к кому бы обратиться чтобы в раскраску c# добавить where. И почему для немерле схемы нет ?
Здравствуйте, eao197, Вы писали:
E>Блин, как вы утомили, продавцы полосатых палок. E>Где я говорил, что любой for будет читабельнее любого foreach-а? К чему ты привел сравнения foreach(e in myArray) с C++ным for для итераторов? Где я говорил подобные вещи? Демагогить изволите, судари. Да еще и меня же в ней обвиняете.
Дык твоейже монетой...
E>Я говорил о том, что могут быть задачи, которые решаются как foreach-ем, так и for, но читабельность решения на for-ах будет лучше даже не смотря на объем. Задачи!
Для некоторых задач лучше for для других foreach.
E>Пример простой задачи: изъять из ассоциативного контейнера (вроде stl::multimap) все элементы, значение (не ключ) которого удовлетворяет некоторому предикату. И желательно, чтобы это была inplace операция.
А если нужно просто перебрать элементы этого самого stl::multimap то foreach будет лучше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
E>Я не понял, ты хочешь понять динамику или "чем динамика лучше Nemerle"? E>Не лучше динамика Nemerle в абстрактном смысле. Так же как в абстрактном смысле Nemerle не лучше динамики.
PI>>имею в виду: PI>>архитектура такая же, как была бы на статике PI>>типа тим лидеры запрещают делать хитровыверты... типа генерации кода на лету
ANS>Кодогенерации не было, но использовалась рефлексия для (авто)привязки гуя к модели.
гм, рефлексия в дотнете считается плохим стилем
за исключением когда она inherent (инстрементарий)
а также workaround-ов некоторых особо злобных (внешних) багов/design flaws
ANS>>>Использовал, и расширение классов своими методами, PI>>nemerle/c# 3: extension methods
ANS>afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость?
доступно без перекомпиляции (можно расширять хоть стандартную библиотеку), видимость та которую ты укажешь (естественно, всё видно в пределах твоего приложения/namespace-а) ANS>А использование из VB.Net?
CLR не ставит знаков различия между C#.NET и VB.NET
ANS>>> и перекрытие существующих методов моими версиями PI>>наследование
ANS>нет, полная замена предыдущего исходного кода новым. (Напр.)
с точки зрения дотнетной идеологии — такого рода фича была бы огромной дырой в секьюрити
более того, в дотнете нет особых средств противостояния reverse engineering, зато есть средство гарантирования целостности сборок (strong names)
ANS>>> (последнее делал для багфиксов GLORP, которые то появлялись в основном коде, но позже, а работать нужно было сразу). Как пример: я там уже давно не работаю, но когда народ там начал переезжать на XPSP2 оказалось, что в базовой GUI-библиотеке вылез какой-то баг с реакцией на dbl-click под SP2. Нашел в инете, какой именно метод в базовой библиотеке нужно пропатчить, и отправил в контору парсел (парсел — единица распространения ST-кода в VisualWorks, может включать как классы, так и отдельные методы в любой их комбинации) с этим методом. Всё заработало. Прикол в том, что сырцов той проги у меня нет. А возможность фиксить некоторые баги — есть PI>>workaround-ы
ANS>? не знаю что это.
это обход багов во внешних библиотеках, например
например, когда находят баг в дотнете, а микрософт не спешить поднять булки этот баг поправить, люди (или сам микрософт) публикует workaround — способ обойти этот баг
то есть не вижу отличий статики от динамики в этом плане — и там и там есть способы обойти баги
но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ANS>>> Возможность налету переделать метод и перезапустить выполнение проги с некоторой точки — это было очень приятно. PI>>apply code changes, хотя аналогия не полная
ANS>далеко не полная.
естественно, hot code swap — это фича чисто динамическая
но:
1. нужна ли она так сильно?
особенно в свете:
2. мнения, что — это design flaw, оставляющий огромную дыру в секьюрити
ANS>>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>>object test bench в Visual Studio
ANS>И в нём доступна полностью проинициализированная твоя прога?
в нём можно протестировать любой объект
естественно, ты должен его перед этим проинициализировать (подставить данные на вход конструктору)
PI>>не флейма ради, просто пытаюсь понять, какие динамические фичи нельзя реализовать статикой
ANS>Можно многое. Наверное окромя hoto code swap.
то есть, в статике можно многое, что можно в динамике?
ANS> Вопрос только в цене использования неких фич (типа рефлексии),
ANS> и соответсвия языка/инструментария/комьюнити твоему мышлению.
при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает
PI>>ещё можешь предложить чисто динамические механизмы для интереса?
ANS>Результаты подведены давно
будем посмотреть
ANS>>>Вот чего я не делелал, так это не вставлял в код явную проверку типов, не писал тесты для проверки типизации и прочей чепухи. PI>>но ты ведь с лёгкостью можешь сказать, в каком месте какой тип будет?
ANS>Для неизвестной проги — врядли
вижу преимущество немерле в этом месте ANS> С другой стороны, когда выяснилось что драйвера на pure-ST для PostgreSQL не понимают уникода, то на нахождение тех трёх мест где пришлось добавить перекодирование у меня ушла пара часов. И потом несколько суток, на объяснение проблемы и сути фикса автору драйвера И это при том, что я ни драйвера того раньше в глаза не видел, ни архетиктуру ДБ-слоя не знал.
кул, но это больше к твоей крутизне относится, чем к динамике, не так ли?
PI>>>>а Эрланг — чистая динамика?
К>>>Да, конечно.
PI>>какое твое мнение о реализации параллельной библиотеки в Скале? PI>>они говорят, подобна Эрлангу, выполняет те же функции...
К>Вообще одним из тех, кто тебе отвечал и одним из первых, упомянувших про эту библиотеку был я К>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга.
естественно, на дотнете должно заработать гораздо быстрее К>Только вот OTP там нету конечно — большой минус.
но ведь есть JRE К>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу).
гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП...
о чём ты? К>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений.
главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена
какая разница, ставишь ты OTP или JRE?
ведь у эрланга ведь тоже свой рантайм, правильно?
VD>>Я не гворил что на динамике нельзя создавать большие проекты. Вполне можно. Я говорил, что на динамике сложно создавать большие сильно связнные проекты.
M>Мммм. Возможно я неправильно понимаю, но не связность ли пытаются уменьшить различные паттерны ?
паттерны организуют связи, иногда удаляют лишние, но они не могут уменьшить число "внутренне присущих" связей
M>Я к тому что если большой проект, да еще и сильносвязанный получается может в архитектуре чего-то не того ?
возьмём, к примеру, платформу .NET как пример сильносвязанного проекта
он огромен, а внутренние связи превращают его в клубок, где всё используется всем
для C# нужен сборщик мусора, который нужен для обеспечения всего в дотнете
ADO.NET написан на C#, но и предъявляет требования к сишарпу (nullable-типы в C# были введены в основном, из-за требований ADO.NET-а)
ASP.NET — сложнейший фреймворк, интегрирующийся с IIS (ещё одним огромным проектом), немыслим без ADO.NET
... и другие штучки-дрючки: выкинь одно звено, и рассыпется вся цепь (я молчу про саму ось)
M>Хотелось бы или пример такого проекта или разъяснение, вполне может быть что я не совсем уловил мысль.
Здравствуйте, PhantomIvan, Вы писали:
ANS>>afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость? PI>доступно без перекомпиляции (можно расширять хоть стандартную библиотеку), видимость та которую ты укажешь (естественно, всё видно в пределах твоего приложения/namespace-а)
я имел ввиду видимость "расширяемого" класса из самого extension метода.
ANS>>А использование из VB.Net? PI>CLR не ставит знаков различия между C#.NET и VB.NET
CLR не ставит, но CLS ставит.
ANS>>>> и перекрытие существующих методов моими версиями PI>>>наследование
ANS>>нет, полная замена предыдущего исходного кода новым. (Напр.)
PI>с точки зрения дотнетной идеологии — такого рода фича была бы огромной дырой в секьюрити
о какой секьюрити идёт речь?
PI>>>workaround-ы
ANS>>? не знаю что это.
PI>это обход багов во внешних библиотеках, например PI>например, когда находят баг в дотнете, а микрософт не спешить поднять булки этот баг поправить, люди (или сам микрософт) публикует workaround — способ обойти этот баг
способ или патч существующей либы который можно положить к своему приложению? (btw, java таки так умеет, жаль с у них единица переопределения — целый класс.)
PI>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
не давай "плохим дядкам" возможности инициировать замену.
PI>естественно, hot code swap — это фича чисто динамическая PI>но: PI>1. нужна ли она так сильно?
сильно нет, но штука приятная, а курочка по зёрнышку клюёт.
PI>особенно в свете: PI>2. мнения, что — это design flaw, оставляющий огромную дыру в секьюрити
о какой секьюрити идёт речь?
ANS>>>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>>>object test bench в Visual Studio
ANS>>И в нём доступна полностью проинициализированная твоя прога? PI>в нём можно протестировать любой объект PI>естественно, ты должен его перед этим проинициализировать (подставить данные на вход конструктору)
В ST среда разработки и разрабатываемая программа это единое целое. Это имеет как плюсы так и минусы. Среди плюсов: возможность постоянного "общения" с уже запущеной программой.
ANS>> Вопрос только в цене использования неких фич (типа рефлексии), ANS>> и соответсвия языка/инструментария/комьюнити твоему мышлению. PI>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает
Этого еще никто не знает
PI>кул, но это больше к твоей крутизне относится, чем к динамике, не так ли?
Это я к тому, что отсутсвие аннотации типов не мешает.
Здравствуйте, PhantomIvan, Вы писали:
К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>естественно, на дотнете должно заработать гораздо быстрее
Здравствуйте, eao197, Вы писали:
E>Если это возможно и получается нормальный результат, то в чем неразумность?
В затрачиваемых усилиях. E>Когда ты рассказываешь, что неделями не компилируешь код, потому что еще не придумал решения -- это, надо полагать, разумно. Когда я время-от времени трачу пару часов/дней на то, чтобы макет программы набросать на бумаге -- это уже неразумно.
Это опять демагогия. Не учтена сложность задачи.
Уверен что с моей задачкой ты бы провозился с бумажками уж никак не меньше двух недель. А потом еще столько же писал.
E>А вот то, что можно сначала подумать, потом еще раз подумать, потом выбросить все, что успел на бумаге начирикать, потом еще раз начирикать по новой, а потом сделать и уже не переделывать -- это фантастика. Про это умные дядьки в книжках не пишут. И инструментов для этого не купить. Так что этого нет.
Это именно фантастика и такого не бывает.
Вернее бывает в проектах где требования определены сразу и не меняются во времени но это исчезающи маленький процент проектов.
Да что далеко ходить... вот я спроектировал, написал и отладил кластер... и тут менеджерам пришла в голову супермегафича без которой ну никак нельзя... На что я сделал вот такие глаза ибо для того чтобы ее реализовать нужно полностью перепроектировать и переписать одну из трех частей системы. Причем по закону Мерфи самую сложную (хоть и не самую объемную) часть... К счаюстью две другие трогать не придеться ибо я всетки не вчера родился и умею резать систему на слабо связанные куски.
Хорошо что фича не срочная и у меня есть время хорошо ее помедитировать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
M>>>Если бы они все в одну .chm-ку запихнули было бы приятнее. И поиск можно делать и вообще. PI>>см. C:\Program Files\Nemerle\docs\
M>Ну я там и смотрел. Но иметь это в одном файле с индексацией и возможностью поиска удобнее чем россыпь доков.
не, в одном файле это тоже плохо
немерле заимеет, думаю, документацию, встраиваемую в мсдн — для этого ему нужно:
1. задокументировать макро-подсистему (только сначала её доделать надо, по большому счёту)
2. снабдить внешний интерфейс компилятора комментами, которые формируют костяк референса по компайлеру
3. обрастить этот костяк "мясом"
4. упорядочить это всё и систематизировать
5. собственно, интегрироваться в локальный мсдн при инсталле интеграции немерле со студией
Здравствуйте, PhantomIvan, Вы писали:
К>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>естественно, на дотнете должно заработать гораздо быстрее
Не знаю, думаю очень большой разницы не будет.
К>>Только вот OTP там нету конечно — большой минус. PI>но ведь есть JRE
И? Там есть супервайзоры, поддержка распределённых приложений, управление динамическим обновлением кода?
К>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу). PI>гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП... PI>о чём ты?
О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть.
К>>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений. PI>главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена PI>какая разница, ставишь ты OTP или JRE? PI>ведь у эрланга ведь тоже свой рантайм, правильно?
Да, только вот рантайм заточенный на такие задачи, в отличие от JRE, соответсвенно и сборщик мусора и прочие механизмы там совершенно другие.
Про одну JVM я имел в виду, что посылка сообщений там, насколько я понимаю, не работает между 2 JVM, тогда как для эрланга это по умолчанию. Из любого узла ты можешь послать сообщение процессу на другом узле, если знаешь его имя (и процесса и узла) и канал связи работает.
В Скале же для этого надо изобретать довольно много велосипедов ещё.
Скажем те же распределённые приложения:
у нас есть избыточность, N серверов, на которых выполняются какие-то задачи, при выходе из строя одного, приложение будет запущено на другом сервере.
Эта задача решается стандартными механизмами эрланга/OTP (буквально нужно почти одно конфигурирование, не считая написания кода самого приложения), интересно, как подобное может быть решено в Скале
Здравствуйте, VladD2, Вы писали:
L>>>>А TemplateHaskell — это не сюда?
VD>>>TemplateHaskell именно сюда.
L>>Тогда почему ты выкинул этот язык из списка?
VD>Потому что он вообще никтому не интересен. Его перспективность меньше нуля. Я не включил в список еще сотню экзотических проектов. Плюс он пролетат по всем остальным пунктам.
VD>>>Меж тем реальный Хаскель его возможностями не обладает.
L>>Этой фразу не понял. реальный Хаскель не обладает возможностями TH? Что такое "реальный Хаскель"?
VD>TemplateHaskell — это эксперементальная модификация Haskell-я.
Поправочка. TemplateHaskell — не отдельная модификация Haskell, а расширение GHC, реализованное в виде модуля Language.Haskell.TH. Так что можно считать, что в Хаскеле есть метапрограммирование. Кстати, этот модуль применяется в GHC в подсистемах deSugar и typecheck — не очень-то похоже, что он экспериментальный
ANS>>>afaik, это не доступно без перекомпиляции уже скомпиленного кода плюс есть ограничение на видимость? PI>>доступно без перекомпиляции (можно расширять хоть стандартную библиотеку), видимость та которую ты укажешь (естественно, всё видно в пределах твоего приложения/namespace-а)
ANS>я имел ввиду видимость "расширяемого" класса из самого extension метода.
это... ты о чём?
ANS>>>А использование из VB.Net? PI>>CLR не ставит знаков различия между C#.NET и VB.NET
ANS>CLR не ставит, но CLS ставит.
ну и что? был тут уже смешной вопрос "а можно ли вызвать макросы Немерле из Сишарпа?"
и ты сам понимать должен, что границы сборки пересекает
1. только совместимая с рантаймом дотнета информация
2. если оба ко-агента написаны на Немерле, то и некоторая специфичная для немерле информация
я не силён в вопросе, что из VB.NET вызывать можно, т.к. закончил программировать на бейсике (синклеровском) с приходом в нашу жизнь IBM PC-совместимых компьютеров.
ANS>>>нет, полная замена предыдущего исходного кода новым. (Напр.)
PI>>с точки зрения дотнетной идеологии — такого рода фича была бы огромной дырой в секьюрити
ANS>о какой секьюрити идёт речь?
идёт речь о такой неотъемлемой черте дотнета, как безопасность-секьюрити (см. мсдн)
PI>>>>workaround-ы
ANS>>>? не знаю что это.
PI>>это обход багов во внешних библиотеках, например PI>>например, когда находят баг в дотнете, а микрософт не спешить поднять булки этот баг поправить, люди (или сам микрософт) публикует workaround — способ обойти этот баг
ANS>способ или патч существующей либы который можно положить к своему приложению?
способ, максимум — рефлексия (иногда ANS> (btw, java таки так умеет, жаль с у них единица переопределения — целый класс.)
PI>>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ANS>не давай "плохим дядкам" возможности инициировать замену.
"плохой дядька" живёт в любой программе, которая запускается на компе
PI>>естественно, hot code swap — это фича чисто динамическая PI>>но: PI>>1. нужна ли она так сильно?
ANS>сильно нет, но штука приятная, а курочка по зёрнышку клюёт.
PI>>особенно в свете: PI>>2. мнения, что — это design flaw, оставляющий огромную дыру в секьюрити
ANS>о какой секьюрити идёт речь?
здесь здесь
ANS>>>>> Иногда выполнял код прямо в процессе написания кода. То есть пишеш-пишеш — бац, непонятно как точно работает метод. Тут же, в окне написания кода выполняеш то, что интересно и смотриш. PI>>>>object test bench в Visual Studio
ANS>>>И в нём доступна полностью проинициализированная твоя прога? PI>>в нём можно протестировать любой объект PI>>естественно, ты должен его перед этим проинициализировать (подставить данные на вход конструктору)
ANS>В ST среда разработки и разрабатываемая программа это единое целое. Это имеет как плюсы так и минусы. Среди плюсов: возможность постоянного "общения" с уже запущеной программой.
дебаг
ANS>>> Вопрос только в цене использования неких фич (типа рефлексии), ANS>>> и соответсвия языка/инструментария/комьюнити твоему мышлению. PI>>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает
ANS>Этого еще никто не знает
я знаю
PI>>кул, но это больше к твоей крутизне относится, чем к динамике, не так ли?
ANS>Это я к тому, что отсутсвие аннотации типов не мешает.
К>>>Если по сути — интересно, вроде как всего в 2 раза медленней Эрланга. PI>>естественно, на дотнете должно заработать гораздо быстрее К>Не знаю, думаю очень большой разницы не будет.
там обычные потоки из джавы?
зуб даю, быстрее будет
К>>>Только вот OTP там нету конечно — большой минус. PI>>но ведь есть JRE К>И? Там есть супервайзоры,
что это? К> поддержка распределённых приложений,
разве на джава нет аналога .net remoting-a, web сервисов? К> управление динамическим обновлением кода?
рефлексия есть? динамическое обновление кода — вызывает сомнения в необходимости...
К>>>Плюс Скала — имеративный язык, со всеми вытекающими (хотя чётко аргументировать тут сейчас не могу). PI>>гм, функции в Скале — первоклассные значения, поддерживаются многие фичи ФП... PI>>о чём ты? К>О том, что в эрланге нет Mutable переменных. Сходу последствий нарушения этого я не вижу, но вполне вероятно что таковые есть.
в Немерле есть мутабельные переменные, хотя можно обойтись совсем без них
но зачем? проблем это не вызывает
для немерле "обычный" стиль — смесь императив + функционал, там где лучше применим императив — применяется императив, там где функциональный стиль дает больший прирост производительности труда — юзаются они
это лучше чем "чистый" язык без состояния (по скорости получения результата)
К>>>Плюс там это всё работает только в рамках одной JVM, когда распределённые приложения для эрланга — одно из первых применений. PI>>главное внутренне присущее требование к распределённости — мультиплатформенность — у джавы выполнена PI>>какая разница, ставишь ты OTP или JRE? PI>>ведь у эрланга ведь тоже свой рантайм, правильно? К>Да, только вот рантайм заточенный на такие задачи, в отличие от JRE, соответсвенно и сборщик мусора и прочие механизмы там совершенно другие. К>Про одну JVM я имел в виду, что посылка сообщений там, насколько я понимаю, не работает между 2 JVM, тогда как для эрланга это по умолчанию. Из любого узла ты можешь послать сообщение процессу на другом узле, если знаешь его имя (и процесса и узла) и канал связи работает. К>В Скале же для этого надо изобретать довольно много велосипедов ещё.
Скала неотделима от джавы
не знаю, как там они называются, но в жаве должны быть аналоги дотнетовских:
— messaging
— .net remoting
второе — это не просто обмен сообщений, это гораздо круче
К>Скажем те же распределённые приложения: К>у нас есть избыточность, N серверов, на которых выполняются какие-то задачи, при выходе из строя одного, приложение будет запущено на другом сервере. К>Эта задача решается стандартными механизмами эрланга/OTP (буквально нужно почти одно конфигурирование, не считая написания кода самого приложения), интересно, как подобное может быть решено в Скале
о таком (простом) механизме не слышал
однако, если на сервере крутится какое-то приложение, оно как правило, привязано к базе данных
и если сервер падает, то поднятие того же приложения на другом сервере бессмысленно (если на нём не реплицирована бд)
Здравствуйте, PhantomIvan, Вы писали:
ANS>>я имел ввиду видимость "расширяемого" класса из самого extension метода. PI> это... ты о чём?
доступ к непубличным полям/методам из метода-расширителя.
ANS>>CLR не ставит, но CLS ставит.
PI>ну и что? был тут уже смешной вопрос "а можно ли вызвать макросы Немерле из Сишарпа?"
очень правильный вопрос. А то получается, что программы для конечного пользователя на нём писать можно, а библиотеки нельзя.
PI>>>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ну-ну. Сценарий несекурности предложи.
ANS>>не давай "плохим дядкам" возможности инициировать замену.
PI>"плохой дядька" живёт в любой программе, которая запускается на компе
Тяжело вам.
PI>дебаг
вот им и приходится пользоваться. "А мне летать охота..."
PI>>>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает ANS>>Этого еще никто не знает PI>я знаю
ANS>>>я имел ввиду видимость "расширяемого" класса из самого extension метода. PI>> это... ты о чём?
ANS>доступ к непубличным полям/методам из метода-расширителя.
только с помощью рефлексии, т.к. это нарушение объектной модели, и опять же, секьюрити
ANS>>>CLR не ставит, но CLS ставит.
PI>>ну и что? был тут уже смешной вопрос "а можно ли вызвать макросы Немерле из Сишарпа?"
ANS>очень правильный вопрос. А то получается, что программы для конечного пользователя на нём писать можно, а библиотеки нельзя.
пожалуйста — пиши макросные библиотеки на Немерле
воспользоваться осмысленно ими только из немерле-сборок
для Сишарпа подобное средство будет выглядеть громоздко, наподобие R#, практически извращением будет выглядеть
за подробностями — к Владу
PI>>>>но опять вспомним о security — такого рода "горячая замена" легко превращается в "горячую подмену", в руках злоумышленника
ANS>ну-ну. Сценарий несекурности предложи.
элементарно
есть приложение с аунтентификацией
заменяем аутентифицирующую функцию на функцию, возвращающую true, портим/скачиваем базу данных
вопросы?
ANS>>>не давай "плохим дядкам" возможности инициировать замену.
PI>>"плохой дядька" живёт в любой программе, которая запускается на компе
ANS> Тяжело вам.
все вокруг — враги, это базовое предположение
другого способа выжить пока не придумали
базовое предположение перегружается в отношении некоторых субъектов
(этим метафорам есть прямые аналогии в дотнет секьюрити)
PI>>дебаг
ANS>вот им и приходится пользоваться. "А мне летать охота..."
галюциногенов наглотаться?
PI>>>>при условии наличия макросов в Немерле, редкая необходимость-by-design в рефлексии, совсем отпадает ANS>>>Этого еще никто не знает PI>>я знаю
ANS>Тогда зачем вопросы задаёш? Сиди и колбась код.
Здравствуйте, PhantomIvan, Вы писали:
ANS>>ну-ну. Сценарий несекурности предложи.
PI>элементарно PI>есть приложение с аунтентификацией PI>заменяем аутентифицирующую функцию на функцию, возвращающую true, портим/скачиваем базу данных PI>вопросы?
Напомню, что речь идёт о дядьке, сидящем в программе. Зачем кто-то в программе захочет портить свою же аутентификацию? Что касается пользователей, то см. следующую строчку.
ANS>>>>не давай "плохим дядкам" возможности инициировать замену.