Re[2]: C++0x в Wikipedia
От: Roman Odaisky Украина  
Дата: 20.08.07 15:46
Оценка:
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, eao197, Вы писали:


A>Вот это явно не помешает:


A>
A>int main( )
A>{
A>  shared_ptr<double> p_first(new double) ;

A>  if( true )
A>  {
A>    shared_ptr<double> p_copy = p_first ;

A>    *p_copy = 21.2 ;

A>  }  // Destruction of 'p_copy' but not of the allocated double.

A>  return ;  // Destruction of 'p_first' and accordingly of the allocated double.
A>}
A>

А что такого особенного? boost::shared_ptr и так это делает.
До последнего не верил в пирамиду Лебедева.
Re[2]: C++0x в Wikipedia
От: jazzer Россия Skype: enerjazzer
Дата: 20.08.07 15:48
Оценка: +2 -1
Здравствуйте, Smooky, Вы писали:

S>Никак не могу понять, зачем всё таки что-то выдумывать и наворачивать?! Чего не хватает та?! Ведь есть же C/C++ в том виде в каком он есть! И ВСЁ! НЕ НАДО БОЛЬШЕ НИЧЕГО! куча библиотек, подпрограмм, классов написано за столько лет. Всё отлично работает. И сейчас софт пишется на том C/C++ какой он щаз есть! И пусть всё будет так! Не надо ничего менять и добавлять!


Аргументация как-то слабовата, не находите, коллеги?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: C++0x в Wikipedia
От: jazzer Россия Skype: enerjazzer
Дата: 20.08.07 17:39
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, Smooky, Вы писали:


S>>Никак не могу понять, зачем всё таки что-то выдумывать и наворачивать?! Чего не хватает та?! Ведь есть же C/C++ в том виде в каком он есть! И ВСЁ! НЕ НАДО БОЛЬШЕ НИЧЕГО! куча библиотек, подпрограмм, классов написано за столько лет. Всё отлично работает. И сейчас софт пишется на том C/C++ какой он щаз есть! И пусть всё будет так! Не надо ничего менять и добавлять!


J>Аргументация как-то слабовата, не находите, коллеги?


Егор, ты правда считаешь этот крик души хорошо аргументированным?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: C++0x в Wikipedia
От: jazzer Россия Skype: enerjazzer
Дата: 20.08.07 17:41
Оценка:
Здравствуйте, igna, Вы писали:

M>>>Давно пора отрезать а не добавлять ...


RO>>Что именно?


I>Наследование. STL, например, можно написать без наследования.


Какое именно наследование в STL тебе не нравится?

I>А из библиотеки — потоки ввода-вывода.


Точно. Все — в сад (в смысле, в printf)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: C++0x в Wikipedia
От: Аноним  
Дата: 20.08.07 17:58
Оценка:
Здравствуйте, alzt, Вы писали:

A>Вот это явно не помешает:


Это обычный умный указатель, который уже давно есть в бусте.
Посмотри, там (в бусте) много чего вкусного.
Например boost::weak_ptr тоже очень полезная вещь.
Re[4]: C++0x в Wikipedia
От: NikeByNike Россия  
Дата: 20.08.07 18:03
Оценка: 2 (2) +1 :)))
Здравствуйте, igna, Вы писали:

I>Наследование. STL, например, можно написать без наследования.


I>А из библиотеки — потоки ввода-вывода.


Предлагаю отменить оператор-. Его можно сделать через +. Это здорово упростит язык!
Нужно разобрать угил.
Re: C++0x в Wikipedia
От: Ka3a4oK  
Дата: 20.08.07 19:15
Оценка:
Пока в 2009 году выйдет стандарт, пока компиляторы его поддержат...
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[2]: C++0x в Wikipedia
От: Roman Odaisky Украина  
Дата: 20.08.07 19:25
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>Пока в 2009 году выйдет стандарт, пока компиляторы его поддержат...


Это да. 2 года до стандарта, еще 5 лет для совместимости со старыми компиляторами…

P. S. http://www.generic-programming.org/software/ConceptGCC/
До последнего не верил в пирамиду Лебедева.
Re[3]: C++0x в Wikipedia
От: Ka3a4oK  
Дата: 20.08.07 19:37
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, Ka3a4oK, Вы писали:


KK>>Пока в 2009 году выйдет стандарт, пока компиляторы его поддержат...


RO>Это да. 2 года до стандарта, еще 5 лет для совместимости со старыми компиляторами…


