Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: WolfHound  
Дата: 02.02.06 15:05
Оценка: +2
Здравствуйте, Сергей Губанов, Вы писали:

СГ>В результате, программа Ткачёва на Component Pascal оказалась в 8 раз быстрее программы на С++ и работала правильно, в то время как программа на С++ работала нестабильно, падала, страдала утечками памяти и т.п. Обвинить конкурента в криворукости нельзя — он действительно классно знает С++. Просто алгоритмы очень сложные — надо интенсивно работать с гигабайтными динамическими структурами.

Код программы на С++ в студию. А мы уже решим на сколько хорошо автор знает программирование вобще и С++ в частности.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Cyberax Марс  
Дата: 02.02.06 15:07
Оценка:
eao197 wrote:
> Помнится, здесь была большая тема про сборку мусора в real-time
> системах. И приводилась ссылка на компанию, которая продавала
> программно-аппаратный комплекс, разработанный на основе Oberon.
Я спросил у знакомых real-time'щиков. Про Обероновые системы они ничего
не слышали вообще (как и про сам Оберон).

Из наиболее близкого — Inferno VM. Там использовался Паскаль-подобный
язык, но это далеко не Оберон. Компания появилась в конце 90-х и продает
встраиваемые системы, не очень успешно.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.02.06 15:07
Оценка:
Здравствуйте, McSeem2, Вы писали:

E>>>Дело не в скорости самой программы, а в том, насколько удобнее будет программитам-математикам писать программу на этих языках. Делать расчеты на Паскале было гораздо проще, чем на C++ (хотя в некоторых случаях C++ и рулил, сам сталкивался).


MS>Пробовали ли вы закодировать простейшее выражение с комплексными числами на голом C?


А работу с разреженными матрицами на Паскале?

Как раз из-за таких вещей я предпочитал C++.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Cyberax Марс  
Дата: 02.02.06 15:11
Оценка:
McSeem2 wrote:
> E>>Дело не в скорости самой программы, а в том, насколько удобнее будет
> программитам-математикам писать программу на этих языках. Делать расчеты
> на Паскале было гораздо проще, чем на C++ (хотя в некоторых случаях C++
> и рулил, сам сталкивался).
> Пробовали ли вы закодировать простейшее выражение с комплексными числами
> на голом C?
No problem:
complex double square_d(complex double a)
{
    return (a * a);
}

(это С99)

> Я не знаю, что такое Оберон, но однозначно могу сказать, что на

> комплексных числах Фортран кроет С++ по скорости. И иначе быть не может,
> поскольку комплексные числа — это встроенный тип в Фортране и
> оптимизатор все про них знает. А в C++ это некий класс, просто класс.
Ну не совсем так. Intel C++, например, знает про комплексные числа из
стандартной библиотеки и использует для них специальные оптимизации.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[12]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 02.02.06 15:13
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>Для модулей собираются добавить GC. То есть неиспользуемые сборки будут

C>просто прибиваться сборщиком мусора. В отличие от явной выгрузки, это
C>вполне безопасно (а в Java уже лет 5 код классов собирается GC).

Как интересно GC должен решить задачу о возможности выгрузки вот такого модуля:
MODULE M;

  VAR a*: INTEGER;

END M.

или на C#:
public sealed class M
{
  private M ()
  {
  }

  public static int a;
}

Допустим количество ссылок на модуль M сейчас равно нулю. Значит его уже можно выгружать, да?
А вот и нельзя!!!
Вдруг через 3 часа в систему будет загружен некий другой модуль, который захочет считать значение переменной M.a???? И что он прочтёт??? Если модуль M будет выгружен, а потом опять загружен, то M.a будет равно 0.

Вывод.
Модули нельзя выгружать "автоматически". Их можно выгружать только по явной просьбе.
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: WolfHound  
Дата: 02.02.06 15:14
Оценка:
Здравствуйте, eao197, Вы писали:

