powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
25 сообщений из 300, страница 1 из 12
Функциональное программирование
    #36429523
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, уже долгое время пытаюсь понять в чем суть и фишка направления под названием "функциональное программирование". Читаю форумы, качаю книги, но понять что это дает и на каких задачах можно получить выигрыш не понятно.
Что видно со стороны:
Все доки начинают объяснять про лямбда-исчисление, потом как правило излагается куча жуткой и непонятной математики. Проблема в том, что не объясняется, какой смысл определять функции вместо f(x,y) экзотичной записью /\ x.y. Пока для меня все это выглядит как не стандартный способ записи выражений, не более того. Экзотичная запись порождает экзотичные и нетривиальные записи простых выражений, часто упоминается некие правила интерпретации таких выражений и загадочное слова - карринг. Выглядит очень умно, но ни фига это все не понятно.

Фишка номер 2, нет циклов, вообще нет циклов. Все надо определять через рекурсивные функции. Меня еще в школе (начало 90-х) учили на уроках информатики, что рекурсия это плохо, ибо не понятно заранее насколько может быть глубина вызовов. В чем круть абстракции записывать все через рекурсию никто не объсняет.

Я могу понять, что если поменять взгляд на жизнь и перейти к новым абстракциям ее описывающим, то можно получить выигрыш в некоторых случаях. К сожалению, я не нашел пока ни одной книги, где-бы анализировался и описывалось преимущество решения задач в ФП-стиле перед императивным способом.
И самое главное, не вижу связи между ФП и декларативностью. SQL вот декларативен и обладая этим свойством имеет колоссальное преимущество в своей области перед более слабыми абстракциями типа прцедурным программированием и ООП парадигмой.

В общем просьба объяснить простым языком, в чем соль, ради чего это все надо и где зарыт профит.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429565
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фишка номер 1 т.н. "чистых" функциональных языков (в которых
в функциях не допускается побочных эффектов) в том,
что программу В ЛЮБОЕ ВРЕМЯ ВЫПОЛНЕНИЯ ГАРАНТИРОВАННО БЕЗОПАСНО
моно распараллелить. Т.е. у тебя был один поток выполнения --
мы делаем два потока, три и т.п. Это даёт ф.я. просто билет
в будущее, потому как одно из основных направлений IT сейчас --
развитие параллельных вычислений.

Но не все ФЯ чистые.

Фишка номер 2 любых ф.я. (и не чистых тоже) -- это функции
или алгоритмы высших порядков. Это -- возможности писать
алгоритмы, абстрагируясь от конкретных структур данных и
частностей. Но эта возможность используется вовсю уже
давно в других языках (не функциональных), например,
C или С++.

Ни номер 1, ни номер 2 принципиально ничего в общем
для ф.я. не даёт (н.1 даёт, но не для всех ф.я.).

Есть ещё другой аспект, третий, как правило, ф.я. --
мощные, удобные и простые языки программирования,
сложность только в постижении главных концепций.
На них просто и удобно программировать.

> И самое главное, не вижу связи между ФП и декларативностью. SQL вот
> декларативен и обладая этим свойством имеет колоссальное преимущество в

Не все функциональные языки декларативные.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429576
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old wrote:

К сожалению, я не нашел пока ни одной книги, где-бы
> анализировался и описывалось преимущество решения задач в ФП-стиле перед
> императивным способом.

ФП -- это не обязательно декларативное программирование.
А книги наверное надо искать среди книг по чистым ф.я.

> И самое главное, не вижу связи между ФП и декларативностью. SQL вот

Её и нет. ФЯ не обязан быть декларативным.

> декларативен и обладая этим свойством имеет колоссальное преимущество в
> своей области перед более слабыми абстракциями типа прцедурным
> программированием и ООП парадигмой.

Ну, чистые ф.я. имеют такие же преимущества (и недостатки) в некоторых
областях.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429682
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldвместо f(x,y) экзотичной записью /\ x.y.


Фактически, ты сам ответил на свой вопрос. В первом определении есть имя функции, а во втором нет. Чегтовски неудобно обращаться с функциями как с переменными, если они должны быть поименованы :( А в этом и заключается цель ФП :)

