如何处理需要了解多种编程语言的需求?[关闭]


25

我是一个相对年轻的程序员。我今年23岁,从事专业编程大约已有5年了。

作为大多数程序员,我从C入手,学习了一些x86汇编的乐趣,然后我发现C ++成为了我对编程界的最大热情。使用C和C ++进行编程会迫使您学习特定于平台的API,库和框架,所有这些都需要不断的研究和实验。一段时间后,我不得不继续使用Java和C#,因为我所在地区的需求基本上是这些语言的需求。使用这些语言,我进入了Web开发领域,然后我不得不学习javascript。最初为.NET Framework开发很令人兴奋,但是当我被Microsoft束缚时,我不断感到(当然,.NET Framework使我脱离Linux)。对于桌面开发,我几乎可以使用Qt与C ++一起使用.NET进行所有操作,但是对于Web开发,我不得不寻找替代方法。很快我找到了Django,然后继续学习Python,因此可以使用Django。如今,我正在学习使用Objective-C开发iOS。

到目前为止,学习所有这些语言非常容易(C ++很好地训练了我),但是我担心有一天我无法跟踪所有这些语言。只是为了澄清。我必须学习的唯一语言是C#和Java。我学习的所有其他乐趣都是因为我喜欢编程和学习新事物。我也想在台式机,Web和移动开发方面保持精湛的技能。

我的问题是:如何跟踪多种编程语言?(我的意思是,请跟踪这些语言的变化并保持技巧的敏锐性)和:是否存在足够的编程语言?


20
您甚至敢考虑不学习更多语言!?
Mateen Ulhaq 2011年

9
“每次我学习新东西时,都会把一些旧东西从大脑中挤出来。像那样的时间,我参加了家庭酿酒课程,却忘记了如何开车。”
Dean Harding

1
编程与掌握X语言的语法无关,编程与学习编程有关。学习如何为正确的工作选择正确的语言,然后选择上述语言,然后学习API和语法,然后以其他任何语言进行操作...程序!
克里斯,

6
您永远不会忘记的某些语言;其他您希望忘记的地方
Steven A. Lowe

3
您大都对OOP感兴趣。您应该探索其他范例语言,例如功能语言Haskell,然后考虑进行跟踪。
Vigneshwaran 2011年

Answers:


27

我个人认为,“跟踪”语言是浪费时间。挑选新的流行语言总是很好,但是一旦掌握了流行的和公认的语言(例如C ++,Python等),就不必担心了。如果您是一个优秀的程序员,那么该语言只是一组关键字。

那里只有这么多实质性范例。也许老狗不能学习新的花样,但是确实没有很多新花样。如果您担心自己的功能/面向对象/事件驱动/任何语言可能无法持续使用,请学习另一种范例;但不要为确切的语言选择而烦恼。

那么,如果您离开一门语言一段时间后忘记了一两个关键词怎么办?这就是我们拥有Google的原因。


2
只是不要让你的老板看到。:)或非程序员。他们会认为编程是如此简单,以及为什么程序员会因为如此简单的工作而获得报酬。
Mateen Ulhaq 2011年

4
我认为,如果您遵循特定的范例,这是正确的。例如OO /命令式。如果您使用的不是强制性语言,它就会崩溃。
理查德

@Richard:我知道你不是要暗示OO必然意味着必须执行,对吗?
Frank Shearar 2011年

