C ++ Builder或Visual Studio

问题描述 投票:28回答:12

我拥有一家软件开发公司。我们为其他以其名称/头衔命名的公司开发软件。我们在会计/ ERP市场上也有一些自有品牌的头衔。我们的会计软件大约占我们业务的60%,并使用C ++ Builder编写。

那些知道,实现C ++ Builder的人在从Borland,CodeGear到Embarcadero的转手方面走的路很艰难,可能还有几次。 C ++ Builder在我们的会计软件上多次搞砸了我们。众所周知,QuickReports是错误的,他们的XML构建描述并没有与GUI紧密耦合,导致构建不起作用 - 通常是错误的界面。

在过去的8年中,我们已经稳步取消了对VCL和有缺陷的组件的依赖,但是,一些第三方VCL组件仍然不易更换。我们使用Developer Express的GRID包 - 很棒的产品。

我只是处于十字路口并且市场上有最新版本的C ++ Builder XE,当你看到这款产品的糟糕历史时,我很难证明价格合理。

因此,我正在寻找可能处于类似情况并成功切换到Visual Studio的其他任何人的建议或步骤。

除了Developer Express工具之外,我们已经将大部分应用程序慢慢移动到wxWidgets。我们编写了自己的TSQL抽象,我们也可以移植。

有什么想法或建议吗?您是否已将项目移至Visual Studio,或者您是否已使用新的Builder XE来发现它之前的许多缺点已经消失?

寻找“去过那里,做过那些”的建议。

c++ visual-studio c++builder
12个回答
15
投票

迁移到wxWidgets有其优点之一就是你不会被绑定到像C ++ Builder或Visual Studio这样的IDE。 C ++ Builder有几个问题,它的主要优点是VCL框架,我认为它仍然是C ++最好的GUI框架之一。问题是它需要C ++ Builder,温和地说它确实存在稳定性和编译器性能方面的一些问题。

然而,Visual Studio并不是最终的IDE,最新版本最好是bug,而C ++ Builder提供的许多RAD工具在Visual C ++中根本不存在(除非你愿意使用.net语言) 。

我完全理解你希望让你的代码更少依赖于C ++ Builder,告诉你实话我怀疑它会继续存在很长时间。然而,从你的帖子中听起来,你的大部分开发都依赖于快速开发的应用程序,而在C ++领域,C ++ Builder是满足这一特定需求的最佳工具之一。

我个人从来没有真正想过C ++是快速开发的Windows GUI应用程序的最佳解决方案,也许你的重点不应该是找到一个不同的IDE,但是在寻找更合适的语言时,我建议使用Delphi,Delphi,你将会是能够编译您现有的c ++构建器项目,甚至可以重用现有的VCL组件。

Delphi将 - 我相信 - 比C ++ Builder更长,可以是Delphi的形式,也可以是Lazarus(freepascal的IDE)的形式,它甚至可以跨平台并支持64位开发。

但是,如果语言的改变不是一个选项,我现在会坚持使用C ++ Builder,但不会升级到XE版本,我认为这不是价格标签所证明的。 (鉴于当然你已经开始研究一个相对较新的版本)。


0
投票

@casablanca说的话,但如果你说你对现在使用的程序不满意,你也应该考虑很好的选择:

  1. EclipseCDT):非常好的和完整的产品
  2. NetBeans:经常与eclipse相比
  3. Code::Blocks:更简单,但经常被推荐,不是我相信的构建系统集成的伟大,但与wxWidgets轻松集成
  4. QtCreator:我个人最喜欢的(干净又快速并且使用git),但目前只用于个人项目和小应用程序,可能不适合wxWidgets,虽然我也不使用Qt :)

一句警告:Visual Studio调试器被视为“尽可能好”,但您需要付费。 1-4以上都是免费的,备受好评的产品。


0
投票

这意味着Visual Studio 2010的发布会产生一个新问题:即使您没有升级到.NET 4,升级Visual Studio也有意义吗?答案是“是的”,并且有很多原因。但是如果你要使用.NET 4,你会在Visual Studio 2010中找到很多支持。

一旦启动Visual Studio 2010,您就会注意到Start Page现在比File菜单更有用(参见图1)。 Start Page仍然提供对项目模板的访问,但页面的其余部分现在提供对主要.NET技术的培训资源的有组织的访问。

打开文件后,您会发现,由于Windows Presentation Foundation(WPF),在编辑窗口中有更多的视觉反馈。例如,如果单击变量名称,则会突出显示该变量名称的所有使用。此功能不仅限于变量 - 单击方法标题会自动突出显示所有返回子句和方法的结尾。但这种额外的突出表现并非没有缺点。例如,在调试时,我有时会丢失当前行,因为它的突出显示被为当前所选项添加的突出显示所覆盖。 aztec tattoos


0
投票

