有关中国中学生信息教育的感想与吐槽
中国的信息技术发展迅速,可惜的是,以我的视角来看,中学的教材和教学模式并未完全跟上步伐。
我很高兴的是小学的信息教育已经发展起来了。
在同等年龄下,我完全比不上现在的小学生。你敢想象小学三年级的孩子学习python-turtle,正在学习平面直角坐标系吗??我去课外班助教时得知的。
我妹妹考机器人2级的题目,我(初三)有一多半不会。
但,在此说几个我今天和近期遇到的问题。
# 数据的命名
现在学生主流的发展方向是信息竞赛。信息竞赛反正是一道接一道的题,受到各方面的影响,大多数人的命名(包括以前的我)都是少打一个字是一个字,反正以后不看。
大概像这样
int[105][105] dp;
int dx, dy;
string s;
long long ans;
2
3
4
说实话,养成了这样的习惯,无疑在将来的道路上要吃一些苦头。
这代码,不说过一段时间自己看不看,就是要讲给别人听,不得每个变量是干啥的都说一遍???
比如一道题:将二进制字符串转为十六进制字符串,
你可以给原始(输入)数据命名为 original_string
或 binary_string
但是命名为 s
是几个意思??!
# 能不能别用 using namespace std; 了
考试几个小时也不缺这几个字母的时间。
# 不是迫不得已,不要使用 ASCII 的特性
字符串(或其他数据)在程序内的存储方式,按照逻辑,程序员(用户)是不应该得知的。
这样的代码你就说奇不奇怪吧
bool is_prime(int number) {
// algorithm logic
}
bool foo = is_prime('^');
2
3
4
5
我建议写的时候打一个表,写下来也就1-2分钟的事情。
std::map<int, char> to_hex_map = {
{ 0, '0' },
{ 1, '1' },
{ 2, '2' },
{ 3, '3' },
{ 4, '4' },
{ 5, '5' },
{ 6, '6' },
{ 7, '7' },
{ 8, '8' },
{ 9, '9' },
{ 10, 'A' },
{ 11, 'B' },
{ 12, 'C' },
{ 13, 'D' },
{ 14, 'E' },
{ 15, 'F' },
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
优秀的代码是有自解释性的!
处理好标识符命名,函数封装好,不用或少用特定平台或语言的特性,逻辑结构清晰。即使是不写注释的代码,一样可以读懂。
code review 和维护注释的时间才是真正的奢侈。
无论哪个年龄段,都应该以写出可维护,可迁移,可拓展的代码为目标。而不是追求源代码的字节数量!
# Dev-C++,不应该再是主流
虽然是一个知名的开源IDE,实际体验倒也不错,但Dev-C++早在2015年就停止了维护!
直到现在,CSP依然使用它作为C++认证的IDE。
界面古老倒是其次,这么多开源的IDE,我认为妥当的做法是多列出几个,允许考生挑选。再不行自己整一个简单的,或者修改已有的开源项目(得持续跟进!),也算是为IDE国产化做贡献。
哦,还有,原生的Dev-Cpp只支持Windows啊!!!
# 开源协议的悲哀
cnstu3d
本来只是想说我们考试的建模软件怎么魔改10年前的blender,还想问问您遵守GPL了嘛?
得知它卖钱之后,我只想一句“C**N*M*”,加上无尽的沉默
知乎:https://www.zhihu.com/question/307017702 (opens new window)
Kimi Chat:
唉。。。
# 最后
写到这傻*3d,也是没心情了。
我衷心的为我们国家的科技进步感到高兴,送上祝福,但也希望中学信息技术教学的质量能够尽早提上。
课本该翻新了,我们这一代要跟上国际的步伐。
我要洗洗睡了
晚安,我挚爱的开源精神。