Re[5]: Торвальдс - еще раз про С++
От: FR  
Дата: 16.06.10 07:32
Оценка: 20 (2)
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Подожди, можно определять функции внутри функций?


Можно http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
но только в си, в C++ это не поддерживается.
Re[6]: Торвальдс - еще раз про С++
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 16.06.10 07:42
Оценка: :)
FR,

LCR>>Подожди, можно определять функции внутри функций?


FR>Можно http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html

FR>но только в си, в C++ это не поддерживается.

Ну надо же...
... << RSDN@Home 1.2.0 alpha 4 rev. 1423>>
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Торвальдс - еще раз про С++
От: Cyberax Марс  
Дата: 16.06.10 08:18
Оценка: 2 (1) +2
Здравствуйте, z00n, Вы писали:

Z>Торвальдс не устает объяснять почему ему не нравится C++ — видно сильно давят

Новых аргументов у него почти и нет. "Зависимость от контекста" может быть и в С, его вариант будет только не someProtocol->connect(), а someProtocol->vtbl->connect(someProtocol). Всё остальное — то же самое.

Всё остальное — тоже вопрос.

Я реально вижу, что на практике С++ существенно продуктивнее в открытых проектах, чем С на примере KDE и QT против GTK.
Sapienti sat!
Re[5]: Торвальдс - еще раз про С++
От: dilettante  
Дата: 16.06.10 08:51
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Mr.Cat,


D>>>в С++ есть полезная фича -- локальные классы, с помощью них можно делать функции, локальные в другой функции, а также делать элегантный cleanup.

MC>>А пример (уместного использования) можно?
MC>>То, что могло бы называться "локальными функциями" поддерживается для С в гцц и, емнип, в ядре используется.

LCR>Подожди, можно определять функции внутри функций?

LCR>
LCR>int my_cool_fucn()
LCR>{
LCR>    int a = 22;
LCR>    int local_xxx()
LCR>    {
LCR>        return a;
LCR>    }
LCR>    return local_xxx();
LCR>}
LCR>

LCR>:wow:

Конкретно так делать некорректно, будет неопределённое поведение: локальные функции захватывающие локальные переменные лучше не возвращать. Зато их можно передавать параметром при вызове.
Re[6]: Торвальдс - еще раз про С++
От: dilettante  
Дата: 16.06.10 09:06
Оценка:
Здравствуйте, dilettante, Вы писали:

D>Конкретно так делать некорректно, будет неопределённое поведение: локальные функции захватывающие локальные переменные лучше не возвращать. Зато их можно передавать параметром при вызове.


Например, так:

#include <stdio.h>

void map_int(int arr[], size_t const size, int (*f)(int))
{
   for (size_t i = 0; i < size; i++)
     arr[i] = f(arr[i]);
}

int main()
{
   size_t const s = 5;
   int array[5] = {1,2,3,4,5};

   map_int(array, s, ({ int lambda(int x) { return x+1; }; lambda; }));
   map_int(array, s, ({ int lambda(int x) { printf("%d ",x); return x; }; lambda; }));

   return 0;
}


:)
Re[7]: Торвальдс - еще раз про С++
От: dilmah США  
Дата: 16.06.10 09:26
Оценка:
FR>>но только в си, в C++ это не поддерживается.

LCR>Ну надо же...


в С++ есть локальные структуры (с методами), что еще мощнее
Re[8]: Торвальдс - еще раз про С++
От: FR  
Дата: 16.06.10 09:57
Оценка: +1
Здравствуйте, dilmah, Вы писали:


D>в С++ есть локальные структуры (с методами), что еще мощнее


Слабее, вернее гораздо менее удобны, так как из них невозможен прямой доступ к окружающим локальным
переменным. Локальные же методы в gcc или паскале такой доступ дают и по удобству близки к замыканиям.
Re[6]: Торвальдс - еще раз про С++
От: Klapaucius  
Дата: 16.06.10 10:40
Оценка: +2
Здравствуйте, FR, Вы писали:

FR>C++ это не поддерживается.


