2009-02-04 86 views
11

我想我会有点疯狂。你如何保持你的语言直?

现在,我用以下语言的工作(我只是做一个精神上的库存):

  • C++ - 我们的游戏引擎
  • 汇编 - 低级调试和几个协处理器具体程序
  • Lua的 - 我们的游戏引擎的脚本语言
  • HLSL - 为着色器
  • Python的 - 我们的编译系统和实用工具
  • 目标C/C++ - 适用于Mac的游戏引擎平台的代码和iPhone
  • C# - 在我们的海外办事处,开发了一些工具
  • ExtendScript - Photoshop中导出工具
  • 的ActionScript - 用户界面脚本
  • VBScript中 - 一些电子表格相关东西
  • PHP - 一些网络相关的东西
  • SQL - 一些网站和工具相关的东西

在th之上是API的过多,通常有许多不同的方式来做同样的事情:std库,boost,.NET,wxWidgets,Cocoa,Carbon,Python本地脚本库,Lua等,OpenGL,Direct3d,GDI,Aqua, augh!

我发现自己无意中将语言和api混为一谈,直到遇到语法错误才意识到我在做什么。我觉得我不可能跟上这一点,我不可能精通这些领域。特别是在C++和Python的领域之外,我发现自己编程的更多是通过查看内存中的手册。

你有类似的问题吗?划分思路,让你更有效率?决定你想保持精通的地方?组织提示?当你从Lua切换到C++时,记得好的方法,你需要再次开始使用分号?咆哮着我们的程序员为自己做了些什么?

任何想法欢迎!

+1

这听起来像一个社区维基... – GregD 2009-02-04 06:21:28

+2

你的咖啡因摄入量。 – 2009-02-04 06:21:55

+0

Good call GregD,now wikified – 2009-02-04 06:27:55

回答

4

对于我打算彻底学习的任何语言,我会在Vim中编写自己的语法高亮显示。我尽量严格着色,以便在我输入时着色会产生明显的错误。这有助于我记住在某些情况下我忘记了某些语法项目(所以//看起来不像Python中的注释,并且我始终无法记住C或C中的哪个位置)。如果我不记得一个函数或方法的名字,我想它,如果它显示颜色我知道我拼写正确。我也尝试并选择不同的颜色,以便不同的语言彼此突出,这有助于我的大脑记住我正在写什么语言。

4

我想一段时间后,它对你来说很自然。当我第一次认真编程时,我使用了各种语言 - 特别是Java和C#。我发现自己意外地在C#中使用了某些Java特性,反之亦然。幸运的是,他们的许多功能都是相同的,所以它将我保存在那里,但是随着我对此的继续,这不是一个真正的问题。

尝试花费大量的时间与每种语言。坐下来,阅读每种语言的好书(或一对),并熟悉它。问问你的老板,你是否可以一次花大部分时间在一个部分上。在制作它们之前,你会开始抓住更多的错误。对于那些你不知道的人来说,这就是调试器被创建的原因 - 程序员最好的朋友。我有一个可怕的记忆,我的意思是可怕的。你可能认为这让我的编程更难,但它确实没有。在很长一段时间使用一种语言之后,这些功能似乎就来了。

因此,请尽量在每种语言上花费更多时间,而不是一下跳起来,并尝试一次全部学习。这些信息会更好地与您保持一致,并且在编码时间到来时您会变得不那么慌乱和困惑。尝试做一些有助于让您在编程时专注的事情。如果有很多咖啡因有帮助,那就去吧!如果听你喜欢的音乐有帮助,那就去吧! (对我来说,我无法用最小的声音集中任何东西,但每个人都不同)。

祝你好运!

2

如果没有我的桌面上的6种API和语言参考书签,我个人几乎没有希望前进的进展。

1

我感觉到你的痛苦,兄弟。

虽然我不知道,我认为多语言熟练程度(或者至少是多语言普遍意识)就是我们活着的世界,而且我们会习惯的。不知何故。唉,不过,我不知道保持理智的秘诀是什么。 (尽管对于我来说,我可以说啤酒肯定有帮助)。

我的团队中的一些人(我在Real工作,顺便说一句)顺便在Windows上用C++开发,就是这样 - 就是这样 - 我们一直在做这些事情,他们很擅长,他们很喜欢,而且他们非常高兴能够做到这一点。

另一方面,我从来没有能够解决任何一种语言,我不认为我想要;一般来说,我在过去的十年中学习了一年的语言,其中一些与其他人不同(ColdFusion,任何人?),而现在我几乎全部工作都是在Flash,Flex和ActionScript中完成的。如果两年前你告诉我我今天会做什么,我肯定会笑的。保持有时候会很疲惫(我后面还有一种posted similarly - 其他人也有一些很好的答案),但我似乎无法抵制新东西,保持当前等。

One不过,我要说的是,继John T和斯科特的评论之后,书籍是唯一的出路。书籍,至少对我来说,阅读大量的(好的 - 不坏的)代码是让语言逐渐渗透到大脑中的最好方式,而这只是需要时间。就像我说的,我已经快两年了,现在我只是开始觉得我可以流利地说ActionScript。总而言之,我可能在我的书桌上有十本AS书,而且,当我读完我正在阅读的那本书时,楼下还有两个等着我。

它永无止境。哇噢!

PS:VBScript,但?呃,那太可怕了。对不起。 ;)