@弗兰克:是的,而不是非常常用的两种语言(Java,C#,C ++),它们都是...
Richard

1
“(a)语言只是一组关键字”-我不同意。每个平台都有本地惯用的处理方式。在X平台上成为一名优秀的程序员不仅仅涉及语法。例如,如果我假设我只需要.NET OO心态,就不会有出色的JavaScript代码。
Bevan 2012年

54

我担心有一天我将无法跟踪所有信息。

30年后,让我这样说。

是的,您迷路了。

所以?

这就是为什么他们编写参考手册的原因。


14

学习多种语言的真正好处是可以为您提供不同的范式模型思维方式

您对Java及其单一继承的了解应该已经塑造了您对C ++及其多重继承的看法。您对Java及其GC的了解应该已经对C ++及其用户管理的内存产生了影响。您对C ++及其模板的了解应该已经形成了您对Java及其泛型的看法。当然,所有这些关系都是双向的。

如果您从未用过函数式语言编写过,那么您将不享受C ++ <algorithm>库正在尝试做的事情,以及缺少一流的公民函数(至少在C ++ 11之前)而错过了它所缺少的。如果您从未使用过动态类型的语言编写,那么您将不会意识到静态类型可以为您做什么和不能为您做什么的界限。如果您从未用没有可变状态的语言编写过文字,那么您将不会理解可变状态给您带来的损失。

学习其他语言是有好处的,因为它可以使您更好地理解现有语言。在这方面,您不必担心保持最新状态,因为语言的概念并不会迅速或根本不会发生变化。


8
+1不仅仅是学习多种语言(学习语言是简单的部分)。重要的是学习不同的范例。我个人认为在大学级别的学生应该暴露于这些不同的范式,这在当今有许多“ McJava(tm)”大学的情况下是一种悲惨的状况(请注意,我并不是说Java不好说,请阅读全文。):(
Darknight,2011年

8

我的问题是:如何跟踪多种编程语言?(我的意思是,请跟踪这些语言的变化并保持技巧的敏锐性)

编写代码。如果您想跟上语言的更新,那就继续编写代码。

是否有足够的编程语言?

学习一种以上的语言可以帮助您获得其他语言无法理解的视角。学习多种语言可以使您对一般的计算有一个广泛的总体认识。

但是,学习每种语言是不可能的,而且并非所有语言都对您或您的工作都有价值。深奥的语言除了其固有的智力价值外,不值得学习,因为它们没有实际的用途。

因此,不存在“足够”的东西。但是,肯定有“不值得麻烦”的事情。


4

只需担心与您认为将要使用或当前正在使用的语言保持一致即可。学习新语言是有帮助的,但是如果您永远不会再次使用它,则没有理由了解一种较小的语言更改。


4

从未停止学习; 但是要意识到你永远都不了解一切。您将始终拥有一些更流畅的环境。别担心,只要继续玩乐。


是的,永远不要停止学习,而要专注。学习一切都像奔跑无主鸡一样,最终,您将一无所有。
Slawek

@Slawek:“最后,您完全可以做到无所事事”。几乎。更好的版本可能是:最后,您擅长的事情已被您不知道的新技术所取代。
S.Lott

3

当您觉得自己已经完成时,就拥有足够的编程语言。会说多种语言固然很好,但我不知道在工作中使用2种语言是否比上下文带来的好处还要多。知道更多的语言并没有错,但是在其他时间,您可能最好根据最需要使用的语言和学科来提高知识。像口语一样,您希望精通能为您的生活带来价值的语言。

我可以回想起几个吹牛他们知道多种语言,但在每种语言中以相同方式编写代码的程序员,这不一定是一件好事。

而且,随着年龄的增长,时间将有助于您下定决心(与结婚,生孩子,成为自由作家,开始处理职业问题以及我的记忆开始往南走。


3

在过去的25多年中,我已经学习了许多语言。一段时间后,其中一些变得不太有用并被遗忘(Perl)。甚至不谈论6502组装,Apple BASIC,Lisp,Prolog,Pascal,SPAN,FORTRAN ...

其他语言逐渐消失,然后十年后我不得不重新学习(Python)。跟上Python是没有意义的,不需要花太多时间就可以加快速度-Google / SO是您的朋友。

最后,语言只是一种工具。您将其用于手头的工作。该技能是知道何时使用什么。老实说,一旦我开始使用C ++,就再也不想做C编码了。当我学习C#时,我再也不想做C ++。


3
Perl去世的报道被大大夸大了。
菲利普·波特

对Perl而言,这不是私人的。我曾经在Unix上工作,因此Perl是我的首选武器。我使用它构建了该死的大型高科技应用程序。然后我搬到了Windows。现在,我又回来了,但是我正在开发的应用程序是在Python中进行的,因此使用Perl和Python似乎毫无意义。
dave

1

在我看来,编程并非只与您使用的语言有关。编程是一种思考方式。您必须是一名优秀的分析师,才能编写出优秀的软件,而编程语言只会帮助您构建软件。当然,每种语言都有其缺点或优势,但是要构建好的软件,您必须以开发人员的身份考虑。认为自己不像开发人员的人不会使用出色的语言来构建出色的软件。

我总是与正在盖房子的人进行比较,他不在乎锤子,只要他有一个可以盖房子的锤子。他可能需要熟悉锤子(例如锤子),但是一旦熟悉了工具,便可以建造一所奇妙的房子。习惯该工具并不难,因为该工具的大多数“版本”都非常相似(这适用于锤子,也适用于开发语言)。

在学习期间,我们曾经使用Java(在我使用ASP和VB5之前),但是在毕业后(大约5至6年前),我学会了使用C#(和Javascript),一个工作切换“迫使”我去VB.NET,接下来的工作允许我同时使用两种.NET语言(我曾经使用过),甚至允许我再次使用Java(对于他们使用的某些旧版工具)。如今,我正在使用X ++(Microsoft Dynamics AX的语言),但仍在.NET中进行一些开发。这些只是我日常工作中使用的语言,我也喜欢研究F#,Ruby等新语言。学习这些新语言只花了几天的时间(只是为了理解语法),其余的时间您只是在玩弄这种语言,并且会逐渐学习。

语言太多了,但我倾向于只关注真正不同的语言(例如F#)。我认为学习新语言既有趣又有趣,所以现在我可以很容易地学习一种新语言(至少在思想相同的情况下,C#,VB,Java完全相同,但例如F#却大不相同)而且我不用太担心。


1

我5年前在vb6上开始了我的职业生涯,后来转到php,java和.net。目前在asp.net mvc2上工作的最后一年,也在尝试在mvc3上工作

秘诀是永远都不会过时,因为您无法掌握世界上的所有事物,因此不必担心


1

我认为这是一个职业问题。因此,仅当您知道一组特定工具时,您才需要考虑雇用您的人。也许这会取消工作资格,但可能不会。因此,表面学习新事物。但是,请继续深入学习困难的东西(数学,新的编程范例)。

适应使用新工具是一种折衷。IT行业充满了炒作,您需要对此加以防御。这从以下语句开始:不,我继续使用旧的编辑器(emacs?)。但是,您不时需要学习新事物。这些年来,他们确实变得更好了(3-4)。如果您有机会在手边的一个实际项目中学习新的工作知识,请不要犹豫,因为这很有趣!从实际创新中识别炒作的最佳方法是看着使用创新的人。你比人更擅长评判技术:)


1

我建议学习具有不同范式的语言,例如功能,面向对象和逻辑,因为它们是如此不同。

但是,我不一定建议学习3种功能语言或3种面向对象语言。

如果你擅长背诵,也许吧。但是我发现很难一次又一次地学习类似的东西,碰巧几乎是一样的,但是并不完全一样,尤其是诸如窗口绘画,数据库调用,集合库之类的库东西,在这些东西中您必须记住不同的名称和约定,但是表现几乎一样。它是paintRect(xstart,ystart,xend,yenald)还是(xstart,ystart,宽度,高度)?在此处包括“结束”,而不在此处包括它?

但是有些人并不难学习这些东西。

因此,我建议您学习一些语言,但是深入学习其中的一些语言可能比仅是表面上的一门一门的语言教给您更多的知识。也许不是每年2种语言,而是每两年一种语言。


0

我有点在光谱的另一端。我讨厌学习多种语言,因为您会学习简单的东西,并且永远不会擅长解决更深层的问题。同时,您还会从其他语言中学习不良做法。

曾经见过用C ++编写的铁杆Java开发人员编码,一团糟,等待爆炸……

问题在于,所有语言都有其陷阱,抽象开始泄漏或与您抗衡。您可以在1天之内学习语法,但是要花5年的时间才能知道如何高效地编写代码并实现无错。您使用at()还是[]?为什么malloc会使长时间运行的进程用尽内存?

学习范例也是一个有趣的主张。因为使用C语言中的Java准则或C#语言中的Perl准则可能会变成关于如何编写混淆代码的精彩演示。

学习很少的新语言可能会帮助您拓宽视野,但是它们不应使您感到更聪明,而应该使您对所学的每一种新语言都感到愚蠢。


0

有人建议“每个人都应该知道三种语言”。

我倾向于同意。您应该知道一种编译语言(C / C ++,C#等),一种解释语言(Python,Ruby等)和一种文本处理语言(Perl,Awk等)。我还认为您应该了解一种Shell脚本语言(最近,Bash或Windows Power Shell)。相同的建议也适用于工具箱和API。

跟上语言发展的唯一途径就是使用它。如果将常规语言的工具包限制为少数几种,则可以更轻松地定期使用所有这些工具来解决问题,从而可以跟上每种语言的发展。

因此,赶上您每天使用的技术并保持不变。有时间的时候涉足其他兴趣领域没有什么不妥。只要有足够的动力和时间来坐下来,一位称职的程序员通常不需要很长时间就能学习新技术。

无需跟上每种技术的发展……您将能够根据需要上下旋转它们,并保持最常使用的技术为重点。


-5

伙计们,真的-很可惜。没有专长,“我会学习一切”。抱歉,您会了解所有方法,但是您的技能太低,以至没有人能给您带来丰厚的回报。

一项研究表明,您需要10年的培训才能使任何事物(编程,弹吉他,跳舞等)都达到“良好”水平。没错,您需要5到10年的时间来编写C ++ / python / etc。获得开发商业,高质量代码所需的技能。

那关于语言参考的废话?每种编程语言都有哪些良好的编程习惯在哪里?在哪个参考中,您可以找到针对C或服务器端安全性实践的良好内存管理实践和数据结构?

台式机,移动设备,服务器(!!!)-这些是完全不同的环境。您可以决定是否要“玩”一辈子,还是专注于一件事并获得一份体面的工作。人们可能会告诉您胡说八道,您应该了解地球上的每一种语言,因为他们正试图这样做,以改善他们的卑鄙工作。但是,猜猜是什么,即使在阅读了Java“参考”之后,他们也将永远无法做到这一点,因为那时他们将具备什么能力?没什么。

是的-还学习平面设计,剧本编写和Flash,您将需要它!:)我不完全知道这是怎么回事,但是如果您一次正在处理客户端,服务器和移动设备,请-辞职,不要等到明天,因为您需要立即做!

我的问题是:如何跟踪多种编程语言?

您的问题应该是如何不跟踪它们。我的建议是,退出宠物小精灵,并做好自己喜欢的事情。


1
你知道我是对的-谁的收入更高?是IBM的高级Java工程师,还是某个本地网站开发公司的“ programmer-o-graphican-o-computerfixer-o”?好吧,我知道好的图形设计师只做图形,为一个“愚蠢的”横幅项目收取10,000美元的费用……还有一些“我知道的一切”,他们以150美元的价格为愚蠢的本地企业制作一些愚蠢的网站(包括做图形),修复因为他们在很多领域了解甚少,所以他们真正能做的就是安装wordpress主题或检查msoffice为什么不起作用。
Slawek

-1不仅是之以鼻而不是答案,并且是您与世界的私人经历的混淆。我想看看您指的是“研究”。这些天流行的观念是,需要花费10,000个小时的积极实践来发展专业知识。马尔科姆·格拉德威尔(Malcom Gladwell)的著作广为流传。根据经验,它可能还不错,但这几乎不是物理定律。10,000小时是40小时工作周的五年,当然,我们许多人在职业生涯的早期就投入了更长的时间。
查尔斯E.格兰特

不,他们没有专业化。他们的专长是编程。编程语言只是行业中的一种工具,需要时可以使用,而在不需要时可以丢弃。10,000小时的工作在Malcolm Gladwell的书中得到了普及。但是你知道他在说什么吗?他说自己是一位音乐天才,例如花了10,000个小时。他并不是说要弹钢琴要花一万小时。
Antonio2011a

如果没有人学会一种以上的语言,那么我们所有人都将使用汇编器进行编程。今天,我正在使用Groovy,Java,Javascript,SQL,Ant和Selenium。我的团队不需要7个人。我需要可以采用新技术并使事情成真的人。
凯文·克莱恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.