在<10行简单代码中你能做的最酷的事情是什么?帮助我激励初学者!

Tom*_*ter 406 language-agnostic introduction

我正在寻找你能用几行简单代码做的最酷的事情.我敢肯定你可以在15行中用Haskell编写一个Mandelbrot集,但很难遵循.

我的目标是激发学生编程很酷.

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

现在,我的理由是自私的.我正在向一个由60个半工程,半个商业专业组成的团队教授计算机简介课程; 所有新生.他们是来自贫困高中的学生.根据我以往的经验,该集团一般分为如下:一些摇滚明星,一些谁拼命和那种得到它,谁非常努力和一些几乎没有得到它,和几个谁不关心.我想尽可能多地接触这些群体.以下是我如何使用计算机程序进行教学的示例:

以下是我正在寻找的一个示例:一个单行VBS脚本让您的计算机与您通话:

CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")
Run Code Online (Sandbox Code Playgroud)

我可以用它来演示操作顺序.我会展示代码,让它们玩它,然后解释说那条线上有很多东西,但计算机可以理解它,因为它知道规则.然后我会告诉他们这样的事情:

4(5*5) / 10 + 9(.25 + .75)
Run Code Online (Sandbox Code Playgroud)

你可以看到我首先需要做的是(5*5).然后我可以乘以4.现在我已经创建了对象.除以10就像调用Speak一样 - 在我有一个对象之前我不能说话,而且在我有100之前我不能分开.然后在另一边我首先创建一个InputBox,其中包含一些如何显示它的说明.当我在输入框中按Enter键时,它会评估或"返回"我输入的内容.(提示:'oooooo'发出有趣的声音)所以当我说Speak时,右边是说话的.我从InputBox中得到了它.

所以当你在一条线上做几件事时,比如:

x = 14 + y;
Run Code Online (Sandbox Code Playgroud)

你需要了解事物的顺序.首先我们添加14和y.然后我们将结果(它评估或返回的内容)放入x.

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

一些很酷的mathematica程序可以制作出易于理解的漂亮图形或形状,这将是很好的想法,我将研究这些.这里有一些复杂的动作脚本示例,但有点太高级,我不能教flash.你有什么其他想法?

Esp*_*sen 339

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

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0
Run Code Online (Sandbox Code Playgroud)

