I think I'm going a little crazy.
我想我有点疯狂了。
Right now, I'm working with the following languages (I was just doing a mental inventory):
现在,我正在使用以下语言(我只是在进行精神盘点):
- C++ - our game engine
- Assembler - low level debugging and a few co-processor specific routines
- Lua - our game engine scripting language
- HLSL - for shaders
- Python - our build system and utility tools
- Objective C/C++ - game engine platform code for Mac and iPhone
- C# - A few tools developed in our overseas office
- ExtendScript - Photoshop exporting tools
- ActionScript - UI scripting
- VBScript - some spreadsheet related stuff
- PHP - some web related stuff
- SQL - some web and tool related stuff
C ++ - 我们的游戏引擎
汇编程序 - 低级调试和一些协处理器特定的例程
Lua - 我们的游戏引擎脚本语言
HLSL - 用于着色器
Python - 我们的构建系统和实用工具
Objective C / C ++ - 适用于Mac和iPhone的游戏引擎平台代码
C# - 我们海外办事处开发的一些工具
ExtendScript - Photoshop导出工具
ActionScript - UI脚本
VBScript - 一些电子表格相关的东西
PHP - 一些与Web相关的东西
SQL - 一些与Web和工具相关的东西
On top of this are the plethora of API's that often have many different ways of doing the same thing: std library, boost, .NET, wxWidgets, Cocoa, Carbon, native script libraries for Python, Lua, etc, OpenGL, Direct3d, GDI, Aqua, augh!
除此之外还有过多的API,通常有许多不同的方法可以做同样的事情:std库,boost,.NET,wxWidgets,Cocoa,Carbon,Python的原生脚本库,Lua等,OpenGL,Direct3d,GDI ,Aqua,啊!
I find myself inadvertently conflating languages and api's, not realizing what I'm doing until I get syntax errors. I feel like I can't possibly keep up with it, and I can't possibly be proficient in all of these areas. Especially outside the realm of C++ and Python, I find myself programming more by looking at manuals that from memory.
我发现自己无意中混淆了语言和api,在我遇到语法错误之前没有意识到我在做什么。我觉得我无法跟上它,我不可能精通所有这些领域。特别是在C ++和Python领域之外,通过查看内存中的手册,我发现自己编程更多。
Do you have a similar problem? Ideas for compartmentalizing so you're more efficient? Deciding where you want to stay proficient? Organizational tips? Good ways to remember when you switch from Lua to C++ you need to start using semi-colons again? Rants on how complicated we programmers have made things for ourselves?
你有类似的问题吗?划分的想法让你更有效率?决定你想要保持精通的地方?组织提示?当你从Lua切换到C ++时,你需要重新开始使用分号?我们的程序员为自己创造了多么复杂的东西?
Any ideas welcome!
欢迎任何想法!
11 个解决方案
#1
For any language I plan on learning thoroughly, I will write my own syntax highlighting in Vim. I try and make the colouring strict so that the colouring picks up obvious mistakes as I type them. This helps me remember where to put certain syntax items in case I forget (so // doesn't look like a comment in python, and I always have trouble remembering where to put * or [] in C). If I can't remember a function or method name, I guess it, and if it shows up in colour I know I've spelled it correctly. I also try and choose differing colours so that different languages stand out from each other, it helps my brain remember what language I'm writing in.
对于我计划彻底学习的任何语言,我将在Vim中编写自己的语法高亮显示。我尝试着色严格,以便在我输入时着色会发现明显的错误。这有助于我记住在忘记的情况下放置某些语法项的位置(所以//在python中看起来不像是注释,而且我总是很难记住在C中放置*或[]的位置。如果我不记得一个函数或方法名称,我猜它,如果它显示颜色,我知道我拼写正确。我也尝试选择不同的颜色,以便不同的语言相互脱颖而出,它有助于我的大脑记住我正在写的语言。
#2
A few things I do to keep them seperate...
我做的一些事情是让他们分开......
Use different IDE's / editors / colour schemes for different languages. You start to associate the language with the environment, and when you switch windows your brain gets a big visual cue that it needs to context switch to the new language.
针对不同语言使用不同的IDE /编辑器/配色方案。您开始将语言与环境相关联,当您切换窗口时,您的大脑会获得一个很大的视觉提示,它需要上下文切换到新语言。
Try to limit context switching to 2 or 3 active languages at a time. Close down any other IDEs or editor windows when you're done with them.
尝试一次将上下文切换限制为2或3种活动语言。完成后关闭任何其他IDE或编辑器窗口。
Try to forget the "fire and forget" stuff. A lot of the languages you've listed seem like they wouldn't be things you're actively coding in every day, but rather tools you use to automate daily tasks. As much as possible try to have a "tool day" where you do any work you need to on those tools. Seperate it as much as possible from your day to day coding, so your brain doesn't have to worry about page swapping that stuff in and out all the time.
试着忘记“火与忘记”的东西。您列出的许多语言似乎都不是您每天都在积极编写的内容,而是您用来自动执行日常任务的工具。尽可能地尝试“工具日”,在这些工具上你需要做任何工作。从你的日常编码中尽可能多地分离它,这样你的大脑就不必担心页面交换这种东西了。
-- edit cue, not queue.
- 编辑提示,而不是队列。
#3
I think after a while it comes natural to you. When I was first getting serious about programming I was using a variety of languages - Java and C# especially. I found myself accidentally using certain Java features in C# and the other way around. Luckily for me a lot of their features are identical so it saved me there, but as I moved on this wasn't really a problem.
我觉得过了一段时间对你来说很自然。当我第一次认真学习编程时,我使用的是各种语言 - 尤其是Java和C#。我发现自己不小心在C#中使用了某些Java功能,反之亦然。对我来说幸运的是他们的很多功能都是相同的,所以它把我救了出来,但是当我继续前进时,这并不是一个真正的问题。
Try spending a significant amount of time with each language. Sit down and read a good book (or a couple) on each language and get familiar with it. Ask your boss if you can spend most of your time on one section at a time. You will begin to catch more of your mistakes before you make them. For the ones you don't, this is why debuggers were created - a programmer's best friend. I have a terrible memory, and I mean TERRIBLE. You may think it makes programming harder for me but it really doesn't. After using a language for a significant amount of time the functions just seem to come to you.
尝试用每种语言花费大量时间。坐下来阅读每种语言的好书(或几本书)并熟悉它。询问你的老板你是否可以将大部分时间花在一个部分上。在制作之前,你将开始捕捉更多的错误。对于那些没有的,这就是创建调试器的原因 - 程序员最好的朋友。我有一个可怕的记忆,我的意思是可怕的。您可能认为这会让编程变得更难,但事实并非如此。在使用一种语言很长一段时间之后,这些功能似乎就出现了。
So try spending more time on each language instead of jumping around and trying to learn them all at once. The information will stick with you better and you will become a lot less flustered and confused when coding time comes around. Try doing things that help keep you focused while programming. If a lot of caffeine helps, go for it! If listening to your favorite music helps, go for it! (for me I can't concentrate whatsoever with the smallest sounds, but everyones different).
因此,请尝试在每种语言上花费更多时间,而不是跳转并尝试一次性学习它们。这些信息会更好地贴在你身上,当编码时间到来时你会变得更加慌乱和困惑。尝试做一些有助于让您在编程时保持专注的事情。如果有很多咖啡因有帮助,那就去吧!如果听你喜欢的音乐有帮助,那就去吧! (对我来说,我无法用最小的声音集中注意力,但每个人都不同)。
Best of luck!
祝你好运!
#4
The feature I never get right the first time, when I change from one language to another, is arrays. They always have different syntax, and I end up looking them up every time. Here is a list of my most used languages and how to implement arrays in them:
当我从一种语言改为另一种语言时,我从来没有正确使用的功能是数组。它们总是有不同的语法,我每次都会查找它们。这是我最常用的语言列表以及如何在其中实现数组:
//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
#5
One of the things you find in web-dev is that almost by definition if you want to be capable of end-to-end work you need to be capable of at least 5 languages (SQL, mid tier, html, css, js), and every slightly different project is going to add something else (jQuery? Flash? XML?).
您在web-dev中找到的一件事是,几乎按照定义,如果您希望能够进行端到端的工作,您需要能够使用至少5种语言(SQL,mid tier,html,css,js) ,每个稍微不同的项目都会添加其他东西(jQuery?Flash?XML?)。
I think you just sort of have to grok this naturally, but two things really help:
我认为你只需要自然地解决这个问题,但有两件事真的有用:
-
learn concepts, not syntax and lean on IDEs and google when you need to (another reason language specific interview questions make no sense), because these are applicable to anything and it's easier to see the domain specific components sliding in and out than to think you're learning something entirely different
学习概念,而不是语法,并在需要时依赖IDE和谷歌(语言特定的面试问题没有意义的另一个原因),因为这些适用于任何事情,并且更容易看到特定领域的组件滑入和滑出而不是认为你正在学习完全不同的东西
-
where possible stick to the similar families of language syntax - I know I personally find C# considerably more natural to use than PHP because it's sharing syntax with JS and Actionscript, XML because of it's familiarity for me from HTML
在可能的情况下坚持使用类似的语言语法系列 - 我知道我个人认为C#使用起来比使用PHP更自然,因为它与JS和Actionscript,XML共享语法,因为它对我来说非常熟悉HTML
#6
I agree: there are too many languages and APIs out there.
我同意:那里有太多的语言和API。
If you were a customer, and languages and APIs were just like T-shirts, you would be happy that you have the biggest choice possible. Hey, if you want a statically typed language which gives you a lot of flexibility and high performance, go with C++! If you want something easier to maintain, go with Java or Python or Ruby or you name it. You have the choice. You should be happy.
如果您是客户,语言和API就像T恤一样,您会很高兴您有最大的选择。嘿,如果你想要一个静态类型的语言,它给你很大的灵活性和高性能,请使用C ++!如果您想要更容易维护的东西,请使用Java或Python或Ruby,或者命名。你有选择。你应该感到高兴。
But the truth is, you're more like a guy building a house, and languages and APIs are like screws and bolts: they're your tools. If you have 1000 different types of screws and bolts, each with different characteristics and limitations, then your job will be a nightmare. You'd be more focused on your tools than on the house you're building (does this ring a bell?). Of course, I know there is no one-size-fits-all bolt, but you certainly could imagine life with just a few different types of bolts, couldn't you?
但事实是,你更像是一个建房子的人,语言和API就像螺丝和螺栓:它们是你的工具。如果您有1000种不同类型的螺钉和螺栓,每种都有不同的特性和限制,那么您的工作将是一场噩梦。你会更专注于你的工具,而不是你正在建造的房子(这会响铃吗?)。当然,我知道没有一个适合所有人的螺栓,但是你可以用几种不同类型的螺栓想象生活,不是吗?
I think the problem lies in the fact that guys in the building industry love the houses they're building... and we developers just love the bolts. I'm no exception: I just love to learn a new language or framework. Bolts are so beautiful. ;-)
我认为问题在于建筑行业的人们喜欢他们正在建造的房屋......而且我们的开发人员只是喜欢螺栓。我也不例外:我只是喜欢学习一门新语言或框架。螺栓是如此美丽。 ;-)
#7
I personally have almost no hope of forward progress without my half-dozen API and language reference bookmarks sitting right on my desktop.
如果我的桌面上没有六个API和语言参考书签,我个人几乎没有希望取得进步。
#8
I feel your pain, bro.
我觉得你的痛苦,兄弟。
I don't know, though; I think multiple-language proficiency (or at least multiple-language-general-awareness) is just sort of the world we're livin' in, and something we're just gonna have get used to. Somehow. Alas, I don't know what the secret is to keeping sane, though. (Although for me, I can say that beer definitely helps.)
但我不知道;我认为多语言能力(或者至少是多语言一般意识)只是我们生活的世界,而我们将会习惯这样的事情。不知何故。唉,我不知道保持理智的秘诀是什么。 (虽然对我来说,我可以说啤酒肯定有帮助。)
Some folks on my team (I work at Real, too, incidentally) develop in C++ on Windows, for Windows, and that's it -- that's all they've been doing for years, and they're great at it, they love it, and they're totally happy doing that one thing really well.
我的团队中的一些人(我在Real工作,顺便说一下)在Windows上用C ++开发,用于Windows,就是这样 - 这就是他们多年来一直在做的事情,而且他们很擅长,他们喜欢它他们非常高兴能做到这一件事。
Me, on the other hand -- I've never been able to settle into any one language, and I don't think I'd want to; generally speaking, I've learned about a language a year for the past ten years, some of them unlike any others (ColdFusion, anyone?), and these days, I do almost all of my work in Flash, Flex and ActionScript. If you'd told me two years ago what I'd be doing today, I'm sure I'd have laughed. Keeping up is exhausting sometimes (I posted similarly a while back -- a few good answers from other folks in there, too), but I can't seem to resist checking out the new stuff, keeping current, etc.
另一方面,我 - 我从来没有能够适应任何一种语言,我认为我不想;一般来说,我在过去的十年中已经学会了一种语言,其中一些语言与其他语言不同(ColdFusion,任何人?),而现在,我几乎完成了我在Flash,Flex和ActionScript中的所有工作。如果你两年前告诉我今天我要做的事情,我相信我会笑的。有时候一直在努力(我一段时间也发布了同样的帖子 - 那里的其他人也有一些好的答案),但我似乎无法拒绝检查新的东西,保持当前等等。
One thing I will say, though, following on from John T's and Scott's comments: books are the only way to go. Books, at least for me, along with reading lots of (good -- not bad) code, are the best way to let a language seep gradually and cohesively into your brain, and that just takes time. Like I said, I'm almost two years now with Flash, and I'm only now beginning to feel like I can speak ActionScript fluently. All told, I've probably got ten AS books on my desk, though, and there are two more downstairs waiting for me once I'm finished with the one I'm reading now.
不过,我要说的是,继John T和Scott的评论之后:书籍是唯一的出路。书籍,至少对我来说,以及阅读大量(好 - 不坏)代码,是让语言逐渐和凝聚渗透到你的大脑中的最佳方式,而这只需要时间。就像我说的那样,我现在差不多两年了,现在我已经开始觉得我能说流利的ActionScript了。总而言之,我的书桌上可能有十本AS书,而且一旦我完成了我正在阅读的那本书,楼下还有两本等着我。
It never ends. Woohoo!
它永远不会结束。哇噢!
PS: VBScript, though? Ugh, that's terrible. Sorry, man. ;)
PS:VBScript,但是?呃,太可怕了。对不起。 ;)
#9
One of the advantages of my job is that I am able to switch from one project to another, with different languages, operating systems, coding rules, QA requirements, ...
我的工作的一个优点是我能够从一个项目切换到另一个项目,具有不同的语言,操作系统,编码规则,QA要求,......
The only way I found to stay on top is not to know every bit of every language, but to know what are the reference docs and where I can find them. For instance, I use the man command for perl, TCL/TK and various flavours of Unix and Linux, the online Language Reference Manual for Ada, Apple Developer resources for Objective-C and Cocoa.
我发现保持领先的唯一方法是不了解每种语言的每一个方面,而是要知道什么是参考文档以及我可以在哪里找到它们。例如,我使用man命令用于perl,TCL / TK以及各种版本的Unix和Linux,Ada的在线语言参考手册,Objective-C和Cocoa的Apple Developer资源。
#10
Any project scheduling you can do to minimize the context switches could be helpful. Can you put off the web development until the C++ code is stable?
您可以执行的任何项目调度都可以帮助您最小化上下文切换。你可以推迟Web开发直到C ++代码稳定吗?
Another thing I try to do is have a good "worked example" of a new language. Try and find small to medium sized samples of the language you're currently using, and keep it handy. I find picking up syntax details from a piece of sample code I'm somewhat familiar with is often quicker than digging the details out of a reference manual.
我尝试做的另一件事是有一个新语言的好“工作实例”。尝试找到您当前使用的语言的中小型样本,并保持方便。我发现从一段我熟悉的示例代码中获取语法细节通常比从参考手册中挖掘细节更快。
#11
Humans can't multitask. Period.
人类不能多任务。期。
http://www.joelonsoftware.com/articles/fog0000000022.html
If you aren't allowed to let other people do the work because they already have full plates, then get more people hired. If you aren't allowed to get more people hired, then maybe people can at least shift priorities so each person can focus a bit more.
如果你不允许其他人做这项工作,因为他们已经有完整的盘子,那么就会有更多的人被雇用。如果你不被允许雇用更多的人,那么也许人们至少可以改变优先级,这样每个人都可以集中精力。
For example: If you're full time on the engine, or at any level of commitment beyond bug fixes, why are you working on game logic? And content tools? And build tools? And web development? If you're not talking about a one year time span, with maybe a separate solid month of concentrating on each, then it sounds like you do all the programming, and everyone else just twiddles their thumbs.
例如:如果您是引擎上的全职工作,或者在错误修复之外的任何级别的承诺,您为什么要开发游戏逻辑?和内容工具?并构建工具?和网络开发?如果你不是在谈论一年的时间跨度,可能是一个单独的坚实月份,那么听起来就像你做了所有的编程,而其他人只是喋喋不休。
Surely you're the expert for only one of these areas, and not all of them. There's that whole "if you got hit by a bus" thing. If you're that guy, then that is job security for you, but terrible for your company and your sanity.
当然,你只是其中一个领域的专家,而不是所有领域的专家。整个“如果你被公共汽车击中”的事情。如果你是那个人,那么这对你来说是安全的,但对你的公司和你的理智是可怕的。
You could try matching up tools a bit more. Move as many things as you can to Python or .Net, since I assume you can't ditch your core technologies for your games.
您可以尝试更多地匹配工具。尽可能多地向Python或.Net移动,因为我认为你不能放弃你的核心技术。
#1
For any language I plan on learning thoroughly, I will write my own syntax highlighting in Vim. I try and make the colouring strict so that the colouring picks up obvious mistakes as I type them. This helps me remember where to put certain syntax items in case I forget (so // doesn't look like a comment in python, and I always have trouble remembering where to put * or [] in C). If I can't remember a function or method name, I guess it, and if it shows up in colour I know I've spelled it correctly. I also try and choose differing colours so that different languages stand out from each other, it helps my brain remember what language I'm writing in.
对于我计划彻底学习的任何语言,我将在Vim中编写自己的语法高亮显示。我尝试着色严格,以便在我输入时着色会发现明显的错误。这有助于我记住在忘记的情况下放置某些语法项的位置(所以//在python中看起来不像是注释,而且我总是很难记住在C中放置*或[]的位置。如果我不记得一个函数或方法名称,我猜它,如果它显示颜色,我知道我拼写正确。我也尝试选择不同的颜色,以便不同的语言相互脱颖而出,它有助于我的大脑记住我正在写的语言。
#2
A few things I do to keep them seperate...
我做的一些事情是让他们分开......
Use different IDE's / editors / colour schemes for different languages. You start to associate the language with the environment, and when you switch windows your brain gets a big visual cue that it needs to context switch to the new language.
针对不同语言使用不同的IDE /编辑器/配色方案。您开始将语言与环境相关联,当您切换窗口时,您的大脑会获得一个很大的视觉提示,它需要上下文切换到新语言。
Try to limit context switching to 2 or 3 active languages at a time. Close down any other IDEs or editor windows when you're done with them.
尝试一次将上下文切换限制为2或3种活动语言。完成后关闭任何其他IDE或编辑器窗口。
Try to forget the "fire and forget" stuff. A lot of the languages you've listed seem like they wouldn't be things you're actively coding in every day, but rather tools you use to automate daily tasks. As much as possible try to have a "tool day" where you do any work you need to on those tools. Seperate it as much as possible from your day to day coding, so your brain doesn't have to worry about page swapping that stuff in and out all the time.
试着忘记“火与忘记”的东西。您列出的许多语言似乎都不是您每天都在积极编写的内容,而是您用来自动执行日常任务的工具。尽可能地尝试“工具日”,在这些工具上你需要做任何工作。从你的日常编码中尽可能多地分离它,这样你的大脑就不必担心页面交换这种东西了。
-- edit cue, not queue.
- 编辑提示,而不是队列。
#3
I think after a while it comes natural to you. When I was first getting serious about programming I was using a variety of languages - Java and C# especially. I found myself accidentally using certain Java features in C# and the other way around. Luckily for me a lot of their features are identical so it saved me there, but as I moved on this wasn't really a problem.
我觉得过了一段时间对你来说很自然。当我第一次认真学习编程时,我使用的是各种语言 - 尤其是Java和C#。我发现自己不小心在C#中使用了某些Java功能,反之亦然。对我来说幸运的是他们的很多功能都是相同的,所以它把我救了出来,但是当我继续前进时,这并不是一个真正的问题。
Try spending a significant amount of time with each language. Sit down and read a good book (or a couple) on each language and get familiar with it. Ask your boss if you can spend most of your time on one section at a time. You will begin to catch more of your mistakes before you make them. For the ones you don't, this is why debuggers were created - a programmer's best friend. I have a terrible memory, and I mean TERRIBLE. You may think it makes programming harder for me but it really doesn't. After using a language for a significant amount of time the functions just seem to come to you.
尝试用每种语言花费大量时间。坐下来阅读每种语言的好书(或几本书)并熟悉它。询问你的老板你是否可以将大部分时间花在一个部分上。在制作之前,你将开始捕捉更多的错误。对于那些没有的,这就是创建调试器的原因 - 程序员最好的朋友。我有一个可怕的记忆,我的意思是可怕的。您可能认为这会让编程变得更难,但事实并非如此。在使用一种语言很长一段时间之后,这些功能似乎就出现了。
So try spending more time on each language instead of jumping around and trying to learn them all at once. The information will stick with you better and you will become a lot less flustered and confused when coding time comes around. Try doing things that help keep you focused while programming. If a lot of caffeine helps, go for it! If listening to your favorite music helps, go for it! (for me I can't concentrate whatsoever with the smallest sounds, but everyones different).
因此,请尝试在每种语言上花费更多时间,而不是跳转并尝试一次性学习它们。这些信息会更好地贴在你身上,当编码时间到来时你会变得更加慌乱和困惑。尝试做一些有助于让您在编程时保持专注的事情。如果有很多咖啡因有帮助,那就去吧!如果听你喜欢的音乐有帮助,那就去吧! (对我来说,我无法用最小的声音集中注意力,但每个人都不同)。
Best of luck!
祝你好运!
#4
The feature I never get right the first time, when I change from one language to another, is arrays. They always have different syntax, and I end up looking them up every time. Here is a list of my most used languages and how to implement arrays in them:
当我从一种语言改为另一种语言时,我从来没有正确使用的功能是数组。它们总是有不同的语法,我每次都会查找它们。这是我最常用的语言列表以及如何在其中实现数组:
//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
#5
One of the things you find in web-dev is that almost by definition if you want to be capable of end-to-end work you need to be capable of at least 5 languages (SQL, mid tier, html, css, js), and every slightly different project is going to add something else (jQuery? Flash? XML?).
您在web-dev中找到的一件事是,几乎按照定义,如果您希望能够进行端到端的工作,您需要能够使用至少5种语言(SQL,mid tier,html,css,js) ,每个稍微不同的项目都会添加其他东西(jQuery?Flash?XML?)。
I think you just sort of have to grok this naturally, but two things really help:
我认为你只需要自然地解决这个问题,但有两件事真的有用:
-
learn concepts, not syntax and lean on IDEs and google when you need to (another reason language specific interview questions make no sense), because these are applicable to anything and it's easier to see the domain specific components sliding in and out than to think you're learning something entirely different
学习概念,而不是语法,并在需要时依赖IDE和谷歌(语言特定的面试问题没有意义的另一个原因),因为这些适用于任何事情,并且更容易看到特定领域的组件滑入和滑出而不是认为你正在学习完全不同的东西
-
where possible stick to the similar families of language syntax - I know I personally find C# considerably more natural to use than PHP because it's sharing syntax with JS and Actionscript, XML because of it's familiarity for me from HTML
在可能的情况下坚持使用类似的语言语法系列 - 我知道我个人认为C#使用起来比使用PHP更自然,因为它与JS和Actionscript,XML共享语法,因为它对我来说非常熟悉HTML
#6
I agree: there are too many languages and APIs out there.
我同意:那里有太多的语言和API。
If you were a customer, and languages and APIs were just like T-shirts, you would be happy that you have the biggest choice possible. Hey, if you want a statically typed language which gives you a lot of flexibility and high performance, go with C++! If you want something easier to maintain, go with Java or Python or Ruby or you name it. You have the choice. You should be happy.
如果您是客户,语言和API就像T恤一样,您会很高兴您有最大的选择。嘿,如果你想要一个静态类型的语言,它给你很大的灵活性和高性能,请使用C ++!如果您想要更容易维护的东西,请使用Java或Python或Ruby,或者命名。你有选择。你应该感到高兴。
But the truth is, you're more like a guy building a house, and languages and APIs are like screws and bolts: they're your tools. If you have 1000 different types of screws and bolts, each with different characteristics and limitations, then your job will be a nightmare. You'd be more focused on your tools than on the house you're building (does this ring a bell?). Of course, I know there is no one-size-fits-all bolt, but you certainly could imagine life with just a few different types of bolts, couldn't you?
但事实是,你更像是一个建房子的人,语言和API就像螺丝和螺栓:它们是你的工具。如果您有1000种不同类型的螺钉和螺栓,每种都有不同的特性和限制,那么您的工作将是一场噩梦。你会更专注于你的工具,而不是你正在建造的房子(这会响铃吗?)。当然,我知道没有一个适合所有人的螺栓,但是你可以用几种不同类型的螺栓想象生活,不是吗?
I think the problem lies in the fact that guys in the building industry love the houses they're building... and we developers just love the bolts. I'm no exception: I just love to learn a new language or framework. Bolts are so beautiful. ;-)
我认为问题在于建筑行业的人们喜欢他们正在建造的房屋......而且我们的开发人员只是喜欢螺栓。我也不例外:我只是喜欢学习一门新语言或框架。螺栓是如此美丽。 ;-)
#7
I personally have almost no hope of forward progress without my half-dozen API and language reference bookmarks sitting right on my desktop.
如果我的桌面上没有六个API和语言参考书签,我个人几乎没有希望取得进步。
#8
I feel your pain, bro.
我觉得你的痛苦,兄弟。
I don't know, though; I think multiple-language proficiency (or at least multiple-language-general-awareness) is just sort of the world we're livin' in, and something we're just gonna have get used to. Somehow. Alas, I don't know what the secret is to keeping sane, though. (Although for me, I can say that beer definitely helps.)
但我不知道;我认为多语言能力(或者至少是多语言一般意识)只是我们生活的世界,而我们将会习惯这样的事情。不知何故。唉,我不知道保持理智的秘诀是什么。 (虽然对我来说,我可以说啤酒肯定有帮助。)
Some folks on my team (I work at Real, too, incidentally) develop in C++ on Windows, for Windows, and that's it -- that's all they've been doing for years, and they're great at it, they love it, and they're totally happy doing that one thing really well.
我的团队中的一些人(我在Real工作,顺便说一下)在Windows上用C ++开发,用于Windows,就是这样 - 这就是他们多年来一直在做的事情,而且他们很擅长,他们喜欢它他们非常高兴能做到这一件事。
Me, on the other hand -- I've never been able to settle into any one language, and I don't think I'd want to; generally speaking, I've learned about a language a year for the past ten years, some of them unlike any others (ColdFusion, anyone?), and these days, I do almost all of my work in Flash, Flex and ActionScript. If you'd told me two years ago what I'd be doing today, I'm sure I'd have laughed. Keeping up is exhausting sometimes (I posted similarly a while back -- a few good answers from other folks in there, too), but I can't seem to resist checking out the new stuff, keeping current, etc.
另一方面,我 - 我从来没有能够适应任何一种语言,我认为我不想;一般来说,我在过去的十年中已经学会了一种语言,其中一些语言与其他语言不同(ColdFusion,任何人?),而现在,我几乎完成了我在Flash,Flex和ActionScript中的所有工作。如果你两年前告诉我今天我要做的事情,我相信我会笑的。有时候一直在努力(我一段时间也发布了同样的帖子 - 那里的其他人也有一些好的答案),但我似乎无法拒绝检查新的东西,保持当前等等。
One thing I will say, though, following on from John T's and Scott's comments: books are the only way to go. Books, at least for me, along with reading lots of (good -- not bad) code, are the best way to let a language seep gradually and cohesively into your brain, and that just takes time. Like I said, I'm almost two years now with Flash, and I'm only now beginning to feel like I can speak ActionScript fluently. All told, I've probably got ten AS books on my desk, though, and there are two more downstairs waiting for me once I'm finished with the one I'm reading now.
不过,我要说的是,继John T和Scott的评论之后:书籍是唯一的出路。书籍,至少对我来说,以及阅读大量(好 - 不坏)代码,是让语言逐渐和凝聚渗透到你的大脑中的最佳方式,而这只需要时间。就像我说的那样,我现在差不多两年了,现在我已经开始觉得我能说流利的ActionScript了。总而言之,我的书桌上可能有十本AS书,而且一旦我完成了我正在阅读的那本书,楼下还有两本等着我。
It never ends. Woohoo!
它永远不会结束。哇噢!
PS: VBScript, though? Ugh, that's terrible. Sorry, man. ;)
PS:VBScript,但是?呃,太可怕了。对不起。 ;)
#9
One of the advantages of my job is that I am able to switch from one project to another, with different languages, operating systems, coding rules, QA requirements, ...
我的工作的一个优点是我能够从一个项目切换到另一个项目,具有不同的语言,操作系统,编码规则,QA要求,......
The only way I found to stay on top is not to know every bit of every language, but to know what are the reference docs and where I can find them. For instance, I use the man command for perl, TCL/TK and various flavours of Unix and Linux, the online Language Reference Manual for Ada, Apple Developer resources for Objective-C and Cocoa.
我发现保持领先的唯一方法是不了解每种语言的每一个方面,而是要知道什么是参考文档以及我可以在哪里找到它们。例如,我使用man命令用于perl,TCL / TK以及各种版本的Unix和Linux,Ada的在线语言参考手册,Objective-C和Cocoa的Apple Developer资源。
#10
Any project scheduling you can do to minimize the context switches could be helpful. Can you put off the web development until the C++ code is stable?
您可以执行的任何项目调度都可以帮助您最小化上下文切换。你可以推迟Web开发直到C ++代码稳定吗?
Another thing I try to do is have a good "worked example" of a new language. Try and find small to medium sized samples of the language you're currently using, and keep it handy. I find picking up syntax details from a piece of sample code I'm somewhat familiar with is often quicker than digging the details out of a reference manual.
我尝试做的另一件事是有一个新语言的好“工作实例”。尝试找到您当前使用的语言的中小型样本,并保持方便。我发现从一段我熟悉的示例代码中获取语法细节通常比从参考手册中挖掘细节更快。
#11
Humans can't multitask. Period.
人类不能多任务。期。
http://www.joelonsoftware.com/articles/fog0000000022.html
If you aren't allowed to let other people do the work because they already have full plates, then get more people hired. If you aren't allowed to get more people hired, then maybe people can at least shift priorities so each person can focus a bit more.
如果你不允许其他人做这项工作,因为他们已经有完整的盘子,那么就会有更多的人被雇用。如果你不被允许雇用更多的人,那么也许人们至少可以改变优先级,这样每个人都可以集中精力。
For example: If you're full time on the engine, or at any level of commitment beyond bug fixes, why are you working on game logic? And content tools? And build tools? And web development? If you're not talking about a one year time span, with maybe a separate solid month of concentrating on each, then it sounds like you do all the programming, and everyone else just twiddles their thumbs.
例如:如果您是引擎上的全职工作,或者在错误修复之外的任何级别的承诺,您为什么要开发游戏逻辑?和内容工具?并构建工具?和网络开发?如果你不是在谈论一年的时间跨度,可能是一个单独的坚实月份,那么听起来就像你做了所有的编程,而其他人只是喋喋不休。
Surely you're the expert for only one of these areas, and not all of them. There's that whole "if you got hit by a bus" thing. If you're that guy, then that is job security for you, but terrible for your company and your sanity.
当然,你只是其中一个领域的专家,而不是所有领域的专家。整个“如果你被公共汽车击中”的事情。如果你是那个人,那么这对你来说是安全的,但对你的公司和你的理智是可怕的。
You could try matching up tools a bit more. Move as many things as you can to Python or .Net, since I assume you can't ditch your core technologies for your games.
您可以尝试更多地匹配工具。尽可能多地向Python或.Net移动,因为我认为你不能放弃你的核心技术。