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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 5286—5277 | 5276—5267 | 5266—5257 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 99


№ 5276   27-09-2007 10:14 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5265« (Руслан Богатырев)
___________________________

Если стоит, скажем, задача разделить яблоко на две половинки, можно попробовать его просто с силой разломить. Правда, будут, скорее всего, неровные части. Можно воспользоваться садовыми ножницами и даже электропилой. Но думаю, перочинный нож подойдет для такой задачи лучше. А вот сажать яблони с помощью перочинного ножа, наверное, не стоит.

Правильно ли я понимаю, что кроме этих правдоподобных рассуждений, у Вас нет конкретных технических аргументов, подтверждающих непригодность Лиспа для императивного (в т.ч. низкоуровневого) программирования?


№ 5275   27-09-2007 09:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5264« (Jack Of Shadows)
___________________________
Ведь смысл анонимных функций именно в упрощении записи.
А можно вместо суммы пример хотя бы с нахождением НОД?
Будет ли выглядеть проще?
Мне кажется, это похоже на inline функции, механизм очень мощный, но очень редко используемый.


№ 5274   27-09-2007 09:07 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5264« (Jack Of Shadows)
___________________________
>>>Ну почему же передергиваю ?
Потому что перешли от анонимности к краткости.

>>>Поскольку основным (единственным ?) предназначением анонимных функций является декларация по месту использования, то ясно что при реализации упор будет делаться на краткую форму.
>>>Ведь смысл анонимных функций именно в упрощении записи.

Как правило, синтаксис для анонимных функций более-менее повторяет синтаксис именованных. И если один краток, то и другой тоже.

myFun x y = x + y
ProcessListOfPairs myList myFun

(ProcessListOfPairs myList (lambda (x y) (+ x y))

(define (myFun x y) (+ x y))
(ProcessListOfPairs myList myFun)



>>>Кстати вы упустили возможность еще больше раздуть запись, вкючив в нее типы параметров и тип возвращаемых данных.
Кстати, да.:-)

ProcessListOfPairs(myList, delegate(double x; double y) { return x+y; } )

или

ProcessListOfPairs(myList, function(x,y:real):real; begin result := x+y end )




№ 5273   27-09-2007 08:26 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5267« (Александр Феоктистов)
___________________________

зы: самый лучший фор, где можно указывать ещё и шаг
Можно продолжить до "самый лучший for - это while" :-)


№ 5272   27-09-2007 07:29 Ответить на это сообщение Ответить на это сообщение с цитированием


type MyFunc = Function( x:Integer, y:Integer):Integer;
// Сама передаваемая функция
Function MyFunc(x:Integer, y:Integer):Integer
begin
  return x + y
end
var
\\ Да да мы должны еще и описать переменную типа этой функции. А вы думали уже все ? :))
  mf : MyFunc;
\\ И вот наконец то долгожданная передача:
ProcessListOfPairs(myList, mf)

Приведенный пример из дельфи конечно. Если кто то покажет как это коротко, просто и изящно делается на обероне, буду премного благодарен :))


Ну, на Обероне (на примере КП) это покороче, чем в Дельфе.


PROCEDURE ProcessListOfPairs (l: List; func: PROCEDURE (x, y: INTEGER): INTEGER);
BEGIN
...
END ProcessListOfPairs;

И передача некоторой ф-и:
PROCEDURE MyFunc (x, y: INTEGER): INTEGER;
BEGIN RETURN x + y
END MyFunc;

ProcessListOfPairs(list, MyFunc)





№ 5271   27-09-2007 07:27 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5264« (Jack Of Shadows)
___________________________

Более того, в императивных языках даже описать функцию принимающую другую функцию в качестве параметра, без предварительного описания еще одного типа - невозможно.

Так что придется мне таки переписать приведенный мною пример:

// Сначала нам придется описать тип функции которую мы будем передвать как параметр. Без этого никак.
type MyFunc = Function( x:Integer, y:Integer):Integer;

// Сама передаваемая функция
Function MyFunc(x:Integer, y:Integer):Integer
begin
  return x + y
end

var
\\ Да да мы должны еще и описать переменную типа этой функции. А вы думали уже все ? :))
  mf : MyFunc;

\\ И вот наконец то долгожданная передача:
ProcessListOfPairs(myList, mf)


Ну и сравниваем с кодом из хаскеля:

ProcessListOfPairs myList \x y -> x + y


Приведенный пример из дельфи конечно. Если кто то покажет как это коротко, просто и изящно делается на обероне, буду премного благодарен :))


Никаких таких ужасов на Обероне не требуется. :)
Илья Ермаков уже разъяснил почему: для процедурных типов в Обероне достаточно структурной совместимости, поэтому отдельный тип MyFunc не требуется.
Допустим, где-то есть процедура ProcessListOfPairs:

PROCEDURE ProcessListOfPairs(list: List; p:  PROCEDURE (x, y: INTEGER): INTEGER);


Тогда при ее вызове достаточно просто указать подходящую функцию.
Например:

PROCEDURE Sum(x, y: INTEGER): INTEGER;
...
ProcessListOfPairs(list, Sum);

 AVC


№ 5270   27-09-2007 06:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5268« (Стэн)
___________________________

Да, так и просится этот текст быть отправленным Вирту... Вы расскажите потом, что он думает по этому поводу...

Если Вы обратили внимание, то в контурах проекта "Роса" был особенно отмечен пункт в отношении борьбы с изоляционизмом (технологическим, научным, маркетинговым) и подчеркнуто, что подобный изоляционизм был одной из причин забвения и неприятия Оберона. Что касается Вашего совета... то, думаю, Вам никто не мешает ему последовать. Я свою позицию не скрываю и говорю вполне открыто. Можете смело на меня ссылаться :)

Попытки найти истину? Что-то это все напоминает, или кого-то... Считаете, что это хорошая стратегия?..
Может расскажите, что за истину должны искать ИТ компании, вместо завоевании долей рынка?


Стратегия для ЧЕГО? У меня лично нет цели извлечь максимум коммерческой прибыли из проекта "Роса". Надеюсь, участники его в определенной степени разделяют мою точку зрения. А если так -- зачем ЗАВОЕВЫВАТЬ долю рынка?

Нам приходится пересматривать стереотипы, которые многие годы вбивали в головы миллионов немногочисленные лидеры ИТ-рынка, борясь за свою долю. Вы должны прекрасно понимать разницу в поведении на рынке между компанией, занимающей монопольное положение и заинтересованной в контроле имеющейся доли, и "отстающей" компанией, которая стремится отвоевать хоть какое-то место под солнцем. Для первой нет необходимости в технологическом совершенстве. Более того, оно опасно. Это риски. Для тех, кому нечего терять -- это чуть ли не единственный способ выживания. Спроецируйте это на страны, и Вы поймете особенность США и потенциал их негативной роли в развитии программирования.

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


№ 5269   27-09-2007 06:02 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5264« (Jack Of Shadows)
___________________________

Ответ на »сообщение 5261« (Trurl)
___________________________
Более того, в императивных языках даже описать функцию принимающую другую функцию в качестве параметра, без предварительного описания еще одного типа - невозможно.

Так что придется мне таки переписать приведенный мною пример:

В Компонентном Паскале, кстати, можно объявить сигнатуру по месту, прямо в списке параметров. А процедурные типы, в отличие от массивовых, в Обероне признаются соместимыми, если список параметров идентичен.


№ 5268   27-09-2007 05:25 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5266« (Руслан Богатырев)
___________________________
>>> Подумалось ещё вот о чём: нередко для самоутверждения языка (точнее, его авторов, его сторонников) пытаются весь мир вокруг переделать на один лад -- в терминах этого языка (речь не только и не столько о Лиспе). Написать транслятор с него обязательно на нём же самом, и систему программирования, и ОС. Если сделана какая-то прикладная система, то обязательно хочется подчеркнуть, что именно на этом языке, не на каком-то там ещё...
Да, так и просится этот текст быть отправленным Вирту... Вы расскажите потом, что он думает по этому поводу...

>>> Цель которых -- контроль завоёванных долей рынка и их расширение, а не попытки найти истину или достичь технологического совершенства.
Попытки найти истину? Что-то это все напоминает, или кого-то... Считаете, что это хорошая стратегия?..
Может расскажите, что за истину должны искать ИТ компании, вместо завоевании долей рынка?
Можно начать вот отсюда »сообщение 1760 в теме №348 на БП« и отсюда »сообщение 1770 в теме №348 на БП«


№ 5267   27-09-2007 04:44 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5228« (panda)
___________________________

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


<<<... | 5286—5277 | 5276—5267 | 5266—5257 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 99


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

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

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

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

Перейти на конкретную страницу по номеру
  
Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

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