这是我所知道的最酷的"单线"=)

  • "单线"是如此用词不当.那真的是3行.如果你想要的话,任何代码都可以是一行. (95认同)
  • 我非常喜欢它,我为你投了999999999次!! http://img707.imageshack.us/img707/4843/jshack.png (51认同)
  • 这看起来很整洁,但有一种方法可以在页面修改后获取页面吗? (5认同)
  • 这在Firefox中不再适用,因为javascript:已被禁用.丢人现眼. (4认同)
  • @DisgruntledGoat,`javascript:`和`void 0`是样板文件:相当于`int main(){`和`return 0; 在C.中,另外两行只是不同的浏览器API,它们做同样的事情:第一个是IE API,第二个是NetScape API.HTML5使用`contentEditable`,所以除非你关心支持Firefox 1.5或其他东西,否则实际代码相当于:`document.body.contentEditable ='true';` (2认同)

Rob*_*Day 201

当我第一次写这篇文章时.

10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30
Run Code Online (Sandbox Code Playgroud)

它让人们大吃一惊!电脑记得他们的名字!

编辑:只是添加到此.如果你能说服新程序员这是他们能做的最酷的事情,那么他们将成为优秀的程序员.现在,您可以使用一行代码执行几乎任何操作,以运行其他人编写的库.我个人对此并不满意,并且在教学方面看不到什么好处.

  • 你忘了35 PRINT CHR $(7) (17认同)
  • 使用以下内容会更好:40 GOTO 30 (15认同)
  • 应该是goto 10肯定所以其他人可以输入他们的名字... (13认同)
  • +1用于显示用户名,人们总是喜欢看到自己的名字显示.@saua,这怎么不是一个无限的打印循环?它可以追溯到第30行,而不是第20行. (8认同)
  • 这也是我学习编程的方式.它是最好的答案imo.+1接受这个 (6认同)
  • @saua:你是对的,除了它说goto 30.无论如何,我想我们得到了这个主意. (2认同)

mar*_*kus 180

PHP - Sierpinski垫片又名Triforce

好的,这是15行代码,但结果真棒!这就是那种让我在孩提时感到惊慌失措的东西.这是来自PHP手册:

$x = 200;
$y = 200;

$gd = imagecreatetruecolor($x, $y);

$corners[0] = array('x' => 100, 'y' =>  10);
$corners[1] = array('x' =>   0, 'y' => 190);
$corners[2] = array('x' => 200, 'y' => 190);

$red = imagecolorallocate($gd, 255, 0, 0); 

for ($i = 0; $i < 100000; $i++) {
  imagesetpixel($gd, round($x),round($y), $red);
  $a = rand(0, 2);
  $x = ($x + $corners[$a]['x']) / 2;
  $y = ($y + $corners[$a]['y']) / 2;
}

header('Content-Type: image/png');
imagepng($gd);
Run Code Online (Sandbox Code Playgroud)

sierpinski垫片

  • 据记载,这是一个Sierpinski垫片. (25认同)
  • 据记载,这不是Sierpinski垫片......实际上,它是Triforce.http://en.wikipedia.org/wiki/The_Legend_of_Zelda (18认同)
  • 这很棒,但我认为它应该在课程的中间部分,因为它建立在许多概念上,比如循环和数组. (6认同)
  • @Masi:一般的想法是有三个固定点作为三角形的角,以及一个你不断更新的"当前"点.要进行移动,请随意选择其中一个角,并将当前点移动到该角落的一半.当前颜色.然后以相同的方式再次移动,然后再移动几千次,模式将出现.然后尝试使用不同数量的角点,或者更改当前点向角落跳跃的分数,以查看它如何影响模式. (4认同)
  • 这段代码对我来说似乎很奇怪,因为我通常会看到这是通过递归完成的(也只需很少的代码行).事实上,分形是计算机科学课程中递归的一个很好的介绍.但在我看来,这样的代码效率很低,由于其随机方法而绘制并重新绘制了大量像素. (2认同)

Bob*_*ger 105

微软拥有Small Basic,一个用于"孩子"的IDE.

pic = Flickr.GetRandomPicture("beach")
Desktop.SetWallpaper(pic)
Run Code Online (Sandbox Code Playgroud)

它专门用于展示编程的酷炫程度.

  • 我不认为孩子是白痴.如果你让他们对编程的可能性感到兴奋,他们会发现如何自己做更高级的事情.如果不出意外,年轻的睾丸激素感染的男孩会在你知道发生了什么之前尝试学习最神秘,最黑暗的东西. (88认同)
  • 这实际上很糟糕,因为这些库调用似乎很神奇.你将它们设置为VB脚本小子.我担心他们永远不会潜入那个"黑魔法"区域,并留在"安全"的管道区域....哦,看看如何在一条线上制作互联网浏览器!MSIEControl(.. blabla无论......).show() (80认同)
  • 这不是儿童的CS学位,这是一个编程玩具.无论通过什么网关让孩子们看到编程的有趣方面都很棒,它不需要ASM. (30认同)
  • 知道我试过教的孩子,在他们尝试pic = Flickr.GetRandomPicture("胸部")之前大约需要十秒钟 (29认同)
  • @hansen j,这不公平,每个人都必须从某个地方开始. (28认同)
  • 这看起来像一个很棒的资源. (2认同)
  • 我认识的一些最优秀的程序员最初只是在Internet Explorer中使用"查看源代码".现在可以用最好的组件和C++来完成. (2认同)
  • :: puke ::教孩子VB很残酷.除非你想让他们陷入困境,认为在Word中编写宏使他们成为"程序员"或者是"DBA"意味着他们可以在"Access"中创建数据库.如果你想给他们一个强大的基础开始使用Python.如果您希望他们玩得开心,请在Flash或网站上制作动画. (2认同)

Mar*_*eck 83

我倾向于认为人们对他们可能与他们的生活有关或与他们的生活相关的东西印象深刻.我会尝试将我的10行代码基于他们知道和理解的东西.以Twitter及其API为例.为什么不使用这个API来构建一个很酷的东西.以下10行代码将从Twitter返回"公共时间轴"并将其显示在控制台应用程序中...

using (var xmlr = XmlReader.Create("http://twitter.com/statuses/public_timeline.rss"))
    {
        SyndicationFeed
            .Load(xmlr)
            .GetRss20Formatter()
            .Feed
            .Items        
            .ToList()
            .ForEach( x => Console.WriteLine(x.Title.Text));
    }
Run Code Online (Sandbox Code Playgroud)

我的代码示例可能不适合您的学生.它是用C#编写的,使用的是.NET 3.5.因此,如果您要教他们PHP,Java或C++,这将没有用.但是,我的观点是,通过将您的10行代码与"酷,有趣,与学生相关"的内容相关联,您的样本也会变得酷炫,有趣和相关.

祝好运!

[是的,我知道我错过了几行使用语句和Main方法,但我猜测10行不需要字面上的10行]


use*_*918 80

这是一个Python telnet服务器,它会询问用户名并向他们打招呼.这看起来很酷,因为您通过网络从另一台计算机与您的程序进行通信.

from socket import *
s=socket(AF_INET, SOCK_STREAM)
s.bind(("", 3333))
s.listen(5)
while 1:
   (c, a) = s.accept()
   c.send("What is your name? ")
   name = c.recv(100)
   c.send("Hello "+name)
   c.close()
Run Code Online (Sandbox Code Playgroud)


Bob*_* Mc 78

我的孩子们用一个快速的VB脚本来操作Microsoft Agent角色得到了很好的回应.对于那些不熟悉MS Agent的人来说,它是一系列可以通过COM接口操作的动画屏幕字符.您可以在Microsoft Agent下载页面下载代码和字符.

以下几行将使Merlin角色出现在屏幕上,飞来飞去,敲击屏幕引起你的注意,并打个招呼.

agentName = "Merlin"
agentPath = "c:\windows\msagent\chars\" & agentName & ".acs"
Set agent = CreateObject("Agent.Control.2")

agent.Connected = TRUE
agent.Characters.Load agentName, agentPath
Set character = agent.Characters.Character(agentName)

character.Show

character.MoveTo 500, 400
character.Play "GetAttention"
character.Speak "Hello, how are you?"
Wscript.Sleep 15000
character.Stop
character.Play "Hide"
Run Code Online (Sandbox Code Playgroud)

您可以使用许多其他命令.校验http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx了解更多信息.

编辑2011-09-02 我最近发现Microsoft Agent本身并未在Windows 7上安装.但是它在这里单独提供.我没有对此进行测试,因此无法验证它是否正常运行.

  • 这样你就可以一直看到回形针*:D (32认同)
  • @Bob BASIC是一门初学者语言.VB不是**BASIC.VB是MS为满足当时需求而创造的瑞士军刀.如今,有更好的(更专业的)工具取而代之.VB不是一个糟糕的语言,它只是有很多超重的包袱.如果我给出一个完全无偏见的理由,为什么**不能**使用它,那将是因为MS正在慢慢放弃对VB的支持.这是一种垂死的语言.只需等待Office脚本完成JavaScript(计划在不久的将来),然后VB的下降将是一个肯定的事情. (8认同)
  • @Evan - 感谢公平的答案,而不是一些宗教的熨平板.做得很好.没有听说过Office Javascript移动.将调查. (3认同)

Bar*_*own 69

我认为现在成为一名计算机教育工作者很难.我是.我们面临着越来越陡峭的艰苦战斗.我们的学生是非常复杂的用户,要给他们留下深刻的印象需要很多.他们有很多工具可供他们使用,可以做出惊人的事情.

10行代码中的简单计算器?为什么?我有一台TI-86.

一个将特殊效果应用于图像的脚本?这就是Photoshop的用途.Photoshop会吹掉10行中你能做的任何东西.

翻录CD并将文件转换为MP3怎么样?呃,我已经从BitTorrent获得了5万首歌曲.它们已经是MP3格式了.我在iPhone上播放它们.谁买CD呢?

要向精明的用户介绍编程,你将不得不找到以下内容:

a)适用于他们觉得有趣和酷的东西,b)做他们不能做的事情.

假设您的学生已经可以访问最昂贵的软件.他们中的许多人都拥有完整版的Adobe CS5.5(零售价:2,600美元;实际价格:免费),并且可以轻松获得通常会破坏部门预算的任何应用程序.

但绝大多数人都不知道这些"计算机东西"究竟是如何运作的.

他们是一群非常有创意的人:他们喜欢创造东西.他们只是想做或做一些他们的朋友不能做的事情.他们想要吹嘘一些东西.

以下是我发现与学生产生共鸣的一些事情:

  • HTML和CSS.从那些他们了解MySpace主题如何工作并可以自定义它们.
  • 混搭.他们都看过他们,但不知道如何创造它们.查看Yahoo! 管道.有许多可教授的时刻,例如RSS,XML,文本过滤,映射和可视化.完成的mashup小部件可以嵌入到网页中.
  • 艺术品.看看无环境艺术.递归和随机化是制作精美图片的关键.
  • 评书.借助像Alice这样易于使用的3D编程环境,只需拖放即可轻松创建高质量,引人入胜的故事.

这些都不涉及传统意义上的任何编程.但他们确实利用了强大的库.我认为它们是一种不同的编程方式.

  • +1我喜欢你如何描述那些拥有来自bittorrent和Adobe CS4的50,000首歌曲的孩子,这当然是现实 (11认同)
  • 如果您要自定义网站,为什么不使用Greasemonkey? (3认同)

Mik*_*vey 63

我发现一个很受欢迎的(在GWBASIC中)是:

10 input "What is your name ";N$
20 i = int(rnd * 2)
30 if i = 0 print "Hello ";N$;". You are a <fill in insult number 1>"
40 if i = 1 print "Hello ";N$;". You are a <fill in insult number 2>"
Run Code Online (Sandbox Code Playgroud)

我发现初学者有一些需要修复的概念.

  • 电脑不读你的想法.
  • 计算机一次只做一件事,即使他们这么快就做,他们似乎一次完成所有这一切.
  • 计算机只是愚蠢的机器,只做他们被告知的事情.
  • 计算机只识别某些东西,这些就像构建块.
  • 一个关键概念是变量是包含值且其名称与该值不同的值.
  • 编辑程序的时间与运行时间之间的区别.

祝你班上好运.我相信你会做得很好.

PS我相信你明白,除了材料和技巧,你也在教导一种态度,这同样重要.

  • @dreamlax:当然,你是对的,但不要分开.我们谈论的是向孩子们介绍计算机并给他们提供基本的心理构建模块.并行性可以在以后发生. (5认同)
  • @foljs:天哪!真?:-) dreamlax也提出了同样的观点.问题是,当你与那些对计算机一无所知的人一起工作时,它会把它们视为一切都发生在一起,所以我们必须克服它,而不是分裂头发.所以一个真正基本的概念是"首先它做A,然后它做B,依此类推." (2认同)

Thi*_*hib 62

这个C代码可能是混淆的,但我发现它非常强大

#include <unistd.h>
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<L?--_
%6:6:7)+"World! \n",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Run Code Online (Sandbox Code Playgroud)

这是结果......只有3行...一种分形Hello World......

WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   !dWW!ddddllllrrrrrrrooooooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           drrWdlllrrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wlddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
olddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           droWdlllrrrrrrrr
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   WdWW!ddddllllrrrrrrrooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Run Code Online (Sandbox Code Playgroud)

  • 太好了!太糟糕了,那里没有任何实际上说"Hello World!"的地方. (5认同)

Joh*_*ley 45

如何显示您可以使用任何Web浏览器并在地址栏中输入JavaScript并获取要执行的代码?

编辑:转到包含大量图像的页面,并在地址栏中尝试:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)
Run Code Online (Sandbox Code Playgroud)

  • 好吧不是一个非常令人兴奋的例子,但你可以做javascript:alert("Hello World"); (7认同)
  • 好的,但你应该给出一个具体的例子,你知道.. (2认同)

Vin*_*ent 37

您可以创建一个选择随机数的应用程序.你必须猜测它.如果你错了,它说:更高或更低.如果你猜对了,那就是一个好消息.

这对学生来说很酷.

没有正确错误检查的简单Python版本:

import random

while input('Want to play higher/lower? ').lower().startswith('y'):
    n = random.randint(1, 100)
    g = int(input('Guess: '))

    while g != n:
        print('  %ser!' % (g > n and 'low' or 'high'))
        g = int(input('Guess: '))

    print('  Correct! Congratulations!')
Run Code Online (Sandbox Code Playgroud)

Erik建议计算机应该猜测数字.这也可以在10行代码内完成(尽管现在缺少正确的错误检查更严重:范围之外的有效数字会导致无限循环):

while input('Want to let the pc play higher/lower? ').lower().startswith('y'):
    n = int(input('Give a number between 1 and 100: '))
    lo, hi, guess, tries = 1, 100, 50, 1

    while guess != n:
        tries += 1
        lo, hi = (guess + 1, hi) if guess < n else (lo, guess - 1)
        guess = (lo + hi) // 2

    print('Computer guessed number in %d tries' % tries)
Run Code Online (Sandbox Code Playgroud)

  • 现在让这两个程序通过套接字相互播放. (15认同)
  • 二元独奏!:) (5认同)
  • 二分搜索!:) (4认同)
  • 更有趣的是让用户选择随机数,然后让计算机猜测它. (4认同)
  • 如果计算机没有直接给出数字会更好.您应该告诉用户"选择1到100之间的数字".然后输出"我猜50",并要求输入("更高","更低"或"正确")并改进您的猜测. (3认同)

Rya*_*son 26

回到高中的计算机课上,我和几个朋友教授课程如何用Delphi编程.该课程主要侧重于使用Pascal进行编程,因此Delphi是一个很好的下一步.我们演示了Delphi的事件驱动特性及其RAD功能.在课程结束时,我们向班级展示了一个示例应用程序,并要求他们重现它.该应用程序询问" 你喝醉了吗? ",带有两个按钮....我想你知道接下来会发生什么......没有按钮改变鼠标上的位置,几乎不可能点击.

学生和老师得到了很好的启发.

该程序只需要几行用户编写的代码和一个简单的公式来计算按钮的移动位置.我不认为其他任何学生都知道这一点,但有些学生很接近.

  • 不仅有娱乐性,而且我的同事曾经在某些软件中做到这一点,只有消息框上的"OK"按钮.它是一个内部使用的应用程序,所以它并不令人沮丧.它只在蓝色的月亮中做过一次.当然他们打电话给他,他会说如果他相信的话,他需要看到它.所以他会徘徊,当然,当他在那里时不会发生...... (7认同)
  • ++很有趣的伎俩. (2认同)
  • 那将是一个教人们通过标签和空间导航的有趣时间. (2认同)

hod*_*smr 23

当我第一次想出bash forkbomb时,我觉得它真的很甜.如此简单,但却能够做到:

:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)

  • 对于linux新手来说:不要跑,否则你将失去所有的工作. (12认同)
  • 这是一个很好的解释:http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/ (7认同)

Gha*_*nPL 22

这是作弊,甚至不是很简单,但我曾经使用Allegro图形库在20行C++中写了一篇文章.对于什么是一条线没有真正的标准,但它是在很久以前,它纯粹是为了好玩.它甚至有粗糙的声音效果.

这是它的样子:

20行http://img227.imageshack.us/img227/8770/20linesxx0.png

这是代码(应该编译):

bool inside(int x, int y, int x2, int y2) { return (x>x2&&x<x2+20&&y>y2&&y<y2+10); }
int main() {
  BITMAP* buffer;
  float px,shotx,shoty,monstars[8],first,rnd,pressed,points = 0, maxp = 0;
  unsigned char midi[5] = {0xC0,127,0x90,25,0x54}, plgfx[] = {0,0,0,10,3,10,3,5,6,5,6,10,8,12,10,10,10,5,13,5,13,10,16,10,16,0,13,0,13,2,3,2,3,0,0,0}, mongfx[] = {0,0, 10,5, 20,0, 17,8, 15,6, 10,16, 5,6, 3,8, 0,0};
  allegro_init(), set_color_depth(32), set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0), install_timer(), install_keyboard(),  install_mouse(), buffer = create_bitmap(320,240),srand(time(NULL)),install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT,""),clear_to_color(buffer,makecol32(100,100,255));
    while ((pressed=(!key[KEY_Z]&&pressed)?0:pressed)?1:1&&(((shoty=key[KEY_Z]&&shoty<0&&pressed==0?(pressed=1?200:200):first==0?-1:shoty)==200?shotx=px+9:0)==9999?1:1) && 1+(px += key[KEY_LEFT]?-0.1:0 + key[KEY_RIGHT]?0.1:0) && 1+int(px=(px<0?0:(px>228?228:px))) && !key[KEY_ESC]) {
    rectfill(buffer,0,0,244,240,makecol32(0,0,0));
    for(int i=0;i<8;i++) if (inside(shotx,shoty,i*32,monstars[i])) midi_out(midi,5);
        for (int i=0; i<8; monstars[i] += first++>8?(monstars[i]==-100?0:0.02):-100, points = monstars[i]>240?points-1:points, monstars[i]=monstars[i]>240?-100:monstars[i], points = inside(shotx,shoty,i*32,monstars[i])?points+1:points, (monstars[i] = inside(shotx,shoty,i*32,monstars[i])?shoty=-1?-100:-100:monstars[i]), maxp = maxp>points?maxp:points, i++) for (int j=1; j<9; j++) line(buffer,i*32+mongfx[j*2 - 2],monstars[i]+mongfx[j*2-1],i*32+mongfx[j*2],monstars[i]+mongfx[j*2+1],makecol32(255,0,0));
    if (int(first)%2000 == 0 && int(rnd=float(rand()%8))) monstars[int(rnd)] = monstars[int(rnd)]==-100?-20:monstars[int(rnd)]; // randomowe pojawianie potworkow
    if (shoty>0) rectfill(buffer,shotx,shoty-=0.1,shotx+2,shoty+2,makecol32(0,255,255)); // rysowanie strzalu
    for (int i=1; i<18; i++) line(buffer,px+plgfx[i*2 - 2],200-plgfx[i*2-1],px+plgfx[i*2],200-plgfx[i*2+1],makecol32(255,255,0));
    textprintf_ex(buffer,font,250,10,makecol32(255,255,255),makecol32(100,100,255),"$: %i   ",int(points)*10);
    textprintf_ex(buffer,font,250,20,makecol32(255,255,255),makecol32(100,100,255),"$$ %i   ",int(maxp)*10);
    blit(buffer, screen, 0, 0, 0, 0, 320,240);
  }
} END_OF_MAIN()
Run Code Online (Sandbox Code Playgroud)

  • 这应该怎么教别人什么?在一个无关的说明,冷!哈!爱它! (5认同)

Jon*_*ley 21

在这个时代,JavaScript是展示如何使用一些非常基本的工具(如记事本)进行编程的绝佳方式.

对于想要让他们的朋友惊叹的人来说,jQuery效果是一个很好的起点!

在这一个中,只需单击页面的空白区域即可.

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(document.body).click(function () {
  if ($("#pic").is(":hidden")) {
    $("#pic").slideDown("slow");
  } else {
    $("#pic").slideUp();
  }
});
</script>
</head>
<body><img id="pic" src="http://www.smidgy.com/smidgy/images/2007/07/26/lol_cat_icanhascheezburger.jpg"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


Wel*_*bog 20

你可能会考虑的一件事就是Robocode,其中大量的编码被抽象出来,你基本上只是告诉机器人该做什么.一个简单的10行功能可以使机器人做很多事情,并且具有非常直观和易于理解的结果.

也许Robocode本身不适合这项任务,但这种方式是将书面代码与计算机上的视觉动作联系起来的好方法,而且当你需要提供示例时,需要注意这一点很有趣.

public class MyFirstJuniorRobot extends JuniorRobot {
 public void run() {
  setColors(green, black, blue);
  // Seesaw forever
  while (true) {
   ahead(100); // Move ahead 100
   turnGunRight(360); // Spin gun around
   back(100); // Move back 100
   turnGunRight(360); // Spin gun around
  }
 }
 public void onScannedRobot() {
  turnGunTo(scannedAngle);
  fire(1);
 }
 public void onHitByBullet() {
  turnAheadLeft(100, 90 - hitByBulletBearing);
 }
}
Run Code Online (Sandbox Code Playgroud)

  • 不知道robocode,但是在使用Logo之后我开始编码了.能够使用前进,后退,左,右等绘制房屋.它让您进入执行大任务的简单指令的思维模式. (6认同)

Wes*_*ley 18

所以有一天,我决定我已经受够了.我学习钢琴.看到像埃尔顿约翰这样的人掌握了对键盘的掌握,这让我确信这就是我想做的事情.

实际上学习钢琴是一个巨大的失望.即使在完成了八年级的钢琴课之后,我对钢琴演奏的心理形象与我最初的欣赏活动的想法如此不同仍然没有留下深刻的印象.

然而,我非常喜欢的只是我三年级的音乐理论基础.我了解了音乐的构建.我终于能够从执行书面音乐的世界走向写自己的音乐.随后,我开始玩我想玩的东西.


不要试图让新程序员,特别是年轻程序员目瞪口呆."不到十行简单代码"的整个概念似乎引出了"给我一些聪明的东西" 的情绪.

你可以向新程序员展示一些聪明的东西.然后,您可以教同一个程序员如何复制这种"性能".但这并不是让他们迷上编程的原因.教他们基本知识,让他们综合自己聪明的十行代码.

我将向新程序员展示以下Python代码:

input = open("input.txt", "r")
output = open("output.txt", "w")

for line in input:
    edited_line = line
    edited_line = edited_line.replace("EDTA", "ethylenediaminetetraacetic acid")
    edited_line = edited_line.replace("ATP", "adenosine triphosphate")
    output.write(edited_line)
Run Code Online (Sandbox Code Playgroud)

我意识到,我并不需要分配lineedited_line.但是,这只是为了保持清晰,并表明我没有编辑原始文档.

在不到十行中,我对一份文件进行了检验.当然,也一定要向新程序员展示所有可用的字符串方法.更重要的是,我展示了三个我能做的基本有趣的事情:变量赋值,循环,文件IO和标准库的使用.

我想你会同意这段代码并不令人眼花缭乱.事实上,这有点无聊.不 - 实际上,这很无聊.但是向新程序员展示代码并查看该程序员是否不能将该脚本的每个部分重新用于本周内更有趣的事情,如果不是那一天.当然,这对你来说是令人反感的(可能使用这个脚本来制作一个简单的HTML解析器),但其他一切只需要时间和经验.


Jef*_*ume 17

像大多数其他评论者一样,我开始编写代码来解决数学问题(或者为我设计的非常糟糕的游戏创建图形 - 像印第安纳琼斯和僵尸这样的东西).

真正开始我的(数学和编程)是从基于文本的,选择你自己的冒险风格游戏......到更多基于图形的游戏.我开始着色方格纸和绘制像素,直到我进入几何...并发现如何使用方程来绘制曲线和线条,方框等.

我的观点是,我可以真正得到像处理(http://processing.org/)这样的东西,其中典型的程序看起来像这样:

void setup() 
{
  size(200, 200); 
  noStroke();
  rectMode(CENTER);
}

void draw() 
{   
  background(51); 
  fill(255, 204);
  rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);
  fill(255, 204);
  int inverseX = width-mouseX;
  int inverseY = height-mouseY;
  rect(inverseX, height/2, (inverseY/2)+10, (inverseY/2)+10);
}
Run Code Online (Sandbox Code Playgroud)

对我而言,这是未来的"标志".

有一个简单的"hello world"示例可以快速地让某人绘制和更改代码,看到事情如何破碎以及可以创建什么奇怪的"事故"......一直到更高级的交互和分形创建......


mee*_*eep 15

您可以使用用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")
Run Code Online (Sandbox Code Playgroud)


Jos*_*ren 13

我记得当我第一次开始编码循环时总是给我留下深刻印象.您可以编写5到10行代码(或更少)和数百(或多个指定)行打印出来.(我在PHP和Java中首先学到的).

for( int i = 0; i < 200; i++ )
{
   System.out.println( i );
}
Run Code Online (Sandbox Code Playgroud)


joe*_*dle 13

我认为学生入门的好地方可能是Greasemonkey.在userscripts.org上有成千上万的示例脚本,非常好的阅读材料,其中一些非常小.Greasemonkey脚本会影响网页,学生们已经熟悉了这些网页,如果不操作的话.Greasemonkey本身提供了一种在测试时编辑和启用/禁用脚本的简便方法.

例如,这是"Google Two Columns"脚本:

result2 = '<table width="100%" align="center" cellpadding="10" style="font-size:12px">';
gEntry = document.evaluate("//li[@class='g'] | //div[@class='g'] | //li[@class='g w0'] | //li[@class='g s w0']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < gEntry.snapshotLength; i++) {
  if (i==0) { var sDiv = gEntry.snapshotItem(i).parentNode.parentNode; }
  if(i%2 == 0) { result2 += '<tr><td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td>'; }
  if(i%2 == 1) { result2 += '<td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td></tr>'; }
}
sDiv.innerHTML = result2+'</table>';

if (document.getElementById('mbEnd') !== null) { document.getElementById('mbEnd').style.display = 'none'; }
Run Code Online (Sandbox Code Playgroud)


Gre*_*reg 10

这是一个非常基本的基于文​​本的c#程序,它模拟老虎机的旋转动作.它不包括不同的获胜或现金支付的可能性,但这对学生来说可能是一个很好的练习.

对不起,它超过10行.

string[] symbols = new[] { "#", "?", "~" }; // The symbols on the reel
Random rand = new Random();

do
{
    string a="",b="",c="";

    for( int i = 0; i < 20; i++ )
    {
        Thread.Sleep( 50 + 25 * i ); // slow down more the longer the loop runs

        if( i < 10 )
            a = symbols[rand.Next( 0, symbols.Length )];

        if( i < 15 )
            b = symbols[rand.Next( 0, symbols.Length )];

        c = symbols[rand.Next( 0, symbols.Length )];

        Console.Clear();
        Console.WriteLine( "Spin: " + a + b + c );
    }

    if( a == b && b == c )
        Console.WriteLine( "You win. Press enter to play again or type \"exit\" to exit" );
    else
        Console.WriteLine( "You lose. Press enter to play again or type \"exit\" to exit" );
}
while( Console.ReadLine() != "exit" );
Run Code Online (Sandbox Code Playgroud)


ste*_*ell 9

小书签怎么样?它将向他们展示如何操纵他们每天使用的东西(互联网),而无需任何开发工具.


Bry*_*ley 9

使用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
    }
}
Run Code Online (Sandbox Code Playgroud)

我意识到目标是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
Run Code Online (Sandbox Code Playgroud)

在您选择的平台上使用"wish filename " 执行上述任一代码块.希望附带大多数*nix和Mac,但你必须手动安装它的Windows.

更进一步,这两行脚本也可以用python编写,虽然需要八行,仍然在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()
Run Code Online (Sandbox Code Playgroud)


And*_*dge 8

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


Joh*_*nFx 8

我最近在一篇文章"我写过的最短,最有用的程序"中写到了这一点.

简介:我在19​​96年写了一个3行VB6应用程序,我仍然每天使用它.一旦exe被删除在"发送到"文件夹中.它允许您右键单击资源管理器中的文件,并将该文件的完整路径发送到剪贴板.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  
Run Code Online (Sandbox Code Playgroud)


Rob*_* S. 7

有趣的是你提到了Mandelbrot集合,因为用GW-BASIC创建分形是我在高中时期(1993年左右)引起我对编程的热爱.在我们开始学习分形之前,我们编写了无聊的标准偏差应用程序,我仍然计划进入新闻业.

但是,一旦我看到那个漫长的,难以编写的BASIC程序产生"分形地形",我就被迷住了,我再也没有回头.它改变了我对数学,科学,计算机和我学习方式的看法.

我希望你能找到对学生有同样影响的课程.


Mun*_*PhD 6

作为你提出的任何想法的补充,我说你应该告诉他们如何做一些基本的数学.把它作为

"现在你可能会认为这很简单或很复杂......但你有没有被困在数学作业上?"

然后从某人的书中拿出一个例子.大多数数学问题可以在10行中解决,因为它可能是一个简单的问题.然后向他们展示如何花费10分钟来弄清楚他们可能会得到的A值.这是一个漫长的过程,但你可能会抓住一些想要花很少时间做功课的人.

这主要源于我希望我曾想过用化学编写一个软件程序......所有这些测验和作业都是100多个......

编辑:回应彼得的评论:

说出类似于3a 2的衍生物.所以你可以只显示一个他们可以从命令行调用的简单函数:

public int SimpleDerivative(int r, int exponent){
    r = r * exponent
    exponent =- 1
    return (String "{0}a^{1}" where {0} = r, {1} = exponent)
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*isF 6

我确定它会变成超过10行的代码,但你是否考虑过基于表单的应用程序,按下按钮可以改变背景的颜色或改变文本的大小?这将向他们展示交互式程序的工作原理.它还会向他们表明,作为程序员,他们可以完全控制计算机(程序)的功能.

希望它会引导他们为他们可以改变的其他事情提出建议,然后再提出他们可能想做的其他事情.


Nei*_*l G 5

许多人发现赌博令人兴奋和激励.你可以自己建立一个二十一点经销商类,暴露一个界面.然后,让孩子们建立一个二十一点的玩家类.

您可以为每个学生的解决方案构建一个图表,显示资金与时间的关系,以激励任务.

该系统的优点在于您可以在数周内生成增量解决方案:

天真的解决方案是始终低于某个水平.这可能是5行代码.

更好的解决方案是查看经销商所暴露的内容并调整您的打击率.

更好的解决方案是考虑到您拥有的实际卡片 - 而不仅仅是其值的总和.

最终的解决方案可能是通过多手掌握所处理的卡片.(经销商对象可以在玩家对象上调用DealerIsShuffling(int numberofdecks),告诉玩家有多少套牌.)

另一个可能的方向是让游戏具有竞争力 - 而不是通过经销商赢钱,而是与其他人的解决方案对抗.当然,你必须轮换谁先开始打击以使事情公平.


ibr*_*him 5

此bash代码会锁定您的计算机.它被称为叉炸弹.

:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)

警告:不要运行它!

更多信息:http://en.wikipedia.org/wiki/Fork_bomb