|
|
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Люди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:32 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi, где ты в С нашёл делегаты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:38 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ИзопропилDaniilSeryi, где ты в С нашёл делегаты? Указатель на функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:43 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
YesSqlУказатель на функцию. никогда делегатом не назывался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:46 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ИзопропилDaniilSeryi, где ты в С нашёл делегаты?Указатель на функцию. Нубы в ужасе от синтаксиса) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:48 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ИзопропилDaniilSeryi, где ты в С нашёл делегаты? Не в самом C, а в C-подобных. В C# делегаты есть, в Java тоже что-то похожее есть. Вот вопрос - на фига? Почитал в интернете - впечатление такое складывается - "есть класс, у класса есть методы. Нормальный человек вызывает метод класса напрямую, программист C# для вызова метода класса зачем-то использует делегат, который зачастую по размеру кода больше, чем весь класс." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:49 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЗимарглИзопропилDaniilSeryi, где ты в С нашёл делегаты?Указатель на функцию. Нубы в ужасе от синтаксиса) Смотрю на синтаксис C# - так тошно, что хочется бл%€$ть. А тут ещё и делегаты какие-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 22:51 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiВот вопрос - на фига? чтоб вывести тебя из душевного равновесия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 23:18 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiСмотрю на синтаксис C# - так тошно, что хочется бл%€$ть. никто не запрещает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 23:18 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiВ C# делегаты есть, в Java тоже что-то похожее есть случайно не с лямбдами попутал? они много где есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2015, 23:19 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Такой эффект отвращения может первое время вызывать переменная делегата , ссылающаяся на анонимный блок лямбда-выражения, тоже вначале блевал, потом понравилось! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 07:54 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
а что такое делегат ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 08:00 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа что такое делегат ? https://ru.wikipedia.org/wiki/Делегат_(программирование) авторДелегат (англ. delegate) — структура данных, указывающая на методы (статические или экземпляра класса) в .NET Framework[1][2][3][4]. Делегаты используются, в частности, для определения прототипа функции обратного вызова, например, в событийной модели .NET Framework. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 08:14 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
А зачем это нужно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 08:22 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryА зачем это нужно ? зачем нужны callback'и? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 08:31 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Интересно, какая реакция у ТСа будет на Хаскель, ну или на общую алгебру и матан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 09:28 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryА зачем это нужно ?Например для вычисления определенного интеграла с заданной точностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 09:33 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercuryА зачем это нужно ? зачем нужны callback'и? Возможность передавать функции в качестве параметров других функций? Вы это имеете ввиду ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 09:35 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryИзопропилпропущено... зачем нужны callback'и? Возможность передавать функции в качестве параметров других функций? Вы это имеете ввиду ?Это называется фунции высших порядков. Да, это одно из наиболее важных применений делегатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 09:38 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiПочитал в интернете - впечатление такое...Вам надо еще про замыкание и каррирование почитать. Только под чьим-нибудь присмотром :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 09:41 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANASashaMercuryпропущено... Возможность передавать функции в качестве параметров других функций? Вы это имеете ввиду ?Это называется фунции высших порядков. Да, это одно из наиболее важных применений делегатов. В математике это называется функционалами. Ну да ладно. Зачем нужна возможность использования функции в качестве параметров других функций мне понятно, а делегаты это что ? Более общий случай. Только не отправляйте мне ссылку на w пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 09:43 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANAИнтересно, какая реакция у ТСа будет на Хаскель, ну или на общую алгебру и матан. Кусок кода на Хаскеле можно? Если что - туалет рядом, добежать успею. Что до общей алгебры и мат.анализа - по идее, должен быть иммунитет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 10:44 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercuryА зачем это нужно ? зачем нужны callback'и? А зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 10:45 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? Про Паскаль ты гонишь, ты на нем не рос, да и вообще программирование это не твое. 13. Процедурные типы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 10:52 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi Кусок кода на Хаскеле можно? Можно, быстрая сортировка например. Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 10:58 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВDaniilSeryiКусок кода на Хаскеле можно? Можно, быстрая сортировка например. Код: c# 1. 2. какая гадость... Как это расшифровывается-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 11:25 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? deligate по Паскалю - это список обратных вызовов(Callback). Ключевое слово - список. В Паскале подписаться на событие(например OnCreate) может только один подписчик, присвоив Код: pascal 1. 2. 3. В C# подписаться на аналогичное событие может сразу несколько подписчиков. Причём выполнятся они будут последовательно. Более того - в C# делигату можно сказать, что бы он выполнил список процедур асинхронно(.Invoke). А в переводе на Паскаль это выглядело бы примерно так: Код: pascal 1. 2. 3. 4. 5. DaniilSeryiСмотрю на синтаксис C# - так тошно, что хочется бл%€$ть. В принципе - ДА :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 11:32 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiКак это расшифровывается-то? А это не нужно расшифровывать, это изложение алгоритма практически литературным языком, в том и прелесть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 11:37 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiЕвгенийВпропущено... Можно, быстрая сортировка например. Код: c# 1. 2. какая гадость... Как это расшифровывается-то? Че не понятного то? 1. Для пустого писка - результат пустой список. 2. Для не пустого, склеиваем рекурсивно отсортированные все элементы меньше головы + голова + все элементы рекурсивно отсортированные больше головы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 11:42 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Valery_BDaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? deligate по Паскалю - это список обратных вызовов(Callback). Ключевое слово - список. В Паскале подписаться на событие(например OnCreate) может только один подписчик, присвоив Код: pascal 1. 2. 3. В C# подписаться на аналогичное событие может сразу несколько подписчиков. Причём выполнятся они будут последовательно. Более того - в C# делигату можно сказать, что бы он выполнил список процедур асинхронно(.Invoke). А в переводе на Паскаль это выглядело бы примерно так: Код: pascal 1. 2. 3. 4. 5. DaniilSeryiСмотрю на синтаксис C# - так тошно, что хочется бл%€$ть. В принципе - ДА :) Это называется: - "найди сто ошибок в моем посте?" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 11:43 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryskyANAпропущено... Это называется фунции высших порядков. Да, это одно из наиболее важных применений делегатов. В математике это называется функционалами. Ну да ладно. Зачем нужна возможность использования функции в качестве параметров других функций мне понятно, а делегаты это что ? Более общий случай. Только не отправляйте мне ссылку на w пожалуйстаИногда функции высшего порядка называют функционалами, хотя это не совсем верно, более точный эквивалент - оператор. Делегат задает определение функционального типа (класса) данных. Экземплярами класса являются функции. Описание делегата в языке C# представляет собой описание еще одного частного случая класса. Каждый делегат описывает множество функций с заданной сигнатурой. Каждая функция (метод), сигнатура которого совпадает с сигнатурой делегата, может рассматриваться как экземпляр класса, заданного делегатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 12:22 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Все богатство LINQ и лямбда в C# в одной фразе )) new Control[]{textbox1,button1,button2,button3}.ToList().ForEach(x=>x.Enabled = false); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 12:37 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
AdxВсе богатство LINQ и лямбда в C# в одной фразе )) new Control[]{textbox1,button1,button2,button3}.ToList().ForEach(x=>x.Enabled = false);Г какое-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 12:43 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANAГ какое-то :) Не без этого ;) Не все же стандартные библиотеки дублировать ;) Ну а серьезно, в C# много классов и функций используют делегаты. Это реально удобно. Пока не привыкнешь, конечно реакция похожая. Но тут уж : "Вы не любите кошек? Вы просто не умеете их готовить!" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 12:54 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Делегаты в C# представляют собой экземпляры специального класса, который содержит в себе информацию о некотором методе и позволяет вызвать этот метод. Если быть точнее, то в общем случае на цепочку методов с определенной сигнатурой (см. Delegate и MulticastDelegate). Компилятор знает о делегатах и предоставляет синтаксический сахар, так как механизм делегатов задействован в некоторых конструкциях языка. 1. Реализация событий. 2. Реализация функций обратного вызова, в том числе при работе с неуправляемым кодом. 3. Реализация запуска новых потоков (один из вариантов, исторически первый). 4. Асинхронный запуск функций посредством предопределенных методов Begin/EndInvoke. 5. Реализация лямбда выражений. 6. Делегаты могут быть обобщенными. 7. Начиная с 4.0 версии .NET, параметры обобщенных делегатов могут быть ко/контрвариантными. 8. Так же делегаты могут выступать параметрами и возвращаемыми значениями функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:28 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? Затем, что сначала теоретики кричат "указатели сакс", а потом оказывается, что без них очень хреново. И начинают придумывать функторы, делегаты и всякую прочую муть, которая позволяет замаскировать понятие "указатель". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:36 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarerИ начинают придумывать функторы, делегаты и всякую прочую муть, которая позволяет замаскировать понятие "указатель". никакой связи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:50 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryskyANAпропущено... Это называется фунции высших порядков. Да, это одно из наиболее важных применений делегатов. В математике это называется функционалами. Ну да ладно. Зачем нужна возможность использования функции в качестве параметров других функций мне понятно, а делегаты это что ? Более общий случай. Только не отправляйте мне ссылку на w пожалуйстаУказатель на метод объекта. В отличие от указателя на функцию, привязан к некоторому экземпляру объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:51 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarerDaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? Затем, что сначала теоретики кричат "указатели сакс", а потом оказывается, что без них очень хреново. И начинают придумывать функторы, делегаты и всякую прочую муть, которая позволяет замаскировать понятие "указатель". Чушь. Просто в .NET лямбды реализуются посредством делегатов, которые в очередь можно назвать с некоторой натяжкой типизированным указателем на функцию. в lisp или haskel отродясь никаких указателей не было, как и в JavaScript например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:51 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
BarloneУказатель на метод объекта. В отличие от указателя на функцию, привязан к некоторому экземпляру объекта. Приспокойно можно сделать так. Код: c# 1. Где тут экземпляр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:55 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Наброшу... Многие из функций операционной системы Windows, входящие в состав Win API 32, требуют при своем вызове задания callback - функций. Примером может служить работа с объектом операционной системы Timer. Конструктор этого объекта является функцией высшего порядка, и ей в момент создания объекта необходимо в качестве параметра передать callback - функцию, вызываемую для обработки событий, которые поступают от таймера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 14:58 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВЧушь. Просто в .NET лямбды реализуются посредством делегатов, Насколько я помню, делегаты в .NET появились прежде лямбд. ЕвгенийВв lisp или haskel отродясь никаких указателей не было, Делегатов в lisp тоже отродясь не было. Может, конечно, сейчас и добавили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:01 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Так лисповая лямбда и не делегат, она контекст захватывает. Если подыскивать аналог, это скорее анонимный класс с полями данных и одним методом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:08 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Valery_BВ Паскале подписаться на событие(например OnCreate) может только один подписчик, присвоив Form1.OnCreate:=DoFormCreate; Насколько я помню, в восьмой что ли дельфе (которую делали для .NET) добавили множественную подписку. Но поскольку вещь малоактуальная, развития она не получила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:08 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
RWolf, так я и намекаю Евгению, что он в своей риторике несколько увлёкся и побежал в сторону от делегатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:10 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВBarloneУказатель на метод объекта. В отличие от указателя на функцию, привязан к некоторому экземпляру объекта. Приспокойно можно сделать так. Код: c# 1. Где тут экземпляр?Ну хорошо. Делегат может ссылаться на метод экземпляра объекта, а может и на статический или анонимный метод. Ок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:15 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Barlone, А может и как сферический конь в вакууме. Код: c# 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 15:28 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Ещё наброшу... Пусть F - функция высшего порядка с параметром G функционального типа. Тогда функцию G , задающую параметр (а иногда и саму функцию F ), называют функцией обратного вызова ( callback функцией). Термин вполне понятен. Если в некотором внешнем слое функция Q вызывает функцию внутреннего слоя F , то предварительно во внешнем слое следует позаботиться о создании функции G , которая и будет передана F . Таким образом, функция Q внешнего слоя вызывает функцию F внутреннего слоя, которая, в свою очередь (обратный вызов) вызывает функцию G внешнего слоя. Чтобы эта техника работала, должен быть задан контракт. Функция высших порядков, написанная во внутреннем слое, задает следующий контракт: "всякая функция, которая собирается меня вызвать, должна передать мне функцию обратного вызова, принадлежащую определенному мной функциональному классу, следовательно, иметь известную мне сигнатуру". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 17:06 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
До кучи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2015, 17:24 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANAЕщё наброшу... Пусть F - функция высшего порядка с параметром G функционального типа. Тогда функцию G , задающую параметр (а иногда и саму функцию F ), называют функцией обратного вызова ( callback функцией). Термин вполне понятен. Если в некотором внешнем слое функция Q вызывает функцию внутреннего слоя F , то предварительно во внешнем слое следует позаботиться о создании функции G , которая и будет передана F . Таким образом, функция Q внешнего слоя вызывает функцию F внутреннего слоя, которая, в свою очередь (обратный вызов) вызывает функцию G внешнего слоя. Чтобы эта техника работала, должен быть задан контракт. Функция высших порядков, написанная во внутреннем слое, задает следующий контракт: "всякая функция, которая собирается меня вызвать, должна передать мне функцию обратного вызова, принадлежащую определенному мной функциональному классу, следовательно, иметь известную мне сигнатуру". Это в целом понятно, спасибо. Не могли бы вы привести пример, на котором было бы видно чёткую разницу между слоями, пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 01:58 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercury, выше пример про таймер не канает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 05:36 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANA, я плохо понял тот пример. Можно ли привести пример на уровне программного кода, где будет чётко видно разницу между так называемыми "слоями"? Ваше объяснение хорошее, но я представлял это на уровне того, что некоторая функция высшего порядка принимает другие функции, например, функция бинарного поиска может принимать различные функции сравнения элементов(искать по длине строки, либо сравнивать лексикографически). Вы привели хорошее объяснение на русском языке почему возможные функции параметры называются функциями обратного вызова, и в данном объяснении присутствуют так называемые "уровни", потому мне не очень понятно как это работает на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 06:11 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryнапример, функция бинарного поиска может принимать различные функции сравнения элементов(искать по длине строки, либо сравнивать лексикографически)это не про callback, это про "вычисление интеграла" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 06:28 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Хотя можно считать функцию бинарного поиска и функцию вычисления интеграла внутренним слоем (базовый функционал), а то, где определены функции сравнения и подынтегральные функции, внешними слоями (расширяющий функционал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 06:42 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANAХотя можно считать функцию бинарного поиска и функцию вычисления интеграла внутренним слоем (базовый функционал), а то, где определены функции сравнения и подынтегральные функции, внешними слоями (расширяющий функционал). Но если все эти функции определены (полностью описан алгоритм данных конкретных функций) в одной единице трансляции, то все эти функции будут находиться в одной глобальной области видимости. Разве не так ? Тогда о каких слоях идёт речь ? О том что вызов функции идёт через параметр в теле функции высшего порядка с локальной областью видимости ? В этом дело ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 06:47 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Тут неплохой пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 06:48 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryskyANAХотя можно считать функцию бинарного поиска и функцию вычисления интеграла внутренним слоем (базовый функционал), а то, где определены функции сравнения и подынтегральные функции, внешними слоями (расширяющий функционал). Но если все эти функции определены (полностью описан алгоритм данных конкретных функций) в одной единице трансляции, то все эти функции будут находиться в одной глобальной области видимости. Разве не так ?С чего вдруг? Давайте рассмотрим очевидную альтернативу в ОО стиле: наследование и полиморфизм. В этом случае функции определяются как переопределение методов базового класса. Но разве наследники обязаны быть в одной области видимости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 08:09 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANA, подождите, мы ведь не закончили с предыдущим примером. одна функция будет сравнивать длины строк, а другая сравнивать строки лексикографически. Здесь разные "уровни" о которых вы говорите в том смысле, что описание strcmp находится в string.cpp, а это другая область видимости. Правильно ли я вас понял ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 08:45 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercury, я нигде не писал, что функции сравнения должны быть собраны именно в одном месте, если Вы об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 09:01 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANASashaMercury, я нигде не писал, что функции сравнения должны быть собраны именно в одном месте... Вот. В том то и дело что вы говорите о некоторых разных слоях skyANAПусть F - функция высшего порядка с параметром G функционального типа. Тогда функцию G, задающую параметр (а иногда и саму функцию F), называют функцией обратного вызова (callback функцией). Термин вполне понятен. Если в некотором внешнем слое функция Q вызывает функцию внутреннего слоя F, то предварительно во внешнем слое следует позаботиться о создании функции G, которая и будет передана F. Таким образом, функция Q внешнего слоя вызывает функцию F внутреннего слоя, которая, в свою очередь (обратный вызов) вызывает функцию G внешнего слоя. Чтобы эта техника работала, должен быть задан контракт. Функция высших порядков, написанная во внутреннем слое, задает следующий контракт: "всякая функция, которая собирается меня вызвать, должна передать мне функцию обратного вызова, принадлежащую определенному мной функциональному классу, следовательно, иметь известную мне сигнатуру". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 09:10 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Архитектурные слои имелись в виду. Пользовательский код, вызывающий SetTimer, и библиотека WinAPI, этот таймер реализующая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 10:15 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа что такое делегат ? список указателей на функции. одно из применений - для подсовывания разных обработчиков к событиям есть тип делегат, есть поле класса либо переменная описанная типом делегат (это собственно и есть список), есть метод, указатель на который добавляется либо убирается из переменной типа делегат (из списка) апд в сишарпе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 10:56 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
начинать понимать, как использовать, имхо, лучше с обработчиков нажатия на кнопки, а не с функций высших порядков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:01 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
пример по передаче функции Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:07 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
tchingizначинать понимать, как использовать, имхо, лучше с обработчиков нажатия на кнопки, Там очень трудно ответить на вопрос "нафига всё это уродство вместо простого указателя на функцию". Да и слово callback, которое любят употреблять, окончательно теряет смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:10 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarerDaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? Затем, что сначала теоретики кричат "указатели сакс", а потом оказывается, что без них очень хреново. И начинают придумывать функторы, делегаты и всякую прочую муть, которая позволяет замаскировать понятие "указатель". я бы попросил не катить бочку на Люка Карделли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:11 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarertchingizначинать понимать, как использовать, имхо, лучше с обработчиков нажатия на кнопки, Там очень трудно ответить на вопрос "нафига всё это уродство вместо простого указателя на функцию". Да и слово callback, которое любят употреблять, окончательно теряет смысл. Ага. а кому сейчас легко? Лично я думаю, затем, чтобы разработчики сишарпа смогли отчитаться перед менеджером проекта что в языке сишарп нет указателей на функцию. Их (разработчиков) на работу наняли и сказали избавится от указателей (деструкторов) - они избавились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:13 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarertchingizначинать понимать, как использовать, имхо, лучше с обработчиков нажатия на кнопки, Там очень трудно ответить на вопрос "нафига всё это уродство вместо простого указателя на функцию". Да и слово callback, которое любят употреблять, окончательно теряет смысл. прибилизительно также тяжело как ответить на вопрос зачем слово тарелька пишется без мягкого знака, а слово сол с мягким знаком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 11:15 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВПриспокойно можно сделать так. Код: c# 1. Где тут экземпляр? Т.е. как это где? А sin - не экземпляр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 12:36 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiЛюди, объясните нормальному человеку, выросшему на Pascale, QBasice и VBA, зачем в C-подобных языках придумали такое уродство, как делегаты? В C и даже в С++ нет делегатов, делегаты придумали в C#, и только там они используются и называются таким образом. Если ты вырос на Pascale, QBasice и VBA, то ты УЖЕ ТОЛЬКО ПОЭТОМУ НЕНОРМАЛЬНЫЙ человек (точнее, человек-то ты наверняка нормальный, но программист -- нет), поэтому объяснять тебе, зачем нужны делегаты, в общем, бессмысленно. Но если хочешь -- изволь. В конце концов, надежда всегда есть. Делегаты нужны для того, чтобы функции (т.е. код) в языке стали первоклассными объектами. Это -- термин. Означает, что с фукнциями можно поступать так же, как и с другими объектами языка. Класть их в структуры данных, передавать как параметры, распечатывать и т.п. -- всё, что можно делать с другими объектами языка. Т.е. функции будут данными, код -- это данные. Далее последует вопрос, ЗАЧЕМ это нужно. Логично, отвечаю -- чтобы иметь возможность в языке реализовать алгоритмы высших порядков или функции высших порядков (взаимозаменяемые термины). Зачем нужны функции высших порядков ? Очень просто -- они очень сильно повышают мощность и выразительность языка. Т.е. за меньшее время и меньшими усилиями ты можешь на языке сделать больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 12:43 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа что такое делегат ? По сути -- указатель на функцию, возможно с дополненный какими-то дополнительными данными, передаваемыми при вызове фукнции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 12:45 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ТС похоже слился уже из топика...А я то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 12:47 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Это с каких же пор начавшие с бейсика/паскаля перестали быть нормальными программистами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:52 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
RWolfЭто с каких же пор начавшие с бейсика/паскаля перестали быть нормальными программистами? Всегда были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:54 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
MasterZivRWolfЭто с каких же пор начавшие с бейсика/паскаля перестали быть нормальными программистами? Всегда были. Не, если там начали с Синлера и его бейсика -- нормально! Но кто учит паскаль и влюбляется в него -- 100% ничего путного из них не выходит, если они не переходят на программирование в СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:55 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Тогда нужно объявлять ненормальными большинство программистов страны, т.к. бейсик преподают в школах, а паскаль - в вузах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:56 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
MasterZiv, ты наверно 1С-ников не встречал, которые кроме 1С ни на чем не писали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:58 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
MasterZivНо кто учит паскаль и влюбляется в него -- 100% ничего путного из них не выходит, если они не переходят на программирование в СУБД. В собственно паскале нет ничего плохого - такой же язык, как другие. Я не про паскаль времён Вирта, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 13:59 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
RWolfТогда нужно объявлять ненормальными большинство программистов страны, Это, кстати, не слишком далеко от истины. Хотя и никак не связано с детскими комплексами коллеги Мастера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 14:00 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Я ещё здесь и внимательно всё читаю. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 14:12 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZiv, ты наверно 1С-ников не встречал, которые кроме 1С ни на чем не писали Встречал. Ты предлагаешь их программистами называть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 16:05 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
RWolfMasterZivНо кто учит паскаль и влюбляется в него -- 100% ничего путного из них не выходит, если они не переходят на программирование в СУБД. В собственно паскале нет ничего плохого - такой же язык, как другие. Я не про паскаль времён Вирта, конечно. А другого нет, если ты знаешь, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 16:05 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarerRWolfТогда нужно объявлять ненормальными большинство программистов страны, Это, кстати, не слишком далеко от истины. Хотя и никак не связано с детскими комплексами коллеги Мастера. Я, кстати, очень хорошо понимаю, почему ты это написал :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 16:06 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Ладно, предлагаю вернуться непосредственно к теме обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 16:06 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
MasterZivА другого нет, если ты знаешь, конечно. Сейчас используется только Object Pascal и его реализации Delphi и FreePascal. Виртовский паскаль лично я последний раз наблюдал в 90-х на спектруме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 17:06 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANAИнтересно, какая реакция у ТСа будет на Хаскель, ну или на общую алгебру и матан. Во-во. А зачем функции высшего порядка, замыкания и lexical scope ? Нахрен. Дожмём всё циклами forEach, и пусть компилятор умрёт. Они же PhD а мы простые юзеры их либ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 18:15 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Carrying: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 18:33 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
S.Vatagin и пусть компилятор умрёт Да и хрен с ним, его проблемы. Ассемблер все равно не знает ни об объектах, ни о высших порядках. После компиляции все на уровне if/goto. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 18:37 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
вот пример из реальной жизни. локализация Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. И потом где угодно в коде Код: javascript 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 18:54 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Раз одновременно зашла речь о смерти компилятора и высших порядках, все-таки вынужден запостить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 19:44 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wst, Класс!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 19:52 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
А ТС нам ответит что-нибудь? А то как-то я вижу его как чел-ка непонимающего зачем x,y,z а он молчит. Но мб это так принято здесь на sql.ru. не обессудьте, думал, если спросил, - хочешь услышать ответ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 19:55 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
RWolfЭто с каких же пор начавшие с бейсика/паскаля перестали быть нормальными программистами?Не надо передергивать. Начавшие с легопаскаля, это одно. Играющие в лего всю жизнь, это другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 20:38 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wstРаз одновременно зашла речь о смерти компилятора и высших порядках, все-таки вынужден наконец то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 21:09 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
RWolfMasterZivА другого нет, если ты знаешь, конечно. Сейчас используется только Object Pascal и его реализации Delphi и FreePascal. Виртовский паскаль лично я последний раз наблюдал в 90-х на спектруме. Правильно, но это -- другие языки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2015, 21:22 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 03:31 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
softwarertchingizначинать понимать, как использовать, имхо, лучше с обработчиков нажатия на кнопки, Там очень трудно ответить на вопрос "нафига всё это уродство вместо простого указателя на функцию". Да и слово callback, которое любят употреблять, окончательно теряет смысл.C "простыми указателями на функцию" иногда возникают такие вопросы: http://www.sql.ru/forum/1032828/hochu-izbavitsya-ot-globalnoy-peremennoy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 07:29 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
BarloneC "простыми указателями на функцию" иногда возникают такие вопросы: http://www.sql.ru/forum/1032828/hochu-izbavitsya-ot-globalnoy-peremennoy Я вижу две разные возможности понять Вашу фразу: то ли Вы имеете в виду "с указателями на standalone функции в отличие от указателей на методы", то ли "с указателями на функции в отличие от делегатов". Если Вы про первое - то, во-первых, замечу, что я имел в виду "указатели на функции, в том числе на методы", а во-вторых, такие вопросы возникают от плохого владения инструментом. Если же Вы про второе - не понимаю, как делегаты, будь они в его распоряжении, смогли бы ему помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 08:41 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
в реализациях алголоподобных языков - указатель на вложенную функцию -обычно - это пара указателей - один на собственно исполняемый код, второй - указатель на дисплей(массив указателей на области активации) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 09:27 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
drsm http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html http://habrahabr.ru/post/183150/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 10:39 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wstРаз одновременно зашла речь о смерти компилятора и высших порядках, все-таки вынужден запостить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. В tuple можно передать произвольный кортеж произвольных типов сформированный во время исполнения? Что будет если auto t = tuple(5u, тут объект произвольного класса , 7l, 8.0)(rcat)(tuple(1u, 2, 3l, 4.0)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 11:16 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВwstРаз одновременно зашла речь о смерти компилятора и высших порядках, все-таки вынужден запостить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. В tuple можно передать произвольный кортеж произвольных типов сформированный во время исполнения? Что будет если auto t = tuple(5u, тут объект произвольного класса , 7l, 8.0)(rcat)(tuple(1u, 2, 3l, 4.0)); будет копироваться видимо тк Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 11:29 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
drsm будет копироваться видимо тк Код: plaintext 1. Это ответ на первый или на второй вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 11:38 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
В данном случае для "объекта произвольного класса" все упрется в строчку Код: plaintext 1. Собственно компилятор все это хозяйство разворачивает в цепочку вызовов << для cout. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 11:58 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wst Собственно компилятор все это хозяйство разворачивает в цепочку вызовов << для cout. Соответственно произвольный кортеж в tuple мы не сможем передать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 12:04 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Что такое "произвольный кортеж" и откуда он возьмется? Хотелось бы увидеть пример кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 12:13 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВwstСобственно компилятор все это хозяйство разворачивает в цепочку вызовов << для cout. Соответственно произвольный кортеж в tuple мы не сможем передать? :)напиши для своего пользовательского типа оператор вывода в поток - и передавай :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 12:14 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВdrsmбудет копироваться видимо тк Код: plaintext 1. Это ответ на первый или на второй вопрос? на оба http://ideone.com/F2cHt5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 12:39 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wstЧто такое "произвольный кортеж" и откуда он возьмется? Хотелось бы увидеть пример кода. кортеж std::tuple. Призвольный я не подсуну, должен явно в коде прописать вызов tuple(....) и компилятор на этапе компиляции должен все это развернуть... drsmЕвгенийВпропущено... Это ответ на первый или на второй вопрос? на оба http://ideone.com/F2cHt5 С оператором вывода в поток понятно. Отсутствие такого вызовет ошибку компиляции? В .NET например все объекты наследуются от одного и у всех есть метод ToString(). В С++ никто не обязывает класс иметь operator const char*(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 13:47 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВВ tuple можно передать произвольный кортеж произвольных типов сформированный во время исполнения? Что будет если auto t = tuple(5u, тут объект произвольного класса , 7l, 8.0)(rcat)(tuple(1u, 2, 3l, 4.0)); ЕвгенийВПризвольный я не подсуну, должен явно в коде прописать вызов tuple(....) и компилятор на этапе компиляции должен все это развернуть... Кто-то явно запутался в показаниях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 14:11 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВС оператором вывода в поток понятно. Отсутствие такого вызовет ошибку компиляции?конечно, в этом и смысл. Зачем пытаться распечатать то, что распечатать нельзя? ЕвгенийВВ С++ никто не обязывает класс иметь operator const char*().более того, рекомендуется его не иметь ))) а иметь оператор << если надо класс выводить в поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 14:52 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wst Кто-то явно запутался в показаниях. Я отвечаю сам себе. Что бы было можно, язык должен поддерживать Параметрический полиморфизм высших порядков . Его к сожалению нет даже в F#, но к моему удивлению есть в scala. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 15:01 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
drsmЕвгенийВпропущено... В tuple можно передать произвольный кортеж произвольных типов сформированный во время исполнения? Что будет если auto t = tuple(5u, тут объект произвольного класса , 7l, 8.0)(rcat)(tuple(1u, 2, 3l, 4.0)); будет копироваться видимо тк Код: plaintext 1. я намекал на то, что захват аргументов в возвращаемой лямбде происходит по значению [=], те класс уже не произвольный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 15:30 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
drsmя намекал на то, что захват аргументов в возвращаемой лямбде происходит по значению [=], те класс уже не произвольный Да уж плюсы однако, даже замыкания надо описывать))) Бедные разработчики компиляторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 15:57 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВБедные разработчики компиляторов. им то глубоко фиолетово ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 16:16 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Изопропилим то глубоко фиолетово Почему? Ведь много больше работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 16:28 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВИзопропилим то глубоко фиолетово Почему? Ведь много больше работы. это кажется. лямбда в с++ - в значительной степени синтаксический сахар а то что способ захвата (по ссылке или по значению) нужно явно описывать - задачу разработчику компилятора упрощает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 16:50 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Разработчики стандарта с++ снисходят к страданиям разработчиков компиляторов только если те годами отказываются пилить какую-то фичу (export template ftw). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 17:17 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
wstРазработчики стандарта с++ снисходят к страданиям разработчиков компиляторов только если те годами отказываются пилить какую-то фичу (export template ftw). Толи дело Хейсберг! Сам придумал, сам запилил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 18:08 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Изопропиллямбда в с++ - в значительной степени синтаксический сахар а то что способ захвата (по ссылке или по значению) нужно явно описывать - задачу разработчику компилятора упрощает Все языки высокого уровня -- синтаксический сахар. ПИШИТЕ НА АсСЕМБЛЕРАХ ! (но почему-то никто не пишет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 19:06 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Испортят ведь. Расколят сообщество С++ еще на несколько лагерей. Будет консервативное крыло. И приверженцы кортежей и прочих adhoc и параметрических полиморфизмов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 19:09 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
maytonИспортят ведь. Расколят сообщество С++ еще на несколько лагерей. Будет консервативное крыло. И приверженцы кортежей и прочих adhoc и параметрических полиморфизмов. Я только не понимаю. Разве вопрос был именно про C++. Я, например, вообще приводил примеры на javascript. Но можно на Scala, Haskell, Ruby, Python, Erlang etc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 19:37 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Извини. Топик живёт своей жизнью. Разумеется мой камент относится исходникам wst. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 19:49 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
MasterZivИзопропиллямбда в с++ - в значительной степени синтаксический сахар а то что способ захвата (по ссылке или по значению) нужно явно описывать - задачу разработчику компилятора упрощает Все языки высокого уровня -- синтаксический сахар. ПИШИТЕ НА АсСЕМБЛЕРАХ ! (но почему-то никто не пишет). я к тому, что реализация лямбд в с++ не требует от создателей компиляторов особых усилий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2015, 21:08 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, сегодня прочитал, в целом то о чём я и думал. Читаю сейчас ещё одну статью , думаю некоторым будет интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 02:36 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВсем спасибо, сегодня прочитал, в целом то о чём я и думал. Читаю сейчас ещё одну статью , думаю некоторым будет интересноЕщё бы ссылка открывалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 07:36 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANASashaMercuryВсем спасибо, сегодня прочитал, в целом то о чём я и думал. Читаю сейчас ещё одну статью , думаю некоторым будет интересноЕщё бы ссылка открывалась. прошу прощение. Вот весь список .Название Higher Order Functions Necessary for Spatial Theory Development ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 09:42 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
SashaMercuryskyANAпропущено... Ещё бы ссылка открывалась. прошу прощение. Вот весь список .Название Higher Order Functions Necessary for Spatial Theory DevelopmentВы издеваетесь? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 08:24 |
|
||
|
делегаты в языках программирования
|
|||
|---|---|---|---|
|
#18+
skyANA, нет. Та ссылка была доступна, но судя по всему не должна была быть, и её прикрыли. У меня есть загруженный файл, но не на этом компьютере, я его позже попробую отправить. Можно попробовать поискать в сети по запросу "Higher Order Functions Necessary for Spatial Theory Development" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2015, 02:58 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340921]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
140ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
155ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 576ms |

| 0 / 0 |
