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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.

Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.

Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.

 Jack Of Shadows

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

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

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


Всего в теме 5502 сообщения

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

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


Смотрите также обсуждения:
Средства разработки. Языки программирования.
  • Delphi 4 or Delphi 5
  • Что приобрести в качестве средства разработки?
  • Delphi6
  • Delphi vs PowerBuilder
  • Сравнение компиляторов
  • Вот и вышла Delphi 7... Вы рады?

  • <<<... | 2472—2463 | 2462—2453 | 2452—2443 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 305


    № 2462   01-04-2007 21:55 Ответить на это сообщение Ответить на это сообщение с цитированием
    Удивительные события продолжают происходить сегодня.
    http://lambda-the-ultimate.org/node/2164
    Билл Тейлор, генеральный менеджер стратегической группы по софтверным платформам Microsoft, сообщил сегодня на пресс-конференции, что Microsoft приняла решение убрать mutable (изменяемые) переменные из dotnet.
    Как видите функциональное программирование наконец то прорвалось в самый meinstream из мейнстримов.
    Советую всем сишарперам немедленно изучать хаскель. А то к следующему сервис паку могут не успеть. :))


    № 2461   01-04-2007 20:58 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2460« (AVC)
    ___________________________
    Хочется строго спросить учителей и программистов, сколько любознательному дарованию придется ожидать окончания вычислений?


    Школьники народ любознательный ...и нетерпеливый. Ждать долго не придется. Поглядев разинув рот на заполняющие весь экран цифры с пару минут, он просто нажмет Ctrl-C (если знает) или спросит у учителя "как ЭТО остановить". И на всю жизнь запомнит это ощущение прикосновения к чему то огромному, к тому с явлениями какого  невероятного масштаба позволяет иметь дело математика.
    А что он запомнит набрав factorial 100 на обероне ?
    Идиоткую ошибку которая ему ни о чем не говорит ? Путанные и сбивающиеся и главное совершенно непонятные для него обьяснения учителя почему математика тут маху дала ? Разочарование ? Осознание того что математика это только игрушка, которая работает "на моделях", а как что побольше так ломается ?

    Оставьте практичность оберона для тех случаев где она затребована. И школа (как начальная так и высшая) к таким случаям не относится.


    № 2460   01-04-2007 19:22 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2458« (AVC)
    ___________________________

    Итак, допустим, что у нас попался любознательный школьник.
    Сначала ему захотелось посчитать 100!
    Зачем, и что он собирается делать с этим отнюдь не маленьким числом, -- не спрашиваю.
    Но разве такой смышленый мальчик может этим ограничиться?
    На следующий раз он захочет посчитать 1000000000000!
    Хочется строго спросить учителей и программистов, сколько любознательному дарованию придется ожидать окончания вычислений?
    Тут как-то нервно начинаешь коситься на то, что в коде

    fac 0 = 1
    fac n = (n-1) * fac n

    с похвальной заботой повторяющем школьное определение факториала, рекурсия отнюдь не хвостовая...
     AVC


    № 2459   01-04-2007 19:13 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2458« (AVC)
    ___________________________
    Jack, кажется, Вы недавно пытались проповедовать мне корректность?


    И продолжаю.
    Интересно, лично Вам в школе задавали вычислить fac(100)?
    Вы школе не дают вычислить фаториал конкретно 10 или 100.
    В школе учат базовым понятиям. А конкретно что вы там подставите для вычисления не должно иметь принципиального значения.
    В случае с обероном однако имеет.

    И какова была бы практическая ценность Оберона, 
    Какое отношение практическая ценность оберона имеет к школе ? Может еще жесткий цигун эээ РВ вспомните ?

    Тут вот недавно многократно утверждалось, что на Хаскеле пишут операционки. Позвольте спросить: вот с таким представлением целых чисел?

    Позволю, но в другой теме. К школе это отношения не имеет. Не сваливайте все в одну кучу.


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


    Спросите у тех кто DrScheme писал. Это не ко мне.


    № 2458   01-04-2007 18:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2456« (Jack Of Shadows)
    ___________________________

    >>>Ну зачем паясничать ?

    Jack, кажется, Вы недавно пытались проповедовать мне корректность?

    >>>Был приведен конкретный пример вычисления факториала. Школьной надо заметить задачки.

    Интересно, лично Вам в школе задавали вычислить fac(100)?

    Код на обероне для этого дела был приведен. С использованием специальной библиотеки (по другому просто не получается)
    Код на хаскеле (или на лиспе, или не схеме совершенно одинаковый)

    fac 0 = 1
    fac n = (n-1) * fac n

    Где здесь готовая конструкция в языке хаскель для решения именно этой задачи?


    Действительно, какая уж тут конструкция...
    Разве что случайно попался рояль в кустах -- использование больших чисел во всех случаях, когда мы имеем дело с целыми.
    И какова была бы практическая ценность Оберона, если бы во всех случаях он использовал подобное представление целых? Тут вот недавно многократно утверждалось, что на Хаскеле пишут операционки. Позвольте спросить: вот с таким представлением целых чисел?
    Любопытно, что для представления вещественных чисел (по крайней мере, в DrScheme) на такое не сподобились. А чего вдруг?
     AVC


    № 2457   01-04-2007 18:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2448« (Руслан Богатырев)
    ___________________________
    Если исходить из Вашего утверждения и того, что программисты делятся на системных и прикладных, вытекает, что школа должна готовить системных программистов?

    Гениально Руслан. Я прямым текстом говорю что учить надо на языках максимально отдаленных от конкретики железа: В то время как ФЯ дает минимальный набор ортогональных средств практически никак не привязанных к ограничениям железа.

    Вы на основании этого делаете вывод что я имел в виду...системное программирование.

    Деление на системное или прикладное программирование ни в коем случае не должно проводиться в школе (и тем более в институте) Для этого существуют всякие ПТУ и прочие курсы.



    № 2456   01-04-2007 18:21 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2450« (AVC)
    ___________________________
    Видимо, задача школьника состоит в том, чтобы брать готовую конструкцию из самого языка, а не из библиотеки? :)

    Ну зачем паясничать ?
    Был приведен конкретный пример вычисления факториала. Школьной надо заметить задачки.
    Код на обероне для этого дела был приведен. С использованием специальной библиотеки (по другому просто не получается)
    Код на хаскеле (или на лиспе, или не схеме совершенно одинаковый)

    fac 0 = 1
    fac n = (n-1) * fac n

    Где здесь готовая конструкция в языке хаскель для решения именно этой задачи ?

    Приведите ЛЮБУЮ задачу из школьной программы, которая на ваш взгляд потребует в ФЯ каких то специальных конструкций.
    Сравним код оберона и хаскеля, потом уже обоснованно будем говорить что для школьников егче, и где меньше наносной шелухи. Пока что пример с факториалом сильно не в пользу оберона.


    № 2455   01-04-2007 17:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2454« (Руслан Богатырев)
    ___________________________

    >>>Да, забыл дать ссылку. Схема Декарта и ее оценка подробно разобраны в классической книге Джорджа Пойа "Математическое открытие". Лучшая, на мой взгляд, книга по изучению сути программирования, которую крайне высоко ценил Дейкстра. Хотя слово "программирование" там, по-моему, ни разу не упоминается.

    Интересно. С этой стороны об этой книге не думал.
    Надо бы перечитать, благо электронный вариант есть.
    И правда, уже названия глав какие интересные:

    Глава 2. Метод Декарта.
    Глава 3. Рекурсия.
    Глава 4. Суперпозиция.
     AVC


    № 2454   01-04-2007 17:39 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2453« (Руслан Богатырев)
    ___________________________

    Чем больше объем ваших знаний, тем больше пробелов вы сможете усмотреть в этой схеме. Хоть это и утопия, но во многих случаях, однако, полезна и работает.

    Да, забыл дать ссылку. Схема Декарта и ее оценка подробно разобраны в классической книге Джорджа Пойа "Математическое открытие". Лучшая, на мой взгляд, книга по изучению сути программирования, которую крайне высоко ценил Дейкстра. Хотя слово "программирование" там, по-моему, ни разу не упоминается.


    № 2453   01-04-2007 17:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2449« (AVC)
    ___________________________

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

    Т.е. все упирается в то, что есть штатные средства, а есть нештатные, которые всегда можно создать (цена вопроса). Когда я задавал (провокационный) вопрос относительно того, чего в Обероне не хватает для работы с ФП, то по ходу выяснил, что у сторонников ФП есть определенные стереотипы восприятия ИЯ. Для базовых вещей ФП в Обероне средства есть. Разумеется, есть полезные средства того же Хаскеля, которые в Обероне на уровне языка (а не через динамические структуры и реализацию специализированных ран-таймов) не достижимы. Нет ничего странного и страшного.

    Если несколько утрировать споры, то они сводятся примерно к следующему: вот вы у себя в ИП постоянно должны переводить дыхание (плодить кучу явных и ненужных переменных), а мы у себя в ФП все делаем на одном дыхании (дыхнули и запомнили на всю оставшуюся жизнь). Ну да, "мелкозернистость" в ИП имеет место быть (на то он и ИП). Да, мы видим там узелки вышивки, спрятанные в ФП в ран-тайм. И даже можем их ненароком сковырнуть. А дальше-то что?

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

    ИП не делает различия между следованием (порядок, время) и следствием (причина). Иногда это может быть важным. В ФП (свободном от ИП), наоборот, нет времени, есть причины. В противном случае это было бы уже ИП. Синхрон ИП против асинхрона ФП. Одно может имитировать другое. Вопрос в том, кому и для чего что удобнее.

    Среди бумаг известного франузского философа и математика Рене Декарта после его смерти (примерно 350 лет назад) были найдены "Правила для руководства ума". В них Декарт пытался дать универсальный метод решения задач. Честно говоря, ФП, свободное от ИП, мне во многом напоминает утопическую попытку Декарта.

    Если несколько упростить картину, то Декарт предложил такую схему:
    1. Задача любого вида сводится к математической задаче.
    2. Математическая задача любого вида сводится к алгебраической задаче.
    3. Любая алгебраическая задача сводится к решению одного-единственного уравнения.

    Чем больше объем ваших знаний, тем больше пробелов вы сможете усмотреть в этой схеме. Хоть это и утопия, но во многих случаях, однако, полезна и работает.


    <<<... | 2472—2463 | 2462—2453 | 2452—2443 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 305


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

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

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

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

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

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