1

我的一个作业的优点是,我能够从一个项目切换到另一个,用不同的语言,操作系统,编码规则,质量保证要求,...

唯一的办法我发现留在最前面并不是要了解每种语言的每一处,而是要知道什么是参考文档以及我可以在哪里找到它们。例如,我使用perl,TCL/TK和各种Unix和Linux版本的man命令,Ada的在线语言参考手册,Objective-C和Cocoa的Apple Developer资源。

4

当我从一种语言更改为另一种语言时,我第一次从未得到正确的功能是数组。他们总是有不同的语法,我最终每次都查找它们。 这是我最常用的语言的列表以及如何实现阵列在其中:

//Java: 
int[] array1 = new int[5]; 
int[] array2 = {0, 1, 2, 3, 4}; 
//C/C++: 
int array1[5]; 
int array2[5] = {0, 1, 2, 3, 4}; 
//JavaScript: 
var array1 = new Array(5); 
var array2 = [0, 1, 2, 3, 4]; 
//PHP: 
$array1 = array(5); 
$array2 = array(0, 1, 2, 3, 4); 
//Python: 
array1 = []#According to the comments, we don't care about size! 
arary2 = [0, 1, 2, 3, 4]; #Could use range to create a sequence 
3

一个你在web开发找到事情之一是,几乎可以肯定,如果你想成为能够端到端 - 需要至少5种语言(SQL,中间层,html,css,js)的结束工作,每个稍微不同的项目都会添加其他东西(jQuery?Flash?XML?)。

我觉得你只是有点有自然神交这一点,但两件事情真正的帮助:

  • 学概念,而不是语法和瘦肉上的IDE,当你需要(另一个原因语言谷歌具体的面试问题就没有任何意义),因为这是适用于任何东西,它更容易看到域特定组件进出滑动,而不是认为你学习的东西完全不同

  • 在可能粘到simil AR语言语法的家庭 - 我知道我个人认为C#更自然,因为它与JS和ActionScript,因为它的XML共享的语法比PHP使用的熟悉,我从HTML

7

有几件事情我做的让它们分开...

对不同的语言使用不同的IDE /编辑器/配色方案。你开始将语言和环境联系起来,当你切换窗口时,你的大脑会得到一个很大的视觉提示,它需要上下文切换到新的语言。

尝试一次限制上下文切换为2或3种活动语言。完成任何其他IDE或编辑器窗口时,请关闭它们。

试着忘掉“火和忘记”的东西。你列出的很多语言看起来好像不是你每天都在积极编码的东西,而是你用来自动执行日常任务的工具。尽可能地尝试拥有一个“工具日”,您可以在这些工具上进行任何工作。尽可能地将它与日常编码分离,这样你的大脑就不用担心页面随时都在进出。

- 编辑提示,而不是队列。

3

我同意:那里有太多的语言和API。

如果你是一个客户,语言和API就像T恤一样,你会很高兴你有最大的选择。嘿,如果你想要一个静态类型的语言,给你很大的灵活性和高性能,请使用C++!如果您想要更容易维护的东西,请使用Java或Python或Ruby,或者将其命名。你有选择。你应该感到高兴。

但事实是,你更像是一个建造房屋的人,语言和API就像螺丝钉和螺栓:它们就是你的工具。如果你有1000种不同类型的螺丝和螺栓,每种都有不同的特性和限制,那么你的工作将是一场噩梦。你会更专注于你的工具,而不是你正在建造的房子(这是否是一个钟声?)。当然,我知道没有万能螺栓,但你肯定可以用几种不同类型的螺栓想象生活,不是吗?

我认为问题在于建筑业的人喜欢他们正在建造的房屋......而我们的开发人员只是喜欢这些螺栓。我也不例外:我只是喜欢学习一门新的语言或框架。螺栓非常漂亮。 ;-)

0

您可以做的任何项目调度,以尽量减少上下文切换可能会有所帮助。你能否推迟Web开发直到C++代码稳定?

我试图做的另一件事是有一个很好的新的语言的“工作示例”。尝试找到您当前正在使用的语言的中小型样本,并保持方便。我发现从一段我比较熟悉的示例代码中提取语法细节通常比从参考手册中挖掘细节快。

0

人类不能一心多用。期。

http://www.joelonsoftware.com/articles/fog0000000022.html

如果您不能让其他人做的工作,因为他们已经有充分的板块,然后让更多的人雇用。如果你不允许雇用更多的人,那么也许人们至少可以转移优先级,这样每个人都可以更专注一些。例如:如果你全职在引擎上,或者在任何超出错误修正的承诺水平上工作,为什么你在研究游戏逻辑?和内容工具? 构建工具? 网站开发?如果你不是在谈论一年的时间跨度,也许每个月都集中在一个单独的月份上,那么这听起来像是你做了所有的编程,而其他人都只是在扭动他们的大拇指。

当然,你只是这些领域中的一个领域的专家,而不是全部。有那整个“如果你被巴士撞到”的事情。如果你是那个人,那么这就是你的工作保障,但对你的公司和你的理智可怕。

你可以尝试多一些工具。尽可能多的移动到Python或.Net,因为我认为你不能抛弃你的游戏核心技术。

相关问题