Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Итераторы являются замыканиями? Что то не уловил глубину мысли. Ты closures с continuations, случаем, не попутал?
Ну замыкание в реализации итератора явно присутствует, во первых итератор держит в себе ссылку на контейнер во вторых позицию
в контейнере, вот простейшая реализация на OCaml
let get_iter l =
let lref = ref l in
let next () =
match !lref with
| [] -> None
| a::b -> (lref := b; Some a)
in next
let rec print it =
match it () with
| Some x -> (Printf.printf "%d\n" x; print it)
| None -> ()
;;
print (get_iter [1; 2; 3; 4])
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, lazy_walrus, Вы писали:
_>>Здравствуйте, Константин Л., Вы писали:
КЛ>>>ну я. какая разница. предвосхищая вопросы — если чел пялился в исходники неделю и в 2011 задает такие вопросы и делает такие предположения, значит он зря потратил своё время
_>>А почему зря? Человек с опытом программирования на Delphi изучил исходники STL, расширил свой кругозор, у него возникли понятные вопросы почему STL сделан так а не иначе, и нельзя ли сделать лучше.
КЛ>подожди, ты всерьез считаешь, что после недельного изучения stl нормальный человек будет утверждать что (курсив мой, ибо а как иначе?)
КЛ>
КЛ>ее можно реализовать при помощи чистого ООП не потеряв ничего в фичах и гибкости
КЛ>Я считаю, что чел смотрел неделю и ничего в итоге не понял
Если человек всю жизнь писал на Дельфях — это естественно, не?
Я имею в виду его вопрос, а не то, что ничего не понял.
Здравствуйте, Ikemefula, Вы писали:
I>>>Шаблоны это не ооп ?
FR>>Нет конечно концепция ортогональная ООП.
I>А по подробнее ?
Они реализуют совершенно другую концепцию — обобщенное программирование которое никакого отношения к ООП не имеет и может реализовыватся как в ООП языках например C++ или D так и в процедурных например в Ada так и в функциональных например Hope.
Другая сторона шаблонов — метапрограммирование также ортогональна ООП.
"The Scheme work led to a grant to produce a generic library in Ada"
Начинали на схеме, потом была Ада, потом С++ А если я кое что похожее начинал на асме, не зная ничего про ФП, стало быть функции цельнотянутые из императивного ассемблера ?
Здравствуйте, FR, Вы писали:
FR>Они реализуют совершенно другую концепцию — обобщенное программирование которое никакого отношения к ООП не имеет и может реализовыватся как в ООП языках например C++ или D так и в процедурных например в Ada так и в функциональных например Hope.
"обобщенное программирование" это всего лишь полиморфизм, который, к слову, в с++ оформлен достаточно жиденько.
Здравствуйте, Ikemefula, Вы писали:
I>"The Scheme work led to a grant to produce a generic library in Ada"
I>Начинали на схеме, потом была Ада, потом С++ А если я кое что похожее начинал на асме, не зная ничего про ФП, стало быть функции цельнотянутые из императивного ассемблера ?
А читать с начала не пробовал?
In the late 70’s I became aware of John Backus’s work on FP1. While his idea of programming with functional forms struck me as essential, I realized that his attempt to permanently fix the number of functional forms was fundamentally wrong. The number of functional forms – or as I call them now – generic algorithms is always growing as we discover new algorithms. In 1980 together with Dave Musser and Deepak Kapur I started working on a language Tecton to describe algorithms defined on algebraic theories. The language was functional since I did not realize at the time that memory and pointers were a fundamental part of programming. I also spent time studying Aristotle and his successors and that lead me to a better understanding of fundamental operations on objects like equality and copying and the relation between whole and part.
Тут он прямо пишет что все цельнотянуто из FP но ему был нужен более низкий уровень, что он успешно и осуществил реализовав STL.
FR>In the late 70’s I became aware of John Backus’s work on FP1. While his idea of programming with functional forms struck me as essential, I realized that his attempt to permanently fix the number of functional forms was fundamentally wrong. The number of functional forms – or as I call them now – generic algorithms is always growing as we discover new algorithms. In 1980 together with Dave Musser and Deepak Kapur I started working on a language Tecton to describe algorithms defined on algebraic theories. The language was functional since I did not realize at the time that memory and pointers were a fundamental part of programming. I also spent time studying Aristotle and his successors and that lead me to a better understanding of fundamental operations on objects like equality and copying and the relation between whole and part.
FR>Тут он прямо пишет что все цельнотянуто из FP но ему был нужен более низкий уровень, что он успешно и осуществил реализовав STL.
С таким подходом вообще все получается цельнотянутым из ФП
Здравствуйте, FR, Вы писали:
I>>"обобщенное программирование" это всего лишь полиморфизм, который, к слову, в с++ оформлен достаточно жиденько.
FR>Чуть больше http://en.wikipedia.org/wiki/Generic_programming
Чем это отличается от параметрического полиморфизма ?
Здравствуйте, Ikemefula, Вы писали:
FR>>Тут он прямо пишет что все цельнотянуто из FP но ему был нужен более низкий уровень, что он успешно и осуществил реализовав STL.
I>С таким подходом вообще все получается цельнотянутым из ФП
Нет не получается, автор тут сам прямо говорит откуда взял.
Здравствуйте, FR, Вы писали:
I>>Чем это отличается от параметрического полиморфизма ?
FR>Тем что параметрический полиморфизм это один из способов обобщенного программирования.
По твоей же ссылке, кстати говоря, "Generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by Ada in 1983, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplication"
"Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages. "
Ты точно это хотел сказать ?
Если STL это обобщенное, то растет это из Ада, что следует из твоей ссылки т.е. императивщина. Ну а схемы здесь просто как вариант реализации.
Здравствуйте, Ikemefula, Вы писали:
I>По твоей же ссылке, кстати говоря, "Generic programming is a style of computer programming in which algorithms are written in terms of to-be-specified-later types that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by Ada in 1983, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplication"
I>"Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages. "
I>Ты точно это хотел сказать ?
I>Если STL это обобщенное, то растет это из Ада, что следует из твоей ссылки т.е. императивщина. Ну а схемы здесь просто как вариант реализации.
Оно растет не только из Ады там же и ML указан и не указаны те же Hope или CLU (когда еще Ады и в проекте не было там уже были параметризованные типы). Ада просто первый достаточно массовый язык с обобщенным программированием.
Обобщенное программирование ортогонально императивщине и функциональщине.
Здравствуйте, FR, Вы писали:
I>>Если STL это обобщенное, то растет это из Ада, что следует из твоей ссылки т.е. императивщина. Ну а схемы здесь просто как вариант реализации.
FR>Оно растет не только из Ады там же и ML указан и не указаны те же Hope или CLU (когда еще Ады и в проекте не было там уже были параметризованные типы). Ада просто первый достаточно массовый язык с обобщенным программированием. FR>Обобщенное программирование ортогонально императивщине и функциональщине.
Итого — STL это обобобщенное программирование, которое реализовано в ОО-языке с помощью ОО-инструмента — шаблонов
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, FR, Вы писали:
I>>>Если STL это обобщенное, то растет это из Ада, что следует из твоей ссылки т.е. императивщина. Ну а схемы здесь просто как вариант реализации.
FR>>Оно растет не только из Ады там же и ML указан и не указаны те же Hope или CLU (когда еще Ады и в проекте не было там уже были параметризованные типы). Ада просто первый достаточно массовый язык с обобщенным программированием. FR>>Обобщенное программирование ортогонально императивщине и функциональщине.
I>Итого — STL это обобобщенное программирование, которое реализовано в ОО-языке с помощью ОО-инструмента — шаблонов
Шаблоны не являются ОО-инструментом ну вообще никак. Их можно отнести к МП.