Ggg_old
Меня еще в школе (начало 90-х) учили на уроках информатики, что рекурсия это плохо, ибо не


Стоит забыть то чему учили в школе и подумать почему рекурсия плохо ??? Очевидно потому-что неконтролируемо жрет стек ? Но во первых в реализациях ФП языков стек устроен по другому (не аппаратный, а на куче), а во вторых хвостовая рекурсия может быть (а в некоторых языках должна быть) реализована как цикл. Видимо не всякая рекурсия это плохо ?

IMHO: вместо того чтобы акцентировать внимание на том, что ФП непривычно, следовало задать вопрос, ради чего весь сыр бор ?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429719
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldВ общем просьба объяснить простым языком, в чем соль, ради чего это все надо и где зарыт профит.
Я частично с тобой согласен. Я тоже ищу полезное применение для для языков lisp, haskell у себя на работе, но к сожалению не нахожу. Есть идеи применить haskell для анализа кучи трассировочных файлов Oracle, но здесь рациональная мысль борется с нерациональной. Ведь тот-же анализ я могу запрограммировать на java+antlr. И бог его знает, какое решение будет дешевле для меня реализовано.

На haskell я пока это не могу сделать. Не хватает знаний и опыта!

Подытоживая, скажу, что в ФП вроде-бы есть ВСЁ что надо джентльмену. Но только нет экономического обоснования применения ФП. Я когда-то поднимал ветку в Работе по этому вопросу и еще раз убедился в своей правоте. Рынка ФП-программистов у нас де-факто не существует.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429723
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Подытоживая, скажу, что в ФП вроде-бы есть ВСЁ что надо джентльмену. Но только нет экономического обоснования применения ФП.

Видимо по той причине, что джентельмены таких вопросов не задают ?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429746
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Видимо по той причине, что джентельмены таких вопросов не задают ?
Браво! После этого новичкам остаётся поверить в сущестование всемирного заговора ФП и поставить функциональщиков на уровень массонов и прочих ЕРЖ.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429752
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonGluk (Kazan)Видимо по той причине, что джентельмены таких вопросов не задают ?
Браво! После этого новичкам остаётся поверить в сущестование всемирного заговора ФП и поставить функциональщиков на уровень массонов и прочих ЕРЖ.

и кому от этого станет хуже ???
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429757
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне - ни холодно ни жарко.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36429762
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем это оффтоп. Давай будем в теме.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430007
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм, я бы не задавал этот вопрос если бы не одно но. Я использую один принцип, если не можешь понять что-то досконально, то наблюдай за людьми, которые в этом понимают и добиваются результата. Читать, что они пишут и думают. Так вот, интерес к ФП у меня начал появляться по результатам обзорам блогов по конкурсам IFCPC. Конкурсы эти не тривиальны, рассчитаны для очень нетривиальных программистов в правильно поставленными мозгами.
Дальнейшее изучение их статей, мыслей привело меня к выводу: эти ребята умнее на два порядка чем я, видят вперед индустрию на порядок дальше чем я. Так вот, практически все результатов на самых сложных и нетривиальных задачах добиваются именно применяя языки ФП. И есть в их среде мнение, что все задачи можно решить на huskell плюс некоторые куски на C. На крайняк - OCAML. Т.е. что-бы быть на острие прогресса надо владеть ФП+С.
Изучение причудливого синтаксиса ФП языка, в моем случае это был OCAML, не открыл для меня новые горизонты, т.к. я увидел отсутствие циклов, замысловатый способ записи функций и.т.д. Т.е. главное, что я не понял, это идеологию применения.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430015
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет абстракций, приведу пример. Переход в абстракции, это хорошо. Например, помню как нам рассказывали про Z-проеобразование. Если у вас возник затык, то есть такое прием: перейти в абстрактную алгебраическую форму, в ней решить равнение как линейное. И перейти из нее обратно (правда это не всегда возможно, если не сказать, что почти некогда ;). Вот это я понимаю польза абстракции - выпрыгнуть за границы реальности и тем самым найти решение.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430029
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думал, куда написать этот пост, либо в чуждый мне ru_declarative или в родной sql.ru Решил запоститься в родные пенаты, тут не страшно задать дурные вопросы. В ru_declarative уже познали ДАО и размышляют исключительно над коанами. Коаны для мене - overkill.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430056
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фишка номер 1 т.н. "чистых" функциональных языков (в которых
в функциях не допускается побочных эффектов) в том,
что программу В ЛЮБОЕ ВРЕМЯ ВЫПОЛНЕНИЯ ГАРАНТИРОВАННО БЕЗОПАСНО
моно распараллелить. Т.е. у тебя был один поток выполнения --
мы делаем два потока, три и т.п. Это даёт ф.я. просто билет
в будущее, потому как одно из основных направлений IT сейчас --
развитие параллельных вычислений.

