Ну да ... если бы я написал что мотоцикл это более продвинутый аналог велосипеда, то сразу бы все кинулись опровергать это и были бы конечно правы, ....потому что у мотоцикла колеса гораздо толще...
... Я вобще то про форматы Portable Executable не говорил...
Вопрос на засыпку: А что можно инкапсулировать в модуле Оберона что нельзя было бы инкапсулировать в C# классе? ... Аналог кода на начальную загрузку модуля тоже имеется — статический конструктор.
Re[13]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Silver_s, Вы писали:
S_>Вопрос на засыпку: А что можно инкапсулировать в модуле Оберона что нельзя было бы инкапсулировать в C# классе? ... Аналог кода на начальную загрузку модуля тоже имеется — статический конструктор.
Гм. Ты слишком узко понимаешь модуль в Обероне.
В качестве единицы инкапсуляции он несомненно проигрывает классу C#.
Но, в отличие от класса C#, модуль заодно выполняет функции единицы деплоймента и единицы исполнения. А класс C#, увы, ни одну из них не выполняет. Вот Java class, как тебе уже объяснили, является и тем и другим и третьим.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: Связанные с типом процедуры должны быть виртуальными
Sinclair -> "Re[13]: Связанные с типом процедуры должны быть виртуальными"
S> Гм. Ты слишком узко понимаешь модуль в Обероне. S> В качестве единицы инкапсуляции он несомненно проигрывает классу C#. S> Но, в отличие от класса C#, модуль заодно выполняет функции единицы S> деплоймента и единицы исполнения. А класс C#, увы, ни одну из них не S> выполняет. Вот Java class, как тебе уже объяснили, является и тем и S> другим и третьим.
И чем же C# от такой засады плохо? Не будет же внедряться 1 класс?
Yury Kopyl aka hrg | Гордость мешает доходам!
Posted via RSDN NNTP Server 1.9 gamma
Re[8]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Допустим, класс Java, равно как и класс C#, написанный в одном файле есть модуль. Компилируем его в исполнимый файл и загружаем этот исполнимый файл в память — исполняться. Вопрос на засыпку: Что именно будет исполнять данная единица исполнения?
Все то же самое что и модули в Обероне. Единственное отличие это в формате хранения на диске. То что в С# несколько классов можно в один откомпилированый файл объединить это несущественное отличие.
Если интересует аналог точки входа у Оберона при загрузке модуля, то в С# тоже есть статический конструктор.
Re[15]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, hrg, Вы писали: hrg>И чем же C# от такой засады плохо? Не будет же внедряться 1 класс?
Ничем не плохо. Просто утверждение, что у класса в C# больше возможностей, чем у модуля в Обероне, неверно. И обратное тоже неверно.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: Связанные с типом процедуры должны быть виртуальными
SJA>А как её запустить в Чёрном Коробке ? Если выделить M1 и выбрать в меню Execute ничего не выполняется?
Гы-гы-гы...Вы первый задали этот вопрос, хотя этот вариант наименьшей проги я тут давно толкал. Поздравляю Вас. Ответ на этот вопрос лично мне не известен. Наверное, как-то можно.
Re[16]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Sergey J. A., Вы писали:
SJA>>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>>Минимальная программа: СГ>>>
SJA>>А как её запустить в Чёрном Коробке ? Если выделить M1 и выбрать в меню Execute ничего не выполняется?
СГ>Гы-гы-гы...Вы первый задали этот вопрос, хотя этот вариант наименьшей проги я тут давно толкал. Поздравляю Вас. Ответ на этот вопрос лично мне не известен. Наверное, как-то можно.
Да великий язык — Оберон, на нём можно писать великие программы,
но вот запустить эти программы смогут только великие типа Вирта
Re[16]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Сергей Губанов, Вы писали:
SJA>>А как её запустить в Чёрном Коробке ? Если выделить M1 и выбрать в меню Execute ничего не выполняется?
СГ>Гы-гы-гы...Вы первый задали этот вопрос, хотя этот вариант наименьшей проги я тут давно толкал. Поздравляю Вас. Ответ на этот вопрос лично мне не известен. Наверное, как-то можно.
Вероятно какой-то вид стартап кода:
MODULE Hello;
IMPORT StdLog;
PROCEDURE Do*;
BEGIN
StdLog.String("Hello World"); StdLog.Ln
END Do;
BEGIN
StdLog.String("Startup"); StdLog.Ln;
END Hello.
Выводит
Startup
Hello World
Я — свихнувшееся сознание Джо.
Re[17]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Sergey J. A., Вы писали:
SJA>Вероятно какой-то вид стартап кода:
Я еще пытался слинковать этот модуль в отдельный экзешник, так чтобы при запуске экзешника выполнился этот код. Но импорт StdLog требует линковки большей части самого BalckBox, включая его Kernel. А если линкуется Kernel, то он и должен назначатся первым загружаемым модулем. Короче, ничего у меня не получилось.
Re[17]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Курилка, Вы писали:
К>Да великий язык — Оберон, на нём можно писать великие программы, К>но вот запустить эти программы смогут только великие типа Вирта
Я бы свалил это на происки Oberon Microsystems: DevDebug.Unload(); они написали, а обратную функцию "DevDebug.Load()" они написать "забыли"...
Здравствуйте, Кодт, Вы писали:
К>В Эйфеле — там каждая функция оснащается контрактом. Попытка вызвать percentage(x,y) с нулевым y будет пресечена на шаг раньше. К>Если, конечно, программист озаботился тем, чтобы этот контракт правильно написать — что тоже является допущением...
да, к вопросу об галочках
НЕ ПРИГЛАСИТЬ ЛИ НАМ ПОКЛОННИКОВ ЭЙФЕЛЯ????????????????????
очень хочестя узнать суть языка, но читать мануал влом
Здравствуйте, Трурль, Вы писали:
Т>То есть, мы чего-то там считали, поделили на 0, выдали сообщение об ошибке и продолжаем считать дальше как ни в чем не бывало? А смысл?
Современный софт в основном не работает в пакетном режиме. Он обрабатывает различные транзакции. Если одна обламается — то ничего страшного. Ее можно перезапустить. Ну, и другие продолжат работать без проблем. Вылет же всего процесса (а для ублюдочных кооперативных ОС и всей системы) — это неприемлемый вариант.
В качестве примера могу привести RSDN@Home с помощью которого пишу это сообщение. Мелкая ошибка в нем не приводит к схлопыванию всего приложения с потерей несохраненных данных. Вместо этого просто выдается сообщение и после нажатия "продолжить" приложение продолжает работать.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, mister-AK, Вы писали:
MA>да, к вопросу об галочках
MA>НЕ ПРИГЛАСИТЬ ЛИ НАМ ПОКЛОННИКОВ ЭЙФЕЛЯ???????????????????? MA>очень хочестя узнать суть языка, но читать мануал влом MA>
Будет, будет.
Скоро уже будет "Idit's Guide to 10 uncommon programming languages" by Ваш покорный слуга.
сам слушаю и вам рекомендую: 06 — We Use The Pain
FAQ — це мiй ай-кью!
Re[14]: Связанные с типом процедуры должны быть виртуальными
Здравствуйте, Sinclair, Вы писали: S>В качестве единицы инкапсуляции он несомненно проигрывает классу C#. S>Но, в отличие от класса C#, модуль заодно выполняет функции единицы деплоймента и единицы исполнения. А класс C#, увы, ни одну из них не выполняет. Вот Java class, как тебе уже объяснили, является и тем и другим и третьим.
А почему "увы"?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Современный софт в основном не работает в пакетном режиме. Он обрабатывает различные транзакции. Если одна обламается — то ничего страшного. Ее можно перезапустить. Ну, и другие продолжат работать без проблем. Вылет же всего процесса (а для ублюдочных кооперативных ОС и всей системы) — это неприемлемый вариант.
VD>>Современный софт в основном не работает в пакетном режиме. Он обрабатывает различные транзакции. Если одна обламается — то ничего страшного. Ее можно перезапустить. Ну, и другие продолжат работать без проблем. Вылет же всего процесса (а для ублюдочных кооперативных ОС и всей системы) — это неприемлемый вариант.
Т>В BlackBox тоже вылетит только одна комманда.
Какая еще команда? И вообще, напомню... незакрытый файл — это привет не только текущему приложению, но и всем пытающимся к нему обратиться.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>С точки зрения самого Windows, система BlackBox — это обычное приложение Windows со всеми вытекающими последствиями... Так что нечему тут удивляться. WH>А если это оберон-ос стоящая на АЭС?
А от АЭС не только оберон, но и всякие там джавы, шарпы и прочая бизнес-ориентированная байда с гц идет лесом.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, AndreyFedotov, Вы писали:
AF>> Кроме того, я просто не верю, что Оберон распознает нарушение границ массива на этапе компиляции.
СГ>В общем случае, естественно, на этапе компиляции — нет. Это runtime проверка.
и что, она будет работать быстрее, чем ее отсутствие? :)
AF>> Приведённый пример — ярчайшее доказательство несостоятельности оберона как практически используемого языка. :)
СГ>Значит если язык ОФИЦИАЛЬНО РАЗРЕШАЕТ buffer overflow, утечку памяти, повисшие указатели, неправильное приведение типов то он практически состоятельный, а если языке В ПРИНЦИПЕ НЕВОЗМОЖНЫ такие явления то этот язык практически не состоятельный, так да?
Во-первых, начнем с того, что стандарты языков не "разрешают официально" все то, что ты сказал.
Для всего этого в стандартах предусмотрены термины "неопределенное поведение", "неспецифицированное поведение" и т.п. Так что не надо приписывать языкам несуществующие свойства. Либо приведи цитату из Стандарта с явным позволением (т.е. с гарантиями правильной работы программы) писать в левую память, некорректно приводить типы и т.п.
Во-вторых, эти вещи вообще не связаны. Состоятельность языка — это то, насколько широко он используется, а на это оказывает влияние множество факторов, а не только наличие рантайм-проверок выхода за границы массива и прочие "ПРИНЦИПИАЛЬНОСТИ".
AF>> Если — соблюдая внешнюю форму интерфейсов, я тем не менее наделаю в них смысловых ошибок — то ни одна модульная система — хоть на обероне 99th edition — этого не заметит и правильно работать не станет. :) Или ты и это станешь оспаривать? :)
СГ>Если Вы испортите свой модуль, то изломается только то что от него зависит (а как же иначе?), но остальная система от этого не изломается. А вот если будет buffer overflow, то изломаться может все что угодно.
Это только в Обероне так, потому что в нем все моголитно. В такой архитектуре (типа DOS) действительно buffer overflow приведет к падению всей системы.
Да только в реальном мире (UNIX, WinNT) каждый процесс изолирован от других, так что buffer overflow, который он сделал — это только его личные проблемы и проблемы тех, кто с ним связан.