Re[17]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.09 17:34
Оценка:
Здравствуйте, criosray, Вы писали:

C>Ну вообще-то таких абстракций много — в зависимости от того с чем сравнивать.


Ну, хотя бы один пример.

ЗЫ

Я, знаете ли, обожаю читать про разные сверх естественные явления. Не потому, что я в них верю, а просто это очень увлекательно .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Работа - с чего начать: С++ или С#?
От: criosray  
Дата: 24.04.09 17:39
Оценка:
Здравствуйте, VladD2, Вы писали:

C>>Ну вообще-то таких абстракций много — в зависимости от того с чем сравнивать.


VD>Ну, хотя бы один пример.


Э-э, классы и объекты в процедурных языках? Шаблоны в Delphi language или VB6?..
Re[18]: Работа - с чего начать: С++ или С#?
От: catBasilio  
Дата: 24.04.09 17:50
Оценка: :)
Здравствуйте, Sorantis, Вы писали:

S>Можно конкретный пример? Очень интересно, что за абстракцию можно сделать на плюсах которая будет невозможна на Java например?


ну например std::auto_ptr.
UNIX way — это когда тебе вместо туалетной бумаги дают топор, рубанок и карту близлежащего леса
Re[19]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.09 17:59
Оценка: +1
Здравствуйте, catBasilio, Вы писали:

S>>Можно конкретный пример? Очень интересно, что за абстракцию можно сделать на плюсах которая будет невозможна на Java например?


B>ну например std::auto_ptr.


Это абстракция? Это костыль помогающий ходить без одной ноги в условиях когда нет автоматического управления памятью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.09 18:04
Оценка: -2
Здравствуйте, criosray, Вы писали:

C>Э-э, классы и объекты в процедурных языках? Шаблоны в Delphi language или VB6?..


А зачем в процедурных то?

К тому же ты говорил об абстракциях которые можно выразить средствами языка, а не о фичах языка.

Если уж речь пошла о фичах, то я с удовольствием погляжу на то чем ты заменишь лямбды с замыканиями (только не надо бустовских уродств, там замыкания не поддерживаются) и паттерн-матчинг.

ЗЫ

Не стоит даже заикаться на счет каких-то там преимуществ С++ в области языковых возможностей и тем более абстракций. Это чушь! Единственное преимущество С++ — это возможность низкоуровневых оптимизаций и относительная дешевизна имеющихся абстракций. Это позволяет, при желании, не хилых усилиях и отсутствии алгоритмических противопоказаний, написать программу обладающую высокой производительностью. Больше преимуществ у этого отсталого языка нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Работа - с чего начать: С++ или С#?
От: catBasilio  
Дата: 24.04.09 18:08
Оценка: -1 :)
Здравствуйте, gandjustas, Вы писали:

G>Вышла новая версия стандарта? Появился сборщик мусора? Код на С++ стал верифицируемым? Появился вывод типов?


Однажды я участвовал в одном проекте на С++, в котором использовался самопальный сборщик мусора. Причем он был оченб мощный и умел разруливать циклы и всякие сложные зависимости. Так программа с использованием этого gc жрала память как свинья помои. И довольно много времени приходилось искать объект который держал ссылку.
Если ты думаешь что в джаве или сишарпе память не может утекать, то ты ОЧЕНЬ заблуждаешься. Там точно также возможны ситуации когда кто-то будет держать объект, из-за этого не будет вызван его деструктор, а из-за этого не будет закрыт ремотный коннекшин ...
Единственное что в управляемых языках лучше — это невозможность такой ситуации:

std::vector<MyClass*> array;
array.push_back(new MyClass());
array.push_back(new MyClass());
array.push_back(new MyClass());

vector.clear()

или еще

class CopyableClass
{
 public:
  CopyableClass() : Value(new Object()){}
  ~CopyableClass() { delete Value;}

 private:
  Object* Value;
}


но подобные ситуации замечательно лечатся с использованием std::auto_ptr и std::shared_ptr.
и никакие мемори лики не страшны.
UNIX way — это когда тебе вместо туалетной бумаги дают топор, рубанок и карту близлежащего леса
Re[20]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 24.04.09 18:08
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это абстракция? Это костыль помогающий ходить без одной ноги в условиях когда нет автоматического управления памятью.


Так... Попкорном я уже запасся.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Работа - с чего начать: С++ или С#?
От: Sorantis Швеция  
Дата: 24.04.09 18:20
Оценка:
Здравствуйте, catBasilio, Вы писали:

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


G>>Вышла новая версия стандарта? Появился сборщик мусора? Код на С++ стал верифицируемым? Появился вывод типов?


B> Однажды я участвовал в одном проекте на С++, в котором использовался самопальный сборщик мусора. Причем он был оченб мощный и умел разруливать циклы и всякие сложные зависимости. Так программа с использованием этого gc жрала память как свинья помои. И довольно много времени приходилось искать объект который держал ссылку.

B>Если ты думаешь что в джаве или сишарпе память не может утекать, то ты ОЧЕНЬ заблуждаешься. Там точно также возможны ситуации когда кто-то будет держать объект, из-за этого не будет вызван его деструктор, а из-за этого не будет закрыт ремотный коннекшин ...

Но в Сишарпе так же можно использовать сборщик мусора ручками, если не доверяешь автоматической сборке.
As long as there is life, there is hope
Re[20]: Работа - с чего начать: С++ или С#?
От: Хвост  
Дата: 24.04.09 18:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не стоит даже заикаться на счет каких-то там преимуществ С++ в области языковых возможностей и тем более абстракций. Это чушь!

угу, ты ето говоришь года едак с 2002-го, когда C# был настолько убог что даже твой нелюбимый С++ обходил его с головой.
покажи как мне выразить такую простую абстракцию: параметр метода — как ссылка на константный объект, или ммм... такую "фичу" как множественное наследование, или скажем, статический полиморфизм, слышал о таком?
People write code, programming languages don't.
Re[8]: Работа - с чего начать: С++ или С#?
От: catBasilio  
Дата: 24.04.09 18:35
Оценка:
Здравствуйте, Sorantis, Вы писали:

S>Но в Сишарпе так же можно использовать сборщик мусора ручками, если не доверяешь автоматической сборке.


А что, у Сишарповского сборщика мусора уже telepaty mode появился?


static void Main(string[] args)
{
MyObject[] manyObjects = new MyObjects[10000000]; 

Console.WriteLine(manyObjects[1]);

...
// многа кода
}


неиспользуемые объекты будут держаться до заврешения программы.
И попробуй убеди меня что это не утечка памяти. И я очень сомневаюсь gc при вызове "ручками" поймет что это некому не нажный код и удалит его.

P.S. это высосанный из пальца пример, но проблему он показывает вполне.
UNIX way — это когда тебе вместо туалетной бумаги дают топор, рубанок и карту близлежащего леса
Re[21]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.09 18:39
Оценка: -2
Здравствуйте, Хвост, Вы писали:

Х>угу, ты ето говоришь года едак с 2002-го, когда C# был настолько убог что даже твой нелюбимый С++ обходил его с головой.


Начиная со 2-й версии С++ нервно курит в сторонке.
А начиная с 2006-го я вообще перешел на Nemerle до которого C# расти еще лет 10, а С++ уже никогда не дорастет.

Х>покажи как мне выразить такую простую абстракцию: параметр метода — как ссылка на константный объект,


Это чушь а не фича.

Х>или ммм... такую "фичу" как множественное наследование,


Когда есть нормальные средства композиции кода (особенно такие как миксины или макросы) оно не нужно. Оно скорее проблема нежели достоинство.

Х>или скажем, статический полиморфизм, слышал о таком?


О статическом не слышал. О параметрическом слышал. Можешь открыть новую страницу истории и поведать миру о статическом полиморфизме.

В общем, не стоит так напрягаться. Этому гнилью даже новый стандарт не поможет. Кстати, где он? (с)
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Работа - с чего начать: С++ или С#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.04.09 18:40
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Так... Попкорном я уже запасся.


Тогда давай делись!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Работа - с чего начать: С++ или С#?
От: Хвост  
Дата: 24.04.09 18:42
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Если уж речь пошла о фичах, то я с удовольствием погляжу на то чем ты заменишь лямбды с замыканиями
лично я заменяю их на императивный цикл for
сейчас уже есть возможность писать в функциональном стиле, да, скачай msvc10 (CTP) и возрадуйся лямбдам (да ещё и с замыканиями!)
People write code, programming languages don't.
Re[22]: Работа - с чего начать: С++ или С#?
От: catBasilio  
Дата: 24.04.09 18:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Хвост, Вы писали:


Х>>угу, ты ето говоришь года едак с 2002-го, когда C# был настолько убог что даже твой нелюбимый С++ обходил его с головой.


VD>Начиная со 2-й версии С++ нервно курит в сторонке.

