Здравствуйте, AVC, Вы писали:
AVC>Проблемами с памятью дело не ограничивалось.
ты указал только эти проблемы, вот я и предположил, что они — главные. Было бы странно указать только второстепенные проблемы и пропустить главные, правда ведь?
AVC>А что касается нескольких недель работы, то, увы, их как раз и не было. AVC>Проект доводился до ума в свободное время. То, что иногда называется "халтурой".
а на то, чтобы переписать полностью, были?
AVC>Проект велся на C++ .NET (не знаю зачем, для "современности" что-ли?),
вероятно, чтобы использовать библиотеку классов .NET и по возможности избавиться от необходимости изобретать велосипеды
AVC>мне надо было ехать в деревню без всяких признаков цивилизации, а мой (очень) старенький ноутбук не вмещал это чудо (в отличие от BlackBox или GNU C++). AVC>Бывает, что и такие мелочи имеют значение!
подозреваю, что это и было второй из основных причин
AVC>Кроме того, я не большой любитель сидеть в отладчике. Сам я справляюсь с собственными багами без отладчика. (Вообще, отладка у меня съедает сравнительно немного времени). Один из любимых приемов: если кусок кода "глючит", и не сразу ясно, почему — переписать его. Иногда замена поиска ошибки переписыванием (небольшого) куска кода экономит значительное время.
а если глючит не он, а другой кусок кода, от которого он зависит?
AVC>Речь идет об имитации связки процессор + доп.устройства (для мультимедиа). AVC>Цель: "опережающая" разработка программ для нового процессора. AVC>Уровень детализации, скажем так, прогрессирующий. AVC>Первую версию я уже сделал (после ответа eao197), дальше будем добавлять новые факторы по мере необходимости.
Откровенно говоря все сказанное тобой скорее придирки. Ты лучше скажи, что ты теперь думаешь об поддержке дотнетом КОП и удобстве программирования на C# который куда как более толст по сравнению с Обероном (т.е. не удовлетвояет идее минимализма).
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Откровенно говоря все сказанное тобой скорее придирки.
Не всё. И не придирки
VD>Ты лучше скажи, что ты теперь думаешь об поддержке дотнетом КОП
Я уже написал что я думаю. Могу еще добавить такую несуразицу обнаруженную в .Net: Модуль в котором определяется расширение типа, предком которого является тип из другого модуля, зачем-то обязан импортировать не только модуль с непосредственным предком, но и все другие модули с более далёкими предками — какая-то ерунда В оберонах достаточно импортировать только модуль с непосредственным предком, а что там глубже по иерархии — клиентского модуля не касается.
VD>и удобстве программирования на C# который куда как более толст по сравнению с Обероном (т.е. не удовлетвояет идее минимализма).
Я уже написал что я думаю. Сформулирую это более строго: Язык C# не предназначен для написания модульных систем потому, что в нём нет синтаксически обозначенного понятия модуля. А именно, глядя на текст: Namespace1.Namespace2.Namespace3.Ident1.Ident2 — не ясно в каком модуле определена данная сущность. Это не придирка. Это серьезная вещь. Реально, у меня в solution полсотни модулей (projects), как глядя на текст Namespace1.Namespace2.Namespace3.Ident1.Ident2 понять в каком модуле эта сущность определена? Ведь namespace не связана с именем модуля. А если к этому еще добавить using Namespace1.Namespace2.Namespace3 и разрешение на неквалифицированный доступ к переменным, то ещё хуже станет..., т.е. в C# на синтаксическом уровне не поддерживает модульное программирование.
Здравствуйте, Пацак, Вы писали:
VD>>О... Я тут читал статью о том, как к Оберону прикрутили эксцешоны.
П>Прочитал сам — дай прочитать другому! В смысле урл.
У меня есть только имя файла, но взял я его по ссылке с этого форума. Так что вот так p_ex.pdf должно помочь.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
AVC>1) До последнего времени Оберон был практически неизвестен в нашей стране. AVC>Лично я об Обероне знаю всего три года.
Во как? А я прочел об Обероне в Тере году так в 1998-ом...
AVC>2) Отсюда прямо вытекает, что инструментарий для работы на Обероне (компиляторы и т.д.) также AVC> был недоступен.
...и стразу же скачал из Интернета то что называлось его компилятором и средой (по ссылке из статьи).
AVC>Думаю, тебе понятно, что это означало в моих условиях. У меня семья 5 человек, а "добытчик" я один.
И купить это дело было совершенно невозможно? Видимо много заломили.
AVC>В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры. Теперь уже на основной работе, и уже не "вспомогательную" DLL.
А какое отношение Компонентный Паскаль имеет к Оберону?
AVC>(Поэтому, ИМХО, зря ты раскритиковал Сергея Губанова за то, что он мало пишет на Обероне. У него те же обстоятельства, что и у меня.
Тут вот что странно. Дотнет появился позже Оберона. Но тот же Губанов пишет коммерческий софт именно на C#, а не на Обероне. При этом с радостью обсуждая "немодульность" C#.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVC>>1) До последнего времени Оберон был практически неизвестен в нашей стране. AVC>>Лично я об Обероне знаю всего три года.
VD>Во как? А я прочел об Обероне в Тере году так в 1998-ом...
Я узнал об Обероне сразу, как в боях добыл свободный доступ к Интернету.
Увы, случилось это только в 2002 году.
Да, судьба моя — не сахар.
Если хочешь — поплачем вместе.
AVC>>Думаю, тебе понятно, что это означало в моих условиях. У меня семья 5 человек, а "добытчик" я один.
VD>И купить это дело было совершенно невозможно? Видимо много заломили.
Это да. Напугала не столько сумма, сколько швейцарские франки (кажется).
Хотя за некоммерческое использование ничего не брали...
Можно было и словчить, конечно.
Но даже программируя на Си++, я старался быть (в тесных рамках возможного ) честным: почти декаду юзал купленный Zortech C++ (как сейчас помню — за $75 , Symantec тогда цены сбросила), а сейчас пользую GNU C++.
А тут — Оберон... Это святое!
AVC>>В настоящее время пишу на Компонентном Паскале программу, моделирующую поведение аппаратуры. Теперь уже на основной работе, и уже не "вспомогательную" DLL.
VD>А какое отношение Компонентный Паскаль имеет к Оберону?
Такое, что это — Оберон.
Точнее говоря, надмножество Оберона-2, созданное фирмой Oberon Microsystems Inc. (среди ее основателй — Шиперски).
AVC>>(Поэтому, ИМХО, зря ты раскритиковал Сергея Губанова за то, что он мало пишет на Обероне. У него те же обстоятельства, что и у меня.
VD>Тут вот что странно. Дотнет появился позже Оберона. Но тот же Губанов пишет коммерческий софт именно на C#, а не на Обероне. При этом с радостью обсуждая "немодульность" C#.
Это вопрос к Губанову.
(Он говорит, что так велит начальство. Бюрократический садизм, вот как я это называю. )
BTW, а что, на самом деле C# — модульный?
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, Дарней, Вы писали:
AVC>>Проблемами с памятью дело не ограничивалось.
Д>ты указал только эти проблемы, вот я и предположил, что они — главные. Было бы странно указать только второстепенные проблемы и пропустить главные, правда ведь?
Главное, что проблемой в этом коде было все.
Если бы только память...
Меня как раз прямо перед этим Cyberax просветил насчет консервативных сборщиков мусора, я уже хотел попробовать их на предмет обнаружения утечек памяти. (Есть, как будто, у них такая функция.)
Да выяснилось, что там все хуже, чем думалось.
А пока я в деревне тихо страдал, "мои" студенты да на большом-то компе... Эх, молодость, молодость!
Вот за это я их и зауважал. За кипучую энергию.
Ну, а для COM/OLE я использовал Компонентный Паскаль (КП).
Даже если бы я не был фанатом Оберона, грех был бы мне его не использовать для этой цели. Ведь у меня под рукой исходные тексты соответствующих блекбоксовских подсистем были.
Так что я большую часть этой работы "копипастом" сделал.
Ну, еще подредактировал немного.
AVC>>А что касается нескольких недель работы, то, увы, их как раз и не было. AVC>>Проект доводился до ума в свободное время. То, что иногда называется "халтурой".
Д>а на то, чтобы переписать полностью, были?
Я, собственно, вначале только на себя расчитывал.
Не думал, что парни так подналягут.
А мне самому точно было бы проще и быстрее — переписать.
Что дожна делать программа — было понятно.
Объем кода — средний.
А разгребать завалы в том, что казалось прежним разработчикам Си-плюс-плюсом... Бр-р-р!
AVC>>Проект велся на C++ .NET (не знаю зачем, для "современности" что-ли?),
Д>вероятно, чтобы использовать библиотеку классов .NET и по возможности избавиться от необходимости изобретать велосипеды
Мне показалось, что цель использования C++ .NET была в том, чтобы "прикрутить" XML с наименьшими усилиями.
А еще мне показалось, что без XML (в данном случае) вполне можно было обойтись.
AVC>>мне надо было ехать в деревню без всяких признаков цивилизации, а мой (очень) старенький ноутбук не вмещал это чудо (в отличие от BlackBox или GNU C++). AVC>>Бывает, что и такие мелочи имеют значение!
Д>подозреваю, что это и было второй из основных причин
Пожалуй, что и так.
Тюкал бы я себе в деревне по клавишам пару часов в день — глядишь, и проект почти уже натюкал.
А так — не тюкал, а только нервничал — когда же, наконец, тюкать-то буду, сроки ведь!
AVC>>Кроме того, я не большой любитель сидеть в отладчике. Сам я справляюсь с собственными багами без отладчика. (Вообще, отладка у меня съедает сравнительно немного времени). Один из любимых приемов: если кусок кода "глючит", и не сразу ясно, почему — переписать его. Иногда замена поиска ошибки переписыванием (небольшого) куска кода экономит значительное время.
Д>а если глючит не он, а другой кусок кода, от которого он зависит?
С ним — так же.
Причем лучше — до того.
Д>ну что ж, это уже что-то заслуживающее упоминания
Спасибо. Да.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, VladD2, Вы писали:
VD>>>О... Я тут читал статью о том, как к Оберону прикрутили эксцешоны.
П>>Прочитал сам — дай прочитать другому! В смысле урл.
VD>У меня есть только имя файла, но взял я его по ссылке с этого форума. Так что вот так p_ex.pdf должно помочь.
Это старая статья.
Справочника молодых сурков под рукой нет, но думаю, не позднее 1997 года.
Один из авторов (Мессенбек) — создатель языка Оберон-2 и компилятора компиляторов CoCo.
На эту статью на RSDN уже ссылались (в т.ч. и мы с Сергеем ).
Главное — подход прост до безобразия и не требует синтаксических расширений.
Ну, и знаменитого оверхеда нет, если исключение так и не было возбуждено.
Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.
Здравствуйте, AVC, Вы писали:
AVC>Меня как раз прямо перед этим Cyberax просветил насчет консервативных сборщиков мусора, я уже хотел попробовать их на предмет обнаружения утечек памяти. (Есть, как будто, у них такая функция.)
утечки памяти в GC? найти, где коллекционируются ссылки — совсем не сложная задача, даже для студентов
AVC>Даже если бы я не был фанатом Оберона, грех был бы мне его не использовать для этой цели. Ведь у меня под рукой исходные тексты соответствующих блекбоксовских подсистем были. AVC>Так что я большую часть этой работы "копипастом" сделал. AVC>Ну, еще подредактировал немного.
не знаю, что именно там надо было делать. так что выводы тоже сделать не могу
AVC>А разгребать завалы в том, что казалось прежним разработчикам Си-плюс-плюсом... Бр-р-р!
все программисты так говорят. Иногда это даже оказывается правдой.
AVC>А еще мне показалось, что без XML (в данном случае) вполне можно было обойтись.
я думаю, без Оберона в данном случае тоже можно было прекрасно обойтись
AVC>С ним — так же. AVC>Причем лучше — до того.
система — это больше, чем сумма ее компонент. И ошибки системы — это больше, чем сумма ошибок компонент системы.
Но это я так, о птичках
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Я уже написал что я думаю. Могу еще добавить такую несуразицу обнаруженную в .Net: Модуль в котором определяется расширение типа, предком которого является тип из другого модуля, зачем-то обязан импортировать не только модуль с непосредственным предком, но и все другие модули с более далёкими предками — какая-то ерунда В оберонах достаточно импортировать только модуль с непосредственным предком, а что там глубже по иерархии — клиентского модуля не касается.
А, это да. Особенно хорошо это помогает выяснить список зависимостей модуля. Вот, к примеру, скачиваем мы сборку из сети. Как только мы ее скачали, мы можем получить полный список зависимостей, проверить наличие их на локальной машине и закачать все остальные. Для оберона придется анализировать каждый закачанный модуль, и предсказать объем даунлоада невозможно, как и определить, нет ли неразрешимых ссылок. СГ>Я уже написал что я думаю. Сформулирую это более строго: Язык C# не предназначен для написания модульных систем потому, что в нём нет синтаксически обозначенного понятия модуля. А именно, глядя на текст: Namespace1.Namespace2.Namespace3.Ident1.Ident2 — не ясно в каком модуле определена данная сущность. Это не придирка. Это серьезная вещь. Реально, у меня в solution полсотни модулей (projects), как глядя на текст Namespace1.Namespace2.Namespace3.Ident1.Ident2 понять в каком модуле эта сущность определена? Ведь namespace не связана с именем модуля. А если к этому еще добавить using Namespace1.Namespace2.Namespace3 и разрешение на неквалифицированный доступ к переменным, то ещё хуже станет..., т.е. в C# на синтаксическом уровне не поддерживает модульное программирование.
Требования соответствия неймспейсов модулям нету даже в java, хотя там принята жесткая привязка именования классов к их расположению. Вместо того, чтобы поносить несравненно более распространенный по сравнению с обероном дотнет лучше подумай, почему в нем приняты такие решения, а не другие.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали:
AVC>>BTW, а что, на самом деле C# — модульный?
VD>Кстати, да.
Модульной является платформа .Net, а язык C# — не модульный (нет синтаксической конструкции модуля), этот язык заточен для программирования "в малом".
Спрашивается, как тогда на немодульном языке C# удаётся писать модули для модульной системы .Net?
Ответ — "А всякие тулзовины есть: project manager + solution explorer."
Здравствуйте, MShura, Вы писали:
MS>PortOS is an instructional operating system for the Post-PC environment, designed for use in an undergraduate operating systems course. It provides the necessary infrastructure for developing operating systems on desktops and handheld devices. It runs under Windows, including NT/2K/ME/98/XP as well as CE/PocketPC/HandheldPC.
MS>Надеюсь Вы понимаете, что Windows/Linux/Mac не являются системами реального времени.
Выделенная версия Windows — таки является
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Модульной является платформа .Net, а язык C# — не модульный (нет синтаксической конструкции модуля), этот язык заточен для программирования "в малом".
СГ>Спрашивается, как тогда на немодульном языке C# удаётся писать модули для модульной системы .Net? СГ>Ответ — "А всякие тулзовины есть: project manager + solution explorer."
Извиняюсь, что влезаю в твой разговор с самим собой, но хочу подкинуть одну идею. В качестве тулзовины можно изспользовать "тулз" под названием csc.exe. Изучи его командную строку. Там есть такие забавне ключики:
/reference:<alias>=<file> Reference metadata from the specified assembly file using
the given alias (Short form: /r)
/reference:<file list> Reference metadata from the specified assembly files (Short
form: /r)
/addmodule:<file list> Link the specified modules into this assembly
Покури по их поводу...
Еще подумай над применением таких методов как Assembly.LoadFrom() и ему подобных.
... << RSDN@Home 1.2.0 alpha rev. 620>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Sinclair, Вы писали:
S>Требования соответствия неймспейсов модулям нету даже в java, хотя там принята жесткая привязка именования классов к их расположению. Вместо того, чтобы поносить несравненно более распространенный по сравнению с обероном дотнет лучше подумай, почему в нем приняты такие решения, а не другие.
Думаю, по той же причине, по которой требуется присутствие break в case.
Здравствуйте, Sinclair, Вы писали:
S> Вместо того, чтобы поносить несравненно более распространенный по сравнению с обероном дотнет лучше подумай, почему в нем приняты такие решения, а не другие.
Да я злого умысла в этом не усматриваю, объясняю проще — глупостью.
SilverCloud wrote:
> MS>Надеюсь Вы понимаете, что Windows/Linux/Mac не являются системами > реального времени. > Выделенная версия Windows — таки является
WinCE — это ОС "мягкого" (soft) realtime'а. То есть ситуации, когда
гарантия на точное время отклика не дается.