|
|
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
1. Интерфейсы компонентов теряют любой смысл. В программах на Паскале (я имею ввиду Turbo Pascal 7.1 для DOS) я мог написать компонент, а имя файла, в котором он расположен, использовалось как имя этого компонента. Там была такая замечательная секция Interface, читая которую, всегда можно было понять, к чему обращаться. В программах на Java имя физического модуля задаёт имя единственного доступного извне класса, который тоже задаёт интерфейс. В программах на Си есть заголовочные файлы. С++ в этом свете - уникум. Во-первых, имена физических модулей никак ни с чем не связаны. Вроде бы тоже существуют заголовочные файлы, но: а) Если я написал иерархию классов, я вынужден полностью поместить её объявление в заголовок; б) Как только я где-нибудь сказал магическое слово "template", туда же - в заголовок - тянется и вся реализация! Выходит, что в реальной практике _интерфейсов - нет_! Т.е. ситуация построена так, что всегда можно узнать имя методов базового класса, к которому вообще-то может быть и нельзя напрямую обращаться, даже этот класс завёрнут в пространство имён: оно всё равно будет находиться в том же заголовочном файле, и его можно узнать. А нотации интерфейсов во-первых, не придерживаются программисты, и во-вторых, это есть неоправданное усложнение по правилу бритвы Оккама. 2. Что для меня на самом деле важно? Я совершенно точно знаю, что со 100% уверенностью в моей программе будут properties. Даже если я не буду их применять, они будут всё-равно - как код, который делает ровно то же самое. Однако, если я начну применять свойства как отдельный библиотечный элемент, то я буду вынужден на каждом шагу запинаться об трёхэтажную конструкцию их объявления! Такова парадигма С++: делать всё библиотеками. В этом плане, например, C# - язык более элегантный, потому что в нём не боятся интегрировать непосредственно в сам язык то, что действительно должно быть в него интегрировано. Аналогичный пример можно привести из Java: это безымянные классы. В С++ я постоянно вынужден тащить за собой кучу лишнего кода только потому, что кто-то взвесил необходимость добавления в язык этой возможности, и решил, что лучше меньше в самом языке, даже если в итоге придётся кодировать больше. Однако к чему привёл такой подход? C# и Java считаются элегантными языками, а С++ (несмотря на явные попытки выкинуть, или точнее, не вводить в него "лишние" конструкции) - весьма громоздок. 3. Корявая Агрегация. class A; class B; class C; class D { public: A a_pub; B b_pub; C c_pub; void doIt_pub(); protected: A a_prot; B b_prot; C c_prot; void doIt_prot(); private: A a_priv; B b_priv; C c_priv; void doIt_priv(); }; Время жизни агрегированных в D объектов однозначно не превышает время жизни агрегировавшего их объекта класса D. Это значит, что даже если вы напишете код, влезающий в канализацию для переделки объёктов a_xx, b_xx, c_xx - из них всё равно можно будет обратиться к объекту D в примерно таком вот коде: a_pub::some_func() { super->doIt_pub(); } А столько разных функций я создал для того, чтобы показать возможность применения прав доступа, например: a_pub::some_func() { super->doIt_priv(); // ошибка: попытка обратиться к закрытому методу из объекта, объявленного в открытой части. } Сейчас этой техники нет; поэтому приходится каждый раз сохранять отдельный указатель на агрегировавший класс, да ещё и прописывать лишние строчки с ключевым словом friend, чтобы всё работало! Но я не понимаю, какие ограничения есть к тому, что сделать такой указатель?! PS. Можно заменить ключевое слово "super->" на "meta->", чтобы стал более понятен великий смысл и необходимость данной конструкции. Сейчас в Языке++ есть только одна возможность обойти создание лишних указателей в данном контексте - это статические функции и члены данных. Автор очень просит всех, кто имеет такую возможность, донести данные пункты в комитет ДО принятия новой версии стандарта языка. Я очень люблю С++, но я с ним уже просто замучился... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2006, 23:51 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
waster1. Интерфейсы компонентов теряют любой смысл. В программах на Паскале (я имею ввиду Turbo Pascal 7.1 для DOS) я мог написать компонент, а имя файла, в котором он расположен, использовалось как имя этого компонента. Там была такая замечательная секция Interface, читая которую, всегда можно было понять, к чему обращаться. вы путаете реализацию среды разработки с языковыми конструкциями и никто не мешает вам писать детальный хелп. waster С++ в этом свете - уникум. Во-первых, имена физических модулей никак ни с чем не связаны. Вроде бы тоже существуют заголовочные файлы, но: и слава Богу waster а) Если я написал иерархию классов, я вынужден полностью поместить её объявление в заголовок; б) Как только я где-нибудь сказал магическое слово "template", туда же - в заголовок - тянется и вся реализация! а вы что хотели ? --Выходит, что в реальной практике _интерфейсов - нет_! причем тут темплейты и интерфейсы ? не надо валить все в кучу. --Я совершенно точно знаю, что со 100% уверенностью в моей программе будут properties. Даже если я не буду их применять, они будут всё-равно - как код, который делает ровно то же самое. Однако, если я начну применять свойства как отдельный библиотечный элемент, то я буду вынужден на каждом шагу запинаться об трёхэтажную конструкцию их объявления! пользуйтесь языковой конструкцией __property std::string Text = {read=getText, write=setText }; и не надо придумывать велосипеды Такова парадигма С++: делать всё библиотеками. ---В этом плане, например, C# - язык более элегантный, потому что в нём не боятся интегрировать непосредственно в сам язык то, что действительно должно быть в него интегрировано. спасибо, красота С++ в том что если кому что надо - тот может сам встроить любую конструкцию --Однако к чему привёл такой подход? C# и Java считаются элегантными языками, для домохозяек. --Время жизни агрегированных в D объектов однозначно не превышает время жизни агрегировавшего их объекта класса D. а почему должно быть наоборот ? waster А столько разных функций я создал для того, чтобы показать возможность применения прав доступа, например: a_pub::some_func() { super->doIt_priv(); // ошибка: попытка обратиться к закрытому методу из объекта, объявленного в открытой части. } а почему должно быть наоборот ? waster Автор очень просит всех, кто имеет такую возможность, донести данные пункты в комитет ДО принятия новой версии стандарта языка. Я очень люблю С++, но я с ним уже просто замучился... может все таки лучше поменять стиль программирования ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2006, 01:16 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
1... Интерфейсы в C++ есть. Но они реализованы как классы. Яркий пример - технология COM, CORBA. Вроде-бы из концепции языка мы не выпадаем, но в то-же время, разработка без использования Визарда-компонентов становится достаточно сложным для человеческого восприятия процессом. Грубо говоря, лабать код в блокноте становится сложнее и сложнее Когда разбирался с COM - крыл по матери всех его учредителей. Как понавводили всякой х..ни. Скажите пожалуйста зачем мне GUID ? Какой смысл для МЕНЯ он несет? В продвинутых языках и технологиях реализация интерфейсов принципально не намного далеко ушла от классов С++, однако эта реализация умело завуалирована в синтаксисе. Собственно для меня - без разницы в каком файле (пакете, сборке) лежит класс или интерфейс. Гораздо важнее насколько логично и гладко ложится его идентификация в пространство имен. Хедеры С++ - это пережиток прошлого. Не пытайтесь подвести их смысл под что-то серьезное. Они создавались в эпоху ассемблерного программирования, и сохранились для совместимости. Для Java и .Net., был заложен механизм "рефлексирования" бинарника. А это делает хедер ненужным. 2... Плюсы удобны для сбора совершенно автономного кода (драйвер, программа для микроконтроллера, бут-сектор и.т.п). Это можно рассматривать как преимущество так и недостаток. Шарпы - для многих прикладных программистов стали наркотиком, с которого трудно спрыгнуть (если вообще возможно). . Java - рулит в своем секторе, однако в самом языке я бы желал увидеть некоторые улучшения. Для меня оба языка - образец легкой интегрируемости решений, чего к сожалению нельзя потребовать от С++. 3... По поводу прав доступа. Это обширная тема для дискуссий на предмет безопасности. В самом деле... Обладая указателем на область памяти, и имея представление о протоколе, ничто не мешает мне взламывать все приватные поля и вызывать скрытые методы. Это трюкачество. И сам факт его сущестования дискредитирует любую модель программирования где такое допускается. Особенно если вопрос касается эксплуатации серверов приложений. Недаром солидные конторы (и ваш покорный слуга) тратят деньги на создание изощренных Policy и FGAC для библиокек кода, балансируя на грани удобно / безопасно . В заключение хочу добавить. Доносить о каких-либо пунктах в какой-либо комитет я не буду. Потому-как они общеизвестны. А поддерживать спецификацию нового С++ я не собираюсь потому-как считаю, что овчинка выделки не стоит. Лучше поддержать принципиально новое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2006, 02:43 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
maytonОбладая указателем на область памяти, и имея представление о протоколе, ничто не мешает мне взламывать все приватные поля и вызывать скрытые методы. Это трюкачество. И сам факт его сущестования дискредитирует любую модель программирования где такое допускается. В уголовном кодексе не написано что нельзя сморкаться соплёй оземь. Однако, некоторые это делают, а некоторые нет. Это вопрос воспитания, в данном случае - стиля. И навряд ли стоит вносить это в уголовный кодекс (спецификацию языка). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2006, 07:20 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
В уголовном кодексе написано что нельзя воровать чужое, однако некоторые так делают, некоторые нет. Но это же не повод убирать это из уголовного кодекса :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2006, 09:37 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Добавлю свои "5 копеек": Не нравится - не ешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2006, 14:30 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
waster 1. Не стоит пользоваться термином интерфейс если вы имеете в виду открытую интерфейсную часть модуля (в C++ это содержимое .h-файла) так как это приводит ошибочной трактовке и двусмысленности. В ООП интерфейс это устоявшийся термин в С++ соответствующий абстрактному классу из виртуальных функций и констант, а не заголовочному файлу или секции interface из Паскаля. Далее если вы написали иерархию классов вы НЕ обязаны засовывать ее всю в заголовок для этого используется препроцессор Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В С++ нет поддержки модульности на уровне языка и вместо него используются средства препроцессора. Это действительно может быть рассмотрено как архаизм и недостаток - но такой уж он есть и лучше не требовать от комитета изменения стандарта, а научиться его правильно использовать... Также поддержка пространств имен в С++ не включает в себя возможности ограничения области видимости классов (они все являются public) и если нужно можно скрывать классы объявляя их внутренними в private секции других классов. 2. по поводу свойств... Принято считать что поддержка свойств на уровне языка это синтаксический сахар без которого можно и так прожить (принципиально они ни на что не влияют). Так свойств нет в java (вместо этого там есть соглашение о наименовании). Также многие поставщики компиляторов добавили поддержку свойств в свои продукты (см. Borland). Делать выводы о элегантности С++ и java в пользу C# на основе наличия в последнем свойств я бы не стал :) 3. Анонимные классы (так они вообще-то называются). Они в java появились не просто так а как часть концепции и подхода к написанию определенного кода. Это достаточно специфичная вещь и она остается непонятой до сих пор достаточно большой частью разработчиков. Если еще учесть что такие классы можно легко заменить на обычные (например внутренние) то решающей роли в общей идеологии ООП они не играют 4. Как я понял вы имеете в виду поддержку двухсторонних связей между объектами... Т.е. вы считаете что если один объект (например,a_pub) является частью другого (D) то a_pub должен иметь способ доступа к объекту-владельцу? Тогда ответ будет звучать так - это сделано из соображений производительности. Дело в том что навигация от части к целому нужна далеко не всегда. В случае если такая навигация нужна то в класс части нужно добавить атрибут D *owner. Вообще, если говорить строго, отношения между классами (в терминах UML) бывают 4х основных видов - это ассоциация, агрегация, композиция и наследования. Так вот из них только композиция отображается на С++ в структуру которую вы привели. Дело в том что агрегация допускает использование одного и того же объекта в качестве части для нескольких разных объектов класса D. Т.е. для реализации двухсторонней связи в общем случае для настоящей агрегации мы получим во-первых сложный, во-вторых очень затратных механизм, который (как я говорил) в большинстве случаев будет не нужен.... Кстати, ключевое слово friend тут вообще не причем, так как часть должна общаться с целым также через его открытый контракт и не иметь доступа к его private-части... Теперь насчет super->... В С++ такой конструкции нет по очень простой причине - наличие множественного наследования :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2006, 15:05 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Lepsik--Однако к чему привёл такой подход? C# и Java считаются элегантными языками, для домохозяек.+ 1е100 ! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 07:04 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас Lepsik--Однако к чему привёл такой подход? C# и Java считаются элегантными языками, для домохозяек.+ 1е100 ! Что такого остроумного в столь плоском утверждении? Если бы Лепсег напесал что для индусов, тогда зерно здравого смысла было бы. Но домохозяйки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 12:57 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичНо домохозяйки...не за остроумие,а за точность аналогии. Домохозяйки любят всякие кухонные комбайны и посудомоечные машины Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 13:00 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Lepsik waster --Я совершенно точно знаю, что со 100% уверенностью в моей программе будут properties. Даже если я не буду их применять, они будут всё-равно - как код, который делает ровно то же самое. Однако, если я начну применять свойства как отдельный библиотечный элемент, то я буду вынужден на каждом шагу запинаться об трёхэтажную конструкцию их объявления! пользуйтесь языковой конструкцией __property std::string Text = {read=getText, write=setText }; и не надо придумывать велосипеды Это расширение характерно для C++ Builder, который в настоящий момент скорее мертв, чем жив. Lepsik спасибо, красота С++ в том что если кому что надо - тот может сам встроить любую конструкцию waster --Однако к чему привёл такой подход? C# и Java считаются элегантными языками, для домохозяек. Можно сделать эксперимент - написать на чистом С++ какое-нибудь тривиальное приложение - которое бы считало pi с любой заданной точностью или корелляцию данных в двух файлах. Причем все делать в стиле чистого С++, STL + iostreams, безо всяких C-хаков, все делать in a typesafe maneer. В результате получим бинарь размером ~1Мб работающий со скоростью как у Java - аналога (или меньшей). При сложности кодирования в 2+ раза большей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 13:14 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичВ результате получима вот это не факт, батенька Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 13:50 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Эта, народ, канчай базар разводить. Хочешь флейма - иди в вон Программирование, там и обсуждай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 13:56 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Lepsik --Однако к чему привёл такой подход? C# и Java считаются элегантными языками, для домохозяек. Афтар жжотъ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 15:34 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичМожно сделать эксперимент - написать на чистом С++ какое-нибудь тривиальное приложение - которое бы считало pi с любой заданной точностью или корелляцию данных в двух файлах. Причем все делать в стиле чистого С++, STL + iostreams, безо всяких C-хаков, все делать in a typesafe maneer. В результате получим бинарь размером ~1Мб работающий со скоростью как у Java - аналога (или меньшей). При сложности кодирования в 2+ раза большей. даже без споров знаю что такое умещается в единицы байтов. со скоростью в разы лучше чем джаве. вы бы товарисч не позорились бы. я делаю проекты и в джаве и в С++ и отличаю язык программирования от мягкого и теплого. ---Это расширение характерно для C++ Builder, который в настоящий момент скорее мертв, чем жив. Builder 2006 мертв для кого ? для индусских домохозяек или адептов жавы после курсов тети Сони жава за 21 день ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 18:04 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Lepsik даже без споров знаю что такое умещается в единицы байтов. со скоростью в разы лучше чем джаве. вы бы товарисч не позорились бы. Бинарь, которая выдает "Hello World" через stdio на С занимает 40 кб, на C++ через iostreams - 200кб+. Какие единицы байт? Если активно использовать STL, то он зае@ет кучу постоянной неявными аллокациями/деаллокациями мелких блоков памяти, выполняющихся на уродской модели памяти С++ за линейное время, угробив перформанс. Lepsik ---Это расширение характерно для C++ Builder, который в настоящий момент скорее мертв, чем жив. Builder 2006 мертв для кого ? для индусских домохозяек или адептов жавы после курсов тети Сони жава за 21 день ? Тсой жыфф (С). Я не тот человек, который быдет смотреть в рот Борландам, когда же они сделают очередной высер Билдера. MSVC++ пока стабильно выходит раз за разом, становясь лучше. Последние версии даже уверенно проглатывают шаблоны из Loki, и при этом они по скорости компилирования получше Intel С++. Про С++ Builder X помницца Вы мне беспардонно наврали - он не был продолжением С++ Builder 5. Сам его не щупал, но судя по отзывам это был блокнот с колорингом к которому можно подключить внешний компилятор (MinGW или бесплатный борландовский). Визуального конструирования форм в нем не было. Какой был смысл в этой лжи? Почему Вы рассматриваете борландовские расширения как стандарт на С++, который "отменяет велосипеды" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 19:25 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Lepsik даже без споров знаю что такое умещается в единицы байтов. со скоростью в разы лучше чем джаве. вы бы товарисч не позорились бы. Бинарь, которая выдает "Hello World" через stdio на С занимает 40 кб, на C++ через iostreams - 200кб+. Это у вас какие-то странные компиляторы. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 20:34 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
BlackStar Это у вас какие-то странные компиляторы. На униксах С++ iostreams наверное как-то интегрированы в библиотеки ОС. Я экспериментировал на win32 (stlport 4.5.3 + sgi iostreams). Получал exe килобайт по 400 без отладочной информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 22:12 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич BlackStar Это у вас какие-то странные компиляторы. На униксах С++ iostreams наверное как-то интегрированы в библиотеки ОС. Я экспериментировал на win32 (stlport 4.5.3 + sgi iostreams). Получал exe килобайт по 400 без отладочной информации. Помилуйте, ну откуда там могут быть 400? Версия компилятора? Параметры? Иначе, какой же это "эксперимент", так мысли вслух :) Сейчас взял для примера MSVC 6.0. Все установки проекта оставил по умолчанию. Собрал файлы, содержимое которых указано. Результат: C 28762 C++ 53248 То же самое для MSVC 7.1 С 26112 С++ 69632 (много, но не 400 кб.) Причем, уверен, покрутив настройками можно сделать бинарники и поменьше. Никогда не заморачивался по этому поводу, и сейчас не стал. Настройки, повторюсь, по умолчанию. Если надо могу, конечно, прислать содержимое ком. строки, но там ничего особенного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 22:59 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
уже было на ПТ, но все равно в тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2006, 23:21 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
[quot Сергей Ильич] ---Бинарь, которая выдает "Hello World" через stdio на С занимает 40 кб, на C++ через iostreams - 200кб+. Какие единицы байт? Если активно использовать STL, то он зае@ет кучу постоянной неявными аллокациями/деаллокациями мелких блоков памяти, выполняющихся на уродской модели памяти С++ за линейное время, угробив перформанс. может все таки стоит учится программировать а не слушать байки не знаю от кого. --Тсой жыфф (С). Я не тот человек, который быдет смотреть в рот Борландам, когда же они сделают очередной высер Билдера. культура так и прет --MSVC++ пока стабильно выходит раз за разом, становясь лучше. на сегодняшний день среда VC++ отстает даже от BBC 5.0 года так на 2-3 --Последние версии даже уверенно проглатывают шаблоны из Loki, и при этом они по скорости компилирования получше Intel С++. меня это как-то мало волнует. ---Про С++ Builder X помницца Вы мне беспардонно наврали - он не был продолжением С++ Builder 5. Вы что-то напутали. Я привожу обычно слова людей из компании Борданд. Если вас интересует текущее положение дел : http://www.borland.com/ca/products/delphi/index.html Среда Delphi 2006 интегрирует Delphi, C, C++, and C# programming languages. компания действительно закрыла сначала BBC, сделав С++ Builder X новым направлением, но потом изменила свое мнение и продолжила поддержку С++. ТАк что не надо нездоровых инсинуаций. --Почему Вы рассматриваете борландовские расширения как стандарт на С++, который "отменяет велосипеды" ? а кто пишет на стандарте ? MVC что ли ? boost/loki еще не являются стандартами. поэтому степень компиляции определяется не качеством компиляции, а желанием разработчиков. кстати к размерам программ на жаве не забывайте добавлять 100 мег рантайма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 01:02 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичЯ экспериментировал на win32 (stlport 4.5.3 + sgi iostreams). Получал exe килобайт по 400 без отладочной информации.Мягко говоря, преувеличение. Приведенный выше код для С и С++, скомпилированный на Бильдере 6: С: 50 688 С++: 280 576 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 07:27 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Lepsik кстати к размерам программ на жаве не забывайте добавлять 100 мег рантайма. Во-первых, вы вроде размеры бинарников сравнивали без учета rtl и прочих библиотек, потому как если ты предлагаешь посчитать размер библиотек из JRE то тогда неплохо бы посчитать размер каких-либо библиотек на C++ покрывающих функционал базовой библиотеки J2SE :) Во-вторых, зачем же придумывать вот у меня стоит последняя jre1.5.0_06 которая вся полностью весит меньше 70Мб. Это при том что ее функционал намного шире чем BCB rtl+vcl... То что размер бинарника в java будет на порядок меньше (в силу хотя бы того что там не машинный код, а байт код - который намного высокоуровней) - это общеизвестная вещь - о чем тут спорить мне не ясно В-третьих, я как-то тебе приводил пример с 2мя багами в BCB 6 SP2 на которые фирма борланд благополучно забила. Так вот чтобы не быть голословным прилагаю код приводящий к AV при линковке (см. test3.rar). В-четвертых, я тебе в прошлый раз говорил про баг в ADO врапере для VCL приводящий к некорректной работе приложения с строками в юникоде - ты сказал что это легко решить. Вот мне и интересно - как можно пересобрать VCL для BCB6? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 10:03 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
А чего, было бы не плохо иметь специфику для агрегации. Но, чтобы не давать слишком много необоснованного доступа сторонним классам, сделать так, чтобы все это касалось только nested-классов, объявленных прямо внутри контейнера, а не снаружи, как в приведенном примере. И плюс еще с какимнибудь модификатором. Например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 10:35 |
|
||
|
Антиправила C++
|
|||
|---|---|---|---|
|
#18+
Блин, форматирование в сорсах не действует. Читать как: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 10:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33483466&tid=2032089]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
96ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 554ms |

| 0 / 0 |
