Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.11;
Скачать: CL | DM;

Вниз

Взгляд на С++ с другой стороны.   Найти похожие ветки 

 
oxffff ©   (2007-01-15 17:20) [0]

http://steps3d.narod.ru/tutorials/c-minus-minus.html


 
kaZaNoVa ©   (2007-01-15 17:31) [1]

а в чем сабж? изложите тут плз, накручивать счетчик стороннему сайту не хочется, тем более на народе:)


 
Axis_of_Evil ©   (2007-01-15 17:48) [2]

о боги - Боресков .. шутник, Ъ.


 
Игорь Шевченко ©   (2007-01-15 17:51) [3]

Автор неправ. Не стоит накручивать счетчик стороннему сайту


 
Ega23 ©   (2007-01-15 17:52) [4]

Любую хорошую идею можно довести до маразма.
ИМХО: ничего не имею против самого языка С++. Плохо то, что апологеты преподносят издевательство над типами данных и "хардкорный код" за офигенную фичу и пользуются этим напропалую.


 
Alkid ©   (2007-01-15 17:56) [5]


> Любую хорошую идею можно довести до маразма.
> ИМХО: ничего не имею против самого языка С++. Плохо то,
> что апологеты преподносят издевательство над типами данных
> и "хардкорный код" за офигенную фичу и пользуются этим напропалую.

Это не апологеты. Апологеты как раз весьма ратуют за нормальный человеческий код. Другое дело, что С++ позволяет делать некоторые вещи, которые в его контексте весьма естественны, а у программистов на других языках могут вызвать слом мозгов. Например - многочисленные техники работы с шаблогами.


 
Ega23 ©   (2007-01-15 18:20) [6]

Лёха, ты прекрасно понял, что я хотел сказать. Мы с тобой на эту тему уже неоднократно дискутировали.
Если есть тип данных char, то использовать его как byte - это насилие. Да, в конечном итоге они между собой равны: и там и там значение 0..0хFF. Но вот области операций над ними - совершенно разные.


 
wicked ©   (2007-01-15 19:43) [7]

начал читать... наткнулся на

> Со временем пришло понимание, что на С++ иначе просто нельзя
> !!! Средства, изначально заложенные в сам язык, настолько
> негибки и жестки, что реализовывать системы, требующие гибкости
> на С++ было крайне тяжело и постояннно приводило к кривым
> способам (т.е. это бага а фича :)).

и перехотел читать....

что же мешает, всё таки, такому прекрасному танцору, как г-н Боресков?


 
wicked ©   (2007-01-15 19:46) [8]

кстати, к фамилии Боресков у меня самые что ни на есть теплые чувства - две книжки по графике в соавторстве Шикина, Борескова и Зайцева(?) долгое время были у меня настольными... да и сейчас, если бы приперло разбирать что-то этакое, пошел бы первым делом смотреть туда


 
oxffff ©   (2007-01-15 23:00) [9]

Почитал статью. Согласен с автором.
Все грамотно.


 
DrPass ©   (2007-01-15 23:05) [10]


> что же мешает, всё таки, такому прекрасному танцору, как
> г-н Боресков?

Из личного опыта (приходится сопровождать массу плюсового софта, написанную давно ушедшими в забвение программистами):
Жутко мешают макросы, шаблонные классы, нестрогая типизация, множественное наследование и т.д. Это не программы, это свалка синтаксических конструкций. И каждый раз ловлю себя на мысли, что на других языках афтары просто не смогли бы написать весь этот бред.


 
oxffff ©   (2007-01-15 23:12) [11]


> > что же мешает, всё таки, такому прекрасному танцору, как
>
> > г-н Боресков?


Есть такой паттерн class factory, так вот его придумали для С++ поскольку нет динамического инстанцирования.

С++ -  это макро ООП.


 
Sergey Masloff   (2007-01-15 23:22) [12]

DrPass ©   (15.01.07 23:05) [10]
Ну с множественным наследием согласен. Макросы туда-сюда, просто их столько готовых стандартных свои конечно можно к минимуму свести. А вот шаблоны-то за что? очень удобная вещь и особых трудностей в сопровождении что-то не замечаю.


 
Celades ©   (2007-01-15 23:35) [13]


> http://steps3d.narod.ru/tutorials/c-minus-minus.html

баян! уже даже не смешно. У автора явно запущенная стадия синдрома дауна. Уж его не вылечить.


 
Gero ©   (2007-01-15 23:58) [14]

Зачем полумертвого пинать?


 
wicked ©   (2007-01-16 00:05) [15]

> DrPass ©   (15.01.07 23:05) [10]

