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

vovan
Сообщения: 1521
Зарегистрирован: 22.09.2011 13:21
Род занятий: C++

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

Сообщение vovan »

Гость писал(а):ок похоже на функциональные языки

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

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

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

Только похоже что в ОСД в основном дремучие компиляторы используют. Также на этом форуме практически нет прогеров.
minimax
Сообщения: 6860
Зарегистрирован: 22.09.2011 20:04
Ник с it-ru.de: верифицирован
Где: РФ-ФРг

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

Сообщение minimax »

просто (наконец-то) пришло время, когда код надо писать быстро ;)
Аватара пользователя
Гость

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

Сообщение Гость »

vovan писал(а): Также на этом форуме практически нет прогеров.
10 лет назад, на предыдущей версии форума, их было подавляющее большинство :(
minimax
Сообщения: 6860
Зарегистрирован: 22.09.2011 20:04
Ник с it-ru.de: верифицирован
Где: РФ-ФРг

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

Сообщение minimax »

Гость писал(а):
vovan писал(а): Также на этом форуме практически нет прогеров.
10 лет назад, на предыдущей версии форума, их было подавляющее большинство :(
да и сейчас их много, активность правда упала
Аватара пользователя
Andruha
Сообщения: 22
Зарегистрирован: 11.10.2011 16:57
Где: Москва

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

Сообщение 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;
}




Все эти конструкции имеет свои недостатки, а именно - освоение такого языка требует времени
vovan
Сообщения: 1521
Зарегистрирован: 22.09.2011 13:21
Род занятий: C++

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

Сообщение vovan »

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

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

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

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

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

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

Сообщение Гость »

Освойте уже linq.

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

Насчет отладки - хз как оно там, а если еще и параллельно исполнятеся?
vovan
Сообщения: 1521
Зарегистрирован: 22.09.2011 13:21
Род занятий: C++

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

Сообщение vovan »

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

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

Сообщение Гость »

С отладкой в ФП трудно. Точнее, с дебаггингом в привычном смысле. А отдельно функцию отлаживать и тестировать всегда можно, непривычно правда, требует некоторого навыка.
Аватара пользователя
Simple
Сообщения: 8678
Зарегистрирован: 28.09.2011 10:46
Ник с it-ru.de: верифицирован
Где: Питер - Ганновер
Род занятий: Программизд
Интересы: бильярд, бокс, кулинария

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

Сообщение Simple »

Ваще-то должно быть наоборот. Функция ж всегда возвращает одно и то же значение.
Is this your homework, Larry? (c)
Ответить