openKylin论坛

标题: 呼籲中國的教育者不要再教授過時的,私有的編程語言/平臺。 [打印本页]

作者: ubunturocks    时间: 2013-5-27 10:29
标题: 呼籲中國的教育者不要再教授過時的,私有的編程語言/平臺。
C/C++:好好的標準化的、跨平臺的語言,結果到了很多地方成了Turbo C/Visual C++ 6(軟件死了很久不說,連新的語言標準都支持不全)?要兼顧跨平臺和IDE可以用Code::Blocks或者Eclipse CDT嘛,Geany可能也行。

Visual Basic 6/QBASIC:這都是死了多久的語言啊,在高版本的Windows上跑都要折騰死。真的捨不得BASIC可以教FreeBASIC嘛~

入門語言的其他選擇:Python、JavaScript。好處就暫時不展開說了。

希望大家向身邊的教育者呼籲。


作者: OTL    时间: 2013-5-27 13:55
说到Turbo C,我就想到了大一暑假课程设计用这玩意写界面,现在想想,我了个去,当时我怎么用这东西写出图形界面的,好可怕
作者: robert165    时间: 2013-5-27 18:13
教育没有面向就业啊,教学计划都是给领导看的。
什么时候老师的饭碗不是掌握在教育部,而是掌握在学生手里,这个问题就解决了。
作者: 没底的瓶子    时间: 2013-5-27 18:35
应该专注语言和编程思想 平台什么的不应该花太多时间
入门教学语言应该属pascal
作者: jonaszhang    时间: 2013-5-27 19:39
pascal是一门非常严谨的语言,当年在中学的时候老师教的就是这个。随着技术的快速发展,各种语言应运而生,学校里的教材却没有跟上,这确实是教育界应该反思的问题。
作者: leeli    时间: 2013-5-27 21:30
入门还是前端JavaScript,后台PHP。面向对象使用Java吧!
作者: ubunturocks    时间: 2013-5-27 23:14
没底的瓶子 发表于 2013-5-27 18:35
应该专注语言和编程思想 平台什么的不应该花太多时间
入门教学语言应该属pascal

我个人是反对Pascal作为主要教学语言的,原因如下。

1、从实际应用的角度看,Pascal是一种过气的语言。辉煌一时的Turbo Pasca/Delphi/Kylix已经风光不在。虽然自由软件Free Pascal/Lazarus依然存在,但是也比较小众,不太值得采纳。虽然一些勤奋,厉害的人可能觉得新学语言难度不大,但是深受第一语言影响的人大有人在。所以第一教学语言使用Pascal并不恰当,能使用一种流行的,能完成实际工作的语言,就不要选择,小众的,只能完成玩具工作的语言。

2、从理论的角度看,Pascal在传统上的优点是比BASIC结构化,又不像C那样就缺陷和陷阱都可以写本书。但是从今天的角度看,除了汇编语言外,没有非结构化的主流语言。所以结构化已经不能成为「卖点」(有些人希望尽早引入现在比较热的函数式编程概念,也可能使用Haskell、ML、Scheme等语言作为教学语言)。而C的缺陷与陷阱,也在Java等基于C语法的语言中被基本修复(美国不少大学采用Java作为第一教学语言)。

3、目前Pascal只是在中小学信息教学中尚应用,在大学已经基本不存在,造成不必要的断层。
作者: ubunturocks    时间: 2013-5-27 23:38
OTL 发表于 2013-5-27 13:55
说到Turbo C,我就想到了大一暑假课程设计用这玩意写界面,现在想想,我了个去,当时我怎么用这东西写出图形 ...

Turbo C的图形界面接口意外比较简明(虽然只有16色,折腾下好像可以256色),没有超出初学者的接受范围。但是因为这个就继续停留在Turbo C的DOS环境似乎是因噎废食。C课程设计并不是只有图形界面方面的东西可以做。在现代的平台上也有Allegro等比较方便的库可以做图形编程。

当然想玩图形编程的朋友,可能从JS或者Python开始比较好,因为他们都有比较简单的玩图形编程的方案。JS可以通过操作<canvas>,而Python可以用pygame等。
作者: 没底的瓶子    时间: 2013-5-28 12:20
ubunturocks 发表于 2013-5-27 23:14
我个人是反对Pascal作为主要教学语言的,原因如下。

1、从实际应用的角度看,Pascal是一种过气的语言。 ...