RO>P. S. http://www.generic-programming.org/software/ConceptGCC/


7 лет — большой срок. Не будет ли это холостым выстрелом? Уже сейчас много языков поддерживают многие или все фичи C++0x. Я сам, попробовав Nemerle, теперь волком вою на C++. Боюсь, к тому времени С++ из General Purpose языка превратится в узконишевый.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: C++0x в Wikipedia
От: Erop Россия  
Дата: 20.08.07 19:38
Оценка:
Здравствуйте, jazzer, Вы писали:

J>>Аргументация как-то слабовата, не находите, коллеги?

J>Егор, ты правда считаешь этот крик души хорошо аргументированным?
Ну, во всяком случае, он мне понятен
Да и мотивы вполне ясны...

В целом язык С++ когда-нибудь утонет под грузом своей сложности. Но я, правда, думаю, что это будет ещё не сейчас
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: C++0x в Wikipedia
От: igna Россия  
Дата: 20.08.07 19:48
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Какое именно наследование в STL тебе не нравится?


У Microsoft set унаследован от _Tree, без этого наследования можно обойтись. Правда я не говорю, что оно мне не нравится.

J>Точно. Все — в сад (в смысле, в printf)


Ну да, прежде чем отправить iostreams "в сад" неплохо бы сначала поиметь в стандарте хорошую библиотеку ввода-вывода.
Re[4]: C++0x в Wikipedia
От: Programador  
Дата: 20.08.07 21:21
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>7 лет — большой срок. Не будет ли это холостым выстрелом? Уже сейчас много языков поддерживают многие или все фичи C++0x. Я сам, попробовав Nemerle, теперь волком вою на C++. Боюсь, к тому времени С++ из General Purpose языка превратится в узконишевый.

Какие такие фичи? Надеюсь никаких всеже не будет. Не ужны в нем фичи , которые в других языках есть. Вот приходят и просят переписать на С с других языков, в которых ну очень много фичей, только работает медленно. В АДЕ кстати были встроенные "12_Миль". И где она эта АДА?

По диагонали просмотрел драфт вроде ничего особенного там нет. Инициализация членов, предварительный конструктор, decltype все это нужно было давно вводить.

Провда переписка настораживает.
Re[5]: C++0x в Wikipedia
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.08.07 21:39
Оценка:
Здравствуйте, Programador, Вы писали:

P>По диагонали просмотрел драфт вроде ничего особенного там нет. Инициализация членов, предварительный конструктор, decltype все это нужно было давно вводить.


Дык, лучше поздно, чем никогда.

P>Провда переписка настораживает.


Что именно?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: C++0x в Wikipedia
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.07 21:44
Оценка:
Здравствуйте, eao197, Вы писали:

E>Недавно в большом флейме на linux.org.ru, посвященном интервью Страуструпа о C++0x, добрая душа дала ссылку на описание C++0x в Wikipedia: http://en.wikipedia.org/wiki/C%2B%2B0x


Что-то вот тут туфта (извиняюсь) нарисована:

Closure variables need not be references to external variables. For example:

