Страница 2 из 4

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 27.04.2012 23:28
vovan
Гость писал(а):ок похоже на функциональные языки

но в принципе указатель на функцию и в Сях и в Паскале кажется можно было передавать. Просто этим мало кто пользовался.

А вообще похоже на натяжку старой концепции программирования (ООП) к новым реалиям (ФП). Так же, как и когда-то в C++, в императивный язык ввели элементы ООП... все эти полурешения не ахти как хороши.

Но видать тенденция в сторону ФП есть.
Тенденция ещё какая! Посмотри в сторону С++11. Например в VS2010 уже ввели labda. Можно посмотреть здесь.

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

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 28.04.2012 00:48
minimax
просто (наконец-то) пришло время, когда код надо писать быстро ;)

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 28.04.2012 02:05
Гость
vovan писал(а): Также на этом форуме практически нет прогеров.
10 лет назад, на предыдущей версии форума, их было подавляющее большинство :(

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 28.04.2012 02:34
minimax
Гость писал(а):
vovan писал(а): Также на этом форуме практически нет прогеров.
10 лет назад, на предыдущей версии форума, их было подавляющее большинство :(
да и сейчас их много, активность правда упала

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 30.04.2012 07:38
Andruha
Ну в C# все это есть уже года эдак с 2007. Ламбда и делегаты

Код: Выделить всё

string[] names = { "Hartono, Tommy", "Adams, Terry", 
                                 "Andersen, Henriette Thaulow", 
                                 "Hedlund, Magnus", "Ito, Shu" };

string firstLongName = names.FirstOrDefault(name => name.Length > 20);
где name => name.Length > 20 и есть передаваемый код

Или

Код: Выделить всё

 int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };

foreach (int number in numbers.Where((number, index) => number <= index * 10))
{
      Console.WriteLine(number);
}
(number, index) => number <= index * 10) передаваемый код

Передаваемый код это или анонимная функция как в примерах (ламбда синтаксис) или реальная фи-я.

типа:

Код: Выделить всё

 int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };

foreach (int number in numbers.Where(MySearch)
{
      Console.WriteLine(number);
}

bool MySearch(int number, int index)
{
   return number <= index * 10;
}




Все эти конструкции имеет свои недостатки, а именно - освоение такого языка требует времени

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 30.04.2012 10:15
vovan
Andruha писал(а):Ну в C# все это есть уже года эдак с 2007. Ламбда и делегаты
...
Все эти конструкции имеет свои недостатки, а именно - освоение такого языка требует времени
Проблема в том что этот код не совсем просто читать и иногда отлаживать.
Вот например поставь брейкпоинт здесь:

Код: Выделить всё

string firstLongName = names.FirstOrDefault(name => name.Length > 20);
для этого придётся добавлять скобки.

И вообще одно и золотых правил "одна строчка одно действие" неспроста придумали.
Можно весь код запихнуть в одну строчку, только соправождать его будет тяжело.

А для себя использую простое правило. Если ФП упрошает код или улучшает производительность то использую его. Иначе нехер выёбываится :D

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 02.05.2012 21:14
Гость
Освойте уже linq.

Мне понравилось функциональное программирование еще в питоне, но в скале глючноваты IDE и сама сложновата. А вот linq вроде бы то, что надо, правда, какого-то хуя замаскированное под SQL. Вообще все думаю перейти в явы на сисярп.

Насчет отладки - хз как оно там, а если еще и параллельно исполнятеся?

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 03.05.2012 09:21
vovan
Гость писал(а): Насчет отладки - хз как оно там, а если еще и параллельно исполнятеся?
Не отлажен -> не протестирован -> жук.

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 03.05.2012 10:51
Гость
С отладкой в ФП трудно. Точнее, с дебаггингом в привычном смысле. А отдельно функцию отлаживать и тестировать всегда можно, непривычно правда, требует некоторого навыка.

Re: Предикатная логика, функциональное программирование, Ска

Добавлено: 03.05.2012 11:50
Simple
Ваще-то должно быть наоборот. Функция ж всегда возвращает одно и то же значение.