一个完全的新手要学习Java需要多长时间?

26

我完全没有编程经验,但需要学习Java - 足以参加J2ME快速课程。我只有10周的时间。我能做到吗?您对我可以使用的最佳资源有什么建议?(目前正在使用Sun的Java教程)。


你的编程背景是什么(经验和教育)? - Steve Kuo
4
有些人认为学习一门新语言可能需要10年(http://norvig.com/21-days.html)!!但我认为,如果你已经有相关的编程经验,学习一门新语言只需要10周是很合理的。否则涉及到太多新概念。 - ChristopheD
1
我即将在24小时内完成Java。 - MisterGeeky
如果您之前是程序员,无论是Python、C++或任何遵循面向对象编程的编程语言,只要概念清晰,那么成为专家需要大约5天时间。如果您来自函数式编程,则可能需要2周时间,因为您需要学习面向对象编程。如果您是新手程序员,请慢慢来。 - Akash
24个回答

56

10周? 显然你可以在24小时内完成!

http://www.amazon.com/Sams-Teach-Yourself-Programming-Hours/dp/0672328445

编辑:

好的,所以只有1个人觉得我的答案很有趣,但不足以投票支持。真正的问题是您需要在10周内达到多好的程度?

如果您找到一本好书(上面链接的这本在亚马逊上有一些好评),那么在10周内,您可能已经熟练掌握了足够的Java知识,但要成为专家需要数年时间。在10周和数年之间度过的任何时间都会将您从初学者推向专家。

还要阅读十年编程自学指南


8
+1 24小时...奢华!当我年轻的时候,我们会在上下学的路上创造新的语言。去学校要走5英里,回来要走7英里,两边都是上坡。 - Robin
3
我们不被允许创造新语言——我们必须在脑海中使用原始的机器码编写代码,同时在膝深的积雪中步行去上学。 - Michael Myers
1
我曾经有一张软盘,但是我不得不用放大镜和磁化针手动设置每个位。 - Beska
23
在我那个年代,我所拥有的只有1和0。有时我们甚至只有0。 - Unknown
3
谢谢分享“自学编程需要十年”的链接,并给它点赞。这是一篇很棒的文章。 - lothar
显示剩余5条评论

30

好的,基于之前的一些答案,我预计会被点踩,但我认为你幻想了,认为自己可以在10周内学会Java编程而没有任何编程基础。除非是某种天才,否则没有任何无编程经验的人能够在10周内学会Java或几乎任何语言的编程。

请注意,从书本上复制并运行“Hello World”并不能使你成为一个程序员。噢,这很可能需要几天时间才能在某个IDE中完成。

现在,你可以学习并有可能通过某些考试吗?也许可以,但这取决于测试的深度和格式。

如果我问是否可以在10周内成为一名医生,我会因为这样的问题而被笑话,所以我对那些表明这是有可能的答案感到有些惊讶。我现在可以给我的女儿贴创可贴,但这并不能使我成为医疗专业人士,它只是意味着我完成了他们版本的“Hello World”。


4
他们的"Hello World"程序,哈哈,我喜欢。 - Justin M. Ucar
1
这应该是被接受的答案,因为它提醒你(这样你可以更好地计划/备选路线),并回答了一个普通人会有的问题。所有“是”的答案都适用于任何问题(我能打败国际象棋大师吗?我能掌握组合数学吗?) - skoh
我刚刚尝试运行了“Hello World”,结果却得到了“Hell World”。算了,Java不适合我。我不适合这个,我要尝试一些更简单的东西。 - user3120861

24

主要问题是你之前是否有任何编程经验,因为这可能是主要的努力方向。我猜想如果你没有,你可以通过,但不一定做得好。你表明你没有任何编程经验,所以这就是你将面临最多问题和花费大部分时间的地方。Java并不一定比其他类似语言更容易或更难学习。

Sun的Java教程很好,但不幸的是,编程是必须要练习的东西,这取决于你的空闲时间。停下来经常练习是必要的,而不是读半本书后才开始。如果你全职投入了10周时间-对某些人来说,是可以做到的。毕竟,在大学里,学生在一个学年中学习其他无关课程时,也会成为合格的开发者。

我建议首先专注于完全掌握Java,而不是尝试使用J2ME。然后再进行转换。

此外,请意识到语言和标准库之间存在很大的差异。重要的是要学会语言。有些标准库调用每个人都会使用并且至关重要,但它们不是语言的一部分。但你永远无法真正了解整个库(尽管你会从经验中学到)。更重要的是学会如何找到你正在寻找的功能,而不是知道它是什么或在哪里找到它。重要的是避免重复发明轮子。

还要意识到,即使你学会了编程,你也会错过一些关键的通用的计算机科学知识,如数据结构和算法。编程书籍很少教授这方面的内容,你将不得不自己学习(例如,可以参考TopCoder的教程)。


1
一旦你掌握了面向对象编程的要领,这就很容易了。但是光是理解面向对象编程可能需要2到3周的时间。一旦你掌握了这个,以及一套不错的语法(或者至少基本了解语言可以做什么),那么你就已经走上了成功之路。首先要了解“什么”(这种语言能做什么),然后再尝试了解“如何”(它是如何实现的,我需要哪些语法才能让它运行)。 - Organiccat
2
@organiccat:我认为你高估了普通初学者的能力。我认为一个人独自学习编程,很难在那么短的时间内真正理解这些东西。理解你提到的“什么”是一个相当大的概念。许多刚接触编程世界的新手并不知道一种语言的可行性,需要一段时间才能有所领悟,根据我的经验。 - Beska
3
@Beska:我猜想那些缺乏动力的初学者不会去StackOverflow上问这个问题 :) OP似乎有足够的动力去学习。他似乎更感兴趣的是J2ME,这消除了某些问题(同时增加了其他问题)。 - Uri
2
嗯...好吧,我的意思是平均有动力的初学者。你肯定是对的,高度的动力会有所帮助,他正在提出好问题并尝试做正确的事情,但我认为这不足以在相对较短的时间内完成任务。当然,每个人都不同,所以我想他可能能够完成,但我认为他将是例外而不是规则。话虽如此,这不是一个及格或不及格的情况...无论如何,他都会在某种程度上成功和失败...其中一些可能只是取决于我们所谓的“成功”。 - Beska
1
10周听起来真的非常乐观,除非他非常聪明,对许多符号数学有很好的数学理解(这是每个人在高中都学过但很少人记得的那种),并且每天工作10小时。更有可能的是,在10周内,他只能编写糟糕的Java代码来解决琐碎的问题。 - mqp

16

好的,这里有很多人说,“可以”,“可以,但会很难”,所以我持不同意见。

不行。

问题不在于“学习Java”需要10周时间,因为我认为在10周时间结束时,你将能够编写一些程序,并且知道如何解决一些简单的问题。

但是这并不意味着你准备好参加J2ME快速课程了。 快速课程往往面向那些具有先修课程强大背景的人。你可能能够一边学一边做许多事情,但如果没有理解你正在做的事情的原因,它将看起来像许多半随机的东西需要死记硬背,而且很快就会消失。

基本上,我认为这需要时间:时间让你吸收教训,时间去尝试并失败几次,这样为什么突然跳到你面前……

最终,我怀疑你可能会完成它,但你最终可能不会非常熟练。(Uri的最后两段话已经说明了所有问题。)

我不想完全打击你,我绝对希望你表现出色并成功......但我不愿意拿钱来打赌。

(请理解,我不认识你......所以我的陈述是基于我自己和我工作过的人的经验......所以这并不是针对你的挑剔......只是观察到这是一个非常艰巨的学习任务。)


4
即使你对Java非常了解,也可能不知道如何完美地使用每个位。许多人认为编程是关于语言的,但我不这样认为。 - Perpetualcoder

7
学习编程就像学习一门外语,你可以轻松地复制所学短语,但缺乏了解其背后的上下文,因此无法有效地解决新问题。这需要时间。
如果您是第一次编程,我真的不建议使用Java。Python会更好(免责声明:我是Python粉丝,但理由充分)。
然而,我认为对于初学者来说,Head First Java 是最好的选择。

1
最好的比喻是外语……即使我不是 Python 的人。 - LB40

4

我在一所高中教授Java编程,我们的课程为期14周。这足够让学生建立起面向对象编程的坚实基础,但学生还没有足够的经验来开发大型项目或过于复杂的内容。

许多学校使用Lambert和Osbborne的教科书:

Lambert, K. 和 Osborne, M. Java基础:AP计算机科学考试的必备要点。第三版。2006年。汤姆森课程技术出版社。


4
你遇到的主要问题是你第一次学习编程选择了Java,我认为Java不是最好的入门语言。
我猜你在处理一个工作项目,是这样吗?这种压力可能会让事情变得更糟。根据项目的复杂程度,你可能会成功,但在没有背景知识的情况下学习Java需要10周时间是另一个问题。

+1. 在我所学过的所有编程语言中,我认为Java是第二难的(仅次于C++)。我想大约花了3年时间才真正掌握它。 - finnw
1
在某种程度上,你是对的,学习编程确实很难。但好处是它迫使你学习(大多数)最佳实践规则。当我开始使用像CF和PHP这样的脚本语言时,我不得不从头重新学习编程。如果你有意成为一名严肃的程序员,我会强烈建议选择Java这条“艰难”的道路,而不是脚本语言。如果你只是进行轻量级编码,那么当然可以坚持使用脚本。 - Organiccat

3

2

关于成为编程专家需要多少时间,有不同的观点。我不打算再增加这个话题的讨论。

如果你没有任何编程经验,我建议先学习C语言,然后再转向Java。

以下网站非常适合学习Java。

http://www.javapassion.com

随着Oracle收购Sun公司,网站Sang Shin的主持人不得不离开工作,并将其转换为一个付费服务http://www.jpassion.com/portal/。更多信息,请参见:http://www.jpassion.com/coursefaq.html#What_are_the_reasons_behind_the_decision。 - Christy John

2
这取决于你想要付出多少努力,但是是可能的。你将会遇到的问题是,你必须学会编程和学习Java两件不同的事情。编程是知道如何阅读和编写逻辑,而Java是你用它来编写逻辑的语言。如果你有数学或物理背景,这会更容易,因为你已经接触到这种思考方式。
如果你没有初学者Java的书籍,我建议你去买一本。
我也会推荐你阅读Code这本书(如果可能的话,我会在几天内尝试通过它,甚至在周末完成)。实际上,在10周的时间里,我会首先阅读这本书,因为它将成为你所需的Java编程基础。
在10周的时间里,你基本上需要每晚都学习才能在上课时掌握它。我最好的建议是,在上课时多做笔记,不要期望理解所有内容。大部分内容可能会一开始就超出你的理解范围并且你会忘记。没关系。在课程结束后,回顾笔记等直到理解为止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接