Здравствуйте, AndrewVK, Вы писали:
AVK>В них нет определенного функционала темплейтов,
Можно узнать какого?
AVK>И еще, писать на дотнете, так как ты это делал на С++ не стоит, ничего хорошего из этого не выдет. Другая идеология, другие паттерны.
Ну, ну. Это уже ты загнул. Писать можно так же. Просто нужно помнить, что многое уже написано.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, alexkro, Вы писали:
A>Мне, вообщем-то, не очень интересны различия в runtime. А вот с точки зрения языков программирования, что есть в generics, чего в шаблонах нет?
Дык то самое что тебе не интересно. Они не нарушают идеологию компонентного программирования. Я обявляю шаблооный интерфейс, размещаю его в одной длл-е, ты создаешь релизацию этого интерфейса, а кто-нибудь еще использует его. Причем никто не обязан предоставлять исходники.
Ну, и экономнее это. Можно создавать универсальные реалзации.
A>Вот хороший пример.
Да неплохой. Возьмусь его процитировать:
File Not Found
cujcexp1906alexandr
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, alexkro, Вы писали:
A>Да, я сравниваю языки программирования. Среда исполнения мне не особенно важна. И потом под одну и туже среду на разных языках писать можно.
Это примерно так же как сравнивать скоростные характиристики автомобилей плюя на двигатели. Бло быстрее Волга или мерседес? Тут так же...
Для С++ рантай действительно не так важен. Он был изобретен до популяризации компонентного подхода и практически не имеет рантайма. В его терминах рантай практически равен билблиотеке. В дотнете же все совсе не так. Отсюда многие возможности языка — это возможности рантайтам. Та же компонентность — это заслуга рантайма, а не языка. Ведь даже С++ будучи портирован под дотнет становится прекрасным компонентноориентированным языком.
A>Нехороший сайт попался. Нужно поискать "policy basic_string" на www.cuj.com. Первая ссылка — это она и есть.
Ну, ты бы привел сслыку заведомо качественно описывающую то что хочешь именно ты. А то мы тут зароемся.
A>На C++ тоже можно для .NET программировать и при этом использовать большинство его (C++) идиом. Именно это я и делаю уже в течении некоторого времени. Кстати, этот подход (C++ для .NET) будет еще более сильно развит в следующей версии VC++.
Тогда должен понимать чем МС++ отличается от обычного С++. Именно эти отличия АВК и имел в виду.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, VladD2, Вы писали:
VD>>Да я вроде и без него в С++ разбирался. WH>Я тоже так думал...
WH>Из предисловия Скотта Мейерса WH>
WH>Если, прочитав материал, посвященный спискам типов, вы не свалились со стула, значит, вы сидели на полу.
Что понимается под списками? Реализация коллекций? Я вроде все более менее известные изучал по исходинкам. Не думаю, что товаришь может больше чем разработчики библиотек вроде stl, ATL, Boost...
WH>ЗЗЫ Я не против C# мне он самому нравится. Но мне не нравится то что С++ недооценивают и сильно.
Кто тебе сказал? Многие его оценивают очень даже по заслугам. Я зык без сомнения мощьный и гибкий, но так же без сомнения он тяжелый для чтения и узучения, а так же в виду упущений в дизайне слишком часто приводит к трудноуловимым ошибкам. Шарп же полная противоположенность. Приятно было бы если Шарп стал ближе к С++ по возможностям. Но пусть это будет не в ущерб простотое и удобству.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
AVK>>А как его должны дооценивать? WH>Короче пока вы с Владом не прочитаете Александреску я с вами на тему C++ vs C# разговаривать не буду ибо ваши знания о С++ очень поверхтносны.
Я бы на твоем мнении не стал делать заявлений о чужишь знаниях если ты не можешь их адекватно оценить.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
IT>>Неужели один прочитанный учебник может сделать из вчерашнего студента закоренелого профи? WH>Нет но начальные знания дать может, а у них и этого нет.
Я плякаль.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Былабы возможность,а применение найдется. Нука изобрази на C#
[skip]
Мда... печальное зрелище... без пузыря не разберёшся.
А вот ответь мне, мил человек, сможешь ли ты на C++ (не MC++) сделать из чего-то типа первого примера, что-то типа второго?
Голый ADO.NET:
public class CategoryInfo
{
public int CategoryID;
public string CategoryName;
public int Count;
}
static ArrayList GetCategories(int min)
{
string connectionString =
"Server=.;Database=Northwind;Integrated Security=SSPI";
string commandText = @"
SELECT
p.CategoryID,
c.CategoryName,
Count(p.CategoryID) Count
FROM Products p
INNER JOIN Categories c ON c.CategoryID = p.CategoryID
GROUP BY p.CategoryID, c.CategoryName
HAVING Count(p.CategoryID) >= @min
ORDER BY c.CategoryName";
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(commandText, con))
{
cmd.Parameters.Add("@min", min);
using (SqlDataReader rd = cmd.ExecuteReader())
{
ArrayList al = new ArrayList();
while (rd.Read())
{
CategoryInfo ci = new CategoryInfo();
ci.CategoryID = Convert.ToInt32 (rd["CategoryID"]);
ci.CategoryName = Convert.ToString(rd["CategoryName"]);
ci.Count = Convert.ToInt32 (rd["Count"]);
al.Add(ci);
}
return al;
}
}
}
}
А теперь добавим немного рефлекшина внутрь и получим:
public class CategoryInfo
{
public int CategoryID;
public string CategoryName;
public int Count;
}
static ArrayList GetCategories(int min)
{
using (DbManager db = DbManager.Open())
{
return db.ExecuteList(
typeof(CategoryInfo), @"
SELECT
p.CategoryID,
c.CategoryName,
Count(p.CategoryID) Count
FROM Products p
INNER JOIN Categories c ON c.CategoryID = p.CategoryID
GROUP BY p.CategoryID, c.CategoryName
HAVING Count(p.CategoryID) >= @min
ORDER BY c.CategoryName",
db.Parameter("@min", min));
}
}
В твоём примере трудно понять вообще для чего он нужен, в моём надеюсь тебе не просто будет всё понятно, а даже тривиально с первого взгляда. И прибегать к услугам Александреску чтобы понять этот код не надо.
Я конечно понимаю, что поступаю не совсем честно, в C++ нет нормального RTTI и видимо никогда не будет, но я хочу сказать, что в 99.99% задач твои знания шаблонов вряд ли пригодятся. А если бы ты и попытался их где-либо применить, то работая, к примеру, в моей команде, я тебе просто элементарно запретил бы это делать. Хотя на досуге мы могли об этом с увлечением поболтать. А вот упростить приведённую мной стандартную задачу до вызова одной функции у тебя на C++ не получится, сколько не читай Александреску. И проблема здесь, как тебе уже говорили, в ограниченности самого гибкого на свете языка C++, который следовал модным тенденциям и потребностям аж 20 лет назад, а сейчас просто элементарно устарел.
Кто-то из умных сказал — "Усложнять просто, упрощать сложно". Не спорю, почитав Александреску (вполне допускаю, что это весьма захватывающий акшин), можно легко научиться строить трёх-этажные шаблоны, но, ошибкой было бы думать (c) Ленин, что это сделает твои программы лучше, качественнее, сопровождабельнее. Это сделает их как раз только запутаннее и непонятнее и будем им грошь цена, после того как какой-нибудь студент, идущий за тобой, не поняв что там происходит, просто перепишет твой код на нормальный понятный язык. И будет, между прочим, прав.
Для меня эталоном программы уже давно является не виртуозное владение указателями, свитчами и шаблонами, а ясный и понятный, хорошо оформленный и откомментированный код. Впрочем, может это я просто старею...
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, VladD2, Вы писали:
VD>Я бы на твоем мнении не стал делать заявлений о чужишь знаниях если ты не можешь их адекватно оценить. Re[12]: Будущее C#
Здравствуйте, VladD2, Вы писали:
VD>Что понимается под списками? Реализация коллекций? Я вроде все более менее известные изучал по исходинкам. Не думаю, что товаришь может больше чем разработчики библиотек вроде stl, ATL, Boost...
А тебе не кажется что если бы разговор шол о просто коллекциях то Мейерс бы не свалился со стула? А еще в томже предисловии написано что он викинул из Болие эффективного С++ главу о шаблонах ибо понял что его знания о них находится на уровне типизарованых контейнеров и очень скоро станут банальными и это скоро наступило очень давно. Твои к стати знания о шаблонах тоже.
VD>Кто тебе сказал? Многие его оценивают очень даже по заслугам. Я зык без сомнения мощьный и гибкий, но так же без сомнения он тяжелый для чтения и узучения, а так же в виду упущений в дизайне слишком часто приводит к трудноуловимым ошибкам.
Ну если только в дизайне программы, а где не так в этом случае? VD>Шарп же полная противоположенность. Приятно было бы если Шарп стал ближе к С++ по возможностям. Но пусть это будет не в ущерб простотое и удобству.
К сожалению это не возможно. Либо возможности либо простота. Также я не спорю что для некоторых задачь шарп лучше подходит я сам настоял не переходе нашей конторы на шарп ибо для нашей АСУТП самое то.
Однако если нужно выжать из машины все что возможно то у шарпа против плюсов нет шансов.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
VD>>Я бы на твоем мнении не стал делать заявлений о чужишь знаниях если ты не можешь их адекватно оценить. WH>Re[12]: Будущее C#
Здравствуйте, Plutonia Experiment, Вы писали: PE>Скорее неправ на 100%. Перечитай ссылку, что сам дал
Нда? Он спутал списки типов и обобщенные контейнеры что далеко не одно и тоже и предназначены для совершенно разных целей.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, WolfHound, Вы писали:
IT>>>Неужели один прочитанный учебник может сделать из вчерашнего студента закоренелого профи? WH>>Нет но начальные знания дать может, а у них и этого нет.
VD> Я плякаль.
Ты в следующий раз прежде чем так выпендриваться зади в топ и погляди кто рядом с тобой стоит. И это при том, что кое-кто уже больше года туда не заходил по серьезному.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, AndrewVK, Вы писали:
AVK>>Не хами. WH>Простите погорячился. Просто мне надоело что вы с Владом орете на каждом шагу о примитивности С++ при этом имея весьма отдаленные представления о нем.
А накаком основании у тебя такое самомнеие? Буду спорить, что я тебя в реальном программировании на плюсах за пояс заткну. Я на плюсах писал еще 10 лет назад. И за плечами имею несколько серьезнийших проктов. Не думаю, что одна книжка (пусть даже самая крутая) сильно поднимит мой скил в области С++. Конечно не монстр в этой области, но моиз знания об этом языке уж точно нельзя называть "отдаленными".
Короче, кончай хамить. Такие заявления здесь себе не позволяют даже самые опотные гуру. А от тебя я их точно терпеть не намерен.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
VD>>Я бы на твоем мнении не стал делать заявлений о чужишь знаниях если ты не можешь их адекватно оценить. WH>Re[12]: Будущее C#
Здравствуйте, WolfHound, Вы писали:
WH>Нда? Он спутал списки типов и обобщенные контейнеры что далеко не одно и тоже и предназначены для совершенно разных целей.
Я спросил что ты имеешь в виду под этими словами.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>А тебе не кажется что если бы разговор шол о просто коллекциях то Мейерс бы не свалился со стула?
А мне все равно. Короче, мой вопрос остался без ответа.
WH> А еще в томже предисловии написано что он викинул из Болие эффективного С++ главу о шаблонах ибо понял что его знания о них находится на уровне типизарованых контейнеров и очень скоро станут банальными и это скоро наступило очень давно. Твои к стати знания о шаблонах тоже.
Еще раз настоятельно рекомендую не пытаться оценивать мои знания. Ты попросту неимеешь на это ни права, ни авторитета. И выглядит это как тухлый наезд.
VD>>Кто тебе сказал? Многие его оценивают очень даже по заслугам. Я зык без сомнения мощьный и гибкий, но так же без сомнения он тяжелый для чтения и узучения, а так же в виду упущений в дизайне слишком часто приводит к трудноуловимым ошибкам. WH>Ну если только в дизайне программы, а где не так в этом случае?
Попробуй членораздельно сформулировать вопрос.
VD>>Шарп же полная противоположенность. Приятно было бы если Шарп стал ближе к С++ по возможностям. Но пусть это будет не в ущерб простотое и удобству. WH>К сожалению это не возможно. Либо возможности либо простота. Также я не спорю что для некоторых задачь шарп лучше подходит я сам настоял не переходе нашей конторы на шарп ибо для нашей АСУТП самое то.
Это не невозможно. Это сложно. Нужно иметь обостренное чувство меры и огромный опыт. Надеюсь, что у ребят и МС эти качества есть.
WH>Однако если нужно выжать из машины все что возможно то у шарпа против плюсов нет шансов.
Как сказать. Сам язык не может определять производительность. Производительность кода зависит от оптимизаций и качества транслятора. Нетрудно найти реализациции С++ которые будут порождать код более медленный чем компилятор Шарпа (от МС).
К тому же, тормоза в реальных приложениях — это в 99% случаев не проблемы низкой скорости кода, а непаравильно выбранные алогоритмы.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.