> Из личного опыта (приходится сопровождать массу плюсового
> софта, написанную давно ушедшими в забвение программистами):
>
> Жутко мешают макросы, шаблонные классы, нестрогая типизация,
>  множественное наследование и т.д. Это не программы, это
> свалка синтаксических конструкций. И каждый раз ловлю себя
> на мысли, что на других языках афтары просто не смогли бы
> написать весь этот бред.

то есть язык виноват в том, что понаписывали афтары?...
следуя логике, нам нужно будет судить молоток за то, что ним голову пробили? ;)

> oxffff ©   (15.01.07 23:12) [11]

> Есть такой паттерн class factory, так вот его придумали
> для С++ поскольку нет динамического инстанцирования.

там еще много чего нет... и ничего, живут люди...
да и дельфи тоже МНОГО ЧЕГО нет, но если я об этом заикнусь, то налетит куча борцунов, которые мне быстро докажут, что и БЕЗ ЭТОГО жить можно...
так что это вопрос скорее философии и личных предпочтений/трудолюбия/лени

> Sergey Masloff   (15.01.07 23:22) [12]

> DrPass ©   (15.01.07 23:05) [10]
> Ну с множественным наследием согласен. Макросы туда-сюда,
>  просто их столько готовых стандартных свои конечно можно
> к минимуму свести. А вот шаблоны-то за что? очень удобная
> вещь и особых трудностей в сопровождении что-то не замечаю.

поскольку в цпп нету интерфейсов (в стиле java или delphi или COM), то множественное наследование - просто нужная вещь для именно реализации интерфейсов
хотя, в принципе, никто не мешает их и через простое агрегирование реализовать... но вот шарман уже не тот ;)
оговорюсь, что COM сервера на цпп я писал всего один раз и ничего приятного не испытал :)

а про шаблоны согласен... вопящим про их не нужность можно сказать только одно - "вы не умеете их готовить"


 
wicked ©   (2007-01-16 00:07) [16]

> Gero ©   (15.01.07 23:58) [14]

> Зачем полумертвого пинать?

это кого?... Борескова или цпп? :)


 
Бурундук ©   (2007-01-16 00:07) [17]

2 oxffff ©   (15.01.07 23:12) [11]
Не богохульствуйте, коллега.
Паттерн class factory может иногда и в Дельфях пригодиться.

2 Gero ©   (15.01.07 23:58) [14]
"Официальное сообщение о его смерти - четвертое по счету за последние два года - считалось достоверным в течение почти шести месяцев"...


 
clickmaker ©   (2007-01-16 10:17) [18]

Блин, на народе кто-нибудь вообще основы веб-дизайна знает? Ну как серпом по яйцам желтый текст на черном фоне по глазам...


 
Zeqfreed ©   (2007-01-16 10:39) [19]

> clickmaker ©   (16.01.07 10:17) [18]

Хороший дизайн на народе будет смотреться нелепо.


 
GRAND25 ©   (2007-01-16 10:43) [20]

Очень хорошая и правильная ветка для дельфийского форума! Идеологически выдержанная. Респект!


 
clickmaker ©   (2007-01-16 10:48) [21]


> [19] Zeqfreed ©   (16.01.07 10:39)
> > clickmaker ©   (16.01.07 10:17) [18]
>
> Хороший дизайн

Хороший дизайн - это уже само по себе хорошо ;)


 
Ega23 ©   (2007-01-16 10:53) [22]


> Блин, на народе кто-нибудь вообще основы веб-дизайна знает?
>  Ну как серпом по яйцам желтый текст на черном фоне по глазам.
> ..


Я скопировал текст, вставил в Word, распечатал (12 страниц вроде), скрепил тремя скрепками, унёс домой и вдумчиво читал в сортире и ванной.
После прочтения возник вопрос: а действительно, можно-ли в дельфях создать объект, заранее не зная его класс?
Сейчас думаю над этим.


 
Kerk ©   (2007-01-16 11:01) [23]

[22] Ega23 ©   (16.01.07 10:53)
> После прочтения возник вопрос: а действительно, можно-ли
> в дельфях создать объект, заранее не зная его класс?

Можно. У меня лаба в универе была, я там dfm-ку руками парсил и создавал все.


 
Бурундук ©   (2007-01-16 11:08) [24]

Ega23 ©   (16.01.07 10:53) [22]
Можно, если известен базовый класс с виртуальным конструктором.


 
Kerk ©   (2007-01-16 11:09) [25]

> [24] Бурундук ©   (16.01.07 11:08)

Базовый класс всегда известен :)


 
Ega23 ©   (2007-01-16 11:10) [26]


> Можно, если известен базовый класс с виртуальным конструктором.


