最初的问题

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

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

我们正在使用的语言是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编程:计算机科学介绍第二版


当前回答

我认为一旦他掌握了基本知识(变量,循环等),你应该试着帮助他找到他感兴趣的具体内容,并帮助他学习实现这一目标的必要条件。我知道如果我对某件事感兴趣,我会更倾向于去做,也更有动力去做。同时,确保让他在一些更棘手的问题上挣扎,没有什么比你自己解决问题的那一刻更令人满足的了。

其他回答

起初,我对不同的程序是如何工作的很感兴趣,所以我从查看源代码开始。然后,当我开始了解程序的工作原理时,我会改变某些参数,看看会发生什么。所以基本上我在学会写字之前就学会了阅读。巧合的是,大多数人都是这样学英语的。

所以如果我想教别人如何编程,我会给他们一个小程序,让他们试着阅读和理解它是如何工作的,让他们只是玩玩源代码。

只有这样,我才会给他们布置“任务”去完成。

现在,如果他们有一个特别的原因想要学习如何编程,那么从他们想要完成的事情开始肯定是一个好主意。例如,如果他们想精通blender这样的应用程序,从Alice开始肯定是个好主意。

我绝对推荐使用具有垃圾收集功能的语言,如D、Perl或一些解释性语言,如javascript。在Perl 6接近完成之前远离Perl可能是一个好主意,因为它解决了阅读和理解Perl的一些困难。

对我来说,在IDE中探索和实验帮助我学习了Java和Visual Basic,但我学习编程的基础是艰苦的:Perl 5。那时候还没有一个免费的IDE,所以这意味着在记事本中输入代码,保存它,然后运行perl解释器。

我想说ide使学习编程基础更容易。先试试控制结构和变量。用Java说:

int a = 5;

for (int i = 0; i < a; i++) {
     System.out.println("i is now " + i);
}

基本上,简单地学习控制结构和变量就可以让初学者开始编写有趣的东西。

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

我推荐Logo(又名乌龟)来了解基本概念。它提供了一个具有即时图形反馈的良好沙盒,您可以演示循环、变量、函数、条件等等。这个页面提供了一个很好的教程。

在Logo之后,移动到Python或Ruby。我推荐Python,因为它基于ABC,而ABC是为了教授编程而发明的。

在教授编程时,我必须赞同EHaskins关于先简单项目再复杂项目的建议。最好的学习方法是从一个明确的结果和一个可衡量的里程碑开始。它使课程集中,允许学生建立技能,然后在这些技能的基础上继续发展,并给学生一些可以向朋友炫耀的东西。不要低估工作成果的力量。

Theoretically, you can stick with Python, as Python can do almost anything. It's a good vehicle to teach object-oriented programming and (most) algorithms. You can run Python in interactive mode like a command line to get a feel for how it works, or run whole scripts at once. You can run your scripts interpreted on the fly, or compile them into binaries. There are thousands of modules to extend the functionality. You can make a graphical calculator like the one bundled with Windows, or you can make an IRC client, or anything else.

XKCD更好地描述了Python的强大功能:

You can move to C# or Java after that, though they don't offer much that Python doesn't already have. The benefit of these is that they use C-style syntax, which many (dare I say most?) languages use. You don't need to worry about memory management yet, but you can get used to having a bit more freedom and less handholding from the language interpreter. Python enforces whitespace and indenting, which is nice most of the time but not always. C# and Java let you manage your own whitespace while remaining strongly-typed.

From there, the standard is C or C++. The freedom in these languages is almost existential. You are now in charge of your own memory management. There is no garbage collection to help you. This is where you teach the really advanced algorithms (like mergesort and quicksort). This is where you learn why "segmentation fault" is a curse word. This is where you download the source code of the Linux kernel and gaze into the Abyss. Start by writing a circular buffer and a stack for string manipulation. Then work your way up.

这个线程是非常有用的我作为一个初学者(>100行代码)程序员。

基于我所经历的,一旦我完成了“Hello World”,并移动到变量和“if/else”语句,我得到了太多的语法;不知道该拿他们怎么办。

因此,通过一个有趣的简单项目,我可能会重新燃起我的兴趣。这里有很多项目建议。

我能问个问题吗?

先学习像Autohotkey这样的脚本语言会更好吗?

编辑:[Justin Standard] 我认为学习一些基于宏的东西,比如Autohotkey,只会有最低限度的帮助。试着先学习一门“真正的”编程语言。最简单的入门(根据大多数人的说法)是python和ruby。我更喜欢python,但两者都很简单。 还有一个完整的stackoverflow帖子回答了从哪种语言开始的问题。