Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.049 c
2-1169495030
Garacio
2007-01-22 22:43
2007.02.11
Invalid pointer operation


15-1169377163
Kolan
2007-01-21 13:59
2007.02.11
Клавиатура Дворака


9-1143715110
Ancient
2006-03-30 14:38
2007.02.11
Скрипты для Делфей


2-1169574821
-John-Doe-
2007-01-23 20:53
2007.02.11
Содержимое из WebBrowser в MemoryStream ???


8-1150218652
novarm44
2006-06-13 21:10
2007.02.11
Скорость прорисовки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский