2

我有这个遗留代码库(Compaq PERL),大约 1500 行代码,我需要移植到 Windows。我想使用gnu PASCAL(我已经安装并且可以使用)。我已经将我们的汇编程序(HP 64000 8051)从 VAX 上移到了Windows(KEIL 8051)上。

软件工程总监希望所有产品都脱离 VAX。这是问题所在,我尝试使用gpc从 CYGWIN 上的 VAX编译PASCAL。似乎需要做很多事情才能从一个 PASCAL 到另一个获得(IO 和算法)等效性。

我非常了解 PERL、FORTRAN、C 和 C++(还有 JAVA,但我宁愿不)。我的问题归结为 1500 行代码,将 PASCAL 代码移植到另一个 PASCAL 会更有效率,还是将其移植到另一种语言会更有效率?VAX PASCAL 是我在大学时的第一语言,但我已经有 8 年没有主动使用它进行编程了。我经常和专业地使用 PERL、C、C++ 和 FORTRAN。

我会说,就我的选择而言,如果我要转换成另一种语言,那就是 PERL。

代码所做的是对 INTEL hex 和 TEX HEX 图像文件执行填充和校验和。我知道 Srec 1.4 程序可以工作,但这不是一个选择,因为我必须让我的代码符合 DO-178B 的要求(而且我的公司对使用开源代码持谨慎态度)(他们对 open 没有问题源工具;只是代码)。

4

5 回答 5

2

我会尝试将其移植到Free Pascal,但有时间限制。如果它太难了,那么回退到最近使用的(你)的语言。

有什么方法可以测试新(移植或翻译)版本的行为是否与旧版本相同?

于 2008-12-06T23:48:33.427 回答
0

我认为将 1500 行代码移植到任何语言/平台应该不会太难,因为您需要做的就是“执行填充”和计算校验和。就我个人而言,我更喜欢 C# - 它对我的心灵有一种舒缓的效果 :) 但鉴于您对 C/C++ 的熟练程度,我建议您使用 C++,原因很简单,因为 C++ 是世界上最好的汇编语言,并且会满足您的要求完美。我认为 pascal 是一些过时的和新项目应该避免的东西。如果我错了,请随时纠正我。

用 C 编程是一件苦差事,为程序的进一步增强留出一些空间 C++ 似乎是最好的选择。也不要忘记与 C 不同的是,C++ 有一些非常强大的库支持它(STL、Boost 等)。

于 2008-12-07T00:57:15.940 回答
0

我会首先考虑长期可维护性(包括您以外的其他人)。例如,如果您是唯一知道 PASCAL 的人,并且您不想成为该程序维护和支持的唯一所有者,那么 PASCAL 可能不如拥有更广泛开发人员基础的语言那样好在你的店里。

如果这不是一个决策问题(例如,多个开发人员都同样熟悉相同的语言范围),那么我会估计 gnu PASCAL 端口的时间到例如 Perl 端口的时间,并使用将花费更少的目标语言使用时间。

如果这也不是一个决策问题(即同等水平的努力),那么我会考虑运行时经济性(更高的速度,更小的内存占用)。

于 2008-12-07T00:57:35.597 回答
0

鉴于它只有 1500 行代码,而且虽然 Pascal 有许多优点,但 I/O 不是其中之一,我会将整个东西移植到 C 中,将其分解为模块并在此过程中编写一些单元测试。移植到新的 Pascal 有一个很大的“未知因素”,即不同方言的兼容性如何。如果你将它移植到 C 中,你会在第一天结束时知道这项工作需要多长时间,一旦你完成了它,你就会彻底搞定它,因为 C 会比我们所有人都长寿。我同意 Joel Neely 的观点;总是很容易找到另一个 C 程序员来维护它。

因为程序很小,而且主要是 I/O 和整数操作,所以我在这里看不到 C++ 的作用。不值得额外的复杂性。

于 2008-12-07T08:00:41.950 回答
0

我总是尽量用公司主要使用的语言编写程序。

如果公司里有 6 名程序员坐在那里做 C++,那么求助于脚本语言(因为它是一个更容易的片段)是没有意义的,这增加了下一次招聘的语言要求。

我个人讨厌 Perl,因为它的语法有点加密。此外,它不是一种“企业”语言,尤其是在这里,而且在 Unix 系统管理员角落之外,很难找到真正精通它的人 (*)

请注意,这只是从我目前的观点来看的一篇文章,主要是在一家小商店里的一个程序员,那里有大的商业客户,他们把他们的做法强加给我们。YMMV。

(*) webdevel 在这里主要做 ASP.NET。

于 2009-05-02T12:05:50.250 回答