Еще немножко флуда на тему "каким должен быть следующий самый крутой в мире язык программирования". Статья некоего Ola Bini (такой довольно известный рубист) под названием Dark Ages of Programming Languages. Он постулирует, что
а) идеальных языков программирования (пока не существует)
б) ближе всего к идеалу Ruby, Lisp, OCaml, Erlang
в) но у каждого из них свои недостатки.
Но интересно не это (то есть это не флейм на тему, "какой язык лучший") — интересно то, что дальше он пишет "каким может быть путь к идеалу".
Дальше — мой сокращенный перевод этого куска.
Все существующие сегодня варианты недостаточно хороши. Я вижу два пути вперед. Два пути, которые могут привести к "языку на 100 лет".
Первый путь — один новый язык. Этот язык будет основан на всех лучших фичах сегодняшних языков, плюс результаты исследований. У меня есть небольшой список того, что должно быть в этом языке для успеха:
* Он должен быть мультипарадигменным. Я не говорю, что нельзя выбрать одну парадигму как базовую, но должно быть возможно программировать функционально, объектно, аспектно, императивно. Должно быть возможно построить декларативную библиотеку, чтобы заниматься логическим программированием в рамках языка.
* В нем должен быть статический вывод типов, где возможно. Он должен также позволять опциональные type hints. Это очень важно для создания хороших реализаций, а так же в некоторых случаях улучшает читабельность.
* Нужны все феньки функциональных языков: замыкания, first-order functions, лямбды. Иначе язык будет тупиковой ветвью эволюции.
* Нужен сборщик мусора. Возможно, несколько конкурирующих реализаций GC, использующих эволюционирующие алгоритмы, чтобы понять какой из них лучше годиться для длительных процессов.
* JIT VM. Кажется доказанным, что виртуальные машины — большое преимущество. Кроме того, они могут обеспечить великолепную скорость.
* Еще одна JIT VM.
* Реализация без виртуальной машины. Несколько конкурирующих реализаций для разных целей важны для соревновательности и экспериментов с новыми фичами реализации.
* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
* Язык и хотя бы одна реализация промышленного качества обязаны быть с открытыми исходниками. Замкнутость языка должна быть невозможна.
* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
* Централизованный репозиторий кода/библиотек. Это одна из крупнейших ошибок Java. Установка новой Java-библиотеки болезненно. Нужно что-то вроде CPAN, ASDF, RubyGems.
* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
* Конкуррентность должна быть встроена в сам язык (как Erlang или Gambit Scheme).
* Мета-программирование должно быть естественным (примерно как в Ruby).
* Должно быть естественным решение проблем снизу вверх, реализуя DSL'и внутри или вне языка.
* В языке должны быть мощные макро-возможности, которые несложно использовать.
* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.
Вот что я считаю необходимым (но, возможно, не достаточным) для действительно полезного, хорошего, долгоиграющего языка программирования. Когда я перечитываю список, мне не кажется, что такой язык скоро появится. Честно говоря, это сдается маловероятным.
Может быть, другой путь — правильный? Другой путь, который я вижу — языки становится все легче создавать, и каждый силен в своей области. [...] Чтобы эта стратегия работала, в каждом языке должна быть в первую очередь возможность интеграции с остальными. Возможно, это будет действительно хороший "язык-клей" [glue-language] (не такой, как Perl или Ruby, но язык, который служит только для склейки других языков), а все остальные языки реализуют хорошую поддержку этого языка. К примеру, можно будет сделать базовый конкурентный фреймворк на Erlang, который использует G (язык-клей) чтобы реализовать некоторую enterprise функциональность в Java sandboxes, а в некоторых местах будут использоваться (через G) DSL, реализованные на Ruby, где через G будут использоваться движки знаний Prolog.
Здравствуйте, Зверёк Харьковский
ЗХ>Но интересно не это (то есть это не флейм на тему, "какой язык лучший") — интересно то, что дальше он пишет "каким может быть путь к идеалу".
Наивно, имхо, в вотчине VladD2 упоминать, что идеальный язык еще не изобретен.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
ЗХ>>Но интересно не это (то есть это не флейм на тему, "какой язык лучший") — интересно то, что дальше он пишет "каким может быть путь к идеалу". E>Наивно, имхо, в вотчине VladD2 упоминать, что идеальный язык еще не изобретен.
Ну дык:
Первый путь — один новый язык. Этот язык будет основан на всех лучших фичах сегодняшних языков, плюс результаты исследований. У меня есть небольшой список того, что должно быть в этом языке для успеха:
* Он должен быть мультипарадигменным. Я не говорю, что нельзя выбрать одну парадигму как базовую, но должно быть возможно программировать функционально, объектно, аспектно, императивно. Должно быть возможно построить декларативную библиотеку, чтобы заниматься логическим программированием в рамках языка.
Все есть, италик сделать возможность есть.
* В нем должен быть статический вывод типов, где возможно. Он должен также позволять опциональные type hints. Это очень важно для создания хороших реализаций, а так же в некоторых случаях улучшает читабельность.
Есть.
* Нужны все феньки функциональных языков: замыкания, first-order functions, лямбды. Иначе язык будет тупиковой ветвью эволюции.
Есть.
* Нужен сборщик мусора. Возможно, несколько конкурирующих реализаций GC, использующих эволюционирующие алгоритмы, чтобы понять какой из них лучше годиться для длительных процессов.
Есть.
* JIT VM. Кажется доказанным, что виртуальные машины — большое преимущество. Кроме того, они могут обеспечить великолепную скорость.
Есть.
* Еще одна JIT VM.
Не понял, что значит еще одна.
* Реализация без виртуальной машины. Несколько конкурирующих реализаций для разных целей важны для соревновательности и экспериментов с новыми фичами реализации.
Чего нет, того нет.
* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
В каком-то виде есть.
* Язык и хотя бы одна реализация промышленного качества обязаны быть с открытыми исходниками. Замкнутость языка должна быть невозможна.
Есть.
* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
Есть.
* Централизованный репозиторий кода/библиотек. Это одна из крупнейших ошибок Java. Установка новой Java-библиотеки болезненно. Нужно что-то вроде CPAN, ASDF, RubyGems.
Пока нет.
* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
Пока нет.
* Конкуррентность должна быть встроена в сам язык (как Erlang или Gambit Scheme).
Какие-то зачатки уже есть.
* Мета-программирование должно быть естественным (примерно как в Ruby).
Есть.
* Должно быть естественным решение проблем снизу вверх, реализуя DSL'и внутри или вне языка.
Есть.
* В языке должны быть мощные макро-возможности, которые несложно использовать.
Есть.
* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.
Вообще-то, в этом контексте "7 из 10" не канает — ибо это список необходимых свойств языка. Языков, которые наберут много баллов из этого списка — далеко не один; языков, которые наберут все — нету. О чем и речь.
ie>* Еще одна JIT VM. ie>Не понял, что значит еще одна.
Имеется в виду то же, что было сказано про GC — их должно быть несколько, для конкуренции и постоянного улучшения. Например, рубисты, как известно, страдают от невеликой скорости интерпретатора — а авторы языка в неофициальных беседах зачастую утверждают, что "и так сойдет" (хотя и работают над эффективной виртуальной машиной). А вот если бы была альтернативная реализация, которая бы работала в 20 раз быстрее (но при этом, к примеру, реализовывала бы только 80% языка) — то основная реализация быстро бы подтянулась по скорости (а альтернативная — стала бы подтягиваться по фичам). Это Ола Бини так думает. Я, например, считаю, что если бы был человек, достаточно крутой, чтобы сделать быструю реализацию, и достаточно в этом заинтересованный — он бы присоединился к развитию основной ветви Собственно, это УЖЕ произошло — Сасада Коичи начала разработку Yet Another Ruby VM (YARV), сейчас YARV является официальной виртуальной машиной для следующей версии Руби (Руби 2).
ie>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности. ie>Пока нет.
Здесь, кстати, может всплыть проблема "курицы и яйца" — пока нет хорошего набора библиотек для GUI, сети, БД, и т.п. — не будет большого сообщества; пока не будет сообщества — количество библиотек будет рости медленно.
ie>* Мета-программирование должно быть естественным (примерно как в Ruby). ie>Есть.
ie>* В языке должны быть мощные макро-возможности, которые несложно использовать. ie>Есть.
Кстати, в Nemerle есть отдельно мета- и отдельно макро- программирование? Или вы в обоих случаях подразумевали одну и ту же фичу?
Здравствуйте, ie, Вы писали:
ie>Ну дык: Дык эта:
ie>* В нем должен быть статический вывод типов, где возможно. Он должен также позволять опциональные type hints. Это очень важно для создания хороших реализаций, а так же в некоторых случаях улучшает читабельность.
ie>Есть. Есть.
ie>* Нужны все феньки функциональных языков: замыкания, first-order functions, лямбды. Иначе язык будет тупиковой ветвью эволюции.
ie>Есть. Есть.
ie>* Нужен сборщик мусора. Возможно, несколько конкурирующих реализаций GC, использующих эволюционирующие алгоритмы, чтобы понять какой из них лучше годиться для длительных процессов.
ie>Есть. Есть.
ie>* JIT VM. Кажется доказанным, что виртуальные машины — большое преимущество. Кроме того, они могут обеспечить великолепную скорость.
ie>Есть. Есть.
ie>* Еще одна JIT VM. Есть.
ie>Не понял, что значит еще одна.
(Чтобы на одной не висеть, как на крючке).
ie>* Реализация без виртуальной машины. Несколько конкурирующих реализаций для разных целей важны для соревновательности и экспериментов с новыми фичами реализации.
ie>Чего нет, того нет.
В принципе, есть (GCJ, хотя пока не работает на нем, но пытаются запустить).
ie>* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
ie>В каком-то виде есть. Есть.
ie>* Язык и хотя бы одна реализация промышленного качества обязаны быть с открытыми исходниками. Замкнутость языка должна быть невозможна.
ie>Есть. Есть.
ie>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
ie>Есть.
Такая же
ie>* Централизованный репозиторий кода/библиотек. Это одна из крупнейших ошибок Java. Установка новой Java-библиотеки болезненно. Нужно что-то вроде CPAN, ASDF, RubyGems.
ie>Пока нет. Есть.
ie>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
ie>Пока нет.
Намечается
ie>* Конкуррентность должна быть встроена в сам язык (как Erlang или Gambit Scheme).
ie>Какие-то зачатки уже есть. Аналогично
(хотя производительность, конечно, швах).
ie>* Мета-программирование должно быть естественным (примерно как в Ruby).
ie>Есть.
Пока нет, но см. вопрос нашего общего знакомого и ответ на него
ie>* Должно быть естественным решение проблем снизу вверх, реализуя DSL'и внутри или вне языка.
ie>Есть.
См. выше.
ie>* В языке должны быть мощные макро-возможности, которые несложно использовать.
ie>Есть.
См. выше.
ie>* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.
ie>Есть.
См. выше.
ie>Так что, делайте выводы
Мир не может быть однополярным.
И предела совершенству нет. Поэтому идеального языка не может быть в принципе. Даже если кому-то кажется, что таковой есть, и он им даже пользуется. Скорее это просто от недостатка информации.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
ЗХ>Здесь, кстати, может всплыть проблема "курицы и яйца" — пока нет хорошего набора библиотек для GUI, сети, БД, и т.п. — не будет большого сообщества; пока не будет сообщества — количество библиотек будет рости медленно.
Проблема Эрланга, кстати. Правда, Yariv, судя по всему, решил вытянуть Эрланг в одиночку
Здравствуйте, eao197, Вы писали:
ie>>* В нем должен быть статический вывод типов, где возможно. Он должен также позволять опциональные type hints. Это очень важно для создания хороших реализаций, а так же в некоторых случаях улучшает читабельность.
E>Есть.
Здравствуйте, Дарней, Вы писали:
ie>>>* В нем должен быть статический вывод типов, где возможно. Он должен также позволять опциональные type hints. Это очень важно для создания хороших реализаций, а так же в некоторых случаях улучшает читабельность.
E>>Есть.
Д>Статический вывод типов? В каком виде?
Здравствуйте, Зверёк Харьковский, Вы писали:
ie>>* Еще одна JIT VM. ie>>Не понял, что значит еще одна.
ЗХ>Имеется в виду то же, что было сказано про GC — их должно быть несколько ... Собственно, это УЖЕ произошло — Сасада Коичи начала разработку Yet Another Ruby VM (YARV), сейчас YARV является официальной виртуальной машиной для следующей версии Руби (Руби 2).
Mono прокатит?
ie>>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности. ie>>Пока нет.
ЗХ>Здесь, кстати, может всплыть проблема "курицы и яйца" — пока нет хорошего набора библиотек для GUI, сети, БД, и т.п. — не будет большого сообщества; пока не будет сообщества — количество библиотек будет рости медленно.
В принципе есть FCL, но как-то не тянет на роль "хорошего набора библиотек", то и дело тут и там всплывают все новые и новые библиотеки.
ie>>* Мета-программирование должно быть естественным (примерно как в Ruby). ie>>Есть.
ie>>* В языке должны быть мощные макро-возможности, которые несложно использовать. ie>>Есть.
ЗХ>Кстати, в Nemerle есть отдельно мета- и отдельно макро- программирование? Или вы в обоих случаях подразумевали одну и ту же фичу?
На самом деле, разработчики Немерла все время говорят о метапрограммировании. На самом же деле и мета- и макро- там в куче. Единственное, чего там не хватает, так это выполнение выражений в рантайме, как это сделано в MetaML.
Т.е. ничего такого нету:
Здравствуйте, eao197, Вы писали:
ie>>Ну дык: E>Дык эта:
Ну так Scala отличный язык! Коль макросы добавят, то цены ему не будет, зато будет больше шансов, что одним отличным языком в мэйнстриме станет больше.
ie>>Так что, делайте выводы
E>Мир не может быть однополярным. E>И предела совершенству нет. Поэтому идеального языка не может быть в принципе. Даже если кому-то кажется, что таковой есть, и он им даже пользуется. Скорее это просто от недостатка информации.
Вот с этим полностью согласен, как в прочем и с Ola Bini:
а) идеальных языков программирования (пока не существует)
б) ближе всего к идеалу Ruby, Lisp, OCaml, Erlang
в) но у каждого из них свои недостатки.
Только вот Scala и Nemerle бы в его списочек добавил
Здравствуйте, ie, Вы писали:
ie>На самом деле, разработчики Немерла все время говорят о метапрограммировании. На самом же деле и мета- и макро- там в куче.
Макро-программирование — это один из вариантов реализации метапрограммирования, так что всё верно. А чего тебе не хватает в макросах?
Я бы добавил в список еще один пункт.
* Микроядерная реализация языка.
То бишь — минимально возможный набор команд реализуется в компиляторе, всё остальное — расширение средствами самого языка.
Дополню про Nemerle:
ie>* Еще одна JIT VM.
ie>Не понял, что значит еще одна.
Ну альтернативная реализация. В данном случае сойдет Mono.
ie>* Реализация без виртуальной машины. Несколько конкурирующих реализаций для разных целей важны для соревновательности и экспериментов с новыми фичами реализации.
ie>Чего нет, того нет.
Да можно я думаю сделать. Есть же эксперименты с прикручиванием back-end от GCC к Mono,
ну и MS делает там всякие Bartok и Phoenix (последний кстати можно скачать для некомм использования).
Ну и в конце концов сам компилятор Nemerle распространяется по BSD-лицензии, так что если кому надо, то надо только
вместо System.Reflection.Emit альтернативный backend прикрутить.
ie>* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
ie>В каком-то виде есть.
Ну да через стандартные средства .NET (PInvoke и т.д.).
ie>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
ie>Есть.
Ну пока нет. MS почему-то предпочитает F# вместо этого использовать (и то же метапрограммирование к нему прикручивать).
Хотя по мне так Nemerle намного лучше. Наверное все от незнания о Nemerle.
ie>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
ie>Пока нет.
А .NET овские библиотеки как же?
ie>Так что, делайте выводы
Ага
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Первый путь — один новый язык. Этот язык будет основан на всех лучших фичах сегодняшних языков, плюс результаты исследований. У меня есть небольшой список того, что должно быть в этом языке для успеха: ЗХ>* Он должен быть мультипарадигменным. Я не говорю, что нельзя выбрать одну парадигму как базовую, но должно быть возможно программировать функционально, объектно, аспектно, императивно. Должно быть возможно построить декларативную библиотеку, чтобы заниматься логическим программированием в рамках языка.
+1
ЗХ>* В нем должен быть статический вывод типов, где возможно. Он должен также позволять опциональные type hints. Это очень важно для создания хороших реализаций, а так же в некоторых случаях улучшает читабельность.
+1
ЗХ>* Нужны все феньки функциональных языков: замыкания, first-order functions, лямбды. Иначе язык будет тупиковой ветвью эволюции.
+1
ЗХ>* Нужен сборщик мусора. Возможно, несколько конкурирующих реализаций GC, использующих эволюционирующие алгоритмы, чтобы понять какой из них лучше годиться для длительных процессов.
+1
ЗХ>* JIT VM. Кажется доказанным, что виртуальные машины — большое преимущество. Кроме того, они могут обеспечить великолепную скорость.
Виртуальные машины дают преимущество в плане динамической генерации, загрузки (и выгрузки) кода и обеспечивают интроспективные возможности.
А вот откуда взялась "великолепная скорость" я не понял. По-любому не быстрее полностью оптимизирующего компилятора.
Видимо "великолепная скорость" только по сравнению с Ruby . Ну с такой точки зрения любой язык кроме PHP обеспечит "великолепную скорость".
ЗХ>* Еще одна JIT VM. ЗХ>* Реализация без виртуальной машины. Несколько конкурирующих реализаций для разных целей важны для соревновательности и экспериментов с новыми фичами реализации.
Не всегда возможно, т.к. динамические языки как правило предполагают наличие VM хотя бы для генерации кода на лету.
ЗХ>* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
Отличная вряд ли получится (т.к. разные парадигмы (например язык с GC и без)), но неплохую можно.
ЗХ>* Язык и хотя бы одна реализация промышленного качества обязаны быть с открытыми исходниками. Замкнутость языка должна быть невозможна.
+1
ЗХ>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
А не знаю. Perl, PHP и Python обошлись как то без этого.
ЗХ>* Централизованный репозиторий кода/библиотек. Это одна из крупнейших ошибок Java. Установка новой Java-библиотеки болезненно. Нужно что-то вроде CPAN, ASDF, RubyGems.
Не знаю, это уже скорее вопрос инфраструктуры и утилит.
Для того же Eclipse плагины совершенно безболезненно устанавливаются.
ЗХ>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
Прекрасны понятие субъективное.
ЗХ>* Конкуррентность должна быть встроена в сам язык (как Erlang или Gambit Scheme).
+1
ЗХ>* Мета-программирование должно быть естественным (примерно как в Ruby).
+1
ЗХ>* Должно быть естественным решение проблем снизу вверх, реализуя DSL'и внутри или вне языка.
Я за внутри.
ЗХ>* В языке должны быть мощные макро-возможности, которые несложно использовать.
+1
ЗХ>* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.
+1
ЗХ>Вот что я считаю необходимым (но, возможно, не достаточным) для действительно полезного, хорошего, долгоиграющего языка программирования. Когда я перечитываю список, мне не кажется, что такой язык скоро появится. Честно говоря, это сдается маловероятным.
-1. Смотри Nemerle и Scala. Да и Boo возможно.
ЗХ>Может быть, другой путь — правильный? Другой путь, который я вижу — языки становится все легче создавать, и каждый силен в своей области. [...]
Нееет! Учить 100 языков а потом путаться в разном синтаксисе . Just say No.
ЗХ> Чтобы эта стратегия работала, в каждом языке должна быть в первую очередь возможность интеграции с остальными.
Это в любом случае не помешает. Собственно это то, для чего был создан .NET framework.
ЗХ> Возможно, это будет действительно хороший "язык-клей" [glue-language] (не такой, как Perl или Ruby, но язык, который служит только для склейки других языков), а все остальные языки реализуют хорошую поддержку этого языка. К примеру, можно будет сделать базовый конкурентный фреймворк на Erlang, который использует G (язык-клей) чтобы реализовать некоторую enterprise функциональность в Java sandboxes, а в некоторых местах будут использоваться (через G) DSL, реализованные на Ruby, где через G будут использоваться движки знаний Prolog. ЗХ>[/q]
Жуть. А как вы этот зоопарк будете поддерживать? А отлаживать?
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Имеется в виду то же, что было сказано про GC — их должно быть несколько, для конкуренции и постоянного улучшения. Например, рубисты, как известно, страдают от невеликой скорости интерпретатора — а авторы языка в неофициальных беседах зачастую утверждают, что "и так сойдет" (хотя и работают над эффективной виртуальной машиной). А вот если бы была альтернативная реализация, которая бы работала в 20 раз быстрее (но при этом, к примеру, реализовывала бы только 80% языка) — то основная реализация быстро бы подтянулась по скорости (а альтернативная — стала бы подтягиваться по фичам). Это Ола Бини так думает. Я, например, считаю, что если бы был человек, достаточно крутой, чтобы сделать быструю реализацию, и достаточно в этом заинтересованный — он бы присоединился к развитию основной ветви Собственно, это УЖЕ произошло — Сасада Коичи начала разработку Yet Another Ruby VM (YARV), сейчас YARV является официальной виртуальной машиной для следующей версии Руби (Руби 2).
Ну насчет того что YARV так уж быстра не сказал бы (медленнее той же Скалы раз в 10-15): здесь.
Но так конечно побыстрее старой раза в 2-3.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Ну насчет того что YARV так уж быстра не сказал бы (медленнее той же Скалы раз в 10-15): здесь. АХ>Но так конечно побыстрее старой раза в 2-3.
Святая правда. Меня самого ужасно удручает, когда какие-то алгоритмы/тесты, которые на Питоне работают в 10-20 раз быстрее, ускоряются при помощи YARV всего в 2-3 раза (оставаясь в 3-5 раз медленнее Питона) — и все считают это нормальным
Здравствуйте, Андрей Хропов, Вы писали:
АХ>А вот откуда взялась "великолепная скорость" я не понял. По-любому не быстрее полностью оптимизирующего компилятора. АХ>Видимо "великолепная скорость" только по сравнению с Ruby . Ну с такой точки зрения любой язык кроме PHP обеспечит "великолепную скорость".
нативный код надо создавать или для "наименьшего общего подмножества" команд процессора (что заведомо уменьшает ффективность), или создавать отдельный образ для каждой возможной модели процессора, на которой будет запускаться прога (что нехило раздувает размер программы)
наличие расширенных наборов команд, размер кэша, структура конвейера — это всё имеет очень большое значение на производительность кода
виртуальная машина может, хотя бы теоретически, всегда использовать особенности процессора для повышения производительности — достаточно перегенерировать нативный код под нужный процессор
Здравствуйте, Дарней, Вы писали: Д>нативный код надо создавать или для "наименьшего общего подмножества" команд процессора (что заведомо уменьшает ффективность), или создавать отдельный образ для каждой возможной модели процессора, на которой будет запускаться прога (что нехило раздувает размер программы) Д>наличие расширенных наборов команд, размер кэша, структура конвейера — это всё имеет очень большое значение на производительность кода Д>виртуальная машина может, хотя бы теоретически, всегда использовать особенности процессора для повышения производительности — достаточно перегенерировать нативный код под нужный процессор
А также выполнять hot-spotting чтобы использовать реальную статистику вызовов. Хотя наиболее современный подход вроде бы в том, что статистику вызовов лучше получать на стороне разработчика путем тестовых прогонов, т.к. это теоретически позволяет получать больше времени для глобальных оптимизаций. А статистика вызовов ожидается более зависящей от приложения, нежели от конкретного окружения.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Все существующие сегодня варианты недостаточно хороши. Я вижу два пути вперед. Два пути, которые могут привести к "языку на 100 лет".
Упаси нас бог от языка на 100 лет. Только представить себе — идет 10-й год от момента создания этого языка. И на всякие рассуждения о новых языках тебе отвечают — приходите через 90 лет
А если серьезнее — сколько вы, господа, тут не обсуждайте, а кончится тем, что программировать будете на языке, который некая серьезная фирма (Microsoft, Sun,...) вам предложит и будет поддерживать. Как миленькие. Никуда не денетесь. А все остальное — периферия IT.
Здравствуйте, Sinclair, Вы писали:
S>А также выполнять hot-spotting чтобы использовать реальную статистику вызовов. Хотя наиболее современный подход вроде бы в том, что статистику вызовов лучше получать на стороне разработчика путем тестовых прогонов, т.к. это теоретически позволяет получать больше времени для глобальных оптимизаций. А статистика вызовов ожидается более зависящей от приложения, нежели от конкретного окружения.
Я думаю, выгоднее использовать статический анализ путей исполнения и тестовые прогоны, чтобы собирать такую информацию. Главный недостаток хотспота в том, что он сам отъедает ресурсы во время исполнения.
Дарней wrote: > Я думаю, выгоднее использовать статический анализ путей исполнения и > тестовые прогоны, чтобы собирать такую информацию. Главный недостаток > хотспота в том, что он сам отъедает ресурсы во время исполнения.
Статический анализ поможет, но не сильно. Дело в том, что на протяжении
жизни приложения горячие точки могут перемещаться в коде и иногда наша
оптимизация может стать пессимизацией.
Так что за HotSpot — будущее. Кстати, на многопроцессорных системах
можно анализатор HotSpot запускать на выделенном ядре.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А если серьезнее — сколько вы, господа, тут не обсуждайте, а кончится тем, что программировать будете на языке, который некая серьезная фирма (Microsoft, Sun,...) вам предложит и будет поддерживать. Как миленькие. Никуда не денетесь. А все остальное — периферия IT.
А, ну-ну. Вот Пол Грехем заработал на Лиспе че-то в районе 20 млн долларов. Уж лучше я буду на такой "периферии" .
А если серьезно, то пусть люди создают новые языки, проекты, а потом лучшие из них будут поддержаны индустрией.
Примеры тому есть, те же Perl, Python, PHP, Ruby и т.д.
И теперь уже Sun нанимает создателей JRuby, а MS — IronPython.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>А, ну-ну. Вот Пол Грехем заработал на Лиспе че-то в районе 20 млн долларов.
Ну-ну... Я не о создателях и разработчиках языков говорю, а о большинстве обычных программистов. Дай объявление о себе как о Лисп-программисте, а когда найдешь работу и заработаешь на ней 20 млн — тогда и поговорим . И даже тогда это не будет серьезным аргументом — единичный случай не аргумент. Вот если найдется язык, который никакая серьезная фирма не поддерживает, а он востребован на уровне C++, Java. C# и т.д. — вот это будет аргументом.
АХ>А если серьезно, то пусть люди создают новые языки, проекты, а потом лучшие из них будут поддержаны индустрией. АХ>Примеры тому есть, те же Perl, Python, PHP, Ruby и т.д. АХ> И теперь уже Sun нанимает создателей JRuby, а MS — IronPython.
Да бога ради. Это и есть тот самый аргумент, который я привожу — только то, за что серьезные фирмы возьмутся, то и будет. В конце концов и С энтузиасты создали...
Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>А, ну-ну. Вот Пол Грехем заработал на Лиспе че-то в районе 20 млн долларов.
PD>Ну-ну... Я не о создателях и разработчиках языков говорю, а о большинстве обычных программистов. Дай объявление о себе как о Лисп-программисте, а когда найдешь работу и заработаешь на ней 20 млн — тогда и поговорим . И даже тогда это не будет серьезным аргументом — единичный случай не аргумент. Вот если найдется язык, который никакая серьезная фирма не поддерживает, а он востребован на уровне C++, Java. C# и т.д. — вот это будет аргументом.
Я к тому, что для того чтобы успешно разрабатывать программы не обязательно пользоваться самым мейнстримным языком, достаточно возможности нормальной интеграции с ними.
Пользуясь языком, который позволит писать более продуктивно, можно получить конкурентное преимущество. Собственно пример Пола Грехема это и показал.
АХ>>А если серьезно, то пусть люди создают новые языки, проекты, а потом лучшие из них будут поддержаны индустрией. АХ>>Примеры тому есть, те же Perl, Python, PHP, Ruby и т.д. АХ>> И теперь уже Sun нанимает создателей JRuby, а MS — IronPython.
PD>Да бога ради. Это и есть тот самый аргумент, который я привожу — только то, за что серьезные фирмы возьмутся, то и будет. В конце концов и С энтузиасты создали...
Не, C был создан для Unix и это было в Bell Labs, так что это было по заказу.
PD>Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
Что значит серьезное? Perl, PHP, Python серьезно? А сама разработка этих языков не поддерживается корпорациями.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Да бога ради. Это и есть тот самый аргумент, который я привожу — только то, за что серьезные фирмы возьмутся, то и будет. В конце концов и С энтузиасты создали...
PD>Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
Ruby сейчас не продвигает ни одна серьезная фирма. Мне пофигу Грэхем с его заработанными на Лиспе миллионами. Но сейчас моя зарплата во многом зависит от работы написанных мной на Ruby программ. Так что миллионы следующих за мейнстримом программистов, как и тысячи подобных мне маргиналов -- это все абстрактые понятия, а вот конкретное -- это булка с маслом в моих руках. Которая у меня есть благодоря языку, не поддерживаемому крупными корпорациями. И что-либо серьезнее этого факта нужно ее поискать.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Я к тому, что для того чтобы успешно разрабатывать программы не обязательно пользоваться самым мейнстримным языком, достаточно возможности нормальной интеграции с ними.
Что такое "успешно разрабатывать программы" ? Можно создать фирму, которая успешно разработает новую игру и сумеет ее продвинуть на рынок (не сама, конечно). При этом на чем игра написана — не так важно, хоть на ассемблере. Можно просто писать что-то в свое удовольствие на чем угодно, если вопрос денег не стоит. Более того, из этого иногда потрясающие результаты получаются. Но — один на тысячу. А я говорю об обычных программистах, которые работают на кого-то и за это деньги получают. Именно о них.
АХ>Пользуясь языком, который позволит писать более продуктивно, можно получить конкурентное преимущество. Собственно пример Пола Грехема это и показал.
Да ничего он не показал. Я про Лисп слышал еще на заре своей карьеры, в 80-е годы, и книги тогда издавались. И как он тогда был периферией IT, так и остался. Я же не говорю, что его нет. Просто сравнить число программирующих на Лиспе и на C++, C#. Java, VB — ну несерьезно.
АХ>Не, C был создан для Unix и это было в Bell Labs, так что это было по заказу.
Да, ты прав. Формально по заказу. Но по существу — именно энтузиастами, у которых были идеи. Большой разницы не вижу.
PD>>Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
АХ>Что значит серьезное? Perl, PHP, Python серьезно? А сама разработка этих языков не поддерживается корпорациями.
OK. Сколько в мире программистов на С++, C# или Java и сколько — на Python или Perl ?
PHP — да, посерьезнее. Но заметь, насколько сильно его теснит ASP.NET.
Здравствуйте, eao197, Вы писали:
E>Ruby сейчас не продвигает ни одна серьезная фирма. Мне пофигу Грэхем с его заработанными на Лиспе миллионами. Но сейчас моя зарплата во многом зависит от работы написанных мной на Ruby программ. Так что миллионы следующих за мейнстримом программистов, как и тысячи подобных мне маргиналов -- это все абстрактые понятия, а вот конкретное -- это булка с маслом в моих руках. Которая у меня есть благодоря языку, не поддерживаемому крупными корпорациями. И что-либо серьезнее этого факта нужно ее поискать.
Еще раз объясняю свою позицию — я говорю только о массовом программисте. Если пойдешь игры писать — получишь хлеб с маслом за знание ассемблера. Если в научные исследования пойдешь — может быть, за Фортран. И за Аду тоже платят — в Министерстве обороны США. И, может быть, даже за Немерле тоже уже где-то платят. А массовый программист будет иметь дело с индустриальными средствами, а не пионерскими (или, наоборот, устаревшими) разработками.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Еще раз объясняю свою позицию — я говорю только о массовом программисте. Если пойдешь игры писать — получишь хлеб с маслом за знание ассемблера. Если в научные исследования пойдешь — может быть, за Фортран. И за Аду тоже платят — в Министерстве обороны США. И, может быть, даже за Немерле тоже уже где-то платят. А массовый программист будет иметь дело с индустриальными средствами, а не пионерскими (или, наоборот, устаревшими) разработками.
А я говорю о людях. Понятие 'массового' программиста -- это абстракция.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А если серьезнее — сколько вы, господа, тут не обсуждайте, а кончится тем, что программировать будете на языке, который некая серьезная фирма (Microsoft, Sun,...) вам предложит и будет поддерживать. Как миленькие. Никуда не денетесь. А все остальное — периферия IT.
Что-то я ни фига не пойму. Сначала вы утверждаете, что то что [b]нам[b] предложит корпорация — на том, мол и будем программировать. Когда появляется толпа "нас", которые программируют на языках, не поддерживаемых корпорациями — разговор пошел о некоем "массовом программисте" (он случайно не сферический, кстати?). Я никогда не могу понять этого логического перехода в спорах о языках — мол, что массовое (вечное слово "промышленный"), то и благо. Что же теперь, вообще не говорить об эффективности и красоте языков? Ну, давайте будем биржевыми сводками обмениваться — у какой корпорации сегодня индекс вверх пошел, тот язык весь РСДН и любит — так, что ли?
По мне, так в этом форуме вообще ваши сферические массовые программисты не водятся — если уж человек пришел обсуждать философию, так уж наверное он задумывается не только о том, за что деньги платят?
Здравствуйте, Pavel Dvorkin, Вы писали:
E>>А я говорю о людях. Понятие 'массового' программиста -- это абстракция.
PD>Нет, не абстракция. Это те программисты, которых большинство.
Статистика есть?
Какой процент в мире веб-программистов (на PHP, Python, Ruby, whatever — ни одной корпорации, увы)?
Какой процент шароварщиков (которые пишут на чем бог на душу положит)?
Какой процент игроделов?
Какой процент исследователей?
Какой процент занимается внутрифирменным софтом (опять же на чем попало)?
Юниксоидов (где, как правило, негусто "языков, поддерживаемых корпорациями")?
Из того, что знаю я лично — одних рубистов в мире столько, что "маргиналами, которым работы не найти" их назвать очень тяжело.
Здравствуйте, Pavel Dvorkin, Вы писали:
E>>А я говорю о людях. Понятие 'массового' программиста -- это абстракция.
PD>Нет, не абстракция. Это те программисты, которых большинство.
Павел, возможно я нашел причину нашего противоречия. Дело в том, что термин "серьезный" из фразы:
Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
может быть употреблен как персонально к конкретному программисту, так и к "индустрии". Вот я как раз и говорил о том, что для конкретного человека "серьезность" определяется тем, чем он в данный момент зарабатывает себе на жизнь. Это настолько серьезно, что более серьезные вещи еще нужно поискать (и найдены они, скорее всего, будут вне области программирования, как то: здоровье близких людей, семья, ремонт в квартире и пр.). Поэтому даже очень значимые вещи (например, такие как появление платформы .NET) для конкретного разработчика может совершенно спокойно пройти мимо и не вызвать никаких изменений в его благосостоянии
Ты же, скорее всего, подразумевал серьезность воздействия на "индустрию". Хотя и "индустрия" здесь не очень удачный термин, поскольку производство ПО уже сильно фрагментированно (встроенные системы и научные расчеты, например, вообще на разных полюсах находятся). Скорее речь нужно вести о массовом производстве. О тех 20% инструментов/технологий, которые покроют потребности 80% разработчиков и заказчиков ПО. С этим я спорить не буду, хотя можно было бы повспоминать какие-нибудь технологические прорывы или то, что в разных сферах есть свои лидеры и, например, где-то WindRiver гораздо круче M$.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Pavel Dvorkin, Вы писали:
E>>>А я говорю о людях. Понятие 'массового' программиста -- это абстракция.
PD>>Нет, не абстракция. Это те программисты, которых большинство.
E>Павел, возможно я нашел причину нашего противоречия. Дело в том, что термин "серьезный" из фразы:
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Здравствуйте, Pavel Dvorkin, Вы писали:
E>>>А я говорю о людях. Понятие 'массового' программиста -- это абстракция.
PD>>Нет, не абстракция. Это те программисты, которых большинство.
ЗХ>Статистика есть?
Наверное, есть, но у меня лично нет. Но нужна ли здесь точная статистика ? Зайди на любые сайты, где предлагают/ищут работу, и посмотри. Согласен, это не будет статистически репрезентативно в строгом смысле слова, но не будешь же ты в конце концов спорить, что программистов на Java/C++/C# требуется больше, чем на Ruby или Python ? И не в 2 раза больше, а как бы не на 2 порядка.
ЗХ>Из того, что знаю я лично — одних рубистов в мире столько, что "маргиналами, которым работы не найти" их назвать очень тяжело.
Стоп, Зверек, не надо передергивать. Никого маргиналом я не называл, периферия — еще не маргинальность. И про то, трудно или нет им найти работу, я и не заикался. Я просто одно утверждаю : это — периферия. Потому что если это приносит серьезный доход, то это подхватит серьезная фирма. Вот и все.
Периферия — не есть плохо. Вообще-то новые идеи часто приходят с периферии. Более того, они скорее всего оттуда и приходят. Хороший паровозник тепловоз не придумает. Но кустарные тепловозы тоже не есть серьезное дело, даже если они ездят. Одно из двух — либо эти тепловозы подхватит серьезная фирма и они серьезно потеснят паровозы, либо они заглохнут, а на сцену выйдет что-то иное. Электровозы, к примеру, или вообще самолеты. Но не собранные в КБ Жуковского в единственном экземпляре, а Боинги или хотя бы ТУ
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Здравствуйте, Pavel Dvorkin, Вы писали:
ЗХ>Что-то я ни фига не пойму. Сначала вы утверждаете, что то что нам[b] предложит корпорация — на том, мол и будем программировать. Когда появляется толпа "нас", которые программируют на языках, не поддерживаемых корпорациями — разговор пошел о некоем "массовом программисте" (он случайно не сферический, кстати?).
Голова ближе к сферической, туловище продолговатое, еще ноги и руки есть, неправильной формы
>Я никогда не могу понять этого логического перехода в спорах о языках — мол, что массовое (вечное слово "промышленный"), то и благо.
А разве я утверждал, что это благо ? Ссылку, плиз! Я утверждаю лишь, что это то, чем заниаются [b]большинство в индустрии
>Что же теперь, вообще не говорить об эффективности и красоте языков?
Да бога ради, говорите, я что, запретить пытаюсь, что ли ? Я просто фиксирую факт — есть состояние индустрии, а есть периферия ее. И большинство работают в индустрии, а не на периферии.
>Ну, давайте будем биржевыми сводками обмениваться — у какой корпорации сегодня индекс вверх пошел, тот язык весь РСДН и любит — так, что ли?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А если серьезнее — сколько вы, господа, тут не обсуждайте, а кончится тем, что программировать будете на языке, который некая серьезная фирма (Microsoft, Sun,...) вам предложит и будет поддерживать. Как миленькие. Никуда не денетесь. А все остальное — периферия IT.
Фигня, прорвёмся.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Cyberax, Вы писали:
C>Статический анализ поможет, но не сильно. Дело в том, что на протяжении C>жизни приложения горячие точки могут перемещаться в коде и иногда наша C>оптимизация может стать пессимизацией.
Ты можешь уточнить на примере, как это может произойти?
Дарней wrote: > C>Статический анализ поможет, но не сильно. Дело в том, что на протяжении > C>жизни приложения горячие точки могут перемещаться в коде и иногда наша > C>оптимизация может стать пессимизацией. > Ты можешь уточнить на примере, как это может произойти?
Стандартный пример, вот у нас есть код, который ищет нужных учеников:
На тестовых прогонах мы его тестируем на среднестатистической школе, в
которой больше хороших учеников, так что оптимизируется первая ветка, а
вторая ветка помещается в зону "холодного кода" и т.п.
Но если нашу программу запустят для колонии несовершеннолетних, то почти
каждый раз будет выполняться пессимизированый код. Runtime-анализатор в
этом случае просто перкомпилирует код под изменившиеся условия.
Пример полностью искусственный, но мысль должна быть понятна.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Я к тому, что для того чтобы успешно разрабатывать программы не обязательно пользоваться самым мейнстримным языком, достаточно возможности нормальной интеграции с ними.
PD>Что такое "успешно разрабатывать программы" ? Можно создать фирму, которая успешно разработает новую игру и сумеет ее продвинуть на рынок (не сама, конечно). При этом на чем игра написана — не так важно, хоть на ассемблере. Можно просто писать что-то в свое удовольствие на чем угодно, если вопрос денег не стоит. Более того, из этого иногда потрясающие результаты получаются. Но — один на тысячу. А я говорю об обычных программистах, которые работают на кого-то и за это деньги получают. Именно о них.
Путем использования "маргинального" Erlang получено сокращение сроков разработки и увеличение производительности.
Приложение вполне практическое. Это серьезно?
АХ>>Пользуясь языком, который позволит писать более продуктивно, можно получить конкурентное преимущество. Собственно пример Пола Грехема это и показал.
PD>Да ничего он не показал. Я про Лисп слышал еще на заре своей карьеры, в 80-е годы, и книги тогда издавались. И как он тогда был периферией IT, так и остался. Я же не говорю, что его нет. Просто сравнить число программирующих на Лиспе и на C++, C#. Java, VB — ну несерьезно.
Ну и ладно. Вон на 1С многие пишут. А мне то что с этого ?
PD>>>Но будет что-то серьезное не раньше, чем серьезные фирмы это поддержат. Не раньше!
АХ>>Что значит серьезное? Perl, PHP, Python серьезно? А сама разработка этих языков не поддерживается корпорациями.
PD>OK. Сколько в мире программистов на С++, C# или Java и сколько — на Python или Perl ?
Цифр не знаю, но знаю что Python используется в крупных компаниях (Google,ILM,Яндекс...)
Да и Perl там же и еще много где.
PD>PHP — да, посерьезнее. Но заметь, насколько сильно его теснит ASP.NET.
Здравствуйте, наивный рубист Ola Bini, Вы писали:
ЗХ>а) идеальных языков программирования (пока не существует)
Для мэйнстрима идеалом вполне можно считать C#.
ЗХ>б) ближе всего к идеалу Ruby, Lisp, OCaml, Erlang
Это ваше личное мнение, возможно (и скорее всего) ошибочное. Маргинальные языки не могут в принципе быть идеальными, ибо будь они таковыми, все давно бы на них перешли.
ЗХ>Все существующие сегодня варианты недостаточно хороши. Я вижу два пути вперед. Два пути, которые могут привести к "языку на 100 лет".
"Язык на 100 лет" описан только первым вариантом, второй подразумевает существование всего сегодняшнего зоопарка + "Момент".
ЗХ>Первый путь — один новый язык.
Уже смешно. Напоминает бредни школьника, узнавшего, что есть языки помимо BASIC.
ЗХ>* Он должен быть мультипарадигменным.
Классический павлино-утко-ёж — бесхвостое, лысое чудовище, тонущее в воде. Вы не ошиблись, это действительно "известный рубист" или пи%добол-теоретик?
ЗХ>* В нем должен быть статический вывод типов, где возможно.
Но тогда идёт лесом любая попытка "динамического" программинга! Мечтать-то не вредно, но надо ещё думать.
ЗХ>* Нужны все феньки функциональных языков: замыкания, first-order functions, лямбды. Иначе язык будет тупиковой ветвью эволюции.
И как же мы 30 лет программили и всё никак не вымрем как мамонты?
А что интересно, что как раз функциональные языки живут где-то сбоку-припёку, а мэйнстрим прекрасно обходится императивными/ООП языками.
ЗХ>* Нужен сборщик мусора.
Менеджер памяти — точно нужен, а вот что подразумевается под GC — ещё желательно бы точно сформулировать! Только, причём тут ЯЗЫК?
ЗХ>* JIT VM. Кажется доказанным, что виртуальные машины — большое преимущество.
Это выдача желаемого за действительное. Пока только одна единственная ВМ показала приемлемую скорость исполнения некритичных приложений, а остальные "преимущества" ещё нуждаются во всеплатформенных доказательствах.
ЗХ>* Кроме того, они могут обеспечить великолепную скорость.
Пустослов.
ЗХ>* Еще одна JIT VM.
Да хоть десяток их напиши! Опять же, каким боком это относится к языку?
ЗХ>* Реализация без виртуальной машины.
Парня понесло в дебри... Похоже, в голове у чувака каша, из которой он пытается выдавить что-то интересное. Пока лезет одна овсянка.
ЗХ>* Отличная интеграция со "старыми" языками (Java, Ruby, Cobol). Это очевидно. Слишком много уже создано, от чего мы никогда не избавимся.
Ерунда. Всё что надо, напишут заново (Це-шарпу это не помешало), а устаревшие системы... жлобы их будут использовать ещё лет 200, НАМ это зачем?
Уж с чем нужна интеграция, так это с библиотеками (.so, .dll). А что особенно интересно, как это автор собирается интегрировать мультипарадигменную кашу языков, когда даже между однопарадигменными языками такое не всегда возможно!
ЗХ>* Язык и хотя бы одна реализация промышленного качества обязаны быть с открытыми исходниками. Замкнутость языка должна быть невозможна.
Мечты юного пингвиноида. Создание качественного языка — вещь настолько трудоёмкая, что отбивать бабки придётся ещё очень долго.
ЗХ>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
А главное — в тему про "язык на 100 лет"! Буржуй-маркетолог прёт изо всех щелей...
ЗХ>* Централизованный репозиторий кода/библиотек.
Опять про что-угодно, кроме ЯЗЫКА.
ЗХ>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки.
OFFTOPIC.
ЗХ>* Конкуррентность должна быть встроена в сам язык (как Erlang или Gambit Scheme).
Можно подумать, что под DOS это кому-то помогло бы... Парень просто не понимает что такое ОС и язык.
ЗХ>* Мета-программирование должно быть естественным (примерно как в Ruby).
Ну короче, Рыбы — наше всё. Чего было слюни развозить?
Всё это "мета-" очень забавно, но для досуга. Мэйнстрим не выдержит такого наплыва программ-извращенцев.
ЗХ>* Должно быть естественным решение проблем снизу вверх, реализуя DSL'и внутри или вне языка.
Кто про что, но только дайте в компиляторе покопаться! Мальчишеские радости...
ЗХ>* В языке должны быть мощные макро-возможности, которые несложно использовать.
Понятие "мощные" — это в отдел маркетинга, нам пожалуйста конкретные описания и их жизненную необходимость.
ЗХ>* Важно для макро-воззможностей: язык дожен иметь строго определенное синтаксическое дерево простейшего возможно вида, тем не менее синтаксис должен быть ортогональным.
Опять копания в кишках. И чего человеку неймётся?... Наверное, слишком много свободного времени.
ЗХ>Когда я перечитываю список, мне не кажется, что такой язык скоро появится.
Зачем тогда писать эту чушь? Брось косяк, да иди читать мат.часть!
ЗХ>Может быть, другой путь — правильный?
Т.е. предыдущий — был неправильный? Ты не уверен? Ты сочинил всё это "по ходу дела"? Тогда зачем это вообще писать?
ЗХ> Другой путь, который я вижу — языки становится все легче создавать
Нуёпыть! ПЛОХИЕ языки — легче создавать. Или мультипарадигменные с поддержкой "языка черепашки".
ЗХ>Чтобы эта стратегия работала, в каждом языке должна быть в первую очередь возможность интеграции с остальными.
Да-да. Нужно "всего лишь" изменить пару мильёнов строк кода во всех компиляторах и все они склеются во всеобщем оргазме! Мечтатель...
Чувак, ты ошибся форумом. Доказывают друг другу собственную крутизну — тут.
Натренируешься вести дискуссию, как умный человек, а не гопота из подворотни — welcome back!
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Чувак, ты ошибся форумом. Доказывают друг другу собственную крутизну — тут. ЗХ>Натренируешься вести дискуссию, как умный человек, а не гопота из подворотни — welcome back!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Еще раз объясняю свою позицию — я говорю только о массовом программисте.
Зачем говорить за всех?
PD>Если пойдешь игры писать — получишь хлеб с маслом за знание ассемблера. Если в научные исследования пойдешь — может быть, за Фортран. И за Аду тоже платят — в Министерстве обороны США. И, может быть, даже за Немерле тоже уже где-то платят. А массовый программист будет иметь дело с индустриальными средствами, а не пионерскими (или, наоборот, устаревшими) разработками.
Не уверен, что платят за технологии. Платят за эффективные решения, а технологии -- это всего лишь способ реализации этих решений. Докажите Министерству обороны США, что решения на Немерле будут для них выгодней чем на Аде и вам станут платить на Немерле
Здравствуйте, Dr.Gigabit, Вы писали:
>Докажите Министерству обороны США, что решения на Немерле будут для них выгодней чем на Аде и вам станут платить на Немерле
Черта с два. Тут еще 1000 прочих факторов присутствует. Корпоративные стандарты. Затраты на переобучение персонала и неизбежно связанные с этим потери в качестве на первых порах. Наработанное ПО, от которого никто не будет отказываться. Предпочтения топ-менеджера и мнение об этом его жены . И т.д.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Путем использования "маргинального" Erlang получено сокращение сроков разработки и увеличение производительности. АХ>Приложение вполне практическое. Это серьезно?
У меня такое впечатление, что ты меня не хочешь понять. Ладно, доведу до абсурда.
В 2007 году разработан новый язык для не знаю уж чего, который позволяет увеличить быстродействие в 5 раз, а сроки разработки сократить в 10 раз. Это серьезно ?
Ответ : как новое слово ИТ — это серьезно. Как пионерские исследования в этой области и даже пилотные проекты — это серьезно.Как технология — пока нет. До тех пор пока этот язык не будет принят индустрией, т.е разработаны для него промышленные (а не кустарные) компиляторы, IDE, ,библиотеки, средства сопряжения с унаследованным ПО и т.д.
И поэтому MS-DOS — это серьезно для индустрии того времени. А всякие самопальные ОС того времени — нет. Хотя среди них, возможно, была и лучшая, чем MS-DOS. И если сейчас создать новую ОС, лучшую, чем Windows и даже 100% совместимую с ней , иными словами, переписать Windows более эффективно (а это в принципе можно сделать), то это все равно для индустрии серьезно не будет. Пока Вы не найдете фирму с капиталом, позволяющим им выдвинуть этот продукт на рынок и создать конкуренцию MS.
Похоже, моя реплика привела к тому, что меня не совсем правильно поняли. Попробую сказать подробнее, что я имел в виду.
Большая часть истории ВТ прошла на моих глазах. И всяких р-р-революционных изменений, претендующих в момент их появленияна то, чтобы ниспровергнуть все и вся , а через 2-3 года прочно забытых, я видел не так уж мало.
В пионерских и пилотных исследованиях и разработках (порой и коммерческих) таких идей возникает много. Некоторые из них выглядят очень даже привлекательно с любой точки зрения, но проходит некоторое время и о них прочно забывают. Почему ?
Ответ, увы, прост — промышленность их не захотела принять. Может, они оказались чересчур революционными для своего времени. Может, они плохо стыкуются с тем, что уже есть. Может, они не вписывались в маркетинговую политику фирмы. Может, они просто не понравились руководству компании, задающей тон в данный момент на рынке. И т.д.
Вот простой пример. Алгол-60, безусловно, был во всех отношениях лучше Фортрана. Но тогдашний законодатель мод — фирма ИБМ — Фортран возлюбила, а Алгол — нет. В результате, несмотря на все его преимущества, Алгол помер (правда, породив наследника в виде Паскаля), а Фортран еще долго царствовал, да и ныне не мертв.
Другой пример. Модула-2 лучше Паскаля, наверное. Но Паскаль поддержала Борланд, а Модуле такая поддержка не была обеспечена. В ДОС еще какой-то компилятор был, а для Windows, может быть, он и существует (наверное существует), но о серьезной роли Модулы говорить не приходится.
Да и OS/2 по своим идеям была намного лучше Windows 3.x. Но Windows царствует, а где OS/2 ?
И уж совсем показательный пример. Где бы был Бейсик без Микрософт (или лично Б. Гейтса) ? . А что, Бейсик — это хорошо ? Это новые идеи ?
Итак, хорошие на первый взгляд решения, предлагаемые в пионерской области, далеко не всегда востребуются индустрией. У нее свои законы, свои правила. И эти правила порой весьма далеки от академических нравов или философских соображений.
А то, что промышленностью не будет принято — неизбежно уйдет на периферию. Это не значит, что оно существовать не будет. И не значит, что этим вообще не надо заниматься. И даже деньги зарабатывать на этом можно, и даже немалые. Это просто значит, что это будет в стороне от промышленного производства ПО. И для большинства практикующих программистов это — не более, чем возможность подискутировать в форумах вроде этого в свободное от работы время.
Возвращаясь к языкам программирования, выскажу мысль, с которой многие, может быть, не согласятся. Единственное серьезное нововведение, принятое промышленностью с 80-х годов — это объектно-ориентированное программирование. Как и положено тому, что побеждает, его победа была внушительной и быстрой. Оно действительно существенно изменило подход к разработке ПО. А все остальное- так, мелочи. И за исключением ООП С, а то и С#, не очень отличаются от Фортрана. Только ради бога, не надо подозревать меня в незнании последнего и напоминать мне об отсутвтвии в нем порядочного цикла, указателей и динамического выделения памяти. Мелочи все это...
Разумеется, пионерскими исследованиями и разработками заниматься надо, в конце концов именно из них и выходит то, что впоследствии будет принято индустрией. Но бросаться на каждую новую штучку и объявлять ее р-р-революцтонным нововведением — простите, смешно.
Лично мое отношение ко всем этим нововведениям — скептическое. В конце концов язык — это 1% от того, что должен знать программист. И освоить новый язык — не бог весть какой сложности задача. Освоили же ООП те, кто начинал до его промышленного появления, и ничего! Так что поживем — увидим. Если это действительно будет принято индустрией — освоим и будем употреблять. А если нет — значит, не судьба, и не стоит тратить на это время.
Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
Позволю себе парочку ремарок
PD>Другой пример. Модула-2 лучше Паскаля, наверное. Но Паскаль поддержала Борланд, а Модуле такая поддержка не была обеспечена. В ДОС еще какой-то компилятор был, а для Windows, может быть, он и существует (наверное существует), но о серьезной роли Модулы говорить не приходится.
На момент, когда Borlad выпустил Turbo Pascal, это была маленькая, мало кому вообще известная комания (см., например, Wikipedia). И поднялись они из-за того, что предложили самый лучший на тот момент компилятор Паскаля. Но Паскаль к тому времени уже был восстребован, что и позволило Turbo Pascal-ю стать успешно продаваемым продуктом (т.е. Borland продавал то, что было нужно покупателям, он не мог тогда навязать Паскаль тем, кому Паскаль не был нужен).
PD>Лично мое отношение ко всем этим нововведениям — скептическое. В конце концов язык — это 1% от того, что должен знать программист. И освоить новый язык — не бог весть какой сложности задача.
Может быть среди "знаний" знание языка -- это 1%. А вот среди "умений" владение языком занимает гораздо больший процент. Поскольку на основе "знаний" легко пытаться писать на C++, как на Smalltalk, на Ruby как на C++, а на Java -- как на C++. Только программы получаются такими, что сопровождать их не хочется.
К сожалению, впитывание идиом языка, освоение его best practices, требует гораздо больше времени и сил, чем простое ознакомление с синтаксисом, библиотеками и средствами разработки. И здесь нужен личный опыт, который можно приобрести только программируя на языке, а не "зная" его.
PD>Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде. Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода. Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, AndrewVK, Вы писали:
> В следующий раз будет бан.
Был не прав, вспылил. Извиняюсь, конечно.
Но на своей точке зрения настаиваю: просто глупые мечты какие-то, а не повод для обсуждения.
Как правильно ПД далее указывает, даже если язык позволяет в 10 раз быстрее программить, от этого он не становится более "промышленным". А всяких маргинальных языков и так сейчас полно.
Спрашивается, чего людям нехватает? Есть С++, C#, Java... этого хватает за глаза.
E>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде.
Вот тут ты, имхо, точно подметил. Реально очень большая проблема, конечно, наверное, где-то уже обучают, но далеко не везде. Еще сейчас, по ходу работы, сталкиваюсь c софтом который написан "на коленке", потом дописан еще кем-то, потом еще кем-то... и опа.. поддерживать нереально... при том софт разный и коммерческий, и для бюджетной сферы... во втором случае все гораздо хуже...
E> Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода.
Наверно в этом и вопрос — как перейти от разработки кода в 100 строк к коду 20к-30к строк.
E>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
Думаю, было бы лучше дать возможность сделать проект на любом из изучаемых языков. А кто и что выберет, имхо, его право. Тем более какой-то язык может подойди лучше, банально из-за существующих сторонних библиотек и т.п.
Здравствуйте, Plague, Вы писали:
E>>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде. P>Вот тут ты, имхо, точно подметил. Реально очень большая проблема, конечно, наверное, где-то уже обучают, но далеко не везде. Еще сейчас, по ходу работы, сталкиваюсь c софтом который написан "на коленке", потом дописан еще кем-то, потом еще кем-то... и опа.. поддерживать нереально... при том софт разный и коммерческий, и для бюджетной сферы... во втором случае все гораздо хуже...
Ну я другой аспект хотел подчеркнуть -- в команде сразу обнаруживается, что самое важное -- это человеческий фактор, человеческие взаимоотношения, а технология и проектные решения -- все это вторично или третично
А вот как вести себя в команде, как учитывать мнения других членов команды, как вести семинары, как фиксировать результаты обсуждений, как выстраивать контроль за работой команды, как организовывать поощрения и наказания -- это вообще отсутствует как класс предметов в учебной программе. Математиков-педагогов хоть какой-то педагогике и психологии обучают, а программистов и прикладных математиков -- вообще ничему подобному не учат.
E>> Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода. P>Наверно в этом и вопрос — как перейти от разработки кода в 100 строк к коду 20к-30к строк.
Как раз такие переходы у нас были не редкостью. Зачастую студент привлекался научным руководителем к работе над каким-нибудь крупным проектом (что шло как курсовые и дипломный проект). Но вот помощи студенту особой не было. Такое обучение плаванию по "бразильской системе" -- бросили в воду, дальше сам. Если есть голова на плечах, если где-то чего-то прочитал, то в конце-концов разберешься, как модули организовывать, как функциональность по ним распределять, как поддерживать все это.
E>>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект). P>Думаю, было бы лучше дать возможность сделать проект на любом из изучаемых языков. А кто и что выберет, имхо, его право. Тем более какой-то язык может подойди лучше, банально из-за существующих сторонних библиотек и т.п.
Так и я о том -- нашел проект (тем более если это часть производственной практике) для которого требуется Немерле -- делай его на Немерле. Не должно быть догматических ограничений, вроде "в мире правят C++, Java и C#", поэтому на Немерле ничего нельзя делать на производственной практике, пока он в этот список не войдет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>На момент, когда Borlad выпустил Turbo Pascal, это была маленькая, мало кому вообще известная комания
Как, впрочем, и Микрософт . В те времена в области персональных машин крупных компаний и не было. Тогда можно было нескольким фирмам делать компиляторы с С (MS, Borland, Watcom, Zortech..). Попробуйте сейчас
E>Может быть среди "знаний" знание языка -- это 1%. А вот среди "умений" владение языком занимает гораздо больший процент. Поскольку на основе "знаний" легко пытаться писать на C++, как на Smalltalk, на Ruby как на C++, а на Java -- как на C++. Только программы получаются такими, что сопровождать их не хочется.
И что ? Я по первому языку фортранщик (был и Алгол, но недолго). И цикл с GOTO назад для меня был привычкой и нормой. Но не помню, чтобы я хоть раз впоследствии такое написал на Паскале или С. Это все очень быстро усваивается.
E>К сожалению, впитывание идиом языка, освоение его best practices, требует гораздо больше времени и сил, чем простое ознакомление с синтаксисом, библиотеками и средствами разработки. И здесь нужен личный опыт, который можно приобрести только программируя на языке, а не "зная" его.
+1
E>Когда я учился в университете, я видел один очень большой недостаток в подготовке программистов -- никто не учил работать в команде. Сейчас виден и еще один -- никто не учит пользоваться языками программирования для написания больших программ. Отчитают семестр по C++, сделают десять лабораторных, по сто строк в каждой и все, галочка поставлена, язык освоен. Хотя реальная оценка и понимание того же C++ приходит только тогда, когда потребуется посопровождать тысяч эдак 20-30 строк кода.
Больной вопрос. В общем, согласен. Практически же это связано с таким количеством прочих факторов, что их обсуждение займет десятки страниц. Учебный график и его выполнение. Разный уровень студентов. Наличие серьезной задачи. Прочие дисциплины (от них же никто не освободит, а у студентов 30-35 часов в неделю, и только 4 из них — у меня). И т.д. И т.п.
То, что ты хочешь — в теории верно и разумно, а на практике порой просто неосуществимо. То , что ты хочешь, можно бы реализовать в виде неких курсов, когда учащиеся готовы на это тратить по 8 часов в неделю на протяжении месяца и более. Увы, это очень далеко от вузовской реальности.
>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
Роль спецкурса не в этом. Его назначение — ознакомить с тем, что есть, дать направление, а там уж пусть сами вникают в глубину, если им надо. Спецкурс полугодовой у нас — 36 часов, годовой — 72 часа. Никаких серьезных программных продуктов за такое время не делают, а ведь большая часть спецкурса или вообще весь — это лекции.
Но, похоже, модератор выделит нас в отдельную ветку в "Образование и наука"
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>И что ? Я по первому языку фортранщик (был и Алгол, но недолго). И цикл с GOTO назад для меня был привычкой и нормой. Но не помню, чтобы я хоть раз впоследствии такое написал на Паскале или С. Это все очень быстро усваивается.
GOTO -- это цветочки по сравнению с выбором между использованием лямбды или объекта-функтора. Например, в Java я могу пользоваться только реализациями интерфейсов (адаптеры разные, листенеры), как в виде именнованых, так и в виде анонимных классов. Такой подход, к примеру, может один к одному использоваться в Ruby. Но может быть гораздо проще применять лямбды. Либо наоборот, лямбды настолько часто используются, что временами не замечается, когда было бы полезно перейти к объектам.
PD>Больной вопрос. В общем, согласен. Практически же это связано с таким количеством прочих факторов, что их обсуждение займет десятки страниц. Учебный график и его выполнение. Разный уровень студентов. Наличие серьезной задачи. Прочие дисциплины (от них же никто не освободит, а у студентов 30-35 часов в неделю, и только 4 из них — у меня). И т.д. И т.п. PD>То, что ты хочешь — в теории верно и разумно, а на практике порой просто неосуществимо. То , что ты хочешь, можно бы реализовать в виде неких курсов, когда учащиеся готовы на это тратить по 8 часов в неделю на протяжении месяца и более. Увы, это очень далеко от вузовской реальности.
Это я и сам знаю. Знаю, что и просвета не видно. Особенно в ситуации, когда зарплата преподавателей зависит от количества отчитанных часов и заданных лабораторных -- в таких условиях студентов грузят так, что тем и дышать некогда.
>>Вот так же и с Немере -- ну прочитают студентом спецкурс, что останется в сухом остатке, если они на собственной шкуре не усвоят, чем же 20K строк на Немерле лучше (хуже) аналогичного объема на C++? Так что, если уж говорить A (слушать курс по Немерле), то нужно уж и B сказать (дать людям возможность сделать на нем реальный проект).
PD>Роль спецкурса не в этом. Его назначение — ознакомить с тем, что есть, дать направление, а там уж пусть сами вникают в глубину, если им надо. Спецкурс полугодовой у нас — 36 часов, годовой — 72 часа. Никаких серьезных программных продуктов за такое время не делают, а ведь большая часть спецкурса или вообще весь — это лекции.
Я против того, чтобы на каком-то этапе запретить пользоваться языком только из-за того, что он не в мейнстриме.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, ie, Вы писали:
ie>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
ie>Пока нет.
Это почему это нет? У языка как раз есть маленькая классная библиотечка. Плюс огромная классная библиотека дотнета. По-моему, это то что нужно. По крайней мере другие языки даже мечтать об этом не могут.
ie>Так что, делайте выводы
На самом деле с точки зрения фичь все как раз в порядке. Только список этот можно смело отправить в помойку так как он не учитывает важных вещей. 1. Косность мышления людей. 2. Привязанность их к своим привычкам. 3. Простоту вхождения (а тут, книги, IDE, примеры...). 4. Пиар и другую рекламу.
Фактически без поддержки (причем прямой и мощьной, а не в рамках какого-нить Ротора) поддержки мегамонстра вроде MS, IBM или Sun путь к массовому потребителю будет долог и тернист.
Вот только по большому счету это и замечательно. Пока одни будут писать велосипеды на С++ попутно автоматизируя из разработку на Руби, другие будут жрать кактус Явы, а третие Буста, умные люди смогут нехило поднять производительность своего труда в рамках дотнет-проекта используя новый язык.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Путем использования "маргинального" Erlang получено сокращение сроков разработки и увеличение производительности. АХ>>Приложение вполне практическое. Это серьезно?
PD>У меня такое впечатление, что ты меня не хочешь понять. Ладно, доведу до абсурда.
PD>В 2007 году разработан новый язык для не знаю уж чего, который позволяет увеличить быстродействие в 5 раз, а сроки разработки сократить в 10 раз. Это серьезно ?
PD>Ответ : как новое слово ИТ — это серьезно. Как пионерские исследования в этой области и даже пилотные проекты — это серьезно.Как технология — пока нет. До тех пор пока этот язык не будет принят индустрией,
Вот смотри: товарищ привел практический пример когда взасчет использования Эрланга сократились сроки разработка и улучшилась производительность. Причем в реальном проекте (не в теории).
Вот с точки зрения бизнеса, почему бы мне не предпочесть эту технологию, если она позволяет (уже, а не в теории) мне работать более эффективно, а значит увеличить прибыль. Пусть даже она периферийная и для нее может быть меньше библиотек и IDE и они не вылизаны до блеска, но тем не менее достаточно для моих задач.
PD>т.е разработаны для него промышленные (а не кустарные) компиляторы, IDE, ,библиотеки, средства сопряжения с унаследованным ПО и т.д.
Сейчас с этим стало проще. Достаточно написать биндинги для существующих библиотек промышленного качества.
Я уж не говорю, что если вы пишите язык для .NET/JVM, то сразу на халяву имеете библиотеки, run-time и back-end промышленного уровня.
Ну и тот же Linux. Создан вполне кустарно, тем не менее сейчас вполне принят индустрией.
Я считаю, что нужно выбирать язык и средства разработки под задачу.
А не "ну сейчас C# принят индустрией, будем писать на C#".
Причем в 80% случаях C# может быть действительно лучшим выбором. Но есть и еще 20%!
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Вот с точки зрения бизнеса, почему бы мне не предпочесть эту технологию, если она позволяет (уже, а не в теории) мне работать более эффективно, а значит увеличить прибыль. Пусть даже она периферийная и для нее может быть меньше библиотек и IDE и они не вылизаны до блеска, но тем не менее достаточно для моих задач.
Кому именно — тебе ?
Если лично Андрею Хропову — бога ради, ни малейших возражений.
Но Андрей Хропов, руководитель софтверной фирмы с персоналом в 100-200 или более человек и разработками, требующими десятков и более человеко-лет, еще 100 раз подумает, стоит ли это делать. По причинам, о которых я уже писал и с которыми ты согласен, судя по плюсу.
АХ>Ну и тот же Linux. Создан вполне кустарно, тем не менее сейчас вполне принят индустрией.
Хм... Для индустрии персональной вычислительной техники Linux (и Unix вообще) именно типичная периферия. Вот у OS/2 могли быть шансы, если бы иначе сложилось... Могла быть неплохая конкуренция между ней и Windows, и это пошло бы на пользу отрасли, как и всякая конкуренция.
А про Linux — каково соотношение машин с Linux и машин с Windows в бизнесе или на домашних ПК ? Вот то-то и оно. А то, что его любителей среди профессионалов, полупрофессионалов и их знакомых не так уж мало — ничего не значит. Для индустрии.
АХ>Я считаю, что нужно выбирать язык и средства разработки под задачу.
Бога ради. Но см выше про двух А. Хроповых
P.S. Естественно, ничего личного. Речь идет о твоем однофамильце и тезке, не более
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Хм... Для индустрии персональной вычислительной техники Linux (и Unix вообще) именно типичная периферия. Вот у OS/2 могли быть шансы, если бы иначе сложилось... Могла быть неплохая конкуренция между ней и Windows, и это пошло бы на пользу отрасли, как и всякая конкуренция. PD>А про Linux — каково соотношение машин с Linux и машин с Windows в бизнесе или на домашних ПК ? Вот то-то и оно. А то, что его любителей среди профессионалов, полупрофессионалов и их знакомых не так уж мало — ничего не значит. Для индустрии.
Ну посмотри на соотношение в сегменте x86 серверов
А если не только x86 серверов, то вообще
А ведь самый, что ни есть бизнес, требовательный весьма (решения 24x7 и с пятью девятками норовит требовать постоянно )
Кстати, если бы в России за ПО приходилось бы деньги платить, каково бы было соотношение Windows и Linux на домашних ПК?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Ну посмотри на соотношение в сегменте x86 серверов E>А если не только x86 серверов, то вообще E>А ведь самый, что ни есть бизнес, требовательный весьма (решения 24x7 и с пятью девятками норовит требовать постоянно )
Единственный способ обеспечить отказоустойчивость это кластер.
А уж какая ОСЬ стоит на этом кластере дело десятое.
E>Кстати, если бы в России за ПО приходилось бы деньги платить, каково бы было соотношение Windows и Linux на домашних ПК?
Такимже. Подавляющие большинство берет комп для того чтобы играть...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>И поэтому MS-DOS — это серьезно для индустрии того времени. А всякие самопальные ОС того времени — нет. Хотя среди них, возможно, была и лучшая, чем MS-DOS. И если сейчас создать новую ОС, лучшую, чем Windows и даже 100% совместимую с ней , иными словами, переписать Windows более эффективно (а это в принципе можно сделать), то это все равно для индустрии серьезно не будет. Пока Вы не найдете фирму с капиталом, позволяющим им выдвинуть этот продукт на рынок и создать конкуренцию MS.
Уже все есть: и система, и фирма...
Полуось и IBM...
Полуось — гораздо лучше форточек написана...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Вообще-то, в этом контексте "7 из 10" не канает — ибо это список необходимых свойств языка. Языков, которые наберут много баллов из этого списка — далеко не один; языков, которые наберут все — нету. О чем и речь.
Ну-ка, ну-ка, раскажи нам по больше про эти языки? Это не Руби случаем? Он с трудом 3 из 10 наберет. А вещи вроде вывода итпов вообще входят в конфлик с сутью его основ (того же метапрогарммирования).
ЗХ>Имеется в виду то же, что было сказано про GC — их должно быть несколько, для конкуренции и постоянного улучшения.
Конкурируютя алгоритмы. Вот для того же дотнета и Явы есть 2-4 алгоритма для каждой из платформ.
И Ява и дотнет жувут с одной реализацией и являются лидерами. Тут даже обсуждать нечего.
ЗХ> Например, рубисты, как известно, страдают от невеликой скорости интерпретатора — а авторы языка в неофициальных беседах зачастую утверждают, что "и так сойдет" (хотя и работают над эффективной виртуальной машиной). А вот если бы была альтернативная реализация, которая бы работала в 20 раз быстрее
Интересно как? Без того самого вывода типов тут ничего не будет. А с ним не будет Руби.
ЗХ>Здесь, кстати, может всплыть проблема "курицы и яйца" — пока нет хорошего набора библиотек для GUI, сети, БД, и т.п. — не будет большого сообщества; пока не будет сообщества — количество библиотек будет рости медленно.
С этим только у Руби проблемы и есть. В Яве есть Свинг. В дотнете есть ВыньФормс, ГТК и WPF (бывший Avalon). Остальные тут просто вне конкуренции.
ЗХ>Кстати, в Nemerle есть отдельно мета- и отдельно макро- программирование? Или вы в обоих случаях подразумевали одну и ту же фичу?
Мета — это "что делается". Макро — это "как делается". Макросы и есть средвство метапрограммирования. Просто взяли терминалогию из Лиспа.
ЗЫ
Откровенно говоря надо очень постораться чтобы не заметить, что в общем-то на сегодня Немерле не прилично былизок к описанному идеалу, в то время как остальные даже и близко не стояли. Вот только одна проблема. Этот образ идеала не учитывает тучи вещей. Да и рио
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
ie>>Ну дык: E>Дык эта:
Скала и есть второй претенрдент. Но в вопросе метапрограммирования там чистейший голяк. И производительность там конечно не супер. Но если мир Сан ближе чем МС, то выбор неплохой.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, ie, Вы писали:
ie>б) ближе всего к идеалу Ruby, Lisp, OCaml, Erlang ie>в) но у каждого из них свои недостатки. ie>[/q] ie>Только вот Scala и Nemerle бы в его списочек добавил
Ага, а Ruby, Lisp, OCaml, Erlang выкинуть как не удовлетворяющие критериям.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
ie>>В каком-то виде есть. АХ>Ну да через стандартные средства .NET (PInvoke и т.д.).
Далего не только. Кобол, Руби и уж темболее Ява можно просто хостить на том же рантайме. Версии для дотнет и Явы у этих язков есть. Только Руби здесь конечно приплетен в виду собвственных предпочтений. Реально достаточно Кобла и Явы. Причем Кобол тоже под большим вопросом. Но раз уж есе это есть...
ie>>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
ie>>Есть. АХ>Ну пока нет.
Согласен. И это самое грусное.
АХ>MS почему-то предпочитает F# вместо этого использовать (и то же метапрограммирование к нему прикручивать).
Где? F# такой же проект только ведется чуть ближе к МС (в МС Ресерче). Но перспектив у него почти нет.
АХ>Хотя по мне так Nemerle намного лучше. Наверное все от незнания о Nemerle.
Дык F# это пакрически смесь ОКамла с МЛ-ем срощенная с дотнетом. Все МЛ-подобные языки и ОКамл в частности очень своеобразны и практически не вероятно, что они станут популяры. А Немерле спокойно можно рассматривать как развитие C#.
ie>>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
ie>>Пока нет. АХ>А .NET овские библиотеки как же?
+1 плюс еще своя Nemerle.dll.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>А вот откуда взялась "великолепная скорость" я не понял. По-любому не быстрее полностью оптимизирующего компилятора.
Дык он же не фортрановый человек, а рубиновый. А в Руби тормоза — это главная беда. Так что по сравнению с ним любой Джит — это трофейный мессер.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Cyberax, Вы писали:
C>Статический анализ поможет, но не сильно. Дело в том, что на протяжении C>жизни приложения горячие точки могут перемещаться в коде и иногда наша C>оптимизация может стать пессимизацией.
+1
C>Так что за HotSpot — будущее. Кстати, на многопроцессорных системах C>можно анализатор HotSpot запускать на выделенном ядре.
Не-а. Будущее за гибридом время от вермени собирающим информацию о приложении и использующем простои процессора (или работу в бэкграунде) для перестройки оптимизированного кода.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
Думаю ты неверно представляещь себе гипотетическую действительность. Если бы Влад провел бы у тебя курс лекций студентам, скажем, четвертого курса по Неперле, то к концу этого курса твой труп случился бы в автоматическом режиме, так как студенты не простили бы тебе, что столько времени ты компостировал им мозги каким-то ВыньАпы на СиПусПлус.
Кстати, поляки делают очень подлый и хитрый ход. Не надеясь на быструю популяризацию своего языка учат своих студентов именно на Немерле. А надо учитывать, что они вступили в евросоюз. Это значит, что их студенты в ближайшее время начнут пополнять кадры европейских компаний (не в польше же им работать?). А это значит, что ползучая зараза начнет проникать по всюду.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Plague, Вы писали:
P>Думаю, было бы лучше дать возможность сделать проект на любом из изучаемых языков. А кто и что выберет, имхо, его право. Тем более какой-то язык может подойди лучше, банально из-за существующих сторонних библиотек и т.п.
А еще лучше дать сделать проект на разных языках. Тогда выбор будет осознанным. Да и практика той самой командной работы будет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > C>Так что за HotSpot — будущее. Кстати, на многопроцессорных системах > C>можно анализатор HotSpot запускать на выделенном ядре. > Не-а. Будущее за гибридом время от вермени собирающим информацию о > приложении и использующем простои процессора (или работу в бэкграунде) > для перестройки оптимизированного кода.
Ты только что описал механизм работы HotSpot
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Большая часть истории ВТ прошла на моих глазах. И всяких р-р-революционных изменений, претендующих в момент их появленияна то, чтобы ниспровергнуть все и вся , а через 2-3 года прочно забытых, я видел не так уж мало.
Настоящих революций было всего две. И была одна большая эволюция. Но ни одна из этих революций не была инициирована языками программирования. Первая из них была инициирована (утрированно) "тётечками из бухгалтерии", вторая — "секретаршими" и только большая эволюция инициировалась самими девелоперами.
PD>Лично мое отношение ко всем этим нововведениям — скептическое. В конце концов язык — это 1% от того, что должен знать программист. И освоить новый язык — не бог весть какой сложности задача.
Очень спорное утверждение. К тому же опасное.
PD>Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
И совершенно напрасно. Если уж 1% про язык сказано не ради красного словца, то как раз на Немерле и надо учить студентов. В Немерле в одном языке собрано практически всё стоящее, что известно на сегодняшний день. Всё в одном флаконе. Следовательно, студентов можно не парить целым языковым зверинцем, Вот вам деточки Немерле и на его основе ООП, компонентный подход, аспекты, функциональщина, метапрограммирование. Не надо забивать голову разными синтаксисами, можно приводить примеры разных подходов и сравнивать их на одном и том же языке.
Если нам не помогут, то мы тоже никого не пощадим.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Вот с точки зрения бизнеса, почему бы мне не предпочесть эту технологию, если она позволяет (уже, а не в теории) мне работать более эффективно, а значит увеличить прибыль. Пусть даже она периферийная и для нее может быть меньше библиотек и IDE и они не вылизаны до блеска, но тем не менее достаточно для моих задач.
PD>Кому именно — тебе ? PD>Если лично Андрею Хропову — бога ради, ни малейших возражений. PD>Но Андрей Хропов, руководитель софтверной фирмы с персоналом в 100-200 или более человек и разработками, требующими десятков и более человеко-лет, еще 100 раз подумает, стоит ли это делать. По причинам, о которых я уже писал и с которыми ты согласен, судя по плюсу.
где плюс?
Для больших проектов да, желательно быть ближе к мейнстриму, чтобы в случае чего легко находить людей.
С другой стороны, если проект долгий, то можно учить языку с 0, потом может окупиться сокращением сроков.
Ну и вообще у меня нет пиитета перед большими проектами. Там, как правило и задачи типовые, и код не слишком высокого качества, посколько нанимать много квалифиц. спецов — дорого.
Чаще в Индию отдают.
А так любимая тобой индустрия включает в себя и Google и Яндекс, где используют Python, и множество сайтов на Linux+Apache+MySQL+PHP/Perl и конторы где используют AutoCAD с Lisp.
И это реальный бизнес, который приносит доход. Может быть не такой как у MS или Oracle, но тем не менее вполне ощутимо.
АХ>>Ну и тот же Linux. Создан вполне кустарно, тем не менее сейчас вполне принят индустрией.
PD>Хм... Для индустрии персональной вычислительной техники Linux (и Unix вообще) именно типичная периферия.
Для десктопов — да, но еще посмотрим что дальше будет.
Но основные деньги то на серверном рынке.
Вот статистика по сайтам за Сентябрь:
Apache 59699872 сайтов — 61.64 %
Microsoft IIS 30272249 сайтов — 31.26 %
... (другие)
(отсюда)
Как видно сайтов на Апаче больше в 2 раза.
Вот исследование доходов на серверном рынке:
здесь
Как видно доля дохода по Windows серверам — 37%, а по Linux — 12%.
Но разница в 3 раза — не так уж много, это не периферия, тем более что самые крупный игрок — IBM сейчас поддерживает Linux.
И те 33% которые сейчас все еще на Unix вероятнее переползут на Linux.
(да твоя фраза про "Unix вообще" — здесь у них суммарно 45%, что больше 37% Windows )
Ну и надо заметить что на рынке встроенных систем у Linux весьма неплохие позиции.
Тем более, что Playstation 3 будет поставляться с предустановленным Linux.
Я совсем не фанат Linux, но это уже далеко не периферия.
PD> Вот у OS/2 могли быть шансы, если бы иначе сложилось... Могла быть неплохая конкуренция между ней и Windows, и это пошло бы на пользу отрасли, как и всякая конкуренция. PD>А про Linux — каково соотношение машин с Linux и машин с Windows в бизнесе или на домашних ПК ? Вот то-то и оно. А то, что его любителей среди профессионалов, полупрофессионалов и их знакомых не так уж мало — ничего не значит. Для индустрии.
Это справедливо только для России.
И то во-многом по тому, что так как пиратская Windows и софт к ней фактически бесплатен. И к ней (ну и Офису естественно ) многие привыкают.
Хотя с точки зрения бизнеса важнее TCO, и в этом случае все неоднозначно.
С другой стороны, если вы работаете с Windows постоянно приходится обновлять дорогое ПО и Железо (вон чтобы Висту установить нехилая система будет нужна!),
для Linux это не обязательно, поскольку основные стандарты не меняются и многое ПО там бесплатно.
PD>P.S. Естественно, ничего личного. Речь идет о твоем однофамильце и тезке, не более
Здравствуйте, LaptevVV, Вы писали:
LVV>Полуось — гораздо лучше форточек написана...
Не уверен. Да, архитектура у Win 9x была плоха.
А вот Win NT-XP-2003 куда лучше.
Бывшие разработчики из DEC разрабатывали.
Здравствуйте, registered anonymous, Вы писали:
>>Темные века программирования RA>че топик-то такой мрачный? (или поэтический) RA>где темнота, где века?
Или подразумевается, что тайной, покрытой мраком на века, будет концепция самого крутого в мире языка программирования?
VD>Кстати, поляки делают очень подлый и хитрый ход. Не надеясь на быструю популяризацию своего языка учат своих студентов именно на Немерле. А надо учитывать, что они вступили в евросоюз. Это значит, что их студенты в ближайшее время начнут пополнять кадры европейских компаний (не в польше же им работать?). А это значит, что ползучая зараза начнет проникать по всюду.
Здравствуйте, IT, Вы писали:
PD>>Так что если бы VladD2 (пофантазируем) захотел бы прочитать спецкурс по Немерле для студентов моего университета, я был бы только за и сделал бы все от меня зависящее, чтобы он состоялся ( Правда, не уверен, что его лично можно к студентам подпускать ). Но если бы кто-то предложил вместо существующей учебной практики на Паскале, С++, C# поставить Немерле — только через мой труп.
IT>И совершенно напрасно. Если уж 1% про язык сказано не ради красного словца, то как раз на Немерле и надо учить студентов. В Немерле в одном языке собрано практически всё стоящее, что известно на сегодняшний день. Всё в одном флаконе. Следовательно, студентов можно не парить целым языковым зверинцем, Вот вам деточки Немерле и на его основе ООП, компонентный подход, аспекты, функциональщина, метапрограммирование. Не надо забивать голову разными синтаксисами, можно приводить примеры разных подходов и сравнивать их на одном и том же языке.
Мнение, конечно, имеет право на существование...
Но вы очень уж "далеки от народа"... Как препод могу совершенно определенно сказать. что первый язык выучивается "наизусть"... Практически студентам-первачкам требуется директивным образом давать указания: вот это, деточки, делается таким способом, а это — вот таким...
Это потом уже, курсе на третьем, студент начинает осознанно пользоваться языком... А до того — большинство учит как иностранный язык... Тем более, что у нас в универ очень многие приходят фактически за профессией программера, а не за высшим образованием как таковым. Хотя небольшая группа очень толковых ребят у нас есть почти всегда... Вот им немерля — очень интересен... А большинству — не-а...
Последнее время с все больше склоняюсь к мысли, что первачкам нужно начинать на додиезе... Благо — техника стала позволять, и дотнет лицензионный... А потом С++... Паскаль — только как чисто практическую технологию Дельфи...
Немерлю можно давать тоже, но курсе на третьем или даже 4-м -как достижение в области программерства...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Андрей Хропов, Вы писали:
ie>>* Тем не менее, хорошая поддержка компаниями важна. Языку нужны деньги, чтобы развиваться.
ie>>Есть. АХ>Ну пока нет. MS почему-то предпочитает F# вместо этого использовать (и то же метапрограммирование к нему прикручивать).
Можно подробней? Про quatations видал, даже баловался с ними маленько, но про что-то аля Немерл-макросы
АХ>Хотя по мне так Nemerle намного лучше. Наверное все от незнания о Nemerle.
+1
ie>>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности.
ie>>Пока нет. АХ>А .NET овские библиотеки как же?
С одной стороны согласен, а с другой, постоянно чего-то нехватает и пришодится искать на sourceforge'ах
Здравствуйте, Зверёк Харьковский, Вы писали:
ie>>* Языку нужны, хорошие, маленькие и очень ортогональные библиотеки. Библиотеки поставляемые вместе с языком должны быть прекрасны, невелики и тем не менее содержать большую часть необходимой функциональности. ie>>Пока нет. ЗХ>Здесь, кстати, может всплыть проблема "курицы и яйца" — пока нет хорошего набора библиотек для GUI, сети, БД, и т.п. — не будет большого сообщества; пока не будет сообщества — количество библиотек будет рости медленно.
Так одно из вышеприведенных условий — хорошее финансирование. Кто мешает при хорошем финансировании создать большой базовый набор для старта?
VladD2 wrote: > C>Ты только что описал механизм работы HotSpot > Описать механизм торговой марки вообще нельзя.
HotSpot compiler — это уже скорее термин. Даже сама солнцевская братва
употребляет его как термин, а не как HotSpot (tm).
> Но пока что по этому принципу не работает ни один JIT. Они все или > полностью живут в рантайме или наоборот в компайлтайме.
Явавский HotSpot так уже много лет работает — в фоне (а в 1.6 еще и по
возможности на другом процессоре) собирает статистику и оптимизирует код
по этой статистике. Оптимизированный код, при желании, может
кэшироваться в одном большом изображении (что используется для ускорения
запуска JVM).
Здравствуйте, LaptevVV, Вы писали:
LVV>Немерлю можно давать тоже, но курсе на третьем или даже 4-м -как достижение в области программерства...
А в чем, на Ваш взгляд (как преподавателя), заключается это достижение?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, LaptevVV, Вы писали:
LVV>Немерлю можно давать тоже, но курсе на третьем или даже 4-м -как достижение в области программерства...
На самом деле Немерле можно давать по началу как подмножество Шарпа. Так что если считаете, что можно начинать с Шарпа, то можно начинать и с Немерла. Разницы почти не будет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AVC, Вы писали:
LVV>>Немерлю можно давать тоже, но курсе на третьем или даже 4-м -как достижение в области программерства... AVC>А в чем, на Ваш взгляд (как преподавателя), заключается это достижение?
В непохожести на Оберон.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, AVC, Вы писали:
LVV>>>Немерлю можно давать тоже, но курсе на третьем или даже 4-м -как достижение в области программерства... AVC>>А в чем, на Ваш взгляд (как преподавателя), заключается это достижение?
VD>В непохожести на Оберон.
Ну, видимо, это уже само по себе большое достижение.
Так что — достойно, достойно.
Правда, я слыхал, что Немерле живет пока только под дотнетом (правильно?), а там, если посмотреть, есть-таки что-то общее с Обероном, тут никуда не денешься.
А если посмотреть на синтаксические изыски (макросы, то да се), то, ИМХО, трудно не признать брата Васю — реинкарнацию старой идеи расширяемых языков.
Я о похожих изысках еще в детской книжке Вирта "Алгоритмы + структуры данных = программы" читал.
Пока что впечатление такое, что нашли еще один способ реализовать старую и сомнительную, в принципе, идею.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Ну, видимо, это уже само по себе большое достижение. AVC>Так что — достойно, достойно. AVC>Правда, я слыхал, что Немерле живет пока только под дотнетом (правильно?), а там, если посмотреть, есть-таки что-то общее с Обероном, тут никуда не денешься.
Кроме ЖЦ общего там не много. Хотя Немерле неплохо живет и под Моно.
AVC>А если посмотреть на синтаксические изыски (макросы, то да се), то, ИМХО, трудно не признать брата Васю — реинкарнацию старой идеи расширяемых языков.
Это и признавать нет смысла. Это факт. Разработчики об этом говорят на первой же странице сайта. Только это еще одна непохожесть на Оберон.
AVC>Я о похожих изысках еще в детской книжке Вирта "Алгоритмы + структуры данных = программы" читал. AVC>Пока что впечатление такое, что нашли еще один способ реализовать старую и сомнительную, в принципе, идею.
Лично у меня сомнения только в одном. В том что Вирт прав в своих рассуждениях.
Мноие его мысле интересны и правильны, но его кругозор явно ограничен, в ледствии чего мнение предвзято.
В принципе у меня была идея предложить ему развернутое интервью (переписку мы с ним уже Вели, так что это в принципе возможно). Только нужно хорошенько сформулировать вопросы и качественно перевести их на английский чтобы он не начал отвечать на собственные вопросы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVC>>Правда, я слыхал, что Немерле живет пока только под дотнетом (правильно?), а там, если посмотреть, есть-таки что-то общее с Обероном, тут никуда не денешься.
VD>Кроме ЖЦ общего там не много. Хотя Немерле неплохо живет и под Моно.
Как мне кажется, таких общих черт может быть еще несколько, например:
динамическая модульность и расширяемость программной системы (в этом была цель дизайна)
type-safety с контролем типов через границы модулей (а это, вкупе со сборкой мусора, главный инструмент достижения цели)
аплеты (последнее больше к Java; появились в Обероне в начале 90-х при портировании Оберона на MacOS, "сидевшей" на нескольких аппаратных платформах)
AVC>>Я о похожих изысках еще в детской книжке Вирта "Алгоритмы + структуры данных = программы" читал. AVC>>Пока что впечатление такое, что нашли еще один способ реализовать старую и сомнительную, в принципе, идею.
VD>Лично у меня сомнения только в одном. В том что Вирт прав в своих рассуждениях. VD>Мноие его мысле интересны и правильны, но его кругозор явно ограничен, в ледствии чего мнение предвзято.
VD>В принципе у меня была идея предложить ему развернутое интервью (переписку мы с ним уже Вели, так что это в принципе возможно). Только нужно хорошенько сформулировать вопросы и качественно перевести их на английский чтобы он не начал отвечать на собственные вопросы.
Это очень хорошая идея.
В свое время у меня были вопросы к Вирту (как раз по поводу невключения некоторых конструкций в язык).
После визита Вирта в Россию осенью 2005 года было предложено сформулировать вопросы, чтобы Вирт впоследствии на них ответил (видимо, письменно).
Я отправил свой вопрос.
Но то ли это интервью не состоялось, то ли мой вопрос затерялся среди сотен других, ответа я, к сожалению, не получил.
Меня, собственно, интересовал вопрос о том, почему не получила развития идея Роу и Шиперского о "облегченном" полиморфизме для Оберона, предложенная ими в статье http://www.fit.qut.edu.au/~szypersk/pub/JMLC97.ps.gz
в 90-х гг.
Если все-таки дело дойдет до интервью, то, если будет возможность, спроси его, пожалуйста.
Меня интересует: дело в каких-то технических трудностях, или это принципиальная позиция (мол, ну его нафиг, этот параметрический полиморфизм)?
Ведь даже в Зонноне (а это уже далеко не такой простой язык, как оригинальный Оберон) эта идея не прижилась.
Собственно, Оберону, ИМХО, не хватает только параметрического полиморфизма для (моего ) полного счастья, но его-то как раз там и нет (не считая отдельных реализаций)...
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
AVC>Как мне кажется, таких общих черт может быть еще несколько, например: AVC>
AVC> динамическая модульность и расширяемость программной системы (в этом была цель дизайна) AVC> type-safety с контролем типов через границы модулей (а это, вкупе со сборкой мусора, главный инструмент достижения цели) AVC> аплеты (последнее больше к Java; появились в Обероне в начале 90-х при портировании Оберона на MacOS, "сидевшей" на нескольких аппаратных платформах) AVC>
Такие общие черты можно найти в большинстве современных языков. Кстати, я не сказал бы, что Оберон типобезопасный. Я уже слышал как минимум вариант с возвратом ссылки на локальные данные извне метода. Это противоречит приципам типобезопасности.
Аплетов же в дотнете не было от родясь. Так что модульность, а точнее компонентность главная общая особенность. Не много, по-моему.
VD>>В принципе у меня была идея предложить ему развернутое интервью (переписку мы с ним уже Вели, так что это в принципе возможно). Только нужно хорошенько сформулировать вопросы и качественно перевести их на английский чтобы он не начал отвечать на собственные вопросы.
AVC>Если все-таки дело дойдет до интервью, то, если будет возможность, спроси его, пожалуйста.
Можно попробовать набрасать список вопросов и потом мы попробуем связаться с ним и задать их ему, так сказать от всего русского комьюнити.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVC>>Как мне кажется, таких общих черт может быть еще несколько, например: AVC>>
AVC>> динамическая модульность и расширяемость программной системы (в этом была цель дизайна) AVC>> type-safety с контролем типов через границы модулей (а это, вкупе со сборкой мусора, главный инструмент достижения цели) AVC>> аплеты (последнее больше к Java; появились в Обероне в начале 90-х при портировании Оберона на MacOS, "сидевшей" на нескольких аппаратных платформах) AVC>>
VD>Такие общие черты можно найти в большинстве современных языков. Кстати, я не сказал бы, что Оберон типобезопасный. Я уже слышал как минимум вариант с возвратом ссылки на локальные данные извне метода. Это противоречит приципам типобезопасности.
Несомненно, противоречит.
Именно поэтому в Обероне нет такой замечательной возможности.
Я догадываюсь, что ты имеешь в виду мое короткое препирательство с FR и Курилкой на тему (псевдо)замыканий в Паскале.
Я там в посте http://www.rsdn.ru/Forum/Message.aspx?mid=2133481&only=1
как раз распространялся на тему, почему (псевдо)замыкания были в старом Паскале, и почему их совсем нет в Обероне.
Предположительно, причина в том, что в Обероне есть процедурные переменные (указатели на функции в терминологии Си), которых не было в Паскале.
Я предположил, что Оберон запрещает присваивать локальную процедуру процедурной переменной именно по причине небезопасности такой операции.
Т.о. в Обероне замыканий нет, что, ИМХО, компенсируется наличием в нем объектов (которых, наоборот, не было в Паскале).
VD>Аплетов же в дотнете не было от родясь. Так что модульность, а точнее компонентность главная общая особенность. Не много, по-моему.
По моему, ты прав: не просто модульность, а именно компонентность объединяет (как пуповина) дотнет с Обероном.
Из компонентности логически вытекают частные следствия, такие как необходимость типо-безопасности и сборки мусора.
Если ты считаешь, что это "немного", то мне интересно, что же для тебя "много"?
VD>Можно попробовать набрасать список вопросов и потом мы попробуем связаться с ним и задать их ему, так сказать от всего русского комьюнити.
Возможно, имеет смысл организовать ветку "Какой вопрос ты бы хотел задать Никлаусу Вирту".
Затем отобрать в пределах десятка лучших (наиболее принципиальных) вопросов и попросить его ответить.
(Думаю, что полноценно ответить на большее их количество уже довольно трудно.)
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, eao197, Вы писали:
E>Хотя бы приблизительную дату можешь назвать?
первым примером применения КОП на практике можно считать, пожалуй, использование пайпов для общения между независимыми модулями в юниксе. Дату, я надеюсь, ты и сам сможешь представить.
Здравствуйте, Дарней, Вы писали:
E>>Хотя бы приблизительную дату можешь назвать?
Д>первым примером применения КОП на практике можно считать, пожалуй, использование пайпов для общения между независимыми модулями в юниксе. Дату, я надеюсь, ты и сам сможешь представить.
Т.е., как обычно в твоем случае, конкретного ответа мы не получили.
По отношению к КОП, я полагаю, приплетать пайпы не правомерно. Поскольку, как отмечалось здесь, для поддержки компонентности требуется поддержка сборки мусора в языке. Применительно к пайпам и независимым модулям такого требования вообще не стоит.
Но сделаем еще один шаг -- может быть ты перечислишь хотя бы несколько первых языков, получивших серьезное распространение (хотя бы на уровне Modula-2, Eiffel, Ada или Oberon), которые непосредственно поддерживали КОП. Только дай, пожалуйста, четкий ответ.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, WolfHound, Вы писали:
E>>Кстати, если бы в России за ПО приходилось бы деньги платить, каково бы было соотношение Windows и Linux на домашних ПК? WH>Такимже. Подавляющие большинство берет комп для того чтобы играть...
это конечно больше из СВ, но "подовляюее большинство, берущее комп чтобы играть" элементарно разорилось бы, если бы "за ПО приходилось бы платить" .
Здравствуйте, Дарней, Вы писали:
Д>КОП появился задолго до оберона. Так что находить здесь связь .net именно с обероном — это явно предвзятая идея.
Д>первым примером применения КОП на практике можно считать, пожалуй, использование пайпов для общения между независимыми модулями в юниксе. Дату, я надеюсь, ты и сам сможешь представить.
"Я так думаю..." (с) "Мимино"
Найди мне, пожалуйста, хоть один источник, относящий пайпы к КОП.
Возьмем, к примеру, статью из Википедии о компонентности: http://en.wikipedia.org/wiki/Software_componentry
Там раздел Pipes and Filters четко отделен от Component-oriented programming.
А что относится к Component-oriented programming?
Вот приведенный там список:
Visual Basic Extensions, OCX/ActiveX/COM and DCOM from Microsoft
XPCOM from Mozilla Foundation
VCL and CLX from Borland and similar free LCL library.
Enterprise Java Beans from Sun Microsystems
UNO from the OpenOffice.org office suite
Eiffel programming language
Oberon programming language and BlackBox
Z++ programming language
Bundles as defined by the OSGi Service Platform
NexWave Software Infrastructure (NSI)
The System.ComponentModel namespace in Microsoft .NET
И Оберон, и дотнет есть в этом списке.
Если учесть возраст элементов в списке, то, кажется, остаются только Эйфель и Оберон.
Как минимум, уже очевидно, что КОП не "появился задолго до Оберона".
Эйфель — интересный (но большой и сложный) язык, мейеровский принцип "программирования по контракту" — очень хорошая идея.
Но Оберон — не только язык. С 1986 по 1989 был создан не только (и не столько) типо-безопасный язык со сборкой мусора, и даже не только целая ОС, основанная на динамически загружаемых модулях, а именно определенная компонентная технология, которая, с минимальными поправками, и стала впоследствии называться КОП.
Не удивительно, что одну из самых (если не самую) известных книг по КОП написал "оберонщик" Шиперски; не удивительно и то, что впоследствии он был одним из архитекторов .NET.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[offtopic]: О покупательной способности населения
Здравствуйте, _rasta, Вы писали:
_>Здравствуйте, WolfHound, Вы писали:
E>>>Кстати, если бы в России за ПО приходилось бы деньги платить, каково бы было соотношение Windows и Linux на домашних ПК? WH>>Такимже. Подавляющие большинство берет комп для того чтобы играть...
_>это конечно больше из СВ, но "подовляюее большинство, берущее комп чтобы играть" элементарно разорилось бы, если бы "за ПО приходилось бы платить" .
Не думаю, сейчас доходы населения растут, все джипы покупают, так что и на игры деньги уж наскребут как-нибудь.
Ну и приставки же покупают, а там игры в основном не пиратские.
In contrast to Object-Oriented programming languages, Oberon-2 belongs to the Component-Oriented family. Programs are written as a collection of related service modules, each of which provides a number of publically accessible procedures and variables. Classes are represented by data records, which are interconnected by pointer variables (see example above). The declaring module may provide type-bound procedures (see example above) so that a given name refers to different procedures according to the type of the record.
Интересно, какой другой современный Оберону язык можно было бы отнести к "компонентно-ориентированному семейству"?
Видимо, отличие от компонентно-ориентированного подхода от других менее бросается в глаза, не так выделяется синтаксически, по сравнению с ФЯ или Смоллтоком.
Поэтому самая настоящая компонентная "революция" Оберона прошла в свое почти незаметно, пока те же самые идеи не стала продвигать Sun.
Приписав все новаторство себе, разумеется.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re: Re[offtopic]: О покупательной способности населения
Здравствуйте, Андрей Хропов, Вы писали:
_>>это конечно больше из СВ, но "подовляюее большинство, берущее комп чтобы играть" элементарно разорилось бы, если бы "за ПО приходилось бы платить" . АХ>Не думаю, сейчас доходы населения растут,
доходы населения где? я тут по городам башкирии покатался, в коммандировки. беда...
послушал рассказы друзей, которые катались за пределы, тоже не фонтан.
АХ>все джипы покупают, так что и на игры деньги уж наскребут как-нибудь.
опять же квартиры, пусть в той же москве, соотносятся с ростом зп, да? или пусть цены на бензин для джипов...
АХ>Ну и приставки же покупают, а там игры в основном не пиратские.
чесслово давно не встречал приставок. и в магазинах не видел.
зы. в "не в москве" были? если нет, то рекомендую взглянуть что там и как.
Компонентно-ориентированное программирование было предложено Hиклаусом
Виртом году эдак в 1987.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
AVC wrote: > Компонентно-ориентированное программирование было предложено Hиклаусом > Виртом году эдак в 1987.
The idea that software should be componentized, built from prefabricated
components, was first published in Douglas McIlroy's address at the NATO
conference on software engineering in Garmisch, Germany, 1968 titled
Mass Produced Software Components. This conference set out to
counter the so-called software crisis. His subsequent inclusion of pipes
and filters into the Unix operating system was the first implementation
of an infrastructure for this idea.
The modern concept of a software component was largely defined by
Brad Cox of Stepstone, who called them Software ICs and set out to
create an infrastructure and market for these components by inventing
the Objective-C programming language. (He summarizes this view in
his book Object-Oriented Programming — An Evolutionary Approach 1986.)
Так что идеи были задолго до Оберона. А еще был язык Cedar, с которого
брали пример Страуструп для С++ и Вирт для Модула-2
Здравствуйте, Cyberax, Вы писали:
>> Компонентно-ориентированное программирование было предложено Hиклаусом >> Виртом году эдак в 1987. C>
C>The idea that software should be componentized, built from prefabricated
C>components, was first published in Douglas McIlroy's address at the NATO
C>conference on software engineering in Garmisch, Germany, 1968 titled
C>Mass Produced Software Components. This conference set out to
C>counter the so-called software crisis. His subsequent inclusion of pipes
C>and filters into the Unix operating system was the first implementation
C>of an infrastructure for this idea.
C>The modern concept of a software component was largely defined by
C>Brad Cox of Stepstone, who called them Software ICs and set out to
C>create an infrastructure and market for these components by inventing
C>the Objective-C programming language. (He summarizes this view in
C>his book Object-Oriented Programming — An Evolutionary Approach 1986.)
C>Так что идеи были задолго до Оберона. А еще был язык Cedar, с которого C>брали пример Страуструп для С++ и Вирт для Модула-2
Все это было.
И у МакИлроя (собственно создавшего штамп "кризис программного обеспечения"), и у Кокса были замечательные идеи.
Идеи первого привели к созданию пайпов и фильтров.
Второй полагал, что объекты (сами по себе) и суть те самые ICs.
Но совсем не пайпы составляют основу компонентного подхода, роднящего дотнет и Оберон.
Идея Бреда Кокса об объектах как аналогах интегральных схем (он воплощал ее виде Си со смоллтоковскими вставками) не удалась.
Так что это шаги в правильном направлении, но совсем не идентичные КОП.
КОП стало впервые возможным только в сообществе, занимающемся модульными языками.
Тот же Шиперски написал не одну статью, разжевывая, почему недостаточно одних классов, а нужны еще и модули.
Модули языка Модула-2 уже в 1970-е были близки к компонентам (легко видеть, насколько Оберон близок Модуле-2).
Чтобы создать динамическую расширяемую модульную систему, не хватало типо-безопасности и сборки мусора.
Из языка Модула-2 были устранены небезопасные (в особенности, вариантные записи) и просто необязательные конструкции, введено расширение типов (практически ООП).
Были введены поддержка динамической модульности, дескрипторы типов и сборка мусора.
Сборка мусора была введена не из пустопорожнего подражания ФЯ, а в связи с другой мотивировкой (если состав модулей заранее неизвестен и переменчив, мы не можем обеспечить корректность "ручного" освобождения памяти).
Вот эта совокупность технических решений и составляет сейчас ядро КОП.
Я и имею в виду конкретные технические решения, а не что-то "отдаленно похожее", и уж тем более не простое созвучие (сказал кто-то "компонент", все — он "автор идеи").
Патенты выдают на реальные изобретения, а не простые благие пожелания.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Т.о. в Обероне замыканий нет, что, ИМХО, компенсируется наличием в нем объектов (которых, наоборот, не было в Паскале).
ОК, но это еще одно различие, так как в C# (дотнет не язык чтобы обладать языковыми конструкциями) замыкания таки есть. И это очень удобно во многих случаях.
AVC>По моему, ты прав: не просто модульность, а именно компонентность объединяет (как пуповина) дотнет с Обероном.
Ага.
AVC>Из компонентности логически вытекают частные следствия, такие как необходимость типо-безопасности и сборки мусора.
Не-а. Не вытикают. Примеры? Их есть у меня... COM! И этим все сказано. В нем нет ни сборки мусора, ни безопасности. Но он является одной из первый промышленных компонентных систем.
AVC>Если ты считаешь, что это "немного", то мне интересно, что же для тебя "много"?
Откровенно говоря это действительно не много. Компонетность конечно роднит дотнет с Обероном, но разница тут слишком велика. Иначе Оберон тогда должен породниться и с КОМ-мом. Что ты вряд ли захочешь принять.
VD>>Можно попробовать набрасать список вопросов и потом мы попробуем связаться с ним и задать их ему, так сказать от всего русского комьюнити.
AVC>Возможно, имеет смысл организовать ветку "Какой вопрос ты бы хотел задать Никлаусу Вирту".
Возможно. Но боюсь, что в этом форуме это превраится в очередной флэйм.
AVC>Затем отобрать в пределах десятка лучших (наиболее принципиальных) вопросов и попросить его ответить.
Мне кажется вопросы должны иметь общую линию. Иначе это будет очерденое пустословие с общими и мало что говорящими ответами. Я бы даже хотел видеть дисскусию в какмо-то смысле. Чтобы на ответ "ля-ля-ля" можно было бы уточнить "а почему собственно?".
AVC>(Думаю, что полноценно ответить на большее их количество уже довольно трудно.)
Именно потому и хочется чтобы вопросы имели общую канву.
Например, меня больше интересует что он думает о построении языка как малой базы и расширение его за счет универсальных средств. Но все это слишком абстрактно. Вопросы должны быть четкими, короткими и конкретными. Иначе будет очередная отмазка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Дарней, Вы писали:
Д>первым примером применения КОП на практике можно считать, пожалуй, использование пайпов для общения между независимыми модулями в юниксе. Дату, я надеюсь, ты и сам сможешь представить.
Здравствуйте, AVC, Вы писали:
AVC>Но совсем не пайпы составляют основу компонентного подхода, роднящего дотнет и Оберон.
Пайпы конечно тут не причем. Как в прочем и Вирт. КОП придумали до него и в дотнет он попал конечно не из Оберона. Как минимум у МС был VB (1991 год если не ошибаюсь) который был куплен в виде прототипа.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
, что эта ссылка как раз подтверждает точку зрения о приоритете Оберона.
Обрати внимание, что это та же самая ссылка.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
, что эта ссылка > как раз *подтверждает* точку зрения о приоритете Оберона. > Обрати внимание, что это та же самая ссылка.
До Оберона был еще, как минимум, Objective C. Тоже вполне себе
компонентыный. А еще был Cedar Mesa, в котором была одна из первых
реализаций компонентного пользовательского интерфейса.
Так что Оберон — это один из первых представителей компонентных
языков, но уж точное не самый первый.
, что эта ссылка >> как раз *подтверждает* точку зрения о приоритете Оберона. >> Обрати внимание, что это та же самая ссылка. C>До Оберона был еще, как минимум, Objective C. Тоже вполне себе C>компонентыный. А еще был Cedar Mesa, в котором была одна из первых C>реализаций компонентного пользовательского интерфейса.
C>Так что Оберон — это один из первых представителей компонентных C>языков, но уж точное не самый первый.
Насколько я понимаю, Objective C был языком объектно-ориентированного, но не компонентного программирования.
Заявленная Коксом цель (программные аналоги интегральных схем) замечательна (впервые я прочитал о Коксе в "детской" книжке Тимоти Бадда "Introduction to Object-Oriented Programming" и пришел в полный восторг от одной только идеи); единственно, ИМХО, он переоценил возможности ООП как такового.
Вместе с тем, сама идея некой родственности программного обеспечения и аппаратуры до сих пор мне близка, что можно даже подтвердить (бессознательно!) выбираемой терминологией.
Например, применительно к Оберону, я предпочитаю выражение "программная шина" (software bus) более официальному "generic message interface".
Отчасти это потому, что когда-то я читал о Бреде Коксе, только сейчас дошло, честное слово!
Что касается языков, разработанных в исследовательской лаборатории Xerox, то тут отдельная песня.
Известно, что Mesa не только повлияла на виртовскую Модулу-2, но и рассматривалась как возможный вариант "Железного Человека".
Т.е. "доработанная" Меза могла быть на месте Ады!
В итоге же, Адой стал вариант, разработанный прежними создателями компилятора Симулы-67 (вдруг, кто не знает об этой интересной связке?).
Но Меза определенно еще не была языком компонентно-ориентированного программирования, не созрело тогда еще все для этого.
Cedar (я так понимаю — потомок или даже вариант языка Mesa) действительно повлиял на проект Оберон (совместно с Модулой-2, Адой и Смоллтоком).
Но каково конкретно это влияние, мне сказать трудно, информации о языке у меня что-то маловато.
Если я узнаю, что техническое решение, предложенное Обероном, заимствовано им из Седара, я буду считать Седар первым языком КОП.
Но это вряд ли.
Вернувшись из Ксерокса, Вирт прекрасно знал о Седаре, но собирался использовать для проекта Оберон Модулу-2 (что, в принципе, достаточно естественно ).
И только в ходе работы, убедившись, что Модула-2 не вполне подходит для выбранной цели, Вирт преобразовал Модулу-2 в язык Оберон.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Хоар
Re[2]: Re[offtopic]: О покупательной способности населения
Здравствуйте, _rasta, Вы писали:
_>зы. в "не в москве" были? если нет, то рекомендую взглянуть что там и как.
Нормально оно "не в москве". Народ со страшной силой покупает игры, в том числе и онлайн-подписку, и гамится до потери жены, работы, и половины живого веса.
Вообще народ в России ничем не отличается от народа где-то еще: люди вполне готовы платить за то, что им действительно нужно.
Просто не нужно пытаться делать цены такими, чтобы отбить все затраты на разработку десятком продаж.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, eao197, Вы писали:
E>Т.е., как обычно в твоем случае, конкретного ответа мы не получили.
а какой именно конкретики тебе не хватает?
E>По отношению к КОП, я полагаю, приплетать пайпы не правомерно. Поскольку, как отмечалось здесь, для поддержки компонентности требуется поддержка сборки мусора в языке. Применительно к пайпам и независимым модулям такого требования вообще не стоит.
Создание программы из компонент и сборка мусора — вещи абсолютно перпендикулярные. Хотя использование сборки мусора, конечно, упрощает КОП.
E>Но сделаем еще один шаг -- может быть ты перечислишь хотя бы несколько первых языков, получивших серьезное распространение (хотя бы на уровне Modula-2, Eiffel, Ada или Oberon), которые непосредственно поддерживали КОП. Только дай, пожалуйста, четкий ответ.
А мне без разницы, есть поддерка КОП непосредственно в языке или нет. Если она есть, это просто немного упрощает жизнь.
Здравствуйте, AVC, Вы писали:
AVC>Найди мне, пожалуйста, хоть один источник, относящий пайпы к КОП.
Вот, оттуда же.
The idea that software should be componentized, built from prefabricated components, was first published in Douglas McIlroy's address at the NATO conference on software engineering in Garmisch, Germany, 1968 titled Mass Produced Software Components. This conference set out to counter the so-called software crisis. His subsequent inclusion of pipes and filters into the Unix operating system was the first implementation of an infrastructure for this idea.
И чертовски интересно, почему "первому КОП языку" в этой статье отведено такое крайне скромное место?
Здравствуйте, Дарней, Вы писали:
E>>Т.е., как обычно в твоем случае, конкретного ответа мы не получили.
Д>а какой именно конкретики тебе не хватает?
Паролей, явок, имен, дат.
Ссылки на МакИлроя и каналы в Unix-е не прокатывают:
* во-первых, это только идея. Как известно, от любой идеи до практического применения проходит изрядное время;
* во-вторых, каналы были только первым шагом к созданию инфраструктуры поддержки КОП. До реального КОП было еще как до Луны;
* в-третьих, каналы позволяют организовывать комплексы программ, в которых отдельные самостоятельные программы играют роль компонентов. Современный же КОП, если не ошибаюсь, подразумевает построение одной программы из разных компонент (т.е. компоненты (или их части, стабы) оказываются в одном адресном пространстве).
E>>По отношению к КОП, я полагаю, приплетать пайпы не правомерно. Поскольку, как отмечалось здесь, для поддержки компонентности требуется поддержка сборки мусора в языке. Применительно к пайпам и независимым модулям такого требования вообще не стоит.
Д>Создание программы из компонент и сборка мусора — вещи абсолютно перпендикулярные. Хотя использование сборки мусора, конечно, упрощает КОП.
Ну да, это как объектно-ориентированное программирование на C -- через структуры, которые содержат указатели на функции.
E>>Но сделаем еще один шаг -- может быть ты перечислишь хотя бы несколько первых языков, получивших серьезное распространение (хотя бы на уровне Modula-2, Eiffel, Ada или Oberon), которые непосредственно поддерживали КОП. Только дай, пожалуйста, четкий ответ.
Д>А мне без разницы, есть поддерка КОП непосредственно в языке или нет. Если она есть, это просто немного упрощает жизнь.
А вот разработчикам Oberon и C# было не без разницы.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Ссылки на МакИлроя и каналы в Unix-е не прокатывают: E>* во-первых, это только идея. Как известно, от любой идеи до практического применения проходит изрядное время; E>* во-вторых, каналы были только первым шагом к созданию инфраструктуры поддержки КОП. До реального КОП было еще как до Луны; E>* в-третьих, каналы позволяют организовывать комплексы программ, в которых отдельные самостоятельные программы играют роль компонентов. Современный же КОП, если не ошибаюсь, подразумевает построение одной программы из разных компонент (т.е. компоненты (или их части, стабы) оказываются в одном адресном пространстве).
Оно которое прекрасно решало задачи по составлению комплексов из рантайм-компонентов, и прекрасно решает их сейчас. Юниксоиды до сих пор не очень жалуют ООП вообще и "реальный КОП", как ты его определил — в частности. Почитай Рэймонда, к примеру.
Так что не надо тут устраивать разделение на "чиста реальное" и "не чиста реальное" КОП
Компонентное? Да, оно таки компонентное, и обратное ты не докажешь.
Ну а если ты вдруг докажешь, что это не программирование, то я просто съем свою шляпу.
Здравствуйте, Дарней, Вы писали:
Д>Оно которое прекрасно решало задачи по составлению комплексов из рантайм-компонентов, и прекрасно решает их сейчас. Юниксоиды до сих пор не очень жалуют ООП вообще и "реальный КОП", как ты его определил — в частности. Почитай Рэймонда, к примеру.
Нашел кому посоветовать Реймонда почитать, браво
Д>Так что не надо тут устраивать разделение на "чиста реальное" и "не чиста реальное" КОП Д>Компонентное? Да, оно таки компонентное, и обратное ты не докажешь.
Тогда C++, да что C++, ассемблер -- это язык компонентного-ориентированного программирования.
Д>Ну а если ты вдруг докажешь, что это не программирование, то я просто съем свою шляпу.
Шутку оценил, не смотря на ее плоскоту.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Тогда C++, да что C++, ассемблер -- это язык компонентного-ориентированного программирования.
С++ — вполне. COM в нем вполне благополучно используют, несмотря на полное отсутствие сборщика мусора. На асме наверно тоже можно, но я бы не стал
наличие прямой поддержки в языке — это конечно плюс, но никакой революции здесь нет. Всего лишь мааленький такой шажок в эволюции, да и то не в ту сторону, в случае оберона. Археоптерикс — он тоже, в принципе, летал. Но первой птицей его все равно не называют.
E>Шутку оценил, не смотря на ее плоскоту.
зато, если сложить две плоские шутки, получится одна тонкая.
Здравствуйте, Дарней, Вы писали:
AVC>>Найди мне, пожалуйста, хоть один источник, относящий пайпы к КОП.
Д>Вот, оттуда же. Д>
Д>The idea that software should be componentized, built from prefabricated components, was first published in Douglas McIlroy's address at the NATO conference on software engineering in Garmisch, Germany, 1968 titled Mass Produced Software Components. This conference set out to counter the so-called software crisis. His subsequent inclusion of pipes and filters into the Unix operating system was the first implementation of an infrastructure for this idea.
Однако, и этот источник не относит пайпы к КОП.
Д>И чертовски интересно, почему "первому КОП языку" в этой статье отведено такое крайне скромное место?
Тем не менее, он там есть, и ничего более раннего не указано.
Делай выводы сам.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Однако, и этот источник не относит пайпы к КОП.
ну здрасьте. там написано, что пайпы — первая реализация идей компонентного программирования. так что bash наверно можно считать первым компонентным языком
AVC>Тем не менее, он там есть, и ничего более раннего не указано.
там нет хронологии на этот счет. Да и здесь рядом в ветке упоминались более ранние языки.
В любом случае, оберон — это явная неудача.
Здравствуйте, Дарней, Вы писали:
Д>наличие прямой поддержки в языке — это конечно плюс, но никакой революции здесь нет. Всего лишь мааленький такой шажок в эволюции, да и то не в ту сторону, в случае оберона.
Не в ту сторону?
Ну-ну.
Просто стали делать упор на промежуточный язык (байт-код для JVM, IL — для дотнета).
Потому что язык фиксирует определенные соглашения, без которых нормальное КОП возможно, разве что, через задницу.
Д>Археоптерикс — он тоже, в принципе, летал. Но первой птицей его все равно не называют.
Правильно.
Вот COM и есть такой запоздалый археоптерикс.
Надо же было куда-то впихнуть кучу софта, уже написанного на Си++.
Д>зато, если сложить две плоские шутки, получится одна тонкая.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Не в ту сторону? AVC>Ну-ну.
"не та сторона" — это упор на примитивизацию синтаксиса языка и принципиальное отсутствие средств расширения
Вот если бы Вирт стал его позиционировать как платформу для построения других языков, то есть аналог MSIL — тогда всё могло повернуться совсем по другому.
А так — язык был обречен с самого начала. Среди программистов не так уж много мазохистов.
AVC>Потому что язык фиксирует определенные соглашения, без которых нормальное КОП возможно, разве что, через задницу.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, AVC, Вы писали:
AVC>>Однако, и этот источник не относит пайпы к КОП.
Д>ну здрасьте. там написано, что пайпы — первая реализация идей компонентного программирования. так что bash наверно можно считать первым компонентным языком
Вот что там написано.
Technologies
Pipes and Filters
Unix operating system
Component-oriented programming
Fractal component model from ObjectWeb
Visual Basic Extensions, OCX/ActiveX/COM and DCOM from Microsoft
XPCOM from Mozilla Foundation
VCL and CLX from Borland and similar free LCL library.
Enterprise Java Beans from Sun Microsystems
UNO from the OpenOffice.org office suite
Eiffel programming language Oberon programming language and BlackBox
Z++ programming language
Bundles as defined by the OSGi Service Platform
NexWave Software Infrastructure (NSI)
The System.ComponentModel namespace in Microsoft .NET
Достаточно ясно, что пайпы и КОП — разные технологии.
AVC>>Тем не менее, он там есть, и ничего более раннего не указано.
Д>там нет хронологии на этот счет. Да и здесь рядом в ветке упоминались более ранние языки.
Хронологию сам подставь.
К 1989 году не только ОС Оберон (100% компонентная) была написана, но и по ней в ETH читался учебный курс.
Д>В любом случае, оберон — это явная неудача.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
AVC>>Не в ту сторону? AVC>>Ну-ну.
Д>"не та сторона" — это упор на примитивизацию синтаксиса языка и принципиальное отсутствие средств расширения
Расширения чего?
Программной системы или синтаксиса языка?
Как программная система — Оберон расширяем превосходно.
Для того он, собственно, и создавался.
Достаточно просто написать новый модуль, он изначально — компонент.
А насчет расширения синтаксиса — это старая и, ИМХО, плохая идея, балуйтесь ей сами.
Д>А так — язык был обречен с самого начала. Среди программистов не так уж много мазохистов.
Ну тогда я тот самый редкий мазохист.
AVC>>Потому что язык фиксирует определенные соглашения, без которых нормальное КОП возможно, разве что, через задницу.
Д>ты это юниксоидам расскажи
Знаешь, я и сам использую bash каждый день, но почему-то не отношу его к области КОП.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Достаточно ясно, что пайпы и КОП — разные технологии.
они не позволяют создавать компонентные системы, или не относятся к области программирования?
AVC>К 1989 году не только ОС Оберон (100% компонентная) была написана, но и по ней в ETH читался учебный курс.
The modern concept of a software component was largely defined by Brad Cox of Stepstone, who called them Software ICs and set out to create an infrastructure and market for these components by inventing the Objective-C programming language.
А Objective-C был реализован, если верить википедии, еще в 1980 году. Вот так то.
Здравствуйте, AVC, Вы писали:
AVC>А насчет расширения синтаксиса — это старая и, ИМХО, плохая идея, балуйтесь ей сами.
плохая идея — это делать вручную то, что можно поручить компьютеру
AVC>Знаешь, я и сам использую bash каждый день, но почему-то не отношу его к области КОП.
АХ>С другой стороны, если вы работаете с Windows постоянно приходится обновлять дорогое ПО и Железо (вон чтобы Висту установить нехилая система будет нужна!), АХ>для Linux это не обязательно, поскольку основные стандарты не меняются и многое ПО там бесплатно.
Извините, а что в виндоус сделано такого что она постоянно требует обновления железа? То есть, Win 98 поставленная на Celeron 333 через какое-то время потребует апгрейта до P4?
Left2 wrote: > Извините, а что в виндоус сделано такого что она постоянно требует > обновления железа? То есть, Win 98 поставленная на Celeron 333 через > какое-то время потребует апгрейта до P4?
Да. Новый Win98 я купить не могу.
Здравствуйте, Дарней, Вы писали:
AVC>>Достаточно ясно, что пайпы и КОП — разные технологии.
Д>они не позволяют создавать компонентные системы, или не относятся к области программирования?
Это смотря что называть компонентной системой.
КОП уже предполагает ООП (в частности, КОП есть некая дисциплина применения ООП, решающая определенные проблемы компонентного ПО — хрупкие классы и т.д.), а bash какое имеет к этому отношение?
Возьму простой и распространенный пример: составной документ.
Представим себе, что у нас есть некий текстовый редактор, в который мы вставляем также таблицы, картинки и вообще произвольные отображаемые объекты.
Т.е. у нас есть потребность вставлять в документ заранее неизвестные объекты неизвестных нам производителей, и впоследствии манипулировать этим объектом в стиле ООП.
На Обероне я просто пишу модуль, определяющий нужный мне отображаемый объект, после чего можно спокойно вставлять новый объект в редактируемый документ.
Впоследствии, при сохранении документа, будет сохранен его тип (Модуль.Тип), и при чтении документа нужные модули будут подгружены автоматически.
Ну и т.д.
В Обероне так было всегда, на организацию компонентности не требовалось ни одной лишней запятой, т.к. обероновский модуль и есть компонент.
А bash "всего-лишь" программируемая оболочка, которая позволяет связывать программы трубопроводом.
AVC>>К 1989 году не только ОС Оберон (100% компонентная) была написана, но и по ней в ETH читался учебный курс.
Д>
Д>The modern concept of a software component was largely defined by Brad Cox of Stepstone, who called them Software ICs and set out to create an infrastructure and market for these components by inventing the Objective-C programming language.
Д>А Objective-C был реализован, если верить википедии, еще в 1980 году. Вот так то.
Ты этот Objective C хотя бы видел?
Чистый Си со смоллтоковскими вставками.
Это язык объектно-ориентированного, а не компонентно-ориентированного программирования.
Не веришь мне, читай вот здесь: http://ru.wikipedia.org/wiki/Objective-C
Objective-C, известный также как Objective C, ObjC или Obj-C — компилируемый объектно-ориентированный язык программирования, построенный на основе языка C.
В отличие от C++, язык Objective-C полностью совместим с Си и является довольно тонкой надстройкой. Объектная модель построена в стиле Smalltalk, то есть, объектам посылаются сообщения.
Смесь бульдога с носорогом, а не язык КОП.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>КОП уже предполагает ООП (в частности, КОП есть некая дисциплина применения ООП, решающая определенные проблемы компонентного ПО — хрупкие классы и т.д.), а bash какое имеет к этому отношение?
Ну это уже твои домыслы. В названии "компонентно-ориентированное программирование" нет ни единого слова про объекты.
AVC>Смесь бульдога с носорогом, а не язык КОП.
Ну здрасьте. Сначала ты приводишь мне ссылку на википедию, как на подтверждение своих слов. Как только я нахожу там информацию, которая противоречит твоим словам, ты тут же заявляешь "нет, это фигня ссылка, вот на тебе другую, где написано что я прав"
И как это называется?
А ныне Objective C, между прочим — основной язык программирования под Mac OS X. Такое количество пользователей оберонщикам только в самых дичайших грезах привидится. Вот тебе и "смесь бульдога с носорогом"
Здравствуйте, Дарней, Вы писали:
AVC>>КОП уже предполагает ООП (в частности, КОП есть некая дисциплина применения ООП, решающая определенные проблемы компонентного ПО — хрупкие классы и т.д.), а bash какое имеет к этому отношение?
Д>Ну это уже твои домыслы. В названии "компонентно-ориентированное программирование" нет ни единого слова про объекты.
Я понял, что мне ты не веришь.
Ну тогда посмотри здесь: http://ru.wikipedia.org/wiki/Компонентно-ориентированное_программирование
Компонентно-ориентированное программирование (англ. component-oriented programming) возникло как своего рода дисциплина, то есть набор определенных ограничений, налагаемых на механизм ООП, когда стало ясно, что бесконтрольное использование ООП приводит к проблемам с надежностью больших программных комплексов.
Это так называемая проблема хрупких базовых типов (fragile base class problem); проблема может проявиться при попытке изменить реализацию типа-предка, когда может оказаться, что изменить реализацию типа-предка даже при неизменных интерфейсах его методов невозможно, не нарушив корректность функционирования типов-потомков.
AVC>>Смесь бульдога с носорогом, а не язык КОП.
Д>Ну здрасьте. Сначала ты приводишь мне ссылку на википедию, как на подтверждение своих слов. Как только я нахожу там информацию, которая противоречит твоим словам, ты тут же заявляешь "нет, это фигня ссылка, вот на тебе другую, где написано что я прав" Д>И как это называется?
Слушай, Objective C составлен из языков Си и Смоллток.
Ни тот, ни другой не являются языками КОП.
Почему же Objective C вдруг стал?
За счет чего?
Д>А ныне Objective C, между прочим — основной язык программирования под Mac OS X. Такое количество пользователей оберонщикам только в самых дичайших грезах привидится. Вот тебе и "смесь бульдога с носорогом"
Ну и что?
Язык Си, например, основной язык системы UNIX.
Это делает его языком КОП?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
Д>А Objective-C был реализован, если верить википедии, еще в 1980 году. Вот так то.
Вообще-то, там написано, что он был разработан в начале 80-х (и не только там, например еще на сайте GNUStep). Более точная дата указана на Cetus-Links.org:
Objective-C is an extension of the C language, developed around 1982-1983 by Brad Cox and Tom Love.
что более правдоподобно, т.к. врядли в 80-м году мог быть реализован язык, берущий многое из Smalltalk-80.
Здравствуйте, eao197, Вы писали:
E>Вообще-то, там написано, что он был разработан в начале 80-х (и не только там, например еще на сайте GNUStep). Более точная дата указана на Cetus-Links.org: E>
E>Objective-C is an extension of the C language, developed around 1982-1983 by Brad Cox and Tom Love.
Евгений, спасибо за интересную находку!
ИМХО, из представленного достаточно очевидно, что Objective C действительно повлиял на Java.
Особенно интересна конструкция protocol, весьма сходная с interface в Java.
Заметно также стилистическое влияние.
Но мне интересно, что именно ты называешь фактом?
Если ты полагаешь, что влияния Objective C достаточно, чтобы больше не вспоминать в этой связи об Обероне, то давай посмотрим на некоторые неудобные "мелочи".
Сколько я не разговаривал с Java-программистами, главным для них были такие свойства языка, как безопасность типов и сборка мусора.
Я не поленился заглянуть в литературу по Objective C и не нашел там таких замечательных свойств.
Также как не нашел апплетов, байткода и т.д.
Именно безопасность типов, сбока мусора ,апплеты и принцип WORA сделали Java популярной и "отличной от других" (в том числе от Objective C, но не... ).
Меня интересует не поверхностное сходство, а глубинное техническое решение.
Впрочем, иногда это проявляется и на поверхности — в грамматике языка.
Обратил ли ты внимание на отсутствие в Java объединений (union)?
Между тем, в Objective C они присутствуют.
С чего бы это вдруг их исключили из языка?
Позволю себе процитировать старую статью Вирта "От Модулы к Оберону":
Концепция задуманной операционной системы потребовала высокодинамичного централизованного распределения памяти, операющегося на технологию сборки мусора. И хотя Modula в принципе никак не препятствует встраиванию соответствующего сборщика мусора, наличие в языке вариантных записей создает серьезные препятствия. Поскольку новый механизм расширения типов сделал вариантные записи излишней возможностью, то логичным решением было попросту изъять этот ненужный элемент.
Так ты действительно полагаешь, что Java произошла от Objective C?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Так ты действительно полагаешь, что Java произошла от Objective C?
Алексей, вообще-то я полагаю, что Java произошла от Гослинга
Ссылку же привел, потому что раньше вообще никогда не слышал, чтобы Obj-C упоминали как один из предшественников Java.
А еще в своем сообщении я забыл смайлик в конце поставить
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, AVC, Вы писали:
AVC>>Так ты действительно полагаешь, что Java произошла от Objective C?
E>Алексей, вообще-то я полагаю, что Java произошла от Гослинга E>Ссылку же привел, потому что раньше вообще никогда не слышал, чтобы Obj-C упоминали как один из предшественников Java.
E>А еще в своем сообщении я забыл смайлик в конце поставить E>
Однако, должен заметить, что данная тобой ссылка произвела на меня впечатление.
Оказывается, про связь Java с Objective C пишется даже в Википедии (в статье про Java; наряду со Смоллтоком и Си++).
Так что, если это была шутка, должен признать — она удалась на славу!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Я понял, что мне ты не веришь.
Это просто частное определение. На самом деле компонентность как таковая никак не связана с объектами.
AVC>Слушай, Objective C составлен из языков Си и Смоллток. AVC>Ни тот, ни другой не являются языками КОП. AVC>Почему же Objective C вдруг стал? AVC>За счет чего?
В той ссылке, которую привел ты сам, именно он приводится как пример первой реализации компонентности в ООП языке.
Здравствуйте, AVC, Вы писали:
AVC>Я не поленился заглянуть в литературу по Objective C и не нашел там таких замечательных свойств. AVC>Также как не нашел апплетов, байткода и т.д. AVC>Именно безопасность типов, сбока мусора ,апплеты и принцип WORA сделали Java популярной и "отличной от других" (в том числе от Objective C, но не... ). AVC>Меня интересует не поверхностное сходство, а глубинное техническое решение.
апплеты — это глубинное техническое решение? браво!
WORA — это в обероне с его бесчисленными диалектами?
безопасность — это в языке, где можно просто подключить модуль, и делать все что хочешь на самом низком уровне?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Pavel Dvorkin, Вы писали:
VD>Думаю ты неверно представляещь себе гипотетическую действительность. Если бы Влад провел бы у тебя курс лекций студентам, скажем, четвертого курса по Неперле, то к концу этого курса твой труп случился бы в автоматическом режиме, так как студенты не простили бы тебе, что столько времени ты компостировал им мозги каким-то ВыньАпы на СиПусПлус.
Сомневаюсь. Дело в том, что я заложил одну мину в свое предложение. Я тебе предложил провести спецкурс. А спецкурс — это такая штука у нас, когда студенты ходят или нет по своему усмотрению. Заставить ходить их никто не может. Они обязаны за 5 лет набрать столько-то спецкурсов, но выбирать их могут сами. На мой спецкурс (не по Win32) , на первую лекцию, приходит обычно человек 20-25, а зачет сдает половина, и это нормально.
Так что на первое занятие к тебе, скорее всего, из любопытства пришли бы. Но первый вопрос, который бы задали — где это можно сейчас употребить и чем это лучше, чем все остальное. Ну а получив от тебя ответ в стиле твоих лучших высказываний здесь — на второе занятие скорее всего бы не пришли.
Здравствуйте, eao197, Вы писали:
PD>>А про Linux — каково соотношение машин с Linux и машин с Windows в бизнесе или на домашних ПК ? Вот то-то и оно. А то, что его любителей среди профессионалов, полупрофессионалов и их знакомых не так уж мало — ничего не значит. Для индустрии.
E>Ну посмотри на соотношение в сегменте x86 серверов
Так я и говорю — в среде профессионалов. Там совсем другие законы действуют. Ну и учти все же, что доля Unix там была когда-то почти 100% — до появления Windows NT. Кстати, при ее появлении многие сомневались, что она вообще сможет Unix там потеснить...
E>А если не только x86 серверов, то вообще E>А ведь самый, что ни есть бизнес, требовательный весьма (решения 24x7 и с пятью девятками норовит требовать постоянно )
E>Кстати, если бы в России за ПО приходилось бы деньги платить, каково бы было соотношение Windows и Linux на домашних ПК?
Дальше по ветке развернулась на эту тему дискуссия, вполне достойная Священных войн. Полагаю, она вполне обойдетчя без моего участия
АХ> А так любимая тобой индустрия включает в себя и Google и Яндекс, где используют Python, и множество сайтов на Linux+Apache+MySQL+PHP/Perl и конторы где используют AutoCAD с Lisp.
АХ> И это реальный бизнес, который приносит доход. Может быть не такой как у MS или Oracle, но тем не менее вполне ощутимо.
Я разве утверждал, что периферия не приносит дохода ?
АХ>>>Ну и тот же Linux. Создан вполне кустарно, тем не менее сейчас вполне принят индустрией.
PD>>Хм... Для индустрии персональной вычислительной техники Linux (и Unix вообще) именно типичная периферия. АХ>Для десктопов — да, но еще посмотрим что дальше будет.
То же, что и есть. Для того, чтобы сейчас заставить массовый рынок сменить Windows на что-то иное — денег в мире ни у кого не найдется. Это все равно, что пытаться во всех домах 220В заменить на 250В. или внедрить шурупы с размером, средним между двумя существующими
АХ>Но основные деньги то на серверном рынке.
Хм... Интересно, откуда такое ? Сколько в мире серверов и сколько рабочих станций ? Сколько продано (и уворовано) лицензий на 2003 Server или же установлено Линуксов и сколько в мире машин с W9x и XP ? Сколько Апачей и ИИС, и сколько Word и Excel ?
АХ>Вот статистика по сайтам за Сентябрь:
АХ>Apache 59699872 сайтов — 61.64 % АХ>Microsoft IIS 30272249 сайтов — 31.26 % АХ>... (другие) АХ>(отсюда) АХ>Как видно сайтов на Апаче больше в 2 раза.
Да, не спорю. Но при чем здесь Linux ? Apache есть ведь и под Windows . И как сервер он просто лучше, чем IIS, по мнению многих.
Я же не утверждал, что мэйнстрим — это только ПО от MS.
PD>> Вот у OS/2 могли быть шансы, если бы иначе сложилось... Могла быть неплохая конкуренция между ней и Windows, и это пошло бы на пользу отрасли, как и всякая конкуренция. PD>>А про Linux — каково соотношение машин с Linux и машин с Windows в бизнесе или на домашних ПК ? Вот то-то и оно. А то, что его любителей среди профессионалов, полупрофессионалов и их знакомых не так уж мало — ничего не значит. Для индустрии. АХ>Это справедливо только для России.
Ой ли ? В Америке все домашние хозяйки исключительно на Линуксе свои кулинарные рецепты держат ? И дети их в Линуксовые игры играют ? Сомневаюсь...
АХ>Хотя с точки зрения бизнеса важнее TCO, и в этом случае все неоднозначно.
Неоднозначно, да. Вот к примеру, директор магазина на 10-20 человек персонала и пару-тройку компьютеров. И крутится у него БД какая-то, с помощью которой сотрудники определяют , есть ли у них товар и его цену, да Excel с Word'ом, с помощью которых накладные сочиняют да документы всякие изготавливают, да IE с OE, чтобы письма писать, и сотрудники в свободное время чтобы не скучали . Вот и переубеди их на Линукс перебраться...
АХ>С другой стороны, если вы работаете с Windows постоянно приходится обновлять дорогое ПО и Железо (вон чтобы Висту установить нехилая система будет нужна!),
Здравствуйте, Pavel Dvorkin, Вы писали:
АХ>>Для десктопов — да, но еще посмотрим что дальше будет.
PD>То же, что и есть. Для того, чтобы сейчас заставить массовый рынок сменить Windows на что-то иное — денег в мире ни у кого не найдется. Это все равно, что пытаться во всех домах 220В заменить на 250В. или внедрить шурупы с размером, средним между двумя существующими
Сейчас нет, а постепенно доля Линукс все равно растет и будет расти. Развивающимся странам гораздо симпатичнее Линукс, хотя бы потому что он не контролируется американской корпорацией.
И поэтому если писать ПО под Линукс, то они не попадут в зависимость от политики MS.
Ну и понятно, что так как Линукс распространяется с исходными кодами, его проще заточить под свои нужды.
PD>Да, не спорю. Но при чем здесь Linux ? Apache есть ведь и под Windows .
Apache под Windows — это все-таки не так часто.
АХ>>Это справедливо только для России.
PD>Ой ли ? В Америке все домашние хозяйки исключительно на Линуксе свои кулинарные рецепты держат ?
Боюсь они их в книгах читают.
PD>И дети их в Линуксовые игры играют ? Сомневаюсь...
Дети их играют в PlayStation. А PlayStation 3 будет с Linuxом.
АХ>>Хотя с точки зрения бизнеса важнее TCO, и в этом случае все неоднозначно.
PD>Неоднозначно, да. Вот к примеру, директор магазина на 10-20 человек персонала и пару-тройку компьютеров. И крутится у него БД какая-то, с помощью которой сотрудники определяют , есть ли у них товар и его цену, да Excel с Word'ом, с помощью которых накладные сочиняют да документы всякие изготавливают, да IE с OE, чтобы письма писать, и сотрудники в свободное время чтобы не скучали . Вот и переубеди их на Линукс перебраться...
Пока нет, но поживем увидим, ситуация может измениться, особенно если пиратство серьезно прижимать начнут.
То есть я не утверждаю, что все сразу в таком случае пересядут на Линукс, но повод задуматься будет.
Ну а в принципе, все это ПО есть под Линукс.
АХ>>С другой стороны, если вы работаете с Windows постоянно приходится обновлять дорогое ПО и Железо (вон чтобы Висту установить нехилая система будет нужна!),
PD>В $1000 уложимся ?
Не факт, сложите цены на железо + MS Windows XP + MS Office для каждого из сотрудников
+ MS Windows Server + MS SQLServer + MS IIS + MS Project или что там еще у нас на всех.
Че-то мы в Win vs Linux скатились. Предлагаю закончить .
PD>>То же, что и есть. Для того, чтобы сейчас заставить массовый рынок сменить Windows на что-то иное — денег в мире ни у кого не найдется. Это все равно, что пытаться во всех домах 220В заменить на 250В. или внедрить шурупы с размером, средним между двумя существующими АХ>Сейчас нет, а постепенно доля Линукс все равно растет и будет расти. Развивающимся странам гораздо симпатичнее Линукс, хотя бы потому что он не контролируется американской корпорацией.
по своему личному наблюдению, с 1998 года доля линукса в конторах, в которых я работал не вырастала, а наоборот, немного падала...
АХ>И поэтому если писать ПО под Линукс, то они не попадут в зависимость от политики MS.
а чем так плоха зависимость?
Ведь необходимость в написании программ — это не процесс, а результат. Создают программы для решения проблем...
АХ>Ну и понятно, что так как Линукс распространяется с исходными кодами, его проще заточить под свои нужды.
что-то не понял как из первого вытекает второе.
PD>>Да, не спорю. Но при чем здесь Linux ? Apache есть ведь и под Windows . АХ>Apache под Windows — это все-таки не так часто.
Кстати, когда проводится исследование, проверяются хосты, а не серверы, на которых установлен тот или иной веб сервер.
Когда-то проскакивало исследование, чем пользуются 100 Top контор. Там с апачем как-то напряженнее было...
[skip]
PD>>В $1000 уложимся ? АХ>Не факт, сложите цены на железо + MS Windows XP + MS Office для каждого из сотрудников АХ>+ MS Windows Server + MS SQLServer + MS IIS + MS Project или что там еще у нас на всех.
Виндус идёт в комплекте, правда сейчас это home версия.
Всё что вы написали — это укладывается в термины TCO. У винды деньги надо платить сразу, зато потом тратиться меньше. С линуксом наоборот...
Кстати, вот недавно купил себе MC Office 2003 Pro всего за 30 евро Всё официально. (в МС не работаю )
АХ>Че-то мы в Win vs Linux скатились. Предлагаю закончить .
Здравствуйте, Дарней, Вы писали:
Д>апплеты — это глубинное техническое решение? браво!
Апплеты стали возможны благодаря определенному техническому решению.
Техническое решение — обероновская система типов, замкнутая и обеспечивающая возможность защиты памяти даже без аппаратной защиты, и поддержка динамической модульности (раздельная компиляция, загрузка по требованию, контроль совместимости (никакого DLL-hell), fingerprints и т.д. и т.п.).
Если кому-то кажется, что Objective C "породил" Java, пусть немного помедитирует над системой типов: какова она в Java, и какова она в Си, пусть даже в Objective (вот только, пожалуй, protocol действительно повлиял на interface).
Кроме того, в обероновских апплетах впервые была применена технология slim binaries.
Поэтому обероновские апплеты никогда не были "тормознутыми", в отличие от их аналога в Java.
Д>WORA — это в обероне с его бесчисленными диалектами?
Вообще-то переносилась одна и та же версия Оберона (и языка, и системы).
Апплеты и "тонкие бинарники" (автор и того, и другого — Михаэль Франц) появились при переносе Оберона под MacOS, работавшей тогда на двух аппаратных платформах.
Д>безопасность — это в языке, где можно просто подключить модуль, и делать все что хочешь на самом низком уровне?
Видимо, ты говоришь о (псевдо)модуле SYSTEM, являющемся частью компилятора Оберона.
В том-то и дело, что в Обероне нельзя импортировать его незаметно.
Список импортируемых модулей доступен не только компилятору, но и загрузчику.
Можно просто запретить загрузку новых модулей, импортирующих SYSTEM.
Получится что-то вроде Java.
Д>
Я рад, что тебе понравилось.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Техническое решение — обероновская система типов, замкнутая и обеспечивающая возможность защиты памяти даже без аппаратной защиты, и поддержка динамической модульности (раздельная компиляция, загрузка по требованию, контроль совместимости (никакого DLL-hell), fingerprints и т.д. и т.п.). AVC>Если кому-то кажется, что Objective C "породил" Java, пусть немного помедитирует над системой типов: какова она в Java, и какова она в Си, пусть даже в Objective (вот только, пожалуй, protocol действительно повлиял на interface).
Выглядит неубедительно, чтобы делать настолько далеко идущие выводы о происхождении явы от оберона.
AVC>Можно просто запретить загрузку новых модулей, импортирующих SYSTEM. AVC>Получится что-то вроде Java.
такая возможность уже есть, или ее можно "легко выточить напильником"?
PD>>И дети их в Линуксовые игры играют ? Сомневаюсь... АХ>Дети их играют в PlayStation. А PlayStation 3 будет с Linuxом.
Он не будет с Линухом. Сони выпустит Линух для Playstation. А это — две большие разницы. Просто для предыдущих Сони в качестве эксперимента выпускала Линукс. Для третьей Сони тоже выпустит — это просто своего рода тоже PR
Здравствуйте, AVC, Вы писали:
AVC>Видимо, ты говоришь о (псевдо)модуле SYSTEM, являющемся частью компилятора Оберона. AVC>В том-то и дело, что в Обероне нельзя импортировать его незаметно. AVC>Список импортируемых модулей доступен не только компилятору, но и загрузчику. AVC>Можно просто запретить загрузку новых модулей, импортирующих SYSTEM.
ГЫ! Распространяется что? Правильно бинарник. Код в этом бинпрники проверяется как? Правильно никак.
Вопрос что нам мешает создать заголовки так чтобы там небыло никакого модуля SYSTEM. Или как вариант пропатчить уже собранный бинарник. Ы?
А как там у нас с использованием оберона в распределенке? Или даже на многопроцессорных машинах? Ведь один ГЦ на всех это не эффективно даже для многопроцессорных систем, а в распределенке он вобще не живет (вернее завести можно но это будет мегатормоз).
А как у нас там с многопользовательскими делами? С правами доступа?
...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>А как там у нас с использованием оберона в распределенке? Или даже на многопроцессорных машинах? Ведь один ГЦ на всех это не эффективно даже для многопроцессорных систем, а в распределенке он вобще не живет (вернее завести можно но это будет мегатормоз).
Кстати, а у кого с этим нет проблем?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, WolfHound, Вы писали:
WH>>А как там у нас с использованием оберона в распределенке? Или даже на многопроцессорных машинах? Ведь один ГЦ на всех это не эффективно даже для многопроцессорных систем, а в распределенке он вобще не живет (вернее завести можно но это будет мегатормоз).
E>Кстати, а у кого с этим нет проблем?
У тех, кто на это забивает
Я имею в виду Эрланг, кде нет общей памяти между процессами (причём как в пределах одного рантайма так и в распределённой системе)
Хотя это чревато в ситуациях, когда нужно именно большие куски "шарить" или передавать.
Здравствуйте, eao197, Вы писали:
WH>>А как там у нас с использованием оберона в распределенке? Или даже на многопроцессорных машинах? Ведь один ГЦ на всех это не эффективно даже для многопроцессорных систем, а в распределенке он вобще не живет (вернее завести можно но это будет мегатормоз). E>Кстати, а у кого с этим нет проблем?
У тогоже ерланга.
SObjectizer тоже шаг в правильном направлении но вы кудато не туда свернули... broadcast это камень на шее.
ИМХО наиболие верное направление это сигулярити со своими полностью изолированными процессами и каналами у которых описан протокол общения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>>>А как там у нас с использованием оберона в распределенке? Или даже на многопроцессорных машинах? Ведь один ГЦ на всех это не эффективно даже для многопроцессорных систем, а в распределенке он вобще не живет (вернее завести можно но это будет мегатормоз). E>>Кстати, а у кого с этим нет проблем? WH>У тогоже ерланга.
Имхо, если делать распределенное приложение на Oberon, где процессы просто обмениваются между собой сообщениями, то получится то же самое. Вот интересно, не изменяет ли мне память, но Сергей Губанов когда-то о чем-то подобном говорил.
WH>SObjectizer тоже шаг в правильном направлении но вы кудато не туда свернули... broadcast это камень на шее.
А подробнее тему раскрыть можно? Буду очень признателен. Или здесь, или в приват по почте, или на SourceForge-вский форум.
Буду очень-очень признателен
WH>ИМХО наиболие верное направление это сигулярити со своими полностью изолированными процессами и каналами у которых описан протокол общения.
AFAIK, в Minix3 это уже работает (только без жесткой спецификации протоколов).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
AVC>>Из компонентности логически вытекают частные следствия, такие как необходимость типо-безопасности и сборки мусора.
VD>Не-а. Не вытикают. Примеры? Их есть у меня... COM! И этим все сказано. В нем нет ни сборки мусора, ни безопасности. Но он является одной из первый промышленных компонентных систем.
А почему это в COM нет типобезопасности??
Да и сборка мусора — для компонентной системы важно скорее наличие управления временем жизни обьектов, а не конкретный алгоритм. Худо-бедно reference counting c этим справляется.
Да, мы ещё Corba забыли — там примерно то же самое...
Здравствуйте, WolfHound, Вы писали:
WH>SObjectizer тоже шаг в правильном направлении но вы кудато не туда свернули... broadcast это камень на шее. WH>ИМХО наиболие верное направление это сигулярити со своими полностью изолированными процессами и каналами у которых описан протокол общения.
Насколько я понимаю, из языков обероновского семейства Zonnon вводит параллелизм на основе активных объектов и синтаксически управляемых диалогов (протокол задается в виде EBNF).
Это то, что имеется в виду (примерно)?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
Д>Это просто частное определение. На самом деле компонентность как таковая никак не связана с объектами.
Может быть, ты не заметил — я все время говорю о компонентно-ориентированном программировании (КОП) а не о "компонентности как таковой".
AVC>>Слушай, Objective C составлен из языков Си и Смоллток. AVC>>Ни тот, ни другой не являются языками КОП. AVC>>Почему же Objective C вдруг стал? AVC>>За счет чего?
Д>В той ссылке, которую привел ты сам, именно он приводится как пример первой реализации компонентности в ООП языке.
Обычно говорится об удачной метафоре Бреда Кокса — "software ICs".
Что касается практического воплощения — объектная модель без сборки мусора не годится на роль компонентной.
А сборка мусора требует (в императивном языке) определенной перестройки системы типов.
Такая перестройка была в Обероне, и ее не было в Objective C, гибриде Си и Смоллтока.
(В этом смысле я и назвал Objective C смесью бульдога с носорогом; уж больно эти два языка разные.)
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Насколько я понимаю, из языков обероновского семейства Zonnon вводит параллелизм на основе активных объектов и синтаксически управляемых диалогов (протокол задается в виде EBNF). AVC>Это то, что имеется в виду (примерно)?
Это совсем не то.
1) Активные объекты всеравно плавают в одном объектоном пространстве. Те нужен глобальный ГЦ, а это плохо.
2) Вешать протокол на объект это ересь. При таком подходе совершенно не ясно как будет происходить общение между несколькими объектами.
3) EBNF это полнейший оверкилл. В общем случае эффективно реализовать контроль контекстно независимой грамматики невозможно. Нужно делать какоето подмножество типа LL(1). Но даже для такой ущербной штуки понадобятся стеки и тп... И это при том что на практике ничего большего чем конечный автомат не нужно.
Короче читайте про сингулярити. Конечно виртуальная машина у них посредственная но модель процессов и каналов у них ИМХО очень правильная.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, eao197, Вы писали:
E>Имхо, если делать распределенное приложение на Oberon, где процессы просто обмениваются между собой сообщениями, то получится то же самое. Вот интересно, не изменяет ли мне память, но Сергей Губанов когда-то о чем-то подобном говорил.
Точно также оно делается на всяких сих и тп. Модель оберона тут совершенно не помогает.
E>А подробнее тему раскрыть можно? Буду очень признателен. Или здесь, или в приват по почте, или на SourceForge-вский форум. E>Буду очень-очень признателен
Лично мне нужно очень много мелких процессов порядка нескольких тысяч на одной машине которые стоят в кластере состоящим из десятков машин.
broadcast в таких условиях это кирдык всему. Болие того даже поддержка модели в которой в принципе возможен broadcast ничего хорошего не даст.
Также мне очень важно знать что процесс с которым идет общение умер. Это нужно для убивания зомбей (процессы которые уже не смогут завершить свою работу ибо партнеры подохли) чтобы память не жрали.
Еще нужна возможность прокачки большого потока данных с некоторой обработкой не поднимая их все в память.
Короче модель сингулярити очень близка к тому что мне надо.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WolfHound wrote: > Лично мне нужно очень много мелких процессов порядка нескольких тысяч на > одной машине которые стоят в кластере состоящим из десятков машин.
Вот один процесс захочет послать 10000 сообщений другим процессам — и
тоже кирдык будет, так как каналы будут забиты 10000ми одинаковых сообщений.
Здравствуйте, Cyberax, Вы писали:
C>Вот один процесс захочет послать 10000 сообщений другим процессам — и C>тоже кирдык будет, так как каналы будут забиты 10000ми одинаковых сообщений.
Что-то я не вижу реальной необходимости в таких фичах.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Лично мне нужно очень много мелких процессов порядка нескольких тысяч на одной машине которые стоят в кластере состоящим из десятков машин. WH>broadcast в таких условиях это кирдык всему. Болие того даже поддержка модели в которой в принципе возможен broadcast ничего хорошего не даст. WH>Также мне очень важно знать что процесс с которым идет общение умер. Это нужно для убивания зомбей (процессы которые уже не смогут завершить свою работу ибо партнеры подохли) чтобы память не жрали.
В SObjectizer естественным образом поддерживается peer-to-peer взаимодействие, сообщение идет именно в тот канал, в который отсылалось.
Умершие процессы так же определяются путем контроля отсутствия активности в канале даже после принудительного пингования -- канал разрывается в этом случае.
WH>Еще нужна возможность прокачки большого потока данных с некоторой обработкой не поднимая их все в память.
Т.е. пересылка из одного канала в другой по мере получения очередной порции?
Не вижу проблем -- прочитал за один раз из одного канала 10K, обработал, записал в другой канал.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, WolfHound, Вы писали:
WH>Лично мне нужно очень много мелких процессов порядка нескольких тысяч на одной машине которые стоят в кластере состоящим из десятков машин.
Кстати, а топология их соединений какая?
И в какой момент процесс узнает, с кем именно он должен быть соединен?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>В SObjectizer естественным образом поддерживается peer-to-peer взаимодействие, сообщение идет именно в тот канал, в который отсылалось.
Если я правильно понял то что написано в твоей статье сообщения отсылаются не в канал, а агенту?
E>Умершие процессы так же определяются путем контроля отсутствия активности в канале даже после принудительного пингования -- канал разрывается в этом случае.
Заниматься пингованием в прикладном коде идея крайне не удачная.
Физический хост умерает черизвычайно редко. Как правило обработка прекращается когда один из процессов понимает что дальше обрабатывать не имеет смысла.
E>Т.е. пересылка из одного канала в другой по мере получения очередной порции? E>Не вижу проблем -- прочитал за один раз из одного канала 10K, обработал, записал в другой канал.
Именно так. Только мне нужно в одном логическом канале иметь несколько потоков которые могут идти как в одну так и в другую сторону. Также мне нужно уметь пропускать несколько логических каналов по одному физическому.
Причем все это должно быть абсолютно прозрачно для прикладного кода иначе вся эта система не имеет смысла.
E>Кстати, а топология их соединений какая?
Есть несколько типов компов со своими специфическими ресурсами. Ну и соответственно обработка разных частей запроса происходит на разных компах.
Короче работают изолированные друг от друга группы процессов.
E>И в какой момент процесс узнает, с кем именно он должен быть соединен?
Процесс это некий активный объект который при создании получает на вход какието параметры среди которых могут быть end-point'ы каналов.
Так же ендпоинты могут передаватся через каналы.
Но сейчас это все не реализованно и для комуникаций используется жуткий зоопарк из всяких корб все это жутко не удобно.
По этому и пишу эту систему.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Вертер, Вы писали:
В>а чем так плоха зависимость? В>Ведь необходимость в написании программ — это не процесс, а результат. Создают программы для решения проблем...
Почитай по антипаттерн Vendor lock-in: здесь и здесь.
АХ>>Ну и понятно, что так как Линукс распространяется с исходными кодами, его проще заточить под свои нужды.
В>что-то не понял как из первого вытекает второе.
Если ты хочешь, например, создать новую железку (какой-нибудь наладонник или еще чего), то ты можешь в качестве ОС взять Линукс и модифицировать ядро под специфику железа.
Значительно проще чем изобретать велосипед, разрабатывая свою ОС.
Ну и например, если ты в ядре обнаружил баг, его проще поправить.
В случае Windows баг вообще трудно диагностировать, а уж поправят его вообще хрен знает когда (если он не критичен по безопасности).
Здравствуйте, Mamut, Вы писали:
PD>>>И дети их в Линуксовые игры играют ? Сомневаюсь... АХ>>Дети их играют в PlayStation. А PlayStation 3 будет с Linuxом.
M>Он не будет с Линухом. Сони выпустит Линух для Playstation. А это — две большие разницы. Просто для предыдущих Сони в качестве эксперимента выпускала Линукс. Для третьей Сони тоже выпустит — это просто своего рода тоже PR
Нет.
Linux will be pre-installed on the PS3 hard drive.
Because we have plans for having Linux on board the PS3, we also recognize Linux programming activities… Other than game studios tied to official developer licenses, we'd like to see various individuals participate in content creation for the PS3.
Izumi Kawanishi on the presence of the Linux in the PS3.
Здравствуйте, FR, Вы писали:
AVC>>Слушай, Objective C составлен из языков Си и Смоллток. AVC>>Ни тот, ни другой не являются языками КОП.
FR>Интересно что именно мешает Смаллталку быть компонетно-ореинтированным?
А в каком виде там могут распространяться компоненты?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, WolfHound, Вы писали:
WH>3) EBNF это полнейший оверкилл. В общем случае эффективно реализовать контроль контекстно независимой грамматики невозможно. Нужно делать какоето подмножество типа LL(1). Но даже для такой ущербной штуки понадобятся стеки и тп... И это при том что на практике ничего большего чем конечный автомат не нужно.
Я здесь немного не понял.
Любой регулярный язык может быть выражен с помощью EBNF.
Если же в языке есть рекурсия (он не регулярный), то как обойтись без стека?
Вообще, почему ты так раскритиковал EBNF?
Ведь EBNF — это расширенная BNF, т.е. EBNF = BNF + циклы + опции.
Т.е. EBNF, по идее, как минимум не уступает по мощности BNF.
Приверженность Вирта к языкам программирования с LL(1)-грамматикамми (чтобы код был читабельным) никак не связана с мощностью EBNF.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Такая перестройка была в Обероне, и ее не было в Objective C, гибриде Си и Смоллтока.
знаешь, в чем твоя проблема? Ты просто уже решил априори, что единственно верная реализация КОП — это та, которая была в обероне.
Ответь на один простой вопрос. Какой аргумент сможет тебя убедить, что оберон не имеет никакого отношения к появлению явы?
Здравствуйте, AVC, Вы писали:
AVC>Ведь EBNF — это расширенная BNF, т.е. EBNF = BNF + циклы + опции. AVC>Т.е. EBNF, по идее, как минимум не уступает по мощности BNF.
EBNF — это BNF с некоторым синтаксическим сахаром. По мощности они совершенно эквивалентны, т.е. всегда возможно не меняющее семантики преобразование из одного в другой.
Здравствуйте, WolfHound, Вы писали:
E>>В SObjectizer естественным образом поддерживается peer-to-peer взаимодействие, сообщение идет именно в тот канал, в который отсылалось. WH>Если я правильно понял то что написано в твоей статье сообщения отсылаются не в канал, а агенту?
Это внутри одного процесса.
Если же организуется распределенное приложение из нескольких процессов, то все они должны быть соеденены коммуникационными каналами. Например, если есть одни центральный процесс, который открывает серверный сокет и N клиентов, которые должны подключаться к нему через клиентские сокеты, то центральное приложение создает у себя серверного транспортного агента, а клиенты -- по одному клиентскому транспортному агенту. Эти агенты будут отвечать за установку соединений и организацию коммуникационных каналов.
Если же есть N процессов, которые открывают серверные сокеты и один клиент, который должен одновременно к ним подключиться, то серверные процессы создают у себя по одному серверному транспортному агенту, а клиентский процесс должен создать N клиентских транспортных агентов.
Об организации транспортных агентов, которые поддерживают выбранную разработчиком топологию, отвечает сам разработчик. Но, когда соединения уже установлены, каждое соединение рассматривается SObjectizer-ов в качестве коммуникационного канала. И при отсылки сообщения посредством send_msg можно указать, в какой именно канал должно уйти сообщение. Поэтому, если клиент подключен к N серверам, то он легко может общаться только с одним из серверов, если будет посылать сообщения в канал данного сервера.
E>>Умершие процессы так же определяются путем контроля отсутствия активности в канале даже после принудительного пингования -- канал разрывается в этом случае. WH>Заниматься пингованием в прикладном коде идея крайне не удачная.
+1
Поэтому пингование выполняет сам SObjectizer на уровне своего транспортного протокола.
WH>Физический хост умерает черизвычайно редко. Как правило обработка прекращается когда один из процессов понимает что дальше обрабатывать не имеет смысла.
Если процесс завершается корректно и корректно закрывает свои каналы, то удаленная сторона это сразу же обнаруживает и считает канал закрытым, о чем SObjectizer информирует прикладной код посредством сообщения msg_client_disconnected.
E>>Т.е. пересылка из одного канала в другой по мере получения очередной порции? E>>Не вижу проблем -- прочитал за один раз из одного канала 10K, обработал, записал в другой канал. WH>Именно так. Только мне нужно в одном логическом канале иметь несколько потоков которые могут идти как в одну так и в другую сторону. Также мне нужно уметь пропускать несколько логических каналов по одному физическому. WH>Причем все это должно быть абсолютно прозрачно для прикладного кода иначе вся эта система не имеет смысла.
В SObjectizer это можно сделать на уровне SOP-каналов (т.е. те, которые передают сообщения агентов, есть еще raw-каналы, которы используются для сырых, бинарных данных). Например, для каждого логического потока используются свои сообщения. Скажем a_first_logical_t::msg_receive_data, a_second_logical_t::msg_send_data, a_third_logical_t::msg_data. Либо можно использовать одно и тоже сообщение, но в самом сообщении указывать, к какому логическому потоку данные относятся.
Однако, при использовании SOP требуется, чтобы поток дробился на одельные сообщения на прикладном уровне, поскольку SObjectizer сначала закачивает все сообщение в память и только потом доставляет его обрабатывающему агенту. Поэтому, если весь поток будет представлен одим сообщением, то сам понимаешь. А вот если поток разбивается на серию сообщений, то каждое сообщение может обрабатываться по мере поступления.
E>>И в какой момент процесс узнает, с кем именно он должен быть соединен? WH>Процесс это некий активный объект который при создании получает на вход какието параметры среди которых могут быть end-point'ы каналов.
У нас сейчас аналогичная ситуация -- процесс получает описания каналов через конфигурацию. Например, вот здесь описывается, как процесс может создавать нужные ему транспортные агенты через подсистему so_sysconf.
WH>Так же ендпоинты могут передаватся через каналы.
Так же нет проблем, транспортные агенты могут создаваться и уничтожаться в динамике.
WH>Но сейчас это все не реализованно и для комуникаций используется жуткий зоопарк из всяких корб все это жутко не удобно. WH>По этому и пишу эту систему.
Интересная задачка. Желаю удачи!
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, AVC, Вы писали:
FR>>Интересно что именно мешает Смаллталку быть компонетно-ореинтированным?
AVC>А в каком виде там могут распространяться компоненты?
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, AVC, Вы писали:
AVC>>Такая перестройка была в Обероне, и ее не было в Objective C, гибриде Си и Смоллтока.
Д>знаешь, в чем твоя проблема? Ты просто уже решил априори, что единственно верная реализация КОП — это та, которая была в обероне. Д>Ответь на один простой вопрос. Какой аргумент сможет тебя убедить, что оберон не имеет никакого отношения к появлению явы?
Скорее всего какое-то отношение он к этому имеет, но очень маленькое.
Здравствуйте, Дарней, Вы писали:
AVC>>Ведь EBNF — это расширенная BNF, т.е. EBNF = BNF + циклы + опции. AVC>>Т.е. EBNF, по идее, как минимум не уступает по мощности BNF.
Д>EBNF — это BNF с некоторым синтаксическим сахаром. По мощности они совершенно эквивалентны, т.е. всегда возможно не меняющее семантики преобразование из одного в другой.
Да, я знаю.
Обрати внимание, в каком контексте это было сказано.
WolfHound почему-то вздумал ругать EBNF за маломощность.
По-видимому, решил, что с помощью EBNF можно выражать только LL(1)-грамматики.
Логика "железная", ведь и то, и другое у него ассоциируется с Виртом.
Я просто продемонстрировал ему, что EBNF = BNF + тот самый сахар, о котором ты говоришь.
Я и говорю, что EBNF не может быть менее мощной, чем BNF; ведь в крайнем случае можно отказаться от циклов и опциональных конструкций (которые либо есть, либо нет).
Т.е. я просто сделал элементарное логическое умозаключение, чтобы разубедить WolfHound-а в его случайном заблуждении.
А не брался утверждать, что EBNF мощнее BNF.
Что касается других тезисов WolfHound-а (а они сводятся к тому, что активные объекты — это плохо), то, ИМХО, они того же типа, что и мысль про EBNF.
Возможность в Активном Обероне и Зонноне работать с активными объектами — это дополнительная (и очень хорошая) возможность, как и циклы в EBNF.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, AVC, Вы писали:
AVC>>Такая перестройка была в Обероне, и ее не было в Objective C, гибриде Си и Смоллтока.
Д>знаешь, в чем твоя проблема? Ты просто уже решил априори, что единственно верная реализация КОП — это та, которая была в обероне. Д>Ответь на один простой вопрос. Какой аргумент сможет тебя убедить, что оберон не имеет никакого отношения к появлению явы?
А знаешь, в чем твоя проблема? Ты заранее (a prioiri) решил, что Оберон не имеет никакого отношения к возникновению Явы.
Поэтому тебя не убедят никакие факты.
Ни то, как в Sun изучали Оберон-систему в самом начале 1990-х.
Ни то, что в начале 1994 г. Франц читал в Sun лекции об Оберон-системе и апплетах (Франц их реализовал в в виде "тонких бинарников" сначала для MacOS, а впоследствии как плагин к IE и Netscape).
Почему-то только после этих лекций в Sun принято было решение о переориентации на Интернет (а до этого — столько лет — об этом ни слуху, ни духу).
А как меня убедить, я давно сказал и все время повторяю.
Указать другие источники:
— для апплетов (первоначальная сфера применения Java);
— статической и динамической безопасности типов и полного контроля над памятью, в сочетании со сборкой мусора (техническая сторона).
Можно называть и др. пункты.
Но я уже говорил, что меня интересует техническая сторона (не в ее мелочах, а в ее целостности).
А она, прежде всего, в том, что Вирт выкинул из Модулы-2 вариантные записи (union в сишном синтаксисе) и ввел эффективную динамическую проверку типов и сборку мусора.
(Я опускаю кучу деталей, специально даю "выжимку".)
Никто пока не указал мне на другой источник апплетов, никто не показал на другой язык, в котором была бы так (общим для Оберона и Явы способом) решена проблема безопасности типов.
Все говорят о каких-то непринципиальных мелочах (эта фича в Java от Objective C, а эта — из другого языка).
ИМХО, на RSDN вообще как-то принято без конца обсасывать всякие мелочи, "синтаксический сахар" и т.п. ерунду.
Отсюда описанная еще И.А.Крыловым неспособность видеть слона ("ну, брат, виноват — слона-то я и не приметил..." ).
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>WolfHound почему-то вздумал ругать EBNF за маломощность.
наоборот — он ругал его за чрезмерную мощность, которая не нужна в данном случае. Ты его неправильно понял.
AVC>Возможность в Активном Обероне и Зонноне работать с активными объектами — это дополнительная (и очень хорошая) возможность, как и циклы в EBNF.
посмотри лучше на реализацию параллелизма в COmega. Активные объекты — слишком прямолинейно и особой пользы в них я тоже не вижу.
Здравствуйте, AVC, Вы писали:
AVC>А знаешь, в чем твоя проблема? Ты заранее (a prioiri) решил, что Оберон не имеет никакого отношения к возникновению Явы.
Нет, я не решил. Я просто прислушиваюсь к тому, что говорят сами разработчики языка. А оберон они даже не упоминают как источник. Этого для меня вполне достаточно — я не любитель "теорий заговора". В отличие от.
AVC>Почему-то только после этих лекций в Sun принято было решение о переориентации на Интернет (а до этого — столько лет — об этом ни слуху, ни духу).
"после этого — значит, вследствие этого" — одно из классических псевдо-логических построений. Было известно и широко применялось еще во времена древних греков
На самом деле, ява изначально предназначалась для встроенных устройств, и все основные технические решения были приняты еще на том этапе.
AVC>- для апплетов (первоначальная сфера применения Java);
ну ладно, будем считать, что оберон и правда — прародитель апплетов. хотя тоже — еще не факт.
AVC>- статической и динамической безопасности типов и полного контроля над памятью, в сочетании со сборкой мусора (техническая сторона).
вау, как интересно! лисп, смоллток и т.д. мы опять выбрасываем из рассмотрения?
AVC>ИМХО, на RSDN вообще как-то принято без конца обсасывать всякие мелочи, "синтаксический сахар" и т.п. ерунду. AVC>Отсюда описанная еще И.А.Крыловым неспособность видеть слона ("ну, брат, виноват — слона-то я и не приметил..." ).
А великая тайна происхождения явы от оберона — это конечно куда важнее, чем какие-то там новые технологии да новые языки.
Здравствуйте, Дарней, Вы писали:
Д>Нет, я не решил. Я просто прислушиваюсь к тому, что говорят сами разработчики языка. А оберон они даже не упоминают как источник. Этого для меня вполне достаточно — я не любитель "теорий заговора". В отличие от.
Я не любитель "теории заговора".
Однако, заговоры, тем не менее, бывают.
Или ты будешь это отрицать?
Д>ну ладно, будем считать, что оберон и правда — прародитель апплетов. хотя тоже — еще не факт.
И при этом отметим, что разработчики языка Java "оберон даже не упоминают как источник".
Это после визитов всего их руководства в ETH, после годичной переписки по поводу его деталей, после лекций Франца, прочитанных в Sun.
Нормальные ребята.
Добавим сюда, что Гослинг так боялся сочетания ETH, что даже не постеснялся приписать создание P-кода UCSD Паскалю.
Хотя сам работал с P-кодом для ETH-Паскаля (значительно более раннего).
ИМХО, это говорит о многом.
AVC>>- статической и динамической безопасности типов и полного контроля над памятью, в сочетании со сборкой мусора (техническая сторона).
Д>вау, как интересно! лисп, смоллток и т.д. мы опять выбрасываем из рассмотрения?
Ты всерьез утверждаешь, что в Java сделано так же как в Лиспе?
Или в Смоллтоке статическая типизация?
Д>А великая тайна происхождения явы от оберона — это конечно куда важнее, чем какие-то там новые технологии да новые языки.
Просто много нового шума (и флейма ).
Правда, принципиально нового-то как раз и нет (что, кстати, и VladD2 признал).
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
AVC>>- для апплетов (первоначальная сфера применения Java);
Д>ну ладно, будем считать, что оберон и правда — прародитель апплетов. хотя тоже — еще не факт.
Термин applet появился в AppleScript в 93 году.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, Дарней, Вы писали:
Д>наоборот — он ругал его за чрезмерную мощность, которая не нужна в данном случае. Ты его неправильно понял.
Пожалуй, здесь ты прав — я его неправильно понял.
Но только тогда я вообще не понял, в чем суть "претензии".
EBNF прекрасно справляется с регулярными языками (т.е. там, где в правой части одни терминалы).
Или, с точки зрения WolfHound-а, вообще грамматика — перебор?
Ну, а как придется реализовать протокол посложнее?
Д>посмотри лучше на реализацию параллелизма в COmega. Активные объекты — слишком прямолинейно и особой пользы в них я тоже не вижу.
Это твоя личная оценка.
На COmega посмотрю, спасибо.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Апплеты стали возможны благодаря определенному техническому решению. AVC>Техническое решение — обероновская система типов, замкнутая и обеспечивающая возможность защиты памяти даже без аппаратной защиты, и поддержка динамической модульности (раздельная компиляция, загрузка по требованию, контроль совместимости (никакого DLL-hell), fingerprints и т.д. и т.п.).
В С++ ничего этого нет, однако это не мешает создавать на нем ActiveX.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVC>>Я не любитель "теории заговора". AVC>>Однако, заговоры, тем не менее, бывают. AVC>>Или ты будешь это отрицать?
AVK>"Я ненавижу две вещи: расизм и негров".
К чему бы это?
Если ты хотел подловить меня на противоречии, то сделал это не в том месте.
В истории очень большое число подтвержденных, "документированных" заговоров.
Убийство Юлия Цезаря, Павла I и проч.
Это просто факты, а не теория.
Т.е. я вполне могу не быть сторонником "теории заговора" (т.е. во всех важных событиях видеть чей-то злой умысел), но при этом признавать общеизвестные факты.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>>>Я не любитель "теории заговора". AVC>>>Однако, заговоры, тем не менее, бывают. AVC>>>Или ты будешь это отрицать?
AVK>>"Я ненавижу две вещи: расизм и негров".
AVC>К чему бы это?
Очень похоже на твое высказывание. Сначала говоришь, что не любитель конспирологии, а потом все остальное сообщение именно ей и занимаешься.
AVC>Если ты хотел подловить меня на противоречии, то сделал это не в том месте. AVC>В истории очень большое число подтвержденных, "документированных" заговоров. AVC>Убийство Юлия Цезаря, Павла I и проч. AVC>Это просто факты, а не теория.
Вот вот.
AVC>Т.е. я вполне могу не быть сторонником "теории заговора"
Позволю себе в этом усомниться.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVC>>К чему бы это?
AVK>Очень похоже на твое высказывание. Сначала говоришь, что не любитель конспирологии, а потом все остальное сообщение именно ей и занимаешься.
Я не занимаюсь "конспирологией".
Просто не принимаю на веру чьи-то высказывания.
Аргумент Дарнея был, что он доверяет разработчикам языка (Java).
А мой в том, что я вижу слишком явное сходство важнейших (собственно, сделавших этот язык известным, если не считать рекламы) свойств Java и Оберона, и не вижу пока для Java иных источников этих свойств.
Назвыай это "конспирологией", если хочешь.
Но речь идет не о моей "подозрительности", а полной для меня очевидности связи Оберон — Ява.
AVC>>Если ты хотел подловить меня на противоречии, то сделал это не в том месте. AVC>>В истории очень большое число подтвержденных, "документированных" заговоров. AVC>>Убийство Юлия Цезаря, Павла I и проч. AVC>>Это просто факты, а не теория.
AVK>Вот вот.
А с чем ты не согласен?
С тем, что Юлия Цезаря и Павла I убили?
Или с тем, что их убили заговорщики (а не случайно, в пьяной кабацкой драке)?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Я не любитель "теории заговора". AVC>Однако, заговоры, тем не менее, бывают. AVC>Или ты будешь это отрицать?
Когда возникает предположение о наличии заговора, возникает один очень простой вопрос. Зачем этот заговор?
Но этот вопрос почему-то никогда не беспокоит любителей конспирологии.
AVC>Просто много нового шума (и флейма ). AVC>Правда, принципиально нового-то как раз и нет (что, кстати, и VladD2 признал).
У всего нового можно найти истоки, если хорошо покопаться. Но это не повод забыть про развитие.
Здравствуйте, Дарней, Вы писали:
Д>Когда возникает предположение о наличии заговора, возникает один очень простой вопрос. Зачем этот заговор? Д>Но этот вопрос почему-то никогда не беспокоит любителей конспирологии.
Что касается Явы, то ее рекламная компания велась в духе "нигде кроме, как в Моссельпроме".
Очень уж не вязалось бы с этим "победным духом" (Sun использовала даже немецкие военные марши ) скромное признание, что вот "мы взяли основную идею у ETH, а теперь рекламируем ее вам как свою".
Д>У всего нового можно найти истоки, если хорошо покопаться. Но это не повод забыть про развитие.
Согласен.
Но и путать развитие с модой тоже не стоит.
Развитие связано с нахождением лучших технических решений (т.е. с настоящими изобретениями), а мода — с желанием продавать что-то больше и чаще.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, FR, Вы писали:
Д>>знаешь, в чем твоя проблема? Ты просто уже решил априори, что единственно верная реализация КОП — это та, которая была в обероне. Д>>Ответь на один простой вопрос. Какой аргумент сможет тебя убедить, что оберон не имеет никакого отношения к появлению явы?
FR>Скорее всего какое-то отношение он к этому имеет, но очень маленькое.
Наверное, примерно то же самое думают бизнесмены об изобретателе.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
FR>>Скорее всего какое-то отношение он к этому имеет, но очень маленькое.
AVC>Наверное, примерно то же самое думают бизнесмены об изобретателе.
Здравствуйте, Left2, Вы писали:
L>А почему это в COM нет типобезопасности??
Потому что это универсальная компонентная модель для разных языков. В том числе для не типобезопасного С++. Соотвественно КОМ подразумевает ручной контроль за приведением ссылок и контроль времени жизни объектов.
L>Да и сборка мусора — для компонентной системы важно скорее наличие управления временем жизни обьектов, а не конкретный алгоритм. Худо-бедно reference counting c этим справляется.
Да, да, худо и бедно.
L>Да, мы ещё Corba забыли — там примерно то же самое...
Корба вообще не компонентная система. Это средство организации сетевого взаимодействия.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AVC, Вы писали:
AVC>Я не занимаюсь "конспирологией".
Твои сообщения говорят об обратном.
AVC>Просто не принимаю на веру чьи-то высказывания.
Да нет, если бы просто не принимал. Но ты ведь на основании отсутствия фактов, а не их наличия, делать далеко идущие выводы. Это и есть классическая конспирология, если не сказать сильнее.
AVC>А мой в том, что я вижу слишком явное сходство важнейших (собственно, сделавших этот язык известным, если не считать рекламы) свойств Java и Оберона, и не вижу пока для Java иных источников этих свойств.
Все императивные языки весьма похожи друг на друга, если сравнить их с функциональными, к примеру.
AVC>Назвыай это "конспирологией", если хочешь.
Коспирологией я называю другое.
AVC>Но речь идет не о моей "подозрительности", а полной для меня очевидности связи Оберон — Ява.
Не подкрепленной ничем, кроме твоей подозрительности. Что и требовалось доказать.
AVC>А с чем ты не согласен?
Со всем согласен. Просто ты в очередной раз продемонсрировал, какой ты нелюбитель теории заговоров.
AVC>С тем, что Юлия Цезаря и Павла I убили? AVC>Или с тем, что их убили заговорщики (а не случайно, в пьяной кабацкой драке)?
Хочешь поговорить об этом?
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AVC, Вы писали:
AVC>Что касается Явы, то ее рекламная компания велась в духе "нигде кроме, как в Моссельпроме".
Что не мешало им в 5 версии потырить некоторые особенности из шарпа, ничуть при том не скрывая, откуда растут концы.
AVC>Очень уж не вязалось бы с этим "победным духом" (Sun использовала даже немецкие военные марши ) скромное признание, что вот "мы взяли основную идею у ETH, а теперь рекламируем ее вам как свою".
Но при этом, по твоим же утверждениям, другие источники для Java они указывать не стеснялись.
Видишь ли, то что в Обероне были определенные идеи еще ничего не доказывает. Есть такое понятие, как идеи носящиеся в воздухе. КОП одна из них. И в этой ситуации найти единоличного автора идей КОП сродни попыткам найти единоличного автора, к примеру, коммунизма или либерализма.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, Дарней, Вы писали:
Д>конечного автомата вполне достаточно, ИМХО Д>не представляю, зачем усложнять протокол до такой степени, что КА станет недостаточно
ИМХО ты путаешь описание и реализацию. LR(1) грамматики, к примеру, вполне себе реализуются при помощи ДКА, но описываются все же тем же EBNF.
Андрей Михалыч, как мне кажется, имел ввиду немножко иное — инструментарий для преобразования EBNF в что либо конечное не такой уж и простой, на него придется потратить усилия. При том что в его конкретном случае задача всей мощи EBNF не требует, и можно обойтись простым декларативным язычком, который можно обработать либо каким нибудь несложным тулзом типа CoCo/R или даже XSLT.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, VladD2, Вы писали:
VD>Корба вообще не компонентная система. Это средство организации сетевого взаимодействия.
Ну, в версии 3.0 таки появилась спецификация КОП, но большинство тех, кто говорит о компонентности CORBA, как правило имеют ввиду ее предыдущие версии.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
AndrewVK wrote: > Видишь ли, то что в Обероне были определенные идеи еще ничего не > доказывает. Есть такое понятие, как идеи носящиеся в воздухе. КОП одна > из них. И в этой ситуации найти единоличного автора идей КОП сродни > попыткам найти единоличного автора, к примеру, коммунизма или либерализма.
Кстати, в Java не так уж много КОП было изначально. Нормальная спека на
JavaBeans появилась только где-то в 97 году, система версирования
классов не пошла дальше serialVersionUID, пакеты являются атомарными
единицами и т.п.
Здравствуйте, Cyberax, Вы писали:
C>Кстати, в Java не так уж много КОП было изначально. Нормальная спека на C>JavaBeans появилась только где-то в 97 году
Э, вот тут не надо путать стандартную компонентную модель и КОП собственно. Первая нужна для грамотной поддержки design-time или фенек вроде автоматического байндинга (замечу, что компонентной модели в Обероне, собственно, тоже не было (да и рефлекшена приличного), а в .NET это и посейчас реализовано ввиде библиотеки большей частью, а для WPF была создана другая модель, отличная от стандарнтной для FW) и работает, как правило, поверх второй, но, опять же, как правило, может и замещать данные о компонентах, полученных на основании рантайм поддержки КОП. А вот вторая как раз отражает возможность сборки приложения из независимых кусков в рантайме. И с этим у Java все было в порядке с самого начала.
Для тех, кто знаком с .NET — разница между КОП и компонентной моделью хорошо заметна на основе разницы между PropertyInfo и PropertyDescriptor соотв.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Ну, в версии 3.0 таки появилась спецификация КОП, но большинство тех, кто говорит о компонентности CORBA, как правило имеют ввиду ее предыдущие версии.
Не не появилась. Это надо видеть что они там под помонентностью понимают. Это чистой воды терминалогическая эквилибристика.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AndrewVK wrote: > Э, вот тут не надо путать стандартную компонентную модель и КОП > собственно. Первая нужна для грамотной поддержки design-time или фенек > вроде автоматического байндинга (замечу, что компонентной модели в > Обероне, собственно, тоже не было (да и рефлекшена приличного), а в .NET > это и посейчас реализовано ввиде библиотеки большей частью, а для WPF > была создана другая модель, отличная от стандарнтной для FW) и работает, > как правило, поверх второй, но, опять же, как правило, может и замещать > данные о компонентах, полученных на основании рантайм поддержки КОП. А > вот вторая как раз отражает возможность сборки приложения из независимых > кусков в рантайме. И с этим у Java все было в порядке с самого начала.
Ну такими темпами и в С++ есть поддержка КОП, так как почти везде есть
поддержка раздельной загрузки (в том числе и в runtime через DLL).
ИМХО, КОП-система должна как минимум предоставлять средства создания
компонентов и их версирования. Обоих фич в Java не было, разве что
считать "компонентами" отдельные классы.
Здравствуйте, Cyberax, Вы писали:
C>Ну такими темпами и в С++ есть поддержка КОП,
В С++ практически нету.
C>поддержка раздельной загрузки (в том числе и в runtime через DLL).
Но это не является частью C++.
C>ИМХО, КОП-система должна как минимум предоставлять средства создания C>компонентов и их версирования. Обоих фич в Java не было, разве что C>считать "компонентами" отдельные классы.
А так и есть — класс и в джаве и в дотнете является компонентом. Так что кавычки здесь без надобности.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>ИМХО ты путаешь описание и реализацию. LR(1) грамматики, к примеру, вполне себе реализуются при помощи ДКА, но описываются все же тем же EBNF.
как ты опишешь через ДКА грамматику с рекурсивными правилами?
Здравствуйте, AndrewVK, Вы писали:
AVC>>Что касается Явы, то ее рекламная компания велась в духе "нигде кроме, как в Моссельпроме".
AVK>Что не мешало им в 5 версии потырить некоторые особенности из шарпа, ничуть при том не скрывая, откуда растут концы.
Попробовали бы они...
Отсюда, ИМХО, и растут корни популярного убеждения, что сейчас идеи возникают "не в академической среде, а исключительно в промышленности".
Попробуй "стырь" у конкурента, а у "академиков" — запросто.
AVC>>Очень уж не вязалось бы с этим "победным духом" (Sun использовала даже немецкие военные марши ) скромное признание, что вот "мы взяли основную идею у ETH, а теперь рекламируем ее вам как свою".
AVK>Но при этом, по твоим же утверждениям, другие источники для Java они указывать не стеснялись.
Я и не думаю отрицать другие источники как таковые: ни Смоллток, ни Обджектив Си, ни др.
Вместе с тем, ИМХО, видно невооруженным глазом, что Ява в самом главном не похожа на оба этих замечательных языка.
(Я назвал Обджектив Си "смесью бульдога с носорогом" не потому, что это плохой язык, а потому что это смесь двух совершенно разных языков и подходов, нечто, далекое от той целостности, что необходима для КОП.)
AVK>Видишь ли, то что в Обероне были определенные идеи еще ничего не доказывает. Есть такое понятие, как идеи носящиеся в воздухе. КОП одна из них. И в этой ситуации найти единоличного автора идей КОП сродни попыткам найти единоличного автора, к примеру, коммунизма или либерализма.
Со всем этим я согласен.
Но в этой ветке я уже проводил различие между "благими пожеланиями" (носящимися в воздухе идеями ) и "техническими решениями" (на которых затем основываваются конкретные реализации).
Возможно, ты считаешь, что реализации тоже "носятся в воздухе"?
"Хозяйка, сапоги свистели над головой!" (c) м/ф про поросенка Фунтика
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AndrewVK, Вы писали:
AVC>>Просто не принимаю на веру чьи-то высказывания.
AVK>Да нет, если бы просто не принимал. Но ты ведь на основании отсутствия фактов, а не их наличия, делать далеко идущие выводы. Это и есть классическая конспирология, если не сказать сильнее.
Фактов полно, просто ты не хочешь их видеть.
Но сейчас, раз ты такой ценитель логики, я хочу обратить твое внимание на методологический момент: иногда отсутствие некоторых фактов — тоже факт.
У Конан Дойла Шерлок Холмс раскрывает преступление, опираясь как раз на тот факт, что собака не лаяла.
AVC>>А мой в том, что я вижу слишком явное сходство важнейших (собственно, сделавших этот язык известным, если не считать рекламы) свойств Java и Оберона, и не вижу пока для Java иных источников этих свойств.
AVK>Все императивные языки весьма похожи друг на друга, если сравнить их с функциональными, к примеру.
А безопасные и небезопасные языки — просто близнецы-братья, да?
AVC>>А с чем ты не согласен?
AVK>Со всем согласен. Просто ты в очередной раз продемонсрировал, какой ты нелюбитель теории заговоров.
Т.е. ты тоже согласен, что заговоры случаются, но при этом я "конспиролог", а ты "белый и пушистый"?
Прелестно!
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Фактов полно, просто ты не хочешь их видеть.
AVC>Но сейчас, раз ты такой ценитель логики, я хочу обратить твое внимание на методологический момент: иногда отсутствие некоторых фактов — тоже факт.
Отсутсвие фактов не может быть доказательством чего бы то ни было.
AVC>У Конан Дойла Шерлок Холмс раскрывает преступление, опираясь как раз на тот факт, что собака не лаяла. AVC>
А Иван-дурак на печи ездил.
AVK>>Все императивные языки весьма похожи друг на друга, если сравнить их с функциональными, к примеру.
AVC>А безопасные и небезопасные языки — просто близнецы-братья, да?
В какой то мере да.
AVK>>Со всем согласен. Просто ты в очередной раз продемонсрировал, какой ты нелюбитель теории заговоров.
AVC>Т.е. ты тоже согласен, что заговоры случаются, но при этом я "конспиролог", а ты "белый и пушистый"? AVC>Прелестно!
Хочешь потягаться со мной в демагогии? Право, не стоит.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AVC, Вы писали:
AVK>>Что не мешало им в 5 версии потырить некоторые особенности из шарпа, ничуть при том не скрывая, откуда растут концы.
AVC>Попробовали бы они...
И что бы с ними стало?
AVC>Отсюда, ИМХО, и растут корни популярного убеждения, что сейчас идеи возникают "не в академической среде, а исключительно в промышленности".
Ты к чему это сказал? Я, кажется, такого никогда не утверждал.
AVC>Попробуй "стырь" у конкурента, а у "академиков" — запросто.
Но ведь стырили же, и ничего.
AVK>>Но при этом, по твоим же утверждениям, другие источники для Java они указывать не стеснялись.
AVC>Я и не думаю отрицать другие источники как таковые: ни Смоллток, ни Обджектив Си, ни др.
Так почему же именно Оберон не упоминают? Уж не потому ли, что на самом деле он особого влияния не оказал?
AVK>>Видишь ли, то что в Обероне были определенные идеи еще ничего не доказывает. Есть такое понятие, как идеи носящиеся в воздухе. КОП одна из них. И в этой ситуации найти единоличного автора идей КОП сродни попыткам найти единоличного автора, к примеру, коммунизма или либерализма.
AVC>Со всем этим я согласен. AVC>Но в этой ветке я уже проводил различие между "благими пожеланиями" (носящимися в воздухе идеями ) и "техническими решениями" (на которых затем основываваются конкретные реализации).Возможно, ты считаешь, что реализации тоже "носятся в воздухе"?
А что в реализации Java от Оберона? Неужели злобные сановцы потырили Обероновский код?
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
Д>>как ты опишешь через ДКА грамматику с рекурсивными правилами?
AVK>Тебе сказать, где yacc найти?
Обрати внимание на то, что в YACC есть стек.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AndrewVK, Вы писали:
AVK>Э, вот тут не надо путать стандартную компонентную модель и КОП собственно. Первая нужна для грамотной поддержки design-time или фенек вроде автоматического байндинга (замечу, что компонентной модели в Обероне, собственно, тоже не было (да и рефлекшена приличного), а в .NET это и посейчас реализовано ввиде библиотеки большей частью, а для WPF была создана другая модель, отличная от стандарнтной для FW) и работает, как правило, поверх второй, но, опять же, как правило, может и замещать данные о компонентах, полученных на основании рантайм поддержки КОП. А вот вторая как раз отражает возможность сборки приложения из независимых кусков в рантайме. И с этим у Java все было в порядке с самого начала.
Думается, без рефлексии Оберон вообще не мог бы существовать.
Ведь в нем нет ни отдельных программ, ни главной(main) функции.
Поэтому пользовательский интерфейс был основан на командах.
Команды — это процедуры, доступные по паре имен: "Модуль.Процедура".
При получении команды производился поиск модуля (и, если он не был загружен, его загрузка) и соответствующей процедуры, затем вызов процедуры.
Чуть позже такой механизм стал применяться к сохранению/загрузке составных документов.
Кроме того, обероновский сборщик мусора вряд ли бы смог работать без элементов рефлексии.
Смещения полей записи, содержащих указатели, перечислены в дескрипторе типа, к которому сборщик мусора обращается в процессе работы.
Динамическое определение типа также, пожалуй, можно отнести к рефлексии, т.к. необходимая для этого информация также извлекается из дескриптора типа.
Возможно, вся эта рефлексия чем-то "неприлична", но факт, что она была (и есть) и отлично справлялась со своими задачами.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AndrewVK, Вы писали:
AVC>>Но сейчас, раз ты такой ценитель логики, я хочу обратить твое внимание на методологический момент: иногда отсутствие некоторых фактов — тоже факт.
AVK>Отсутсвие фактов не может быть доказательством чего бы то ни было.
Повторю мысль, что отсутствие фактов — тоже факт.
Например, у англичан есть поговорка "No news is good news".
AVC>>У Конан Дойла Шерлок Холмс раскрывает преступление, опираясь как раз на тот факт, что собака не лаяла. AVC>>
AVK>А Иван-дурак на печи ездил.
Вот ты все шутишь.
А взял бы и прочел рассказец.
Кажется, он назывался "Приключение Сильвера Блэйза" ("The Adventure of Silver Blaze").
(Конан-Дойла дочка с собой забрала, отсюда некоторая неуверенность в названии. )
AVK>>>Все императивные языки весьма похожи друг на друга, если сравнить их с функциональными, к примеру.
AVC>>А безопасные и небезопасные языки — просто близнецы-братья, да?
AVK>В какой то мере да.
Вот мы с тобой и расходимся в том, в какой именно мере.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AndrewVK, Вы писали:
AVK>Так почему же именно Оберон не упоминают? Уж не потому ли, что на самом деле он особого влияния не оказал?
<...> AVK>А что в реализации Java от Оберона? Неужели злобные сановцы потырили Обероновский код?
Много чего от Оберона.
В Обероне еще в начале 1990-х был встроенный веб-браузер с поддержкой апплетов (насколько я слышал, он днмонстрировался на JMLC тех лет).
Разработанная Францем в рамках технологии OMI (Oberon Module Interchange) "кодогенерация на лету" (ставшая темой его диссертации; на эту же тему он читал лекции в Sun; а в качестве спасибо — полное отсутствие прямых ссылок на Оберон со стороны создателей Явы) стала теоретической основой JIT-, AOC- и DAC-компиляторов Явы.
Известно, что виртовские компиляторы Модулы-2 и Оберона тщательно изучались в Sun (об этом и Вирт говорил; возможно, он и консультации давал, старый добрый дедушка-профессор) и повлияли на компиляторы Явы: https://lists.inf.ethz.ch/pipermail/oberon/2003/003073.html
Так что насчет "потырили код" ты, наверное, где-то прав.
Но дело не в том, что что-то заимствовали, а в том, что скрыли источник заимствований.
Вместо спасибо.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVK>>Отсутсвие фактов не может быть доказательством чего бы то ни было.
AVC>Повторю мысль, что отсутствие фактов — тоже факт.
Можешь сколь угодно ее повторять, правдой от этого она не станет.
AVC>>>У Конан Дойла Шерлок Холмс раскрывает преступление, опираясь как раз на тот факт, что собака не лаяла. AVC>>>
AVK>>А Иван-дурак на печи ездил.
AVC>Вот ты все шутишь.
По иному на подобное реагировать невозможно. Когда за доказательства выдаются художественные произведения или поговорки, это говорит о полном отсутствии нормальных аргументов.
AVC>>>А безопасные и небезопасные языки — просто близнецы-братья, да? AVK>>В какой то мере да.
AVC>Вот мы с тобой и расходимся в том, в какой именно мере.
И что? От этого ты сразу становишься прав?
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AVC, Вы писали:
AVC>Много чего от Оберона. AVC>В Обероне еще в начале 1990-х был встроенный веб-браузер с поддержкой апплетов (насколько я слышал, он днмонстрировался на JMLC тех лет).
И код этого браузера был утырен в Java?
AVC>Разработанная Францем в рамках технологии OMI (Oberon Module Interchange) "кодогенерация на лету" (ставшая темой его диссертации; на эту же тему он читал лекции в Sun;
Тебе уже сказали — аргументация в стиле после этого, значит вследствие этого есть чистейшей воды демагогия.
AVC> а в качестве спасибо — полное отсутствие прямых ссылок на Оберон со стороны создателей Явы) стала теоретической основой JIT-, AOC- и DAC-компиляторов Явы.
Доказательства в студию.
AVC>Известно,
Кому известно?
AVC> что виртовские компиляторы Модулы-2 и Оберона тщательно изучались в Sun (об этом и Вирт говорил;
Вирт в Sun работал? Ссылки на точные цитаты Вирта в студию.
AVC> возможно, он и консультации давал, старый добрый дедушка-профессор) и повлияли на компиляторы Явы:
А возможно и нет.
AVC>Так что насчет "потырили код" ты, наверное, где-то прав.
Я этого не утверждал.
AVC>Но дело не в том, что что-то заимствовали, а в том, что скрыли источник заимствований.
Для начала надо доказать, что код был заимствован.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, Дарней, Вы писали:
AVK>>Тебе сказать, где yacc найти?
Д>ты хочешь сказать, что yacc — чистый КА безо всяких надстроек?
Не просто КА, ДКА. Другое дело что реальные парсеры конечно почти никогда вчистую в LR(1) не укладываются.
Если же говорить о просто КА, то в его рамки укладывается абсолютно любой детерминированный алгоритм. Доказать просто — машина Тьюринга реализуется без проблем ввиде КА.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
AndrewVK wrote: > Доказать просто — машина Тьюринга реализуется без проблем ввиде КА.
Какой конечный автомат будет соответствовать вот такой программе:
for(int f=0;;++f)
printf("%d\n",f);
?
(для чистой МТ печать заменяем добавлением строки на ленту)
Здравствуйте, AndrewVK, Вы писали:
AVC>>Известно,
AVK>Кому известно?
AVC>> что виртовские компиляторы Модулы-2 и Оберона тщательно изучались в Sun (об этом и Вирт говорил;
AVK>Вирт в Sun работал? Ссылки на точные цитаты Вирта в студию.
Вот что пишут по указанной мной сылке:
in Prof. Wirth's festschrift "The School of Niklaus Wirth — The Art of
Simplicity" there is an essay by Robert Griesemer and Srdjan Mirovic of Sun Microsystems called "A Compiler for the Java HotSpot Virtual
Machine". The abstract includes the following "Its code generator was
strongly influenced by the design of Niklaus Wirth's Modula-2 and
Oberon compilers" and goes on to mention that the compiler is part of
the standard Java 2 RTE. There is more along the same lines in the
paper.
Ясно сказано, что статья написана сотрудниками Sun Microsystems.
AFAIK, один из них (Robert Griesemer) бывший аспирант Вирта, защитивший в ETH диссертацию на тему "A Programming Language for Vector Computers".
Прошлой осенью Вирт приезжал в Россию (довольно надолго — был здесь больше месяца).
Во время этого пребывания он читал в разных местах лекции (в принципе, одну и ту же лекцию, с вариациями, некий прообраз "Хороших идей"
Компания Sun, как и другие, купила исходные коды. За очень недорого, кстати. Они очень серьезно исследовали этот код, я знаю это. Через семь лет после выхода ОБЕРОНА они выпустили Java. В Java заимствовано несколько идей из ОБЕРОНА, но они коррумпировали его синтаксисом языка "С". С точки зрения продавцов это был достаточно умный ход.
Один молодой человек задал вопрос о том, что Вирт думает о Java и C#, акцентируя особое внимание на то, что в них есть сборщик мусора и всё такое, и что вообще писать программы на них гораздо лучше. Он говорил на очень хорошем английском языке, так что переводчик не потребовался. Интонация вопроса была таковой, что, как я понял, задававший вопрос молодой человек был абсолютно не в курсе относительно Оберонов и Оберон-систем (видимо знал только Паскаль 1970 года) и поэтому сделал такой сильный акцент на том, что вот мол, хе-хе, в Java и C# есть сборщики мусора, прогрессивные языки-то, не то, что там какой-то допотопный Паскаль!!! Вирт попросил разрешения сначала ответить на второй вопрос — про сборщики мусора. Он сказал, что сборщики мусора — это, конечно, хорошо, и программисты о них, конечно, должны знать. Но не стоит их так вот сильно выпячивать. Дескать, что тут такого-то? Ну, обычный сборщик мусора, кого этим можно удивить? Далее ответил про Java. Вирт очень спокойно так рассказал, что создатели Java за семь лет до ее создания очень подробно изучили исходные коды Оберона и, в частности, исходные коды оберонистых сборщиков мусора они тоже очень хорошо изучили. Далее испортили (corrupted) Оберон сишным синтаксисом и обозвали получившееся словом Java. Кстати, заметил Вирт, то, что они испортили его сишным синтаксисом, был хороший маркетинговый ход с их стороны. Что касается .Net, то она появилась в результате конкуренции, и в принципе они (Java и .Net) более-менее одинаковые.
Хотя информация попала из разных мест и от разных людей, совпадение достаточно полное, чтобы сомневаться в том, что именно Вирт сказал о Java.
Обращаю внимание на то, что в обоих случаях это был ответ на вопрос из зала.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Left2, Вы писали:
АХ>>С другой стороны, если вы работаете с Windows постоянно приходится обновлять дорогое ПО и Железо (вон чтобы Висту установить нехилая система будет нужна!), АХ>>для Linux это не обязательно, поскольку основные стандарты не меняются и многое ПО там бесплатно.
L>Извините, а что в виндоус сделано такого что она постоянно требует обновления железа? То есть, Win 98 поставленная на Celeron 333 через какое-то время потребует апгрейта до P4?
Согласен. Это натуральные инсунуации. Это новые версии ОС рассчитаны на новое железо. И потребляют они больше именно из-за этого. Так же Виста в режиме без Аэро и другой хрени мало чем отличается от W2k. И линукс образца 1997-го года потреблял ресурсов куда меньше чем образца 2006-го. Вот только Линукс 1997-го года выпуска вообще на современном железе будет вести себя весма странно. Помнится у них таогда даже такие простые вещи как объем раздела отводимый для виртуалной памяти был огрничен где-то 128 метрами. На сегодня это просто смешно.
Виста на современной машине летает как трофейный мессер. Это я говорю по собственному опыту. А на машины класса Pentium 90 она банально не рассчитана. Windows 95 же будет прекрасно работать на этом самом Pentium 90 до тех пор пока железо не загнется от времени. А на современную машину ставить Windows 95 — это маразм.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Вертер, Вы писали:
В>по своему личному наблюдению, с 1998 года доля линукса в конторах, в которых я работал не вырастала, а наоборот, немного падала...
Линукс рулит в области дешевого хостинга. Там он сильно поимел Виндовс. Ну, на десктопе он дальше пиар-акции не пошел.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Если ты хочешь, например, создать новую железку (какой-нибудь наладонник или еще чего), то ты можешь в качестве ОС взять Линукс и модифицировать ядро под специфику железа. АХ>Значительно проще чем изобретать велосипед, разрабатывая свою ОС.
Но вот практика показывает, что те же телефоны и КПК в основном работают не под Линукс. А ведь по твоей логике должно быть наоборот.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>Не просто КА, ДКА. Другое дело что реальные парсеры конечно почти никогда вчистую в LR(1) не укладываются.
состояние КА описывается одним-единственным числом — номером состояния. В отличие от него, парсер LR(1) должен иметь стек, без него он невозможен.
AVK>Если же говорить о просто КА, то в его рамки укладывается абсолютно любой детерминированный алгоритм. Доказать просто — машина Тьюринга реализуется без проблем ввиде КА.
Одно из очень важных свойств машины Тьюринга — это возможность не только читать, но и записывать в клетки ленты. В отличие от этого, у конечного автомата может меняться только его текущее состояние.
В общем, по основам computer science — незачет.
VladD2 wrote: > Согласен. Это натуральные инсунуации. Это новые версии ОС рассчитаны на > новое железо. И потребляют они больше именно из-за этого. Так же Виста в > режиме без Аэро и другой хрени мало чем отличается от W2k. И линукс > образца 1997-го года потреблял ресурсов куда меньше чем образца 2006-го.
Неправда. Линукс образца 2006 года можно сконфигурировать для работы на
машинах 1997 года — энтузиасты его на чистый 386 спортировали.
> Вот только Линукс 1997-го года выпуска вообще на современном железе > будет вести себя весма странно. Помнится у них таогда даже такие простые > вещи как объем раздела отводимый для виртуалной памяти был огрничен > где-то 128 метрами. На сегодня это просто смешно.
В 97 году этого уже не было.
Здравствуйте, AVC, Вы писали:
AVC>Я здесь немного не понял.
Да ты ту вобще ничего не понял. AVC>Любой регулярный язык может быть выражен с помощью EBNF.
А кто спорит? Я говорю о том что EBNF тут нафиг не упал. AVC>Если же в языке есть рекурсия (он не регулярный), то как обойтись без стека?
А зачем тебе нужна рекурсия? Что-то я не знаю ни одного рекурсивного протокола общения. А в подавляющем большинстве случаев все банально сводится к запрос/ответ. AVC>Вообще, почему ты так раскритиковал EBNF?
По тому что контроль EBNF в общем случае реализовать очень накладно. Я некоторое время назад возился с Адаптированный алгоритм Эрли — описание
посмотри во что вылевается EBNF в общем случае...
Те на практике будет реализованно некое подмножество типа LL(1). AVC>Ведь EBNF — это расширенная BNF, т.е. EBNF = BNF + циклы + опции. AVC>Т.е. EBNF, по идее, как минимум не уступает по мощности BNF. AVC>Приверженность Вирта к языкам программирования с LL(1)-грамматикамми (чтобы код был читабельным) никак не связана с мощностью EBNF.
LL(1) к читабельности не имеет ну никакого отношения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndrewVK, Вы писали:
AVK>ИМХО ты путаешь описание и реализацию. LR(1) грамматики, к примеру, вполне себе реализуются при помощи ДКА, но описываются все же тем же EBNF. AVK>Андрей Михалыч, как мне кажется, имел ввиду немножко иное — инструментарий для преобразования EBNF в что либо конечное не такой уж и простой, на него придется потратить усилия. При том что в его конкретном случае задача всей мощи EBNF не требует, и можно обойтись простым декларативным язычком, который можно обработать либо каким нибудь несложным тулзом типа CoCo/R или даже XSLT.
Нет Андрей Владимирович я считаю что для описания протоколов вобще EBNF нафиг не упал. А EBNF в общем случае это ахренительная задачка... Алгоритм Эрли жрет просто невообразимое колличество ресурсов.
А что касается преобразованием некоторого декларативного язычка то я использую другую мегатулзу nemerle называется. Получается намного проще чем всякие коки и тем болие XSLT.
Скажем в случае с nemerle нет проблем с заглядыванием на несколько токенов вперед ибо pattern-matching с сахаром для списков рулит.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, eao197, Вы писали:
WH>>Если я правильно понял то что написано в твоей статье сообщения отсылаются не в канал, а агенту? E>Это внутри одного процесса. E>Если же организуется распределенное приложение из нескольких процессов, то все они должны быть соеденены коммуникационными каналами.
Дело в том что я вобще не хочу знать насколько далеко расположен процесс с которым идет общение.
Те в коде общение с процессом в соседнем фибере и с процессом расположенным на другом конце света должно быть одинаковым.
E>Если процесс завершается корректно и корректно закрывает свои каналы, то удаленная сторона это сразу же обнаруживает и считает канал закрытым, о чем SObjectizer информирует прикладной код посредством сообщения msg_client_disconnected.
У тебя завершается процесс ОС так? А мне процессы ОС по крайней мере таких как винда и линух создавать и убивать ооооооочень накладно.
Вот по этому я делаю "зеление процессы" (по аналогии с green thread) таких чтобы можно было плодить и убивать тысячами.
Еще у меня есть задача максимально упростить прикладной код. Те когда процесс понимает что дальше работать не имеет смысла он должени иметь возможность просто застрелися например выбросив исключение из глубины в несколько вызовов и все. Его партнеры висящие на канале который неожиданно закрывается получают что-то типа ChannelClosedException и тоже застреливаются возможно выполнив некую дополнительную работу типа отката транзакции.
Таким образом получается каскадное завершение процессов. Если они конечно не расчитывают на то что канал будет закрыт.
E>Однако, при использовании SOP требуется, чтобы поток дробился на одельные сообщения на прикладном уровне, поскольку SObjectizer сначала закачивает все сообщение в память и только потом доставляет его обрабатывающему агенту. Поэтому, если весь поток будет представлен одим сообщением, то сам понимаешь. А вот если поток разбивается на серию сообщений, то каждое сообщение может обрабатываться по мере поступления.
А мне очень часто нужно потоки передавать... я не хочу заморачиватся этим в прикладном коде.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Неумелый переход на личности поскипан.
AVC>Что касается других тезисов WolfHound-а (а они сводятся к тому, что активные объекты — это плохо), то, ИМХО, они того же типа, что и мысль про EBNF. AVC>Возможность в Активном Обероне и Зонноне работать с активными объектами — это дополнительная (и очень хорошая) возможность, как и циклы в EBNF.
Хоть бы попытался понять о чем я говорю...
Еще раз активные объекты плохоя идея не по тому что они есть в Виртовских языках, а просто по тому что это плохая идея.
Ну нельзя вешать протокол общения на объект. Ну не работет это если объекту нужно общатся с несколькими клиентами. Не работает просто по тому что работать не может ибо состояние одно на всех. Особенно весело это становится если разным клиентам нужны разные протоколы.
Также это плохая идея по тому что все плавает в одном объектном пространстве. И эффективно оно может работать только на одном процессоре (хотя множество изолированных объектных пространств всеравно будут работать лучше ибо ГЦ можно запускать по очереди для каждого из них и сканировать ему нужно меньше). Если появляется второй то мы получаем огромные штрафы при вызове мусорщика ибо встают сразу ВСЕ потоки и ВСЕ процессоры в то время как можно тормознуть только один (а то и тормознуть частично вытясная ГЦ убирающий один процесс болие приоритетным процессом). А в случае кластера (про болие распределенную систему я вобще молчу) один ГЦ на всех просто не работает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
AVC>>Если же в языке есть рекурсия (он не регулярный), то как обойтись без стека? WH>А зачем тебе нужна рекурсия? Что-то я не знаю ни одного рекурсивного протокола общения. А в подавляющем большинстве случаев все банально сводится к запрос/ответ.
Вопрос: в большинстве случаев или всегда?
AVC>>Вообще, почему ты так раскритиковал EBNF? WH>По тому что контроль EBNF в общем случае реализовать очень накладно. Я некоторое время назад возился с Адаптированный алгоритм Эрли — описание
посмотри во что вылевается EBNF в общем случае... WH>Те на практике будет реализованно некое подмножество типа LL(1).
А какая альтернатива у EBNF в данном случае?
AVC>>Приверженность Вирта к языкам программирования с LL(1)-грамматикамми (чтобы код был читабельным) никак не связана с мощностью EBNF. WH>LL(1) к читабельности не имеет ну никакого отношения.
Мне показалось, что буквально несколькими строчками ранее ты обосновывал, что с помощью EBNF только LL(1) можно разобрать эффективно.
Это не читабельность?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, WolfHound, Вы писали:
E>>Если же организуется распределенное приложение из нескольких процессов, то все они должны быть соеденены коммуникационными каналами. WH>Дело в том что я вобще не хочу знать насколько далеко расположен процесс с которым идет общение. WH>Те в коде общение с процессом в соседнем фибере и с процессом расположенным на другом конце света должно быть одинаковым.
Оно совершенно спокойно делается одинаковым, поскольку для каждого сообщения в системе сохраняется информация о канале, из которого оно получено (имя этого канала доступно через event_data_t::channel()). Если же сообщение было сгенерированно в том же процессе, то event_data_t::channel() будет возвращать специальное значение -- localhost. Если затем это значение передается как идентификатор канала в send_msg, то send_msg понимает, что сообщение не должно уходить за рамки процесса. Поэтому, если обработка сообщения выглядит как-то так:
void
some_agent::evt_request(
const so_4::rt::event_data_t & event_data,
const msg_request & cmd )
{
// Обработка...
// Отсылка ответа.
so_4::api::send_msg(
// Отправляем ответ в точности тому, кто прислал запрос.
event_data.channel(),
global_agent_name,
"msg_response", ... );
}
Совершенно прозрачная схема работы.
E>>Если процесс завершается корректно и корректно закрывает свои каналы, то удаленная сторона это сразу же обнаруживает и считает канал закрытым, о чем SObjectizer информирует прикладной код посредством сообщения msg_client_disconnected. WH>У тебя завершается процесс ОС так? А мне процессы ОС по крайней мере таких как винда и линух создавать и убивать ооооооочень накладно.
Ну ты же сам сначала сказал про мелкие процессы. Процессы -- это вполне конкретное понятие (если только речь идет не об Erlang-е). Тоже о чем ты говоришь ниже -- это потоки внутри одного процесса.
Кстати, у тебя есть конкретые замеры накладных расходов на создание процессов в Linux-е?
WH>Вот по этому я делаю "зеление процессы" (по аналогии с green thread) таких чтобы можно было плодить и убивать тысячами.
В этом случае в SObjectizer вообще не нужно процессы плодить -- достаточно насоздавать столько агентов, сколько нужно. Хоть сотни тысяч.
E>>Однако, при использовании SOP требуется, чтобы поток дробился на одельные сообщения на прикладном уровне, поскольку SObjectizer сначала закачивает все сообщение в память и только потом доставляет его обрабатывающему агенту. Поэтому, если весь поток будет представлен одим сообщением, то сам понимаешь. А вот если поток разбивается на серию сообщений, то каждое сообщение может обрабатываться по мере поступления. WH>А мне очень часто нужно потоки передавать... я не хочу заморачиватся этим в прикладном коде.
Интересно, а какие готовые прикладные протоколы такое ввобще из коробки позволяют поддерживать?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, AVC, Вы писали:
WH>>А зачем тебе нужна рекурсия? Что-то я не знаю ни одного рекурсивного протокола общения. А в подавляющем большинстве случаев все банально сводится к запрос/ответ. AVC>Вопрос: в большинстве случаев или всегда?
Приведи хоть один реальный протокол в котором есть рекурсия.
AVC>А какая альтернатива у EBNF в данном случае?
В данном случае он не нужен.
Кстати на твой EBNF я могу сказать что контекстно свободных грамматик мне не хватает и мне нужны контекстно зависимые... А это совсем тушите свет.
AVC>Мне показалось, что буквально несколькими строчками ранее ты обосновывал, что с помощью EBNF только LL(1) можно разобрать эффективно. AVC>Это не читабельность?
Чего обосновывал? Ты не путай эффективную реализацию для машины и читабельность для человека. Это совершенно разные вещи. И одно от другого никак не зависит.
Взять теже регулярные выриажения... ну совершенно не читаемая штука но компом парсится на раз, а C# человеком читается легко но компу его разобрать не просто. А языки с выводом типов типа немерле для компа вобще задачка на гране возможного но вот человеком они читаются очень легко.
Так что не нужно из раза в раз повторять эту Виртувскую глупость что читабельность LL(1) грамматик лучше чем у грамматик которые в LL(1) не укладываются.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Дарней, Вы писали:
Д>состояние КА описывается одним-единственным числом — номером состояния. В отличие от него, парсер LR(1) должен иметь стек, без него он невозможен.
Конечный автомат (в теории алгоритмов) — математическая абстракция, позволяющая описывать пути изменения состояния объекта в зависимости от его текущего состояния и входных данных, при условии что общее возможное количество состояний конечно.
Вот, собственно и все ограничение — количество состояний конечно. А уж что из себя это состояние представляет — не суть важно. Поскольку стек на любой реальной машине конечен, то и его использование совсем не означает, что это не КА.
WolfHound wrote: > AVC>Вопрос: в большинстве случаев или *всегда*? > Приведи хоть один реальный протокол в котором есть рекурсия.
Передача древесных данных?
Здравствуйте, WolfHound, Вы писали:
WH>Нет Андрей Владимирович я считаю что для описания протоколов вобще EBNF нафиг не упал. А EBNF в общем случае это ахренительная задачка... Алгоритм Эрли жрет просто невообразимое колличество ресурсов.
Так я, собственно, это и написал. Никаких смысловых отличий.
WH>А что касается преобразованием некоторого декларативного язычка то я использую другую мегатулзу nemerle называется. Получается намного проще чем всякие коки и тем болие XSLT.
Это детали реализации. В аспекте данного разговора они не очень интересны.
Здравствуйте, Дарней, Вы писали:
Д> Одно из очень важных свойств машины Тьюринга — это возможность не только читать, но и записывать в клетки ленты. В отличие от этого, у конечного автомата может меняться только его текущее состояние.
У машины Тьюринга лента бесконечна. Если ленту ограничить то получим конечный автомат.
AndrewVK wrote: > Но размер этого самого числа не лимитирован и может быть сколь угодно > большим (хотя и не бесконечным).
Поэтому КА и неэквивалентен МТ, так как у МТ может быть бесконечно много
состояний.
Здравствуйте, eao197, Вы писали:
E>Оно совершенно спокойно делается одинаковым, поскольку для каждого сообщения в системе сохраняется информация о канале
хъ E>E>Совершенно прозрачная схема работы.
Я вобще не вижу смысла в отсылке сообщения процессу. ИМХО сообщения нужно слать по логическим каналам которые являются совершенно отдельной сущьностью.
E>E>Ну ты же сам сначала сказал про мелкие процессы. Процессы -- это вполне конкретное понятие (если только речь идет не об Erlang-е). Тоже о чем ты говоришь ниже -- это потоки внутри одного процесса.
Процесс это понятие логическое. Я понимаю процесс как некое замкнутое объектное пространство. Те они могут бать даже в одном адресном пространстве это ничего не изменит.
E>Кстати, у тебя есть конкретые замеры накладных расходов на создание процессов в Linux-е?
Ну сам прикинь во что выльется fork сервера с 500 потоками работающим под нагрузкой до красна разогревающией 4-х процессорную машину...
E>В этом случае в SObjectizer вообще не нужно процессы плодить -- достаточно насоздавать столько агентов, сколько нужно. Хоть сотни тысяч.
Ты же в статье писал что SObjectizer плохо работает в среде с большим колличеством агентов?
E>Интересно, а какие готовые прикладные протоколы такое ввобще из коробки позволяют поддерживать?
На сколько мне известно никакие. Вот и пишу свой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Cyberax, Вы писали:
>> Приведи хоть один реальный протокол в котором есть рекурсия. C>Передача древесных данных?
И где можно почитать об этом "реальном" протоколе?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
E>>Оно совершенно спокойно делается одинаковым, поскольку для каждого сообщения в системе сохраняется информация о канале WH>хъ E>>E>Совершенно прозрачная схема работы. WH>Я вобще не вижу смысла в отсылке сообщения процессу. ИМХО сообщения нужно слать по логическим каналам которые являются совершенно отдельной сущьностью.
Просто в SObjectizer своя модель взаимодействия. Что-то вроде модели publisher/subscriber, но при этом есть возможность организовывать в ее рамках peer-to-peer взаимодействие, если использовать идентификаторы коммуникационных каналов, через которые доступны subscriber-ы.
Это базовый механизм, на основе которых можно строить другие средства. Например, у нас используется надстройка над SObjectizer под названием mbapi (message box api), в которой есть понятие идентификатора почтового ящика (т.н. mbox). Все сообщения отсылаются на уникальные mbox-ы. Самы подсистема mbapi определяет, через какой коммуникационный канал процессу доступен конкретный mbox и при отсылке на него сообщения сама отправляет сообщение в этот канал.
E>>E>Ну ты же сам сначала сказал про мелкие процессы. Процессы -- это вполне конкретное понятие (если только речь идет не об Erlang-е). Тоже о чем ты говоришь ниже -- это потоки внутри одного процесса. WH>Процесс это понятие логическое. Я понимаю процесс как некое замкнутое объектное пространство. Те они могут бать даже в одном адресном пространстве это ничего не изменит.
Ну здесь на лицо разная трактовка терминов.
E>>Кстати, у тебя есть конкретые замеры накладных расходов на создание процессов в Linux-е? WH>Ну сам прикинь во что выльется fork сервера с 500 потоками работающим под нагрузкой до красна разогревающией 4-х процессорную машину...
Дык зачем было делать сервер с 500-ми потоками, если можно было сделать 500 маленьких процессов?
Я просто к тому спрашиваю, что бытует мнение о большей дешевизне старта нового процесса под Unix-ом, чем под Windows. Вот мне и интересно, делал ли ты сам для своей предметной области свои собственные замеры?
E>>В этом случае в SObjectizer вообще не нужно процессы плодить -- достаточно насоздавать столько агентов, сколько нужно. Хоть сотни тысяч. WH>Ты же в статье писал что SObjectizer плохо работает в среде с большим колличеством агентов?
Я писал не о накладных расходах самого SObjectizer. С этим как раз проблем особых нет. Вот, например, в текущей третьей бете версии 4.4, которую я сейчас готовлю к релизу, есть реализация вот этой задачки
(N -- количество агентов (customer-ов), M -- количество токенов). Значения registration показывают результаты регистрации агентов в SObjectizer, значения ringing -- результаты пересылки сообщений по кольцу (общее время, стоимость одной операции и количество операций в секунду). Тест завершается когда каждый из агентов M раз перешлет через себя токен (т.е. общее количесво сообщений в тесте -- N*M). Машина -- Pentium M 1.5GHz, 512Mb, VC++7.1.
Как видишь, производительность при увеличении количества агентов снижается не слишком сильно.
Затыки могут произойти, если будет большое (порядка нескольких тысяч) таймерных заявок, которые срабатывают приблизительно в одно время и которые не успевают обрабатываться до того, как наступит следующее время их срабатывания. Но это вполне понятная ситуация.
Я говорил о том, что если даже элементарные операции начинать делать через агентов, то на логическом уровне создается совершенно лишний геморрой. Ну например, если какой-то агент обрабатывает чей-то запрос и хочет записать информацию об этом запросе в специальный регистрационный файл, снабдив запись, для надежности SHA1 хешем. Простое решение -- прямо здесь же вычислить SHA1 хеш, открыть файл, сделать запись и закрыть файл. Но, если для каждой операции выделить своего агента (для вычисления хеша, для записи в файл) и выполнять данную операцию путем обмена сообщениями между такими мелкими агентами, тогда само программирование на агентах превратиться в кошмар. Хотя SObjectizer все это дело разрулит
E>>Интересно, а какие готовые прикладные протоколы такое ввобще из коробки позволяют поддерживать? WH>На сколько мне известно никакие. Вот и пишу свой.
Ну дык тебе все равно придется твой поток на пакеты разбивать, каждый пакет помечать, делать механизм доката потерянных пакетов и пр. Только делать это будет не твой прикладной код, а вспомогательный слой, который это дело от прикладного кода будет скрывать. Прикладные протоколы на основе SObjectizer аналогичным образом делаются, только для доставки отдельных пакетов сообщения агентов будут использоваться. А сами эти агенты как раз и будут образовывать такой промежуточный слой.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
WolfHound wrote: > E>E>Ну ты же сам сначала сказал про мелкие /процессы/. Процессы -- это > вполне конкретное понятие (если только речь идет не об Erlang-е). Тоже о > чем ты говоришь ниже -- это потоки внутри одного процесса. > Процесс это понятие логическое. Я понимаю процесс как некое замкнутое > объектное пространство. Те они могут бать даже в одном адресном > пространстве это ничего не изменит.
Какие проблемы организовать это в C++ или C#? Глобальные и статические
переменные только нужно будет заменить на контестно-зависимые.
WolfHound wrote: >> > Приведи хоть один реальный протокол в котором есть рекурсия. > C>Передача древесных данных? > И где можно почитать об этом "реальном" протоколе?
Сам догадайся. Вот пример:
AndrewVK wrote: > C>, так как у МТ может быть бесконечно много > C>состояний. > Ага. Другое дело, что для любой существующей реализации МТ это не так.
Ну так весь мир — это один большой КА
Здравствуйте, VladD2, Вы писали:
AVK>>Ну, в версии 3.0 таки появилась спецификация КОП, но большинство тех, кто говорит о компонентности CORBA, как правило имеют ввиду ее предыдущие версии.
VD>Не не появилась. Это надо видеть что они там под помонентностью понимают.
И что они там под компонентностью понимают?
VD>Это чистой воды терминалогическая эквилибристика.
Да нет. Такая же точно компонентность как и везде. Есть только одно маааленькое отличие: компоненты CORBA не создаются сами по себе "из воздуха". Объекты верхнего уровня — службы, ресолвятся, т.е. ищутся и находятся, а затем эти службы выступают как фабрики компонент и проводники метаинформации. Тут все логично, ведь речь идет о распределенных гетерогенных системах, т.е. каждая "железка" или ОС создает бинарные компоненты, которые могут исполнятся именно на ее платформе. Ну а после создания они прекрасно работают совместно по сети.
Здравствуйте, Cyberax, Вы писали:
C>Какие проблемы организовать это в C++ или C#?
А кто говорил про проблемы?
C>Глобальные и статические переменные только нужно будет заменить на контестно-зависимые.
Дык статические переменные это вобще зло и их нужно искоренять.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndrewVK, Вы писали:
WH>>А зачем тебе нужна рекурсия? Что-то я не знаю ни одного рекурсивного протокола общения. AVK>SOAP, к примеру, вполне себе может быть рекурсивным. Но описывается он не EBNF, а XSD.
Ну такими темпами и HTTP можно назвать рекурсивным протколом...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndrewVK, Вы писали:
AVK>Но размер этого самого числа не лимитирован и может быть сколь угодно большим (хотя и не бесконечным).
Если чисто теоретически, то МТ наверно можно эмулировать при помощи КА, если предположить что он может быть бесконечного размера. Но мы ведь о практике говорим, не так ли? А на практике попытка эмулировать LR-парсер при помощи КА будет дико неэффективной.
Здравствуйте, WolfHound, Вы писали:
AVC>>Что касается других тезисов WolfHound-а (а они сводятся к тому, что активные объекты — это плохо), то, ИМХО, они того же типа, что и мысль про EBNF. AVC>>Возможность в Активном Обероне и Зонноне работать с активными объектами — это дополнительная (и очень хорошая) возможность, как и циклы в EBNF. WH>Хоть бы попытался понять о чем я говорю...
Я пытаюсь.
Я только хотел сказать, что ведь можно использовать активные объекты и в рамках отдельных процессов (чем это хуже thread-ов), не сводя все к выбору "или-или, а третьего не дано".
WH>Еще раз активные объекты плохоя идея не по тому что они есть в Виртовских языках, а просто по тому что это плохая идея. WH>Ну нельзя вешать протокол общения на объект. Ну не работет это если объекту нужно общатся с несколькими клиентами. Не работает просто по тому что работать не может ибо состояние одно на всех. Особенно весело это становится если разным клиентам нужны разные протоколы.
Мне кажется, в Зонноне протокол (диалог) вешается на систему (или рантайм), а не на объект.
Правда, эта информация получена мной из разговора и нуждается в проверке.
WH>Также это плохая идея по тому что все плавает в одном объектном пространстве. И эффективно оно может работать только на одном процессоре (хотя множество изолированных объектных пространств всеравно будут работать лучше ибо ГЦ можно запускать по очереди для каждого из них и сканировать ему нужно меньше). Если появляется второй то мы получаем огромные штрафы при вызове мусорщика ибо встают сразу ВСЕ потоки и ВСЕ процессоры в то время как можно тормознуть только один (а то и тормознуть частично вытясная ГЦ убирающий один процесс болие приоритетным процессом). А в случае кластера (про болие распределенную систему я вобще молчу) один ГЦ на всех просто не работает.
Есть какие-то данные измерений или это аксиома?
Мне трудно прямо сейчас аргументированно возразить; по поводу системы, основанной на активных объектах, читал в свое время только диссертацию Мюллера (насколько я понимаю, речь в ней идет о прообразе BlueBottle): http://www.oberon2005.ru/paper/eth14755.pdf
Из нее, правда, совсем не следовали такие пессимистические выводы.
Запомнилось, что системный вызов в Aos примерно в 30 раз эффективнее системного вызова в Linux.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Дарней wrote: > AVK>Но размер этого самого числа не лимитирован и может быть сколь > угодно большим (хотя и не бесконечным). > Если /чисто теоретически/, то МТ наверно можно эмулировать при помощи > КА, если предположить что он может быть бесконечного размера.
КА — он по определению конечный
Здравствуйте, AVC, Вы писали:
AVC>Я пытаюсь. AVC>Я только хотел сказать, что ведь можно использовать активные объекты и в рамках отдельных процессов (чем это хуже thread-ов), не сводя все к выбору "или-или, а третьего не дано".
А зачем они вобще нужны если есть каналы и потоки?
AVC>Мне кажется, в Зонноне протокол (диалог) вешается на систему (или рантайм), а не на объект. AVC>Правда, эта информация получена мной из разговора и нуждается в проверке.
Про зоннон как мало информации (или я просто не нашол) но из того что я видел таки на объект.
AVC>Есть какие-то данные измерений или это аксиома?
Измерений чего? Распределенного ГЦ? Как можно измереить то чего и написать то толком нельзя? AVC>Мне трудно прямо сейчас аргументированно возразить; по поводу системы, основанной на активных объектах, читал в свое время только диссертацию Мюллера (насколько я понимаю, речь в ней идет о прообразе BlueBottle): AVC>http://www.oberon2005.ru/paper/eth14755.pdf AVC>Из нее, правда, совсем не следовали такие пессимистические выводы.
Просто там нет анализа того что произойдет на системах где нет неприрывной памяти. Те есть куча процессоров и у каждого своя память. Таже фигня и с кластерами. Ну нет там общей памяти... AVC>Запомнилось, что системный вызов в Aos примерно в 30 раз эффективнее системного вызова в Linux.
Ну и какой смысл сравнивать с ОС из каменного века?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndrewVK, Вы писали:
AVK>SOAP, к примеру, вполне себе может быть рекурсивным. Но описывается он не EBNF, а XSD.
А что такое рекурсивная грамматика? Такое бывает?
Здравствуйте, GlebZ, Вы писали:
AVK>>SOAP, к примеру, вполне себе может быть рекурсивным. Но описывается он не EBNF, а XSD. GZ>А что такое рекурсивная грамматика? Такое бывает?
А как же.
Практически во всех императивных языках есть нетерминал "выражение".
Прямо или косвенно "выражение" определяется через себя.
Например, "выражение" в круглых скобках — тоже "выражение".
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Cyberax, Вы писали:
C>Неправда. Линукс образца 2006 года можно сконфигурировать для работы на C>машинах 1997 года — энтузиасты его на чистый 386 спортировали.
Windows тоже можно "сконфигурировать". Но это уже не будет Windows что ты запускаешь на десктопе. Точно так же и Линукс уже будет чем-то другим. А в 1996-ом на P90 запускался самый обычный дестрибутив Линукса.
>> Вот только Линукс 1997-го года выпуска вообще на современном железе >> будет вести себя весма странно. Помнится у них таогда даже такие простые >> вещи как объем раздела отводимый для виртуалной памяти был огрничен >> где-то 128 метрами. На сегодня это просто смешно. C>В 97 году этого уже не было.
За месяц не ручаюсь, но где-то в это время было.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
>>> Вот только Линукс 1997-го года выпуска вообще на современном железе >>> будет вести себя весма странно. Помнится у них таогда даже такие простые >>> вещи как объем раздела отводимый для виртуалной памяти был огрничен >>> где-то 128 метрами. На сегодня это просто смешно. C>>В 97 году этого уже не было.
VD>За месяц не ручаюсь, но где-то в это время было.
Вероятно имеется в виду область vmalloc — виртуальная память в ядре для мапления произвольных страниц. Так она до сих пор 128М, в 32 битной архитектуре больше не втиснуть.
VladD2 wrote: >> > C>Да. Новый Win98 я купить не могу. >> > А зачем тебе новый? > C>А где мне его еще легально взять? > Хочешь продам?
Прочти лицензию.
VladD2 wrote: > Windows тоже можно "сконфигурировать". Но это уже не будет Windows что > ты запускаешь на десктопе. Точно так же и Линукс уже будет чем-то > другим. А в 1996-ом на P90 запускался самый обычный дестрибутив Линукса.
Нет. WinXP просто не может работать на 486 — нет нужного HALа.
> C>В 97 году этого уже не было. > За месяц не ручаюсь, но где-то в это время было.
Может в OS2?
Здравствуйте, vdimas, Вы писали:
V>Да нет. Такая же точно компонентность как и везде. Есть только одно маааленькое отличие: компоненты CORBA не создаются сами по себе "из воздуха". Объекты верхнего уровня — службы, ресолвятся, т.е. ищутся и находятся, а затем эти службы выступают как фабрики компонент и проводники метаинформации. Тут все логично, ведь речь идет о распределенных гетерогенных системах, т.е. каждая "железка" или ОС создает бинарные компоненты, которые могут исполнятся именно на ее платформе. Ну а после создания они прекрасно работают совместно по сети.
Вот почитай http://www.optim.su/cs/2003/1/ccm/ccm.asp. К сожалению этот документ не полный, но даже из него видно, что под понятием "компонентня модель" OMG понимает весма странную вещь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Quintanar, Вы писали:
Q>Вероятно имеется в виду область vmalloc — виртуальная память в ядре для мапления произвольных страниц. Так она до сих пор 128М, в 32 битной архитектуре больше не втиснуть.
Нет. Речь идет о максимальном резмере раздела (партишона) отводимого под виртуальную память. Помнится мне было очень смешно когда я на сервере с двумя гигами памяти не смог сделать виртуальную память более 128 (или 256, точно не помню) метров.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote:
> Нет. Речь идет о максимальном резмере раздела (партишона) отводимого под > виртуальную память. Помнится мне было очень смешно когда я на сервере с > двумя гигами памяти не смог сделать виртуальную память более 128 (или > 256, точно не помню) метров.
Кривое решение, конечно, но, очевидно, можно было создать несколько разделов под своп.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
VladD2 wrote: > Нет. Речь идет о максимальном резмере раздела (партишона) отводимого под > виртуальную память. Помнится мне было очень смешно когда я на сервере с > двумя гигами памяти не смог сделать виртуальную память более 128 (или > 256, точно не помню) метров.
Что значит "partition"? Размер swap-файла или swap-раздела?
Cyberax wrote: >> > > C>Да. Новый Win98 я купить не могу. >> > > А зачем тебе новый? >> C>А где мне его еще легально взять? >> Хочешь продам? > Прочти лицензию. > > ...Где там телефон ОБЭПа...
А если он первый End-User? Тогда он имеет право продать без права
дальнейшей перепродажи.. Я читал лицензию, там это указано.
VD>Вот почитай http://www.optim.su/cs/2003/1/ccm/ccm.asp. К сожалению этот документ не полный, но даже из него видно, что под понятием "компонентня модель" OMG понимает весма странную вещь.
Года 3 назад тут уже четко определяли, чем КОП от ООП отличается. ИМХО, представления OMG от КОП попадают под это определение. Просто у тебя компонент ассоциируется с типом, и применением этого типа в своих проектах на этапе design-time, т.е. твоя т.з. зрения ближе к классическому ООП. А у них любой экземпляр неизвестного объекта может быть самодостаточным компонентом. Компонентом некоей распределенной архитектуры.
Здравствуйте, Cyberax, Вы писали:
>> Хочешь продам? C>Прочти лицензию.
C>...Где там телефон ОБЭПа...
Прочел. И что? Там она не личаная. Она позволяет передавать ее в месте с копией коуму угодно. В том числе и продавать. Иначе как бы конторы ее продавали.
У меня валяется 2 98-ых и 3 95-ых. Лови момент. Отдам дешево. По 50 баксов за штуку.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Cyberax, Вы писали:
C>Нет. WinXP просто не может работать на 486 — нет нужного HALа.
Я вообще-то о P90 говорил. А на 486 с 1 метром и Линукс на запустится. А на 8088 вообще только ДОС пойдет.
>> C>В 97 году этого уже не было. >> За месяц не ручаюсь, но где-то в это время было. C>Может в OS2?
Нет. Точно Линукс.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, vdimas, Вы писали:
V>Года 3 назад тут уже четко определяли, чем КОП от ООП отличается. ИМХО, представления OMG от КОП попадают под это определение.
А причем тут ООП?
V> Просто у тебя компонент ассоциируется с типом, и применением этого типа в своих проектах на этапе design-time, т.е. твоя т.з. зрения ближе к классическому ООП. А у них любой экземпляр неизвестного объекта может быть самодостаточным компонентом. Компонентом некоей распределенной архитектуры.
У меня все ассоциируется нормально. А вот у OMG явно через зад. Причины очень просты. Решили создать штуку в рекламе которой можно было бы ипользовать модные слова (тогда компонентность была модной).
На практике же КОП в Корба нет и никто даже не использует эту спецификацию. И вообще КОРБА теперь рассматривается как низкий уровень (уровень протколов) для Явовских технологий. И то не всеми. Многие на Корбу вообще забили. Вот Борладн с ней до сих пор мучается. Но это их проблемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
raskin wrote: >> ...Где там телефон ОБЭПа... > А если он первый End-User? Тогда он имеет право продать без права > дальнейшей перепродажи.. Я читал лицензию, там это указано.
Он может ОТДАТЬ ее, а не продать.
VladD2 wrote: > C>Что значит "partition"? Размер swap-файла или swap-раздела? > Незнаю как сейчас. А тогда в Линуксе понятия swap-файл просто не было. > Предлагалось создать отдельный раздел (причем если не ошибаюсь специальный).
Линукс может использовать для swap'а любое блочное устройство или файл —
можно при желании своп через сеть подмонтировать, а еще я как-то ради
шутки сделал swap на ramdisk'е.
VladD2 wrote: > C>Нет. WinXP просто не может работать на 486 — нет нужного HALа. > Я вообще-то о P90 говорил. А на 486 с 1 метром и Линукс на запустится. А > на 8088 вообще только ДОС пойдет.
На 1 метре — пойдет. Правда кроме ядра мало что будет.
VD>У меня все ассоциируется нормально. А вот у OMG явно через зад. Причины очень просты. Решили создать штуку в рекламе которой можно было бы ипользовать модные слова (тогда компонентность была модной).
Компонент — это самоописываемая бинарная сущность. С этой точки зрения все OK. И ничего там не через зад, ты неправильно понимаешь работу OMG. Они не делают реализаций, они разрабатывают стандарты, которые рельно можно реализовать на очень многих платформах и языках. Это идет как ТЗ. Причем, что характерно для CORBA, все ее стандарты даются в виде обычно очень простых (малословных) интерфейсов, т.е. определяются лишь самые обобщенные моменты. Для возможностей КОП они ввели рефлексию с инвоками и что-то вроде службы активации. Что еще надо? Кстати, дополнительно описали стандарты на персистенцию состояний компонентов (сперли у OLE2, очевидно). Тоже весьма удобно.
КОП именно требовали от OMG, и вот они им дали... хотя мне лично трудно представить необходимость самоописания компонентов в работающей системе, ибо обычно интерфейсы интересующих служб известны в дизайн-тайм. Ну разве что для ср-в монитора и диагностики можно юзать компонентные закидоны. Или же когда-нить наступит время, когда мы свои программы будем строить из взаимодействующих по всему миру сетевых служб, а не компиляторами на наших машинах.
VD>На практике же КОП в Корба нет и никто даже не использует эту спецификацию.
В CORBA очень много служб и протоколов, которые мало где используются, ибо CORBA — это большой набор основных (системных) стандартов и служб. Для каждого приложения в отдельности может понадобится лишь малая часть из набора стандартов OMG.
VD>И вообще КОРБА теперь рассматривается как низкий уровень (уровень протколов) для Явовских технологий. И то не всеми. Многие на Корбу вообще забили. Вот Борладн с ней до сих пор мучается. Но это их проблемы.
Ну вот мы пока используем для связи C++ и .Net технологий. И ведь альтернативы никакой. А по экономичности трафика Корбу можно записывать в чемпионы. Сетевой протокол CORBA очень продуман, и легко расширяем, в отличие от ремотинга донета. Я имею ввиду, что если будет желание, например, как-то расширить стандартный ремотинг путем своих каналов или там еще чего (для передачи, скажем, неких атррибутов, привязанных к конкретным вызовам методов удаленных объектов), то это вступит в конфликт с другими компонентами системы, которые это расширение не поддерживают. В CORBA протокол можно безболезненно обогащать произвольными кастомными данными, не боясь за работоспособность "всего остального".
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, VladD2, Вы писали:
VD>>У меня все ассоциируется нормально. А вот у OMG явно через зад. Причины очень просты. Решили создать штуку в рекламе которой можно было бы ипользовать модные слова (тогда компонентность была модной).
V>Компонент — это самоописываемая бинарная сущность.
Главное свойство компонента — возможность автономного использования как независимого модуля. А это значит динамическая загрузка и независимость от какх-то там сервисов.
V> С этой точки зрения все OK.
Никакого ОК там нет.
V> И ничего там не через зад, ты неправильно понимаешь работу OMG. Они не делают реализаций, они разрабатывают стандарты,
Они занимаются херней. И практика это подтверждает.
V>Кстати, дополнительно описали стандарты на персистенцию состояний компонентов (сперли у OLE2, очевидно). Тоже весьма удобно.
В Корбе "персистентность" была сто лет назад. У них вообще идея о долгоживущих (то есть живущих дольше жизни экземпляра) объектах была "идей фикс".
Как компонентную модель Корбу никто так и не использует.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Cyberax, Вы писали:
C>Он может ОТДАТЬ ее, а не продать.
Лицензия распростроняется на тех кто пользуется ОП, а не на тех кому оно на фиг не упало и кто хочет его продать. Продавая ПО я не являюсь "конечным пользователем" и на меня не распростроняется EULA.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
AVC>>Я только хотел сказать, что ведь можно использовать активные объекты и в рамках отдельных процессов (чем это хуже thread-ов), не сводя все к выбору "или-или, а третьего не дано". WH>А зачем они вобще нужны если есть каналы и потоки?
Думается, для того же, для чего нужны безопасные языки и сборка мусора, — для надежности.
Активные объекты — развитие мониторов Хансена и Хоара, а мониторы всяко надежнее бессистемного управления потоками.
В каком-то смысле — это та же инкапсуляция (данных, потоков и блокировок).
WH>Просто там нет анализа того что произойдет на системах где нет неприрывной памяти. Те есть куча процессоров и у каждого своя память. Таже фигня и с кластерами. Ну нет там общей памяти...
И отсюда следует, что не надо использовать общую память и тогда, когда она есть?
AVC>>Запомнилось, что системный вызов в Aos примерно в 30 раз эффективнее системного вызова в Linux. WH>Ну и какой смысл сравнивать с ОС из каменного века?
А какая ОС (в смысле эффективности переключения контекстов) не из каменного века?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
V>>Компонент — это самоописываемая бинарная сущность.
VD>Главное свойство компонента — возможность автономного использования как независимого модуля. А это значит динамическая загрузка и независимость от какх-то там сервисов.
Когда давали определение, то там еще было что-то проде этого: "предназначенного для работы в определенном окружении".
И как ты себе хотя бы в дотнете представляешь активацию серверного объекта по-требованию без наличия специального сервиса с неким протоколом на целевой машине?
V>>Кстати, дополнительно описали стандарты на персистенцию состояний компонентов (сперли у OLE2, очевидно). Тоже весьма удобно.
VD>В Корбе "персистентность" была сто лет назад.
Не знаю насчет что лет назад. В IDL никакая персистентность не поддерживалась. Были только утверждены пара интерфейсов-хранилищ, но там можно хранить все что угодно, не только объекты. Сейчас же речь идет о том, чтобы перемещать объекты по гетерогенной сети. Т.е. чтобы передать объект Java по значению в Delphi-программу, поработать с объектом, и отправить его жить дальше куда-нить в дотнет.
VD>Как компонентную модель Корбу никто так и не использует.
И как же ее можно использовать, если еще реализаций и инструментария нет?
Ты чего-то не понимаешь, ИМХО. Возьми несколько основных интерфесов из иерархии MemberInfo и Type дотнета. Оставь только самые необходимые методы и св-ва этих интерфейсов (избавляться надо от специфичных для дотнета методов и св-в). И ты получишь некий стандарт на рефлексию. Добавь сюда описание протоколов активации серверных объектов, и ты получишь примерно то, что родили в OMG, т.е. голые спецификации, которыми разве что утереться можно, пока не будет имплементации.
Кстати, взгляни на реализацию интерпретатора и объектов JScript в дотнете. Там используется такая же точно иерархия от MemberInfo для описания структуры динамических (не скомпилированных в байт-код) JavaScript-объектов. Т.е. налицо несколько реализаций определенного стандарта на предоставление метаинформации в дотнете.
VladD2 wrote: > C>На 1 метре — пойдет. Правда кроме ядра мало что будет. > Современный то? Не уверен.
Ядро 2.6.16 спокойно работает на встроенных устройствах. Кажется, там
ему что-то около 300Кб памяти по минимуму надо (если отключить все, что
только можно).
> C>И на 8088 тоже пойдет — http://elks.sourceforge.net/ > Это не Линукс.
"Embeddable Linux Kernel Subset". То что с Линуксом можно делать
такие извраты — это показатель его гибкости.
Здравствуйте, AVC, Вы писали:
AVC>Думается, для того же, для чего нужны безопасные языки и сборка мусора, — для надежности. AVC>Активные объекты — развитие мониторов Хансена и Хоара, а мониторы всяко надежнее бессистемного управления потоками. AVC>В каком-то смысле — это та же инкапсуляция (данных, потоков и блокировок).
А теперь попробуй объяснить чем синхронизация на активнах объектах лучше чем синхронизации на каналах?
Через каналы можно посылать только строготипизированные сообщения.
В сообщении могут передаватся данные либо по значению либо ссылки на данные в общей памяти. Это нужно для того чтобы гарантировать изолированность объектных простанств процессов. При передачи ссылки на общие данные в другое адресное пространство в том числе на другой компьютер данные копируются.
Для каждого канала описан протокол общения представляющий из себя конечный автомат.
Для каждого состояния этого автомата гарантируется что из него можно либо только посылать либо только принимать сообщения. Это нужно для того чтобы гарантировать отсутствие дедлоков на одном канале.
Если при попытке получить сообщения из канала там ничего не будет то поток блокируется до поступления в канал сообщения или закрытия канала. Возможна установка таймаута в том числе нулевого тогда управление будет возвращено немедленно. Также возможно ожидание на нескольких каналах.
AVC>И отсюда следует, что не надо использовать общую память и тогда, когда она есть?
Если тебе нужно используй. Хотя большинство систем прекрасно режутся на кучу мелких процессов. Создай один процесс с кучей потоков и общайся между потоками через каналы. Болие того для каналов работающих исключительно внутри одного процесса можно отменить ограничеие на передачу данных по ссылке.
AVC>А какая ОС (в смысле эффективности переключения контекстов) не из каменного века?
Singularity
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WolfHound wrote: > AVC>А какая ОС (в смысле эффективности переключения контекстов) не из > каменного века? > Singularity
Ага, конечно:
1. Невозможность динамической подгрузки кода.
2. Отсутствие аппаратной защиты (и невозможность нормально использовать
unmanaged).
3. Опять же, нет системный поддержки для nccNUMA.
4. Ориентированость на старое поколение железа.
Всего то навсего. Конструкторы Intel и AMD уже побежали вносить поддержку во все новые процессоры, а пользователи стройными рядами понесли свои компьютеры на свалку.
AF>Всего то навсего. Конструкторы Intel и AMD уже побежали вносить поддержку во все новые процессоры, а пользователи стройными рядами понесли свои компьютеры на свалку.
Надо будет сделают, притом быстро, и прозрачно для пользователей, пройдет три года и на большинстве установленных компьютеров будет эта фича. Например сейчас также неощутимо вводится 64 разрядность и подержка виртуализации. А вот смена OS на абсолютно не совместимую практически не реальна, максимум такая OS займет какую нибудь узкую маргинальную нишу.
> Всего то навсего. Конструкторы Intel и AMD уже побежали вносить > поддержку во все новые процессоры, а пользователи стройными рядами > понесли свои компьютеры на свалку.
Эта фича (Fast Address Space Switching) будет абсолютно прозрачна для
старых приложений. Так что через несколько лет после ее внедрения, она
появится на большинстве компьютеров. А там и ОСки подоспеют.
Так сейчас с 64-битами происходит, почти все новые системы поддерживают
x64.
Здравствуйте, Cyberax, Вы писали:
C>Ага, конечно: C>1. Невозможность динамической подгрузки кода.
Это решение конкретной реализации. Оно может быть очень легко преадалено в болие позней версии.
Например сравни первые UNIX'ы (или даже UNICS ИМХО Singularity находится примерно на тойже стадии) с современными Linux'ами. C>2. Отсутствие аппаратной защиты (и невозможность нормально использовать unmanaged).
Ну в обероновских ОС теже проблемы... К тому же ИМХО это нахрен не упало. C>3. Опять же, нет системный поддержки для nccNUMA.
Чего простите? Что может леч на nccNUMA лучше чем множество изолированных процессов которые обмениваются сообщениями? C>4. Ориентированость на старое поколение железа.
Это вобще не понял.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WolfHound wrote: > C>1. Невозможность динамической подгрузки кода. > Это решение конкретной реализации. Оно может быть очень легко преадалено > в болие позней версии. > Например сравни первые UNIX'ы (или даже UNICS ИМХО Singularity находится > примерно на тойже стадии) с современными Linux'ами.
Там с этим фундаментальные проблемы (точно те же, что и с Обероновскими
ОС, кстати).
> C>2. Отсутствие аппаратной защиты (и невозможность нормально > использовать unmanaged). > Ну в обероновских ОС теже проблемы... К тому же ИМХО это нахрен не упало.
Именно. Подсказать где сейчас Оберон-ОСи?
> C>3. Опять же, нет системный поддержки для nccNUMA. > Чего простите? Что может леч на nccNUMA лучше чем множество > изолированных процессов которые обмениваются сообщениями?
Возможность явного управления барьерами, поддержка понятия "близости" на
уровне языка (см. COMA — http://en.wikipedia.org/wiki/Cache_only_memory_architecture ). Много
чего еще можно придумать.
> C>4. Ориентированость на старое поколение железа. > Это вобще не понял.
Не используются возможности виртуализации, например.
Здравствуйте, Cyberax, Вы писали:
C>Там с этим фундаментальные проблемы (точно те же, что и с Обероновскими ОС, кстати).
А в чем фундаментальность этой проблемы?
Почему ты считаешь что динамическую загрузку кода в принципе нельзя реализовать?
Кстати сейчас придут оберонщики и объяснят что в ОберонОС можно динамически подгружать код ибо они специально для этого проектировались.
>> Ну в обероновских ОС теже проблемы... К тому же ИМХО это нахрен не упало. C>Именно.
Подсказать сколько софта вобще не использует небезопасные языки? И колличество такого софта растет. C>Подсказать где сейчас Оберон-ОСи?
У ОберонОС очень много других проблем не связанных с этой. Она однопользовательская, ее модель ну совершенно не ложится на туже nccNUMA и что сейчас болие актуально на кластеры, в ней не реализованна проверка загружаемого кода... И заметь эти проблемы настолько крупные и фундаментальные что ОберонОС нельзя использовать в реальном мире.
C>Возможность явного управления барьерами, поддержка понятия "близости" на уровне языка (см. COMA — http://en.wikipedia.org/wiki/Cache_only_memory_architecture ). Много чего еще можно придумать.
Я вобщето всегда говорил что виртуальная машина у Singularity мягко говоря уродская.
Тем не мение сама по себе модель мелких изолированных процессов ложится на nccNUMA лучше чем чтобыто нибыло еще. Просто по тому что данные шарить не нужно.
А если таки нужно шарить данные то есть очень простое решение: шаренные данные должны быть не изменяемы.
C>Не используются возможности виртуализации, например.
Опять же критикуя ИДЕЮ ты докапываешься до КОНКРЕТНОЙ РЕАЛИЗАЦИИ.
Давай я сейчас проедусь по Linux основываясь на UNICS... Ы?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
WolfHound wrote: > C>Там с этим фундаментальные проблемы (точно те же, что и с > Обероновскими ОС, кстати). > А в чем фундаментальность этой проблемы? > Почему ты считаешь что динамическую загрузку кода в принципе нельзя > реализовать?
А как GC будет определять что ему выкинуть?
> Кстати сейчас придут оберонщики и объяснят что в ОберонОС можно > динамически подгружать код ибо они специально для этого проектировались.
А он там вечно висит.
>> > Ну в обероновских ОС теже проблемы... К тому же ИМХО это нахрен не упало. > C>Именно. > Подсказать сколько софта вобще не использует небезопасные языки? И > колличество такого софта растет.
Подсказать какой процент оно составляет относительно остального софта?
> Тем не мение сама по себе модель мелких изолированных процессов ложится > на nccNUMA лучше чем чтобыто нибыло еще. Просто по тому что данные > шарить не нужно. > А если таки нужно шарить данные то есть очень простое решение: шаренные > данные должны быть не изменяемы.
Простое — не значит правильное. Это один из самых простых вариантов, но
он далеко не всегда подходит.
> C>Не используются возможности виртуализации, например. > Опять же критикуя ИДЕЮ ты докапываешься до КОНКРЕТНОЙ РЕАЛИЗАЦИИ. > Давай я сейчас проедусь по Linux основываясь на UNICS... Ы?
Можешь хоть катком проехаться по реализации ядра Linux 2.6.18. Я катком
проедусь по реализации S. Ок?
Здравствуйте, Cyberax, Вы писали:
>> Почему ты считаешь что динамическую загрузку кода в принципе нельзя реализовать? C>А как GC будет определять что ему выкинуть?
Гм??? А в чем проблема? В жабе же определяет
C>А он там вечно висит.
Ну дык ОберонОС то еще угребище... с этим я не спорю.
C>Подсказать какой процент оно составляет относительно остального софта?
Что-то мне подсказывает что заметный. И этот процент всевремя ростет.
C>Простое — не значит правильное. Это один из самых простых вариантов, но он далеко не всегда подходит.
Для этого нужно просто учесть это в ВМ. Для боевой реализации сингулярити нужно проектировать ВМ с нуля, а не брать учребище типа CLR или жабы.
C>Можешь хоть катком проехаться по реализации ядра Linux 2.6.18. Я катком проедусь по реализации S. Ок?
Нет не так. Я проедусь по UNICS и прировняю этот проезд к Linux 2.6.18. Как это будет выглядеть?
Примерно также выглядит твои наезды на прототип который показал верность направления но и выявил кучу просчетов авторов данной реализации. Для меня сингулярити это не конкретная ОС от мелкософт ресерч, а прежде всего идея того как это все должно быть сделано.
Кстати насчет линуха... как там у него дела с nccNUMA? А с кластеризацией?
Только не нужно говорить что все хорошо... я сейчас работаю в конторе у которой несколько линуксовых кластеров..., а я пишу еще один.
Так вот архитектура линукса как минимум не помогает мне решать мои задачи.
В прочем наезд на линух я отложу до времен когда наберу побольше страшилок...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Cyberax, Вы писали:
C>WolfHound wrote: >> AVC>А какая ОС (в смысле эффективности переключения контекстов) не из >> каменного века? >> Singularity C>Ага, конечно: C>1. Невозможность динамической подгрузки кода.
С чего бы это? Конечно же она есть. Невозможность исполнить динамический код в пределах своего же процесса — не проблема, а наоборот.
Преимущества от этого крайне велики. В частности, известный UDP вирус, поражавший MS SQL Server несколько лет назад, в принципе не смог бы сработать в Singularity.
Недостатков я не вижу — стоимость кросс-процессных вызовов настолько низка, что никаким реальным плагинным системам это не помешает. C>2. Отсутствие аппаратной защиты (и невозможность нормально использовать C>unmanaged).
Отсутствие аппаратной защиты — не недостаток, а преимущество. Стоимость аппаратной защиты неприемлемо высока. Современное веб-приложение, собравшееся отдавать 1пиксельный динамически сгенерированный gif файл, тратит основное время на переключение между ядром и worker process.
Невозможность использовать unmanaged код, в общем-то, тоже благо. Т.к. unmanaged для меня == untrusted. C>3. Опять же, нет системный поддержки для nccNUMA.
Не уверен что это неотъемлемое свойство Singularity. Во-первых, я не очень представляю, какой должна быть такая поддержка. Автоматическое распределение процессов с учетом их коммуникационных привычек для минимизации "неуниформного" трафика? Во-вторых, неясно, почему эта поддержка невозможна в Singularity, а точнее, нет уверенности в том, что поддержка nccNUMA обязательно потребует аппаратной изоляции и unmanaged кода.
C>4. Ориентированость на старое поколение железа.
Я не вижу никакой ориентированности на какое-либо железо в Singularity. Singularity в первую очередь идея, а в десятую — рабочий проект. То, что она реально существует "в железе" — это возможность поиграть с идеей не в уме, а на настоящей машинке. Я надеюсь, что все понимают, что MS никогда не выпустит Singularity в коммерческую эксплуатацию?
Или имеется в виду существует какое-то новое поколение железа, на котором нельзя будет скомпилировать Singularity?
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Cyberax, Вы писали:
C>WolfHound wrote: >> C>Там с этим фундаментальные проблемы (точно те же, что и с >> Обероновскими ОС, кстати). >> А в чем фундаментальность этой проблемы? >> Почему ты считаешь что динамическую загрузку кода в принципе нельзя >> реализовать? C>А как GC будет определять что ему выкинуть?
Вообще-то GC не является обязательной частью Singularity. Управление временем жизни в рамках системы может быть любым. Это было во-первых.
А во-вторых, Java уже десять с лишним лет демонстрирует GC, вполне способный определять что ему выкинуть, несмотря на не только возможность динамической загрузки кода, но и динамической загрузки загрузчиков кода
C>Подсказать какой процент оно составляет относительно остального софта?
Непрерывно растущий. И это хорошо.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>С чего бы это? Конечно же она есть. Невозможность исполнить динамический код в пределах своего же процесса — не проблема, а наоборот. S>Преимущества от этого крайне велики. В частности, известный UDP вирус, поражавший MS SQL Server несколько лет назад, в принципе не смог бы сработать в Singularity. S>Недостатков я не вижу — стоимость кросс-процессных вызовов настолько низка, что никаким реальным плагинным системам это не помешает.
Реально это не совсем так. Иногда может быть уместна динамическая компиляция и загрузка кода.
Хотябы для поддержки легаси кода написанного на жабе и .НЕТ...
Для этих целей ИМХО нужно просто выделить отдельный тип процесса и зпретить драйверам и возможно еще какимто системным сервисам работать в режиме допускающим поддержку динамической загрузки кода.
S>Невозможность использовать unmanaged код, в общем-то, тоже благо. Т.к. unmanaged для меня == untrusted.
А для меня еще и падучий. Причем самое обидное что падает не мой код, а одна библиотечка... фиксить ее не реально ибо тонна плохо спроектированного и еще хуже написанного сишного кода альтернативы еще хуже они просто не работают ...
S>Не уверен что это неотъемлемое свойство Singularity. Во-первых, я не очень представляю, какой должна быть такая поддержка. Автоматическое распределение процессов с учетом их коммуникационных привычек для минимизации "неуниформного" трафика? Во-вторых, неясно, почему эта поддержка невозможна в Singularity, а точнее, нет уверенности в том, что поддержка nccNUMA обязательно потребует аппаратной изоляции и unmanaged кода.
Я тебе больше скажу: оно их не только не требует но они даже мешают этой поддержке.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Sinclair wrote: > C>А как GC будет определять что ему выкинуть? > Вообще-то GC не является обязательной частью Singularity. Управление > временем жизни в рамках системы может быть любым. Это было во-первых.
НЕТ!
GC в Singularity обязателен. Вместо него можно использовать
только статическое распределение памяти. Ручное управление памятью (а
если быть точным — ручной delete) там невозможен.
> А во-вторых, Java уже десять с лишним лет демонстрирует GC, вполне > способный определять что ему выкинуть, несмотря на не только возможность > динамической загрузки кода, но и динамической загрузки загрузчиков кода
Немного другая ситуация — смотри на давний флейм. Лень поднимать все это.
> C>Подсказать какой процент оно составляет относительно остального софта? > Непрерывно растущий. И это хорошо.
Что хорошего?
Здравствуйте, FR, Вы писали:
FR>Надо будет сделают, притом быстро, и прозрачно для пользователей, пройдет три года и на большинстве установленных компьютеров будет эта фича.
Поживем — увидим Хотя я в этом сильно сомневаюсь.
FR>А вот смена OS на абсолютно не совместимую практически не реальна, максимум такая OS займет какую нибудь узкую маргинальную нишу.
А вот и нет. Про Mac OS X никогда не слышал? Она совершенно несовместима с предыдущей версией, но старые приложения вполне благополучно выполняются в режиме эмуляции.
Здравствуйте, VladD2, Вы писали:
C>>"Embeddable Linux Kernel Subset". То что с Линуксом можно делать C>>такие извраты — это показатель его гибкости. VD>http://elks.sourceforge.net/introduction.html VD>
The goal of the ELKS project is to create a Linux-like kernel for:...
является ли линуксом то, что сделано по образу и подобию линукса?
из той же серии: является ли женщина человеком, если была сделана по образу и подобию человека?
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Надо будет сделают, притом быстро, и прозрачно для пользователей, пройдет три года и на большинстве установленных компьютеров будет эта фича.
AF>Поживем — увидим Хотя я в этом сильно сомневаюсь.
Необходимости нет, так что вряд ли скоро появится.
FR>>А вот смена OS на абсолютно не совместимую практически не реальна, максимум такая OS займет какую нибудь узкую маргинальную нишу.
AF>А вот и нет. Про Mac OS X никогда не слышал? Она совершенно несовместима с предыдущей версией, но старые приложения вполне благополучно выполняются в режиме эмуляции.
Ну все-таки и старая и новая маковские операционки если сравнить их с OberonOS или Singularity практически близнецы братья. Боюсь эмуляция на новых управляемых операционках будет слишком дорогой. Кстати Эпловский переход на интеловские процессоры показывает что и неуправляемые OS и приложения на них, не так сильно зависят от аппаратуры. Да и средства виртуализации и эмуляции как программные так и аппаратные развиваются достаточно быстро, так что выгод от управляемых оперционок может и не остатся.
Здравствуйте, FR, Вы писали:
FR>Необходимости нет, так что вряд ли скоро появится.
Я думаю, вообще не появится. Управляемый код рулит
FR>Ну все-таки и старая и новая маковские операционки если сравнить их с OberonOS или Singularity практически близнецы братья.
Singularity — исследовательский проект, а OberonOS — вообще не пригодная к реальной работе поделка. Так что это не показатель.
Разница между Mac Os <= 9 и десятой версией ничуть не меньше, чем разница между linux и windows, к примеру. Я имею в виду конечно внутренности, а не интерфейс.
Так что появление новой оси, которая не совместима со старыми, но умеет исполнять их программы "в песочнице" — это абсолютно реально.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Необходимости нет, так что вряд ли скоро появится.
AF>Я думаю, вообще не появится. Управляемый код рулит
Угу только парочка небольших и малозаметных аппаратных улучшений может его зарулить
FR>>Ну все-таки и старая и новая маковские операционки если сравнить их с OberonOS или Singularity практически близнецы братья.
AF>Singularity — исследовательский проект, а OberonOS — вообще не пригодная к реальной работе поделка. Так что это не показатель. AF>Разница между Mac Os <= 9 и десятой версией ничуть не меньше, чем разница между linux и windows, к примеру. Я имею в виду конечно внутренности, а не интерфейс.
Между linux и win нет принципиальной разницы, например одна небольшая фирма умудрилась сдлелать Lindows, то есть linux совместимый с win32
AF>Так что появление новой оси, которая не совместима со старыми, но умеет исполнять их программы "в песочнице" — это абсолютно реально.
Угу, только вряд ли в обозримое время это будет управляемая OS, скорее это может быть например MacOS умеющая запускать и совместимая на уровне приложений с WinXP.
Вообще подумай какой должна быть песочница для управляемых OS в которой будут запускатся неуправляемые приложения, если согласно генеральной линии партии аппаратная подержка это зло, то будет очень грустное зрелище.
Здравствуйте, FR, Вы писали:
FR>Угу только парочка небольших и малозаметных аппаратных улучшений может его зарулить
У любого аппаратного решения есть один небольшой и малозаметный, но очень серьезный недостаток. Его безумно дорого внедрить, и так же дорого внести в него любые изменения, хоть даже самые малые. И не только безумно дорого, но еще и безумно долго.
Теоретически можно сделать хоть даже "ОС на кристалле", и это наверно будет быстро — вот только практически никому не нужно.
Так что будущее — за гибкостью.
FR>Между linux и win нет принципиальной разницы, например одна небольшая фирма умудрилась сдлелать Lindows, то есть linux совместимый с win32
По-моему, они больше себя рекламировали, чем реально что-то сделали
FR>Вообще подумай какой должна быть песочница для управляемых OS в которой будут запускатся неуправляемые приложения, если согласно генеральной линии партии аппаратная подержка это зло, то будет очень грустное зрелище.
Обыкновенная эмуляция. Благодаря закону Мура, вполне реально, тем более что большинство приложений потребляют не так уж много ресурсов.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Угу только парочка небольших и малозаметных аппаратных улучшений может его зарулить
AF>У любого аппаратного решения есть один небольшой и малозаметный, но очень серьезный недостаток. Его безумно дорого внедрить, и так же дорого внести в него любые изменения, хоть даже самые малые. И не только безумно дорого, но еще и безумно долго. AF>Теоретически можно сделать хоть даже "ОС на кристалле", и это наверно будет быстро — вот только практически никому не нужно. AF>Так что будущее — за гибкостью.
Я наблюдаю совершенно другое, безумно дорого ломать именно совместимость софта, аппартные же вещи пусть и дорогие в разработке при массовом выпуске в цене стремятся к нулю. Да взять ту же х86 архитектуру, она конечно получилась и корявая в результате долгой эволюции, но прошла путь от 16 разрядного процессора с сегментированной памятью до 64 разрядного суперскалярного с аппаратной виртуализацией, и смогла впитать в себя кучу технологий которые при ее зарождении применялись только в суперкомпьютерах и стоили безумно дорого.
FR>>Между linux и win нет принципиальной разницы, например одна небольшая фирма умудрилась сдлелать Lindows, то есть linux совместимый с win32
AF>По-моему, они больше себя рекламировали, чем реально что-то сделали
А по моему ms больше потратила на адвокатов чем они на разработку.
FR>>Вообще подумай какой должна быть песочница для управляемых OS в которой будут запускатся неуправляемые приложения, если согласно генеральной линии партии аппаратная подержка это зло, то будет очень грустное зрелище.
AF>Обыкновенная эмуляция. Благодаря закону Мура, вполне реально, тем более что большинство приложений потребляют не так уж много ресурсов.
Обыкновенная эмуляция это полная ж.. Никто ни купит операционку в которой старые приложения выполняются на порядок медленее чем на старой.
Здравствуйте, FR, Вы писали:
FR>Я наблюдаю совершенно другое, безумно дорого ломать именно совместимость софта
А как же пример Мак Оси?
FR>аппартные же вещи пусть и дорогие в разработке при массовом выпуске в цене стремятся к нулю.
Не надо путать цену массового выпуска устройства и цену внедрения новой фичи. Вторая — намного, очень намного больше.
FR>Обыкновенная эмуляция это полная ж.. Никто ни купит операционку в которой старые приложения выполняются на порядок медленее чем на старой.
Здравствуйте, FR, Вы писали:
AF>>Я думаю, вообще не появится. Управляемый код рулит FR>Угу только парочка небольших и малозаметных аппаратных улучшений может его зарулить
Никакие аппаратные улучшение не смогут гарантировать защиту внутри процесса.
Для того чтобы гарантировать защиту внутри процесса необхождима прорва метаинформации. Эту метаинформацию нужно гдето взять. (Где?) Далие по этой метаинформации нужно постоянно все контролировать что приведет к очень сильному усложнению железа.
Короче это тупиковый путь.
Гораздо эффективней сделать тупую железку (ну можетбыть оставить предсказатель ветвлений) которая только и умеет что быстро считать, а контролировать целостность рантайм проверками которые раставлены только там где они реально нужны(все остальые можно убрать статическим анализом кода).
FR>Вообще подумай какой должна быть песочница для управляемых OS в которой будут запускатся неуправляемые приложения, если согласно генеральной линии партии аппаратная подержка это зло, то будет очень грустное зрелище.
Ну эту линию партии ты сам придумал... пока есть гигатонны легаси железа управляемые ОС вполне могут создавать аппаратно изолированные песочници для неуправляемого софта.
Также нужно учесть что управляемые ОС могут легко исполнять бинарники .NET'а и жабы (если там нет unsafe и JNI) сюда же относятся всевозможные скрипты типа питона, перла, руби итп
Те подавляющие большинство веб серверов можно будет очень легко перенести на эту ОС. Причем они получат неплохую прибавку к производительности.
Еще у управляемых ОС есть одна весьма циничная особенность... по началу они могут работать по верх классических ОС в том же стиле что .NET и жаба...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>Я наблюдаю совершенно другое, безумно дорого ломать именно совместимость софта
AF>А как же пример Мак Оси?
У них не было из-за этого проблем и потери приличного куска рынка?
Зато сейчас смена процессора наооборт помогла завоевать приличный кусок рынка.
FR>>аппартные же вещи пусть и дорогие в разработке при массовом выпуске в цене стремятся к нулю.
AF>Не надо путать цену массового выпуска устройства и цену внедрения новой фичи. Вторая — намного, очень намного больше.
Ну и какова цена внедрения 64 разрядности в x86?
FR>>Обыкновенная эмуляция это полная ж.. Никто ни купит операционку в которой старые приложения выполняются на порядок медленее чем на старой.
AF>Закон Мура, не забывай.
При просадке на порядок (для обыкновенного эмулятора без jit и тех оптимизации которые будут невозможны на управляемой OS без потери контроля над безопасностью выполнения кода) закон Мура слабое утешение.
Здравствуйте, WolfHound, Вы писали:
AF>>>Я думаю, вообще не появится. Управляемый код рулит FR>>Угу только парочка небольших и малозаметных аппаратных улучшений может его зарулить WH>Никакие аппаратные улучшение не смогут гарантировать защиту внутри процесса. WH>Для того чтобы гарантировать защиту внутри процесса необхождима прорва метаинформации. Эту метаинформацию нужно гдето взять. (Где?) Далие по этой метаинформации нужно постоянно все контролировать что приведет к очень сильному усложнению железа.
Может, я чего не понимаю.
Но мне всегда нравилось, что в Обероне защиту внутри процесса гарантировал компилятор.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, FR, Вы писали:
FR>У них не было из-за этого проблем и потери приличного куска рынка?
У тебя есть точные данные, что причина финансовых потерь — это именно выпуск новой ОСи?
FR>Ну и какова цена внедрения 64 разрядности в x86?
За такую информацию вообще-то немаленькие деньги аналитикам платят
А вообще, интересное место — форум философии. Никогда бы не подумал, что найдется человек, который будет доказывать, что внести изменения в железо — проще, чем в софт
FR>При просадке на порядок (для обыкновенного эмулятора без jit и тех оптимизации которые будут невозможны на управляемой OS без потери контроля над безопасностью выполнения кода) закон Мура слабое утешение.
Всё зависит от степени различия у исходной и целевой платформ. Делать какие-то догадки даже о величине порядка — брать цифры просто с потолка.
Здравствуйте, AVC, Вы писали:
WH>>Никакие аппаратные улучшение не смогут гарантировать защиту внутри процесса. WH>>Для того чтобы гарантировать защиту внутри процесса необхождима прорва метаинформации. Эту метаинформацию нужно гдето взять. (Где?) Далие по этой метаинформации нужно постоянно все контролировать что приведет к очень сильному усложнению железа.
AVC>Может, я чего не понимаю. AVC>Но мне всегда нравилось, что в Обероне защиту внутри процесса гарантировал компилятор.
1) Гм какое отношение имеет оберон к наезду на аппаратную защиту программного обеспечения?
2) Нихрена он не гарантирует. Злой хакер может пригнать хитро пропатченый бинарник и все гарантии оберона идут в лес.
3) На это
_rasta wrote:
> является ли линуксом то, что сделано по образу и подобию линукса?
ну по крайней мере
Q1.2. How does ELKS compare with standard Linux?
ELKS is intended to be a subset of true Linux
http://elks.sourceforge.net/FAQ-English.html#1.2
> из той же серии: является ли женщина человеком, если была сделана по > образу и подобию человека?
Вообще-то не была. Это человек был сделан по образу и подобию бога.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, WolfHound, Вы писали:
WH>>>Никакие аппаратные улучшение не смогут гарантировать защиту внутри процесса. WH>>>Для того чтобы гарантировать защиту внутри процесса необхождима прорва метаинформации. Эту метаинформацию нужно гдето взять. (Где?) Далие по этой метаинформации нужно постоянно все контролировать что приведет к очень сильному усложнению железа.
AVC>>Может, я чего не понимаю. AVC>>Но мне всегда нравилось, что в Обероне защиту внутри процесса гарантировал компилятор.
WH>1) Гм какое отношение имеет оберон к наезду на аппаратную защиту программного обеспечения? WH>2) Нихрена он не гарантирует. Злой хакер может пригнать хитро пропатченый бинарник и все гарантии оберона идут в лес.
На случай злобного хакера, можно подумать о технологии "тонких бинарников".
Модуль попадает в систему в полукомпилированном виде, докомпилируется при загрузке.
В принципе, можно докомпилировать один раз, потом грузить бинарник.
WH>3) На это
Будет.
Но мне надо хоть немного подумать, а у меня сейчас аврал.
Потому пока ограничиваюсь короткими репликами, когда кажется, что об этом больше никто не скажет.
Вон утверждают, что Оберон — поделка, а я ничего — я терплю.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, FR, Вы писали:
AF>>>Я думаю, вообще не появится. Управляемый код рулит FR>>Угу только парочка небольших и малозаметных аппаратных улучшений может его зарулить WH>Никакие аппаратные улучшение не смогут гарантировать защиту внутри процесса. WH>Для того чтобы гарантировать защиту внутри процесса необхождима прорва метаинформации. Эту метаинформацию нужно гдето взять. (Где?) Далие по этой метаинформации нужно постоянно все контролировать что приведет к очень сильному усложнению железа. WH>Короче это тупиковый путь.
Наверно, но вот только есть ли гигантская необходимость в защите внутри процессса? К тому же для этого вполне достаточно неуправляемой OS с запущенными на ней процессами написанными на управляемых языках.
WH>Гораздо эффективней сделать тупую железку (ну можетбыть оставить предсказатель ветвлений) которая только и умеет что быстро считать, а контролировать целостность рантайм проверками которые раставлены только там где они реально нужны(все остальые можно убрать статическим анализом кода).
А может гораздо эффективней просто использовать имеющиеся железки. И даже немного их модернизировать для ускорения.
FR>>Вообще подумай какой должна быть песочница для управляемых OS в которой будут запускатся неуправляемые приложения, если согласно генеральной линии партии аппаратная подержка это зло, то будет очень грустное зрелище. WH>Ну эту линию партии ты сам придумал... пока есть гигатонны легаси железа управляемые ОС вполне могут создавать аппаратно изолированные песочници для неуправляемого софта.
Ну тут полный тупик, пока есть эти гигатонны железок (а еще важнее гигатонны софта) у управляемых OS нет больших преимуществ и стимула переходиь на них тоже.
WH>Также нужно учесть что управляемые ОС могут легко исполнять бинарники .NET'а и жабы (если там нет unsafe и JNI) сюда же относятся всевозможные скрипты типа питона, перла, руби итп WH>Те подавляющие большинство веб серверов можно будет очень легко перенести на эту ОС. Причем они получат неплохую прибавку к производительности.
Получат ли ускорение это еще под большим вопросом.
WH>Еще у управляемых ОС есть одна весьма циничная особенность... по началу они могут работать по верх классических ОС в том же стиле что .NET и жаба...
И что это даст? По моему только умножение недостатков обоих сторон. Да и вообще зачем приложениям на NET и java еще какая-то прокладочная OS, когда они и так неплохо себя чувствуют и в существующих операционках.
Здравствуйте, Privalov, Вы писали:
AVC>>Может, я чего не понимаю. AVC>>Но мне всегда нравилось, что в Обероне защиту внутри процесса гарантировал компилятор.
P>Эта тема как-то уже обсуждалась здесь
. Причем практически в этих же формулировках. Есть ли смысл бегать по кругу?
Повторение — мать учения.
(В разумных пределах, конечно.)
В принципе, я просто отвечаю на мысль, которую высказал WolfHound.
А именно: что для защиты внутри процесса нужна прорва метаинформации; мол, где ее взять?
А я отвечаю: как где, а компилятор?
Мне кажется верной мысль Вирта, что возможность программирования без лазеек (loopholes) является самым значительным достижением языков программирования за последние 40 лет.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, FR, Вы писали:
FR>>У них не было из-за этого проблем и потери приличного куска рынка?
AF>У тебя есть точные данные, что причина финансовых потерь — это именно выпуск новой ОСи?
нет конечно
FR>>Ну и какова цена внедрения 64 разрядности в x86?
AF>За такую информацию вообще-то немаленькие деньги аналитикам платят
AF>А вообще, интересное место — форум философии. Никогда бы не подумал, что найдется человек, который будет доказывать, что внести изменения в железо — проще, чем в софт
А не надо настолько обобщать.
Заменить OS гораздо дороже чем внести пару не таких уж и больших изменений в процессоры.
FR>>При просадке на порядок (для обыкновенного эмулятора без jit и тех оптимизации которые будут невозможны на управляемой OS без потери контроля над безопасностью выполнения кода) закон Мура слабое утешение.
AF>Всё зависит от степени различия у исходной и целевой платформ. Делать какие-то догадки даже о величине порядка — брать цифры просто с потолка.
Угу, только управляющие OS вносят дополнительные тормоза.
Здравствуйте, AVC, Вы писали:
AVC>Повторение — мать учения. AVC>(В разумных пределах, конечно.)
Меня всю жизнь волнует вопрос, а кто отец учения?
AVC>Мне кажется верной мысль Вирта, что возможность программирования без лазеек (loopholes) является самым значительным достижением языков программирования за последние 40 лет.
Ключевое слово — возможность.
В общем, это, сдается мне, тоже обсуждалось. Опять начнется "верификация vs тестирование" и т. п.
Вот читал я где-то, что линейка Windows NT построена на непротиворечивой модели обеспечения безопасности, и что?
Здравствуйте, FR, Вы писали:
FR>Наверно, но вот только есть ли гигантская необходимость в защите внутри процессса?
Несомненно. FR>К тому же для этого вполне достаточно неуправляемой OS с запущенными на ней процессами написанными на управляемых языках.
А саму ОСь кто защищать будет?
FR>А может гораздо эффективней просто использовать имеющиеся железки. И даже немного их модернизировать для ускорения.
Никто не мешает управляемым ОС работать на существующих железках.
FR>Ну тут полный тупик, пока есть эти гигатонны железок (а еще важнее гигатонны софта) у управляемых OS нет больших преимуществ и стимула переходиь на них тоже.
Железо со временем выходит из строя...
Софт тоже иногда переписывают.
FR>Получат ли ускорение это еще под большим вопросом.
Однозначно получат. Говорю тебе как человек который пишет серверы которые работают под оооочень большой нагрузкой.
FR>И что это даст? По моему только умножение недостатков обоих сторон.
Это даст возможность использовать новый софт совместно со старым тем кому это нужно. FR>Да и вообще зачем приложениям на NET и java еще какая-то прокладочная OS, когда они и так неплохо себя чувствуют и в существующих операционках.
Если не считать того что распределенку будет делать проще и под новые процессоры будет проце портировать и неуправляемая ОСь под ногами не будет путатся...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AVC, Вы писали:
AVC>В принципе, я просто отвечаю на мысль, которую высказал WolfHound. AVC>А именно: что для защиты внутри процесса нужна прорва метаинформации; мол, где ее взять? AVC>А я отвечаю: как где, а компилятор?
С, С++ и куча других страшных слов... в них все упирается... Так что твой обероновский компилятор идет лесом ибо если бы была возможность переписать весь софт то это бы сделали точно не на обероне ибо это угребище имеет очень много фундаментальных недостатков.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
AVC>>В принципе, я просто отвечаю на мысль, которую высказал WolfHound. AVC>>А именно: что для защиты внутри процесса нужна прорва метаинформации; мол, где ее взять? AVC>>А я отвечаю: как где, а компилятор? WH>С, С++ и куча других страшных слов... в них все упирается... Так что твой обероновский компилятор идет лесом ибо если бы была возможность переписать весь софт то это бы сделали точно не на обероне ибо это угребище имеет очень много фундаментальных недостатков.
Ну, вылил ведро помоев; полегчало?
Пусть это будет не компилятор Оберона, а компилятор другого (вероятно, промежуточного) языка.
Если он в принципе в состоянии обеспечить надежность, зачем требовать дополнительного усложнения аппаратуры?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Ну, вылил ведро помоев; полегчало? AVC>Пусть это будет не компилятор Оберона, а компилятор другого (вероятно, промежуточного) языка. AVC>Если он в принципе в состоянии обеспечить надежность, зачем требовать дополнительного усложнения аппаратуры?
Ты это у FR и Cyberax страшивай. А я именно об этом и говорю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, _rasta, Вы писали:
_>является ли линуксом то, что сделано по образу и подобию линукса?
Нет. Иначе тога мы договоримся до того, что Винщдовс является Юниксом.
_>из той же серии: является ли женщина человеком, если была сделана по образу и подобию человека?
Это, прости, просто блед и демагогия.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AVC wrote: > Если он в принципе в состоянии обеспечить надежность, зачем требовать > дополнительного усложнения аппаратуры?
Потому как он заставит ВСЕ писать на своем собственном языке. А это
нереально.
WolfHound wrote: > FR>К тому же для этого вполне достаточно неуправляемой OS с запущенными > на ней процессами написанными на управляемых языках. > А саму ОСь кто защищать будет?
Вроде аппаратная защита вполне с этим справляется.
Здравствуйте, Cyberax, Вы писали:
>> Если он в принципе в состоянии обеспечить надежность, зачем требовать >> дополнительного усложнения аппаратуры? C>Потому как он заставит ВСЕ писать на своем собственном языке. А это C>нереально.
Почему нереально, если язык промежуточный?
(Просто промежуточное представление, вроде синтаксических деревьев.)
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
AVC wrote: > C>Потому как он заставит ВСЕ писать на своем собственном языке. А это > C>нереально. > Почему нереально, если язык *промежуточный*?
Например, GC будет в таких системах обязательным.
Ну и что если потребуется примитив, который этим промежуточным языком не
поддерживается?
Здравствуйте, Cyberax, Вы писали:
>> на ней процессами написанными на управляемых языках. >> А саму ОСь кто защищать будет? C>Вроде аппаратная защита вполне с этим справляется.
А ну-ну... то-то постоянно всякие уязвимости в ядрах ОС находят...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, VladD2, Вы писали:
_>>из той же серии: является ли женщина человеком, если была сделана по образу и подобию человека?
VD>Это, прости, просто блед и демагогия.
Здравствуйте, Cyberax, Вы писали:
>> Почему нереально, если язык *промежуточный*? C>Например, GC будет в таких системах обязательным.
C>Ну и что если потребуется примитив, который этим промежуточным языком не C>поддерживается?
Мы пока что говорим о защите внутри процесса. Другие процессы в принципе могут быть и ненадежными, так что причин для волнения нет.
Тот же Оберон (для примера) сейчас так в основном и используется на других системах: грузится в отдельном процессе.
И обеспечивает защиту в рамках этого процесса без всяких дополнительных требований к аппаратуре.
(В сущности, рантайм таких обероновских программ — это просто ОС Оберон поверх другой ОС.)
Я просто оспариваю мнение, что защита внутри процесса требует каких-то особых аппаратных наворотов.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Cyberax, Вы писали:
>> Мы пока что говорим о защите *внутри* процесса. C>Нет. Singularity ОБЯЗАНА быть глобально незащищенной.
Кому обязана?
C>Возможность запуска unmanaged-процессов в ней может быть достигнуто только созданием параллельной классической OS.
Нет. Читай отчет по сингулярити ftp://ftp.research.microsoft.com/pub/tr/TR-2006-43.pdf
Смотри раздел 4 Performance там тестируют 6 конфигураций сингулярити. От полного отсутствия какой бы то нибыло изоляции и даже с выключеной виртуальной памятью до все кроме ядра сидит в своем пространстве в третьем кольце.
А теперь ответь что мешает выность в третье кольцо только неуправляемые процессы?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
S>Недостатков я не вижу — стоимость кросс-процессных вызовов настолько низка, что никаким реальным плагинным системам это не помешает.
Угу, пока речь не пойдет об GUI. Тут и настанет сказочке конец. Покажи сегодня хоть одну большую прогу с богатым GUI, которая не на плагинной системе сделана. Под тысячу переданных сообщений GUI м/у процессами в секунду? Это круто.
AVC>На случай злобного хакера, можно подумать о технологии "тонких бинарников". AVC>Модуль попадает в систему в полукомпилированном виде, докомпилируется при загрузке. AVC>В принципе, можно докомпилировать один раз, потом грузить бинарник.
Именно так предполагается делать в Singlularity.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, vdimas, Вы писали: V>Угу, пока речь не пойдет об GUI. Тут и настанет сказочке конец. Покажи сегодня хоть одну большую прогу с богатым GUI, которая не на плагинной системе сделана. Под тысячу переданных сообщений GUI м/у процессами в секунду? Это круто.
Это детский лепет. На сингулярити стоимость обмена сообщениями в 6 раз ниже, чем в Windows: http://rsdn.ru/article/singularity/singularity.xml#EIIAE
Здравствуйте, vdimas, Вы писали:
V>Сетевой протокол CORBA очень продуман, и легко расширяем, в отличие от ремотинга донета.
У ремоутинга нет сетевого протокола.
V> Я имею ввиду, что если будет желание, например, как-то расширить стандартный ремотинг путем своих каналов или там еще чего (для передачи, скажем, неких атррибутов, привязанных к конкретным вызовам методов удаленных объектов), то это вступит в конфликт с другими компонентами системы
VD>Конкурируютя алгоритмы. Вот для того же дотнета и Явы есть 2-4 алгоритма для каждой из платформ. VD>И Ява и дотнет жувут с одной реализацией и являются лидерами. Тут даже обсуждать нечего.
Вообще-то в jre реализовано несколько алгоритмов сборки мусора
Здравствуйте, NorthDragon, Вы писали:
ND>Вообще-то в jre реализовано несколько алгоритмов сборки мусора
В дотнете тоже несколько алгоритмов. Но реализация одна. В прочем для Явы действительно есть раелизации от разных поставщиков, но нельзя не признать, что большинству людей достаточно реализации от Sun-а.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>В дотнете тоже несколько алгоритмов. Но реализация одна. В прочем для Явы действительно есть раелизации от разных поставщиков, но нельзя не признать, что большинству людей достаточно реализации от Sun-а.
Кстати, реализаций от сантехников несколько. При том, некоторые появившиеся раньше — "устаревшие". То биш жизнь идёт. Если бы "всем хватало", то не появлялось бы там ничего нового. Что касается дот-нета, то судя по тем крохам, что есть я видел в документации, то отстают они от сан-техников.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Что касается дот-нета, то судя по тем крохам, что есть я видел в документации, то отстают они от сан-техников.
По моим наблюдениям пямять .NET 2.0 кушает раза в 2 как минимум меньше чем JRE любая, при этом не медленнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Кстати, реализаций от сантехников несколько.
Озвучь, плиз список. Толко не надо говорить о серверном и клиентском ЖЦ. Это как я уже сказал одна реализация двух алогритмов заточенных под разные условия использования.
ANS> При том, некоторые появившиеся раньше — "устаревшие". То биш жизнь идёт.
Это прошлые версии. Они, кстати, мало чем отличаются. Нормальная эволюция.
ANS>Если бы "всем хватало", то не появлялось бы там ничего нового.
Реально всем хватает. Но конечно совершенсту нет пределов. Вот только нове появляется не в следствии реальной конкуренции, а в следствии работы ислледовтельских коллектиово. А уже наработанные идеи опробируются и влючаются в промышленные реализации коих очень не много (практически по одной на платформу).
ANS> Что касается дот-нета, то судя по тем крохам, что есть я видел в документации, то отстают они от сан-техников.
ЖЦ дотнета на сегодня во многом лучше Сановского. Особенно если речь вести о клиенстком ЖЦ. Более того потенциально он даже сменный. Вот только вдяд ли кто-то осилит создать полноценный ЖЦ вне стен МС, так как он слишком сильно завязан с джитом, а инофрмации крайне мало.
ЗЫ
Вообще ЖЦ сегодня это всокотехнологичный софт обросший тучей сплетен, домыслов и другой ахинеии. Большинство программистов не понимают принципов их работы и выдумывают о них всякий вздор.
Реально умные мысли о ЖЦ есть только у их разработчиков и ислледователей. Но это уже научная область и большинство программистов банально не могут в нее влезть из-за объема необходимых знаний.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > ANS>Кстати, реализаций от сантехников несколько. > Озвучь, плиз список. Толко не надо говорить о серверном и клиентском ЖЦ. > Это как я уже сказал одна реализация двух алогритмов заточенных под > разные условия использования.
Не совсем.
Ну ладно, вот весь список:
1. Serial Generational GC (обычный последовательный GC).
2. Parallel Generational GC (тоже самое, что и последовательный, но во
время сборки мусора его собирают сразу все процессоры).
3. Concurrent Mark&Sweep GC, a.k.a. Tricolor GC (инкрементальный
параллельный GC).
4. Mostly-Concurrent Generational GC (Generational GC, который работает
почти параллельно с мутатором).
Причем они могут настраиваться и комбинироваться. Например, у
generational'ов можно включать или выключать компактификацию поколений,
менять trigger policies. Mark&Sweep можно сочетать с generational'ами и т.п.
У меня лежит незаконченая статья, все дописать никак не могу.
Здравствуйте, Cyberax, Вы писали:
C>Ну ладно, вот весь список: C>1. Serial Generational GC (обычный последовательный GC). C>2. Parallel Generational GC (тоже самое, что и последовательный, но во C>время сборки мусора его собирают сразу все процессоры). C>3. Concurrent Mark&Sweep GC, a.k.a. Tricolor GC (инкрементальный C>параллельный GC). C>4. Mostly-Concurrent Generational GC (Generational GC, который работает C>почти параллельно с мутатором).
И что это за список?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: ANS>>Кстати, реализаций от сантехников несколько.
VD>Озвучь, плиз список. Толко не надо говорить о серверном и клиентском ЖЦ. Это как я уже сказал одна реализация двух алогритмов заточенных под разные условия использования.
Вот есть операция деления. Но есть разные реализации. Так же есть "tracing" и "copying" GC. И есть разные реализации, которые имеют те или иные выгоды.
ANS>> При том, некоторые появившиеся раньше — "устаревшие". То биш жизнь идёт.
VD>Это прошлые версии. Они, кстати, мало чем отличаются. Нормальная эволюция.
Фига се мало. Ознакомся с материалом для начала.
ANS>> Что касается дот-нета, то судя по тем крохам, что есть я видел в документации, то отстают они от сан-техников.
VD>ЖЦ дотнета на сегодня во многом лучше Сановского.
Трындеть — не мешки ворочать. Как на счет привести доказательства. Только умоляю — не нужно этих "Мамой клянусь".
VD>Особенно если речь вести о клиенстком ЖЦ.
Не нужно нам военных песен, нам факты давай!
VD>Более того потенциально он даже сменный. Вот только вдяд ли кто-то осилит создать полноценный ЖЦ вне стен МС, так как он слишком сильно завязан с джитом, а инофрмации крайне мало.
Угу. У сантехников информации как кот наплакал, но и её в сотни раз больше чем у МС. Эти вообще всё просто решили: есть серверный GC — юзайте его на серверах. А то что этот GC весь сервер колом ставит — так это пофиг. В результате если хип занимает пару гиг, то полный GC, даже на нескольких процах, занимает несколько десятков секунд. За это время набирается очередь запросов и сервер колбасит потом еще долго. Такое ощущение, что кроме как на замену PHP никто .Net на серверах не использует.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS> Вот есть операция деления. Но есть разные реализации. Так же есть "tracing" и "copying" GC. И есть разные реализации, которые имеют те или иные выгоды.
Ясно. Ты не понимаешь разницы между реализацией и алгоритмом. Один ЖЦ в зависимости от настроек может применять разные алгоритмы. Дотнет и Ява тому пример. А раелизация тем временем одна.
ANS>Фига се мало. Ознакомся с материалом для начала.
Тут ни слова про разные реализации.
ANS>Трындеть — не мешки ворочать. Как на счет привести доказательства. Только умоляю — не нужно этих "Мамой клянусь".
Дык не трынди. Кто же тебя заставляет?
Доказательства тут баральные качаешь JEdit открываешь в нем файлик в несколкь мег и колдишь как ЖЦ дает о себе знать невооруженному взгляду. А потом качаешь мой Rsdn.Editor и убеждаешься, что ЖЦ вообще не заметен на глаз.
VD>>Особенно если речь вести о клиенстком ЖЦ.
ANS>Не нужно нам военных песен, нам факты давай!
Чтобы трындеть было сподручнее?
Дык ты и так трындишь без проблем. Не уж-то и впрямть что-то сокровенное из документации вычитал?
ANS>Угу. У сантехников информации как кот наплакал, но и её в сотни раз больше чем у МС. Эти вообще всё просто решили: есть серверный GC — юзайте его на серверах.
Ну, это ты по незнанию говоришь. Вообще-то есть и Rotor, и книжки по MS-ному GC. Но для поддержания трындежа это конечно не важно.
ANS> А то что этот GC весь сервер колом ставит — так это пофиг.
У трындельщиков то? Несомненно. Только причем тут софт? Тут дело в прослойке.
ANS> В результате если хип занимает пару гиг, то полный GC, даже на нескольких процах, занимает несколько десятков секунд.
Серьезно? Можно глянуть сервер находящийся в твоем распоряжении где стоит дотнет и где хип занимает пару гиг? А? А то я не видел ни разу. У нас вот 500 мег не превышает (к сожалению). И сборки идут со скоростью сотен в секудну.
Что мы не так делаем?
ANS> За это время набирается очередь запросов и сервер колбасит потом еще долго. Такое ощущение, что кроме как на замену PHP никто .Net на серверах не использует.
Ты говоришь о том о чем и представления никакого не имеещь. А мне такие беседы не интересны.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ясно. Ты не понимаешь разницы между реализацией и алгоритмом. Один ЖЦ в зависимости от настроек может применять разные алгоритмы. Дотнет и Ява тому пример. А раелизация тем временем одна.
Одна реализация разных алгоритмов? Расшифруй.
ANS>>Фига се мало. Ознакомся с материалом для начала.
VD>Тут ни слова про разные реализации.
VD>Доказательства тут баральные качаешь JEdit открываешь в нем файлик в несколкь мег и колдишь как ЖЦ дает о себе знать невооруженному взгляду. А потом качаешь мой Rsdn.Editor и убеждаешься, что ЖЦ вообще не заметен на глаз.
То есть цифр не будет, ибо для тебя доказательство — это "на глаз"?
(Кстати, что есть "колдишь"?)
ANS>>Угу. У сантехников информации как кот наплакал, но и её в сотни раз больше чем у МС. Эти вообще всё просто решили: есть серверный GC — юзайте его на серверах.
VD>Ну, это ты по незнанию говоришь. Вообще-то есть и Rotor, и книжки по MS-ному GC. Но для поддержания трындежа это конечно не важно.
Для понимания GC в .Net сырцы ротора представляет такую же ценность как и сырцы gc в jvm. Что касается книжек, то давай ссылку на amazon.
VD>У нас вот 500 мег не превышает (к сожалению). VD>И сборки идут со скоростью сотен в секудну.
На таком крохотном хипе даже счетчик ссылок будет работать без проблем.
% Time in GC: 78%
И так: 500М нетути, но картина уже грустновата. А если хип увеличиться в 10 раз, то клиенты вообще ответа от него не дождутся.
ANS>> За это время набирается очередь запросов и сервер колбасит потом еще долго. Такое ощущение, что кроме как на замену PHP никто .Net на серверах не использует.
VD>Ты говоришь о том о чем и представления никакого не имеещь. А мне такие беседы не интересны.
Andrei N.Sobchuck wrote: > Для понимания GC в .Net сырцы ротора представляет такую же ценность как > и сырцы gc в jvm. Что касается книжек, то давай ссылку на amazon.
Сырцы в JVM вполне, кстати, помогают понять как JVM работает. Особенно
тонкие его детали, типа используемого write barrier.
А вот Ротор — он действительно ничем не поможет, там примитивный GC.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Одна реализация разных алгоритмов? Расшифруй.
Алгоритмы используются в рамках одной реализации ЖЦ. Вот IBM, например, предоставляет свою реализацию. Еще кто-то может быть. А у Сана реализация одна.
Точно так же и у МС. Алноритмов Х, а реализация одна.
VD>>Доказательства тут баральные качаешь JEdit открываешь в нем файлик в несколкь мег и колдишь как ЖЦ дает о себе знать невооруженному взгляду. А потом качаешь мой Rsdn.Editor и убеждаешься, что ЖЦ вообще не заметен на глаз.
ANS>То есть цифр не будет, ибо для тебя доказательство — это "на глаз"?
Если видны тормоза от сборки мусора на глаз, значит задкржки доходят до десятых долей секунды и больше. Я надеелся твоего интеллекта хватит на то чтобы сдалать такой логический вывод.
.
ANS>Для понимания GC в .Net сырцы ротора представляет такую же ценность как и сырцы gc в jvm. Что касается книжек, то давай ссылку на amazon.
Может тебе ссылку на гугль дать?
VD>>У нас вот 500 мег не превышает (к сожалению). VD>>И сборки идут со скоростью сотен в секудну.
ANS>Это на "сотни в секунду" не тянет
Сборка мусора нулевого поколения просходит раз 1-4 секунды. Раз в 10 секунд просходит сборка второго поколения. Где-то так же первого.
.
И? Ты вообще знаешь чем скорость от частоты отличается? И за одно чем отличается "в среднем" от "в пиковые моменты"?
VD>>Что мы не так делаем?
ANS>Ты просто не умееш читать. Смотрим
:
ANS>Поколение 0: 37М ANS>Поколение 2: 26М
ANS>На таком крохотном хипе даже счетчик ссылок будет работать без проблем.
ANS>% Time in GC: 78%
ANS>И так: 500М нетути, но картина уже грустновата. А если хип увеличиться в 10 раз, то клиенты вообще ответа от него не дождутся.
Слушай откровенно говоря я сейчас скачусть на нелестные отзывы о твоей личности, так как твоя изберательность в цитировании и понимании чужих слов никак окромя демагогии назвать нельзя.
Спустись на пару веток ниже Re[10]: GC в .NET
Здравствуйте, Cyberax, Вы писали:
C>Сырцы в JVM вполне, кстати, помогают понять как JVM работает. Особенно C>тонкие его детали, типа используемого write barrier.
Тьфу-тьфу-тьфу. До копания сырцов gc в java для оптимизации приложения дело не дошло. К счастью, на их форуме по jvm отвечают на вопросы и разработчики. Из которых вполне можно вытащить ответы, при наличии терпения Найденную багу в инкрементальном конкурентном GC при работе со слабыми ссылками они пофиксили, кстати, в несколько дней. А вот общение на форуме по коллекциям никакого удовольствия не приносит Там багу в сырцах AbstractMap не хотят даже признавать
Здравствуйте, VladD2, Вы писали:
VD>Если видны тормоза от сборки мусора на глаз, значит задкржки доходят до десятых долей секунды и больше. Я надеелся твоего интеллекта хватит на то чтобы сдалать такой логический вывод.
Что задержки именно от сборки мусора, а не от того, тчо программа такая это ты инфу из астрала получил?
VD>Привести тебя цифры даже не прошу. Ты же у нас производительность ЖЦ по документации изучаешь
Именно по цифрам. Вот лог от сборки в Эдэме (молодом поколении):
Desired survivor size 41464624 bytes, new threshold 4 (max 6)
— age 1: 25402832 bytes, 25402832 total
— age 2: 13157352 bytes, 38560184 total
— age 3: 1943640 bytes, 40503824 total
— age 4: 1154792 bytes, 41658616 total
— age 5: 1800272 bytes, 43458888 total
: 469376K->42624K(469376K), 0.2825171 secs] 908653K->498107K(8345984K), 0.2832459 secs]
ANS>>Для понимания GC в .Net сырцы ротора представляет такую же ценность как и сырцы gc в jvm. Что касается книжек, то давай ссылку на amazon.
VD>Может тебе ссылку на гугль дать?
То есть нету. Я так и думал.
VD>>>У нас вот 500 мег не превышает (к сожалению). VD>>>И сборки идут со скоростью сотен в секудну.
ANS>>Это на "сотни в секунду" не тянет
VladD2 wrote: > ANS>Одна реализация разных алгоритмов? Расшифруй. > Алгоритмы используются в рамках одной реализации ЖЦ. Вот IBM, например, > предоставляет свою реализацию. Еще кто-то может быть. А у Сана > реализация одна. > Точно так же и у МС. Алноритмов Х, а реализация одна.
Вообще-то, внутри JDK алгоритмы GC находятся в раздельных модулях и
вполне себе автономны.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Что задержки именно от сборки мусора, а не от того, тчо программа такая это ты инфу из астрала получил?
Это совершенно очевидно. Тормоза случаются переодически при скролинге. Если бы проблема была алгоритмической, то тормоза были бы постоянно. А так они происходят через определенный промежуток времени. Ели тебе интересно, можешь поглядеть чем-нибудь информацию о сборках.
VD>>Привести тебя цифры даже не прошу. Ты же у нас производительность ЖЦ по документации изучаешь
.
ANS>Именно по цифрам. Вот лог от сборки в Эдэме (молодом поколении): ANS>
ANS>Desired survivor size 41464624 bytes, new threshold 4 (max 6)
ANS>- age 1: 25402832 bytes, 25402832 total
ANS>- age 2: 13157352 bytes, 38560184 total
ANS>- age 3: 1943640 bytes, 40503824 total
ANS>- age 4: 1154792 bytes, 41658616 total
ANS>- age 5: 1800272 bytes, 43458888 total
ANS>: 469376K->42624K(469376K), 0.2825171 secs] 908653K->498107K(8345984K), 0.2832459 secs]
Назовц фиры! 1, 295, 18, 4! Это реальны цыфры!!!
Ты делал заявления по повду ЖЦ дотнета в сравнении с Явой. Вот по этому поводу цифры и проводи, а какю-то фигню.
ANS>То есть нету. Я так и думал.
Ну, почему же? http://www.google.ru/
Дальше справишся?
ANS>Со скоростью "сотен в секунду" чего? Сотен объектов? Единица измерения какая?
Сборок, сборок. Нулевое поколение собирается за микросекунды.
ANS>Могу предположить, что этот "явный глюк" был сборкой 2-го поколения.
Ты можешь что угодно предполагать. Меж тем во время сборки мусора мог банально захватить процессор MSSQL и статистика стала черт знает какой. Что произошло конкретно можно только гадать. Меж тем это и не важно. Сказано же, что это отдельное редко встречаемое явление.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VladD2 wrote: > C>А вот Ротор — он действительно ничем не поможет, там примитивный GC. > Я бы сказал упрощенный. И как раз понять как работает ЖЦ очень даже > помогает, так как инфраструктура там та же самая.
Там нет очень многих интереснейших и важных моментов. Например,
организации точек останова и сопутствующих registry- и stackmap'ов. Еще
там очень примитивная организация поколений, нет компактификации кучи и т.п.
> Хотя конечно не помешало бы имать исходники алгоритмов применяемых в > дотнете. Но видимо это коммерческая тайна.
А что еще от MS ожидать? Они бы хоть стандартную библиотеку выпустили в
исходниках.
V>>Сетевой протокол CORBA очень продуман, и легко расширяем, в отличие от ремотинга донета.
AVK>У ремоутинга нет сетевого протокола.
Там в качестве протокола выступает выбранный протокол сериализации сообщений.
V>> Я имею ввиду, что если будет желание, например, как-то расширить стандартный ремотинг путем своих каналов или там еще чего (для передачи, скажем, неких атррибутов, привязанных к конкретным вызовам методов удаленных объектов), то это вступит в конфликт с другими компонентами системы
AVK>Например?
Пакет сообщения CORBA немного самоописываем, т.е. в определенном месте можно вставлять некие "свои" данные. Приемная сторона, т.е. некая CORBA-либа разбирает все, что может разобрать, как минимум разбирает пакет согласно номеру стандарта (сначала выбирают наибольший поддерживаемый номер стандарта, на котором осуществляется общение), и если позволяет реализация, то можно добавлять свои данные, которые не мешают остальным. Данные могут быть какие угодно, например, хинты блокировок или там закодированные "пожелания" по реакции на исключения и т.д. Разумеется, вручную управлять этими данными неудобно, но если речь идет о какой-нить автоматизированной системе, то весьма удобно. Как аналогию можно привести кастомные аттрибуты из донета (которые могут быть исопльзованы "очень много зачем"), но здесь подразумевается возможность их динамической передачи во время на вызова удаленного метода.
Cyberax wrote: >> C>А вот Ротор — он действительно ничем не поможет, там примитивный GC. >> Я бы сказал упрощенный. И как раз понять как работает ЖЦ очень даже >> помогает, так как инфраструктура там та же самая. > Там нет очень многих интереснейших и важных моментов. Например, > организации точек останова и сопутствующих registry- и stackmap'ов. Еще > там очень примитивная организация поколений, нет компактификации кучи и т.п.
Дополню, чтобы мне не тыкали потом на ошибки. В Rotor'е точки останова
(GC safepoints) выставляются только в начале и конце методов, так что
такой вот код вызовет "пятисекундную паузу":
//Thread 1void theEternalLoop()
{
while(true){};
}
//Thread 2void doSomething()
{
SomeObj obj=new SomeObj(); //Здесь случается GC...
//...но сюда мы никогда не попадем.
}
Здравствуйте, Cyberax, Вы писали:
C>VladD2 wrote: >> C>А вот Ротор — он действительно ничем не поможет, там примитивный GC. >> Я бы сказал упрощенный. И как раз понять как работает ЖЦ очень даже >> помогает, так как инфраструктура там та же самая. C>Там нет очень многих интереснейших и важных моментов. Например, C>организации точек останова и сопутствующих registry- и stackmap'ов.
Это все там есть.
C> Еще там очень примитивная организация поколений, нет компактификации кучи и т.п.
Это да сам алгоритм там урощенный.
C>А что еще от MS ожидать? Они бы хоть стандартную библиотеку выпустили в C>исходниках.
В роторе BCL идет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, vdimas, Вы писали:
AVK>>У ремоутинга нет сетевого протокола.
V>Там в качестве протокола выступает выбранный протокол сериализации сообщений.
Вот именно. И подсунуть можно хоть IIOP. Было бы желание.
V>>> Я имею ввиду, что если будет желание, например, как-то расширить стандартный ремотинг путем своих каналов или там еще чего (для передачи, скажем, неких атррибутов, привязанных к конкретным вызовам методов удаленных объектов), то это вступит в конфликт с другими компонентами системы
AVK>>Например?
V>Пакет сообщения CORBA немного самоописываем, т.е. в определенном месте можно вставлять некие "свои" данные. Приемная сторона, т.е. некая CORBA-либа разбирает все, что может разобрать, как минимум разбирает пакет согласно номеру стандарта (сначала выбирают наибольший поддерживаемый номер стандарта, на котором осуществляется общение), и если позволяет реализация, то можно добавлять свои данные, которые не мешают остальным. Данные могут быть какие угодно, например, хинты блокировок или там закодированные "пожелания" по реакции на исключения и т.д. Разумеется, вручную управлять этими данными неудобно, но если речь идет о какой-нить автоматизированной системе, то весьма удобно. Как аналогию можно привести кастомные аттрибуты из донета (которые могут быть исопльзованы "очень много зачем"), но здесь подразумевается возможность их динамической передачи во время на вызова удаленного метода.
Я тебя про проблемы ремоутинга спрашивал, а ты мне про CORBA рассказываешь.
AVK>Вот именно. И подсунуть можно хоть IIOP. Было бы желание.
Сериализация произвольных дотнетных структур данных не ложится на IIOP, к сожалению. Особенно это относится к абстрактным типам, передаваемым по-значению, к Object в первую очередь, разумеется.
Здравствуйте, vdimas, Вы писали:
V>Сериализация произвольных дотнетных структур данных не ложится на IIOP, к сожалению.
Ложится, если с умом подойти. EJB ложится, а в ремоутинге от него никаких принципиальных отличий нет. Скорее наоборот, из-за ручного боксинга в случае EJB проблем заметно больше.
VladD2 wrote: > ANS>Что задержки именно от сборки мусора, а не от того, тчо программа > такая это ты инфу из астрала получил? > > Это совершенно очевидно. Тормоза случаются переодически при скролинге. > Если бы проблема была алгоритмической, то тормоза были бы постоянно. А > так они происходят через определенный промежуток времени. Ели тебе > интересно, можешь поглядеть чем-нибудь информацию о сборках.
Сразу резко вспомнилось, что xpdf (написанный на unsafe языке без GC)
имеет именно из-за алгоритмически не очень удачного кеширования
отрисованной области за краями экрана именно "тормоза периодически при
скроллинге, а не постоянно". При том, что и в xpdf и в JEdit тормозит,
вероятно, отрисовка...
Здравствуйте, AndrewVK, Вы писали:
V>>Сериализация произвольных дотнетных структур данных не ложится на IIOP, к сожалению.
AVK>Ложится, если с умом подойти. EJB ложится, а в ремоутинге от него никаких принципиальных отличий нет.
С умом, в смысле — учесть все ограничения? Это да, согласен. Для прогона RMI через GIOP (IIOP — это GIOP по интернету) изначально введены ограничения, которые позволяют отображать RMI на GIOP:
1.2 The RMI/IDL Subset of Java
This section describes the subset of Java RMI that is mapped to IDL and can run over
GIOP.
1.2.1 Overview of Conforming RMI/IDL Types
A conforming RMI/IDL type is a Java type whose values may be transmitted across an
RMI/IDL remote interface at run-time.
A Java data type is a conforming RMI/IDL type if it is:
• one of the Java primitive types (see Section 1.2.2, “Primitive Types,” on page 1-2).
• a conforming remote interface (as defined in Section 1.2.3, “RMI/IDL Remote
Interfaces,” on page 1-3).
• a conforming value type (as defined in Section 1.2.4, “RMI/IDL Value Types,” on
page 1-4).
• an array of conforming RMI/IDL types (see Section 1.2.5, “RMI/IDL Arrays,” on
page 1-5).
• a conforming exception type (see Section 1.2.6, “RMI/IDL Exception Types,” on
page 1-5).
• a conforming CORBA object reference type (see Section 1.2.7, “CORBA Object
Reference Types,” on page 1-6).
• a conforming IDL entity type (see Section 1.2.8, “IDL Entity Types,” on page 1-6).
1.2.2 Primitive Types
All the standard Java primitive types are supported as part of RMI/IDL. These are:
• void, boolean, byte, char, short, int, long, float, double
September 2003 Java to IDL Mapping: The RMI/IDL Subset of Java 1-3
1
1.2.3 RMI/IDL Remote Interfaces
An RMI remote interface defines a Java interface that can be invoked remotely. A Java
interface is a conforming RMI/IDL remote interface if:
1. The interface is or inherits from java.rmi.Remote either directly or indirectly.
2. All methods in the interface are defined to throw
java.rmi.RemoteException or a superclass of
java.rmi.RemoteException. Throughout this section, references to methods
in the interface include methods in any inherited interfaces. 3. There are no restrictions on method arguments and result types. However at runtime,
the actual values passed as arguments or returned as results must be
conforming RMI/IDL types (see Section 1.2.1, “Overview of Conforming RMI/IDL
Types,” on page 1-2). In addition, for each RMI/IDL remote interface reference, the
actual value passed or returned must be either a stub object or a remote interface
implementation object (see Section 1.2.3.1, “Stubs and remote implementation
classes,” on page 1-4).
...
1.2.4 RMI/IDL Value Types An RMI/IDL value type represents a class whose values can be moved between
systems. So rather than transmitting a reference between systems, the actual state of
the object is transmitted between systems. This requires that the receiving system have
an analogous class that can be used to hold the received value.
Value types may be passed as arguments or results of remote methods, or as fields
within other objects that are passed remotely.
A Java class is a conforming RMI/IDL value type if the following applies:
1. The class must implement the java.io.Serializable interface, either directly
or indirectly, and must be serializable at run-time. It may serialize references to
other RMI/IDL types, including value types and remote interfaces.
2. The class may implement java.io.Externalizable. (This indicates it
overrides some of the standard serialization machinery.)
3. If the class is a non-static inner class, then its containing class must also be a
conforming RMI/IDL value type.
4. A value type must not either directly or indirectly implement the
java.rmi.Remote interface. (If this were allowed, then there would be potential
confusion between value types and remote interface references.)
September 2003 Java to IDL Mapping: The RMI/IDL Subset of Java 1-5
1
5. A value type may implement any interface except for java.rmi.Remote.
6. There are no restrictions on the method signatures for a value type.
7. There are no restrictions on static fields for a value type.
8. There are no restrictions on transient fields for a value type.
9. Method, constant, and field names must not cause name collisions when mapped to
IDL (see Section 1.3.2.10, “Names that would cause OMG IDL name collisions,”
on page 1-10).
...
1.2.7 CORBA Object Reference Types
A conforming CORBA object reference type is either
• the Java interface org.omg.CORBA.Object, or
• a Java interface that extends org.omg.CORBA.Object directly or indirectly and
conforms to the rules specified in the Java Language Mapping (i.e., could have been
generated by applying the mapping to an OMG IDL definition).
Выделил интересную часть. Создаются трудности для передачи абстрактных типов по значению. Причина понятна, CORBA должна обеспечивать передачу типов по значению в гетерогенной среде, где может не оказаться подходящей иерархии абстрактных классов, более того, может не оказаться самой возможности наследования классов в некоей конкретной среде.
В этом стремлении к поддержке гетерогенных сред и сила и слабость OMG. Уверен, что к 4-му или 5-му стандарту во главу угла будет поставлены цель интероперабельности Java и .Net, тогда придется снова ввести многое из того, что делать было нельзя из-за гетерогенной направленности. Ведь на C++ по-любому что угодно отбразить можно, а возможности ObjectPascal близки к возможностям Java, которые достаточны для ремоутинга. Если отказаться от коболов и прочей экзотики, оставив Object Pascal, C++, Java, .Net, то вполне можно разработать современный и удобный стандарт на интероперабельность (пока что стандарт очень ограничен в специфицированной части, ИМХО из-за этого открыт для расширения в бинарном протоколе, дабы иметь возможность для обхода "особых случаев").
Здравствуйте, raskin, Вы писали:
R> При том, что и в xpdf и в JEdit тормозит, R>вероятно, отрисовка...
Отрисовка там не тормозит. Там случаются приодические задержки в сдествии активизации ЖЦ и плохого алогоритма инкрементальной сборки. Это признают все с кем я это в свое время обсуждал. Да и есть разные профйлеры. Собственно выявилось это когда я услышал совершенно дурацкий на мой взгляд совет по отимизации работы со строками. Для дотнета он был совершенно бессмысленным. Меж тем на Яве он говоря помогает.
Тормоза там случались спантанно при скроликне олно и того же текста. Это никак не зависило от отрисовываемого фрагмената. Только повышалась частота их появления при увеличении строк в редакторе.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Отрисовка там не тормозит. Там случаются приодические задержки в сдествии активизации ЖЦ и плохого алогоритма инкрементальной сборки. Это признают все с кем я это в свое время обсуждал. Да и есть разные профйлеры.
Профайлеры тут нафиг не упали. Есть опция командной строки, которая выводит время работы GC. Это объективный показатель. А на глаз определять тормоза GC — дурость неимоверная.
VD>Собственно выявилось это когда я услышал совершенно дурацкий на мой взгляд совет по отимизации работы со строками. Для дотнета он был совершенно бессмысленным. Меж тем на Яве он говоря помогает.
Здравствуйте, vdimas, Вы писали:
V>В этом стремлении к поддержке гетерогенных сред и сила и слабость OMG. Уверен, что к 4-му или 5-му стандарту во главу угла будет поставлены цель интероперабельности Java и .Net, тогда придется снова ввести многое из того, что делать было нельзя из-за гетерогенной направленности.
Только смысла в этом уже не будет. Поскольку ныне правят бал уже совсем другие стандарты, а в дотнете ремоутинг для межпроцессного и межмашинного взаимодействия использовать уже не рекомендуют.
Здравствуйте, WolfHound, Вы писали:
AVC>>Думается, для того же, для чего нужны безопасные языки и сборка мусора, — для надежности. AVC>>Активные объекты — развитие мониторов Хансена и Хоара, а мониторы всяко надежнее бессистемного управления потоками. AVC>>В каком-то смысле — это та же инкапсуляция (данных, потоков и блокировок). WH>А теперь попробуй объяснить чем синхронизация на активнах объектах лучше чем синхронизации на каналах?
Очень поверхностно ознакомился с идеями Сигулярити — прочел (пока) один обзор.
Во-первых, мне Сигулярити нравится.
Уже хотя бы из-за SIP аббревиатуры (Software Isolated Process).
Ты уж извини, но здесь я опять-таки вижу аналогию с Обероном (если взять слово Software).
Насколько я понял, основное различие в том, что Сингулярити (программно) поддерживает несколько процессов.
В принципе, это должно быть хорошо.
В первоначальном Обероне был только один поток, в Aos (BlueBottle) — многопоточность, а вот процессов в их традиционном для ОС понимании не было.
Вполне возможно, что это шаг вперед (и серьезный).
Вместе с тем, разделение (пусть и программное) процессов все-таки накладывает некоторые ограничения.
Например, процессы не могут обмениваться между собой объектами.
Что, ИМХО, можно считать ограничением, т.к. современные программные системы во многом строятся из объектов.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, WolfHound, Вы писали:
WH>А теперь попробуй объяснить чем синхронизация на активнах объектах лучше чем синхронизации на каналах?
Синхронизация на каналах — это частный случай синхронизации на объектах.
Синхронизация на объектах — более общий, а стало быть, более мощный способ.
Активные объекты, как и положено объектам, могут вызывать методы друг друга. Вызов метода — это обычный процедурный вызов. Это очень быстро, у процессоров для этого есть специальные инструкции. SIP так не умеют.
Здравствуйте, absolute, Вы писали:
A>Синхронизация на каналах — это частный случай синхронизации на объектах. A>Синхронизация на объектах — более общий, а стало быть, более мощный способ.
Правда? А вот я всегда думал что на оборот...
В случае каналов я могу на произвольное колличество произвольных запросов получить произвольное колличество произвольных ответов. А в случае с объектами я могу на один конкретный запрос получить только один конкретный ответ.
Также не забываем про асинхронность сообщений... те я могу послать сообщение и занятся полезной работой, а не висеть в синхронном вызове куря бамбук. Особенно это хорошо если нужно послать сообщения по нескольким каналам и потом ждать от них ответа.
В случае с синхронными запросами все запросы будут отрабатываться последовательно, а в моем случае паралельно.
Так что тут частный случай?
Кстати как там с установкой таймаута при вызове активного объекта?
A>Активные объекты, как и положено объектам, могут вызывать методы друг друга. Вызов метода — это обычный процедурный вызов. Это очень быстро, у процессоров для этого есть специальные инструкции. SIP так не умеют.
Только ты забыл про то что это не только обычный вызов но еще и захват монитора. А во что это выльется хотябы на кластере я вобще подумать боюсь... кури DCOM и CORBA и то и другое работает весьма хреново ибо RPC, а RPC это ошибка природы и должен умереть. Вся эта "прозрачность" на практике не только ничего не дает но и мешает нормальной декомпозиции ситемы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AVC, Вы писали:
AVC>Очень поверхностно ознакомился с идеями Сигулярити — прочел (пока) один обзор. AVC>Во-первых, мне Сигулярити нравится. AVC>Уже хотя бы из-за SIP аббревиатуры (Software Isolated Process). AVC>Ты уж извини, но здесь я опять-таки вижу аналогию с Обероном (если взять слово Software).
На этом сходство с обероном заканчивается.
А идея программной изоляции просто витает в воздухе...
AVC>Насколько я понял, основное различие в том, что Сингулярити (программно) поддерживает несколько процессов. AVC>В принципе, это должно быть хорошо. AVC>В первоначальном Обероне был только один поток, в Aos (BlueBottle) — многопоточность, а вот процессов в их традиционном для ОС понимании не было. AVC>Вполне возможно, что это шаг вперед (и серьезный). AVC>Вместе с тем, разделение (пусть и программное) процессов все-таки накладывает некоторые ограничения. AVC>Например, процессы не могут обмениваться между собой объектами.
Могут по значению.
AVC>Что, ИМХО, можно считать ограничением, т.к. современные программные системы во многом строятся из объектов.
Вот только в современных системах общение все сильнее смещается к DTO предаваемым по значению. Ибо предача объекта по ссылке в другой процесс я уже молчу про другую машину продемонстрировала свою ущербность.
Оно конечно работает но работает весьма хреново.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
AVC>>Вместе с тем, разделение (пусть и программное) процессов все-таки накладывает некоторые ограничения. AVC>>Например, процессы не могут обмениваться между собой объектами. WH>Могут по значению.
С методами?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>>>Например, процессы не могут обмениваться между собой объектами. WH>>Могут по значению. AVC>С методами?
Зачем? Сейчас все больше народ склоняется к передачи просто структуированных данных без поведения.
Передача объектов с поведением это вобще весьма проблемная задача с кучей подводных камней из серии где выполнять методы, какие у этих методов права и тп...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>В случае каналов я могу на произвольное колличество произвольных запросов получить произвольное колличество произвольных ответов.
Кому посылаются запросы и от кого получаются ответы?
WH>А в случае с объектами я могу на один конкретный запрос получить только один конкретный ответ.
С объектами существует множество разнообразный возможностей:
1. Полностью синхронный запрос-ответ за один процедурный вызов.
2. Разделить обработку на синхронную и асинхронную части. Это разделение осуществяется в серверном активном объекте. Когда синхронная часть завершена управление возвращается, а активный объект продолжает обрабатывать асинхронную часть.
3. Завести объекты-каналы. В них складывать запросы и доставать ответы. Синхронны только обращения к каналам.
4. Максимальный асинхронизм. Серверный объект на каждый запрос создаёт активный объект, который "ведёт" этот запрос.
WH>Особенно это хорошо если нужно послать сообщения по нескольким каналам и потом ждать от них ответа.
Из одного потока? Если да то зачем?
WH>Кстати как там с установкой таймаута при вызове активного объекта?
Таймер — это ещё один активный объект.
Он есть в комплекте поставки системы.
WH>Только ты забыл про то что это не только обычный вызов но еще и захват монитора.
Захват незахваченного монитора — это пара машинных инструкций.
WH>А во что это выльется хотябы на кластере я вобще подумать боюсь... кури DCOM и CORBA и то и другое работает весьма хреново ибо RPC, а RPC это ошибка природы и должен умереть. Вся эта "прозрачность" на практике не только ничего не дает но и мешает нормальной декомпозиции ситемы.
Прозрачность надо ставить не на уровне процедурных вызовов.
Активные объекты могут помочь и при кластерных вычислениях.
Здравствуйте, absolute, Вы писали:
WH>>В случае каналов я могу на произвольное колличество произвольных запросов получить произвольное колличество произвольных ответов. A>Кому посылаются запросы и от кого получаются ответы?
Ты вобще описание модели читал или просто поспорить решил?
WH>>А в случае с объектами я могу на один конкретный запрос получить только один конкретный ответ. A>С объектами существует множество разнообразный возможностей: A>1. Полностью синхронный запрос-ответ за один процедурный вызов.
На соседний комп? Или в соседний процесс? Так там всеравно будут асихронные сообщения...
A>2. Разделить обработку на синхронную и асинхронную части. Это разделение осуществяется в серверном активном объекте. Когда синхронная часть завершена управление возвращается, а активный объект продолжает обрабатывать асинхронную часть.
Ахринеть... это для того чтобы отаслать данные на сервер мне нужно будет всеравно дождатся ответа? А зачем?
Только не говори про подтверждение доставки. На практике в большинстве случаев нужно отправить несколько сообщений и на все разом получить ответ.
Например протокол HTTP очень хорошо раскладывается на серию сообщений сначала в одну сторону, а потом в другую.
A>3. Завести объекты-каналы. В них складывать запросы и доставать ответы. Синхронны только обращения к каналам.
Закат солнца в ручную? Конечно можно но зачем?
A>4. Максимальный асинхронизм. Серверный объект на каждый запрос создаёт активный объект, который "ведёт" этот запрос.
И как мне обработать некий протокол? На пример тотже HTTP? И это еще очень простой протокол.
WH>>Особенно это хорошо если нужно послать сообщения по нескольким каналам и потом ждать от них ответа. A>Из одного потока? Если да то зачем?
Что зачем?
Опрос нескольких сервисов происходит сплошь и рядом.
WH>>Кстати как там с установкой таймаута при вызове активного объекта? A>Таймер — это ещё один активный объект. A>Он есть в комплекте поставки системы.
Ну и как будет выглядеть аналог кода
match (channel.Receive(timeout))
{
| Message1 as msg => ...
| Message2 as msg => ...
| Message3 as msg => ...
| None => ...
}
A>Захват незахваченного монитора — это пара машинных инструкций.
А захват монитора на соседнем компе или хотябы в соседнеднем процессе?
A>Прозрачность надо ставить не на уровне процедурных вызовов.
А куда?
A>Активные объекты могут помочь и при кластерных вычислениях.
Правда? Я вот прямо сейчас в этих самых кластерных вычислениях и активных объектах общение с которыми идет через CORBA. Так вот я с большим удовольствием бы сменил корбу на каналы.
Провести распределенную транзакцию на корбячих вызовах это тАкой геморой что
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
AVC>>>>Например, процессы не могут обмениваться между собой объектами. WH>>>Могут по значению. AVC>>С методами? WH>Зачем? Сейчас все больше народ склоняется к передачи просто структуированных данных без поведения. WH>Передача объектов с поведением это вобще весьма проблемная задача с кучей подводных камней из серии где выполнять методы, какие у этих методов права и тп...
Допустим, виноград пока что зелен.
Но вопрос "зачем?" кажется странным.
Объекты желательно передавать по той же причине, по какой их вообще используют: в отличие от пассивных данных, объекты обладают поведением.
О чем ты сам и сказал. (Поэтому и вопрос странный.)
Действительно, пересечение объектом границ процесса может вызывать трудности.
Так, может быть, не всегда уместно все пилить на процессы?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Допустим, виноград пока что зелен. AVC>Но вопрос "зачем?" кажется странным. AVC>Объекты желательно передавать по той же причине, по какой их вообще используют: в отличие от пассивных данных, объекты обладают поведением. AVC>О чем ты сам и сказал. (Поэтому и вопрос странный.) AVC>Действительно, пересечение объектом границ процесса может вызывать трудности.
Вот по этому объекты между процессами гоняют все меньше. Ибо проблем больше чем пользы.
AVC>Так, может быть, не всегда уместно все пилить на процессы?
А кто говорил что пилить нужно обязательно все?
Если задачу не нужно пилить на процессы то для общения внутри процесса можно использовать каналы без ограничений на передачу объектов по ссылке.
Но если у нас появляются слова клиент/сервер то дробление на процессы просто не избежно. И гонять объекты с поведением между клиентом и сервером гемор еще тот, а ели вдруг появляется передача по ссылке то вобще тушите свет.
Еще у дробления на процессы есть очень циничная возможность:
Дело в том что в управляемой ОС создание процесса можно сделать ооочень дешовым таким образом мы можем вернутся к концепции процесс на запрос но на этот раз причина не в надежности(она и так на высоте), а в оптимизации. В таких процессах которые только и делают что генерируют HTML по XML можно не использовать ГЦ вобще и запретить создовать другие потоки в нутри этого процесса. Те память будет выделятся только на стеке и в хипе который доживет до конца. Плюс в хипе не будет никакой синхронизации что тоже благотворно скажется на производительности. Плюс агрессивные оптимизации могут устранять не только не используемые методы но и поля объектов ибо всеь код который будет работать в этом процессе известен.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн