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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 2552—2543 | 2542—2533 | 2532—2523 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 297


    № 2542   03-04-2007 03:46 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2541« (panda)
    ___________________________
    Спасибо, panda. Скачал, посмотрю.


    № 2541   03-04-2007 03:33 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2538« (Сергей Осколков)
    ___________________________

    А кто скажет, можно познакомиться с функциональным программированием, какое-то представление о нем составить, на тех элементах функционального программирования, которые есть в Python?
    Конечно, можно. Скачайте книгу - http://www.python.ru/files/book-ods.pdf и посмотрите. Там все очень хорошо описано. Вот, например, как сформировать таблицу умножения:

    Table = [(range(1*x, 10*x, x)) for x in range(1, 10)]


    В своей текущей ситуации вижу больше поводов лучше познакомиться с ним, т.к. применения чисто функциональных языков "на работе и дома" сходу не вижу.
    Я для себя именно такое решение и принял.


    № 2540   03-04-2007 03:31 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2517« (Max Belugin)
    ___________________________

    Но сейчас это просто не нужно.

    Не уверен, что не нужно. Форт -- очень интересный язык и весьма эффективная система для решения ряда задач, для которых тот же Оберон является не самым оптимальным выбором. Я имею в виду различные формальные модели (формализмы), которые легко отображаются на "железо". Своего рода прослойка между "железом" и языками высокого уровня. Расширяемый спец. ран-тайм на стековой архитектуре.

    Большой недостаток Форта -- не просто непривычность синтаксиса, а вообще readability. Она у него хромает. Но для определенного класса задач, где требуется получить максимально эффективное решение и где нет надобности исключительно на нем строить гигантские софтверные "сооружения", это хороший инструмент. Назову лишь некоторые: конечные автоматы, сети Петри, клеточные автоматы. Задачи управления и дискретного моделирования. В той же известной популярной книге Тоффоли и Марголуса "Машины клеточных автоматов" Форт вообще лежит в основе изложения предмета. Кстати, эта книга и две лучших книги по сетям Петри (Питерсона и Котова) опубликованы на EuroProg.

    Форт -- вообще почти идеальный, на мой взгляд, язык для реализации всевозможных исполняющих систем (run-time), поверх которых плавают высокоуровневые универсальные и проблемно-ориентированные языки. Если бы сейчас стояла, например, задача реализовать исполняющую систему для Пролога (та же абстрактная машина Уоррена, WAM), думаю, Форт был бы едва ли не лучшим выбором в качестве языка реализации.


    № 2539   03-04-2007 03:19 Ответить на это сообщение Ответить на это сообщение с цитированием
    А вот еще пример, что при наличии достаточного количества сахара программа на ИЯ ничуть не длиннее.

    program ACM_2007_A;
      allels := {['O',{'O'}], ['A',{'A'}], ['A',{'A','O'}], ['B',{'B'}], ['B',{'B','O'}], ['AB',{'A','B'}]};
      rallels := {['+',{'+'}], ['+',{'+','-'}], ['-',{'-'}]};

      childB:={};
      for a,b in {'O', 'A', 'B','AB'} do
        childB([a,b]):=  {x:[x,y] in allels |y in {{u,v}: u in +/ allels{a}, v in +/ allels{b}}};
      end;

      childR:={};
      for a,b in {'+', '-'} do
        childR([a,b]):=  {x:[x,y] in rallels |y in {{u,v}: u in +/ rallels{a}, v in +/ rallels{b}}};
      end;

      n:=1;
      loop do
        get('',line);
        if eof then quit; end;
        papa := span(span(line,' '),'ABO+-?');
        if papa = '' then quit; end;
        mama := span(span(line,' '),'ABO+-?');
        baby := span(span(line,' '),'ABO+-?');
        case of
        (papa='?'): print('Case',n,':', show(parent(mama, baby)), mama, baby);
        (mama='?'): print('Case',n,':', papa, show(parent(papa, baby)), baby);
        (baby='?'): print('Case',n,':', papa, mama, show(child(papa, mama)) );
        end case;
        n+:=1;
      end loop;

      proc child(p1,p2);
        a1:= span(p1,'ABO');
        a2:= span(p2,'ABO');
        return {a+r: a in childB([a1,a2]), r in childR([p1,p2])};
      end proc;

      proc parent(p,c);
        ap:= span(p,'ABO');
        ac:= span(c,'ABO');
        as:={[x]:[[x,y],z] in childB | y=ap and ac in z};
        rs:={[x]:[[x,y],z] in childR | y=p and c in z};
        return {a+r: a in as, r in rs};
      end proc;

      proc show(s);
        if s={} then return 'IMPOSSIBLE';
        elseif #s=1 then return arb s;
        else
          res := '{';
          while #s > 1 do res +:= from s + ', '; end;
          return res + from s + '}';
        end if;
      end proc;
    end program;




    № 2538   03-04-2007 03:13 Ответить на это сообщение Ответить на это сообщение с цитированием
    А кто скажет, можно познакомиться с функциональным программированием, какое-то представление о нем составить, на тех элементах функционального программирования, которые есть в Python? В своей текущей ситуации вижу больше поводов лучше познакомиться с ним, т.к. применения чисто функциональных языков "на работе и дома" сходу не вижу.


    № 2537   03-04-2007 02:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2487« (Сергей Осколков)
    ___________________________

    >>>Здесь всплывает вопрос о целях преподавания программирования в школе. На мой взгляд в обучении имеет смысл не спрятать проблемы арифметики больших чисел, а показать их. Имхо гораздо интереснее не просто вычислить на мощном калькуляторе 100!, а разобраться, каким образом можно организовать такие вычисления.

    Мне тоже так думается.
    Если, конечно, речь идет об уроках информатики и программирования.

    >>>Кстати говоря всё преимущество примера вычисления факториала  - не в особенностях функциональных языков, а во встроенном целом типе произвольной длины, что есть например и в Python'е.

    Есть такая ядовитая фраза, я ее уже цитировал:
    языки, оптимально приспособленные для вычисления факториала.
    Это о том, как иногда пытаются "рекламировать" ФЯ.
    У тех, кто понимает в чем тут фокус (а дело здесь совсем не в функциональности), это вызывает раздражение.
    По крайней мере, у меня вызывает. :)
     AVC


    № 2536   03-04-2007 02:04 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2521« (RBV)
    ___________________________

    :) Мне всегда нравятся заявления людей не имеющих отношения к образованию, о том, что лучше для оного. В особенности для школьного.

    А мы сами когда-то были школьниками, так что помним, чему нас там учили, или точнее чему мы сами там учились и как учились другие школьники...
    Большинству учеников ни Оберон, ни Хаскелл не нужны...
    Оставшимя нескольким процентам изучать Хаскелл будет ничуть не труднее, чем Оберон, а даже легче, потому что поинтереснее. Правда, ещё интереснее С++, но уже, увы, не легче... :о)
    А я ещё и FORTH-83 на ПК Корвет изучал (вернее, баловался)... Круто было...


    № 2535   03-04-2007 01:24 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>На мой взгляд дифференциальное исчисление гораздо нагляднее лямбда
    >>>исчисления.
    Я уже говорил - все зависит от того КАК и в КАКИХ объемах давать материал. Никто и никогда не пытался давать матанализ в школе на том же уровне, что и на мехмате. Я думаю, что и основные концепции ФП можно адаптировать к школьному уровню. В конце концов школьникам даются основы и теории множеств, и теории действительных чисел. Но при этом без тех сложностей, которые на самом деле сопутствуют этим фундаментальным понятиям.


    № 2534   03-04-2007 01:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Не могу тут ничего сказать. Самому интересно каков будет продукт
    >>>столкновения двух противоположных векторов. Необходимости учиться, и
    >>>желания заработать. Это уже сложный социальный эксперимент со многими
    >>>неизвестными.
    Думаю, что ситуация напоминает проблемы дорожного движения. С помощью хороших дорог (Oberon) и качественных светофоров (ФП) качество движения можно улучшить.
    Но... раздолбаи на джипах и мотоциклах были, есть и будут :)))




    № 2533   Удалено модератором


    <<<... | 2552—2543 | 2542—2533 | 2532—2523 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 297


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

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

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

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

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

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