最初的问题

我目前正在教我弟弟编程。他完全是个初学者,但很聪明。(他真的很想学)。我注意到我们的一些会议陷入了一些小细节,我觉得我不是很有条理。(但这篇文章的答案有很大帮助。)

我怎样才能更好地有效地教他?是否有一个逻辑顺序,我可以用一个概念一个概念地运行?是否有什么复杂的问题我应该在以后再讨论?

我们正在使用的语言是Python,但任何语言的建议都是受欢迎的。


如何提供帮助

如果你有好的答案,请在你的答案中添加以下内容:

初级练习和项目想法 初学者教学资源 屏幕视频/博客文章/免费电子书 印刷适合初学者的书籍

请用链接描述资源,以便我可以看一看。我想让每个人都知道,我确实在使用其中的一些想法。你提交的内容将在这篇文章中汇总。


初学者在线教学资源:

A Gentle Introduction to Programming Using Python How to Think Like a Computer Scientist Alice: a 3d program for beginners Scratch (A system to develop programming skills) How To Design Programs Structure and Interpretation of Computer Programs Learn To Program Robert Read's How To Be a Programmer Microsoft XNA Spawning the Next Generation of Hackers COMP1917 Higher Computing lectures by Richard Buckland (requires iTunes) Dive into Python Python Wikibook Project Euler - sample problems (mostly mathematical) pygame - an easy python library for creating games Invent Your Own Computer Games With Python Foundations of Programming for a next step beyond basics. Squeak by Example Snake Wrangling For Kids (It's not just for kids!)


推荐印刷书籍的教学初学者

加速c++ Python编程绝对初学者 Charles Petzold编写的代码 Python编程:计算机科学介绍第二版


当前回答

关键的是,这个人需要有一些他们想要解决的问题。如果你没有一个你想要编写的程序(并且是一些合理且定义明确的东西,而不是“我想要编写下一个Quake!”),那么你就无法学习编程,因为你没有任何激励你的东西。我的意思是,你可以读一本书,粗略地了解一种语言的语法和语义,但除非你有一个你想要编写的程序,否则你永远不会迎难而上。

如果这种推动力存在,那么其他一切都只是次要细节。

其他回答

一开始我遇到了很多困难,但最简单的便是简单的机制。概念,我立刻接受了。但错过了结尾处的大括号?在一个非平凡的程序中,这很容易做到,但通常很难调试。

所以,我的建议是:不要低估基础(比如良好的打字)。这听起来像是补救,甚至有些愚蠢,但当我在学习过程的早期偶然发现输入代码结构的完整“骨架”然后填充它的简单技术时,它为我省去了很多痛苦。

对于Python中的"if"语句,可以从以下语句开始:

if  :

在C / c++ / c# / Java:

if () 
{

}

在Pascal / Delphi:

If () Then
Begin

End

然后,在开始和结束标记之间输入。一旦这成为一个牢固的习惯,你就会不假思索地去做,更多的大脑就会被释放出来做有趣的事情。我承认,这不是一个非常浮夸的建议,但我个人认为它有很多好处!

编辑:[Justin Standard] 谢谢你的贡献,Wing。与你说的相关,我试图帮助我哥哥记住python作用域的语法的一件事是,每当有冒号时,他需要缩进下一行,而每当他认为应该缩进时,最好有一个冒号结束前一行。

如果你想教授编程的基础知识,而不是特定语言,有一个叫Scratch的应用程序是在麻省理工学院创建的。它旨在帮助人们培养编程技能。当用户创建Scratch项目时,他们学会了创建条件、循环等。还有一个scratch项目社区,可以从那里下载项目——这样你就可以探索其他人的程序,看看他们是如何构建的。

Robert Read写了一个很有用的指南,如何成为一个程序员,它涵盖了广泛的编程问题,初学者会发现很有帮助。

首先,我认为已经有了一些很好的答案,所以我会尽量不欺骗太多。

让他们写大量的代码,让他们不停地问问题,让他们的大脑保持流动。 我想说的是,不要陷入真正详细的信息,直到他们遇到这些信息的含义,或者他们问。

我认为我要确保的最重要的一点是他们理解框架的核心概念。我知道你正在使用Python(我对此一无所知),但例如,使用ASP。NET让人们理解模型背后的页面/代码可能是一个真正的挑战,但关键是他们理解它。举个例子,我最近在论坛上遇到了一个关于“我应该把我的数据访问代码放在哪里,在“cs”文件中还是“aspx”文件中”的问题。

所以我想说,在大多数情况下,让他们指引方向,在他们需要的地方支持他们,并提出更多的问题来保持兴趣。只要确保他们有基本的基础,不要让他们在会走之前就跑。

好运!

我认为,因为你想学习编程而学习编程,永远比不上因为你想做某事而学习编程。如果你能找到一些你弟弟感兴趣的东西,因为他想让它起作用,你可以把谷歌留给他,他会做的。他会让你在他身边检查他是否走对了路。

I think one of the biggest problems with teaching programming in the abstract is that it's not got a real-world context that the learner can get emotionally invested in. Programming is hard, and there has to be some real payoff to make it worth the effort of doing it. In my case, I'd done computer science at uni, learned Pascal and COBOL there, and learned BASIC at home before that, but I never really got anywhere with it until I became a self-employed web designer back in the 90s and my clients needed functionality on their web sites, and were willing to pay about 10x more for functionality than for design. Putting food on the table is a hell of a motivator!

所以我学习了Perl,然后是ASP/VBScript,然后是JavaScript,然后是Flash/ActionScript,然后是PHP——所有这些都是为了让我想要的东西发生。