有一天,我的一个朋友问我在编程时是否只是看数字列表,或者它是如何工作的。我试图解释说,它通常更像是数学公式,加上了奇怪的英语单词,并且通常都可读。但这是一个非常模糊的解释,对非程序员来说并没有真正解释太多。
但这让我思考了什么将是一个很好的例子。不是因为我想教她编程或其他方面的知识,而只是想让她了解一下程序代码的“外观”。
这让我想知道什么将成为一个很好的例子。事实证明,这非常困难。
我首先想到的显然是一个简单的“ Hello World”程序。但这确实没有显示任何有用的信息。它并没有真正表明我们如何使用函数,变量或控制流程结构,例如if
或while
使其真正执行某项程序。没有逻辑。该程序没有任何反应。
因此,也许像计算质数之类的例子将是一个更好的例子。但是话又说回来,那可能太过理论化和不切实际了……(那有什么好处?与编写“真实”程序有什么关系?)而且,里面也没有重要的控制流程逻辑。这只是一连串的数学运算。
而且,应该使用哪种语言?
理想情况下,我认为它不必是一种非常“干净”的语言。但是,它可能应该使结构清晰。如果这样做,则一定程度的噪音和杂波可能会很好。出于这个原因,也许C ++之类的东西实际上可能比Python更好的例子。明显的花括号和类型说明符是明显的“钩子”,以帮助解释程序的结构,或强调它不仅是几乎可以读成英语的简单语句。
但是,对于C ++,我们还陷入了一些彻头彻尾的怪异语法。为什么std::cout << x
用来打印x?为什么不使用“常规”函数调用语法?并printf
没有什么好用的,它具有奥秘的格式字符串,并且缺乏可扩展性(我是否想通过使用char*
字符串来使程序复杂化?或者我使用std::string
并解决调用似乎不必要的操作s.c_str()
来获取可以打印的字符串)printf
?
毕竟,更高层次的语言可能会更好。但是哪一个呢?又为什么呢
我知道这里有很多类似的问题,涉及使用哪种语言/示例程序来教授编程。但是我认为这里的要求是不同的。在教授编程时,我们最需要的是简单性。我们希望避免任何尚未讲授的内容。我们希望确保学生能够理解屏幕上的所有内容。
我对简单性本身不感兴趣。而是给“局外人”一个“程序看起来像什么”的想法。程序并不简单。但是它们通常确实表现出某种疯狂的结构和方法。哪种语言/程序最能突出这一点?
编辑
谢谢您到目前为止的所有建议。你们中的某些人对我的角度有所不同。
也许有个例子。我不能驾驶飞机,但是我对驾驶舱的外观以及飞行员飞行时的行为有基本的了解。
而且我不是一个训练有素的木匠,但是当我看到锯子或锤子时,我会知道。
但是,例如,当您看到与电影中的编程有关的内容时,通常只是充满垃圾的屏幕(如“矩阵”中的绿色文本)。它看起来并不像正常人真正能做的那样。没有任何可识别的东西。不是程序员的人只是认为这是黑魔法。
我不想教她飞行或编程软件。但我想给她一个基本的参考框架。只是一个想法,“啊,这就是您要使用的东西。因此,不仅仅是屏幕上的随机符号和数字”。if
与矩阵样式的随机符号和数字相比,即使只是显示简单的语句也将是一个启示。
有人建议解释一种算法或使用伪代码,但这是我要避免的。我想要的东西可以简单地显示实际代码的外观,就像您不必成为木匠去看锯子并了解其含义和原理一样。
小时候,我们曾经在意大利度假。下来的路上,飞行员让我进入了飞机的驾驶舱。当然,我没有学会如何驾驶飞机。但是我确实看到了飞行员的世界。我了解了它们如何使飞机起飞,飞行员实际上做了什么。
那真的是我要做的。我的朋友对学习编程没有兴趣,我也不想强迫她理解源代码。但是她很好奇我使用哪种工具或实体。是矩阵样式的符号在屏幕上滚动吗?纯数学?散文形式的英语?
我感兴趣的是传达对“我工作时的样子”的高度理解。