Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 1472 08-11-2006 06:11 | |
Ответ на »сообщение 1471« (Pointer To)
___________________________
Вполне обычный и естественный процесс эволюции человеческого сознания: от примитивного понятия конкретного числа к понятию абстрактного типа данных с абстрактными методами.
По логике следующим этапом эволюции является абстрагирование типов данных и операций, т.е. движение к бестиповым языкам, нивелирующим код и данные. А, значит, наш светлый путь лежит к Лиспу, возникшему почти полвека назад.
"Где начало того конца, которым оканчивается начало?" - вопрошал Козьма Петрович Прутков, появившийся на небосклоне русской литературы примерно за сто лет до Лиспа. В самом деле, куда мы идем? Эволюционная спираль сделала очередной виток...
№ 1471 08-11-2006 05:52 | |
>>>Всему - своё время...
Я тоже хочу немного защитить ООП :)
ООП можно хаять только, если понимать его в узком примитивном смысле. А если воспринимать ООП, как естественный ход эволюции программирования по пути "от конкретного - к абстрактному", то это значительный этап на этом пути, который будет развиваться дальше.
Что, по сути, такое классы и объекты ? Естественный результат в процессе развития метода абстракции в области программирования:
1) Эволюция абстракции данных:
Значение данных->
Тип данных->
Абстрактный тип данных(АТД)->
Класс
2) Эволюция абстракции опреаций:
Мономорфная (обычная) процедура->
Полиморфная процедура->
Абстрактная процедура
Вполне обычный и естественный процесс эволюции человеческого сознания: от примитивного понятия конкретного числа к понятию абстрактного типа данных с абстрактными методами. На данном этапе результат этой эволюции называется ООП. Хаять этот результат можно, но зачем? С таким же успехом можно хаять понятие "переменной" и "процедуры", которые благополучно пережили уже, наверно, 40 лет эволюции и ничего. До сих пор пользуемся...
№ 1470 Удалено модератором | |
№ 1469 08-11-2006 05:21 | |
Ответ на »сообщение 1459« (Jack Of Shadows)
___________________________
ООП я хаял и хаять буду. ООП это не универсальная парадигма программирования в отличие от ФЯ / ИЯ - а частный инструмент, который по стечению обстоятельств на какое то (надеюсь короткое) время стал доминирующим.
Не ну именно хаять незачем.
Это как этапы: сказки -> догадки -> примитивное использование наблюдаемых закономерностей3 > ньютоновская физика -> СТО -> ...
Для каждого уровня понимания и представлений о мире подойдёт и будет "законченно-полезной" своя ниша. Просто сейчас основная масса задач решается с помощью процедурного и ООП - подходов. Это как в артиллерии: в средние века таблицы углов для стрельбы из пушек были достижением, ценились и составлялись практически на каждое орудие индивидуально. Там и не считалось практически ничего. А вот уже во второй половине 19 века - математика в полный рост. Особенно когда выяснилось, что в южном полушарии снаряды почему-то летают "чуть-чуть" не так, как в родном Альбионе... :о)
Всему - своё время...
№ 1468 08-11-2006 05:07 | |
Ответ на »сообщение 1464« (Антон Григорьев)
___________________________
Я понимаю, что это моё сообщение Вы тоже удалите, но не кажется ли эта мера Вам слишком, СЛИШКОМ жестокой?!
За что?!
№ 1467 08-11-2006 05:03 | |
Ответ на »сообщение 1461« (Jack Of Shadows)
___________________________
>>>Без императивности то никуда. Но лучше эту императивность свести к минимуму
К какому минимуму?
Собственно это из Вас и тянут уже тысячу постов.
Где Вы видите эту границу?
№ 1466 08-11-2006 04:56 | |
Ответ на »сообщение 1448« (Jack Of Shadows)
___________________________
Совершенно верно. Есть такое. Конечно и Кени Тилтон стал сталкиваться с подобными роблемами, когда реализовал идею, и его библиотеку начали применать многие другие люди. Она развивается, на месте не стоит.
Эта проблема привела к тому что он ввел в cells новое поняти - синапсы как он их называет.
Если у вас ситуация когда какое то значение очень быстро меняется, вы вместо непосредственной связи между двумя значениями, ставите туда специальный обьект синапс, в котором можно запоминать предыдущие значения переменной, и принимать решение стоит ли дергать связь и оповещать обьект.
А разница между этим подходом и подходом, когда объект, в котором можно запоминать предыдущие значения переменной, и принимать решение стоит ли дергать связь , будет сам устанавливать значение чего ему там надо, останется???
Если мне не изменяет память, -- а я вполне могу сейчас серьёзно ошибиться, -- в Smalltalk существует паттерн Value Holder, делающий что-то наподобие. Ещё раз повторю, я могу ошибаться, и прошу знающих людей поправить меня в таком случае.
№ 1465 08-11-2006 04:48 | |
Ответ на »сообщение 1454« (Jack Of Shadows)
___________________________
Например
var
x, y : integer
x := ?f: y+5;
После чего меняете значение y и наблюдаете как автоматом меняется значение x.
Вот такой вот своеобразный OnChange навешенный на простенький integer.
Вопрос. КАК cells узнает об изменении значения y?
№ 1464 08-11-2006 04:41 | |
сообщение от модератораОтвет на »сообщение 1463« (Артем)
___________________________
Ответ на »сообщение 1461« (Jack Of Shadows)
___________________________
Блин, пойду я лучше плюшками баловаться. <...>
P.S. Я улетаю, но обещаю вернуться. Когда будет настроение.
Лучше не возвращайтесь. Все ваши сообщения я буду удалять - можете считать, что заработали здесь пожизненный бан.
№ 1463 Удалено модератором | |
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|