我讨厌这样说,但我自己的公司也处于同样的十字路口。我们多年来一直在使用C ++ Builder(从未升级到v6以上),我们的管理人员最近拉动了触发器以切换到Visual Studio前进:-(我认为我们不会移植现有的C ++ Builder很快就会推出VC ++应用程序,因为这将是一个重要的重写,但我们未来的新产品现在将在VC ++ / .NET中。


18
投票

Visual Studio与C ++ Builder无法真正比​​较。

是的,它们都是C ++编译器,但是:

  1. 使用.NET语言时,Visual Studio只是RAD
  2. MFC是'半rad',但不接近VCL的易用性
  3. Visual Studio编译器更擅长生成优化代码,但C ++ Builder使用Clang非常好
  4. Visual Studio和C ++ Builder都符合标准(CB使用基于Clang的编译器)
  5. C ++ Builder附带Boost
  6. C ++ Builder XE比以前的版本好很多(不包括Builder C ++ 6.0)
  7. 你无法在C ++ Builder for C ++开发中击败RAD工具,没有什么可以接近的

对于非VCL依赖代码,编译器的差异可能不会对您造成太大伤害。我有一个DLL,我为VC6,VS2008和Builder 2010 / XE下的客户编译。我不得不抛弃一些#ifdef,但其中大多数实际上是用于VC6。

我可以提出的最大建议是不要移动到MFC,那就是疼痛开始的地方。

考虑一下开发人员的培训。在学习新编译器的特性的同时,您的开发人员在生成工作代码时会变得非常慢。

尽管如此,当我在移动到VS2008 / 2010或使用Builder C ++购买新产品时为客户选择时,我选择了Builder,仅用于RAD IDE。

祝好运。

针对C ++ Builder 10.2(2017)进行了更新:

  1. 32位和64位Windows都使用Clang / LLVM(iOS和Android也一样)
  2. 32位和64位Windows均使用Boost 1.55
  3. 10.2非常稳定,每次发布都会越来越好

这仍然出现在谷歌搜索上,因此柏林10.1再次更新:

  1. 32位和64位代码现在使用CLANG / LLVM for Windows
  2. OS X的32位代码仍然使用旧的编译器
  3. Android和iOS编译使用CLANG / LLVM

10
投票

如果您坚持使用C ++并期望在Visual Studio for C ++中使用相同类型的IDE,RAD Studio会让您感到震惊。

说实话,C ++ Builder从来就不是一个糟糕的C ++ GUI开发环境。它可能是C ++的最佳选择。为什么?因为您可以利用所有伟大的Delphi组件。

在Visual Studio中,没有可替代ExpressQuantumGrid™Suite for C ++。

关于C ++ Builder的大多数严重抱怨都经常集中在它与STL和Boost等标准的兼容性上。

我不认为Embarcadero会放弃支持C ++ Builder。这些问题通常与德尔福人(第三方)编码的方式有关。老实说,我只记得DevExpress的一个版本是一个问题。

简短而甜蜜:如果你想使用C ++和某种RAD / GUI的东西坚持使用C ++ Builder。


6
投票

我们一年前从C ++ Builder 6升级到XE。非常满意XE。转向UnicodeString并不太难。我们还将所有BDE代码转换为BDExpress(DBX)。这花费了很长时间并且重写了很多,但非常值得。要记住的是,两者都不是完美的。俗话说,篱笆另一边的草总是看起来更绿。如果您想要开发效率,请使用C ++ Builder和VCL。如果您想要非常长期的安全性,或者轻松找到程序员,那么Visual Studio。我的意见:保持你喜欢的东西,取代你不喜欢的东西。例如,保留C ++ Builder并替换QuickReport。顺便说一句,如果您已做出决定,请告诉我们。


3
投票

这里是C ++ Builder PM。

C ++ Builder具有一些特定的优势:

  • 它非常适合UI设计。使用VCL(本机Windows控件)或FMX(跨平台,如果需要,通常也是本机控件)。 Visual C ++并没有附近,MFC仍然像你在1995年那样设计UI。
  • 它专注于跨平台。 Visual C ++正在宣传它,但C ++ Builder提供了“完整堆栈”:不只是编译,而是完整的库,UI,一切。 VC ++是跨平台的,直到你需要的东西不是。
  • 它被广泛用于需要数据库工作的人或其他“企业”项目,主要是因为数据库库(FireDAC)设计得非常好并且支持许多数据库。
  • 它使用Clang用于除macOS之外的所有平台,它仍然具有旧的编译器。它也正朝着更新到C ++ 17的方向发展。
  • 它具有实时预览(设计您的应用程序,在手机等插件设备上实时查看应用程序)等功能,这些功能似乎极大地启发了某些最新的MS功能;)别担心,Visual Studio,我们爱你:)因此,在许多领域它实际上都是领先的,特别是对于x-plat开发。

