The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз набора компиляторов LLVM 5.0, opennews (??), 08-Сен-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


38. "Релиз набора компиляторов LLVM 5.0"  –3 +/
Сообщение от Александроemail (?), 08-Сен-17, 23:37 
"Честно говоря, вообще не понимаю смысла во вложенных функциях в С.
Единственное, что приходит в голову - в комбинации с другим gcc-расширением, statement expressions, можно изобразить типа-лямбды; но учитывая, что лямбды получатся локальные (валидные только в скоупе функции, где они объявлены), их не получится использовать там, где они особо бы пригодились - как колбэки в FSM-серверах на libevent/libev/libuv, - польза очень сомнительная."
Мне лично очень нехватало вложеных функций после ухода с Паскаля/Дельфы. Заменять их приходилось костылями, к коим с течением времени привык настолько что они кажутся теперь не костылями а родными протезами.
это прекрасная штука. то что они отсутствуют в С/С++ илюстрирует родовую травму этих языков.
Так что да - если вы никогда не програмировали с ними, то вьехать в их необходимость получится только с опытом.
Ответить | Правка | Наверх | Cообщить модератору

49. "Релиз набора компиляторов LLVM 5.0"  +1 +/
Сообщение от KonstantinB (ok), 09-Сен-17, 16:31 
Я программирую в основном на языках, где есть полноценные замыкания. Польза от них настолько очевидна, что не обсуждается. А вот польза от банальных вложенных функций не ясна.
Ответить | Правка | Наверх | Cообщить модератору

60. "Релиз набора компиляторов LLVM 5.0"  –1 +/
Сообщение от Alexandroemail (??), 11-Сен-17, 11:01 
>А вот польза от банальных вложенных функций не ясна.

фложенная функция видит контекст своего вызова - локальные переменные функции-родителя в их числе. это примерно тоже самое что и метод структуры/класса. только вместо класса - локальные переменные родителя. сейчас для того чтобы передать контекст, надо делать структуру, и ее передавать ссылкой. а вложенной функции, в паскале например, всей этой возни не нужно - даже затрат на передачу контекста нет, ибо контекст получается через стек.
собственно по статье в вике https://ru.wikipedia.org/wiki/%D0%97%D0%...
"замыкание" и вложенная функция это одно и тоже.
только тут есть один нюанс - замыкание в своем самом гибком варианте реализуемо в языках интерпретируемых. в компилирующем языке, реализовать такое поведение можно только тяжелыми костылями (поэтому досихпор замыканий нормальных и не было, если это не шаблоны). а вот вложенная функция - как раз легко реализуема, и без затрат по коду/производительности.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру