Re[25]: С vs C++
От: CreatorCray  
Дата: 04.02.10 15:40
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Из того, с чем не работаю, примеры не привожу.

CC>>А с С++ ты работаешь?

I>Приходится посматривать туда.

А мы там давно работаем. В текущем проекте под 2008R2 используется С#, С и С++. C# исключительно для гуя.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: С vs C++
От: Aleх  
Дата: 04.02.10 15:43
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Aleх, Вы писали:


A>>>>Во первых, нужно эффективно реализовать строку. Что я имею ввиду? Обычно строки используемые в таких случаях имеют маленькую длину. В таком случае можно применить слудующую оптимизацию: строка до определенного размера будет хранится не в динамической памяти, а в массиве фиксированной длины, являющимся членом класса строка.


CC>>>В качестве лирического отступления.

CC>>>При переходе с одной версии STL на другую, при неизменном компиляторе мы как то поимели неслабый провал производительности в парсере, который работал с std::string.
CC>>>После разбора полётов оказалось, что виновата реализация std::string с буфером для маленьких строк. После "хака", убирающего буфер всё опять стало хорошо.

A>>Ок. Там настраивался размер этого буфера? его можно было отключить через параметр шаблона класса string? Наверное нет.

CC>Настраиваемый через шаблонный параметр размер буфера это цирк.
CC>А если в одном месте программы идеальный буфер == 20 символов а потом строки передаются в код, где идеальный размер уже 50 что будет?
Например преобразование типа строки с буфером 20 символов к строке с буфером 50 символов.
Естественно данный подход не будет давать оптимальных оптимизаций, но всё же это лучше чем вообще ничего. К тому же С++ не дает ничего лучше.
A>>Тогда причем здесь это, я же описал совершенно другой случай.
CC>Это всё к тому, что далеко не все "оптимизации" на практике ускоряют работу.
CC>Причем работающая на конкретном проце оптимизация может ацки тормозить на другом.
Это если какие процы рассматривать? Как мне кажется, те оптимизации, которые на разных процах ведут себя по разному выполняет компилятор, но никак не программист.

A>>>>Во вторых, контейнер map тоже должен быть настраиваемым. Например, в качестве дополнительного параметра шаблона должно быть возможно выбирать способ внутреннего представления отображения (double_hashing, chain_hashing, red_black_tree, avl_tree, ordered_vector), которое никак не влияет на интерфейс map.


CC>>>Я уже представляю себе этот нереальный пипец в коде.

A>>В чем заключается этот пипец?
CC>В огромном шаблоне, в котором будет куча кода для реализации всех этих внутренних представлений.
Ну и что здесь плохого? Александреску, например, пропагандирует такой подход.
Re[26]: С vs C++
От: Vamp Россия  
Дата: 04.02.10 15:43
Оценка: +1
CC>Согласен с оратором, что оппоненту следует разъяснить, зачем проперти все таки так нужен в С++.
Причем без отсылки к шарповским библиотекам.
Да здравствует мыло душистое и веревка пушистая.
Re[7]: С vs C++
От: CreatorCray  
Дата: 04.02.10 15:59
Оценка:
Здравствуйте, Aleх, Вы писали:

A>>>Ок. Там настраивался размер этого буфера? его можно было отключить через параметр шаблона класса string? Наверное нет.

CC>>Настраиваемый через шаблонный параметр размер буфера это цирк.
CC>>А если в одном месте программы идеальный буфер == 20 символов а потом строки передаются в код, где идеальный размер уже 50 что будет?

A>Например преобразование типа строки с буфером 20 символов к строке с буфером 50 символов.

A>Естественно данный подход не будет давать оптимальных оптимизаций, но всё же это лучше чем вообще ничего. К тому же С++ не дает ничего лучше.

А не проще ли будет ускорить реально тормозящее место во всех реализациях строки — прикрутить к строке быстрый кастомный аллокатор?
Считай это подсказкой направления.

A>>>Тогда причем здесь это, я же описал совершенно другой случай.

CC>>Это всё к тому, что далеко не все "оптимизации" на практике ускоряют работу.
CC>>Причем работающая на конкретном проце оптимизация может ацки тормозить на другом.

A>Это если какие процы рассматривать? Как мне кажется, те оптимизации, которые на разных процах ведут себя по разному выполняет компилятор, но никак не программист.

Hint: дело не в командах проца а в работе кэша.

CC>>>>Я уже представляю себе этот нереальный пипец в коде.

A>>>В чем заключается этот пипец?
CC>>В огромном шаблоне, в котором будет куча кода для реализации всех этих внутренних представлений.
A>Ну и что здесь плохого? Александреску, например, пропагандирует такой подход.

Для людей, пишущих в стиле Александреску, на одном из моих предыдущих мест работы появился термин "укушенный Александреску".
Ибо человек, постигший Александреску-дзэн поначалу начинает писать на шаблонах всё. В прямом смысле, вообще всё.
А потом приходит пушистый северный зверёк в виде черепашьей скорости компиляции и (да, бывает и такое!) compiler limits.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: С vs C++
От: Aleх  
Дата: 04.02.10 16:16
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Aleх, Вы писали:


A>>>>Ок. Там настраивался размер этого буфера? его можно было отключить через параметр шаблона класса string? Наверное нет.

CC>>>Настраиваемый через шаблонный параметр размер буфера это цирк.
CC>>>А если в одном месте программы идеальный буфер == 20 символов а потом строки передаются в код, где идеальный размер уже 50 что будет?

A>>Например преобразование типа строки с буфером 20 символов к строке с буфером 50 символов.

A>>Естественно данный подход не будет давать оптимальных оптимизаций, но всё же это лучше чем вообще ничего. К тому же С++ не дает ничего лучше.

CC>А не проще ли будет ускорить реально тормозящее место во всех реализациях строки — прикрутить к строке быстрый кастомный аллокатор?

Можно и так, если это позволит достичь желаемых результатов. Но все равно подход останется тем же — аллокатор будет передаваться в качестве параметра шаблона.
CC>Считай это подсказкой направления.

A>>>>Тогда причем здесь это, я же описал совершенно другой случай.

CC>>>Это всё к тому, что далеко не все "оптимизации" на практике ускоряют работу.
CC>>>Причем работающая на конкретном проце оптимизация может ацки тормозить на другом.

A>>Это если какие процы рассматривать? Как мне кажется, те оптимизации, которые на разных процах ведут себя по разному выполняет компилятор, но никак не программист.

CC>Hint: дело не в командах проца а в работе кэша.
И что? кеш это часть процессора. и про команды я ничего не писал.

A>>Ну и что здесь плохого? Александреску, например, пропагандирует такой подход.

CC>Для людей, пишущих в стиле Александреску, на одном из моих предыдущих мест работы появился термин "укушенный Александреску".
CC>Ибо человек, постигший Александреску-дзэн поначалу начинает писать на шаблонах всё. В прямом смысле, вообще всё.
CC>А потом приходит пушистый северный зверёк в виде черепашьей скорости компиляции и (да, бывает и такое!) compiler limits.
Конечно, нужно знать меру, но вообще избегать шаблонов и особенно считать, что они не нужны совсем (как считают, например, оберонщики ) тоже не стоит.
Re[26]: С vs C++
От: MxKazan Португалия  
Дата: 04.02.10 17:18
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Т.е. мьсе трепло?

В таком тоне я общаться не собираюсь.

P.S. Пример
Автор: CreatorCray
Дата: 30.01.08
Re[19]: С vs C++
От: dr.Chaos Россия Украшения HandMade
Дата: 04.02.10 18:35
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Это все оттого, я считаю, что в C# мало средств метапрограммирования. Без макросов типичную конструкцию (свойство, например) разработчик языка не выпустит в виде библиотеки — надо в язык включать. А разработчик приложений не сможет генерацию и поддержку boilerplate поручить макросу — ему нужны будут тулзы.


Нет, это из-за распространённости языка . На C# тоже можно писать лаконично, красиво и понятно, только миллионам леммингов надо быстро напедалить, вот и есть хорошие штамповалки, там где они нужны и востребованы. На С++ тоже востребованы, но сложны в изготовлении. Макросы безусловно вещь мощная, но их никто не даст использовать кому попало .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[26]: С vs C++
От: hattab  
Дата: 04.02.10 19:36
Оценка: 2 (1)
Здравствуйте, CreatorCray, Вы писали:

CC> Согласен с оратором, что оппоненту следует разъяснить, зачем проперти все таки так нужен в С++.


Ну, вообще, свойства это один из способов улучшения инкапсуляции, безотносительно языка. Просто еще один способ отделить интерфейс от реализации. Можно-ли обойтись без них? Разумеется. Вопрос удобства.
avalon 1.0rc2 rev 272
Re[27]: С vs C++
От: CreatorCray  
Дата: 04.02.10 22:48
Оценка:
Здравствуйте, MxKazan, Вы писали:

CC>>Т.е. мьсе трепло?

MK>В таком тоне я общаться не собираюсь.
Аналогично. Потому и прошу подтверждать ссылками.

MK>P.S. Пример
Автор: CreatorCray
Дата: 30.01.08

Я право не вижу там ничего подобного "вовсю доказывающих, что в указателях прелестного С++ нет ничего сложного"
Единственная фраза, содержащая слово "указатель" вот:

Блин, такое ощущение что программирование на С++ ассоциируется с суровой рукопашной с указателями, копипастом кода и т.п.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: С vs C++
От: dr.Chaos Россия Украшения HandMade
Дата: 05.02.10 08:44
Оценка: +1
Здравствуйте, Aleх, Вы писали:

A>Например преобразование типа строки с буфером 20 символов к строке с буфером 50 символов.

A>Естественно данный подход не будет давать оптимальных оптимизаций, но всё же это лучше чем вообще ничего. К тому же С++ не дает ничего лучше.
A>>>Тогда причем здесь это, я же описал совершенно другой случай.
Ничем он особо не лучше: от параметров шаблонов пухнет страшно код, да и засунуть 2 такие строки в один массив целая проблема. Т.е. Здесть возможно даже аллокатор стоит делать не параметром шаблона, а параметром конструктора.

A>>>>>Во вторых, контейнер map тоже должен быть настраиваемым. Например, в качестве дополнительного параметра шаблона должно быть возможно выбирать способ внутреннего представления отображения (double_hashing, chain_hashing, red_black_tree, avl_tree, ordered_vector), которое никак не влияет на интерфейс map.


A>Ну и что здесь плохого? Александреску, например, пропагандирует такой подход.


Скажем по другому: чем это лучше 5ти классов map, map_double_hashing и т.д. с одним интерфейсом? Допустим параметразовать можно было бы хеш функцией, но все эти 5 реализаций карты очень различаются и найти что-то общее в рамках одной реализации тут ИМХО будет сложнее, да и смысл?
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[9]: С vs C++
От: _d_m_  
Дата: 05.02.10 08:51
Оценка:
Здравствуйте, bazis1, Вы писали:


B>>>Производительность не меньше? Какие тогда проблемы юзать язык в тех задачах, где от него есть польза, забив, труъ ли это ЯВУ? Или надо шашечки, а не ехать?

___>>Ехать. Но с комфортом.
B>Приведите пример задачи, которую нельзя "некриво" реализовать на С++ и я удивлю вас контрпримером

Да этими примерами забит весь КСВ. Оскомину уже набило.
Re[26]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.02.10 11:00
Оценка: :))
Здравствуйте, CreatorCray, Вы писали:

I>>>>Из того, с чем не работаю, примеры не привожу.

CC>>>А с С++ ты работаешь?

I>>Приходится посматривать туда.

CC>А мы там давно работаем. В текущем проекте под 2008R2 используется С#, С и С++. C# исключительно для гуя.

Сколько месяцев этому проекту ?
сколько релизов было ?
Сколько тестеров, колько девелоперов ?
Сколько кастомизаций/варантов деплоймента ?
Сколько раз кастомер менял требования ?
Сколько есть конкурентов у продукта ?
Re[27]: С vs C++
От: CreatorCray  
Дата: 05.02.10 11:04
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

I>>>Приходится посматривать туда.

CC>>А мы там давно работаем. В текущем проекте под 2008R2 используется С#, С и С++. C# исключительно для гуя.

I>Сколько месяцев этому проекту ?

I>сколько релизов было ?
I>Сколько тестеров, колько девелоперов ?
I>Сколько кастомизаций/варантов деплоймента ?
I>Сколько раз кастомер менял требования ?
I>Сколько есть конкурентов у продукта ?

Может тебе еще и номера счетов и пароли к SVN написать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: загадка
От: bazis1 Канада  
Дата: 05.02.10 12:09
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>WTF, что это за язык?!

Это может быть любой язык, поддерживающий препроцессор
Re[28]: С vs C++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.02.10 12:24
Оценка:
Здравствуйте, CreatorCray, Вы писали:

I>>Сколько месяцев этому проекту ?

I>>сколько релизов было ?
I>>Сколько тестеров, колько девелоперов ?
I>>Сколько кастомизаций/варантов деплоймента ?
I>>Сколько раз кастомер менял требования ?
I>>Сколько есть конкурентов у продукта ?

CC>Может тебе еще и номера счетов и пароли к SVN написать?


тяжелый случай. значит, зайдем с другой стороны,

объясни, почему рфакторинги, перечисленые в книге http://www.rsdn.ru/res/book/prog/rtp.xml
Автор(ы): Джошуа Кериевски
Книга "Рефакторинг с использованием шаблонов" представляет результаты многолетнего опыта профессионального программиста по применению шаблонов проектирования (паттернов). Авторский подход к проектированию состоит в том, что следует избегать как недостаточного, так и избыточного проектирования, постоянно анализируя готовый работоспособный код и реорганизуя его только в том случае, когда это приведет к повышению его эффективности, упрощению его понимания и сопровождения. Шаблоны проектирования — не панацея, так что бывают как ситуации, когда такая реорганизация должна выполняться с использованием шаблонов проектирования, так и ситуации, когда наилучшее решение состоит в отказе от них. Автор на основании как собственного, так и чужого опыта детально рассматривает различные признаки кода, требующего рефакторинга, описывает, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывает его механику, подробно разбирая ее на конкретных примерах из реальных задач. Книга "Рефакторинг с использованием шаблонов" может рассматриваться и как учебник по рефакторингу для программиста среднего уровня, и как справочное пособие для профессионала, которое может подсказать, какое именно решение стоит принять в той или иной сложной ситуации.

в главах 6-9 неактуальны для с++ воообще, а не только вашей песочницы

хочу услышать внятный ответ, как наприер:

программируя на с++ у программиста открываются мощные внутренние интеллектуальные способности и это даёт такой эффкт, что все инструменты рефакторнга являются не более чем тормозом.

Пока что все что сказал ты и dr.Chaos сводится к абурду следующего вида —
дай дураку перфоратор/шуроповерт, он всю стену враз опаскудит, посему для настоящих мастеров перфоратор/шуроповерт не нужен в прынцыпе.
Re[29]: С vs C++
От: CreatorCray  
Дата: 05.02.10 12:55
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>объясни, почему рфакторинги, перечисленые в книге http://www.rsdn.ru/res/book/prog/rtp.xml
Автор(ы): Джошуа Кериевски
Книга "Рефакторинг с использованием шаблонов" представляет результаты многолетнего опыта профессионального программиста по применению шаблонов проектирования (паттернов). Авторский подход к проектированию состоит в том, что следует избегать как недостаточного, так и избыточного проектирования, постоянно анализируя готовый работоспособный код и реорганизуя его только в том случае, когда это приведет к повышению его эффективности, упрощению его понимания и сопровождения. Шаблоны проектирования — не панацея, так что бывают как ситуации, когда такая реорганизация должна выполняться с использованием шаблонов проектирования, так и ситуации, когда наилучшее решение состоит в отказе от них. Автор на основании как собственного, так и чужого опыта детально рассматривает различные признаки кода, требующего рефакторинга, описывает, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывает его механику, подробно разбирая ее на конкретных примерах из реальных задач. Книга "Рефакторинг с использованием шаблонов" может рассматриваться и как учебник по рефакторингу для программиста среднего уровня, и как справочное пособие для профессионала, которое может подсказать, какое именно решение стоит принять в той или иной сложной ситуации.

I>в главах 6-9 неактуальны для с++ воообще, а не только вашей песочницы
Ты б хоть ссылку давал не на содержание а на сам текст
Неужто ты хочешь сказать что в

I>хочу услышать внятный ответ

