帮助COBOL程序员过渡到.Net。你有什么建议?

8
我有一些COBOL程序员要转向.NET。我发现许多人很难采用/理解面向对象编程原则。由于我没有COBOL经验,所以我找到的相似之处非常有限。
我绝不想说“忘记你二十年的经验。这是全新的。”但我还没有更好的比喻和工具。
您有什么建议可以帮助他们了解.NET世界?

我选择了一个答案,因为它似乎是正确的做法,但我仍然对任何额外的建议或见解感兴趣。谢谢大家。 - Rob
8个回答

10

我之前也曾遇到过这个问题,当时我是一个团队的领导,手下有五名COBOL开发人员,他们在编程方面的经验比我多4倍。

正如你所注意到的,你需要从面向对象编程基础开始学习。然后,如果可以的话,尝试进行配对编程(一个.NET开发人员+一个COBOL开发人员)。这就是我的做法,而且效果非常好。

这个链接也许会有帮助:Microsoft .Net for COBOL programmers


3
+1 建议采用配对编程,并提供了非常具体的链接。 - Chris Ballance
我们一定会在可以的时候将它们配对。感谢你推荐的书籍。 - Rob
编程配对在这种情况下确实很有效,但记得每30分钟交换一次键盘或类似的东西。我们使用了这本书,但是第二版(我的第一个链接最初指向那个版本,但我注意到现在已经停产了)。 - Novitzky

8
这样做的方法是从COBOL程序员的角度思考问题。对于他们来说,这是一个巨大的距离,因此在可能的情况下为他们提供脚凳以帮助他们行走至关重要。
大多数COBOL程序员将没有或很少有桌面经验。他们没有面向对象编程经验。可能没有或很少有网络经验等等。
然而,如果他们写过结构化的COBOL代码,他们会非常清楚函数是什么。即使COBOL段落不严格等同于函数,大多数优秀的COBOL程序员也会很快掌握这个概念。建立在他们20年来灌输的结构化编程概念之上。结构导致函数,函数导致面向对象编程。
大多数具有如此多经验的COBOL人员应该非常了解业务逻辑。利用这一点。尽快摆脱虚假的“正方形和三角形是形状”的面向对象编程示例,并让他们关注他们可能已经非常熟悉的事物——例如,储蓄和支票是账户,它们有共同点......等等。
他们肯定会理解基于文件的程序。在开始时忘记花哨的GUI界面。让他们编写模仿他们在COBOL中所做的事情但容易转换到面向对象编程概念的程序。他们理解记录。记录与结构体非常相似,结构体与类也非常相似。等等。
大多数COBOL程序员将理解事务处理。利用这一点。它应该提供丰富的材料来教授面向对象编程和许多不同的.NET(或任何其他技术)API。
指派一位经验丰富的.NET开发人员作为他们的导师。让他进行代码审查,提供咨询等。不要只是向COBOL人员扔几本书和一堆新的MS软件,然后期望他们自己游泳。那是灾难的预兆。他们需要一些援助和鼓励。但你可能会在那个小组中找到一些坚实的.NET人员,并保留你对当前系统的知识。

6

首先让他们使用对象,而不是期望他们自己设计出一个完美的面向对象系统。

你可以像我的CS导师那样设计类并为他们创建存根 - 只留下方法实现让他们自己来解决。这样,他们就有机会熟悉语法、使用对象、范围等,而不必期望他们理解良好的面向对象设计的复杂性。


2
作为一家COBOL供应商发布的声明:
作为一个长期停滞不前的程序员,最近我一直在努力掌握COBOL和.NET。我发现最困难的部分是理解.NET框架。调用方法的"词语"相当简单,但是找到想要使用的方法却很困难!在VS中使用智能感知工具非常方便,但你仍然需要知道从哪里开始!
我还想指出这个网站,在这里有一个非常好的COBOL与C#&VB的比较表:http://www.codeproject.com/KB/net-languages/COBOLvsVBvsCSharp.aspx Micro Focus正在做一些非常有趣的事情,使COBOL更加适合.NET,但我最好不要在这里详细讨论。请查看Micro Focus网站以获取更多信息。

1

我曾经和一位有经验的COBOL开发人员一起在一个.Net项目上工作过,我一次又一次地注意到的是假设数据类型不需要检查(当你在COBOL中有经验时这是可以理解的,因为所有东西都只是一串字符与某种格式相结合):其他事情很快就被掌握了,但这个习惯却需要很长时间才能消失。


1

根据你想让它们做什么,这可能是一个陡峭的学习曲线。

你需要尽量减少学习曲线。

如果我没记错,COBAL是一个单词语法(不像C使用符号来包含其结构),所以VB.Net可能是你的团队可以最快掌握的语言。

然后看看http://www.learnvisualStudio.net < 它有很多视频

你会感兴趣的主要系列是

Visual Basic 101

Visual Basic 201 - 面向对象编程和设计模式

这将介绍你语法和一些面向对象编程的知识。

然后再看看其他数据访问(ADO)的视频,逐渐提高技能水平。这不是一夜之间的事情。

希望对你有所帮助。

dave


0

最重要的是要记住,.NET不是一种编程语言。COBOL才是一种编程语言。

如果你想让COBOL程序员高效地生产.NET应用程序,那么请让他们评估VB.NET和IronPython,并通过在这些语言中原型化一些小型应用程序来进行评估。一旦他们尝试了VB.NET和IronPython,就让他们选择使用哪种语言,并组织一些所选语言的培训。

无论你做什么,都不要让他们在没有证明能够处理VB.NET或IronPython之前使用C#。如果你有一个计算机语言谱系,其中C++、Java和C#位于复杂、技术性、标点符号端的话,那么COBOL位于另一端,它是直接、面向业务、纯文本的。VB.NET和IronPython都更接近COBOL的一端。

如果我经营这家公司,我会跳过评估阶段,直接开始推销IronPython,因为我认为从长远来看这是更好的选择,而且Python技能可以在Linux/UNIX项目或Java项目以及.NET中得到利用。

重要的是让这些人编写和调试一些在.NET上运行的实际代码,以便他们感受到它,并能找出一些合理的处理方式,例如MOVE CORRESPONDING和level 88s等他们熟悉的东西。

0

这不是一个真正的答案,只是我发现有用的链接。大多数面向对象的教材都使用相同的概念来教授关于对象和类的知识 - 动物层次结构等等... 我发现这篇文章很有新意,因为它从真正的核心开始:如何将系统分解成其初始的类和对象:http://archive.eiffel.com/doc/manuals/technology/oosc/finding/page.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接