首先要学什么?
几年前,我上了编程学校,当我下班后,我找到了系统管理工作,这就是我职业生涯的方向。我想重新进行某种开发并一直在使用Cand ASP.NET,但是我一直在听到其他"新"语言的嗡嗡声(新的意思是它们对我来说是新的) ),例如Ruby和F#。我想我想知道我是否是在浪费时间学习大量的MS语言,而不是成为一名通才。很长一段时间没有加入开发社区(如果我曾经参加过的话),使我在趋势中挣扎,我希望不被落伍。
是否想到遵循"最新"语言还是坚持使用更多尝试过的,真正的技术是更好的选择?
解决方案
有关语言受欢迎程度的完整索引,请参见http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
我们应该至少学习1种编译语言(例如Cor Java)和1种脚本语言(Python,Ruby等)。这通常足以帮助大多数开发人员成功完成自己的工作,无论使用何种语言。
至于新旧版本,我会坚持使用Cfor,因为它非常受欢迎。学习一门新语言虽然还不错。
这是一个非常棘手的问题,但是我们会发现这里的人们对他们的工具选择充满热情,同时相信选择所提供的灵活性。
就是说,如果我们不介意"供应商锁定",则Microsoft堆栈是进入编程并在未来几年找到有收益的工作的绝妙方法。微软既是"久经考验的"又是"最新的"。传统上,Microsoft堆栈专门用于构建业务应用程序,但我们不仅限于此(例如,使用ASP.NET MVC来构建此站点)。
我对Ruby on Rails的世界并不了解很多,所以我会请一个知识渊博的人来做。
我真正的建议是随心所欲。学习Cand Fif,这就是我们所需要的。
我会说学习最简单的方法,并掌握其背后的基本概念。语法很容易克服,语言之间的差异更加棘手。
但是,由于Cseems在网络上以及在SO上都有广泛的帮助基础,所以我将从此处开始,并了解面向对象编程的来龙去脉。然后,理想情况下,我们应该能够切换到当时所需的大多数其他OO语言(例如ruby,Java,Obj-C或者什至令人恐惧的C ++)。
像F#这样的语言虽然很流行,但它的功能却与C#相当不同。如果我们习惯于编写功能样式代码,那么Fmay是个不错的地方。但是,即使那样,仍然要学习编写功能代码的感觉,并掌握该语言的基础知识。
好吧,如果我们了解最新的语言,则总是会被希望增加其营销流行语数量的公司所雇用。并不是说这是语言的唯一用途,但绝对是一种用途。
另一方面,对于那些希望在更可靠和经过测试的较旧技术之上构建并维护所述较旧技术的公司,总会有较旧技术的市场。
我想这取决于我们要如何进步。如果我们追求趋势,我们可能会发现我们永远没有时间真正地学习一种内在的技术,但是如果我们追求较旧的语言,则可能会发现我们正在使用更陌生的新内容启动更有趣的项目,并且我们会发现由维护。这都是关于权衡的问题。
C。
认真学习C。
如果我们不尖叫山拔头发,那么我们就被剥夺了成为开发人员的资格。
请注意,我并不是说不了解C的人不是开发人员(本网站的创始人Jeff不了解C,而且他做的还不错),但是C会为我们介绍很多迷人和糖衣方面的发展。
作为第二选择,选择C#。
我们选择的语言并不重要。了解了这些概念之后,我们很可能会很快选择一种新语言。
我个人的想法是考虑我们想从事哪些工作,以及对这些工作有什么样的要求会有所帮助。例如,我们了解设计模式吗?如何使用类和继承对系统进行建模?如果我们想进入Rich Internet Applications,可以学习AJAX和其他Javascript元素,以及HTML及其各种分支(例如XHTML和DHTML)。
我认为仅了解Microsoft技术并没有什么问题,如果我们没有申请其他开发人员的工作,并且他们需要Javascript或者CSS,那么如果他们没有遇到可能需要的其他技术, 。
另一点是要注意工具随时间的变化,因为随着Web的发展,可能会有更多的变化。查看有关jQuery和MVC框架的最新公告,Visual Studio 2010所具有的功能可能会比当前的Visual Studio 2008多得多。
在过去的一年中,我已经专业地使用过C#,Ruby,Perl,JavaScript和PHP,它们都以不同的方式发挥了作用。我建议,如果我们想采用一种简单的方法来掌握编程的基础知识,那么Ruby是一种很棒的语言,它具有简单易懂的语法,并且使以面向对象的方式进行思考变得非常容易,使用半面向对象的语言(例如Cor Java)可能会更难。
Cis值得学习,因为了解C族中的一种语言非常有用,基本习语是如此普遍,以至于值得使用它们,但是我会避免使用C或者C ++,因为我真的不认为需要管理自己的记忆它使生活变得非常艰苦,引入了许多不必要的错误,并且几乎没有带来任何好处,直到我们真正精通它为止。擅长先处理内存管理的内容,然后在需要时可以继续进行更艰巨的工作。
我会避免使用像Fto这样的功能语言。尽管大家都了解它们使我们成为一个更好的程序员,但是它们相当困难且完全不同。
因为我选择的语言,Java和Care足够相似,所以一旦理解了基础知识,我认为学习Java没什么大不了的……但是c ++完全是另一回事。
我认为c ++是更好的通用工具之一,一旦cis很好理解,它将更易于解决(它有很多文档和帮助论坛)。尽管大多数流行的平台都可以运行c ++,但是c ++的经验不仅限于Microsoft,因此,有了这种经验,我们就不会局限于Windows。这也很好,因为它不像cor Java那样容易被糖果包裹,不像纯c那样坚韧,并且可以很容易地与c互操作(这是过渡更容易的原因之一)
因此,cis是一个不错的选择,而imho紧随其后的是c ++
我必须同意上述许多观点:语言并不重要。在很大程度上,该语言仅对以下内容至关重要:
- 特征。如果需要多重继承,最好使用C ++。如果像90%以上的开发人员一样,我们不需要特定于一种(或者一小部分)语言的内容,那也没关系。
- 句法。你讨厌空格吗?使用C#。讨厌花括号吗? LISP是朋友。不在乎一种方式还是另一种方式?没关系
- 编译还是解释?这很重要。使用编译(或者部分编译,如.NET),它会更快...但是速度差距正在缩小。
- 当地的工作机会。当然,我们可能是C#的天才人物……但是,如果我们附近的每个人都在寻找PERL程序员,那将对我们没有任何好处。
- 社区支持。如果语言在20年来(或者曾经)从未得到过认真的使用,请不要指望Google会成为生命线中的佼佼者。 QBASIC,我在看着你。不过StackOverflow会在这里...
最后,我们可以讨论问题,直到全神贯注。选择一种具有我们喜欢的功能集,语法不会使我们疯狂的语言,一个体面的社区以及希望在我们所在地区获得工作机会的语言。
至于新的还是旧的...两者都很好。较新的语言可能会更容易采用,但是较旧的语言有越来越广泛的文档和使用,尽管这可能正在逐步淘汰。