Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 5206 25-09-2007 08:33 | |
Ответ на »сообщение 5190« (Стэн)
___________________________
>>>И вот такой Вам вопрос: А может Оберон гарантировать, что из сети поступят именно 100 байт, а не 80 (хакерская атака на реализацию протокола)? Что-то мне подсказывает, что нет... Все равно программист должен следить за корректностью обращения с данными...
Честно говоря, я не понял, где здесь таятся претензии к Оберону.
Ни один язык не может гарантировать, что из сети поступит "именно 100 байт".
Да и о подобных хакерских атаках я что-то не слыхал. (Вот обратная ситуация, с переполнением буфера, напротив, хорошо известна.)
Т.е. я просто не понял этого Вашего замечания.
№ 5205 25-09-2007 07:32 | |
Ответ на »сообщение 5201« (Стэн)
___________________________
>>>И что это мы все про линейные массивы... Давайте напишем на Обероне цикл обхода хотя бы двоичного дерева, да так, чтобы было видно, по каким элементам идет итерация...
А какие проблемы с двоичным деревом?
Что для него нет встроенной разновидности цикла?
Это действительно проблема?
Язык может обогащаться не только (и не столько) за счет грамматических конструкций, а как раз за счет тех самых "недостаточных" (по Зуеву) процедур и модулей.
Просто в модуль, определяющий АТД двоичное дерево (скажем, Trees), добавим процедуру обхода дерева (например, Traverse; можно и foreach, конечно).
Затем будем ей пользоваться:
VAR t: Trees.T;
BEGIN
...
t.Traverse(p);
где p - процедура обработки отдельного узла дерева.
Чем это плохо?
Можно также условиться, чтобы этот "алгоритм" был доступен и для красно-черных, и любых других деревьев, и даже для хэш-таблиц.
№ 5204 25-09-2007 06:01 | |
Ответ на »сообщение 5193« (Beginner)
___________________________
Читаю описание Оберона.
ident = letter {letter | digit}.
...
CharConstant = """ character """ | digit {hexDigit} "X".
Внимание, вопрос!
FAX - это будет переменная или константа типа char ?
Ответ очевиден: это идентификатор. :)
Что прямо следует из приведенных определений.
Чтобы получить символьную константу, надо впереди добавить цифру; например, нуль: 0FAX.
№ 5203 25-09-2007 05:26 | |
Ответ на »сообщение 5200« (Илья Ермаков)
___________________________
>>> но: для языка системного программирования (и особенно реал-тайм применений) важно, чтобы эти два случая явно различались между собой.
Так и о чем спор? Ни С# с его foreach ни C++ не позиционируются как языки системного программирования...
№ 5202 25-09-2007 05:23 | |
Ответ на »сообщение 5199« (Trurl)
___________________________
>>> Как это сделать с помощью foreach (из C#)?
Вообще-то foreach возвращает либо ссылку на объект (если тип ссылочный) либо копию объекта, если тип не ссылочный и все это дело модифицировать ясно бесполезно... foreach не для этого, какой с него спрос?!
Однако можно поступить так:
A = System.Array.ConvertAll(A, new System.Converter<int, int>(delegate(int x) ));
№ 5201 25-09-2007 04:57 | |
Ответ на »сообщение 5198« (Антон Григорьев)
___________________________
>>> Да, лучше. Потому что, во-первых, из вида цикла сразу очевидно, по каким элементам идёт итерация, а во-вторых, есть (в отличие от С/С++) способ узнать размер массива в любой ситуации, а не только если программист не забыл подумать об этом. Вопрочем, всё это вам уже говорили.
Что, да? Вы почему-то не полностью читаете то, что я пишу?! С/С++ сюда приплел не я и мне совсем не понятно почему вы снова и снова вспоминаете их...
И что это мы все про линейные массивы... Давайте напишем на Обероне цикл обхода хотябы двоичного дерева, да так, чтобы было видно, по каким элементам идет итерация...
№ 5200 25-09-2007 04:20 | |
Ответ на »сообщение 5198« (Антон Григорьев)
___________________________
Ответ на »сообщение 5197« (Стэн)
___________________________
Потому что, во-первых, из вида цикла сразу очевидно, по каким элементам идёт итерация
Да, унифицированная работа как с атомарными, так и с объектными данными (типа IEnumerable али итераторов) иногда удобна, но: для языка системного программирования (и особенно реал-тайм применений) важно, чтобы эти два случая явно различались между собой. Иначе такие безобидно-удобные конструкции, типа foreach, могут становиться недертеминированными по времени выполнения. Так же, как недетерминирована виртуальная память или единое адресное пространство для всех накопителей у машин IBM.
№ 5199 25-09-2007 04:17 | |
Ответ на »сообщение 5197« (Стэн)
___________________________
>>>Изначально я говорил, что foreach (которая кстати из C#) лучше чем просто for
FOR i := 0 TO LEN(a)-1 DO
a[i]:=a[i]*scale
END;
Как это сделать с помощью foreach (из C#)?
№ 5198 25-09-2007 03:52 | |
Ответ на »сообщение 5197« (Стэн)
___________________________
Ну и что, что Оберон решает первую задачу лучше некоторых?
Да, лучше. Потому что, во-первых, из вида цикла сразу очевидно, по каким элементам идёт итерация, а во-вторых, есть (в отличие от С/С++) способ узнать размер массива в любой ситуации, а не только если программист не забыл подумать об этом. Вопрочем, всё это вам уже говорили.
№ 5197 25-09-2007 03:19 | |
Ответ на »сообщение 5196« (Антон Григорьев)
___________________________
>>> По крайней мере, Оберон здесь не хуже любого другого языка. И не понимаю, с чем вы спорите. Вам говорят, что Оберон лучше других решает какую-то задачу, а вы отвечаете, что зато, мол, совсем другую задачу он решает не лучше других. Ну и что? То, что он решает первую - уже достоинство.
Типа я теперь и крайним оказался... )))
Изначально я говорил, что foreach (которая кстати из C#) лучше чем просто for: »сообщение 5151«, »сообщение 5152«
Потом мне сказали, что мол в Обероне и без foreach хорошо, а достаточно for ... LEN()-1: »сообщение 5153« предложив сравнить это с C/C++ !!! Как-будто я что-то про них упоминал...
А потом начинают рассказывать какой Оберон классный »сообщение 5189«, и что он в отличии от С может все контролировать... Как-будто бы я спорил... Я просто показал, что на С/С++ тоже можно написать итерацию, которая не выйдет за границы массива... Ну и что, что Оберон решает первую задачу лучше некоторых?
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|