中学入门学pascal并不是要以后就要用它,学的是编程而不是语言。若是只想尽快完成实际工作应该是接受专科教育。专科应该教授最流行最易用的语言。
pascal作为入门语言能在一开始就养成严谨且良好的编程习惯和思想,为大学学习C打了很好的基础。所以我认为中学教pascal是很合适的。
作者: ubunturocks    时间: 2013-5-28 12:44
没底的瓶子 发表于 2013-5-28 12:20
中学入门学pascal并不是要以后就要用它,学的是编程而不是语言。若是只想尽快完成实际工作应该是接受专科 ...

「严谨且良好的编程习惯和思想」和Pascal沒有直接關係吧……看怎麼教怎麼學。
作者: ubunturocks    时间: 2013-5-28 12:48
没底的瓶子 发表于 2013-5-28 12:20
中学入门学pascal并不是要以后就要用它,学的是编程而不是语言。若是只想尽快完成实际工作应该是接受专科 ...

我當初就在學校(高中)學過一點基於Turbo Pascal的Pascal,其他同學我不知道,反正我身邊那幾個同學一點興趣都沒有,最後都是copy了我的代碼……
作者: 没底的瓶子    时间: 2013-5-28 15:45
ubunturocks 发表于 2013-5-28 12:44
「严谨且良好的编程习惯和思想」和Pascal沒有直接關係吧……看怎麼教怎麼學。

Pascal语言语法严谨,层次分明,具有很强的可读性。
记得高中学pascal时 老师经常拿难懂的C代码做反面教材{:3_55:}
作者: ubunturocks    时间: 2013-5-28 22:04
没底的瓶子 发表于 2013-5-28 15:45
Pascal语言语法严谨,层次分明,具有很强的可读性。
记得高中学pascal时 老师经常拿难懂的C代码做反面教 ...

C可以写得很难懂确实是,所以我不大推荐C作为第一语言,但是这也从侧面反应了C的灵活性,当然C也可以写得可读性很高。我前面说过了像Java等语言已经解决了不少C的缺陷与陷阱。Pascal光去和C比是没有意义的。

其实个人我觉得Pascal就是乏善可陈,begin end实在太啰嗦。
作者: curse    时间: 2013-5-28 22:28
我觉得学校教学就没有必要在编程语言细节上花太多时间,应该在离散数学、数据结构和算法课程上好好琢磨琢磨怎么能让学生更好的学进去,示例用类C伪代码就行了
至于语言,就教C语言或者Java(侧重面向对象)基础,不教那些跟操作系统API、非标准类库有关的东西,学生还想学什么、对什么还感兴趣就自己学什么,反正现在的主流语言语法基本都是类C的。
作者: ShineHuang    时间: 2013-5-29 09:48
卤煮的意见不错,但是我们建议了没有用啊。。你懂的。。

我也觉得直接学标准 C/C++ 和 java 比较好,python 和 js不太适合,因为开始学习编程是打基础,学习太过简便的语言好处不大,毕竟不是为了编程而学,那就是农民工培训学校的做法了。
作者: ubunturocks    时间: 2013-5-29 11:20
ShineHuang 发表于 2013-5-29 09:48
卤煮的意见不错,但是我们建议了没有用啊。。你懂的。。

我也觉得直接学标准 C/C++ 和 java 比较好,pyt ...

其實也就是動態類型和靜態類型的區別吧……其實沒差,Python還沒有switch case呢,是不是很麻煩?

比如像C/C++,一開始就告訴你char,short,int,long,long long的長度和表示範圍有多大意義?這些值本來就和實現有關,最蛋疼是有些書告訴你的還是16位編譯器上的值。
作者: ShineHuang    时间: 2013-5-29 16:13
ubunturocks 发表于 2013-5-29 11:20
其實也就是動態類型和靜態類型的區別吧……其實沒差,Python還沒有switch case呢,是不是很麻煩?

比如 ...

C/C++的课程中去除你说的那些没有意义的内容,就很好了。

先学正统的、全面的 比较好,如果一开始就学python JS 这些随便写写就可以出结果的语言反而不好。
就像我,做惯了java以后突然转C++,觉得麻烦得不想做了。。。
不管C/C++学得怎么样,学了就行了,以后再想用哪种方便的语言,拿来看看就会了。
作者: ubunturocks    时间: 2013-5-29 16:46
ShineHuang 发表于 2013-5-29 16:13
C/C++的课程中去除你说的那些没有意义的内容,就很好了。

