开发人员在编程语言之间迁移的真正挑战是什么?

时间:2008-10-17 13:39:14

标签: language-agnostic migration

许多开发人员都声称从一种编程语言转移到另一种编程语言相对简单,特别是如果语言基于类似的范例。然而,在实践中,努力不是通过学习语言的语法,而是通过深入理解语言的细微差别,更重要的是了解语言库中提供的内容。例如,从语法角度来看,从Java切换到.Net并不困难,但编程效率需要对可用库有很好的了解。鉴于语言差异,从PHP切换到.Net可能会带来更大的障碍。

开发人员在同一范例中迁移到不同语言的实际开销是多少?如果范式不同会怎么样?

7 个答案:

答案 0 :(得分:10)

最大的挑战(对我来说)通常是API,而不是语言本身(尽管是.NET)。例如,我多年来一直在使用Microsoft的C ++和C#(之前的Delphi)。但是我开始使用Java很困难;即使是琐碎的项目也可能需要一段时间。不是因为语言很难(不是),而是因为API不同,排列方式不同。

需要花费几个月的时间来熟悉API,以便能够流利地使用它,并且需要数年才能变得“好”并学习语言的所有细节。对于很多开发人员而言,这是令人生畏的,因为你基本上必须花费大量的时间和精力来投入新语言以成为它的专家。很多时候,离开目前专业领域的动力并不存在。

答案 1 :(得分:2)

相同的范例更容易,因为它只是抓住各种库并快速定位它们的问题。

如果范例不同,那么开关就更难了。从静态语言转换为动态语言或从程序转换为OOP语言将需要不同的思维模式。这将需要更多时间,但这是可能的,而且仍然是一个非常好的练习。

它可能类似于学习外语。如果你说英语,那么转向另一种基于拉丁语的语言要比去希腊语更容易。

答案 2 :(得分:1)

对我来说,它会在语言上找到好的博主和有用的网站。过了一会儿,你会知道最好的人在哪里。这些人和网站是学习微妙之处的良好信息来源。

答案 3 :(得分:1)

离开你的舒适区。我认为这是一些开发人员不学习新语言的最大原因之一。

但对于其他人来说,这就是推动他们的动力。

答案 4 :(得分:1)

在相同的范例内移动相对容易。我发现在Java和.NET之间切换是无痛的,因为两个平台都提供类似的功能和类似的库。但转换范式可能是一个真正的挑战。

即使功能和逻辑编程更容易,我的学生在学习Java之后也很难使用函数和逻辑语言。

另一个问题是在不同类型的应用程序之间切换。例如,如果您习惯于使用Java构建桌面应用程序,那么突然尝试在.NET中构建Web应用程序,交换机很难,因为您不仅要学习新语言,还要学习新的编程领域。

另一个挑战是可用于特定语言的工具集。 Java和.NET有类似的工具,但有一些差异。如果您学习使用Visual Studio进行编程,那么Visual Studio的功能可能会与语言混淆。我看到学生一直有这个问题。当您切换到Java并且新IDE中没有向导的等效菜单选项时,可能会导致问题。

我主张学习编程的人学习范式的核心概念而不是特定的语言,因为它使你在未来更加便携。一个熟悉面向对象概念的人将比简单学习如何用C#编程的人更容易在Java和.NET或Python之间切换。

答案 5 :(得分:0)

就像学习一门新的人类语言一样,对我而言,最大的问题在于解决问题需要做的典型构造。

我知道也许在几种语言中学习“while”或“for”循环并不是那么困难 - 但是当你的问题上升到一个抽象层次(遍历这个数组)时你会发现自己使用“[”而不是“(”反之亦然。

如果除了学习新语言之外,你还必须学习一个新的框架,学习曲线可能会更加陡峭。当我从典型的ASP.Net转到MVC(使用NVelocity)时,我觉得自己完全迷失了 - 我所有关于如何解决asp.net控件典型问题的知识都不得不被遗忘。

最后,当您在具有不同范例的语言之间进行切换时,最大的挑战就会发生 - 因为您无法再以同样的方式思考解决问题。喜欢 - 当从C#转移到Prolog时,而不是考虑函数,参数,类层次结构等...我只能在状态中思考,与数据变化相关的事件和通过递归的事件链接 - 这很疯狂但我可以完成我的大学作业。

答案 6 :(得分:0)

从15年以上的C ++背景开始,我不得不转向Java来完成我正在开发的新项目,这是一个相当痛苦的一步。几乎所有东西都有工具和框架,但学习曲线是巨大的!新语法无需担心,API更难,但最困难的领域是找到通过所有框架的方法。

此外,与Emacs相比,必须使用Eclipse作为IDE在稳定性和可靠性方面是退步。 Eclipse的功能非常引人注目,但IDE中的错误导致了持续的麻烦。