Аж дух захватывает... Вот мне интересно, а зачем мне иметь возможность "В ЛЮБОЕ ВРЕМЯ ВЫПОЛНЕНИЯ ГАРАНТИРОВАННО БЕЗОПАСНО распараллелить" какую - либо функцию, которая реализует глубоко сермяжно последовательный алгоритм? Если единственное преимущество ф.я. с точки зрения распаралеливания вычислений состоит в том что они заставляют кодить потокобезопасные проги, то это несомненно круто, но вот заявлять что на этом основании это им даёт какой-то там билет в будущее - имхо перебор. Главные проблемы в этом направлении - минимизация последовательной части алгоритмов (бо закону Амдала глубоко перпендикулярно на каком языке написан код) и количество промахов по кэшу. Так что если затрагивать этот аспект, рассказали б лучше чем паралельные эипиай для ф.я. лучше птреадов, опенМП и МПАИ...
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430063
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old,

Вот, имхо думаю, что "чистое" ФП интересно больше тем, что егойные идеи постепенно перетекают в мейнстрим. Появляются "постфункциональные" ( (c) Одерский ) языки типа Scala и Nemerle, где можно писать вполне себе императивные программы. А можно применить принципы ФП и забыть про проблемы синхронизации потоков, mutable state, NullPointerException...
А заодно выкинуть из головы половину паттернов ООП, ибо более оные не требуются :)

/* субъективные впечатления после года писания на Scala */
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430078
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез, вы уже говорите коанами ;) SCALA - это lisp-подобный язык или я ошибаюсь?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430097
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldДиез, вы уже говорите коанами ;) SCALA - это lisp-подобный язык или я ошибаюсь?
Нее, скорее java++
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430176
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldИ есть в их среде мнение, что все задачи можно решить на huskell плюс некоторые куски на C. На крайняк - OCAML.
Если я не ошибаюсь, все задачи можно решить
на языке который обладает некой полнотой по Тьюрингу.
И поэтому к их мнению следует отнестись с некой долей
скепсиса. По крайней мере пока не пояснят почему. В
любом случае, это предмет спора.

Т.е. что-бы быть на острие прогресса надо владеть ФП+С.
Здесь - согласен. Изучение ФП языка подобно изучению
латыни или эсперанто перед погружением в иностранные
языки. В любом случае оно - полезно.

увидел отсутствие циклов, замысловатый способ записи функций и.т.д. Т.е. главное, что я не понял, это идеологию применения.
Будь осторожен! Отсутствие циклов еще не повод для
ломания стеретипов или ухода в иную веру. Кстати циклы
в Haskel и Lisp присутствуют и не возбороняются к приминению.

Короче, подходя к программной реализации вооружайся
скепсисом и думай как Одессит - "И шо я с этого буду иметь?"
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430188
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivФишка номер 1 т.н. "чистых" функциональных языков (в которых
в функциях не допускается побочных эффектов) в том,
что программу В ЛЮБОЕ ВРЕМЯ ВЫПОЛНЕНИЯ ГАРАНТИРОВАННО БЕЗОПАСНО
моно распараллелить. Т.е. у тебя был один поток выполнения --
мы делаем два потока, три и т.п. Это даёт ф.я. просто билет
в будущее, потому как одно из основных направлений IT сейчас --
развитие параллельных вычислений.
Мастер я рискну предположить, что на практике не так всё просто
и распараллеливание всего и вся еще не гарантирует быстрого
получения результата. Мне например не понятно, КТО и КАК будет
диспетчеризировать функции-процессы? На основании каких правил?
Нужно учитывать накладные расходы на ту-же мультизадачность.