弱点:

  • IDE仅在Windows上运行。您可以在任何地方部署并调试任何内容,但IDE是Windows。
  • 它只是C ++ 11,虽然走向C ++ 17。 MacOS是(喘气)C ++ 98。它在路线图上。您可以依赖它及时更新。
  • 代码完成和代码洞察力弱于Visual C ++。正在努力。
  • 它具有越野车的声誉,这是在最近的版本中积极工作的东西,以及我的个人驱动器以消除。但声誉很难摆脱。

2
投票

我们正在缓慢地转向VS2008和wxWidgets。对于可以为C ++ Builder(Developer Express等)购买的每个组件,我们的计划是雇用某人来构建该组件或雇用组件制造商为我们构建wxWidget组件。

C ++ Builder是目前在Windows上直观编程的最佳方式。但是,没有x64bit支持,也没有mac,linux支持。据说他们打算建立一个十字架版......我们还能等多久?


2
投票

这里的大多数答案是混合编译器,IDE和库(问题有重要的潜台词:如何选择业务/ GUI应用程序的环境)。问答混合Visual Studio语言和项目类型:对GUI的支持不足的C ++,具有精彩生态系统的C#等...(Basic,F#等)都在Visual Studio伞下。

GUI库:

MFC是图书馆,非常古老,生产力低。它的低级包装超过* .RES和WM_Envents。可能仍然无法编译没有MS C ++(也许许可证禁止这个)

VCL是Borland / Enbecaro理念和市场份额最重要的一个领域:构建GUI应用程序。似乎很好用的是可移植的opensurce GUI库,但几乎所有人都没有在可点击的IDE中那么好的支持

IDE:

个人感觉似乎是最佳答案。同意,只有生产者IDE才能对自己的GUI组件进行最佳控制。这里引用了很多独立的IDE,我会很简短。

编译:

很多年Borland C ++编译器远不是c ++标准(无法编译像boost这样的主流c ++代码)。我相信很多目标都是矛盾的:与Object Pascal代码或C ++标准共存。

说实话:来自C ++ Builder世界的大多数项目都不需要使用像boost和类似的高度“黑客”代码,我个人将Borland / Embecareo C ++语言视为部分基于C ++的部分独立语言(部分基于VCL)。一般这个世界是封闭的(越来越多),没有驱动程序,没有兼容的库,没有现代网络协议等。

我的观点:MS C ++编译器(过去和现在)更好的支持标准。

我(也许是好的)Borland C ++程序员。现在我使用C#/ WinForms Visual Studio(有时,罕见的Java SWT或Swing)和Microsoft C ++来进行低容量的C / C ++非GUI项目

最后的话:你是否仅限于C ++语法,还是可以切换?我是的,切换到C#。如果必须是C ++和高效的GUI,付出(越来越多)Embecadero


1
投票

我最初是Windows的C ++客户端工程师。我同意有关MFC非常糟糕的评论。在我的几个项目中,我们使用XML驱动的模板编写了自己的UI引擎,而不是使用MFC,因此图形设计人员无需软件工程师即可使用UI。

在我个人看来,C#.Net是Windows UI开发的最佳选择。 IDE很棒。用C ++编写UI需要付出太多努力。您仍然可以保留需要高性能的C ++片段。

PS。刚在VCL的维基页面上注意到这一点。 “.NET是以VCL为模型的,因为第一个Delphi版本的主要架构师之一Anders Heijlsberg去了微软,并且是.NET的主要架构师之一”


1
投票

我曾在C ++ builder 2006,2009,XE6和RS10工作过。

我建议您将项目转换出来。多年来我遇到过很多问题,例如环境崩溃和许多其他古怪的行为。此外,如果您确实需要某些帮助,那么用户社区就不存在,所以您通常需要等待24小时并希望Remy回复您:)或者尝试阅读delphi代码并将其转换为C ++(是的他们的delphi环境更受欢迎......没有像面向对象的pascal ......)。

无论你将它转换成什么环境,它都可能不像你想的那样干净或容易。所以知道会有很多工作,所以我建议你看一下你的长期战略。

如果您需要桌面应用程序,我个人会建议迁移到Java并使用SWT(https://www.eclipse.org/swt/)。我还建议坚持使用友好许可证的开源库,这样您就不必担心每年都会付钱并且可以扩展您的业务。如果你不需要一个客户端系统,那么我仍然会推荐java,因为它可以完整堆栈并且非常强大。根据我的经验,java社区往往会有更清晰的人(大多数情况下)有清晰的答案。我见过一堆使用.Net的hackish :)

您确实提到过Visual Studio,如果您不能使用java,那么我会推荐C#作为您的下一个最佳选择。但是,您仍然需要向MicroSoft支付许可费,并且还要处理用户组。

© www.soinside.com 2019 - 2024. All rights reserved.