Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Блин, Валерий Викторыч, Intel C++ 11.0. И ещё сейчас MS выложила бету VS2010.
А, ну да... Я пока на 2008 сижу... LVV>>Видимо, множественное наследование ликвидировали из-за наличия озвученных проблем. И сочли за благо ввести отдельную конструкцию. ГВ>Каких проблем?
По этому поводу вспомнилось из его статьи: любая книжка по С++ описывает, как не надо делать при множественном наследовании. Я сам писал — тут он прав... ГВ>>>Дык — не надо ж. Он там в качестве контраргумента всё время рассуждает о непонятности внутреннего устройства буста. LVV>>Для него — действительно жуть... Меня тоже только крайняя нужда заставит буст использовать... ГВ>ИМХО, это зря.
Ну, кое-что подсматриваю и использую. Но небольшие вещи. Типа интеллектуальных указателей. LVV>>Но вообще статья, конечно, оставляет впечатление, что писал достаточно опытный программер, которому ПРИШЛОСЬ перейти на С++ по необходимости. LVV>>А это — действительно УЖОСССССС!!!!! ГВ>Не знаю, у меня ощущение, что программер-то, может быть, и опытный, но очень сильно путает субъективное и объективное.
Объективно я осенью напишу. Вот сравню БлэкБокс с С++ на одних и тех же задачах — и напишу...
А от субъективного восприятия никуда не деться.
Особенно программистам-непрофессионалам, которые используют программирование по необходимости только для решения своих задач. Им даже адекватный инструмент для решения подобрать сложно. Ведь не хочется изучать лишний инструменть, чтобы один-два раза решить задачу.
Вот раньше был фортран — на нем все и писали...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, dmitry_npi, Вы писали:
_>Да нет, я-то сам его люблю. Случайно наткнулся на статью здесь. _>Он не просто его, не любит, он его ненавидит. И других заразить пытается. _>Вот, думаю, тролль Отличная приманка для священной войны.
фигня.. в книжках по разным языкам до сих пор встречаются главы "Как интегрироваться с C++"..
не ява, не шарп, не смалталк.. вот она — популярность
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ> M>Дело не в том, что считается базовой вещбю, а что — нет. Дело в том, что с теми же properties можно сразу использовать их из коробки, рыть гугл в поисках их замены, или писать boilerplate code каждый раз, сли их нет. Препочту первое. И так — со многим
ГВ> Да и на здоровье. Но ты же не несёшь по белу свету пургу наподобие статьи в топикстарте.
При желании могу
Вообще-то, все аргументы против С++ уже давно собраны в C++ FQA, имхо
Здравствуйте, LaptevVV, Вы писали:
LVV>Дык ПИСАТЬ НАДО... А в других языках писать НЕ НАДО...
Дык разница тогда тока в том, что для других ЯП написали библиотеку и положили рядом.
А тут написанные библиотеки в комплект не входят.
LVV>А челу требуется задачу решать, а не писать библиотеку...
Хай возьмет готовую.
Здравствуйте, doarn, Вы писали:
C>>C++ подвергался "демонизации" добрых 10 лет тому назад. Его жестко критиковали даже такие личности, как небезызвестный Линус Торвальдс. D>10 лет назад, С++ несколько другой был, как и сознание о способах использования. + альтернативы ему в мейнстриме — не существовало в принципе, так что в 1999м наезды на С++ были разговорами в пользу бедных. Когда там Java 1.5 вышла, где-то в районе 2003-2004го? А второй шарп?
Да не был С++ другим. Точно тот же самый уродец.
D>>>PS: наш сериализатор дает 1.2 гигабайта/секунду потоковую производительность (собственно упираемся в скорость C>>чтения/записи памяти) на данных умеренно-сложной структуры (поддерживая при этом возможность частичной десериализации C>>Эта цифра абсолютно ни о чем не говорит. Да и сериализация-то у Вас поди бинарная? D>Эта цифра например позволяет в терминах сериализации описывать внутренний ABI, не плодя сущностей для перевода сервиса в distributed состояние с сублинейной масшатабируемостью.
Чертовски за вас рад. Но повторюсь: цифра абсолютно ни о чем не говорит.
D>Цифра для бинарного варианта, в XML понятное дело помедленнее будет, да и используется только что бы веб-морде данные выплевывать. ORM на наших задачах использовать не только бессмысленно, но и вредно.
O/RM тут при чем?
D>>>PPS: а вот на шарпе аккуратное освобождение ресурсов приходится эмулировать жуткими костылями, дискасс C>>Ну уж точно менее жуткими, чем С++ с зоопарками shared_ptr<> auto_ptr<> и прочих костылей. D>Стандартизованный костыль перестает быть костылем.
Костыль, даже стандартизованный, остается костылем. Не фантазируйте.
C>>Да и что такого жуткого в операторе using? D>Ничего, только вот сам по себе, кроме как в примитивных случаях — задачу не решает.
Да ну? Серьезно? И в каких же случаях сей оператор "не решает задачу"? Назовите парочку.
C>>Вы можете предложить лучшее решение? D>Последовательное применение концепции владения и времени жизни + инструментальные средства реализации. Второе зависит от языка/платформы, первое — дело сугубо дизайна и дает одинаковый результат будучи реализованных хоть на С++, хоть на Java, хоть другими средствами.
Много пустых слов. Вы не ответили на поставленный вопрос: вы можете предложить лучшее решение по освобождению ресурсов (не памяти — она-то в отличие от.. освобождается автоматически) в управляемых средах?
Здравствуйте, Ночной Смотрящий, Вы писали:
CC>>В сравнении с тутошними срачами "C++ vs *" — статья детский лепет и обидки. НС>Да тутошние срачи тоже так себе в плане профессионализма, особенно свеженькие.
Это да.
Зато накал идиотизма и объем какашек, выливаемый друг на друга впечатляют.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>>>Я уж не знаю, почему так складывается, но как только кто-то выступает с резкой критикой C++, так такую пургу нести начинает — уши вянут. C>>Такой, как эта? ГВ>[...]
ГВ>Да нет, такой как в топикстарте.
Эта — которую Вы вырезали (стыдно уже стало, да?) — дает хорошую фору тому, что в топик старте.
ГВ>>>Любая. В твоем мире — если сериализация не встроена в платформу, то её нет, я уже понял. В моём — если какой-то фишки нет, то это означает, что она может быть любой. C>>Я еще раз прошу показать универсальный С++ сериализатор XML или Json для любого графа объектов. Двунаправленный. Дженерик (шаблонный).
ГВ>Сериализовать можно всё, что угодно, только не всякий раз это становится показателем здравого ума и трезвой памяти.
Значит показать не можете? "Слив засчитан" (уж простите мой жаргон, которому я набрался в этом форуме).
C>>Покажете или будете продолжать разводить демагогию и фанатичную чушь без единого факта по теме?
ГВ>Ты мне сначала покажи такую систему, где нужна сериализация любого графа любых объектов и где эта самая сериализация предварительно не спланирована. А потом — тебе сколько фактов ни дай, тебе всё индифферентно.
Здравствуйте, doarn, Вы писали:
C>>>>Да и что такого жуткого в операторе using? D>>>Ничего, только вот сам по себе, кроме как в примитивных случаях — задачу не решает. D>>А можно парочку примеров непримитивных случаев ? D>Когда ресурс (скажем read лок объекта) сохраняется в процессах неизвестного в точке вызова количества с непрогнозируемым временем жизни. D>А если время жизни самого ресурса ограниченно? D>А если ресурс нужно версионировать? =)
Все.
D>А слова только выглядят умными, реально все сводиться к простейшему принципу — "выстраивай иерархию владения и не передавай владение ресурсом, которым владаеешь, вниз по иерархии". Универсально, практически серебрянная пуля
Ну и бред...
Можно поинтересоваться, а Вы Александреску на ночь читаете?
Здравствуйте, CreatorCray, Вы писали:
CC>>>В сравнении с тутошними срачами "C++ vs *" — статья детский лепет и обидки. НС>>Да тутошние срачи тоже так себе в плане профессионализма, особенно свеженькие. CC>Это да. CC>Зато накал идиотизма и объем какашек, выливаемый друг на друга впечатляют.
Про идиотизм это Вы хорошо заметили...
Ясное дело, в чём разница. В первом случае "свойство" — это независимый тип, который можно переопределить, обобщённо реализовать, перенести из класса в класс, и вообще накрутить уйму всего, оставив единый синтаксис собственно объявления и использования. А во втором нужно каждый раз бегать и ручками привязывать свойства к типу ("set; get;" как символ настоящего джедая).
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, LaptevVV, Вы писали:
LVV>>Дык ПИСАТЬ НАДО... А в других языках писать НЕ НАДО... CC>Дык разница тогда тока в том, что для других ЯП написали библиотеку и положили рядом. CC>А тут написанные библиотеки в комплект не входят.
В случае тех же свойств, не "библиотеку положили рядом", а компилятор научили работать. Всё-таки есть разница.
Здравствуйте, Геннадий Васильев, Вы писали:
C>>Какого флейма? Они либо есть, либо их нет. В С++ их нет. О чем тут флеймить? Аналогично linq, lambda, events, attributes, properties, implicit typing, duck typing и многое другое. ГВ>Что-то больно много базовых вещей появляется, не находишь? Уже и linq в качестве базовых замаячил. Интересно, что дальше будет?
например, вывод на консоль.. в питоне(про 3ю версию не уверен) print — это оператор языка, а не функция.. базовая штука ведь
Здравствуйте, criosray, Вы писали:
ГВ>>Тебя гугль забанил? Первая ссылка по запросу "C++ property implementation": http://www.codeproject.com/KB/cpp/cpp_property_indexer.aspx C>Это не свойства. Это костыль, который пытается их эмулировать. В языке С++ нету свойств. тчк
А тебе надо чтоб именно в стандарте было вбито гвоздями?
Здравствуйте, CreatorCray, Вы писали:
ГВ>>>Тебя гугль забанил? Первая ссылка по запросу "C++ property implementation": http://www.codeproject.com/KB/cpp/cpp_property_indexer.aspx C>>Это не свойства. Это костыль, который пытается их эмулировать. В языке С++ нету свойств. тчк CC>А тебе надо чтоб именно в стандарте было вбито гвоздями?
Мне надо, чтоб свойства были в языке — чтоб ради определения одного свойства не требовалось возиться с созданием типов, шаблоноалександрескумагией и прочей мутотенью. Я должен решать задачи проекта, а не возиться с костылями языка.
Здравствуйте, MxKazan, Вы писали:
CC>>А тут написанные библиотеки в комплект не входят. MK>В случае тех же свойств, не "библиотеку положили рядом", а компилятор научили работать. Всё-таки есть разница.
По мне так один хрен.
По мне так в компилятор надо впихивать то, что никак нельзя нормально реализовать через библиотеки.
Здравствуйте, neFormal, Вы писали:
C>>>Какого флейма? Они либо есть, либо их нет. В С++ их нет. О чем тут флеймить? Аналогично linq, lambda, events, attributes, properties, implicit typing, duck typing и многое другое. ГВ>>Что-то больно много базовых вещей появляется, не находишь? Уже и linq в качестве базовых замаячил. Интересно, что дальше будет?
F>например, вывод на консоль.. в питоне(про 3ю версию не уверен) print — это оператор языка, а не функция.. базовая штука ведь
Аналогично было в Pascal. Только там это было нужно из-за примитивизма языка, не позволяющего создавать методы с переменным количеством аргументов.
Здравствуйте, CreatorCray, Вы писали:
CC>>>А тут написанные библиотеки в комплект не входят. MK>>В случае тех же свойств, не "библиотеку положили рядом", а компилятор научили работать. Всё-таки есть разница. CC>По мне так один хрен. CC>По мне так в компилятор надо впихивать то, что никак нельзя нормально реализовать через библиотеки.
Почему же Вы на Lisp`е не пишете? Там вообще кроме скобочек и нескольких арифметических операторов ничего нету.
Здравствуйте, CreatorCray, Вы писали:
CC>>>А тут написанные библиотеки в комплект не входят. MK>>В случае тех же свойств, не "библиотеку положили рядом", а компилятор научили работать. Всё-таки есть разница. CC>По мне так один хрен. CC>По мне так в компилятор надо впихивать то, что никак нельзя нормально реализовать через библиотеки.
В том то и дело, что нормально реализовать свойства через библиотеки нельзя — это будет мега пупер изврат. Страшно представить хотя-бы то, как со всеми этими библиотечными наворотами отлаживаться. Ведь аналога метаданных, понимаемых дебаггером, не будет.
Здравствуйте, Sinclair, Вы писали:
S>Есть более-менее стандартные вещи, типа "известить об изменении свойства". S>Вот, допустим, как-то так: S>
S>public class Test
S>{
S> public event Action<Test> OnChanged;
S> private int _a;
S> public int A
S> {
S> get {return _a;}
S> set
S> {
S> if (value == a)
S> return;
S> _a = a;
S> if (OnChanged!=null)
S> OnChanged(this);
S> }
S> }
S>}
S>
S>Покажи мне аналог этого кода на C++. И мы поймем разницу невооруженным мозгом.
вот, например.. объясни разницу, пожалуйста..
class Test
{
int _a;
boost::function<void (Test*)> OnChanged;
public:
int A(){return _a;}
void A(int a){_a = a; if(OnChanged != NULL) OnChanged(this);}
// илиvoid operator=(int& a){_a = a; if(OnChanged != NULL)OnChanged(this);}
};
Здравствуйте, criosray, Вы писали:
F>>например, вывод на консоль.. в питоне(про 3ю версию не уверен) print — это оператор языка, а не функция.. базовая штука ведь C>Аналогично было в Pascal. Только там это было нужно из-за примитивизма языка, не позволяющего создавать методы с переменным количеством аргументов.
ты не понял, print — это не базовая фича языка.. вот совсем ни разу..
но его внесли, посчитав это выгодным.. и что теперь, оглядываться на них и повторять то же самое?.
Здравствуйте, neFormal, Вы писали: F>должно компиляться и нормально работать..
Нет, не должно. Ну, то есть кроме компиляться.
Во-первых, то, что после "//или" делает не то что нужно.
Во-вторых, покажи мне, как будет выглядеть аналог Test.A+=5?
К примеру, отрезаем последний символ в StringBuilder:
sb.Length--;
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.