"Столпы" программирования, такие как Дональд Кнут
говорят-де "для большего процента ПО параллелизм
не даёт ощутимых преимуществ" (очевидно имеют в виду свои
фундаментальные алгоритмические блоки). Маэстро Вирт даёт
очень нелестную оценку самой парадигме, заявляя что GC - это
вовсе не круто и отстой а чистота, при параллелизме имеет
очень небольшое преимущество и shared ресурсы всегда легко
идентифицировать в программе на императивном языке.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430196
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mayton:
Прямо в точку!
Выражение "В чем соль, ради чего это все надо и где зарыт профит." эквивалентно "И шо я с этого буду иметь?". Просто приходится делать скидку на то, что не всем повезло как мене жить в Одессе и излагать свои мысли столь пространным официальным русским языком ;)
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430296
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мастер я рискну предположить, что на практике не так всё просто
и распараллеливание всего и вся еще не гарантирует быстрого
получения результата. Мне например не понятно, КТО и КАК будет
диспетчеризировать функции-процессы? На основании каких правил?
Нужно учитывать накладные расходы на ту-же мультизадачность.


Насколько я знаю, диспатчеризацией занимается ОС, а вот декларация параллельности лежит на программисте.

Вот например в GPH оно делается вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
parfib :: Int -> Int
parfib  0  =  1 
parfib  1  =  1 
parfib n = nf2 `par` (nf1 `par` (nf1+nf2+ 1 ))
           where nf1 = parfib (n- 1 )
                 nf2 = parfib (n- 2 )

Где "x 'par' y" означает вычислить y при этом x вычислить параллельно

А вот так в F#

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
open System
open System.Net
open Microsoft.FSharp.Control.WebExtensions

let http url = 
    async { let req =  WebRequest.Create(Uri url) 
            use! resp = req.AsyncGetResponse()
            use stream = resp.GetResponseStream()
            use reader = new StreamReader(stream)
            let contents = reader.ReadToEnd()
            return contents }

let sites = ["http://www.bing.com"; 
             "http://www.google.com"; 
             "http://www.yahoo.com"; 
             "http://www.search.com"]

let htmlOfSites = 
    Async.Parallel [for site in sites -> http site ]
    |> Async.RunSynchronously

Лично я параллельным программированием не занимаюсь, а просто использую F# в качестве скриптового языка время от времени - мне нравится легкость синтаксиса и возможность комбинировать функции а также поддержка со стороны Visual Studio.

Еще фот как-то сделал и подключил к аксапте бьютифаер для SQL на parsec - это такая библиотека для написания парсеров на Haskell. Фишка в том, что грамматика описывается на том же языке, что и семантика и, соотвественно, можно использовать все богатство средств обобщения кода - выносить повторяющиеся правила в функции с параметрами и т.д.


Маэстро Вирт даёт
очень нелестную оценку самой парадигме, заявляя что GC - это
вовсе не круто и отстой а чистота, при параллелизме имеет
очень небольшое преимущество и shared ресурсы всегда легко
идентифицировать в программе на императивном языке.

Одно дело идентифицировать, другое - проверить формально и чтобы компилятор ругнулся.
А еще с функциональным кодом легче проводить всякие манипуляции - доказывать его свойства или, например, транслировать в SQL. Не даром LINQ сделал Эрик Майер, один из авторов Haskell. LINQ по сути, это воплощение концепции хаскелевской монады, сейчас еще из функциональных языков тащат функциональное реактивное программирование (Rx Framework).