Уже, можно сказать, поддерживается.
int my_cool_fucn()
{
    int a = 22;
    auto local_xxx = [a](){
        return a;
    };
    return local_xxx();
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[4]: offtopic
От: Pavel Dvorkin Россия  
Дата: 16.06.10 12:09
Оценка: :)))
Здравствуйте, Геннадий Васильев, Вы писали:

Планирую свой летний отпуск. В ходе разработки алгоритма выяснилось. что мне надо быстро добраться из Внуково в Домодедово.

Поискал в Интернете — все советуют через Москву, дальше разные варианты. Мне это не по душе, почему нет автобуса ? Ищу дальше. И вдруг натыкаюсь на такое

/////////////////////////////////
4 Сент, 2030 at 9:58 AM
В последние годы с помощью экспрессов и городских электричек удалось создать хорошую связь не только всех трех аэропортов Москвы с центром города, но и связать между собой Внуково и Шереметьево, Шереметьево и Домодедово. Однако чтобы проехать из Внуково в Домодедово, нужно было заезжать в город и делать пересадку около Москва-Сити. При этом напрямую расстояние между двумя аэропортами намного меньше.

Несколько лет назад правительство Московского края приняло решение соединить Внуково и Домодедово скоростными поездами на магнитной подушке, способные развивать скорость до 400-450 км/ч. В качестве прототипа была взята немецкая система Трансрапид, которая хорошо зарекомендовала себя в Шанхае и в других местах. Систему адаптировали к условиям русской зимы: пути скоростного поезда, пролегающие полностью на эстакаде, были накрыты коробом, защищающим их от снега; были также сделаны специальные отверстия, уменьшающие сопротивление воздуха и шум

/////////////////////////////////

Что за черт! Почему не слышал ничего об этом ?

Потом посмотрел на дату (выше) и все стало ясно.

Для желающих привожу ссылку на весь этот ресурс

http://metrofuture.livejournal.com/

P.S. Предлагать способы добраться не надо.
With best regards
Pavel Dvorkin
Re: Торвальдс - еще раз про С++
От: Lorenzo_LAMAS  
Дата: 19.06.10 05:25
Оценка: +1
Здравствуйте, z00n, Вы писали:

Z>Торвальдс не устает объяснять почему ему не нравится C++ — видно сильно давят

Z>c++ productivity

Хорошо Линус написал! Чем больше колупаюсь с нашим монструозным фреймворком-выродком на С++, тем чаще подобные мысли приходят в голову.
Of course, the code must be complete enough to compile and link.
Re: Торвальдс - еще раз про С++
От: minorlogic Украина  
Дата: 19.06.10 13:30
Оценка:
Здравствуйте, z00n, Вы писали:

Z>Торвальдс не устает объяснять почему ему не нравится C++ — видно сильно давят

Z>c++ productivity

Мысль странная для меня , любой вызов функции это потеря контекста и в свою очередь механизм абстракции.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Торвальдс - еще раз про С++
От: Lorenzo_LAMAS  
Дата: 19.06.10 18:37
Оценка:
C>Новых аргументов у него почти и нет. "Зависимость от контекста" может быть и в С, его вариант будет только не someProtocol->connect(), а someProtocol->vtbl->connect(someProtocol). Всё остальное — то же самое.

А что, Линукс в таком стиле пишут?

C>Всё остальное — тоже вопрос.


C>Я реально вижу, что на практике С++ существенно продуктивнее в открытых проектах, чем С на примере KDE и QT против GTK.


А я на _моей_ практике вижу, что Линус (ИМХО) прав (хотя бы в этом частном случае) — наличие перегрузки, наличие преобразований, (есть они и в С, конечно, но не так все драматично) накрученного поиска имен и.т.п. и т.д. прибавьте еще всякие АДЛи до кучи — реально делает код неоднозначным и чтение и понимание его сложнее, чем в С.
Of course, the code must be complete enough to compile and link.
Re[6]: Торвальдс - еще раз про С++
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 19.06.10 18:42
Оценка:

Можно http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html