std::vector<int> someList;
std::remove_if(someList.begin(), someList.end(), <>(int x, int myTotal = 0){(myTotal += x) > 20};


This removes elements after the running total reaches twenty, including the first element to reach 20.

Что-то мне говорит что myTotal при каждом вызове будет 0. Иначе я совсем не понимаю эту нотацию.
Re[6]: C++0x в Wikipedia
От: Programador  
Дата: 20.08.07 21:56
Оценка:
Здравствуйте, eao197, Вы писали:

P>>Провда переписка настораживает.


E>Что именно?

Помоему у некотырых идеи превратить С-рунтайм в аналог НЕТ-фраймворк.
Re[6]: C++0x в Wikipedia
От: jazzer Россия Skype: enerjazzer
Дата: 21.08.07 01:17
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, jazzer, Вы писали:


J>>Какое именно наследование в STL тебе не нравится?


I>У Microsoft set унаследован от _Tree, без этого наследования можно обойтись. Правда я не говорю, что оно мне не нравится.


ну так это вопросы к Microsoft, а не к STL.

J>>Точно. Все — в сад (в смысле, в printf)


I>Ну да, прежде чем отправить iostreams "в сад" неплохо бы сначала поиметь в стандарте хорошую библиотеку ввода-вывода.


желательно такую же удобную, как operator<<, который ты определяешь один раз, а он работает везде и не рожает кучу левых промежуточных строчек, как какой-нть метод типа to_string
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: C++0x в Wikipedia
От: sc Россия  
Дата: 21.08.07 04:10
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, eao197, Вы писали:


E>>Недавно в большом флейме на linux.org.ru, посвященном интервью Страуструпа о C++0x, добрая душа дала ссылку на описание C++0x в Wikipedia: http://en.wikipedia.org/wiki/C%2B%2B0x


CS>Что-то вот тут туфта (извиняюсь) нарисована:


CS>Closure variables need not be references to external variables. For example:


CS>
CS>std::vector<int> someList;
CS>std::remove_if(someList.begin(), someList.end(), <>(int x, int myTotal = 0){(myTotal += x) > 20};
CS>


CS>This removes elements after the running total reaches twenty, including the first element to reach 20.


CS>Что-то мне говорит что myTotal при каждом вызове будет 0. Иначе я совсем не понимаю эту нотацию.


Мне бы больше понравилось нечто такое:
std::vector<int> someList;
std::remove_if(someList.begin(), someList.end(), lambda(int x):int myTotal = 0{ return (myTotal += x) > 20; });

После ":" можно задать список переменных, который будет "привязан" к объекту и каждая переменная может быть инициализирована при создании объекта. Но это, по моему, никак не связано с замыканиями.
Вот если бы можно было как-то так:
typedef int(*Adder)(int);
Adder makeAdder(int y){ return lambda(int x){ return y + x; }}
add3 = makeAdder(3);
int r = add3(5);
//результат 8

Ну и добавить сюда шаблоны, чтобы не привязываться к какому-то определенному типу.
В первом случае (с remove_if), желательно вообще тип не указывать, должен быть такой-же как и у контейнера.
Например так:
lambda(x):myTotal = 0{ return (myTotal += x) > 20; }

А во втором так:
template<class T, class F>
F makeAdder(T y){ return lambda(T x){ return y + x; }}
//и т.д.
Re[2]: C++0x в Wikipedia
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.07 06:19
Оценка: 28 (1)
Здравствуйте, c-smile, Вы писали:

E>>Недавно в большом флейме на linux.org.ru, посвященном интервью Страуструпа о C++0x, добрая душа дала ссылку на описание C++0x в Wikipedia: http://en.wikipedia.org/wiki/C%2B%2B0x


CS>Что-то вот тут туфта (извиняюсь) нарисована:


CS>Closure variables need not be references to external variables. For example:


CS>
CS>std::vector<int> someList;
CS>std::remove_if(someList.begin(), someList.end(), <>(int x, int myTotal = 0){(myTotal += x) > 20};
CS>


CS>This removes elements after the running total reaches twenty, including the first element to reach 20.


CS>Что-то мне говорит что myTotal при каждом вызове будет 0. Иначе я совсем не понимаю эту нотацию.


Насколько я понимаю, в Wikipedia в двух местах указали разный синтаксис. Конкретно в этом случае между декларацией int x и int myTotal была не запятая, а двоеточие:
std::remove_if(someList.begin(), someList.end(), <>(int x: int myTotal = 0){(myTotal += x) > 20};

я так понял, что двоеточие -- это как раз разделитель формальных параметров, от переменных замыкания. Т.е. myTotal -- это переменная замыкания с начальным значением 0. И от вызова к вызову myTotal сохраняет свое значение.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: C++0x в Wikipedia
От: igna Россия  
Дата: 21.08.07 07:20
Оценка: -1
Здравствуйте, jazzer, Вы писали:

J>ну так это вопросы к Microsoft, а не к STL.


Ну я наверное как-то неуклюже написал здесь
Автор: igna
Дата: 20.08.07
. Собственно я не о том, что нужно писать STL без наследования, а о том, что наследование можно выбросить из языка, и все же такую непростую библиотеку как STL можно будет написать без какого-либо изменения ее интерфейса. И еще много-много чего можно написать без наследования.
Re[8]: C++0x в Wikipedia
От: Sergey Россия  
Дата: 21.08.07 07:25
Оценка:
> Ну я наверное как-то неуклюже написал здесь
Автор: igna
Дата: 20.08.07
. Собственно я не о том, что нужно писать STL без наследования, а о том, что наследование можно выбросить из языка, и все же такую непростую библиотеку как STL можно будет написать без какого-либо изменения ее интерфейса. И еще много-много чего можно написать без наследования.

>

На супермегаезыке "С" тоже много-много чего можно написать. Но ну его нафиг
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.