- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
前几天我的一个 friend 问我,我在编程时是否只是在看数字列表,或者它是如何工作的。我试图解释说,它通常更像是数学公式,加上了奇怪的英语单词,而且通常大部分都是可读的。但这是一个非常模糊的解释,对于非程序员来说并没有真正解释太多。
但这让我开始思考什么可以成为一个很好的例子。不是因为我想教她编程或其他任何东西,而只是让她了解程序代码“长什么样”。
这让我想知道什么可以作为一个很好的例子。事实证明,这出奇地困难。
我的第一个想法显然是一个简单的“Hello World”程序。但它确实没有显示任何有用的东西。它并没有真正展示我们如何使用函数、变量或控制流结构,如 if
或 while
制作一个真正做某事的程序。这没有逻辑。该程序对任何事情都没有反应。
所以也许像计算素数这样的事情会是一个更好的例子。但是话又说回来,这可能过于理论化和不切实际......(这有什么好处?它与编写“真实”程序有什么关系?)而且,其中没有重要的控制流逻辑。这只是一个直接的数学序列。
还有,应该使用哪种语言?
理想情况下,我认为它不必是一种非常“干净”的语言。相反,它可能应该使结构清晰。如果这样做,那么一定量的噪音和杂波可能没问题。出于这个原因,也许像 C++ 这样的东西实际上比 Python 更好。显式的大括号和类型说明符是明显的“钩子(Hook)”,可以帮助解释程序的结构,或者强调它不仅仅是几乎可以用英语读出的简单语句。
但是对于 C++,我们也会遇到一些非常奇怪的语法。为什么是 std::cout << x
用来打印 x?为什么不是“正常”函数调用语法?和 printf
也好不到哪里去,因为它具有神秘的格式字符串,而且缺乏可扩展性(我想通过使用 char*
来使程序复杂化吗?或者我是否使用 std::string
并满足于调用看似不必要的 s.c_str()
到得到一个可以用 printf
打印的字符串?
或许更高级的语言毕竟会更好。但哪一个?为什么?
我知道这里有很多关于使用哪种语言/示例程序来教授编程的类似问题。但我认为这里的要求是不同的。在教授编程时,我们希望简单比什么都重要。我们想避免任何尚未教过的东西。我们希望确保学生能够理解屏幕上的所有内容。
我对简单本身不感兴趣。而是给“局外人”一个“程序是什么样子”的想法。而且程序并不简单。但他们确实对疯狂表现出一定的结构和方法。哪种语言/程序最能突出这一点?
编辑
感谢您到目前为止的所有建议。你们中的一些人对它的看法与我预期的有所不同。
也许一个例子是合适的。我不会驾驶飞机,但我对驾驶舱的外观以及飞行员在飞行时“做什么”有了基本的了解。
而且我不是受过训练的木匠,但是当我看到锯子或锤子时,我就知道。
但是,例如,当您在电影中看到与编程有关的任何内容时,它通常只是充满垃圾的屏幕(如矩阵中的绿色文本)。这看起来不像是一个正常人实际上可以做到的。里面没有什么可识别的。不是程序员的人只是认为这是黑魔法。
我不想教她飞行或编程软件。
但我想给她一个基本的引用框架。只是一个想法“啊,这就是你正在使用的。所以它不仅仅是屏幕上的随机符号和数字”。即使只是展示一个简单的if
-statement 与 Matrix 风格的随机符号和数字相比将是一个启示。
你们中的一些人建议解释算法或使用伪代码,但这是我想要避免的。我想要一些简单地展示实际代码是什么样子的东西,就像你不必成为一个木匠来查看锯子并了解它是什么以及它是如何工作的基本概念一样。
当我还是个 child 的时候,我们曾经去意大利度假。在下降的路上,飞行员让我进入飞机的驾驶舱。当然,我没有学会如何驾驶飞机。但我确实窥探了飞行员的世界。我知道他们是如何让飞机起飞的,飞行员实际上是做什么的。
这就是我想要做的。我的 friend 对学习编程没有兴趣,我不想强迫她理解源代码。但她很好奇我使用什么样的工具或实体。它是在屏幕上滚动的矩阵式符号吗?纯数学?散文形式的英语?
我想传达的只是对“我工作时是什么样子”的高度理解。
最佳答案
为了直接回答您的问题——编程“是什么样子”,我会向他们展示一个大型应用程序的打印件。玩具应用程序或像haskell 中的qsort 这样可爱的东西确实给出了错误的想法。
关于programming-languages - 向非程序员展示什么是编程 "looks like"的好例子是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1936919/
我认为这个问题说明了一切,但我有一个使用 .net 安装工具包的应用程序(在 vs.2005 中),并且用户问我是否可以将它安装在 c:\Program Files\ProgramName 而不是C:
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我是 Stephen Wolfram 的忠实粉丝,但他绝对是一个不怕自吹自擂的人。在许多引用资料中,他将 Mathematica 颂扬为一种不同的符号编程范式。我不是 Mathematica 用户。
我现在正在使用 Squeak4.1 学习 SmallTalk。我使用 Squeak by Example 作为教程,在这里我反驳了一个 delema,“Morphic 是由...开发的,用于自编程语言
Wikipedia有话要说: Total functional programming (also known as strong functional programming, to be cont
在阅读 Paul Graham's Essays 时, 我对 Lisp 越来越好奇了。 在this article ,他提到最强大的功能之一是您可以编写可以编写其他程序的程序。 我无法在他的网站或其他
我知道 functional programming 有几个定义。 .我认为这是一个模糊的类别。我个人的定义是接近' referential transparency '。 这个问题不是“函数式编程的
我注意到许多顶尖大学都开设了类(class),在这些类(class)中,学生将学习与计算机图形学相关的 CS 专业科目。可悲的是,这是我的大学没有提供的东西,我真的很想在 future 几年的某个时候
我正在安装100%托管代码的.NET(C#)应用程序。安装程序(InnoSetup)始终希望将应用程序安装到Vista x64中的“Program Files(x86)”文件夹中,我认为这是因为安装程
假设在 C 中,我们有以下结构: struct MyData { char key1[20]; long key2; ... /* some data */ }; 本质上,除
这个问题已经有答案了: When should I use ampersand with scanf() (3 个回答) 已关闭 6 年前。 所以我在python3中有这个“程序”,它添加了3个字符串
我编写了一个包含 self 更新程序的 Java 应用程序。自更新程序从 Web 服务器加载新的程序版本并替换应用程序文件。如果安装了应用程序,这将完美地工作,例如在用户主目录中,如果它安装在 C:\
注意:标记为社区维基。 是否有一个很好的分析为什么可视化编程语言仍然没有起飞?这些天我们仍在 80x25 文本窗口中“线性”编码;而我们表示的概念(数据结构、算法)似乎可以更直观地表示出来。 最佳答案
我一直在阅读Code Complete 2 .由于我不是以英语为母语的人,因此我需要一些时间才能理解某些陈述。我希望你描述作者在他的书中所做的这两个陈述之间的区别: You should progra
我在为我的 tomcat 设置 CLASSPATH 时遇到了这个问题。我需要在 tomcat 的 CLASSPATH 中引用我的 2 个安装。其中一个位于 C:\Program Files\Postg
这个问题已经有答案了: How can I lock a file using java (if possible) (8 个回答) 已关闭 6 年前。 我有 2-3 个程序可以修改文件,但如果有一个
我 checkout Reading stdout from one program in another program却没有找到我要找的答案 我是 Linux 的新手,我正在使用 Python 中
我有一个程序可以打印出通过或失败。我想检测卡在那里的程序并回显“超时” 我写了这样一个脚本: #!/bin/bash echo -n 'test' && timeout 5 ./mytest | gr
我非常清楚函数式编程技术和命令式编程技术之间的区别。但是现在有一种普遍的趋势是谈论“函数式语言”,这确实让我感到困惑。 当然,像 Haskell 这样的一些语言比 C 等其他语言更欢迎函数式编程。但即
请求:每个进程需要计算自己的组到所有点的距离。我的代码如下: #include stdio.h #include stdlib.h #include math.h #include string.h
我是一名优秀的程序员,十分优秀!