С++ Builder - что это???
И смогу ли я, умеючи программировать на С++, сходу писать програмы под Винды с помощию этого пакета программ. С учётом, что программировать на Делфях у меня получилося с первых пяти минут. Пробовал Визуал С++, ничего не понял...
ТАК ЧТО ТАКОЕ С++ БИЛДЕР???
И стоит ли мне начинающему пытаться писать с его помощию программы??? а еслим стоит, то какой пакет посоветуете...
Это как Делфи для Паскаля??
И смогу ли я, умеючи программировать на С++, сходу писать програмы под Винды с помощию этого пакета программ. С учётом, что программировать на Делфях у меня получилося с первых пяти минут. Пробовал Визуал С++, ничего не понял...
ТАК ЧТО ТАКОЕ С++ БИЛДЕР???
И стоит ли мне начинающему пытаться писать с его помощию программы??? а еслим стоит, то какой пакет посоветуете...
C++ Builder - это интегрированная среда разработки. Если программировать на Дельфях получилось с первых пяти минут, то в Билдере получиться (если знать Си++) с первых 10 )).
В первом приближении - Дельфи и Билдер - одно и то-же. Отличие только в языке программирования. Дельфи - Object Pascal, Билдер - C++.
Если чел хочет научиться программировать на С/С++ то это ИМХО неплохое начало, но не больше. Серьёзные программы глючат... Особенно если их писать на Блиндере. Да и вряд ли пользователю понравится исполняемый файл размером 2 мега. Его конечно можно упаковать(UPX, PeCompact, Obsidium etc.), но от глюков с распределением памяти это не избавит.
Короче, как начинающему советую попробовать. Изучишь HelloWorld, функции, классы, директивы компилятора...
но как только захочешь писать серьёзный проект, то пересаживайся на Microsoft Visual C++. в пользу последнего говорит ещё и то, что операционку писала тоже мелкософт (Мелкософт для Мелкософта пакостить не будет)
З.Ы.
Давным-давно, кажется в прошлый вторник я читал (где - в упор не помню) что такие глюки с Блиндером из-за того, что он использует недокументированные функции Виндоуза. А они меняются от версии к версии (чуть ли не от билда к билду) и не могут не глючить ;)
З.З.Ы
коод, который на деБилдере будет работать точно так, как его написали:
char** buf;
long double i;
while(true)
{
i=pow(i,i);
buf=new char*[10000000];
for(int c=0;c<10000000;c++)
buf=new char[100000];
}
Если чел хочет научиться программировать на С/С++ то это ИМХО неплохое начало, но не больше. Серьёзные программы глючат... Особенно если их писать на Блиндере. Да и вряд ли пользователю понравится исполняемый файл размером 2 мега. Его конечно можно упаковать(UPX, PeCompact, Obsidium etc.), но от глюков с распределением памяти это не избавит.
Пользователям сейчас до... гм... лампочки, 2 метра или 20. Об этом, кстати, Мелкомягкие в первую очередь позаботились. Сколько Хрюшка на Вашем диске места занимает? А глюков в распределении памяти в основном много от низкой культуры программирования некоторых товарищей. Согласен, в этом есть частично и "вина" Борланд, которая разработала библиотеку классов со столь мощной инкапсуляцией всех "сантехнических процессов" работы Windows. По вине _чисто_ компилятора билдеровские проги теряют память не больше висуально-сишных.
И шо? Нет, вы-таки видели, что у него получилось? Я вас умоляю...
Кстати, давно замечено, что продукты от Microsoft так же не дружат с операционками от Microsoft, как и "продукты третьих фирм".
З.З.Ы
коод, который на деБилдере будет работать точно так, как его написали:
char** buf;
long double i;
while(true)
{
i=pow(i,i);
buf=new char*[10000000];
for(int c=0;c<10000000;c++)
buf=new char[100000];
}
Опять-таки, и шо? Кто ж так память выделяет? Одна из концепций C++ — программист сам заботится о выделении и освобождении памяти, чем не доволен -- пиши на себя жалобу. Кстати, в примере получается, что горе-программер потребовал 931 Гб памяти, и, не отдав назад, требует ещё столько же (цикл бесконечный). У кого столько будет? Или я смысл примера не понял? Поясните.
у меня 2000 стоит, ХР не уважаю.
могу даже признаться, что у меня тоже много глюков с распределением памяти, но я с этим борюсь при помощи Баундс Чекера
Согласен, в этом есть частично и "вина" Борланд, которая разработала библиотеку классов со столь мощной инкапсуляцией всех "сантехнических процессов" работы Windows. По вине _чисто_ компилятора билдеровские проги теряют память не больше висуально-сишных.
не согласен...
научен горьким опытом..
в принципе я сам недавно(года полтора) пересел с блиндера на визл но пересел из-за того, что мой проект на деБилдере стал сжирать всю память (она выделялсь в конструкторе) после перекомпиляции (ресурсы прилинковать надо было). после локализации ошибки помогла замена new на LocalAlloc. но появилась та же ошибка в другом месте но везде new на LocalAlloc не заменишь простым Search&Replace'ом...
тот же самый код, откомпиленый в Визл Студии (ну после очистки от VCL) прекрасно работает у меня по сей день.
не согласен...
Сервис паки - да, чем старше версия - тем больше тормозит, но посмотрите на тот же офис, который замечательно работает у меня около года (Win2k SP3, на которой дома работаю, я именно столько не трогал, а последний раз переставлял, когда деБилдер заглючил до BSOD, после - даже диск с дебилдером не трогал, так и лежит на полке в дальнем углу).
а по поводу компиляторов и линкеров от мелкософта - никто лучше не напишет компилятор оптимизированный под данную операционку, чем тот, кто написал эту операционку. (© не помню чей, но это не только моё мнение)
хм.. не думал, что будет так непонятно... у деБилдера глюки с памятью, так? моя цитата:
таким образом смысл кода - показать моё отношение к билдеру..
Найдите мне где-нибудь комерческий проект, написаный на деБилдере, чтоб он не глючил и не тормозил. Делфи - да, пожалуёста, шароваршики это любят (после дизассемблирования оч. трудно разобраться в листинге), но не билдер!
напоследок:
бывает, что надо быстро что-то проверить, а ничего под рукой нету. приходится ляпать простенький проект. на Визл Студии быстро ничего делать не получается... поэтому я запускаю билдер (да, я его не люблю, очень нелюблю). недавно надо было проанализировать протокол... в чужой сетке тулз никаких специальных (сниффер, сканер) не поюзаешь пришлось писать проксик. на билдере это сделать - 2 пальца... (форма, ServerSocket, ClientSocket и ваши волосы мягкие и шелковистые) а вот на визле...
но это не противоречит моему мнению: мелкие проекты, обучение - вот для этого деБилдер - самое оно. но только не для более-менее серьёзных программ.
1.
Программы, написанные на Visual C++ с использованием MFC ничуть НЕ ЭКОНОМИЧНЕЕ (в смысле размера скомпилированных программ) чем программы написанные на Borland C++. Просто все нужные для их (VC MFC) работы библиотеки входят в состав Windows. А Борланд не может позволить себе такую роскошь, вот и приходится таскать нужные борландовские библиотеки вместе с программами. Мелкомягких ведь не уговоришь включить в поставку Виндовс все борландовские *.BPL и *.DLL файлы...
2.
Еще аргумент в пользу Борланд:
Вам приходилось видеть Microsoft .NET Framework и язык C# ?
Так вот, .NET Framework - это _ПОБЕДА_ технологий Борланд над технологиями Микрософт. Разрабатывать .NET Framework Микрософту помогает создатель Дельфи, и поэтому .NET Framework практически КАК ДВЕ КАПЛИ ВОДЫ похож на Борландовский VCL.
Иногда некоторые люди говорят: "Микрософт всегда был сторонником компактного кода. Они делают не так, как Борланд. Они делают лучше." Ничего подобного! Они сами признали преимущество и удобство библиотек в стиле VCL, и взяли их на вооружение, выкинув на свалку истории MFC и WinAPI.
3.
To ZEREN:
Не слушай людей, ругающих C++Builder.
ДА, C++Builder - это Дельфи на C++. Если ты знаком с Дельфи, то и в C++Builder ты будешь чувствовать себя как рыба в воде. Пользуйся на здоровье.
Что касается размера эксешника, могу лишь сказать - почитай RSDN, там хорошо освещен данный вопрос(просто влом ща искать :) ). Его суть сводится к тому, что простой проект(без использования VCL), а точнее его эксешник можно сделать размером около 20 кило(если не ошибаюсь это про консольный), который не будет требовать дополнительных библеотек.
Про утечку памяти - в основном кривые руки програмистов, не хочу ни кого обидеть и заранее прошу прощенье, но так уж бывает, сам не идеален. Основной косяк - неправильный порядок вызова деструкторов(кстати это отдельный разговор в некоторых случаях заместо деструктора вызывается конструктор). В большой проге(листов на двести - триста) за этим довольно трудно следить. Тут уже никто не виноват. Макрос, насчет выделения памяти через new ниче сказать не могу, не вникал в данную проблему. Еще раз извеняюсь если кого - либо обидел, не хотел. Это моя точка зрения на данный вопрос.
PS. MSVC больше подходит для создания серьезных проектов.
простой проект(без использования VCL), а точнее его эксешник можно сделать размером около 20 кило(если не ошибаюсь это про консольный), который не будет требовать дополнительных библеотек.
Однажды я написал на Билдере EXEшник размером 4 Кб, причем это НЕ консольное приложение, а оконное. На голом WinAPI.
В свою очередь, я тоже прошу прощения, если я кого-то обидел. Просто у меня душа не выдерживает, когда кто-то начинает беспочвенно поливать грязью Билдер. (А еще я сегодня в ударе :))
Я прекрасно понимаю, что C++Builder опирается на WinAPI. И даже приложения для .NET Framework в итоге (после JIT-компиляции) превращаются в код, опирающийся на WinAPI.
Сейчас я попробую объяснить, что я имел ввиду, говоря "выкинув на свалку истории MFC и WinAPI". Возьмем к примеру язык C#. На нем крайне неудобно работать с функциями WinAPI. Потому что этот язык сделан для программирования под платформу .NET Framework, а платформа .NET Framework (что-то вроде VCL) призвана ВЫТЕСНИТЬ программы, написанные на win32. Перескажу цитату, которую я вычитал где-то на сайте Микрософт:
"Мы планируем полностью перейти с win32 на .NET Framework, причем этот процесс мы планируем провести гораздо быстрее, чем переход с win16 на win32".
Теперь понятно, что я имел ввиду? WinAPI в будущем будет использоваться восновном только самим Windows, и получит такой статус, каким сейчас обладает Assembler.
Если вы думаете что я бред несу, тогда прочитайте вот эту статью и думайте сами:
"Языки программирования через сто лет"
(часть 1): http://www.computerra.ru/hitech/35042/
(часть 2): http://www.computerra.ru/hitech/35107/
1.
Программы, написанные на Visual C++ с использованием MFC ничуть НЕ ЭКОНОМИЧНЕЕ (в смысле размера скомпилированных программ) чем программы написанные на Borland C++. Просто все нужные для их (VC MFC) работы библиотеки входят в состав Windows. А Борланд не может позволить себе такую роскошь, вот и приходится таскать нужные борландовские библиотеки вместе с программами. Мелкомягких ведь не уговоришь включить в поставку Виндовс все борландовские *.BPL и *.DLL файлы...
Это даже не первое, первое - непонятно вообще каким боком VC++ - Visual. Визуальной разработкой там и не пахнет. Да, есть пара левых мастеров для генерации кода, но это по сравнению с тем, что можно сделать с IDE BCB(имеется ввиду написание экспертов и т.д.).
По поводу размера кода - согласен, не на много он и больше получается в BCB. Сам (к слову Я вообще не программист) пишу программы на голом API от 4 кб (оооочень редко). В VCLx0.bpl около 120 компонент и нет ничего страшного таскать ее с собой.
Главное отличие BCB от VC++, то что ты на BCB писать и на голом API и прикрутить любую ООП библиотеку (помимо OVL, MFC которые и так есть)и главное пользоваться преймуществом среды RAD - компонентами, а на VC++ API и MFC(кстати довольно убогая либа).
2.
Еще аргумент в пользу Борланд:
Вам приходилось видеть Microsoft .NET Framework и язык C# ?
Так вот, .NET Framework - это _ПОБЕДА_ технологий Борланд над технологиями Микрософт. Разрабатывать .NET Framework Микрософту помогает создатель Дельфи, и поэтому .NET Framework практически КАК ДВЕ КАПЛИ ВОДЫ похож на Борландовский VCL.
Почему помогает?! Вроде он там главный. И бабок по слухам за доступ MS к технологиям Borland отвалили 125 млн.$. Вот NET и похожа на Delphi.
To ZEREN:
Не слушай людей, ругающих C++Builder.
ДА, C++Builder - это Дельфи на C++. Если ты знаком с Дельфи, то и в C++Builder ты будешь чувствовать себя как рыба в воде. Пользуйся на здоровье.
V
Согласен + по моему мнению VC++ - отстой полный.
Главное отличие BCB от VC++, то что ты на BCB писать и на голом API и прикрутить любую ООП библиотеку (помимо OVL, MFC которые и так есть)и главное пользоваться преймуществом среды RAD - компонентами, а на VC++ API и MFC(кстати довольно убогая либа).
Такой узкий кругозор...
А выражения...
"голый API" - это из раздела порно?
"любая ООП библиотека" - это что за зверь?
OVL, кстати, пишется как OWL.
Кроме того, никто не мешает тебе использовать с VC++ другие оконные библиотеки, например WTL или Qt, MicroWindows, PicoWindows и д.р.
Я не буду хвалить или ругать что-то. Лично мне все равно, где писать. Для меня IDE - это расширенный блокнот, а не культ. Я использую VisualStudio, я довольно хорошо её знаю и она меня УСТРАИВАЕТ.
Ругать и спорить о IDE сейчас уже НЕ МОДНО!
P.S. Опять кто-то бросил гавно на вентилятор и всех понесло... Закрывайте ветку.
у меня 2000 стоит, ХР не уважаю.
И это правильно.
Сервис паки - да, чем старше версия - тем больше тормозит, но посмотрите на тот же офис, который замечательно работает у меня около года (Win2k SP3, на которой дома работаю, я именно столько не трогал, а последний раз переставлял, когда деБилдер заглючил до BSOD, после - даже диск с дебилдером не трогал, так и лежит на полке в дальнем углу).
Почитай про совместимость вот здесь. В примере использована 1С, но в Акцессе от Мелкомягких совершенно та же картина.
А по поводу компиляторов и линкеров от мелкософта - никто лучше не напишет компилятор оптимизированный под данную операционку, чем тот, кто написал эту операционку. (© не помню чей, но это не только моё мнение)
Так вот: по последним испытаниям компиляторов Борланд оптимизировал лучше, чем Мелкомягкие Висуальные. Оба оптимизируют неидеально, но Борланд всё-таки лучше. Кстати, создание объектов у него происходит значительно (порой в разы) быстрее, чем у Висуальных. Вспомню линк -- приведу.
Найдите мне где-нибудь комерческий проект, написаный на деБилдере, чтоб он не глючил и не тормозил. Делфи - да, пожалуёста, шароваршики это любят (после дизассемблирования оч. трудно разобраться в листинге), но не билдер!
Поверьте, я видел грандиозные проекты, написанные на Билдере, и при этом нормально работающие. В широкой продаже их нет, потому как были сделаны на заказ.
Как учит нас товарищ Microsoft, не бывает тормозных программ, бывают медленные компьютеры. Впрочем, тормоза при работе билдеровских программ не замечены. Медленнее, конечно, чем на голом АПИ, но это издержки использования ООП-технологий.
И на последок: Почему в тебя проги на билдере не освобождают выделенную память, а у меня освобождают?
И ещё более напоследок: Программисты на Мелкомягких Висуальных мне напоминают пользователей Макинтошей. И те, вопреки фактам, и другие сидят и гордятся, что они крутые, а остальные -- суксь и мастдай.
быстрее, чем у Висуальных. Вспомню линк -- приведу.
А вы могли бы привести примеры, когда Builder допускает именно глюки с памятью? (Я заволоновался). Ваш код не катит, т.к. там очевидная вина программиста.
"Казалось бы, вывод о самом эффективном компиляторе напрашивается сам собой - это Borland Builder C++. Но не стоит спешить. Многие разработчики указывают на ошибки при формировании кода у Borland Builder (в частности, при использовании ссылок его поведение становится непредсказуемым). Кроме того, Borland Builder C++ явно наследует многое от Delphi (один модификатор вызова метода DYNAMIC чего стоит), в результате чего при компилировании абсолютно правильного С++ кода могут возникать ошибки (например, отсутствие множественного наследования для VCL-классов; а все потомки от TObject являются VCL-классами)."?
Действительно ли поведение Builder'a может быть непредсказуемым? Кто-нибудь с этим сталкивался?
А кто грамотно прокомментирует вот эту цитату из статьи Plisteron'а:
"Казалось бы, вывод о самом эффективном компиляторе напрашивается сам собой - это Borland Builder C++. Но не стоит спешить. Многие разработчики указывают на ошибки при формировании кода у Borland Builder (в частности, при использовании ссылок его поведение становится непредсказуемым). Кроме того, Borland Builder C++ явно наследует многое от Delphi (один модификатор вызова метода DYNAMIC чего стоит), в результате чего при компилировании абсолютно правильного С++ кода могут возникать ошибки (например, отсутствие множественного наследования для VCL-классов; а все потомки от TObject являются VCL-классами)."?
Действительно ли поведение Builder'a может быть непредсказуемым? Кто-нибудь с этим сталкивался?
1. Статья не моя.
2. Но я прокомментирую. Все непредсказуемости сгенерированного Билдером кода, с которыми я сталкивался, были следствием ошибок программистов, писавших в этом самом Билдере. Хотя, конечно, тот факт, что VCL для C++Builder написан не с чистого листа, а просто перенесён из Дельфей -- безусловный минус. А то, что потомки TObject являются VCL-классами -- это, как гравитационная постоянная в физике, постулат ООП; действительно, кем являться потомку VCL-класса?
Косяк в том, что Билдер предоставляет очень дружественныю среду разработки и мощную библилотеку классов, поэтому, чтобы начать программировать в Билдере, можно иметь квалификацию ниже, чем необходимую для программирования в Висуальных Сях. Но язык-то один: C++. Причём, в отличие, например, от Ada, позволяющий программисту многие вольности, считая, что программисту виднее, и, в отличие, например, от Visual Basic, не прощающий ошибки. Начинающий программист выбирает C++ Builder (Visual C++ слишком сложный), где-то ошибается, прога глючит, программер всё валит на компилятор. Отсюда и легенда про глючные и неглючные компиляторы.
Кстати, как-то в ФИДО (fido7.ru.c-cpp) был навороченный тест на глючность компилеров C++. С шаблонами и классами. Победил Visual C++ 6.0 (т.е. наибольшее количество косяков было у него), на втором месте Borland C++ 5.5 (именно этот компилер в Билдере используется), на последнем месте -- Intel C++ 6.5.
Вообще-то на вкус и цвет в принципе товарищей мало и я извинаюсь, что навязываю своё мнение. просьба не бить ногами. по голове.
а информация интересная... на досуге подумаю...
Такой узкий кругозор...
Я не программист (см. выше, читай внимательней...)
А выражения...
"голый API" - это из раздела порно?
Имелось ввиду просто API.
"любая ООП библиотека" - это что за зверь?
OVL, кстати, пишется как OWL.
"Любых ООП библиотек" у меня куча валяется, если честно Я ими не пользуюсь.
Кстати, OVL - признаю затупил.
Кроме того, никто не мешает тебе использовать с VC++ другие оконные библиотеки, например WTL или Qt, MicroWindows, PicoWindows и д.р.
А этому и в BCB никто не помешает.
Я не буду хвалить или ругать что-то. Лично мне все равно, где писать. Для меня IDE - это расширенный блокнот, а не культ. Я использую VisualStudio, я довольно хорошо её знаю и она меня УСТРАИВАЕТ.
Ругать и спорить о IDE сейчас уже НЕ МОДНО!
Хвалить и ругать можно, но ненужно просто так путать людей.
Опять кто-то бросил гавно на вентилятор и всех понесло... Закрывайте ветку.
Да вместо этого можно было привести реальные доводы в пользу VC++ или против BCB.
Глюки против BCB не катят т.к. тебе уже неоднократно говорили, что это руки и голова которая им покоя не дает(по собственному опыту говорю...).
Размер EXE тоже.
"Серьезность" проекта это вообще бред и как это мерить в кг, в кол. строк кода?. И чего Ты такого "серьезного" написал на VC++ уж не MS Word (единственная полезная, удобная т. е. "серьезная" программа от MS в моеи убогом представлении о "серьезности").:D Ну а если нет, тогда непонятно, что мешает (Тебе, мне, ему) писать "Сурьезный" проект на BCB. У меня в соседнем помещении сидит чел у которого программа по управлению ППР на BCB - реальная, на производстве в несколько десятков кв. км, сотни тысяч ед. оборудования, 7 тыс. чел. персонала.
Т.е. минусов нет давай считать плюсы:
Например - в BCB есть такое хорошее расширение языка как __property, так оно мне нравится (и удобно очень). А в VC++ уж не #pragma data_seg()?
:)
"Любых ООП библиотек" у меня куча валяется, если честно Я ими не пользуюсь.
Так что это такое?
Да вместо этого можно было привести реальные доводы в пользу VC++ или против BCB.
А зачем? Каждый хвалит свой насест.
Глюки против BCB не катят т.к. тебе уже неоднократно говорили, что это руки и голова которая им покоя не дает(по собственному опыту говорю...).
Не понял фразы.
Кстати, что выведет такая прога, скомпилированная в BCB:
template <class T>
size_t func(T& ptr)
{ return sizeof T; }
int main()
{
std::cout << func("12345") << std::endl;
return 0;
}
А такой код:
template<class T>
struct A
{
enum {val=0};
};
template<int N>
struct A<char[N]>
{
enum {val=N};
};
int main()
{
std::cout << A<char[5]>::val << std::endl;
return 0;
}
И в заключении такой код
template<class T, class U>
class B
{
public:
enum{val=0};
};
template<class T>
class B<class T, int>
{
public:
enum{val=1};
};
int main()
{
std::cout << B<int,int>::val << std::endl;
return 0;
}
У меня нет BCB. Проверьте и скажите, пожалуйста, мне.
И чего Ты такого "серьезного" написал на VC++ уж не MS Word (единственная полезная, удобная т. е. "серьезная" программа от MS в моеи убогом представлении о "серьезности").
Это вопрос ко мне?
Ок. Загляни сюда r-tt.com
Почти все написано на VC++, за исключением того, что под Linux.
:D Ну а если нет, тогда непонятно, что мешает (Тебе, мне, ему) писать "Сурьезный" проект на BCB.
1. Смотри примеры перечисленные выше.
2. Я не знаю, как писать дрова в BCB.
Я не собираюсь спорить, что лучше. Мне удобнее VС++. Почему, я уже указал.
Т.е. минусов нет давай считать плюсы:
Например - в BCB есть такое хорошее расширение языка как __property, так оно мне нравится (и удобно очень). А в VC++ уж не #pragma data_seg()?
:)
Что за зверь?
Объясни и я покажу, что без него можно обойтись. :D
Пойми, лучше то, что ближе к стандарту.
Вот всегда такие философские вопросы развивают грандиозную полемику ... А смысла-то от них никакого ... Это как смысл жизни искать.
Точно.
Модераторы!!!! АУ!!!! Пожалуйста, закройте ветку, пока не началось!
Точно.
Модераторы!!!! АУ!!!! Пожалуйста, закройте ветку, пока не началось!
Действительно! Каждому свое...
Грин прав в Билдере писать драйвера как то не удобно, только потому, что примеров достать негде (правда?)!!!
!!! Однако скажу Грину: Грин, что ты лезешь ко всем со своими мелкими придирками... я тут форум почитал-почитал и в каждой теме твоя насмешка, только вот ничего полезного, почему то ,сказать не хочешь(:)!!!(IMHO) ps. если пишешь дрова, подскажи плиз как написать драйвер под девайс (самодельный) на USB (не важно на чем писать)).
!!! Однако скажу Грину: Грин, что ты лезешь ко всем со своими мелкими придирками... я тут форум почитал-почитал и в каждой теме твоя насмешка, только вот ничего полезного, почему то ,сказать не хочешь(:)!!!(IMHO)
1. Я веду беседу только в тех темах, в которых разбираюсь, т.о. про "каждую тему" ты загнул.
2. В моем представлении полезное - это не кусок кода для "списывания", а небольшие маяки для самостоятельного нахождения ответа. Что полезного ты хотел услышать от меня в этой теме? Если что-то в моих ответах задевает твоё самолюбие, можешь их не читать. Если что-то в моих ответах противоречит твоему мнению, ты вполне можешь возразить, но приготовься отстаивать свою точку зрения конкретными фактами и доводами.
3. Дальнейшее выяснение межличностных отношений перенеси в приват, не думаю, что кому-то интересно это читать.
ps. если пишешь дрова, подскажи плиз как написать драйвер под девайс (самодельный) на USB (не важно на чем писать)).
Я писал драйвера под LPT и FS, под USB не писал, но в этом нет ничего сложного. Поставь себе DDK, если он у тебя еще не стоит, и найди там соотв. пример. Примеры в DDK вполне сностные.
Если размер драйвера не имеет строго ограничения по размеру, то можно воспользоваться Driver Studio от Numega.
2. Я не знаю, как писать дрова в BCB.
Я вообще не знаю как писать дрова, но недавно наткнулся на сайт где человек рекламировал ДУ к ПК и все у него было написано на BCB. Плюс в конторе где Я раньше работал люди собирали различные приборы заводили их на ПК и как Ты уже догадался все было писано на Билдере.
Я вообще не знаю как писать дрова,
Тогда зачем говорить о том, в чем не разбираешься.
но недавно наткнулся на сайт где человек рекламировал ДУ к ПК и все у него было написано на BCB. Плюс в конторе где Я раньше работал люди собирали различные приборы заводили их на ПК и как Ты уже догадался все было писано на Билдере.
А с чего ты взял, что необходимо каждый раз писать свой драйвер?
Тогда зачем говорить о том, в чем не разбираешься.
Затем, что если GIZMO не умеет писать дрова и если
2. Я не знаю, как писать дрова в BCB.
то это не значит, что их нельзя писать на BCB.
Затем, что если GIZMO не умеет писать дрова и если
то это не значит, что их нельзя писать на BCB.
Ну и?
Какова конечная идея твоего повествования?
Ты пытаешься убедить меня отойти от VS в пользу BCB в силу того, что на BCB ВОЗМОЖНО тоже можно писать драйвера?
На японском тоже возможно можно писать стихи (хайку), ну и? Японский круче, чем русский? Будем говорить на японском?
В чем смысл этих твоих постов?
Так, ляпнуть? Показать, что BCB круче VS или хотя бы не хуже, на основе того, что ты где-то что-то слышал? Ну флаг тебе в руки, я спорить не буду, мой выбор сделан и уже давно и не в пользу BCB. Почему не в пользу него объясню людям, которые не одержимы дурной мыслью "BCB - cool, VS - suxx".
Я могу перечислить и положительные стороны BCB, но для меня эта положительность не столь важна, а где-то и сомнительна.
P.S. Мне кто-нибудь расскажет о результатах компиляции и выпонения приведенного мною выше кода, точнее трех различных вариантов?
кроме этого, книга Солдатова о драйверах, тоже неплохая (IMHO)
BCB хорошая среда разработки, но действительно большие проекты (>1000 модулей) на нем писать не стоит, компилятор архи медленный.
"BCB - cool, VS - suxx"
такое и обратное может сказать, только начинающий программист.
Кстати, что выведет такая прога, скомпилированная в BCB:
template <class T>
size_t func(T& ptr)
[12]{ return sizeof T; }
int main()
{
[16] std::cout << func("12345") << std::endl;
return 0;
}
Ответ: ничего не выведет т.к. поругалась
[C++ Warning] Unit1.cpp(16): W8030 Temporary used for parameter 'ptr' in call to 'func<char *>(char * &)'
[C++ Error] Unit1.cpp(12): E2108 Improper use of typedef 'T'
[C++ Error] Unit1.cpp(12): E2109 Not an allowed type
А такой код:
template<class T>
struct A
{
enum {val=0};
};
template<int N>
struct A<char[N]>
{
enum {val=N};
};
int main()
{
std::cout << A<char[5]>::val << std::endl;
return 0;
}
Ответ: '5' (вывело без кавычек).
И в заключении такой код
template<class T, class U>
class B
{
public:
enum{val=0};
};
template<class T>
class B<class T, int>
[19]{
public:
enum{val=1};
[22]};
int main()
{
std::cout << B<int,int>::val << std::endl;
return 0;
}
Опять поругалась:
[C++ Error] Unit1.cpp(19): E2434 Template declaration missing template parameters ('template<...>')
[C++ Error] Unit1.cpp(19): E2430 Number of template parameters does not match in redeclaration of 'B<T,int>'
[C++ Error] Unit1.cpp(22): E2428 Templates must be classes or functions
Ну и?
Какова конечная идея твоего повествования?
Ты пытаешься убедить меня отойти от VS в пользу BCB в силу того, что на BCB ВОЗМОЖНО тоже можно писать драйвера?
Нет. Это Ты пытаешься запутать человека который спросил про BCB. Про драйвера имелось ввиду, что корову молоком удивить легче чем аргументом - "А Я пишу драйвера на VC++".
На японском тоже возможно можно писать стихи (хайку), ну и? Японский круче, чем русский? Будем говорить на японском?
Про японцев...
А то, что Ты зашел на форум по программированию на BCB и пытаешься убедить людей на BCB не писать, тоже что и убедить японцев не есть рис.
В чем смысл этих твоих постов?
Так, ляпнуть? Показать, что BCB круче VS или хотя бы не хуже, на основе того, что ты где-то что-то слышал? Ну флаг тебе в руки, я спорить не буду, мой выбор сделан и уже давно и не в пользу BCB. Почему не в пользу него объясню людям, которые не одержимы дурной мыслью "BCB - cool, VS - suxx".
Я могу перечислить и положительные стороны BCB, но для меня эта положительность не столь важна, а где-то и сомнительна.
Не Я не слушал, Я поставил VC++, помаялся, поставил BCB, после этого снес VC++.
P.S. Мне кто-нибудь расскажет о результатах компиляции и выпонения приведенного мною выше кода, точнее трех различных вариантов?
Ну вот тебе и раз! А кто-то говорил, что знает плюсы BCB, при этом кто-то другой всего лишь, что-то, где-то слышал (не много запятых Я поставил?).
Ладно спорить заканчиваю. Обещаю обязательно прочитать еще одно гневное письмо (но только одно).
Желаю успеха в четверг вечером. Главное, чтобы чехов поменьше на поле вышло!
Нет. Это Ты пытаешься запутать человека который спросил про BCB.
<skip>
Не буду отвечать. Вода это всё, ненужная, безосновательная и бесполезная.
Ну вот тебе и раз! А кто-то говорил, что знает плюсы BCB, при этом кто-то другой всего лишь, что-то, где-то слышал (не много запятых Я поставил?).
Я знаю не только плюсы, но и минусы, и данными примерами показал минусы компилятора BCB.
Grom2025, спасибо за ответ. Как понимаете, все три примера соответствуют стандарту С++ и должны прекрасно компилиться и работать (что и происходит в VC++ 7.1). Раз код не скомпилился, значит, компилятор BCB не соответствует стандарту. Но есть некоторые положительные подвижки: раньше второй пример так же не компилировался, сейчас, как видим, скомпилировался и выдает правильный ответ.
Я знаю не только плюсы, но и минусы, и данными примерами показал минусы компилятора BCB.
Grom2025, спасибо за ответ. Как понимаете, все три примера соответствуют стандарту С++ и должны прекрасно компилиться и работать (что и происходит в VC++ 7.1). Раз код не скомпилился, значит, компилятор BCB не соответствует стандарту. Но есть некоторые положительные подвижки: раньше второй пример так же не компилировался, сейчас, как видим, скомпилировался и выдает правильный ответ.
А вот и насчет первого примера...
size_t func(T ptr)
{
return sizeof(T); // вот тут скобочки добавились
}
int main()
{
std::cout << func("12345") << std::endl;
Sleep(10000);
//return 0;
}
Скомпилировался... и выдал '4'
А всего-то скобочки поставил... (Кстати, как это раньше не компилялся... если я использую очень даже старую версию Билдера 5 без патчей и пр...)
А вот и насчет первого примера...
size_t func(T ptr)
{
return sizeof(T); // вот тут скобочки добавились
}
int main()
{
std::cout << func("12345") << std::endl;
Sleep(10000);
//return 0;
}
Скомпилировался... и выдал '4'
А всего-то скобочки поставил... (Кстати, как это раньше не компилялся... если я использую очень даже старую версию Билдера 5 без патчей и пр...)
Угу... Афаир, у Кернигана и Ритчи в книге (давным-давно читал), да и в книге Страуструпа (тоже давным-дывано), везде пишется именно sizeof(T), т.е. со скобочками. А в примере для Visual C++ мы скобочек не наблюдаем. Получается, это Visual C++ не соответствует стандартам? ;) ;) ;) ;)
А вот и насчет первого примера...
size_t func(T ptr)
{
return sizeof(T); // вот тут скобочки добавились
}
int main()
{
std::cout << func("12345") << std::endl;
Sleep(10000);
//return 0;
}
Скомпилировался... и выдал '4'
А всего-то скобочки поставил... (Кстати, как это раньше не компилялся... если я использую очень даже старую версию Билдера 5 без патчей и пр...)
Уважаемый, ты извратил мой пример!
В моем примере передача идет по ссылке:
size_t func(T[COLOR=red]&[/COLOR] ptr)
В итоге и результат неверный. Верный результат 6.
На счет sizeof я, наверное, действительно ошибся, т.к. в стандарте:
sizeof unary-expression
sizeof ( type-id )
В моем примере имеет место вариант с type-id, но это не столь грубая ошибка.
Так, что выдает мой неизвращенный пример (пусть будет sizeof(T) )?
Для злорадствующего Plisteron открою одну тайну: ни один компилятор не соответствует стандарту в полной мере. Хотя, есть утверждения что Comeau соответствует стандарту на все 100%, но я сомневаюсь.
И все же компилятор от VC++7.1 более соответствует стандарту, о чем свидетельствуют приведенные мной примеры.
Уважаемый, ты извратил мой пример!
В моем примере передача идет по ссылке:
size_t func(T[COLOR=red]&[/COLOR] ptr)
В итоге и результат неверный. Верный результат 6.
Простите, действительно извратил...
С [COLOR=red]&[/COLOR] выдает
[C++ Error] Unit1.cpp(18 ): E2357 Reference initialized with 'const char *', needs lvalue of type 'const char *'
[C++ Error] Unit1.cpp(18 ): E2342 Type mismatch in parameter 'ptr' (wanted 'const char * &', got 'const char *')