E>Моменты наступления сборки мусора априори предсказуемы или об этом нужно вручную заботится?

А в Обероне уже нет сборщика мусора?
E>Помнится, здесь была большая тема про сборку мусора в real-time системах. И приводилась ссылка на компанию, которая продавала программно-аппаратный комплекс, разработанный на основе Oberon.
И в чем проблема посадить C# на сборщик мусора работающий в реальном времени?

E>Например, на QNX, VxWorks, LynxOS, OS-9, или любой другой из этих.

А оберон на них есть?

E>Глупость -- может быть. Но большое количество критически важного софта пишется именно на императивных языках. На том же C, в частности.

Ты думаешь это хорошо?

E>Оговорюсь, не по скорости, а по удобству для программистов-математиков. А где -- например, при расчете надежности ленточных фундаментов методом конечных элементов, при расчете распределения температуры на лопастях турбин методом граничных элементов, при расчетах надежности конструкций методом конечных разностей, при реализации расчетов оптимизации чего-нибудь различными вариантами методов оптимизации (того же симплекс метода, к примеру). Поскольку я специализировался на кафедре Вычислительной Математики и Программирования, могу утверждать, что математики предпочитали пользоваться Паскалем, а не C++.

Исключительно по тому что они привыкли к Паслаю и ничего не знают о С++. Да и опять же математикам должны быть ближе функциональные языки.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Programmierer AG  
Дата: 02.02.06 15:15
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Нет конечно. Точно так же как нельзя вернуть адрес любой локальной сущности.

Это не настолько очевидно. В современных языках это можно. В том же Шарпе, например. Только не адрес, а объект — функция + замыкание.
СГ>Вложенная процедура живет в контексте процедуры её вызвавшей и имеет доступ к её локальным переменным. Поэтому снаружи её вызывать нельзя. Раз нельзя, то и указатель на неё получить нельзя.
Так а в чем ее смысл? Главное в анонимных методах, лямбда функциях и всех их родственниках — это то, что они хранят замыкание — контекст, в котором их вызвали. В Шарпе, насколько я видел, анонимные методы применяют для создания однострочных коллбэков. А в Обероне так можно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: Статья Н.Вирта: взгляд из Зазеркалья
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.02.06 15:16
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Я спросил у знакомых real-time'щиков. Про Обероновые системы они ничего

C>не слышали вообще (как и про сам Оберон).

Да этих real-time систем как грязи.
А вот о чем я говорил: http://www.rsdn.ru/Forum/Message.aspx?mid=1268451&amp;only=1
Автор: Трурль
Дата: 12.07.05


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Cyberax Марс  
Дата: 02.02.06 15:19
Оценка: :)
Сергей Губанов wrote:
> WH>Это шутка да? Я не могу себе представить ситуации где бы Оберон по
> сравнению с С++ рулил в расчетах. Может ты мне продемонстрируешь это?
> Легко.
> Ткачёв думаете просто так что ли перешёл на Оберон/Компонентный-Паскаль?
Может из-за того, что не смог освоить альтернативы?

> Фишка в том, что алгоритм расчёта может быть чрезвычайно сложен.

> Правильно реализовать чрезвычайно сложный алгоритм на языке C++ гораздо
> сложнее чем на Oberon/Component Pascal, которые имеют сборщик мусора.
1. Сборщик мусора (причем не хуже Обероновского) к С++ прикручивается за
5 минут. Не верите? Давайте поспорим.
2. Перегрузка операторов в С++ позволяет записывать многие алгоритмы
_гораздо_ красивее Оберона.

> Он в BlackBox на Component Pascal реализовал алгоритм за 3 месяца.

> Его конкурент решал ту же самую задачу на С++ 3 года.
"Один журнал погружаем в серную кислоту, а TV Park в дистиллированую
воду. Видите? С TV Park'ом ничего не случилось!" (с) реклама.