Вы не совсем правы. Это не C, это его расширение в GCC. Так можно взять майкрософтовское расширение C++/CLI и сказать что C++ полностью динамический ^_^.
Re[7]: Торвальдс - еще раз про С++
От: FR  
Дата: 20.06.10 02:01
Оценка:
Здравствуйте, Eye of Hell, Вы писали:

EOH>

Можно http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html


EOH>Вы не совсем правы. Это не C, это его расширение в GCC. Так можно взять майкрософтовское расширение C++/CLI и сказать что C++ полностью динамический ^_^.


Речь с самого начала шла про расширение gcc.
Re[3]: Торвальдс - еще раз про С++
От: Cyberax Марс  
Дата: 20.06.10 04:56
Оценка: 1 (1)
Здравствуйте, Lorenzo_LAMAS, Вы писали:

C>>Новых аргументов у него почти и нет. "Зависимость от контекста" может быть и в С, его вариант будет только не someProtocol->connect(), а someProtocol->vtbl->connect(someProtocol). Всё остальное — то же самое.

L_L>А что, Линукс в таком стиле пишут?
Местами — да.

C>>Всё остальное — тоже вопрос.

C>>Я реально вижу, что на практике С++ существенно продуктивнее в открытых проектах, чем С на примере KDE и QT против GTK.
L_L>А я на _моей_ практике вижу, что Линус (ИМХО) прав (хотя бы в этом частном случае) — наличие перегрузки, наличие преобразований, (есть они и в С, конечно, но не так все драматично) накрученного поиска имен и.т.п. и т.д. прибавьте еще всякие АДЛи до кучи — реально делает код неоднозначным и чтение и понимание его сложнее, чем в С.
Решается вменяемыми code style'ами. Я прекрасно вижу как LLVM, где используется вменяемое подмножество С++, намного приятнее gcc с его чистым С. Просто в ядре нет большого количества алгоритмически- и структурно-сложного кода.
Sapienti sat!
Re: Торвальдс - еще раз про С++
От: rm822 Россия  
Дата: 20.06.10 06:10
Оценка:
Здравствуйте, z00n, Вы писали:

Z>Торвальдс не устает объяснять почему ему не нравится C++ — видно сильно давят

Z>c++ productivity
Да ну, любая технология будучи использованной неправильно способна принести больше вреда чем пользы.
Я бы сказал что чувак просто не верит собственным сотрудникам, что они сособны сами отличить плохое от хорошего
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Торвальдс - еще раз про С++
От: Тролль зеленый и толстый  
Дата: 20.06.10 21:58
Оценка:
Знаете, если бы у меня не было опыта программирования на C++, я бы сказал, что Линус бредит. А так говорю, что он в чем-то прав. А если еще учесть, что у Линукса и так дела идут весьма неплохо, то он вообще прав. Как говорится, лучшее — враг хорошего. Не стоит улучшать то, что и так хорошо работает.

Я бы вообще сказал, что успех Линукса — это, в какой-то мере, чудо. Я вот не могу рационально объяснить, почему весь этот оупенсорсный процесс так хорошо работает. Так что Линус трижды прав, что не стоит слишком теребить эту волшебную конструкцию.
Re[2]: Торвальдс - еще раз про С++
От: Тролль зеленый и толстый  
Дата: 20.06.10 22:02
Оценка:
L_L>Хорошо Линус написал! Чем больше колупаюсь с нашим монструозным фреймворком-выродком на С++, тем чаще подобные мысли приходят в голову.

Что за фреймворк? Самопал?
Re[2]: Торвальдс - еще раз про С++
От: Klapaucius  
Дата: 21.06.10 06:06
Оценка:
Здравствуйте, Тролль зеленый и толстый, Вы писали:

ТЗИ>лучшее — враг хорошего.


В данном случае правильнее сказать "худшее — враг плохого".
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[3]: Торвальдс - еще раз про С++
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 21.06.10 06:58
Оценка:
Здравствуйте, Klapaucius, Вы писали:

ТЗИ>>лучшее — враг хорошего.


K>В данном случае правильнее сказать "худшее — враг плохого".


А может: "сложное — враг простого"?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.