Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 5196 25-09-2007 02:45 | |
Ответ на »сообщение 5192« (Стэн)
___________________________
По крайней мере, Оберон здесь не хуже любого другого языка. И не понимаю, с чем вы спорите. Вам говорят, что Оберон лучше других решает какую-то задачу, а вы отвечаете, что зато, мол, совсем другую задачу он решает не лучше других. Ну и что? То, что он решает первую - уже достоинство.
№ 5195 25-09-2007 02:43 | |
Ответ на »сообщение 5190« (Стэн)
___________________________
Ответ на »сообщение 5189« (AVC)
___________________________
>>> Например, Вы написали Замечательную Функцию :) , суммирующую некий ряд:
Ладно, на самом деле на С это делается так:
#define SIZE 100
int a[ SIZE ];
int s = sum( a, SIZE );
А на С++ вообще не надо выпендриваться:
int s = std::accumulate( a.begin(), a.end(), 0 );
Какой всё-таки ужас этот ваш С++... То ли дело Хаскелл: s = sum a
№ 5194 25-09-2007 02:42 | |
Ответ на »сообщение 5193« (Beginner)
___________________________
FAX - это будет переменная или константа типа char ?
Идентификатор, потому что константа типа Char обязана начинаться с digit, а F - это не digit, это hexDigit. Соответственно, константа типа Char записывается как 0FAX.
№ 5193 25-09-2007 02:32 | |
Читаю описание Оберона.
ident = letter {letter | digit}.
...
CharConstant = """ character """ | digit {hexDigit} "X".
Внимание, вопрос!
FAX - это будет переменная или константа типа char ?
№ 5192 25-09-2007 01:09 | |
Ответ на »сообщение 5191« (Антон Григорьев)
___________________________
>>> А вы не путайте корректность самих данных и корректность размещения данных в памяти. Оберон гарантирует, что если на массив выделено 100 байт, то к 101-му байту через этот массив вы доступ не получите. Это уже очень много. А целостность тех данных, которые лежат в этом массиве - это уже действительно задача не компилятора.
А я ничего и не путаю... а говорю о том, что контролируемые массивы это конечно хорошо, но это не панацея. И аргументы типа: "а вот в С программист сам должен следить за размерами массива, а вот Оберон сам все делает", либо закрывание глаз на общую проблему, либо постулирование, что мы ограничиваемся только определенным очень узким классом задача...
Вот идет сборка сетевого потока пакетами по 100 байт, а иногда приходят по 80. И в результате необходимо следить за размерами приходящих пакетов, и укладывать их в динамические структуры, которые все равно руками придется описывать, если объем потока очень большой... И где Оберон?
№ 5191 24-09-2007 23:23 | |
Ответ на »сообщение 5190« (Стэн)
___________________________
И вот такой Вам вопрос: А может Оберон гарантировать, что из сети поступят именно 100 байт, а не 80 (хакерская атака на реализацию протокола)? Что-то мне подсказывает, что нет... Все равно программист должен следить за корректностью обращения с данными...
А вы не путайте корректность самих данных и корректность размещения данных в памяти. Оберон гарантирует, что если на массив выделено 100 байт, то к 101-му байту через этот массив вы доступ не получите. Это уже очень много. А целостность тех данных, которые лежат в этом массиве - это уже действительно задача не компилятора.
№ 5190 24-09-2007 16:49 | |
Ответ на »сообщение 5189« (AVC)
___________________________
>>> Например, Вы написали Замечательную Функцию :) , суммирующую некий ряд:
Ладно, на самом деле на С это делается так:
#define SIZE 100
int a[ SIZE ];
int s = sum( a, SIZE );
А на С++ вообще не надо выпендриваться:
int s = std::accumulate( a.begin(), a.end(), 0 );
И вот такой Вам вопрос: А может Оберон гарантировать, что из сети поступят именно 100 байт, а не 80 (хакерская атака на реализацию протокола)? Что-то мне подсказывает, что нет... Все равно программист должен следить за корректностью обращения с данными...
№ 5189 24-09-2007 15:06 | |
Ответ на »сообщение 5166« (Стэн)
___________________________
Ответ на »сообщение 5161« (AVC)
___________________________
>>> Представьте, что a -- массив, переданный как параметр некоей функции.
Вот представить это гораздо проще... Так как в С существуют два вида массивов - строки и все остальные. И строки обрабатываются очень легко, а для всех остальных передается длинна...
И кто/что гарантирует передачу размера массива?
Компилятор?
Нет, сишный компилятор себя этим не утруждает (в отличие от обероновского).
Если же Вы имеете в виду, что это должен делать программист, то, опять же, где средства контроля?
(Это старая тема "Почему бы нам не писать все на ассемблере?")
Например, Вы написали Замечательную Функцию :) , суммирующую некий ряд:
int sum(int *a, size_t n)
А программист, использующий эту функцию, взял и машинально написал (если взять недавний случай):
s = sum(a, sizeof a);
№ 5188 24-09-2007 15:04 | |
№ 5187 24-09-2007 14:56 | |
Ответ на »сообщение 5186« (pepper)
___________________________
Вроде хаскеля :)
Раз мы именно его планируем в "Росе", то не вижу проблем. Зачем еще куда-то что-то прикручивать.
Конкретно данная конструкция давно опробована в популярных языках, об "идеологических" проблемах я не слышал.
Мне это чем-то напомнило фразу Дейкстры: "Эта линия защиты столь же убедительна, сколь и аргумент, что курение полезно для здоровья, потому что так много людей курят". Цену вопроса неплохо знать. Как бы не пришлось потом оплачивать по счетам за такое кредитование.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|