Только после того, как ответишь что из этого умеет решарпер:

  • Replace Constructors with Creation Methods[/*]
  • Move Creation Knowledge to Factory[/*]
  • Encapsulate Classes with Factory[/*]
  • Introduce Polymorphic Creation with Factory Method[/*]
  • Encapsulate Composite with Builder[/*]
  • Inline Singleton[/*]
  • ComposeMethod[/*]
  • Replace Conditional Logic with Strategy[/*]
  • Move Embellishment to Decorator[/*]
  • Replace State-Altering Conditionals with State[/*]
  • Replace Implicit Tree with Composite[/*]
  • Replace Conditional Dispatcher with Command[/*]
  • Form Template Method[/*]
  • ExtractComposite[/*]
  • Replace One/Many Distinctions with Composite[/*]
  • Replace Hard-Coded Notifications with Observer[/*]
  • Unify Interfaces withAdapter[/*]
  • Extract Adapter[/*]
  • Replace Implicit Language with Interpreter [/*]
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
  • Забанили по IP, значит пора закрыть эту страницу.
    Всем пока
    Re[3]: загадка
    От: TarasCo  
    Дата: 05.02.10 13:00
    Оценка:
    B>Это может быть любой язык, поддерживающий препроцессор

    Ну, в общем да )). Но все же хотелось услышать конкретные предположения о языке( платформе, фреймворке ). Короче что за чудо и откуда?
    Да пребудет с тобою сила
    Re[30]: С vs C++
    От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
    Дата: 05.02.10 13:13
    Оценка:
    Здравствуйте, CreatorCray, Вы писали:

    I>>хочу услышать внятный ответ

    CC>Только после того, как ответишь что из этого умеет решарпер:

    Не валяй дурака, нужен ли эти рефакторинги для с++ или нет, не зависят от того, умеет ли это решарпер и любому, знакомому с логикой это понятно.

    Но раз уж ты таки считаешь, что нобходимость рефакторинга в с++ зависит от решарпера,

    в готовом виде он конечно все это он не умеет, кроме
    но все до единого эти рефакторнги делаются из более простых, например выделение подкласса, интерфейса, движение метода, преобразование конструктора в фабричный метод и тд.

    Соответсвенно, хочу услышать внятный вопрос — нужны ли рефакторинги _тобою_ перечисленные в С++.
    Т.е. да или нет, без виляний в твоем духе.
    Re[31]: С vs C++
    От: CreatorCray  
    Дата: 05.02.10 13:25
    Оценка:
    Здравствуйте, Ikemefula, Вы писали:

    I>>>хочу услышать внятный ответ

    CC>>Только после того, как ответишь что из этого умеет решарпер:

    I>Не валяй дурака, нужен ли эти рефакторинги для с++ или нет, не зависят от того, умеет ли это решарпер и любому, знакомому с логикой это понятно.

    Зависят. Ты тут речь завёл с того, что С++ дескать такое говно что под него нет тулов для рефакторинга.

    I>>>Парсить С++ код та еще задача. до сих пор нет нормального средства рефакторинга, которое было бы таким же доступным как и то что есть в решарпере

    На что тебе был приведён тул — ассист.
    Ты начал ныть что мол, он слишком мало умеет.
    На что тебе было сказано что для рефакторинга в С++ он умеет достаточно.

    I>в готовом виде он конечно все это он не умеет

    Тогда какое отношение эта книга имеет к разговору о тулах для рефакторинга?

    I>но все до единого эти рефакторнги делаются из более простых, например выделение подкласса, интерфейса, движение метода, преобразование конструктора в фабричный метод и тд.

    Простые рефакторинги для методик разработки, принятых и используемых в С++ в ассисте есть.

    I>Соответсвенно, хочу услышать внятный вопрос — нужны ли рефакторинги _тобою_ перечисленные в С++.

    Это не мною перечисленные. Это "рфакторинги, перечисленые в книге в главах 6-9" из твоего поста.

    I>Т.е. да или нет, без виляний в твоем духе.

    Прекращай нести чушь.
    ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
    Забанили по IP, значит пора закрыть эту страницу.
    Всем пока
    Re: С vs C++
    От: shasa  
    Дата: 05.02.10 13:47
    Оценка: :))
    Здравствуйте, abdul.zycor, Вы писали:
    AZ> ... В общем приводите свое мнение, высказывайтесь, только без лишнего фанатизма пожалуйста.

    Да я бы не стал никогда писать на чистом си или сипипи. Если мне не надо конструктора в объекте я объявлю струтуру, нужен конструктор объявлю класс. Нет смысла все функции прятать в методы. Нет смысла обявлять все переменные в начале блока, как в си, а есть смысл объявлять по мере необходимости. В общем чистота программы в плане написания на си или на сипипи ненужна.
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.