FoxPro课程报告
上学期选了这门课,课程纯粹是报告因为听说考试容易过。结果第一周就被Visual FoxPro 9.0的课程界面震住了——这玩意儿居然还在用菜单栏和命令窗口?像穿越回1998年。但上了几节课,报告我反而有点改观。课程它笨,报告但笨得直白,课程像一把老式扳手,报告你不需要什么智能助手,课程所有逻辑都摊在桌面上。报告
课程核心其实就三件事:建表、课程写SQL、报告做表单。课程老师反复强调“数据环境”这个概念,报告一开始我完全不懂。课程直到一次作业,要把两个表关联起来,我直接用SQL的JOIN,一次成功。老师看了我的代码,说:“你这是拿MySQL的思路硬套FoxPro,但结果居然对。”他顿了顿,“不过,你要是能看懂FoxPro的Xbase语法,你会明白它为什么当年能火——它对非程序员太友好了。”
我这才注意到,FoxPro的命令窗口里,你敲一句USE 学生表,再敲BROWSE,表格就直接弹出来,像打开一个Excel文件。没有繁琐的配置,没有连接字符串。这种即时反馈让人上瘾。后来我做课程设计,选了个“图书借阅管理系统”,用表单设计器拖了几个按钮,写了几段事件代码。最痛苦的是处理日期格式——FoxPro的日期默认是美国格式,我调了半天才改成YYYY-MM-DD。那一刻我骂了句脏话,但解决后有种莫名的爽感。
班里三十个人,真正用FoxPro做完整项目的不到五个。大多数人用向导生成表单,改改标签文字就交差。我同桌更绝,他直接导出了Excel表格,用VBA模拟了界面,然后截图贴在报告里。老师居然给了B+。这事让我明白,这门课的价值不在技术本身,而在于强迫你理解“数据从哪儿来、存到哪儿去、怎么展示”这条最原始的链路。现在学生都直接学Python和SQLite,跳过了这些底层逻辑,反而容易写出跑得通但说不清原理的代码。
有一次调试一个报表,数据总是重复计数。我花了三个小时,最后发现是SET DELETE OFF这个默认设置——被逻辑删除的记录仍然参与统计。这个坑在MySQL里根本不存在,因为MySQL没有“逻辑删除”这个概念。那一刻我突然意识到,FoxPro的很多设计是基于单机、基于桌面办公场景的,它的容错方式跟现代数据库完全不同。这种“过时”反而成了教材:它让你看到数据库设计的基本矛盾——物理删除还是逻辑删除?实时更新还是批量提交?
课程结束前,老师放了一段FoxPro 2.6在Windows 95上运行的录像,那时候它叫“FoxPro”,没有Visual前缀。屏幕分辨率640×480,界面灰扑扑的,但操作流畅得像在弹钢琴。老师没说话,就让我们看了两分钟。然后他说:“你们以后可能再也不会碰这玩意儿了,但记住,任何工具都有它的生命周期。重要的是,你有没有真正理解数据本身。”
期末项目答辩,我用FoxPro做了一个“学生宿舍水电费管理”,支持按楼栋汇总、按月份筛选,还加了简单的图表输出。答辩时老师问:“为什么不用Excel?”我说:“因为FoxPro让我感觉自己在写程序,而不是在填表格。”他笑了,给了个A-。
现在回过头想,这门课教的东西确实过时了。但那种“一个命令窗口搞定一切”的控制感,那种调试到深夜终于跑通的成就感,是任何现代IDE都给不了的。FoxPro像一本泛黄的旧书,印刷粗糙,但故事扎实。读完了,你也许不会推荐给别人,但它确实在你脑子里留下了一些东西——比如,永远不要相信默认设置。