> Обвинить конкурента в криворукости нельзя — он действительно классно

> знает С++.
Да-да. Мы уже, кажется, смеялись над примерами его знаний.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[8]: Статья Н.Вирта: взгляд из Зазеркалья
От: Кодт Россия  
Дата: 02.02.06 15:19
Оценка: 22 (3)
Здравствуйте, eao197, Вы писали:

Q>>Такое ощущение, что вы не в курсе, что представляет собой язык со встроенной поддержкой многозадачности. Это тоже самое, что язык с GC на фоне языка с ручным управлением памятью. Когда такая поддержка есть на уровне языка, то многие вещи становятся значительно проще, многие проблемы исчезают, а многие дополнительные возможности появляются.


E>Очень может быть. А на какие языки со встроенной многозадачностью, кроме Erlang, еще можно посмотреть?


Ада, Оккам, Симула.
Перекуём баги на фичи!
Re[9]: Статья Н.Вирта: взгляд из Зазеркалья
От: Кодт Россия  
Дата: 02.02.06 15:21
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Это мне напоминает мою первую книжку по Турбо Паскалю. Десять глав, по-моему было. Из них девяь — все нормально. В десятой объяснялись указатели... Указатели обозначались знаком "вертикальная стрелочка вверх" То есть не "^", а натурально


Тебя, наверное, нагло обманули. Это была книжка по просто Паскалю.
Перекуём баги на фичи!
Re[14]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 02.02.06 15:24
Оценка: -2 :))
Здравствуйте, WolfHound, Вы писали:

WH>Код программы на С++ в студию.


Недождётесь...
Re[14]: Статья Н.Вирта: взгляд из Зазеркалья
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.02.06 15:27
Оценка: -1
Здравствуйте, WolfHound, Вы писали:

E>>Моменты наступления сборки мусора априори предсказуемы или об этом нужно вручную заботится?

WH>А в Обероне уже нет сборщика мусора?

Дык, вроде, эту проблему уже решили: http://www.rsdn.ru/Forum/Message.aspx?mid=1268451&amp;only=1
Автор: Трурль
Дата: 12.07.05


WH>И в чем проблема посадить C# на сборщик мусора работающий в реальном времени?


В том, что этого еще нет. Или уже есть?

WH>А оберон на них есть?


Там, я думаю, нет. Уто у Сергея Губанова нужно спрашивать, где есть Оберон.
А вот где есть C# и так понятно. Я не в обиду C#, просто думаю, что встраиваемые системы вряд ли когда-нибудь на C# будут делать. Хотя бы потому, что там уже, кроме C и C++, еще и J2ME есть.

E>>Глупость -- может быть. Но большое количество критически важного софта пишется именно на императивных языках. На том же C, в частности.

WH>Ты думаешь это хорошо?

Не мне решать, хорошо это или нет. Так есть. И с этим нужно считаться.

WH>Да и опять же математикам должны быть ближе функциональные языки.


Математикам, имхо, должна быть ближе математика. Как я смог заметить, нельзя от них требовать досканального знания особенностей языка. И, поэтому, чем более тривиальный язык, тем лучше. Поэтому C++ со своими заморочками многим не подходил.
А вот устроят ли математиков функциональные языки по скорости работы кода -- это большой вопрос. Особенно в числодробительных областях.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Статья Н.Вирта: взгляд из Зазеркалья
От: WolfHound  
Дата: 02.02.06 15:32
Оценка: +6 -1
Здравствуйте, Сергей Губанов, Вы писали:

WH>>Код программы на С++ в студию.

СГ>Недождётесь...
Тогда я делаю единственно возможной в этой ситуации вывод: Все это не болие чем маркетинговый бред.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: Статья Н.Вирта: взгляд из Зазеркалья
От: WolfHound  
Дата: 02.02.06 15:34
Оценка:
Здравствуйте, eao197, Вы писали:

E>Математикам, имхо, должна быть ближе математика. Как я смог заметить, нельзя от них требовать досканального знания особенностей языка. И, поэтому, чем более тривиальный язык, тем лучше. Поэтому C++ со своими заморочками многим не подходил.

E>А вот устроят ли математиков функциональные языки по скорости работы кода -- это большой вопрос. Особенно в числодробительных областях.
ML и его вариации очень хорошо поддаются оптимизации.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Cyberax Марс  
Дата: 02.02.06 15:38
Оценка:
Сергей Губанов wrote:
> _>Кстати в обероне можно вернуть указатель на локальную функцию?
> Нет конечно. Точно так же как нельзя вернуть адрес любой локальной сущности.
> Вложенная процедура живет в контексте процедуры её вызвавшей и имеет
> доступ к её локальным переменным. Поэтому снаружи её вызывать нельзя.
> Раз нельзя, то и указатель на неё получить нельзя.
А почему бы и нет? В Lisp'е и JavaScript есть continuation'ы — то есть
можно передать снимок состояния как обычное значение.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[16]: Статья Н.Вирта: взгляд из Зазеркалья
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 02.02.06 15:38
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Все это не болие чем маркетинговый бред.


То есть кто-то пытается продать BlackBox?

Вообще-то он бесплатный и с открытым исходным текстом...
Re[14]: Статья Н.Вирта: взгляд из Зазеркалья
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.02.06 15:39
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Код программы на С++ в студию. А мы уже решим на сколько хорошо автор знает программирование вобще и С++ в частности.


+1

Полностью поддерживаю. Имхо, вообще сравнения что кто-на на языке N сделал что-то лучше чем тот-то на языке K не корректны. Гораздо интереснее, когда один человек делает реализацию одной задачи на разных языках и говорит о своих впечатления. Но и здесь не так все просто. Во-первых, потому, что вторая реализаця, обычно, проще, т.к. идет по "проторенной" дорожке. А, во-вторых, имхо, это крайне редко бывает, чтобы одно и то же делали на разных языках (особенно для действительно сложных задач).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Статья Н.Вирта: взгляд из Зазеркалья
От: Cyberax Марс  
Дата: 02.02.06 15:40
Оценка:
eao197 wrote:
> C>А у вас математики что-то знают, кроме Паскаля? Я удивлен.
> Знали. 12-13 лет назад.
Так бы сразу и сказали. Тогда действительно особого выбора не было, а
Turbo Pascal был вполне адекватен.

> Что сейчас -- даже не представляю. Вероятно, большинству пришлось от

> Паскаля отказаться.
Знаю нескольких исследователей, двое пишут на Mathematica, один на С++ с
использованием VTK.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[13]: Статья Н.Вирта: взгляд из Зазеркалья
От: Cyberax Марс  
Дата: 02.02.06 15:43
Оценка: +1
Сергей Губанов wrote:
> C>Для модулей собираются добавить GC. То есть неиспользуемые сборки будут
> C>просто прибиваться сборщиком мусора. В отличие от явной выгрузки, это
> C>вполне безопасно (а в Java уже лет 5 код классов собирается GC).
> Как интересно GC должен решить задачу о возможности выгрузки вот такого
> модуля
Очень просто. Строим граф зависимостей кода, как только класс M попадает
в изолированый подграф — выгружаем его.

Собственно, так и работает обычный GC.

> Допустим количество ссылок на модуль M сейчас равно нулю. Значит его уже

> можно выгружать, да?
Да.

> Вдруг через 3 часа в систему будет загружен некий другой модуль, который

> захочет считать значение переменной M.a???? И что он прочтёт??? Если
> модуль M будет выгружен, а потом опять загружен, то M.a будет равно 0.
Ну и держите ссылку на этот модуль явно. Какие проблемы?

> Модули нельзя выгружать "автоматически". Их можно выгружать только по

> явной просьбе.
По явной просьбе их тоже выгружать нельзя.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.