2008-10-17 67 views
9

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

开发人员在相同模式下转向不同语言的真正开销是多少?如果范例不同呢?

回答

1

对我来说,它会找到好的博客和有用的网站上的语言。一段时间后,你会知道最好的人在哪里。这些人和网站是学习微妙知识的良好信息来源。

1

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

但是对于其他人来说,这是驱使他们的原因。

10

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

需要几个月的时间才能掌握API,以便您可以流利地使用它,并且几年后才能成为“良好”并学习该语言的所有内容。对许多开发人员来说这是令人生畏的,因为你基本上必须投入大量(如果不是全部的话)你的时间和精力来使用新语言来成为其专家。很多时候,脱离您当前专业领域的动机并不在那里。

+1

现货。我总是对开发者感到惊讶,他们说他们可以在3天内“学习”一种新语言。当然,你可以学习语法,但知道如何使用这种语言是完全不同的。 – 2008-10-17 13:45:06

+0

绝对如此。需要几个月的时间才能熟练使用API​​,并且能够流利地使用API​​,多年才能成为“好”,并学习该语言的所有细节。实际上,我想我会把它放在我的答案中。 – TheSmurf 2008-10-17 13:49:05

2

同样的范例要容易得多,因为它实际上只是抓住各个库并按照您提到的迅速找到它们。

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

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

1

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

即使功能和逻辑编程更容易,学习Java后,我的学生通常很难学习功能和逻辑语言。

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

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

我主张学习编程的人学习范式的核心概念,而不是特定的语言,因为它使你在未来更具可移植性。对于面向对象概念的人来说,在Java和.NET或Python之间进行切换的时间要比简单学习如何在C#中编程的人更容易。

0

就像学习一门新的人类语言一样,对我来说,最大的问题在于你需要做的解决问题的典型结构。我知道也许在几种语言中学习“while”或“for”循环并不困难 - 但是当你的问题上升到一个抽象层次(遍历这个数组)时,你会发现自己使用“[ “而不是”(“,反之亦然

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

最后,当你在具有不同parad igms - 因为你不能再用同样的方式来解决问题。就像 - 当从C#移动到Prolog时,而不是思考函数,参数,类层次结构等...我只能在状态中思考,通过递归链接到数据更改和事件链接 - 这是疯狂的,但我可以完成我的大学作业。

0

来自15年以上的C++背景,我只需要转移到Java为我正在工作的一个新项目,这是一个相当痛苦的一步。几乎所有东西都有工具和框架,但学习曲线非常巨大!新的语法没有什么可担心的,API更难,但最困难的领域是找到所有框架的方式。另外,与Emacs相比,不得不使用Eclipse作为IDE在稳定性和可靠性方面退步。 Eclipse的功能非常吸引人,但IDE中的错误会导致不断的麻烦。

相关问题