主题:[讨论]C++教学教材中的改革与创新尝试
山寨捉鼠猫
[专家分:0] 发布于 2010-09-12 10:38:00
谢谢大家!1531
最后更新于:2011-12-06 08:51:00
回复列表 (共26个回复)
11 楼
cgl_lgs [专家分:21040] 发布于 2010-09-24 15:33:00
其實樓主是對用詞比較執著的人。正如同當初我對“蠕蟲”、“病毒”、“木馬”這三個詞的濫用非常不滿;對“黑客”一詞的貶義化及濫用持強烈反對態度一樣。
但現在我已經不再糾結這些詞語了,因為大多數人接受了原本“錯誤”的東西,久而久之,它也就不再是錯誤了。
語言需要的是公認,而不是它原本的意義。如果可以,你完全可以把“定義”、“聲名”當做C/C++教材的“方言”。
希望我這些話對您有幫助:)
12 楼
overfly [专家分:3230] 发布于 2010-09-25 17:38:00
[quote][quote]舍本逐末,这些概念关系真的如些重要吗?我看未必。
C++重点在于学会C++思考的方式,概念一致就好,不必强求明确,易懂。
什么是C++思考的方式,从抽象->理论->设计,用代码来解决具体问题。
更多的是要教案例。让学生体会这个抽象如何结合理论变成设计。而不是在指针,
迭代器,定义还是声明上纠缠。
我更想看到,学生能举出所有声明的形式,定义的方法,而不需要知道声明和定义
在概念上有什么区别。
[/quote]
鄙人也有同感,如果楼主真想取得突破的话不妨想想怎么样用浅显的语言和生动的例子来表述比较难的问题,如果这样的话我想会更有市场[/quote]
支持,就像爱因斯坦发明了相对论,但如果他的理论别人都听不懂,就没有什么价值了
[em2]
13 楼
山寨捉鼠猫 [专家分:0] 发布于 2010-09-26 17:31:00
关于定义和声明,我的回复如下:
(1)对于自定义类型(如枚举类型,结构类型等),及类是需要定义的。因为不定其义,不知其含义,故称之为定义。例如Student 类需要作出其定义,人们才能知道什么叫做Student类。
(2)对于某类型的变量或某类的对象,例如对stud1,则需作出声明Student stud1;,以表明“stud1是Student类的变量”。
(3)传统教材与上述相反,把(1)中情况叫做声明,把(2)中情况叫做定义,这显然不合理。最烦人的就是将“Student stud1;”的意思就成是“把stud1定义为Student类型的变量”。 这与前述故事中的排长一样“把1.86米定义为合格身高”造成错误,把“邻居大哥定义为单身汉”造成逻辑大笑话,错误性质是同样的。这都是把“定义”概念歪曲使用所造成的后果。建议百度搜索“定义”看看。
14 楼
强强 [专家分:4740] 发布于 2010-09-26 19:14:00
嗯,定义和声明楼主抠得很细,很严谨,这个知道了,我还知道茴香豆的茴字有好几种写法呢,写本书不容易,具有这样的开拓进取精神也值得我赞赏,但是我想问一下,如果您的书教出来的学生再阅读其它的经典教材怎么办呢?再读其它著作时会不会云里雾里呢?是不是可以这样理解,吃透您的书的人就不需要看其它的书了?再有一点小建议,既然您是来听取意见的,至少您在1楼是这样说的,但是我在您的回复中却没有感觉到您的虚怀若谷的的精神,至于您说的声明与定义我觉得它们只是一个名子,而且许多年来大家也都按这种称呼来认识和理解程序设计,比如说我,说到声明我会理解为它是针对编译器的,告诉编译器这个变量名称已经被占用,不可再作为其它变量的名称,说到定义我会理解为此变量不光声明,而且在编译时需要为其分配内存,并设置其初始值,理解其含意就够了,为什么还要在茫茫辞海中去追根溯源?假如第一个翻译外文计算机资料的人把Declare a Variable翻译成"弄一个变量",把Define a Variable翻译成"搞一个变量"那么我们到今天是不是谈到所谓的"声明"时就不说"声明一个变量"而是说"弄一个变量",谈到"定义一个变量"时不说"定义一个变量"而是说"搞一个变量呢",当弄明白计算机在遇到声明或定义指令时会有什么样的操作,明白其中原理时,声明与定义这两个名称真的那么重要吗?以上是鄙人拙见,望楼主指正一二.
15 楼
山寨捉鼠猫 [专家分:0] 发布于 2010-09-28 14:37:00
关于“定义”,我提出的问题关键在于传统教材中,对“定义”的使用明显与常规理解相悖,势必会造成“定义”概念的混乱。…。这种错误概念贯穿传统教材全书始终,若传承下去,有可能会使广大青年教师和同学们对“定义”的概念产生模糊、曲解;有可能在科技论坛或论文论述中乱用“定义”名词,产生错误推理或闹出逻辑笑话。这将会是贻害无穷啊!
可是,大家在发言中没有一个抓住上述关键一点进行反驳的。传统教材中对“定义”的使用是与常规理解相符还是相悖?
事实上各行各业都要用到定义概念。例如,什么叫做“不及格分数”,这是需要作出其定义的。我们通常把“低于60分的分数”定义为“不及格分数”。这显然是一个定义语句。
说“56分是不及格分数”,这是一个说明语句(或声明语句)而不是定义语句。如果有人认为这是定义语句,从而认为这是“把56分定义为不及格分数”,这就意味着“不及格分数”就只是56分,别的分数就都是及格分数了。这显然就错了。
传统教材中对“stud1是Student类型的变量”认为是定义语句,公然认为这是“将stud1定义为Student类型的变量”。这显然也是错误的,错误性质与上相同。
现在是处于两难了。是听任这种对“定义”概念的模糊和曲解流传下去,贻害无穷好呢,还是将传统教材中的概念进行革新归正为好呢?
我还真弄不明白,既然C++对定义和声明的概念不是很重要,不必在乎定义和声明的名称如何,不必搞清其概念区别,不必去纠缠这些名称,甚至可称之为“弄一个变量”和“搞一个变量”以代替定义和声明一个变量。那为什么现在还要坚守这片阵地,不让丝毫对“定义”和“声明”作些概念归正,以求免得贻害无穷呢?
16 楼
cgl_lgs [专家分:21040] 发布于 2010-09-29 00:24:00
對于現在來說,聲名、定義這兩個詞并不是不重要,而是非常重要——但必須以方言的方式去理解這兩個詞!它既然是方言,自然不會影響其他領域的“公共”語言或是方言。
正如:廣東話有一個詞被濫用,不能說它必然帶壞普通話或是四川話。
樓主想改變現狀并非不可,但如果用詞無標準可依,大家仍是我行我素的按原來的習慣用語去寫書,那您的獨樹一幟又有何意義?
一個巴掌拍不響——您應該也知道吧:)
17 楼
强强 [专家分:4740] 发布于 2010-09-29 10:58:00
说了这么多,发现了一个问题,楼主一直坚持说传统的定义和声明有错误,这两个名称真的有错误吗?我觉得没什么错误,是不是您的书从根本上就弄错了.
18 楼
cgl_lgs [专家分:21040] 发布于 2010-09-29 17:13:00
樓主想創立一種新的方言,與大陸版C程序語言教材及臺灣版C程式語言教材都不兼容。
不知道樓主想好這方言讓誰接受了沒?
19 楼
山寨捉鼠猫 [专家分:0] 发布于 2010-09-30 19:19:00
现在的问题集中到一点,就是传统教材中对“stud1是Student类型的变量”语句,认为是定义语句,公然认为这是“将stud1定义为Student类型的变量”。这种说法到底是对还是错?
只有得到明确的回答,下面才能作出相应的处理。
20 楼
强强 [专家分:4740] 发布于 2010-10-01 13:11:00
您看的是国产教材吧
我来回复