Programming is about automation in a wide variety of domains. Developing itself is one of those. As a side-effect, progress in automated coding may make people less willing to learn computer programming. This could become an issue, if the skill of computational problem solving is not only for the immediate economic benefit, but an important part of our knowledge about the world. We suggest that weakened incentives can be countered by lowering the entry barrier. We plan to shorten learning time by reducing the accidental complexity of the programming language and its runtime system. We describe a session plan that introduces programming and computing fundamentals for novices, assuming only basic mathematical background. This requires a non-mainstream, functional and concatenative language. This language, CON-CAT, is a by-product of research in category theory. It provides direct access to fundamental ideas like recursion and advanced ones like Gödel-encoding in an entertaining puzzle-like manner.
翻译:编程本质上是跨领域自动化过程,而编程本身的发展也是其中之一。作为附带效应,自动化编码技术的进步可能削弱人们学习编程的意愿。若计算问题解决能力不仅关乎即时经济效益,更是人类认知世界的重要组成部分,这种趋势便会成为问题。我们建议通过降低入门门槛来抵消激励弱化的现象,具体方案是减少编程语言及其运行时系统的偶发复杂性以缩短学习时间。本文为编程初学者设计了仅需基础数学背景的课程方案,需采用非主流、函数式且串联型(concatenative)语言——作为范畴论研究副产品的CON-CAT语言。该语言能以富有趣味的谜题形式,让学习者直接接触递归等基础概念乃至哥德尔编码等高级思想。