先学正统的、全面的 比较好,如果一开始就学 ...

隨便寫寫怎麼可能寫出結果……簡單的例子,解一元二次方程,不用非標準庫,有啥語言能隨便寫寫?
作者: ubunturocks    时间: 2013-5-29 16:50
curse 发表于 2013-5-28 22:28
我觉得学校教学就没有必要在编程语言细节上花太多时间,应该在离散数学、数据结构和算法课程上好好琢磨琢磨 ...

僞代碼……那你意思學編程都不要上機實踐了……以前看國內的教材最煩YWM那套不三不四的僞代碼了,重印了那麼多次代碼的縮進和排版還是亂七八糟,看着像C/C++又不能實際測試。
作者: curse    时间: 2013-5-29 20:24
ubunturocks 发表于 2013-5-29 16:50
僞代碼……那你意思學編程都不要上機實踐了……以前看國內的教材最煩YWM那套不三不四的僞代碼了,重印了那 ...

上机实践用什么语言是学生自己的事了,你觉得伪代码就是不三不四?
MIT的《算法导论》也都是用伪代码,而且你跟看不出来这像什么语言,难道这本风靡全球大学的教材也是不三不四。用伪代码就是让学生专注于数据结构和算法本身而不是语言实现细节,上机实践学生可以用任何一种自己熟悉的语言,反倒更锻炼编码水平,要是书上的代码一字不拉抄上去就能运行是省事了,意义能有多大?
作者: ubunturocks    时间: 2013-5-29 21:02
curse 发表于 2013-5-29 20:24
上机实践用什么语言是学生自己的事了,你觉得伪代码就是不三不四?
MIT的《算法导论》也都是用伪代码,而 ...

指責CLRS寫作風格的人多了去了。不過人家至少排版還是比較正常的。
作者: ubunturocks    时间: 2013-5-29 21:05
curse 发表于 2013-5-29 20:24
上机实践用什么语言是学生自己的事了,你觉得伪代码就是不三不四?
MIT的《算法导论》也都是用伪代码,而 ...

而且我主要說的是第一門的入門語言,CLRS一般是學了入門和數據結構之後再學的,那時候自然對各種代碼的接受能力高一些。
作者: curse    时间: 2013-5-30 18:49
ubunturocks 发表于 2013-5-29 21:05
而且我主要說的是第一門的入門語言,CLRS一般是學了入門和數據結構之後再學的,那時候自然對各種代碼的接 ...

第一门语言我觉得就学C挺好,因为现在的流行语言语法基本都是类C的,主要教基本语法和标准库的内容,不要涉及平台相关的东西
作者: xbl    时间: 2013-5-30 19:33
教育应该更多的体现一种思考方式,而不是一味的去模仿

没有思想的话,很长时间都只能做“中国制造”。。。。。。。。。。。。。。
作者: wym19691705    时间: 2013-6-11 11:49
准备自觉pascal.......没必要学吗?
作者: ubunturocks    时间: 2013-6-12 01:18
wym19691705 发表于 2013-6-11 11:49
准备自觉pascal.......没必要学吗?

可以考虑学习Python语言:

可以看看一下教程:http://woodpecker.org.cn/abyteofpython_cn/chinese/
作者: ping-wu    时间: 2013-6-12 02:02
ubunturocks 发表于 2013-6-12 01:18
可以考虑学习Python语言:

可以看看一下教程:http://woodpecker.org.cn/abyteofpython_cn/chinese/

Python 2.x 与 3.x 相差很多,这个教程的资料是旧的,当做学习工具的话,可能会一开始就养成不好习惯。
作者: ubunturocks    时间: 2013-6-12 02:38
ping-wu 发表于 2013-6-12 02:02
Python 2.x 与 3.x 相差很多,这个教程的资料是旧的,当做学习工具的话,可能会一开始就养成不好习惯。

英文版已经更新到3.3了,但是中文翻译只找到这个,你有更好的建议吗?
作者: ubunturocks    时间: 2013-6-13 16:06
http://wiki.woodpecker.org.cn/moin/

这里有很多Python学习资源
作者: suiang    时间: 2013-6-13 20:27
系统自带的才    Python 2.7.4  {:7_144:}

