4

我的一个朋友在他的公司使用一个用 PowerBuilder 编写的ERP软件。不幸的是,(唯一的)开发人员即将退休。我的朋友非常喜欢这个软件,并且想继续使用它至少十年,所以我的朋友决定购买源代码。

他想创业来维护软件和开发新功能。目前,该软件可能有大约 50 个安装在野外,他已经认识了一群潜在的买家。

现在他正在寻找一名开发人员并问我...我做了一点 C/C++ 编程、一点 VB 和一堆其他语言,但在过去的几年里,我通过编写 Java Web 应用程序来赚钱。根据我的阅读,PowerBuilder 对我来说看起来很陈旧,几乎没有任何教程,没有开源框架,笨拙的版本控制,甚至没有阅读任何测试框架。StackOverflow 上的人们说他们希望语言/IDE 已经死了。此外,我维护的代码完全没有记录和测试。

您认为对于以前从未听说过 PowerBuilder 的人来说,维护这样的软件是可能的吗?

编辑:好的,谢谢你的回答。我们决定彻底淘汰旧的应用程序并用最新的语言重新编写它。

4

8 回答 8

7

是的,这是可能的。Powerbuilder 不是一门难学的语言,特别是如果您已经使用过 VB。

Powerbuilder 社区远小于您可能使用的 Java 等社区,但它确实存在。提出问题的最佳位置(除了 SO!)是sybase.public.powerbuilder.*新闻组。

对于单元测试,请尝试PowerUnit,对于源代码控制,您可以通过PBSCCProxyTamTam SVN SCCPushOK SVN SCC proxy使用 Subversion 。

很长一段时间以来,它一直是一种小众语言。在我看来,这是由于所需工具的前期成本,这基本上阻止了任何新人考虑它。

未来是相当光明的:Sybase 正在蓬勃发展,致力于 PowerBuilder,并定期宣布向版本 12 发展,这将是一个完整的 .NET 语言,如 C# 和 VB.NET,并将附带一个基于 VisualStudio 的 IDE。您将能够直接将代码迁移到版本 12,无需重写。

于 2009-03-03T13:05:15.927 回答
7

我的职业生涯始于 PowerBuilder 开发人员,但当我意识到 PB 几乎是一种死语言时,我很快就转向了 java 和 python。

此外,即使有可用于应用编程“良好实践”的工具,它们也并不广为人知且有些昂贵,所以即使没有版本控制(!!),我也不得不工作,撇开自动化测试或持续一体化。

这是一种几乎任何人都可以在很短的时间内开始构建可用应用程序且几乎不需要培训的语言,而且应用程序的构建速度非常快,与 Java 相比,这需要一段时间的学习,直到开发人员能够高效地工作,即便如此,开发一个 webapp 也需要时间。

但回报是维护,这很快就变成了一场噩梦。即使是数据库中的微小更改(例如数据库列中的类型更改)也会破坏引用它的每个数据窗口(PB 无处不在的数据访问组件)。

它与 VB 非常相似,因为几乎任何人都可以在其中开发应用程序,只需很少的编程知识,应用程序的平均质量非常低,数据库耦合难以管理,并且受到不良编码实践的困扰。

我的建议是不要以这种语言建立开发人员职业生涯,除非有钱证明它是合理的,在这种情况下,作为“计划 b”继续培训自己使用替代技术,以免与语言一起过时。

并且始终努力使您的编码和解决问题的技能保持“良好状态”,因为这种语言对此无济于事。

于 2009-03-13T17:43:03.073 回答
6

是的,任何称职的程序员,甚至一些不那么称职的程序员都可以使用 PowerBuilder。但是,我不同意早期的答案之一。它在某种意义上不同于.Net VB 之前的版本:它支持真正的 OO 原则(封装、继承和包含多态性 [但不支持 C# 和 Java 中通过接口的操作多态性])。经典 VB 没有继承。

Paul Lefebvre 和 Colin Pickard 的其他回答是正确的:PB 仍然存在,尽管它比过去更像是一种小众语言,而 Sybase 确实在朝着 .Net 的方向发展。至于源代码控制,PB 支持一些接口(我们将它与 VSS 一起使用),但我很感谢 Colin 提供的一组不错的链接,将来可能会派上用场。

框架:最常见的是 Sybase 多年前开源的 PowerBuilder 基础类。

我对你的警告是:我在上面说过,人们不必是特别强大的程序员来编写 PB。PB很容易学习,但需要时间来掌握。它在 90 年代后期经历了最辉煌的日子,当时任何可以双击 Windows 图标启动应用程序的人都认为他们是程序员。尽管真正支持 OO,但大多数 PB 应用程序都不是设计和编写良好的应用程序。它们通常是完全的 hack 工作(批评当时缺乏经验丰富的开发人员和软件开发的不成熟,而不是 PB 本身,它仍然是一个非常强大的工具)。如果你继承了一个真正易于维护和管理的代码库,那么你就是少数。PB 代码几乎总是可以归类为遗留代码。好消息是有很多挑战。

于 2009-03-05T15:43:40.227 回答
3

考虑到听起来有偏见的风险,我认为 PB 是目前更好的 RAD 工具之一,明年计划的新版本 PB12 将再次让它变得有趣,因为它使用 Visual Studio 的 VSShell 作为其新的 IDE(Intellisense 等)。我目前正忙于在编译器团队中工作,将所有 .NET 好东西添加到 PowerScript 中,这些好东西在 C# 中使用过,比如委托、接口、属性等,但仍然保持语言易于使用。PB 也是少数提供从旧版本迁移到新版本的开发平台之一,新的 PB12 也不例外。PB12 生成的应用程序将使用 WPF 和后来的 Silverlight 用于 PB12 后的现代外观,所以我非常兴奋。我本身不是 PB 开发人员(C++),但我仍然认为快速生成 C/S 应用程序很难被击败。

于 2009-03-26T12:10:46.053 回答
3

迁移到另一种语言是否可行取决于原始应用程序的技术质量。

在您阅读我的“PB 很好”之前:我是 93 年以来的 PowerBuilder 开发人员。PowerBuilder 非常有活力和活力。是的,很多人在千禧年之后不久就离开了这门语言,但也有不少人后来又回来了。不,我不赚钱卖PB!

PowerBuilder 应用程序与任何其他工具的最大区别在于 DataWindow 技术。它在知识渊博的开发人员手中是如此强大的工具。示例:为 INSERT/UPDATE/DELETE 动态创建最佳 SQL。接近所有事物的每个属性都可以是使用 DW 缓冲区中的数据的表达式。DropDown DW 非常酷。DW 和 PB 的其余部分是真正独立于 DBMS 的!

当我的许多 DataWindows 只需要 4 个函数调用时,代码完成有多重要?

  • 定义数据库连接 >> dwData.SetTransObject(SQLCA)
  • 从数据库中读取所有数据 >> dwData.Retrieve()
  • 将数据写入数据库 >> dwData.Update(true, false)
  • 提交时重置 >> dwData.ResetUpdate( )

我敢打赌:如果最初的开发人员知道如何真正利用 DataWindows - 您对迁移到 Java 或 C# 所做的任何估计都不会接近实际发生的情况。如果他们没有:该应用程序只是另一个应用程序,其数据绑定方式与您的新工具不同。

使用 PowerBuilder 时您会松动什么?您需要接受 4GL 及其 VM 是按原样设计的 - 无法访问 VM 的源代码,因此您无法进行自己的 VM 自定义。没有关闭 NULL 支持来提高速度。无需通过重写 VM 的事件管理器来更改事件顺序。4GL 意味着更少的代码行。DataWindow 意味着更少的 LOC。4GL 意味着更少的 geaky 位调整。

/MicKr- 顺便说一句:PocketBuilder 是 Windows Mobile 的 PB - 好主意!

于 2009-05-28T22:08:15.770 回答
2

是的,您当然可以学习 PowerBuilder。但是,您是否愿意是一个只有您才能回答的问题。

我使用 PowerBuilder 很多年了(版本 4 到 9)。有些部分我真的很喜欢。这是构建业务应用程序的好方法。它是面向对象的,DataWindow 是一项很棒的技术。

但它也有不好的地方。IDE 是过时的。代码编辑器很简单(例如,没有代码完成)。与源代码管理的集成很烦人,而且社区很小。它是仅限 Windows 的。

有一本杂志(PowerBuilder Developer's Journal - SYSCON),但现在它很薄。然而,Sybase 似乎确实为 PowerBuilder 的未来版本准备了一些巧妙的东西。

就个人而言,我非常喜欢它,如果有机会我会回去。

于 2009-03-03T14:54:55.820 回答
1

很久以前我在powerbuilder上工作过,6.5版它非常易于使用,可以与VB进行比较。我觉得维护应用程序并进行小修复和增强系统会很容易。有不少公司仍在使用 powerbuilder 并维护旧应用程序。

于 2009-03-03T09:27:02.253 回答
1

Powerbuilder 非常简单,您会发现 datawindows 对象对制作报告、界面、表单等非常有帮助。

如果你懂visual basic,那就更简单了

我在 2 个月内学会了 powerbuilder。

powerbuilder 的一个缺点是每个许可证的成本。

于 2012-10-10T22:49:50.557 回答