А что дальше? Ну известен базовый. Ну у конструктора virtual стоит. Переменную-то как объявить?


 
Kerk ©   (2007-01-16 11:11) [27]

> [26] Ega23 ©   (16.01.07 11:10)

class of ...


 
vlad-mal ©   (2007-01-16 11:14) [28]

А я бы не отказался от reflection...


 
Ega23 ©   (2007-01-16 11:17) [29]


> class of ...


А, точно. Как коллекцию объявить, а в конструкторе уже анализировать. Ясно.


 
Бурундук ©   (2007-01-16 11:18) [30]

Ega23 ©   (16.01.07 11:10) [26]
так переменную этого базового класса и объяви. Далее - полиморфизм.
Можно еще объявить как TObject, только толку от этого будет мало.
Переменную неизвестного класса ты, конечно, никак объявить не сможешь :-)


 
Kerk ©   (2007-01-16 11:18) [31]

> [29] Ega23 ©   (16.01.07 11:17)

Какую коллекцию? Олегтычо?


 
Ega23 ©   (2007-01-16 11:18) [32]

Только, ИМХО, в данном случае виртуальность базового конструктора вовсе не обязательна.


 
Ega23 ©   (2007-01-16 11:19) [33]


> Какую коллекцию? Олегтычо?
>


Нормально, это сленг у меня такой. Пример - в TCollection


 
Бурундук ©   (2007-01-16 11:25) [34]

2 Ega23 ©   (16.01.07 11:18) [32]
>Только, ИМХО, в данном случае виртуальность
>базового конструктора вовсе не обязательна.

А как без неё-то?
Как ты вызовешь конструктор неизвестного класса?


 
vuk ©   (2007-01-16 11:26) [35]

to Ega23 ©   (16.01.07 11:18) [32]:
>Только, ИМХО, в данном случае виртуальность базового конструктора
>вовсе не обязательна.
Это только тогда прокатит, если конструктор в потомках не переопределять. Никогда и ни за что.


 
vuk ©   (2007-01-16 11:28) [36]

to Бурундук ©   (16.01.07 11:25) [34]:
>Как ты вызовешь конструктор неизвестного класса?
Вызвать-то он вызовет. Вопрос в том, что он вызовет.


 
GRAND25 ©   (2007-01-16 11:29) [37]

Вообще, считается признаком хорошего тона делать деструктор ВСЕГДА виртуальным. Почему же конструктор низя? Я думаю, что можно и даже нужно!


 
vlad-mal ©   (2007-01-16 11:29) [38]

Автор прото желтый червяк:

Еще одной интересной особенностью языка являются ссылки (references). Давайте сравним два описания функции:

void func1 ( A& a );

void func2 ( A a );


В чем разница между этими описаниями (кроме того, что возможно программист просто пропустил символ "&") ?

А в том, что во втором случае внутрь функции передается не то, что попросил передать программист, а лишь его копия. Т.е сначала вызывается copy-constructor, а по возвращении еще и деструктор.

Т.е. всего один символ в описании параметра может привести к очень большим затратам на создание и уничтожение вот этих временных объектов. А если это достаточно "тяжеловесный" объект или данная операция проводится в цикле, то затраты могут оказаться очень большими.

Не говоря при этом о том, что если программист надеется через переданный в функцию объект получить какой-то результат (т.е. изменение в объекте), то он надеется совершенно напрасно - будет изменена лишь копия объекта, которая сразу же после этого будет разрушена. Здорово, а ?

Такое ощущение, что он сам сдуру неправильно описал метод, в который передается не то, что нужно, потом его за это взрючили и лишили квартальной премии. И так семь раз подряд. Затем  родилась статья.


 
Ega23 ©   (2007-01-16 11:30) [39]

Так, меня не слушать, у меня чё-то пальцы путаются. я уже virtual c reintroduce начал путать.


 
vuk ©   (2007-01-16 11:34) [40]

to GRAND25 ©   (16.01.07 11:29) [37]:
>Я думаю, что можно и даже нужно!
И потом в потомках бороться с фиксированным набором параметров.  И зачем?



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.039 c
2-1169635413
qwert55
2007-01-24 13:43
2007.02.11
Получение целой части


4-1159303917
Dmitry_177
2006-09-27 00:51
2007.02.11
Борландовские сообщения CM_MOUSEENTER и CM_MOUSELEAVE в API


15-1169077988
mdeebivaetje
2007-01-18 02:53
2007.02.11
утилита.


2-1169474454
Ega23
2007-01-22 17:00
2007.02.11
Как офицально называется MSDE под MS SQL 2005?


2-1169586449
Pasha L
2007-01-24 00:07
2007.02.11
Когда следует вызывать connect от idhttp