我正在寻找最酷的事情,你可以在几行简单的代码。我相信你可以用Haskell用15行写一个Mandelbrot集,但是很难理解。

我的目标是启发学生编程很酷。

我们知道编程很酷,因为你可以创造任何你想象到的东西——它是最终的创意出口。我想激励这些初学者,让他们尽可能多地克服早期学习的困难。

Now, my reasons are selfish. I'm teaching an Intro to Computing course to a group of 60 half-engineering, half business majors; all freshmen. They are the students who came from underprivileged High schools. From my past experience, the group is generally split as follows: a few rock-stars, some who try very hard and kind of get it, the few who try very hard and barely get it, and the few who don't care. I want to reach as many of these groups as effectively as I can. Here's an example of how I'd use a computer program to teach:

Here's an example of what I'm looking for: a 1-line VBS script to get your computer to talk to you: CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it") I could use this to demonstrate order of operations. I'd show the code, let them play with it, then explain that There's a lot going on in that line, but the computer can make sense of it, because it knows the rules. Then I'd show them something like this: 4(5*5) / 10 + 9(.25 + .75) And you can see that first I need to do is (5*5). Then I can multiply for 4. And now I've created the Object. Dividing by 10 is the same as calling Speak - I can't Speak before I have an object, and I can't divide before I have 100. Then on the other side I first create an InputBox with some instructions for how to display it. When I hit enter on the input box it evaluates or "returns" whatever I entered. (Hint: 'oooooo' makes a funny sound) So when I say Speak, the right side is what to Speak. And I get that from the InputBox. So when you do several things on a line, like: x = 14 + y; You need to be aware of the order of things. First we add 14 and y. Then we put the result (what it evaluates to, or returns) into x.

这就是我的目标,有一堆很酷的例子来演示,并在他们玩得开心的时候教他们。我在我室友身上尝试了这个例子,虽然我可能不会把它作为第一课,但她喜欢它,并学到了一些东西。

一些很酷的数学程序,可以做出漂亮的图形或容易理解的形状,这是很好的想法,我将研究这些。这里有一些复杂的actionscript示例,但这有点太高级了,我不能教flash。你还有什么其他的想法吗?


当前回答

您可以使用用AutoIt编写的脚本,它模糊了使用传统应用程序和编程之间的界限。

例如,一个脚本,打开记事本,让他们自己的电脑侮辱他们,并通过一个消息框,然后不留任何痕迹的行动:

Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("You smell of human.")
Sleep(10000)
MsgBox(0, "Humans smell bad", "Yuck!")
WinClose("Untitled - Notepad")
WinWaitActive("Notepad", "Do you want to save")
Send("!n")

其他回答

在您的地址栏(在您的浏览器中)输入此代码并按Enter。然后你就可以编辑网页的所有内容了!

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

这是我知道的最酷的“一句俏皮话”=)

使用Tcl,你有一个简单的文本编辑器,其中有一个保存按钮,大约12行代码(但没有打开,那将需要另外8行代码)。它适用于所有标准平台:

pack [frame .toolbar] -side top -fill x
pack [button .save -text save -command save] -in .toolbar -side left
pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side right -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true
proc save {} {
    set filename [tk_getSaveFile]
    if {$filename ne ""} {
        set f [open $filename w]
        puts $f [.text get 1.0 end-1c]
        close $f
    }
}

我知道我们的目标是10行,所以如果你想要的是10行或更少,一个简单的文本编辑器没有加载或保存只有两行。这还不算太寒酸。

pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side left -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true

在您选择的平台上执行带有“wish文件名”的上述代码块中的任何一个。Wish安装在大多数*nix和mac上,但你必须手动安装windows。

更进一步,两行脚本也可以用python编写,尽管需要8行,但仍然低于10行的目标:

from Tkinter import *
root=Tk()
text = Text(wrap="word")
sb = Scrollbar(orient="vertical", command=text.yview)
text.configure(yscrollcommand=sb.set)
sb.pack(side="right", fill="y")
text.pack(side="left", fill="both", expand=True)
root.mainloop()

这是迄今为止我见过的最酷的东西……如果分解一下,其实很简单:

http://blogs.msdn.com/lukeh/archive/2007/04/03/a-ray-tracer-in-c-3-0.aspx

当我第一次写这个的时候。

10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30

它把人们都惊呆了!电脑记住了他们的名字!

编辑:只是补充一下。如果你能说服一个新程序员,这是他们能做的最酷的事情,他们就会成为优秀的程序员。现在,您几乎可以用一行代码来运行别人编写的库。就我个人而言,这样做绝对不会让我感到满足,也看不到教它有什么好处。

如果你能负担得起硬件,使用Arduino板+处理会产生一些非常酷的东西,尽管对于那些可能对编程不感兴趣的人来说可能有点高级。