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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 5491—5482 | 5481—5472 | 5471—5462 | ...>>>
    Всего сообщений в теме: 5501; страниц: 551; текущая страница: 3


    № 5481   06-08-2012 14:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5480« (мардухай)
    ___________________________
    Сишарп хороший современный императивный язык. И как таковой меня совершенно не интересует.

    LINQ - кусочек хаскеля портированный на сишарп. Хорошо конечно для бедняг которые застряли на платформе. Я бы тоже радовался что у меня есть LINQ если бы меня кто заставил работать на сишарпе. К счастью меня никто не заставляет.

    F# реализация окамла на dotnet c несколько более современным синтаксисом. Вешь хорошая, но я привык и весьма ценю ленивость хаскеля и его продвинутую систему типов. Однако если бы мне пришлось работать на dotnet, я бы выбрал F#

    Дотнет в целом нормальная платформа. К сожалению не opensource и не линукс.
    Для меня профессиональный выбор однозначен - линукс.

    Но для тех кто работает на windows я думаю dotnet хороший (если не единственный) выбор.


    № 5480   06-08-2012 09:07 Ответить на это сообщение Ответить на это сообщение с цитированием
    Вопрос к уважаемому Jack Of Shadows. Любопытно было бы узнать Ваше мнение о C# (linq ), F# и о .net в целом?


    № 5479   31-07-2012 18:04 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5474« (John Doe)
    ___________________________
    https://dl.dropbox.com/u/62227452/Screenshots/Screenshot%20from%202012-07-26%2020%3A37%3A43.png

    А вот полюбуйтесь на хаскелевсий REPL выдающий подсветку синтаксиса и автоиндентацию для сгенерированного javascript кода.

    Конечно, благодарить за это следует великолепный emacs. Это просто в тему о том что хаскелевский REPL ничем не хуже лиспового.

    Ну а по поводу динамичности, в последней версии хаскеля и его REPL добавили опцию динамического запуска. Так что теперь можете тестировать ваши функции даже без компиляции всего модуля.

    Мне персноально это честно говоря не нужно. Но кому то наверно понадобилось.


    № 5478   31-07-2012 17:26 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5474« (John Doe)
    ___________________________

    Правильно поставленный процесс разработки, проверка функций в REPL, Unit-тестирование

    По поводу REPL полностью согласен...вместе со всем хаскель сообществом :))
    Хаскелевсий REPL ничем не уступает лисповому, интегрирован точно также в emacs. Да и вообще можете сами полюбоваться:
    https://www.youtube.com/watch?v=dhFZ8vx9byc

    А вот в сфере юнит тестирования хаскель может поучить кое чему старичков. Кроме классического JUnit подхода хаскелисты создали невероятно крутой QuickChek, который АВТОМАТИЧЕСКИ генерирует тесты согласно декларативному описанию функций.

    При чем моментально находит ошибки в коде который был до этого проверен вручную написанными юнит-тестами. Вот так вот!



    № 5477   31-07-2012 17:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5474« (John Doe)
    ___________________________
    Но не забывайте, что у динамики и метавозможностей Lisp-a тоже есть свои преимущества над статикой,
    Действительно макросы лиспа и его динамичность создают очень мощную среду для программиста. Если бы речь шла только о статике то и спора бы не было.
    Однако статика сама по себе не дает описанного эффекта. Я уже упоминал что при работе с длинным списком статических языков, такого феномена не наблюдается. Тут роль играет именно мощная современная система типов.
    Хаскель например отлавливает NullPointerException, на этапе компиляции. Ни лисп, ни джава в этом не помогут.

    Ответ на »сообщение 5475« (Сергей О.)
    ___________________________

    Все таки замечательный язык Окамл!

    Именно по той же причине - схожие системы типизации (Hindley-Milner).
    Хаскель правда далеко ушел от окамла в своем развитии. Но разработчики окамла тоже перенимают опыт хаскеля.

    Буквально три дня назад вышла новая major версия окамла 4.0 где основным нововведением являются GADT (Generalized Algebraic Data Types), то есть одно из основных свойств системы типов хаскеля.


    № 5476   31-07-2012 14:51 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5475« (Сергей О.)
    ___________________________
    Что-то поломалось. 1 абзац в предыдущем моем сообщении - цитата сообщения Jack of Shadows.


    № 5475   31-07-2012 14:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5473« (Jack Of Shadows)
    ___________________________

    Весьма интересным свойством работы на хаскеле является вот такой вот феномен: Если скомпилировалось, то скорее всего и сработает правильно. Поразительное ощущение. Особенно после десятков лет опыта с другими статическими языками (с, с++, delphi, java, c#), где факт успешного компилирование не говорит ни о чем, и программист оправданно ожидает получить ошибку при первом запуске.

    Интересно, один мой бывший однокурсник, хороший, насколько могу судить, программист, не так давно написал в своем ЖЖ:
    Все таки замечательный язык Окамл!

    Пишешь долго, но уж если скомпилировалось, то работает почти сразу



    № 5474   31-07-2012 13:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5473« (Jack Of Shadows)
    ___________________________
    Во многом описанные вами преимущества сводятся к "утилитарному" преимуществу статики над динамикой. Но не забывайте, что у динамики и метавозможностей Lisp-a тоже есть свои преимущества над статикой, - не мне Вам рассказывать. Что до безошибочности работы программы на Haskell после компиляции, то, простите, я не поверю, что сразу компилируется весь программный модуль без промежуточного тестирования отдельных функций. То же самое относится и к динамическим Lisp/Python/etc. Правильно поставленный процесс разработки, проверка функций в REPL, Unit-тестирование (причем все это гораздо менее обременительно, чем в статике). Конечно, автоматический рефакторинг в статике бесподобен. Но, перефразируя, не рефакторингом же единым :)
    Согласитесь, все-таки, что по гибкости Lisp-у нет равных. И то, что в AI царствует Lisp, а не Haskell  - это не просто совпадение. Да и в Web-программировании явно прослеживается преимущество динамических языков, начиная с PHP и заканчивая Python или Clojure.



    № 5473   31-07-2012 12:58 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5472« (John Doe)
    ___________________________
    Отнюдь. Изначальное "вязкое" ощущение при работе с хаскелем связано с тем что язык совершенно инородный.
    Это вам не перепрыгивание с дельфей на сишарп :)

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

    У меня был опыт перехода на новые версии web frameworks как на clojure (compojure framework) так и на хаскеле (yesod framework). Так вот на лиспе без ошибок не обошлось. А вот на хаскеле несмотря на большое количество изменений во ммногих модулях, прошло без сучка-задоринки.

    Весьма интересным свойством работы на хаскеле является вот такой вот феномен: Если скомпилировалось, то скорее всего и сработает правильно. Поразительное ощущение. Особенно после десятков лет опыта с другими статическими языками (с, с++, delphi, java, c#), где факт успешного компилирование не говорит ни о чем, и программист оправданно ожидает получить ошибку при первом запуске.

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


    № 5472   31-07-2012 12:33 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 5470« (Jack Of Shadows)
    ___________________________
    А потом переполз на хаскель
    Не скучаете по Lisp-у? Я в свое время пробовал Haskell и могу сказать, что с ним производительность (моя, во всяком случае) падает безумно по сравнению с Lisp-ом. Образно выражаясь, программирование на Lisp похоже на лепку произвольных фигур из глины/платилина, - ничто не ограничивает мою фантазию, Lisp - это просто полет мысли. А программирование на Haskell похоже на складывание конструкции из твердых кристаллов сложной формы. Вроде красиво, но тратится уйма времени на элементарнейшие вещи.


    <<<... | 5491—5482 | 5481—5472 | 5471—5462 | ...>>>
    Всего сообщений в теме: 5501; страниц: 551; текущая страница: 3


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

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

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

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

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

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