编程类课程的问题

高校编程教育常从C语言开始,但语法派教学导致学生关注语言细节而非编程思维。文章批判了以谭浩强教学体系为代表的语法重点教学,指出变量与常量混合讲解、过分强调语法细节等问题,并提出教学应聚焦于数据抽象、行为抽象等核心概念,而非特定语言的语法。同时,文中提到Python教学可能重蹈覆辙,呼吁超越语言本身,理解编程的本质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文已经纳入编程语言应该学些什么,作为引子。


我国绝大多数高校,是从C语言教学开始的。从数据抽象、行为抽象的角度看,C语言并不是合适的入门级编程语言(后面再解释)。现行教学体系中,编程类课程有一个存在很久的问题:语法派的教学。教学方式上,很多人不是在讲授如何编程,而是在讲一门语言的语法。
以谭浩强先生为代表的教学体系,就是语法派的教学。他们常常从最开始就错了:变量与常量——这两个概念为什么放在一起讲?而且要求学生死记硬背一些乱七八糟的东西,例如printf,i+++i、0[array]之类;看看他们的书,一本书几百个#include <stdio.h>、main...。这些传统,一直延续到C++和Java教学中。
直到讲面向对象编程了,偏偏使用C++。至少教学用的C++版本,是很不适合教学的,它不是简明而自然的体系。更加离谱的是,教学中一上来就是“Animal a;",这个东西——说a,有的垃圾Java书籍中也称之为对象。我有理由怀疑,他们可能真的不知道“Animal a;”干了什么。在我讲OOD时,要求学生不得随意使用new创建对象——因为要针对接口编程,更别说在栈中创建对象了。栈中创建的对象,必然属于具体类,如果它的子类有新数据,只得阉割...不敢多态...在介绍对象抽象时,将指出面向对象教学中更多的问题
现在有些学校讲授Python,按照我的判断,又会把它当成C来讲。


超越具体的某种编程语言,考虑一下,什么是变量(variable)?变量是一种标识符(identifier),一个软件实体的名字。在C/Java语言中,变量表示一个存储场所,是源代码中保存值的符号化地址。一些垃圾教材称变量是其值可变的量,这种说法有两个问题。(1)变量的反面——其值不可变的量,其实不是文字/常量,而是命名常量。例如:public static final int X = 123。(2)这种说法对学习其他语言构成障碍。例如函数式语言的变量,C++中的“Animal a;"。

 

经过上面的啰啰嗦嗦,在讲授一门语言时,应该介绍什么呢?我认为,简单地说,三大抽象(如果是面向对象的语言)+其编程范式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值