我正在阅读实用程序员,我正在阅读作者建议我们每年学习一门新语言的部分。我现在是一名PHP开发人员,我想知道,接下来我应该学习什么?
我正在寻找能帮助我提高技能并帮助我完成日常工作的语言。有用的东西。
有什么建议吗?
[编辑] 很棒的答案!谢谢。 我还在考虑你的答案,我倾向于研究Python或者你们所建议的功能性的prgoramming语言(也许是Lisp)。
答案 0 :(得分:14)
选择学习新东西,而不是像以前那样。
C ++或C
一种低级语言,需要手动内存管理,并教你如何在较低级别工作。良好的社区基础,是程序员应该学习的语言之一。
我建议其中一个过度组装,因为虽然组装甚至更低,但是生产项目很痛苦。学习像C或C ++这样的语言会让你学习装配非常快,如果你想做的话,因为与从Java到装配相比,新概念相对较少。
<强>的Haskell 强>
一种纯粹的功能语言,完全改变了你看待某些问题的方式。如果你已经习惯了编写代码的命令式风格,那么需要花费很多精力。
它具有教你递归的乐趣的巨大优势,即使你从未付钱编写一行Haskell,它也会影响你用其他语言编写的代码,让你看到更好更清洁的解决方案。 / p>
Java或C#
如果不以面向对象的方式使用PHP(不仅使用类,还包括继承等功能),那么这些语言会强制您以OO样式编写。如果您对OO编程感到满意,我不会推荐这些。
答案 1 :(得分:6)
Python和Ruby似乎是一种相对无痛的PHP过渡。
答案 2 :(得分:5)
我会选择Java或C#,所以你学习的东西不是另一种脚本语言。
答案 3 :(得分:3)
的JavaScript。
我的意思是真的学习它,而不仅仅是“足以让它走过”趋势的方式。我已经看到了其他很好的(在服务器端)Web开发人员,他们可能会浪费2天时间来处理一个微不足道的JavaScript问题,因为他们根本不理解它。
我认为开发人员使用的语言不会比JavaScript更频繁,当您需要使用它时,您需要才能使用它:您将无法使用它自由选择在客户端浏览器上运行的其他语言。好消息是,与其他一些编程语言相比,它不应该花很长时间。
一个好的起点是JavaScript:The World's Most Misunderstood Programming Language
答案 4 :(得分:2)
我认为,尝试使用其中一种流行的functional programming语言会非常有益,因为它们需要完全不同的思维方式和方法来解决问题。它们真的允许您为困难问题编写优雅而简约的解决方案。一些更常见的语言包括:
答案 5 :(得分:1)
虽然我同意学习一门新语言是个好主意 - 确保你学习他们而不只是收集他们。例如 - 我来自Java背景,我一直在用自己用Java写的东西而不是利用新语言的设施来写自己的其他语言。我相信你不会 - 但要注意这是很自然的事情,所以如果你开始做同样的话,请留意!
至于我学到的东西;我第二次学习Ruby(如果你想做网络应用程序,还可以选择Rails) - 这是一种非常好的语言,很容易从PHP过渡。来自实用程序员的“Pickaxe”一书是一个很好的起点。
如果你有权使用Mac - 我非常推荐学习Objective-C和Cocoa。通过研究这些我当然学到了很多 - 我认为比其他任何人都更了解我认为理解这些使我成为一个更好的全能开发者。至于书籍 - 从语言方面的Kochan的“Objective-C编程”开始,然后进入Hillegas的“Mac OSX的可可编程”,用于GUI端。
祝你好运!答案 6 :(得分:1)
我开始在C之后学习PHP。然后我发现了Perl,我再也没有看过PHP。原因?与PHP一样,Perl是动态类型的,但模块化程度更高。关于Perl的骆驼书很高兴阅读。从命令行运行Perl脚本比PHP需要加载所有可能的库要快得多 - Perl允许我在运行时选择我想要的额外功能,保持简单的脚本轻量级。与其他语言相比,Perl社区相对先进。 Perl语言允许您以各种样式进行编程,从过程到OO。
答案 7 :(得分:1)
功能语言似乎越来越受关注我正在计划查看F#,主要是因为我目前正在使用Microsoft堆栈。
我还建议您查看非特定语言的主题,例如提高OO技能,使用设计模式,以及其他任何有助于提升您作为开发人员的技能的内容,使您更多地成为工匠而不是收集语言你不会在实质性的项目中使用,因此永远不会真正掌握。
答案 8 :(得分:1)
Python + Django如果你想继续编写脚本。
C如果你想了解它在幕后的作用。
答案 9 :(得分:1)
C(如C,而不是C ++)将是我的建议。它会立即让你欣赏解释或更高级语言实际为你做的事情(或者拯救你,取决于你)。
它也是C ++的第一个逻辑垫脚石,虽然我知道很多人只是潜入C ++。首先学习C(如上所述)要么让你欣赏,要么更讨厌C ++。
要成为一个非常全面的程序员,您需要自己处理类型管理,以及在没有垃圾收集器安全网的情况下管理内存。过去,这两个人是成为程序员 的先决条件 。
此外,想想你可以编写自己的PHP扩展的所有乐趣:)
答案 10 :(得分:1)
这可能会变成一场辩论。
我的建议是学习一种与现有技能有关的新语言。
我的“第一语言”是C,它带我进入C ++和Visual C.当我接受顾问工作时,我进入了PHP的领域。
从这里开始,我正在收集Javascript和jQuery的技能,因为它们与PHP紧密结合。 (DOM,CSS和HTML不是语言,所以它们不计算在这里。)
或许您想采取另一个方向并转向SQL。
选择是你的,十字路口到处都是。
答案 11 :(得分:0)
不确定您是否在MVC模型下编写PHP?但如果你不是那个学习的另一种好方法。
示例:Zend或CakePHP
答案 12 :(得分:0)
这完全取决于你想做什么。我认为没有人能说出你接下来应该学到什么,而是分享你的经验,这将有助于你的思想。毕竟,你的下一个语言的决定应该基于你想要开发什么样的应用程序(桌面,移动,网络等)。
我将与您分享我的经验。我曾经是一名PHP程序员,我遇到了同样的问题,我想要专注于什么。我最终学习Java,我对自己的选择很满意。以下是我认为这是一个不错的选择的一些原因
我的两分钱。
答案 13 :(得分:0)
这取决于你学习语言的动机。
如果你想学习一门新语言来更有效地完成你的日常工作,我会建议使用Python或Ruby。它们是流行的语言,可以高效地工作,并且可以应用于各种编程任务。正如其他人指出的那样,JVM(Jython和JRuby)和.Net(IronPython&amp; IronRuby)都有版本,所以如果你想学习其中任何一个平台,那么它们是一个很好的开始。它们既易学又易玩。我更喜欢Python,但这可能是因为我多年来一直在使用它。
如果您想增加就业选择,那么请使用商业中使用的最流行的语言 - 这意味着Java或C#。
如果你想扩展自己的想法,那么我建议使用一个Lisp版本。我推荐Clojure - 它是一种在JVM上运行的Lisp方言,可以访问所有Java库。在Pragmatic Programmers的书架上有一本很好的入门书。
答案 14 :(得分:0)
每个人都非常不同。每个都有不同的用途,每个对PHP Web开发人员都非常有用。
如果你想尝试不同的东西,我会选择
答案 15 :(得分:0)
(或其他一些功能语言。)
我用PHP编写了多年,然后参加了一个(功能)Lisp类。这是四周的wtf%@ f痛苦,然后是纯粹的快乐。理解函数式编程和特别是递归,在编写PHP(或任何其他面向解决方案的业务语言)时真正为您提供了优势。