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

Moderator: Little Muk

vovan
Posts: 1513
Joined: 22 Sep 2011, 13:21

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

Post by vovan »

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

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

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

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

Только похоже что в ОСД в основном дремучие компиляторы используют. Также на этом форуме практически нет прогеров.
minimax
Posts: 6860
Joined: 22 Sep 2011, 20:04
ник с it-ru.de: верифицирован
Location: РФ-ФРг

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

Post by minimax »

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

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

Post by Guest »

vovan wrote: Также на этом форуме практически нет прогеров.
10 лет назад, на предыдущей версии форума, их было подавляющее большинство :(
minimax
Posts: 6860
Joined: 22 Sep 2011, 20:04
ник с it-ru.de: верифицирован
Location: РФ-ФРг

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

Post by minimax »

Гость wrote:
vovan wrote: Также на этом форуме практически нет прогеров.
10 лет назад, на предыдущей версии форума, их было подавляющее большинство :(
да и сейчас их много, активность правда упала
User avatar
Andruha
Posts: 22
Joined: 11 Oct 2011, 16:57
Location: Москва

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

Post by Andruha »

Ну в C# все это есть уже года эдак с 2007. Ламбда и делегаты

Code: Select all

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 и есть передаваемый код

Или

Code: Select all

 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) передаваемый код

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

типа:

Code: Select all

 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
Posts: 1513
Joined: 22 Sep 2011, 13:21

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

Post by vovan »

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

Code: Select all

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

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

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

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

Post by Guest »

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

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

Насчет отладки - хз как оно там, а если еще и параллельно исполнятеся?
vovan
Posts: 1513
Joined: 22 Sep 2011, 13:21

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

Post by vovan »

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

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

Post by Guest »

С отладкой в ФП трудно. Точнее, с дебаггингом в привычном смысле. А отдельно функцию отлаживать и тестировать всегда можно, непривычно правда, требует некоторого навыка.
User avatar
Simple
Posts: 8678
Joined: 28 Sep 2011, 10:46
ник с it-ru.de: верифицирован
Location: Питер - Ганновер

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

Post by Simple »

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