Answers:
我尝试每年至少学习1-2种新语言。我获得的最大收获是学习了一种功能语言(F#),它改变了我解决问题的方式-我现在想告诉机器做什么而不是怎么做,尤其是在我大量使用Linq的C#中和不可变的对象,现在我知道使用它们的好处。我还使用了很多高阶函数(方法作为参数),结果导致我的编码样式发生了变化(改进)。
好的,这是我遇到的一个例子。
我已经在我们已有的一些旧代码上为项目学习了一种相对古老的语言(VB6)。
该语言是非常面向Windows的,但是没有.Net框架中的高级功能强大的类。
我必须进行一些图片操作,这使我了解了用于图片操作的Windows API函数。
了解到它之后,我对.Net的GDI类有了更好的了解。而且有时使用Windows API的理解会更快(更少的函数包装)。
这表明即使您学习旧代码,仍然可以学习并获得另一种观点。
您是否可以通过学习其他语言范例来提高编程技能?
以我的经验,绝对可以。解决问题的几种不同方法就像一系列工具。有一天,您(像我一样)将可以使用这些其他工具。也许没有。一切取决于。一些示例:
语言通常并不孤单,它们带有环境。我确实花了一些时间学习一种叫做awk的奇怪语言 。它依靠使用“正则表达式”的模式匹配。通过尝试学习C ++ STL(不是很成功),我了解了maps。结合这两个概念,我可以很快用Pearl(平台上唯一的语言)编写一些文本转换实用程序。
主要是出于乐趣,我尝试学习Erlang(不是很成功)。它具有一个称为OTP的功能库,其中除其他外实现了一种处理错误的方法,有时称为使其失败并具有监视器来重启功能。我在某些领域使用了这个想法,有时只是让事情失败,而不是进行无休止的测试。
尝试学习Haskell(再次不是很成功)确实使我对解决问题的其他方式睁开了眼睛。(在我看来)函数式编程始于编写说明您想要什么结果的代码,而不是编写达到目标的步骤。我发现这确实帮助我编写了更好的SQL代码。
最近,我确实尝试了一些JavaScript。并发现了一个称为nodered的环境。创建小型家庭自动化服务器不需要任何代码。
换个角度说,我大部分以各种语言进行的涉猎都是(并且正在)一个比较浅的层次,主要是为了了解人们在谈论什么。实际上,我几乎可以使用多种语言。