Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  16:02[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 5236—5227 | 5226—5217 | 5216—5207 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 104


№ 5226   26-09-2007 09:45 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5224« (panda)
___________________________
заморачиваться с индексами иногда необходимо, а лишняя конструкция в языке, с суженной (уточнённой) областью применения, ИМХО должна приниматься, только если она очень полезна и удобна.
всякие форичи итд не кажутся мне таковыми, зачем пудрить мозги ещё одной сущностью, их и так расплодилось много  :)
вот тут я понимаю Вирта с его минимализмом.


№ 5225   26-09-2007 05:28 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5222« (Руслан Богатырев)
___________________________

Коллеги, а чем вам не нравится концепция итератора, предложенная ещё в начале 1970-х годов Барбарой Лисков в языке CLU?
Мне - нравится. Я люблю и итераторы, и циклы foreach, и реализацию foreach через итераторы :-)


№ 5224   26-09-2007 05:27 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5220« (Beginner)
___________________________

Это отрыжка от правила считать с 0, а не как нормальные люди - с 1. Опять противоречие между привычкой (прагматика) и заумной (хоть абсолютно правильной) учёностью.
Ну так foreach и позволяет считать не заморачиваясь с индексами ;-)


№ 5223   26-09-2007 04:44 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5221« (Fktrc)
___________________________

DoForEach(List, Procedure, fBeg, fEnd), где fEnd может быть отрицательным. Отрицательность fEnd будет свидетельствовать, что диапазон перебора кончается за abs(fEnd) элементов до конца списка.

Ну тогда опять будут писать DoForEach(List, Proc, 1, Count), когда надо DoForEach(List, Proc, 0, Count-1). :)

Ответ на »сообщение 5222« (Руслан Богатырев)
___________________________

Коллеги, а чем вам не нравится концепция итератора, предложенная ещё в начале 1970-х годов Барбарой Лисков в языке CLU?

DoForEach, в большинстве случаев, будет реализован через итератор или что-то похожее. А если прямо использовать итератор, то ведь он имеет состояние, за которым надо следить.


№ 5222   26-09-2007 04:17 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5221« (Fktrc)
___________________________

DoForEach(List, Procedure, fBeg, fEnd), где fEnd может быть отрицательным. Отрицательность fEnd будет свидетельствовать, что диапазон перебора кончается за abs(fEnd) элементов до конца списка.

Коллеги, а чем вам не нравится концепция итератора, предложенная ещё в начале 1970-х годов Барбарой Лисков в языке CLU?


№ 5221   26-09-2007 04:09 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5218« (Mirage)
___________________________

Ну или тогда в язык надо вводить ForEachExceptLastOne, ForEachExceptLastTwo и т.д.

DoForEach(List, Procedure, fBeg, fEnd), где fEnd может быть отрицательным. Отрицательность fEnd будет свидетельствовать, что диапазон перебора кончается за abs(fEnd) элементов до конца списка.


№ 5220   26-09-2007 03:29 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5217« (panda)
___________________________
Это отрыжка от правила считать с 0, а не как нормальные люди - с 1. Опять противоречие между привычкой (прагматика) и заумной (хоть абсолютно правильной) учёностью.


№ 5219   26-09-2007 03:21 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5214« (AVC)
___________________________

Ну в принципе, задачка эдеиентарная.
Нужно создать потенциально бесконечный список нечётных чисел, претендующих на звание простых, затем с помощью функции filter отфильтровать из этого списка все составные числа и получить, опять же, потенциально бесконечный список, но уже именно простых чисел (используя для этого уже имеющиеся элементы в этом отфильтрованном списке), и наконец, изъять из него стотысячный или миллионный элемент...
Программа на Хаскелле, которая именно так решает эту задачу, выглядит так:

primes :: [Int]
primes = 2:3:filter isPrime [5,7..]
  where
    isPrime !x = all (\p -> x `mod` p /= 0) $ takeWhile (\p -> p*p <= x) $ tail primes

n = 100000

main = print $ primes !! (n-1)

стотысячный элемент извлекается за 3 сек, миллионный - за 79 сек.
Нижеприведённая программа на КП использует массив, и время работы у неё, соответственно, 0.65 и 17 сек. Такая же программа на Си (gcc 3.4.5) - 0.44 и 11 сек...

MODULE Primes;
IMPORT SL:=StdLog;

CONST nmax = 1000000;
VAR ps : ARRAY nmax OF INTEGER;

PROCEDURE Prime(n : INTEGER) : INTEGER;
VAR i, j, p : INTEGER;
    f : BOOLEAN;
BEGIN
  ps[0] := 2; ps[1] := 3;
  i := 2; p := 5;
  WHILE i < n DO
    f := TRUE;
    j := 1;
    WHILE f & (ps[j]*ps[j] <= p) DO
      f := (p MOD ps[j]) # 0;
      INC(j)
    END;
    IF f THEN
      ps[i] := p;
      INC(i)
    END;
    INC(p,2)
  END;
  RETURN ps[n-1]
END Prime;

PROCEDURE Do*;
BEGIN
  SL.Int(Prime(100000)); SL.Ln;
END Do;

END Primes.

А вот любопытно, какая скорость будет у варианта на КП и Си, которые имеют такой же алгоритм, как на Хаскелле, т.е. с бесконечными ленивыми списками...


№ 5218   26-09-2007 02:58 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5217« (panda)
___________________________

Вы никогда не замечали в ходе code review перлов навроде
for I := 0 to List.Count или for I := 1 to List.Count ?
Вам крупно повезло ;-)


Бывало, хотя в большинстве случаев при запуске возникает range check error с указанием места ошибки и все очевидно.

В крайнем случае, можно сделать свой DoForEach(List, Procedure).

Ну или тогда в язык надо вводить ForEachExceptLastOne, ForEachExceptLastTwo и т.д.


№ 5217   26-09-2007 02:40 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5213« (Mirage)
___________________________

Смысла вводить foreach ни в C# ни в Delphi (а ввели ведь) не вижу. Ни укорачивания кода, ни унификации кода для разных типов контейнеров, этим не достигается. Единственная цель, которая действительно этим достигнута - "шобы было".
Вы никогда не замечали в ходе code review перлов навроде

for I := 0 to List.Count

или

for I := 1 to List.Count

?
Вам крупно повезло ;-)


<<<... | 5236—5227 | 5226—5217 | 5216—5207 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 104


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования