Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > C++ builder vs Win32API


Автор: Metalex 21.11.2010, 19:12
Стоит ли учить Win32API? Или если я знаю основы, этого хватит для полноценной основы в builder'e?

Автор: oldcode 21.11.2010, 19:55
учить стоит, но хватает и основ smile

Автор: mrbrooks 22.11.2010, 11:56
Цитата(Metalex @  21.11.2010,  19:12 Найти цитируемый пост)
Стоит ли учить Win32API?

это кошерное деяние.

Цитата(Metalex @  21.11.2010,  19:12 Найти цитируемый пост)
Или если я знаю основы, этого хватит для полноценной основы в builder'e?

вполне. дебилдер в принципе самодостаточен. тут есть смысл глубже копать в VCL.

Автор: Alexeis 22.11.2010, 12:21
Metalex, ввиду того, что версия 2010 работает жутко нестабильно, я взялся за основы WinApi диалогов. Иногда неудобства билдера настолько перевешивают, что соглашаешься на то, чтобы отказаться от удобного VCL в пользу простого и стабильного VC. Но это уже другой холивар smile . В целом, для билдера хватит минимальных знаний WinApi. Остальное можно подучить по ходу дела. 

Автор: mrbrooks 22.11.2010, 13:37
Цитата(Alexeis @  22.11.2010,  12:21 Найти цитируемый пост)
Metalex, ввиду того, что версия 2010 работает жутко нестабильно, я взялся за основы WinApi диалогов. 

а я бы взялся за изучение Qt smile

Добавлено через 37 секунд
есесно про дебилдер необходимо было бы за быть на всегда.

Автор: Alexeis 22.11.2010, 14:25
Цитата(mrbrooks @  22.11.2010,  14:37 Найти цитируемый пост)
есесно про дебилдер необходимо было бы за быть на всегда. 

  Поздно пить боржоми. В любом случае просты диалоги вполне можно разрабатывать и на WinAPI, но для чего-то более менее сложно уже нужны визуальные классы VCL.

Автор: oldcode 22.11.2010, 15:21
Цитата(Alexeis @ 22.11.2010,  14:25)
для чего-то более менее сложно уже нужны визуальные классы VCL.

 smile 

Автор: Alexeis 22.11.2010, 15:33
oldcode, когда форма имеет много компонентов или компоненты вложенные. Различные способы привязки (по левому/правому краю...) изменение размеров компонентов при изменении размеров окна. Внутреннее перераспределение места с помощью сплитеров. Различные визуальные настройки окон типа бордюров (которые обычно не записываются в ресурс).
  Вот элементарный пример. Список вариантов Combobox. В ресурсе диалога его хранить нельзя, а на форме VCL запросто. При обилии компонентов все эти инициализации разрастаются до невообразимых размеров, в которых трудно ориентироваться. А если делать грамотно, то начинаешь писать свои обертки. Кому это нужно, когда VCL уже и есть готовая объектная обертка. Разница как между велосипедом и мерседесом. 

Автор: oldcode 22.11.2010, 23:34
ну... VCL же ж и придумали ленивые  smile  ... для рапид разработки ... знать бы еще, что такое этот самый рапид  smile ...

Автор: borisbn 23.11.2010, 09:28
IMHO если и использовать VCL, то только в Delphi, потому что дебилдер - это отрыжка паскаля. Дебилдеровский VCL - это не Си++, поэтому я бы посоветовал как mrbrooks посмотреть на Qt.
Я сам лет 8 работал на VCL, затем перешёл на Qt и забыл о дебилдере как о страшном сне.

Автор: Alexeis 23.11.2010, 10:24
borisbn, билдер это не только визуальные кнопочки и рюшечки! Это еще функциональные классы, БД, сетевые протоколы Инди, это отчеты, это строковая библиотека и т.д. Так что переход на QT это не просто смена одного дизайнера форм на другой. Это изучение всего комплекса классов и его слабых и сильных мест. Для студента выбирающего на чем писать дипломный проект, может это несложно. Когда же речь о рабочих проектах зажатых рамками потеря кучи времени на поиск всех аналогов в QT неоправданный расход времени. 

Автор: borisbn 23.11.2010, 10:39
Цитата(Alexeis @  23.11.2010,  10:24 Найти цитируемый пост)
Когда же речь о рабочих проектах

Когда речь идёт действительно о рабочих проектах использовать VCL, а тем более дебилдер - вообще неразумно. У него куча глюков и ограничений.

P.S. QT == QuickTime, Qt == кроссплатформенная библиотека Си++ классов

Автор: Alexeis 23.11.2010, 10:50
Цитата(borisbn @  23.11.2010,  11:39 Найти цитируемый пост)
Когда речь идёт действительно о рабочих проектах использовать VCL, а тем более дебилдер - вообще неразумно.

  Эх сколько же не разумных людей по своему свету. Они платят по 800$ за лицензию чисто по приколу, совсем не для того чтобы вести разработку. И до сих пор не догадываются что делают невозможное. На счет глюков можно перефразировать поговорку: старый глюк лучше новых двух smile .

Автор: mrbrooks 23.11.2010, 11:00
Цитата(borisbn @  23.11.2010,  09:28 Найти цитируемый пост)
потому что дебилдер - это отрыжка паскаля.

 smile 

Цитата(Alexeis @  23.11.2010,  10:50 Найти цитируемый пост)
На счет глюков можно перефразировать поговорку: старый глюк лучше новых двух

Ох Alexeis, твои слова да, Богу в уши. Проблема современного Билдера в том, что начать то легко, да вот продолжить затем сложно.

Цитата(Alexeis @  23.11.2010,  10:50 Найти цитируемый пост)
Они платят по 800$ за лицензию чисто по приколу, совсем не для того чтобы вести разработку.

на мой скромный взгляд - это не разумно.

Автор: borisbn 23.11.2010, 16:09
Цитата(Alexeis @  23.11.2010,  10:50 Найти цитируемый пост)
Они платят по 800$ за лицензию чисто по приколу, совсем не для того чтобы вести разработку

Думаю потому, что они больше ничего не знают. И, надо признать, порог вхождения в билдер чуток пониже, чем в Qt. Но ! Назови пару-тройку крупных известных проектов, сделанных на билдере ...
IMHO даже на MFC больше, хотя мне лично от MFC плеваться хочется.

P.S. Проекты на билдере - не кроссплатформенные. их даже откомпилировать кроме как bcc нечем

Автор: Alexeis 23.11.2010, 16:38
Цитата(borisbn @  23.11.2010,  17:09 Найти цитируемый пост)
Назови пару-тройку крупных известных проектов, сделанных на билдере ...

  Мяу мяу мяу. Давай еще пиписьками померимся. Будь уверен что есть. Причем даже в таких ответственных областях как банковская сфера. Потому что не кросплатформенные... ну прям детский сад. Наверное поэтому C# попирает яву и С++. Потому что он шибко кросплатформенный smile . Глупости все это. 
  Билдер не популярен 
1) Плохой маркетинг. Microsoft смогла бы продать и больше Г за большие деньги  smile .
2) Нестабильность больших проектов. Нестабильность среды разработки.
3) Несоответствие стандарту. (больше чем у других)
4) Большое время компиляции.
5) Слабая оптимизация. 

Автор: A5uKa 23.11.2010, 16:56
CLR / WinAPI / Qt , только не VCL  smile 

Автор: borisbn 23.11.2010, 16:59
Цитата(Alexeis @  23.11.2010,  16:38 Найти цитируемый пост)
2) Нестабильность больших проектов. Нестабильность среды разработки.
3) Несоответствие стандарту. (больше чем у других)
4) Большое время компиляции.
5) Слабая оптимизация. 


Цитата(Alexeis @  23.11.2010,  10:50 Найти цитируемый пост)
Эх сколько же не разумных людей по своему свету.


 smile 

И какой вывод ? Зачем нужна такая среда разработки ? Только потому, что знаешь её ?

Автор: Alexeis 23.11.2010, 17:06
borisbn, потому что есть много других плюсов. Удобство, гибкость, функциональность, простота, расширяемость. На самом деле на начальном этапе можно и не знать даже такого слова "WinApi" и писать на билдере.

Добавлено через 13 минут и 52 секунды
  Например, C# также дает не шибко большую скорость кода + время JIT компиляции при загрузке. C# тем более не соответствует стандарту С++  smile . А глюки среды + компилятора есть везде. И в 2008 и в 2010 студии. Просто не так много.  smile . 
  Так что ты зря выдернул из цитаты верхнюю строчку. Она самая главная. Пипл хавает ложкой то что ему дают. Сейчас писать на Qt стало в моде. А программеры старой школы продолжают использовать билдер, потому что удобно и знают каждую "трещинку". Ведь не все тянуться за нововведениями. Многие пишут используя язык, ставя во главу угла алгоритм, который они реализуют на том что ближе. Молодежь думает, что достаточно поставить очередную новомодную штучку и будет самый крутой код! А потом хвастать, мол да я пишу на Qt! Я крут! А вы все сидите на старье. Не все версии билдера одинаково косячные. Что-то больше, что-то меньше. Билдер 6 был стабильнее, 2009 тоже сносно, а 5й и 2010 получились Г .

Автор: SVN74 23.11.2010, 17:47
Цитата(A5uKa @  23.11.2010,  16:56 Найти цитируемый пост)
CLR / WinAPI / Qt , только не VCL    


Цитата(borisbn @  23.11.2010,  16:59 Найти цитируемый пост)
И какой вывод ? Зачем нужна такая среда разработки ? Только потому, что знаешь её ? 

CLR, Qt - это как автомобиль (иномарка) + обязательный прицеп, который Вам навязали тащить за собой пожизненно smile.  VCL - это  как советский автомобиль, который хоть и не совершенен, но зато прост и едет. smile 
Все тут обхаивают Builder, но когда приходит время быстро создать обычное Win32 приложение  с БД, с обычными формами и кнопками и без гмр. , - то все сразу вспоминаю, что есть такой Biulder и его простейший VCL и ничего, что он глючит, главное влезть в сроки  smile .
Это как по аналогии: если едем по хорошим дорогам - берем красивую иномарку (с прицепом) и ХВАЛИМммммм ее, а когда приходится ехать по трущобным дорогам,  садимся на советское авто и едемММММ и никому об этом не говорим, как будто это не мы. smile 
Простите за такие аналогии, но в большинстве случаев это именно так.
А теперь ближе к теме:
1. Если не хотите писать формы руками, то WinApi и не нужен, достаточно обверток, но справочник по WinApi должен быть при себе на случай - необычных действий по дополнительным функциям.
2. Подумайте, на сколько Вам нужна кроссплатформенность? Тут хоть все и кричат о кроссплатформенности, но на самом деле в 95% случаях Ваше приложение (обычные) юзверы будут запускать под Виндой, остальные 5% - это (продвинутые) юзверы, которым Ваше приложение и нафих не нужно... smile   
 

Автор: cutwater 23.11.2010, 19:50
Тему во флейм.

Завершающий спор аргумент против бидлера.

Собственно как уже сказали покажите крупные проекты, использующие VCL, желательно за пределами пост-советского пространства. Сравните количество вакансий, новых / крупных проектов на C++ Builder, Delphi, VCL с вакансиями на C++ / Qt, C# / WPF и почувствуйте разницу.

Смысл в том что кроме как в пост-советском пространстве уже давно Delphi / C++ Bulder выбросили на помойку истории. Перспектив кроме поддерживать какой-нибудь старый проект десятилетней давности нет.

Добавлено через 3 минуты и 7 секунд
P.S. Также вспоминаем о том как bcb поддерживает стандарт, завязке на используемый инструментарий.
И самое удивительное, что ВНЕЗАПНО только  в 2010 году появилась поддержка юникода. С разморозкой...

Автор: Лена 23.11.2010, 20:02
Цитата(borisbn @  23.11.2010,  16:09 Найти цитируемый пост)
Назови пару-тройку крупных известных проектов, сделанных на билдере 


А зачем называть? Посещайте официальный сайт, много интересного узнаете: http://www.embarcadero.com/rad-in-action/application-showcase список конечно очень урезан.
CloneCD, WinRar, Alcohol 120%, EMS -менеджеры, Macromedia HomeSite, Скайп и многое многое другое создано на Делфи и Builder.

Автор: Alexeis 23.11.2010, 21:17
Цитата(cutwater @  23.11.2010,  20:50 Найти цитируемый пост)
И самое удивительное, что ВНЕЗАПНО только  в 2010 году появилась поддержка юникода. 

  Версия 2009 вышла в 2008 году это раз. Во вторых поддержка юникода существует уже 100 лет в обед с момента появления класса WideString и символов wchar_t, также сто лет присутствуют функции преобразования в UTF16/UTF8 и обратно.  Можно говорить о тотальном переходе на юникод. Да и раньше еще можно было использовать альтернативный пакет юникодных контролов. Тот кто сильно хотел мог использовать. 
  
Цитата(cutwater @  23.11.2010,  20:50 Найти цитируемый пост)
Сравните количество вакансий, новых / крупных проектов на C++ Builder, Delphi, VCL с вакансиями на C++ / Qt, C# / WPF и почувствуйте разницу.

  Популярность это на 90% вопрос коммерции и рекламы. Кроме того не нужно забывать про область применения. Узкий инструмент не становиться плохим просто от того что он узкий. Поэтому популярность следует оценивать в своей сфере применения. 
  Если говорить о программировании приложений под Windows с богатым пользовательским интерфейсом, корпоративных приложениях, клиенты БД, то процент не так уж и мал. 
  Например, яркий представитель: TuneUp Utilities 2010 . Красочный интерфейс, выезжающие панельки, куча кнопочек пимпочек и т.д. Сложные диалоги. Открываем папку с программой. Не может быть  smile куча подозрительных файлов с расширением bpl . Судя по всему билдер не имеет ни какого отношения к ним. 

Автор: SVN74 23.11.2010, 21:24
Цитата(Alexeis @  23.11.2010,  21:17 Найти цитируемый пост)
 TuneUp Utilities 2010 . Красочный интерфейс, выезжающие панельки, куча кнопочек пимпочек и т.д. Сложные диалоги. Открываем папку с программой. Не может быть   куча подозрительных файлов с расширением bpl . Судя по всему билдер не имеет ни какого отношения к ним.  

 smile  smile 

Автор: cutwater 23.11.2010, 21:35
Цитата(Alexeis @  23.11.2010,  20:17 Найти цитируемый пост)
 Во вторых поддержка юникода существует уже 100 лет в обед с момента появления класса WideString и символов wchar_t, также сто лет присутствуют функции преобразования в UTF16/UTF8 и обратно.


Чтобы не быть голословным http://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%80%D0%BE%D0%BA%D0%B8%D0%B9_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB

Автор: Alexeis 23.11.2010, 22:17
Цитата(cutwater @  23.11.2010,  22:35 Найти цитируемый пост)
Чтобы не быть голословным http://ru.wikipedia.org/wiki/%D0%A8%D0%B8%...%B2%D0%BE%D0%BB

  >Соответственно, приложения, которым требуется сохранять переносимость на различных C и C++ компиляторах, не должны использовать wchar_t для хранения Unicode-текста
  Билдер не заявляет переносимость поэтому вполне может использовать тип wchar_t для хранения символов UTF16. Достаточно того что он совместим с WinApi. Строки билдера прекрасно сочетаются с типами Windows поэтому позволяют использовать юникод как для внутренних нужд, так и для взаимодействия с ОС в том числе и для отображения строк в различных элементах интерфейса. Возможность обеспечена чего не хватает?

Автор: borisbn 24.11.2010, 00:23
Цитата(Alexeis @  23.11.2010,  21:17 Найти цитируемый пост)
Не может быть   куча подозрительных файлов с расширением bpl . Судя по всему билдер не имеет ни какого отношения к ним. 

Возможно и не имеет. Скорее всего Delphi smile

Цитата(Лена @  23.11.2010,  20:02 Найти цитируемый пост)
Скайп и многое многое другое создано на Делфи


как я уже говорил

Цитата(borisbn @  23.11.2010,  09:28 Найти цитируемый пост)
IMHO если и использовать VCL, то только в Delphi



Цитата(Лена @  23.11.2010,  20:02 Найти цитируемый пост)
Посещайте официальный сайт, много интересного узнаете: http://www.embarcadero.com/rad-in-action/a...cation-showcase

зашёл. посмотрел. честно говоря, список оч. кислый:

Cabriolet Dynamic Geometry, Cambridge CAD, Clone CD, BitZipperBitZipper, AVS Video Tools, Complete Time Tracking, ASUS PC Probe сделаны на билдере. остальные на Delphi. Да и из этих знаю только Clone CD и ASUS PC Probe, да и то не сказать, что серьёзные проекты.


Ну не пишут серьёзные прокты на билдере, да и вакансий на него ( как сказал cutwater ) практически нет.
Повторю: для начинающего программиста-разработчика интерфейсного ПО VCL - отличная штука, и начинать нужно с нативного для неё языка - Delphi, но начинать, вести и поддерживать большие и сложные проекты на билдере - IMHO нелепо.

Автор: Лена 24.11.2010, 02:57
Цитата(borisbn @  24.11.2010,  00:23 Найти цитируемый пост)
как я уже говорил


Скайп написан на Дельфи, а то это значит, что это не возможно сделать в С++ Builder? smile 


Автор: oldcode 24.11.2010, 03:42
аргументы против билдера не убедительны smile , имхо, а если он для вас "дебилдер" - то такого хрена вы здесь делаете ...

Автор: A5uKa 24.11.2010, 08:47
Цитата(oldcode @ 24.11.2010,  03:42)
а если он для вас "дебилдер" - то такого хрена вы здесь делаете ...

Пишем на "Дебилдере", что ещё.

Автор: mrbrooks 24.11.2010, 09:02
Цитата(oldcode @  24.11.2010,  03:42 Найти цитируемый пост)
а если он для вас "дебилдер" - то такого хрена вы здесь делаете ... 

а что? 

Автор: Metalex 24.11.2010, 09:06
Гм.. А позвольте спросить, в визуал студио можно создать такой же интерфейс как с помощью билдера? И какой проект для такого нужно создавать?

Автор: mrbrooks 24.11.2010, 09:09
Цитата(Metalex @  24.11.2010,  09:06 Найти цитируемый пост)
Гм.. А позвольте спросить, в визуал студио можно создать такой же интерфейс как с помощью билдера? И какой проект для такого нужно создавать? 

При такой постановке вопроса ответ положительный - WinForms

Автор: A5uKa 24.11.2010, 09:31
всё же CLR ?

Автор: borisbn 24.11.2010, 09:32
Цитата(Metalex @  24.11.2010,  09:06 Найти цитируемый пост)
А позвольте спросить, в визуал студио можно создать такой же интерфейс как с помощью билдера?

