如何获得更多编程经验


9

我将要学习三年级的计算机科学,并且我已经读过Head First Java,Head First C,并且我目前正在阅读C ++,这是我最喜欢的语言,因为它对有经验的人具有良好的教学风格。我打算学习用QT制作软件,学习Objective-C(用于iPhone)或阅读Effective C ++。

我如何获得编程经验?我是否有参​​加开源项目的技能,还是需要学习php,mySQL或任何其他语言?我总的来说喜欢编程和计算机科学,尽管有些课程可能非常困难(理论计算机科学)。我也计划成为c ++的专家,但这不会很快发生。


1
您是否编写了其他人使用的程序?如果没有,写一个被爱的家庭成员需要的东西,并使其对他或她有用(可能需要多次迭代)。最后一部分是真正的教训所在。

您如何到达卡内基音乐厅?
jfrankcarr 2012年

1
我会听起来像是个混蛋,但是…… 经验 -积极参与活动或活动,从而导致知识或技能的积累。因此,开始积极参与编程。
史蒂文·埃弗斯

1
顺便说一句,StackOverflow和Programmers有什么区别?结束问题的模式是否意味着要使程序员成为另一个StackOverflow?那有什么意义-只需将两者合并即可。我们过去常常能够在程序员上提出一些深奥的问题,而在StackOverflow中是无法做到的。
שינתיאאבישגנת

Answers:


11

ABC-总是在编码。真的就是这么简单。我最喜欢的一种了解语言的方法是为该语言本身的语言子集编写一个玩具解释器,或者如果这不是您的事,那么也许是光线追踪器或其他足够大的东西,以至于不平凡但规模不大,无法在一个月左右的时间内完成。重点是要进行一些工作,这些工作将迫使您查看标准库和该语言提供的数据抽象工具。有时该项目是成功的,有时却不是成功,但在项目结束时,我对一种语言了足够的了解,以了解其优势和劣势以及我是否想继续学习。如果事实证明我喜欢这种语言,那么每次阅读有趣的论文或博客文章时,我都会尝试启动一个项目,在其中实施本文或博客文章中提出的一些想法。这样,我就总是不断地练习和学习新的想法,因此这成为一个良性循环。

过去对我来说运作良好的一些项目:某些语言的子集的解释器,光线跟踪器,PEG解析器生成器,HTTP标头解析器,简单的回显客户端/服务器,用于自动从队列发布推文的Twitter机器人,亚马逊产品刮板寻找交易。


+1您提到了一些非常有趣的项目,谢谢。
安东尼

8

正如十年自学编程中很好解释的那样,您应该执行以下步骤:

  • 对编程感兴趣,并做一些有趣的事情。确保它保持足够的乐趣,以便您愿意投入十年/ 10,000小时的时间。

  • 程序。最好的学习方法就是边做边学。从技术上讲,“在一定范围内,个人的最高绩效不会根据扩展的经验而自动获得,但是,即使是经验丰富的个人,也可以通过有针对性的努力来提高绩效水平。 。” (p。366)和“最有效的学习需要对特定个体具有适当难度级别的明确定义的任务,信息反馈以及重复和纠正错误的机会。” (第20-21页)《实践中的认知:日常生活中的思维,数学和文化》是对此观点的有趣参考。

  • 与其他程序员交谈;阅读其他程序。这比任何书籍或培训课程都重要。

  • 如果需要,可以在大学学习四年(或者在研究生院学习四年)。这将使您能够访问一些需要证书的工作,并且可以使您对该领域有更深入的了解,但是如果您不喜欢学校,则可以(有一定的奉献精神)独自或在工作中获得类似的经验。 。无论如何,仅靠书籍学习是不够的。《新黑客词典》的作者埃里克·雷蒙德(Eric Raymond)说:“计算机科学教育不能像学习画笔和颜料那样使任何人成为专家程序员。” 我曾经雇用过的最好的程序员之一只有高中学位。他开发了许多出色的软件,拥有自己的新闻组,并拥有足够的股票期权来购买自己的夜总会。

  • 与其他程序员一起处理项目。在某些项目中成为最好的程序员;在其他人身上最糟糕。当您处于最佳状态时,您将测试自己领导项目的能力,并用自己的远见激发他人的能力。在最坏的情况下,您将学习大师的所作所为,并了解他们不喜欢做的事情(因为他们让您为他们做)。

  • 在其他程序员之后从事项目工作。了解别人编写的程序。看看当原始程序员不在时需要理解和修复它的过程。考虑如何设计您的程序,使那些在您之后维护它们的人更容易。

  • 学习至少六种编程语言。包括一种支持类抽象的语言(如Java或C ++),一种支持功能抽象的语言(如Lisp或ML),一种支持语法抽象的语言(如Lisp),一种支持声明性规范的语言(如Prolog或C ++模板),一种支持协程(例如Icon或Scheme),和一种支持并行性(例如Sisal)。

  • 请记住,“计算机科学”中有一个“计算机”。知道您的计算机执行一条指令,从内存中提取一个单词(有或没有缓存未命中),从磁盘读取连续的单词以及寻找磁盘上的新位置需要多长时间。(答案在这里。)

  • 参与语言标准化工作。它可以是ANSI C ++委员会,也可以确定您的本地编码样式是否具有2或4个空格缩进级别。无论哪种方式,您都可以了解其他人在某种语言中的喜好,对他们的感受有多深,甚至可能对他们为何如此感觉有所了解。

  • 具有良好的意识,可以尽快开始语言标准化工作。


3

我建议您通过有效地编写功能程序来训练自己。一旦您认为基础知识,就可以进行更大的项目。学习用于软件开发的qt框架并继续练习。学习编程的最好方法是实际编写代码。

我想说阅读也起着重要的作用,您可以寻找一个托管开源项目的开发人员团队(在github或其他类似网站上寻找一个),因为他们可以为您提供宝贵的团队开发经验。


2

有时候像sourceforge这样的地方起初有些令人生畏。找到事情要做的一种非常不错的方法是,通过项目的问题跟踪器进行拖网,找到喜欢修复声音的错误/问题。

在一些小规模的github项目中,这变得更加容易实现。您可以有效地掌握代码的方向和目的,而不必盲目地遍历代码。


1

书籍中的样本或大学的作业是了解编程原理的一个很好的起点,它们为您将来的项目提供了可能性。

从事实际项目

但是,如果没有真正的项目经验,您往往会忘记学到的东西。

问题是展示自己能力的机会

另外,您在真实的项目中看到需求可能是多么复杂,并且您难以解决问题。这些问题是展示您能做到的机会。您可以看到需要改进的薄弱环节。


-1

我需要学习php,mySQL或任何其他语言吗?

是的,先生,请考虑使用万维网的语言。HTML5,CSS3和JavaScript。

原因如下:

  1. 他们学习速度很快,并且实施起来越来越丰富。

  2. 他们不再只是编写Web,还包括OS,服务器和数据库。

  3. 最重要的*

    jQuery的创建者John Resig 现在将它们用于重新定义Computer Science 101

不要射击信使,只需检查指向可汗学校的链接即可。

c / c ++ / c#设计模式在那里转移到JS。

希望能有所帮助。


+1-太不对了,以至于人们对此表示不满。信息有效。链接是可信的。消息来源是jQuery Genius John Resig-使用JavaScript开始编程101课程,它可以正常工作。退房可汗学院。支持提高教育的潜力;至少。谢谢。
杰克·斯通
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.