Здравствуйте, Borisman2, Вы писали:
B>Modula2(3)+Oberon vs Java+C++
Кстити, сравнивать оберон с Модулами несколько странно. Их скорее можно противопоставлять. Из оберона было выкинуто столько, что офигеть можно. Ну, а с тем что С++ не самый лучший язык для обучения тут похоже все согласны. Второй, третьий... но не первый.
B>А вообще-то тема очень провокационная. Как обычно, тов. Вирт воюет с призраками Кернигана и Ритчи.
Призраки уже исчезли в общем то. Их и в плюсах то мало осталось, а в Яве и подавно.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Мне не понятен смысл Вашего сообщения. .NETовские сборки это NETовские модули. И в чем проблема-то? Вам не нравится то что я использую термин "модуль" вместо термина "сборка"?
О как интересно. Еще недавно существование модульных языков кроме oberon-family отрицалось, теперь вдруг NETовские сборки признаются модулями. Это я вот к этому: СГ>Вы не можете купить "скомпилированный" код класса, а должны купить его исходник (иначе просто смысла нет).
Не надоело еще самому себе противоречить?
Здравствуйте, VladD2, Вы писали:
VD>Вот и хотелось бы поглядеть на то как можно жить без переменных в ИЯ.
В форте есть только стек. Точнее, два стека: стек операндов и стек процедур. Стек вызовов поддерживается неявно. Стек процедур всего лишь отражает зависимости, т.е. при определении процедуры мы можем ссылаться на все ранее определенные процедуры. Если определение корректно, то оно помещается на вершину стека процедур. Можно "откатить" процедуры, определенные после некоторой. В общем-то все.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Есть такой феномен в человеческой психике. Берут 10 человек, причем 9 из них подсадные. Показывают две палочки примерно одинаковой длины и спрашивают какая из них длиннее. 9-теро подсадных показывают на короткую палку и говорят что она длиннее. В большинстве случаев испытуемый тоже как и все показывает на короткую палку и тоже говорит что она длиннее. К чему я это привел. А тут на RSDN примерно такая же ситуация. Есть порядка десятка человек твердящих что оберонов нет. Вот и Вы. Кодт, тоже в это поверили. А Вы лучше гляньте ссыли и сами убедитесь "у дел он или не удел":
C++ ненавязчиво так записали в один разряд с давно устаревшим старичком Фортраном. Как здесь уже много раз говорилось — при всех недостатках С++, Оберону до него очень далеко. Мне вся эта возня очень сильно напоминает басню про мышей, которые собрались кошку хоронить.
Влияние Оберона на C# вызывает у меня очень большие сомнения. Идея модульности давно уже в воздухе витала, начиная с оверлеев в MSDOS, so-шек в Юниксе и заканчивая .NET
Что там еще у них может быть общего, я даже представить не могу.
СГ>Да Вы и сами можете покопаться в интернете по ключевым словам Modula, Oberon...
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Перечитайте, пожалуйста, исходную статью. Про "=" и "==" говорит не сам Вирт, а тот учитель слова которого Вирт цитировал, именно сын того учителя (а не сын Вирта) задавался этим вопросом.
если Вирт про это сказал в докладе — значит, считает это важным
ну а мое мнение — того учителя нельзя даже близко подпускать к обучению
Здравствуйте, Сергей Губанов, Вы писали:
К>> Чаво???
СГ>В чем состоит смысл Вашего сообщения?
А в том, что не надо ерунду говорить про специализированные "загрузчики" COM.
Есть ряд ситуаций, где "загрузка" вообще отсутствует, а COM живёт и побеждает.
Это статически прилинкованные inproc server'ы (в том числе под Windows). А под VxWorks вообще иначе быть не может — там весь код прописывается в boot image.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, VladD2, Вы писали:
VD>>Вот и хотелось бы поглядеть на то как можно жить без переменных в ИЯ. S>В форте есть только стек. Точнее, два стека: стек операндов и стек процедур. Стек вызовов поддерживается неявно. Стек процедур всего лишь отражает зависимости, т.е. при определении процедуры мы можем ссылаться на все ранее определенные процедуры. Если определение корректно, то оно помещается на вершину стека процедур. Можно "откатить" процедуры, определенные после некоторой. В общем-то все.
Если уж точно говорить, то в Форте 3 структуры: стек операндов, стек возвратов и словарь процедур (минимально реализован как односвязный список, хотя бывают варианты).
Обычно все вычисления ведутся на стеке операндов, благо что он адресуем — можно вытащить значение с любой глубины.
В некоторых случаях (при компиляции очередной процедуры, при разных извращениях — инфиксной нотации, например) приходится задействовать стек возвратов не по назначению; естественно, по окончании действа он должен быть приведён в исходное состояние.
Переменные в Форте тоже есть — в четырёх вариантах:
1) константа — фактически, это процедура, которая кидает на стек некое число
2) глобальная переменная — в списке процедур резервируется место под данные, а одноимённая процедура кидает на стек адрес или хэндл этого места. Разыменование на чтение/запись — задача библиотечных процедур, умеющих работать с хэндлами.
3) статические буферы — аналогично (2), только выделяется не ячейка, а целый блок. Причём это может быть как константная, так и доступная на чтение память.
4) динамическая память — в списке процедур либо за стеком (зависит от реализации) выделяется блок памяти под кучу, и есть инструменты, аналогичные malloc/free, для работы с ней.
Однако механика косвенной адресации реально может быть нужна только при компиляции, а для нужд пользователя может хватить и стека.
Здравствуйте, Дарней, Вы писали:
Д>мне особенно вот это понравилось: Д>
Oberon as a modern alternative to Fortran and C++
Д> Д>C++ ненавязчиво так записали в один разряд с давно устаревшим старичком Фортраном. Как здесь уже много раз говорилось — при всех недостатках С++, Оберону до него очень далеко. Мне вся эта возня очень сильно напоминает басню про мышей, которые собрались кошку хоронить.
Дальше — больше
efficient and powerful graphical front-end software;
M>efficient and powerful graphical front-end software;
особенно хорошо это выглядит в свете обсуждения БлэкБокс в соседней ветке
даже не знаю, плакать или смеяться
похоже, люди совершенно оторвались от действительности
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Mamut, Вы писали:
M>>
M>>efficient and powerful graphical front-end software;
Д>особенно хорошо это выглядит в свете обсуждения БлэкБокс в соседней ветке Д>даже не знаю, плакать или смеяться Д>похоже, люди совершенно оторвались от действительности
Здравствуйте, Кодт, Вы писали:
К>1) заводим в EXE служебный поток — интерпретатор команд
Ключевое слово ПОТОК. Активные объекты в Active Oberon, Zonnon, (и, кажется, в Ada) работают друг с другом примерно так как Вы описали. У каждого объекта есть очередь, в которую ставятся команды-сообщения от других активных объектов.
Ваше решение не принимается. Я продолжаю настаивать на необходимости процедурных переменных, ну разьве только теперь сделаю оговорку — в обычных, т.е. в не активных системах.
Здравствуйте, VladD2, Вы писали:
VD>Скорее тот казус когда Вы не видили разницу между ссылкой и указателем.
Это я-то не видел? Да я несколько раз приводил код: PROCEDURE Proc(VAR t: SomeValueType);
и говорил что t — внутри процедуры будет ссылкой. А указатель — это другое.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>То есть Вы со мной согласны поспорить? СГ>>Я утверждаю что в оберонах ссылки есть, а Вы утверждаете что их там нет?
VD>Спорить с человеком который ради смоубеждения назавет указатели ссылками я не очень хочу. Я уже видл как интерфейся и делегаты были по быстрому обозваны "процедурными типами" только чтобы не признавать свою не правоту.
Как я указатель могу назвать ссылкой?
TYPE
ValueType = RECORD
i: INTEGER;
END;
PointerType = POINTER TO ValueType;
PROCEDURE Proc1(VAR t: ValueType);
Переменные типа PointerType — указатели.
Внутри процедуры Proc1 переменная t — есть ссылка, она от того ссылка, а не значение, что перед ней написано слово VAR.
Здравствуйте, Дарней, Вы писали:
Д>Влияние Оберона на C# вызывает у меня очень большие сомнения. Идея модульности давно уже в воздухе витала, начиная с оверлеев в MSDOS, so-шек в Юниксе и заканчивая .NET Д>Что там еще у них может быть общего, я даже представить не могу.
Прикол!!!!!!!!!!!!!!! Идея модульности оказывается во-о-н где летала!!!!!!!!!!!!!!
А то что модульность УЖЕ БЫЛА РЕАЛИЗОВАНА в языке Modula Вы значит не в курсе?
Modula — середина 70-тых годов, Modula-2 появилась в 1979 году
Oberon — с 1985 года, Oberon-2 появился в 1992 году.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Перечитайте, пожалуйста, исходную статью. Про "=" и "==" говорит не сам Вирт, а тот учитель слова которого Вирт цитировал, именно сын того учителя (а не сын Вирта) задавался этим вопросом.
Д>если Вирт про это сказал в докладе — значит, считает это важным
Здравствуйте, VladD2, Вы писали:
VD>А разбиение на модули куда удобнее делать именно на уровене исполняемых файлов. Зачем мне грузить отдельно еденицу видимости кода???
Золотые слова. Сами додумались?
Модуль — это:
1) единица исполнения (исполнимый файл)
2) единица компиляции
3) единица инкапсуляции (заметьте НАСТОЯЩЕЙ! инкапсуляции)
4) самая крупная структурная единица программы
....
...можно много еще чего написать
.....
Кстати, размер модуля как правило не большой и не маленький, так средний. Гораздо больше размера класса, но гораздо меньше размера обычного приложения. То есть обычное приложение, как правило состоит из нескольких десятков модулей, а каждый модуль включает в себя несколько классов.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Дарней, Вы писали:
Д>>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>>Перечитайте, пожалуйста, исходную статью. Про "=" и "==" говорит не сам Вирт, а тот учитель слова которого Вирт цитировал, именно сын того учителя (а не сын Вирта) задавался этим вопросом.
Д>>если Вирт про это сказал в докладе — значит, считает это важным
СГ>Так это важно.