如果您愿意,我想以“面向未来”的方式学习编程。尽管Windows主导了台式机操作系统市场(目前而言),但显然在学习其语言/框架/ API方面还是有很多价值的,依此类推-随着新设备的出现或Windows自身的发展,这种情况可能会发生变化。友好的Windows 8预览看起来不太吸引人...)。
我是否正确地认为,对于后端逻辑/低级编程等具有扎实的C / C ++知识,再结合用于Java的Java等极易移植的语言,将是软件开发的良好基础在大多数系统上将证明有用吗?-我说的是台式PC,平板电脑,电话。
如果您愿意,我想以“面向未来”的方式学习编程。尽管Windows主导了台式机操作系统市场(目前而言),但显然在学习其语言/框架/ API方面还是有很多价值的,依此类推-随着新设备的出现或Windows自身的发展,这种情况可能会发生变化。友好的Windows 8预览看起来不太吸引人...)。
我是否正确地认为,对于后端逻辑/低级编程等具有扎实的C / C ++知识,再结合用于Java的Java等极易移植的语言,将是软件开发的良好基础在大多数系统上将证明有用吗?-我说的是台式PC,平板电脑,电话。
Answers:
如果您想成为未来的证明,那么我能给您的最好建议就是不要将自己融入技术之中。
因此,不要盲目学习API。了解如何构思它们。幕后的哲学是什么?它们的优点和缺点是什么?总体上考虑软件,而不是特定技术。
您也可以进行良好的程序设计,进入OOP,AOP是IMO的不错选择。但是,不仅要了解机制,还要真正研究机制背后的哲学。
不要忽略通用计算机科学,例如数据结构和算法,因为它们是跨技术知识,总是有用的。
也请参考良好做法。您通常有十二种方法来做某事,但其中大多数都是胡扯:容易发生错误,难以维护,以后难以理解或难以被另一个程序员理解,等等。。。通常,代码难于编写。因此,请学习如何花更多的精力在编写上以使阅读更容易(因为您阅读的代码会比编写的更多)。
学习有效的调试技术(智能使用日志和调试器)和测试(如何编写可以轻松进行单元测试的代码以及如何使这些测试自动化)。
然后,您需要一般的技术背景。我说的是非常广泛的知识,例如处理器如何工作(高速缓存未命中或分支预测是一个好的开始),UNIX系统,网络协议(如IP,TCP和以太网等)。。。
最后,学习如何学习。如果您知道如何学习,则可以适应。
您将需要一些特定技术方面的丰富知识才能找到工作,但是这些技术确实过时了(例如,请考虑一下COBOL,或者在IE / Netscape战争期间进行Web编程)。因此,不要依靠它们来适应未来。他们将是被聘用的关键,但绝对不是什么才是优秀的程序员和什么才能使您的技能随着时间的流逝而持久。
编辑:如果您只是开始,那么您应该明确地做一些事情。真的。俄罗斯方块或蛇之类的游戏是一个好的开始,而且很有趣。如果您没有把事情做好,那么您将花费大量的时间进行学习,而实际上并没有获得充分理解所学知识所需的经验。
让我们以设计模式为例。设计模式很棒,您应该明确地使用它们。但是,如果使用过度,它们会使您的代码变得复杂且难以理解。您将不得不面对设计模式可以解决的问题,并且要花一些时间来解决它或其副作用,以完全了解设计模式的含义。随着代码的增长,随着时间的推移,设计模式必须用作较小的重构。而且,您会知道何时需要一种设计模式,而当它的好处大于使用它所引起的代码复杂性时。这需要经验。
因此,一定要做好事,他们会从您的错误中吸取教训。我不能再坚持:做点事情!
优秀程序员与劣质程序员的区别在于他们使用任何语言进行编程的能力。正如其他张贴者所指出的那样,了解任何重要的面向对象语言都会为您提供创建出色程序和需求的工具。
另外,如果您还在上学,请确保您参加一些写作课。最好的工程师和程序员也可以很好地传达他们的想法。
一旦开始工作,防止被淘汰的最好办法就是跟上当前趋势。如果他们不使用当前技术或流程糟糕等,别担心会另谋高就。对于您的职业而言,最糟糕的事情是从事一项工作,要求您使用旧技术或较弱的流程。
@deadalnix的答案很好。我将添加三件事:
既然您刚开始,我会说只是学习一门语言,哪门语言都没关系。困难不在于语言(语法)本身,而在于理解概念。并且这些通用的编程概念适用于所有编程语言,因此学习第二,第三和第四(...)语言会容易得多。
因此,一开始不要过多考虑“面向未来”。但是,随着您的进步,请尝试精通彼此截然不同的语言。基本上,(如您所说),您应该使用C / C ++这样的低级(-ish)语言,Java等高级编程语言以及脚本语言(Python,Ruby等)。如果您想了解真正的高级知识,那么您还必须了解汇编语言。
但是,现在不要对此太强调。学习编程需要几年时间。目前,只需选择Java或C#之类的语言,然后继续使用即可。:)
If you want to go into the really advanced stuff you must also know Assembly-您可以在任何层次上做到这一点,挑战只是不同。
我是否正确地认为,对于后端逻辑/低级编程等具有扎实的C / C ++知识,再结合用于Java的Java等极易移植的语言,将是软件开发的良好基础在大多数系统上将证明有用吗?
我说的是台式PC,平板电脑,电话。
不,这些都无济于事。
扎实的数据结构和算法知识-独立于任何特定的编程语言-比“低级编程等”更有价值。
“像Java这样的极其可移植的语言”与C一样可移植,无济于事。“ 下一件大事”将与这些语言有很大不同,以至于您的超便携式Java将是一种责任,而不是一种资产。
Mac OS(台式机,平板电脑和手机)都是在Objective C中完成的。这可能是一个起点。
Windows(台式机,台式机和电话)均使用C#完成。那可能是一个起点。