Если установишь Qt, то можно гораздо лучше: builder'овские Anchor'ы сильно уступают Layout'ам, в builder'е нет понятия стиля ( skin'а ), в Qt это встроенная вещь, и т.д. и т.п.

> а если он для вас "дебилдер" - то такого хрена вы здесь делаете ...
стараюсь уберечь начинающих от ошибки, которую сам допустил 10 лет назад smile

Автор: Лена 24.11.2010, 11:55
Цитата(borisbn @  24.11.2010,  09:32 Найти цитируемый пост)
builder'овские Anchor'ы сильно уступают Layout'ам


ЭТО ОЧЕНЬ ВАЖНОЕ ЗАМЕЧАНИЕ! Теперь брошу все усилия на Qt. smile 

Цитата(borisbn @  24.11.2010,  09:32 Найти цитируемый пост)
стараюсь уберечь начинающих от ошибки, которую сам допустил 10 лет назад 


 smile 

Автор: A5uKa 24.11.2010, 12:15
А ещё у qt хайлайтинг кода лучше ! 

Автор: Alexeis 24.11.2010, 12:45
  Тогда хотелось бы уточнить на счет производительности интерфейса. Известно, что формы билдера работают быстрее. Чего стоит вызов сигнала в качестве обработчика и чего стоит вызов эвента. Опять же за универсальность всегда приходиться платить скоростью и объемом. Делаем большую, активную, сложную форму опять же плюс к билдеру. 

Автор: Лена 24.11.2010, 13:08
Бесконечный холивар, а вывод всегда остается одним - каждый кулик хвалит свое болото. smile 

Автор: cutwater 24.11.2010, 15:05
Цитата(Alexeis @  24.11.2010,  11:45 Найти цитируемый пост)
 Тогда хотелось бы уточнить на счет производительности интерфейса. Известно, что формы билдера работают быстрее. Чего стоит вызов сигнала в качестве обработчика и чего стоит вызов эвента. Опять же за универсальность всегда приходиться платить скоростью и объемом. Делаем большую, активную, сложную форму опять же плюс к билдеру. 



Бесполезно спорить когда оба оппонента знакомы только лишь с одним предметом спора.

Автор: borisbn 25.11.2010, 00:35
Цитата(cutwater @  24.11.2010,  15:05 Найти цитируемый пост)
Бесполезно спорить когда оба оппонента знакомы только лишь с одним предметом спора.

какбэ нелогично:
Цитата(Alexeis @  24.11.2010,  12:45 Найти цитируемый пост)
Известно, что формы билдера работают быстрее. Чего стоит вызов сигнала в качестве обработчика и чего стоит вызов эвента.

Цитата(borisbn @  24.11.2010,  09:32 Найти цитируемый пост)
которую сам допустил 10 лет назад 


Автор: secondd 1.12.2010, 17:39
QT использует CLR или компилит в машинный код?

Автор: borisbn 1.12.2010, 18:10
Цитата(secondd @  1.12.2010,  17:39 Найти цитируемый пост)
QT использует CLR или компилит в машинный код?

QT = Quick Time, и я хз, как он работает, а Qt вообще не компилит, т.к. это - библиотека. Компилит компилятор Си++ ( на windows - msvc или minGW, на linux - gcc ). И компилит, да, в машинный код

Автор: secondd 1.12.2010, 18:14
Спасибо! Значит .NET или другая прокладка не используется, т.е. не будет потери драгоценной скорости.  smile 

Автор: SVN74 1.12.2010, 21:59
Цитата(secondd @  1.12.2010,  18:14 Найти цитируемый пост)
Спасибо! Значит .NET или другая прокладка не используется, т.е. не будет потери драгоценной скорости.

Да, если не учитывать, 5 мб dll(ешек), которые надо везде за собой тягать или впихивать все в один exe(шник)... 

Автор: Alexeis 1.12.2010, 23:09
Цитата(SVN74 @  1.12.2010,  22:59 Найти цитируемый пост)
Да, если не учитывать, 5 мб dll(ешек), которые надо везде за собой тягать или впихивать все в один exe(шник)...  

  Да ерунда эти 5Мб, давно уже не живем в век Dial Up-a. Windows Forms также работает не хуже. Очевидно, что все визуальные классы попадают в кеш сборок еще на этапе установки .NET, поэтому эти библиотеки не требуют JIT компиляции и работают точно также как VCL/Qt/WinApi . 

Существенные аргументы
1) Стабильность
2) Структурная организация библиотеки
3) Заложенная функциональность
4) Быстродействие

Очевидно, что ни одна из библиотек не дает преимущества по всем 4м пунктам. 
WinApi - Стабильность + Быстродействие
VCL      - Структурная организация библиотеки + Заложенная функциональность
Qt        - Стабильность(?) + Структурная организация библиотеки + Заложенная функциональность
.NET     - Стабильность + Структурная организация библиотеки + Заложенная функциональность

Автор: 0x00 15.12.2010, 09:00
В области энергетики, банковском секоре, в промышленности ПОЧТИ ВСЕ ПИШЕТСЯ НА Builder + Oracle (в России).
Изза легкости разработки и легкости поддержки.
это очевидно и споры не уместны.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)