Programming languages 向非程序员演示什么是编程的好例子;看起来像“什么?”;?

Programming languages 向非程序员演示什么是编程的好例子;看起来像“什么?”;?,programming-languages,Programming Languages,我的一个朋友前几天问我,当我编程时,我是否只是在看数字列表,或者它是如何工作的。我试图解释,它通常更像是数学公式,加上奇怪的英语单词,而且通常可读性很强。但这是一个非常模糊的解释,对一个非程序员来说并没有太多解释 但这让我想到了什么可以成为一个好榜样。不是因为我想教她编程什么的,只是想让她知道程序代码“看起来像什么” 这让我想知道什么才是一个好例子。事实证明,这非常困难 我的第一个想法显然是一个简单的“Hello World”程序。但它确实没有显示出任何有用的东西。它并没有真正显示我们如何使用函

我的一个朋友前几天问我,当我编程时,我是否只是在看数字列表,或者它是如何工作的。我试图解释,它通常更像是数学公式,加上奇怪的英语单词,而且通常可读性很强。但这是一个非常模糊的解释,对一个非程序员来说并没有太多解释

但这让我想到了什么可以成为一个好榜样。不是因为我想教她编程什么的,只是想让她知道程序代码“看起来像什么”

这让我想知道什么才是一个好例子。事实证明,这非常困难

我的第一个想法显然是一个简单的“Hello World”程序。但它确实没有显示出任何有用的东西。它并没有真正显示我们如何使用函数、变量或控制流结构,如
if
while
来制作一个实际执行某些操作的程序。没有逻辑可言。程序对任何事情都没有反应

因此,也许像计算素数这样的东西会是一个更好的例子。但话说回来,这可能过于理论化和不切实际。。。(这有什么好处?它与编写“真正的”程序有什么关系?)再说一遍,它没有重要的控制流逻辑。这只是一个简单的数学顺序

还有,应该使用哪种语言

理想情况下,我不认为它必须是一种非常“干净”的语言。但相反,它可能应该让结构变得清晰。如果它这样做了,那么一定量的噪音和杂乱就可以了。或许C++之类的东西实际上是比Python更好的例子。显式大括号和类型说明符是明显的“钩子”,有助于解释程序的结构,或者强调它不仅仅是简单的语句,几乎可以用英语读出


但是,C++也会出现一些非常怪异的语法。为什么是std::cout我说给他看泡泡排序

这是一个简单易懂的技巧,转换成一种正式的语言

REPEAT 360 [FD 1 RT 1] -- draws a circle, etc.

这就是我们的工作。用一种严格、正式的语言表达我们的想法,甚至机器都能理解。有点类似于组织设计的设计程序。

当我5岁的女儿问我这个问题时,我让她“开发”一个小箭头“机器人”程序,它会让他进入黑板的左上角,使用流程图一样的纸片来表示移动、转弯和条件。我认为这也适用于成年人

不过,我并不认为这是我发明的答案


关于你的编辑:恐怕程序员对其他人关于编程的想法更不了解人们认为编程就像绿色视频卡一样,就像他们认为间谍们都装备了詹姆斯·邦德的高科技玩具一样。任何领域的专业人士在观看有关其工作的电影时通常都会感到恼火。因为电影制作人不知道!另一方面,我们知道如何在电影中恰当地描述节目吗?;-)

我会用伪代码编写一些东西,演示如何使用计算机解决日常问题。也许要确定从哪家商店或类似的商店购买特定的杂货清单更便宜。

BASIC

10 PRINT "Sara is the best"
20 GOTO 10
更新:我12岁的时候,我的表弟(他14岁)带来了7.0并安装在我的电脑上。
他从头开始编写了一个tic-tac-toe游戏(在BGI模式下,为那些知道的人编写)。
我一步一步地观察一个程序如何发展,直到它成为一个完整的应用程序。
在此之前,我只知道如何在BASIC中打印字符串:-B


你也可以做类似的事情。结对编程。好吧,实际上你的朋友是一个观察者,但她会有一个想法;)

快速编写代码,读取股票报价并将其写入excel电子表格。这很容易用几分钟就能做到,而且会很快给非技术人员留下深刻印象,因为他们看到了它的实用价值。

我要解释的是,编程给出了详细的指令,因此计算机可以完成复杂的任务

如何煮两杯咖啡?

  • 把水壶加满水
  • 开水

  • 杯中咖啡

  • 泼水
  • 加糖
  • 加牛奶

  • 再做3到6次


  • 我通常的选择是从数据库中检索一组客户记录。在VisualStudio中使用C#和LINQ,构建一个网页并将“Northwind”数据库客户转储到网格中最多可能需要10分钟。很好的一点是,“客户列表”是几乎任何人都能理解的东西。

    < P>为什么不考虑一种不存在的语言(或者,如果你这么认为)并使用它?我想,根据你想达到的目标,我会考虑这个人熟悉的任务的例子,但被切成一个伪代码的例子。 在向非程序员解释事情时,我通常认为“烹饪”或“食谱”的想法非常适合

    我让患者想象他们有一个相当复杂的食谱,例如咖喱饭。然后我建议他们试着把它写下来给那些完全不知道自己在做什么的人,这样他们就可以做饭了

    其中涉及几个非常明确的阶段:

    • 收集工作所需的材料和工具
    • 准备配料。这很复杂。例如
      • 买3个小红辣椒
      • 对于你的每一个红辣椒,把它切成1厘米见方的小块
      • 把红辣椒块放进碗里待会儿用
    • 与此不同的是,调用prepare rice函数并在后台异步工作,同时继续使用c
      printf("Do you like cake?");
      string answer = getLine();
      if(answer == "yes") {
          printf("Yeay! I like cake too!");
      } else if(answer == "no") {
          printf("Filthy cake hating pig!");
      }
      
      REPEAT 360 [FD 1 RT 1] -- draws a circle, etc.
      
      function dealWithPerson(person){
          if(ILike(person)){
              getCookie().giveTo(person);
          }
          else{
              person.tell("You shall receive no cookies!");
          }
      }
      
      dealWithPerson(Person.fromName("Nick"));
      dealWithPerson(Person.fromName("John"));
      
      IF today's date is the 1st of may then
        print to screen "Happy Birthday"
      ELSE
        print to screen "It's not your birthday yet"
      
      {
         wait for 6/8;
         play F (5), sustain it for 1/4 and a half;
         play E flat (5), sustain it for 1/8;
         play D flat (5), sustain it for 1/8 and a half;
         play F (4), sustain it for 1/16;
         // ...
      }
      
      # Guessing Game
      import random
      
      print("Guess a number between 1 and 100: ")
      
      target = random.randint(1, 100)
      guess = 0
      guess_count = 1
      
      while guess != target:
          guess_count += 1
          guess = int(input())
      
          if guess == target:
              print("Correct!")
          if guess < target:
              print("Higher...")
          if guess > target:
              print("Lower...")
      
      print("Congratulations! You guessed the number in " + str(guess_count) + " guesses!")
      
      find /