作者: ubunturocks    时间: 2013-6-14 00:46
suiang 发表于 2013-6-13 20:27
系统自带的才    Python 2.7.4

你打python3就是3.3了……
作者: suiang    时间: 2013-6-14 00:57
ubunturocks 发表于 2013-6-14 00:46
你打python3就是3.3了……

额 这样呀 3.3.1  {:5_119:}
作者: maclin    时间: 2013-6-14 08:45
入门教育还是用简单一点儿的语言好,面向的是大众,这里面大部分人以后不会从事软件开发,而简单的语言可以讲的更透彻,对程序设计语言的理解会比较到位。

以开发为目的的教育确实可以瞄准当前更加实用的语言,特别是计算机专业的程序设计教学,可以根据专业的不同采用不同的语言,比如软件专业的考虑更加高级的Java、python等,而嵌入式和系统相关专业的还是易采用C语言……

作者: ubunturocks    时间: 2013-6-15 01:36
maclin 发表于 2013-6-14 08:45
入门教育还是用简单一点儿的语言好,面向的是大众,这里面大部分人以后不会从事软件开发,而简单的语言可以 ...

Python要入門比C簡單多了吧……
作者: maclin    时间: 2013-6-15 08:53
ubunturocks 发表于 2013-6-15 01:36
Python要入門比C簡單多了吧……

确实入门确实可以很快,也能很快看到效果,但前提是对程序有一定理解才好吧?

另外来说,入门的目的应该是让初学者理解程序设计的思想,而高级的语言很多调用都基于封装,这个对于初学者来说有太多短时间说不清楚的内容……
作者: suiang    时间: 2013-6-15 09:05
maclin 发表于 2013-6-15 08:53
确实入门确实可以很快,也能很快看到效果,但前提是对程序有一定理解才好吧?

另外来说,入门的目的应 ...

学习C 还是很有用的说  主要学习的是编程思想 而不仅仅是语言本身 现在大多数语言还都是基于C 的C系语言
有了C的基础,了解下新语言的语法 关键字 有本文档 都能很快上手吧
作者: kingvampirem    时间: 2013-6-15 16:39
OTL 发表于 2013-5-27 13:55
说到Turbo C,我就想到了大一暑假课程设计用这玩意写界面,现在想想,我了个去,当时我怎么用这东西写出图形 ...

{:6_126:}牛~
作者: kingvampirem    时间: 2013-6-15 16:42
没底的瓶子 发表于 2013-5-28 12:20
中学入门学pascal并不是要以后就要用它,学的是编程而不是语言。若是只想尽快完成实际工作应该是接受专科 ...

对,刚开始学习编程重要的是思想,思想才是编程的关键~一个加州洛杉矶分校的教授给我们上课就说,美国的学生码的代码就是比国内的学生漂亮,因为他们本身编程语言的编写就是符合他们的语言习惯,思想就已经有了~那种思想是深入到骨子里的~
作者: suiang    时间: 2013-6-15 21:00
kingvampirem 发表于 2013-6-15 16:42
对,刚开始学习编程重要的是思想,思想才是编程的关键~一个加州洛杉矶分校的教授给我们上课就说,美国的 ...

         {:7_141:}
作者: rolandyex    时间: 2013-6-15 22:19
谁让编程的语言基本上都是英语{:7_141:}
作者: suiang    时间: 2013-6-16 01:04
rolandyex 发表于 2013-6-15 22:19
谁让编程的语言基本上都是英语

你可以看成是拼音 {:7_145:}
作者: kingvampirem    时间: 2013-6-16 10:35
suiang 发表于 2013-6-15 21:00

叹什么叹~水哥,是思想跟人家有差距额?
作者: rolandyex    时间: 2013-6-16 11:52
suiang 发表于 2013-6-16 01:04
你可以看成是拼音

拿拼音注释{:5_115:}
作者: suiang    时间: 2013-6-16 12:21
rolandyex 发表于 2013-6-16 11:52
拿拼音注释

拿拼音写代码 O(∩_∩)O哈哈~
作者: rolandyex    时间: 2013-6-16 12:29
suiang 发表于 2013-6-16 12:21
拿拼音写代码 O(∩_∩)O哈哈~

{:5_117:}   
作者: ubunturocks    时间: 2013-6-22 19:18
rolandyex 发表于 2013-6-15 22:19
谁让编程的语言基本上都是英语

