9

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

开发人员在同一范例中迁移到不同语言的真正开销是多少?如果范式不同怎么办?

4

7 回答 7

10

(对我而言)最大的挑战通常是 API,而不是语言本身(尽管有 .NET)。例如,我使用 Microsoft 的 C++ 和 C# 已经很多年了(在那之前的 Delphi)。但是我很难开始使用 Java。即使是琐碎的项目也会花费我一段时间。不是因为语言难(不是),而是因为 API 不同,排列方式不同。

需要几个月的时间来加快 API 的速度,直到你可以流利地使用它,并且需要几年的时间才能变得“好”并学习该语言的所有细节。这对许多开发人员来说是令人生畏的,因为您基本上必须投入大量(如果不是全部)时间和精力来使用新语言工作以成为它的专家。很多时候,你没有离开当前专业领域的动力。

于 2008-10-17T13:41:56.260 回答
2

相同的范例要容易得多,因为它实际上只是掌握各种库并如您提到的那样快速定位它们的问题。

如果范式不同的话,这个切换就比较困难了。从静态语言到动态语言或从过程语言到 OOP 语言将需要不同的思维方式。这将花费更多时间,但这是可能的,并且仍然是一个非常好的练习。

这可能类似于学习外语。如果你说英语,那么转到另一种基于拉丁语的语言比转到希腊语之类的语言要容易得多。

于 2008-10-17T13:45:33.353 回答
1

对我来说,它会在该语言上找到优秀的博主和有用的网站。一段时间后,您会知道最好的人在哪里。这些人和网站是了解细节的良好信息来源。

于 2008-10-17T13:40:59.837 回答
1

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

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

于 2008-10-17T13:41:21.490 回答
1

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

我的学生在学习 Java 后通常很难再学习函数式和逻辑式语言,尽管函数式和逻辑编程更容易。

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

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

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

于 2008-10-17T13:58:47.553 回答
0

就像学习一门新的人类语言一样,对我来说,最大的问题在于解决问题所需的典型结构。

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

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

最后,当你在不同范式的语言之间转换时,最大的挑战就出现了——因为你不能再以同样的方式思考来解决一个问题。就像 - 当从 C# 迁移到 Prolog 时,而不是考虑函数、参数、类层次结构等......我不得不只考虑状态、与数据更改相关的事件以及通过递归链接事件 - 这很疯狂,但我可以完成我的大学作业。

于 2008-10-17T14:04:08.213 回答
0

拥有 15 年以上的 C++ 背景,我刚刚为我正在从事的一个新项目迁移到 Java,这是一个相当痛苦的步骤。几乎所有东西都有工具和框架,但是学习曲线是巨大的!新语法没什么好担心的,API 比较难,但最难的地方是在所有框架中找到出路。

此外,与 Emacs 相比,必须使用 Eclipse 作为 IDE 在稳定性和可靠性方面是一个倒退。Eclipse 的特性确实很吸引人,但 IDE 中的错误却经常带来麻烦。

于 2009-08-25T08:15:54.457 回答