В-общем, с моей точки зрения, стоит поковырять какой-нибудь чисто функциональный язык просто чтобы понять концепции. С использованием сложнее (если есть окружение со своими стандартами), но во-первых, всегда есть какие-то задачи, которые можно решать для себя.
Во-вторых, есть гибридные языки (scala, F#, nemerle), которые позволяют плавно интегрироваться распространенные среды (вот сегодня хороший пример нашел в блоге)

В-третьих, можно функционально писать на обычных языках, например на javascript это довольно легко.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430297
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Мастер я рискну предположить, что на практике не так всё просто
и распараллеливание всего и вся еще не гарантирует быстрого
получения результата. Мне например не понятно, КТО и КАК будет
диспетчеризировать функции-процессы? На основании каких правил?
Нужно учитывать накладные расходы на ту-же мультизадачность.


Насколько я знаю, диспатчеризацией занимается ОС, а вот декларация параллельности лежит на программисте.

Вот например в GPH оно делается вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
parfib :: Int -> Int
parfib  0  =  1 
parfib  1  =  1 
parfib n = nf2 `par` (nf1 `par` (nf1+nf2+ 1 ))
           where nf1 = parfib (n- 1 )
                 nf2 = parfib (n- 2 )

Где "x 'par' y" означает вычислить y при этом x вычислить параллельно

А вот так в F#

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
open System
open System.Net
open Microsoft.FSharp.Control.WebExtensions

let http url = 
    async { let req =  WebRequest.Create(Uri url) 
            use! resp = req.AsyncGetResponse()
            use stream = resp.GetResponseStream()
            use reader = new StreamReader(stream)
            let contents = reader.ReadToEnd()
            return contents }

let sites = ["http://www.bing.com"; 
             "http://www.google.com"; 
             "http://www.yahoo.com"; 
             "http://www.search.com"]

let htmlOfSites = 
    Async.Parallel [for site in sites -> http site ]
    |> Async.RunSynchronously

Лично я параллельным программированием не занимаюсь, а просто использую F# в качестве скриптового языка время от времени - мне нравится легкость синтаксиса и возможность комбинировать функции а также поддержка со стороны Visual Studio.

Еще фот как-то сделал и подключил к аксапте бьютифаер для SQL на parsec - это такая библиотека для написания парсеров на Haskell. Фишка в том, что грамматика описывается на том же языке, что и семантика и, соотвественно, можно использовать все богатство средств обобщения кода - выносить повторяющиеся правила в функции с параметрами и т.д.


Маэстро Вирт даёт
очень нелестную оценку самой парадигме, заявляя что GC - это
вовсе не круто и отстой а чистота, при параллелизме имеет
очень небольшое преимущество и shared ресурсы всегда легко
идентифицировать в программе на императивном языке.

Одно дело идентифицировать, другое - проверить формально и чтобы компилятор ругнулся.
А еще с функциональным кодом легче проводить всякие манипуляции - доказывать его свойства или, например, транслировать в SQL. Не даром LINQ сделал Эрик Майер, один из авторов Haskell. LINQ по сути, это воплощение концепции хаскелевской монады, сейчас еще из функциональных языков тащат функциональное реактивное программирование (Rx Framework).

В-общем, с моей точки зрения, стоит поковырять какой-нибудь чисто функциональный язык просто чтобы понять концепции. С использованием сложнее (если есть окружение со своими стандартами), но во-первых, всегда есть какие-то задачи, которые можно решать для себя.
Во-вторых, есть гибридные языки (scala, F#, nemerle), которые позволяют плавно интегрироваться распространенные среды (вот сегодня хороший пример нашел в блоге)

В-третьих, можно функционально писать на обычных языках, например на javascript это довольно легко.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430298
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извините за дубль
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430328
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С одной стороны ответ по-существу и спасибо за это, с другой стороны - то что вы продемонстрировали семантически очень похоже на директивы OpenMP для императивных C/C++ и Fortran:

#pragma omp parallel
#pragma omp for

и т.д. Так что в этом смысле говорить о билете в будущее параллельных вычислений именно для ф.я. всеж таки рановато...
...
Рейтинг: 0 / 0
Функциональное программирование
    #36430356
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приведенном коде на F# не видно ничего функционального. Обычный императивный код, только записанный необычным синтаксисом другого языка: "Для каждого элемента списка вызвать функцию такую-то, которая выполняет строгую последовательно операция".
...
Рейтинг: 0 / 0
25 сообщений из 300, страница 1 из 12
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]