以这个理由说学不会编程最可笑了……
作者: ubunturocks    时间: 2013-6-22 19:23
maclin 发表于 2013-6-15 08:53
确实入门确实可以很快,也能很快看到效果,但前提是对程序有一定理解才好吧?

另外来说,入门的目的应 ...

折腾C的缺陷与陷阱(听过一本书吧)能掌握什么「思想」?

封装有什么问题?比如说生成一个九九乘法表有什么封装能搞定?但是像联网下载一个文件难道不是正应该封装?谁都要去折腾底层socket不成?
作者: maclin    时间: 2013-6-23 01:41
ubunturocks 发表于 2013-6-22 19:23
折腾C的缺陷与陷阱(听过一本书吧)能掌握什么「思想」?

封装有什么问题?比如说生成一个九九乘法表有 ...

也赞同你后面的说法,对于以开发为目标的教育肯定是可行的,但我想即使是计算机专业的出来,真正从事这种开发的占多大的比例?但只要是跟计算机相关的行业,对于计算机程序的基本原理和思想的掌握应该是有必要的…

至于你说的C的缺陷与陷阱,这个应该是更高深的层次了吧?不知道什么方面的人需要,本人写的代码不少,但这本书至今还未读过,实在汗颜啊…
作者: ubunturocks    时间: 2013-6-23 15:11
maclin 发表于 2013-6-23 01:41
也赞同你后面的说法,对于以开发为目标的教育肯定是可行的,但我想即使是计算机专业的出来,真正从事这种 ...

书没读过没关系,有没有遇到过初学者分配字符串不知道是空间是“长度+1”的?这得费多大力气解释清楚?

至于掌握计算机科学原理与思想,会基本的编程是第一步,对计算机有基本的「控制力」,有些书在讲计算机组成的时候再引入C语言,或者在学习数据结构的时候引入C++。
作者: 没底的瓶子    时间: 2013-6-23 16:19
maclin 发表于 2013-6-23 01:41
也赞同你后面的说法,对于以开发为目标的教育肯定是可行的,但我想即使是计算机专业的出来,真正从事这种 ...

《C的缺陷与陷阱》是c语言进阶的经典之作,很有意思。不过这类书更推荐《C专家编程》内容差不多,但讲的更加系统。
作者: suiang    时间: 2013-6-23 18:10
没底的瓶子 发表于 2013-6-23 16:19
《C的缺陷与陷阱》是c语言进阶的经典之作,很有意思。不过这类书更推荐《C专家编程》内容差不多,但讲的更 ...

找来读读看 {:5_105:}
作者: swqa1549    时间: 2013-7-29 09:50
直接教汇编最好,最原始的开始
作者: softcopy    时间: 2013-7-31 14:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: ubunturocks    时间: 2013-8-9 23:34
swqa1549 发表于 2013-7-29 09:50
直接教汇编最好,最原始的开始

MIPS汇编还行……x86汇编太多无关的东西要记了……
作者: 丌冰    时间: 2013-9-4 19:51
跨平台,没听说过C/C++是跨平台的吧,另外请写简体字这个繁体看着累
作者: ubunturocks    时间: 2013-9-12 10:17
丌冰 发表于 2013-9-4 19:51
跨平台,没听说过C/C++是跨平台的吧,另外请写简体字这个繁体看着累

C和C++都是语言标准,不同平台都可以实现,Linux上的GCC和LLVM是实现,Windows上的VC也是实现。

不使用编译器的非标准特性,不(直接)使用平台特有的函数库,注意一些细节(比如long的字节数、路径分隔符),C/C++可以在源码层面跨平台。举最简单的例子,下面的C++程序:
  1. #include <iostream>

  2. int main()
  3. {
  4.     std::cout << "Hello, world!\n";
  5. }
复制代码
无论在Linux还是Windows,编译、连接、执行,结果完全一样。
作者: 丌冰    时间: 2013-9-12 12:49
ubunturocks 发表于 2013-9-12 10:17
C和C++都是语言标准,不同平台都可以实现,Linux上的GCC和LLVM是实现,Windows上的VC也是实现。

不使用 ...

好吧,对于跨平台的理解上和你有出入,我的理解是像java那种一次编译就能在Linux或者Windows上都能运行的




欢迎光临 openKylin论坛 (https://forum.openkylin.top/) Powered by Discuz! X3.3