VD>А начиная с 2006-го я вообще перешел на Nemerle до которого C# расти еще лет 10, а С++ уже никогда не дорастет.

Если С# так хорош, то почему всякие Crysis, Quake, FarCry и прочее на нем не пишут?
UNIX way — это когда тебе вместо туалетной бумаги дают топор, рубанок и карту близлежащего леса
Re[22]: Работа - с чего начать: С++ или С#?
От: Хвост  
Дата: 24.04.09 18:49
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>О статическом не слышал. О параметрическом слышал. Можешь открыть новую страницу истории и поведать миру о статическом полиморфизме.
а погуглить? первая ссылка по запросу static polymorphism даёт представление что ето такое и как ето пользовать.

VD>В общем, не стоит так напрягаться. Этому гнилью даже новый стандарт не поможет. Кстати, где он? (с)

ето твоему немерлю ничего не поможет, мертворождённый проект.
People write code, programming languages don't.
Re[7]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.04.09 18:57
Оценка: +1 -1
Здравствуйте, catBasilio, Вы писали:

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


G>>Вышла новая версия стандарта? Появился сборщик мусора? Код на С++ стал верифицируемым? Появился вывод типов?


B> Однажды я участвовал в одном проекте на С++, в котором использовался самопальный сборщик мусора. Причем он был оченб мощный и умел разруливать циклы и всякие сложные зависимости. Так программа с использованием этого gc жрала память как свинья помои. И довольно много времени приходилось искать объект который держал ссылку.

Это еще раз докузывает ущербность C++, этот язык не может работать со собрщиком мусора.

B>Если ты думаешь что в джаве или сишарпе память не может утекать, то ты ОЧЕНЬ заблуждаешься. Там точно также возможны ситуации когда кто-то будет держать объект, из-за этого не будет вызван его деструктор, а из-за этого не будет закрыт ремотный коннекшин ...

Этот "кто-то" умрет, если на него нету ссылок, вместе со всеми объектами, на которые он сам держит ссылки.
И это назвается не лик, а невнимательность программиста.

B>Единственное что в управляемых языках лучше — это невозможность такой ситуации:

B>
//говнокод опущен
B>

Это далеко не единственное.

B>но подобные ситуации замечательно лечатся с использованием std::auto_ptr и std::shared_ptr.

B>и никакие мемори лики не страшны.
С std::auto_ptr гемора не меньше, чем с указателями. Вместо ликов постоянно получаются AV
А std::shared_ptr далеко не бесплатен.

ИМХО лучше вместо кривых костылей с самописными GC, "умными" указателями и прочей лабудой использовать нормальные языки.
Re[22]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 24.04.09 19:03
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>Так... Попкорном я уже запасся.

VD>Тогда давай делись!

Дык!

Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Работа - с чего начать: С++ или С#?
От: Хвост  
Дата: 24.04.09 19:05
Оценка: +1 :)
Здравствуйте, gandjustas, Вы писали:

G>ИМХО лучше вместо кривых костылей с самописными GC, "умными" указателями и прочей лабудой использовать нормальные языки.

"нормальные" языки дают оверхед на пустом месте, единственный высокоуровневый язык без оверхедов — С++
People write code, programming languages don't.
Re[21]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.04.09 19:13
Оценка:
Здравствуйте, Хвост, Вы писали:

Х>покажи как мне выразить такую простую абстракцию: параметр метода — как ссылка на константный объект

Всю константность в С++ можно с успехом обмануть, кроме того константность не является абстракцией

Х>или ммм... такую "фичу" как множественное наследование

Ага, еще скажи что виртуальный базовый класс — нереальная фича

Х>или скажем, статический полиморфизм, слышал о таком?

Перегрузка методов является одим из видов статического полиморфизма, она есть в C#
Re[9]: Работа - с чего начать: С++ или С#?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 24.04.09 19:19
Оценка: -1
Здравствуйте, Хвост, Вы писали:

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


G>>ИМХО лучше вместо кривых костылей с самописными GC, "умными" указателями и прочей лабудой использовать нормальные языки.

Х>"нормальные" языки дают оверхед на пустом месте, единственный высокоуровневый язык без оверхедов — С++
Ага, с такими же "высокоуровневыми абстракциями". Заканчивай, не смешно уже.

Кстати тесты по быстродействию операций выделения-освобождения памяти в с++ и .NET я приводил — C++ сливает.
И это без умных указателей и прочей лабуды, с ними банальная вещь — работа с памятью — будет еще медленнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.