Re[19]: Swift
От: alex_public  
Дата: 12.06.14 22:38
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Понял. То есть речь просто о сахаре для вызовов цепочек функций.


Ну там не только для организации цепочки, но и ещё нескольких близких нюансов.

ARK>Тогда зачем же притягивать целый ФЯ?


Ну так в этих ФЯ это есть из коробоки, а скажем в C++ нет. ))) Другое дело, что скажем взяв соответствующую библиотеку (например такую https://github.com/beark/ftl) мы легко получим подобное и в C++... Но сторонники всяческих маргинальных языков обычно игнорируют этот аргумент. )))
Re[20]: Swift
От: alex_public  
Дата: 12.06.14 22:46
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>А как ты думаешь это всё работает унутре ? Этот 'просто сахар' внятной поддержки компилятора, рантайма и фремворка. В частности, нужны толковые структуры данных. Кроме того обязательно требуются замыкания. Замыкания для полноценной реализации требуют GC. Опаньки !


Вот не надо повторять везде этот миф, что типа для замыканий обязательно нужен сборщик мусора.
Re[19]: Swift
От: vdimas Россия  
Дата: 13.06.14 09:24
Оценка: +3
Здравствуйте, AlexRK, Вы писали:

ARK>А без аналогий можете пояснить, что в моем случае не так?


Отсутствует абстракция. Тело твоего "комбинатора" комбинирует заведомо известные ф-ии. Надо, чтобы он умел комбинировать ф-ии, поданные как аргументы.
Re[22]: Swift
От: vdimas Россия  
Дата: 13.06.14 09:26
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>GC и замыкания это 90% от ФЯ Замыкания нужны для комбинирования функций.


Для комбинирования не нужны ни разу.
Re[11]: Swift
От: vdimas Россия  
Дата: 13.06.14 09:33
Оценка:
Здравствуйте, Ikemefula, Вы писали:

V>>Так и есть. Для одного из самых убогих языков — Джавы, серьезная инфраструктура появилась одной из первых.

I>"одной из первых" — смеялся. Эдак окажется, что до джавы жизни вообще не было.

Настолько всеобъемлющая инфраструктура была только для COM/DCOM/COM+/ActiveX/OLE. Но степень удобства для разработки была намного ниже, разве что на VB/VBA неплохо получалось в плане удобства. Но на этом языке невозможно было выразить и/или использовать все возможности низлежащей платформы.

Та же CORBA отставала и оч сильно. Ну и всё, собсно. Среды для Smalltalk, Forth, ObjectPascal были намного попроще и намного `уже по покрытию прикладных областей "изкаробки".
Re[23]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.06.14 11:44
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>GC и замыкания это 90% от ФЯ Замыкания нужны для комбинирования функций.


V>Для комбинирования не нужны ни разу.


Ога.
Re[21]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.06.14 11:44
Оценка: +2 -3
Здравствуйте, alex_public, Вы писали:

I>>А как ты думаешь это всё работает унутре ? Этот 'просто сахар' внятной поддержки компилятора, рантайма и фремворка. В частности, нужны толковые структуры данных. Кроме того обязательно требуются замыкания. Замыкания для полноценной реализации требуют GC. Опаньки !


_>Вот не надо повторять везде этот миф, что типа для замыканий обязательно нужен сборщик мусора.


Не надо называть костыли в С++ замыканиями и все будет хорошо.
Re[22]: Swift
От: vdimas Россия  
Дата: 13.06.14 18:41
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Не надо называть костыли в С++ замыканиями и все будет хорошо.


При чём тут С++? Для иммутабельных замыканий GC не нужен ни разу, т.к. сразу отсутствует требование передачи контекста по ссылке.
Re[23]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.06.14 19:09
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>Не надо называть костыли в С++ замыканиями и все будет хорошо.


V>При чём тут С++? Для иммутабельных замыканий GC не нужен ни разу, т.к. сразу отсутствует требование передачи контекста по ссылке.


GC нужен для upward funarg
Re[24]: Swift
От: vdimas Россия  
Дата: 14.06.14 07:11
Оценка:
Здравствуйте, Ikemefula, Вы писали:

V>>При чём тут С++? Для иммутабельных замыканий GC не нужен ни разу, т.к. сразу отсутствует требование передачи контекста по ссылке.

I>GC нужен для upward funarg

Еще раз по-русски.
Это только для мутабельных сценариев.
Re[25]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 14.06.14 11:19
Оценка:
Здравствуйте, vdimas, Вы писали:

V>>>При чём тут С++? Для иммутабельных замыканий GC не нужен ни разу, т.к. сразу отсутствует требование передачи контекста по ссылке.

I>>GC нужен для upward funarg

V>Еще раз по-русски.

V>Это только для мутабельных сценариев.

Покажи кодом.
Re[22]: Swift
От: alex_public  
Дата: 14.06.14 11:54
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Не надо называть костыли в С++ замыканиями и все будет хорошо.


А какие к ним претензии? )
Re[24]: Swift
От: alex_public  
Дата: 14.06.14 12:59
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>GC нужен для upward funarg


Ерунда это. Можно обсуждать только вопросы эффективности (по быстродействию) решения, а само оно есть в любом языке с возможностью написания функторов (в терминологии C++).

Для решения же проблемы быстродействия (т.е. грубо говоря копирования больших кусков данных) возможны различные решения, типа дополнительных лёгковесных контейнеров, автоматического подсчёта ссылок и т.п. Но скажем в C++ с появлением move semantics в последней версии стандарта про проблему быстродействия можно смело забывать... )))
Re[25]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 14.06.14 13:09
Оценка:
Здравствуйте, alex_public, Вы писали:

I>>GC нужен для upward funarg


_>Ерунда это. Можно обсуждать только вопросы эффективности (по быстродействию) решения, а само оно есть в любом языке с возможностью написания функторов (в терминологии C++).


Вот видишь, о чем и речь — ты смотришь исключительно с т.з. быстродействия, но почему то считаешь, что и другие делают тоже самое.

_>Для решения же проблемы быстродействия (т.е. грубо говоря копирования больших кусков данных) возможны различные решения, типа дополнительных лёгковесных контейнеров, автоматического подсчёта ссылок и т.п. Но скажем в C++ с появлением move semantics в последней версии стандарта про проблему быстродействия можно смело забывать... )))


Так себе решение.
Re[26]: Swift
От: alex_public  
Дата: 14.06.14 15:06
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Вот видишь, о чем и речь — ты смотришь исключительно с т.з. быстродействия, но почему то считаешь, что и другие делают тоже самое.


Так если забыть о быстродействие, то как бы и вообще проблем нет — просто все нужные данные тупо копируются в возвращаемый функциональный объект.

Или может ты какие-то ещё проблемы укажешь? )
Re[27]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.06.14 08:33
Оценка:
Здравствуйте, alex_public, Вы писали:
_>Или может ты какие-то ещё проблемы укажешь? )

Покажи, где и как освобождать память.
Re[26]: Swift
От: vdimas Россия  
Дата: 15.06.14 09:08
Оценка:
Здравствуйте, Ikemefula, Вы писали:

V>>>>При чём тут С++? Для иммутабельных замыканий GC не нужен ни разу, т.к. сразу отсутствует требование передачи контекста по ссылке.

I>>>GC нужен для upward funarg

V>>Еще раз по-русски.

V>>Это только для мутабельных сценариев.

I>Покажи кодом.


Что тебе даст код?

#include <boost/assign.hpp>

int main(int argc, char* argv[])
{
    using namespace std;
    using namespace boost::assign;

    vector<int> vec;
    vec += 10, 2, 31, 15, -5, 42;

    int max = 15;

    // по значению
    sort(vec.begin(), vec.end(), [=](int lhs, int rhs) {
        return lhs < rhs && rhs < max;
    });

    // по ссылке
    sort(vec.begin(), vec.end(), [&](int lhs, int rhs) {
        return lhs < rhs && rhs < max;
    });

    return 0;
}


В первом случае замыкание можно безопасно сохранить во внешнем контексте, во втором — нет.

Тебе этот код помог? ))
Для понимания рассуждений надо было сообразить, что в иммутабельном сценарии становится не важно, как передаются данные — по ссылке или по-значению. А код тут только мешает.
Re[26]: Swift
От: vdimas Россия  
Дата: 15.06.14 09:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

_>>Ерунда это. Можно обсуждать только вопросы эффективности (по быстродействию) решения, а само оно есть в любом языке с возможностью написания функторов (в терминологии C++).

I>Вот видишь, о чем и речь — ты смотришь исключительно с т.з. быстродействия, но почему то считаешь, что и другие делают тоже самое.

Ну да. Поэтому ты пользуешься ГЦ, а другие коллеги не могут себе позволить этой роскоши.


_>>Для решения же проблемы быстродействия (т.е. грубо говоря копирования больших кусков данных) возможны различные решения, типа дополнительных лёгковесных контейнеров, автоматического подсчёта ссылок и т.п. Но скажем в C++ с появлением move semantics в последней версии стандарта про проблему быстродействия можно смело забывать... )))


I>Так себе решение.


Явная передача владения — это не так себе. Это нечто близкое к происходящему при передаче владения в uniqueness-типах.
Re[28]: Swift
От: vdimas Россия  
Дата: 15.06.14 09:14
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Покажи, где и как освобождать память.


)))
Покажи, где и как освобождать память для value-type в дотнет?
Re[27]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.06.14 09:18
Оценка:
Здравствуйте, vdimas, Вы писали:

V>>>>>При чём тут С++? Для иммутабельных замыканий GC не нужен ни разу, т.к. сразу отсутствует требование передачи контекста по ссылке.

I>>>>GC нужен для upward funarg

V>Что тебе даст код?


Ты показал downward, а надо было upward
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.