作者qrtt1 (有些事,有时候。。。)
看板java
标题Re: [问题] 打好Java基础对学其他语言的帮助大吗?
时间Sun Aug 25 01:47:07 2013
※ 引述《henry781114 (期王)》之铭言:
: 先声明我非本科系(我是数学系),对程式语言这块很陌生,也没啥基础
: 大一的程式语言老师教C一学期也没教什麽,只教到for (据说资工系2个礼拜就能上完XD)
: 目前要升大四,想说在大学毕业前学好一个程式语言
: 将来没有要走写程式这行(想走也太慢了XD),只是本业可能会需要写程式
: 以後写的程式也不一定会用Java,但我听说学好一个程式语言,再学其他语言会很快
: 本来我是想学好C的,因为听说这个语言的效能最好,最低阶,学得好什麽都做得出来
: 但是我看到我们学校资工系和资管系大一的程式语言课程都是教Java,所以也无从选择@@
: 我认识一位资工系的朋友说Java有个缺点是如果有错的话,要整个重开@@
: C或C++就只要去找看看是哪一行写错,直接修改就好
: 想请问各位,如果我想打程式基础的话,去买本C的书来看比较好,还是去修Java的课呢?
: 什麽语言对将来学其他程式的帮助最大呢?
: 感谢各位!
学 OOO 对 XXX 有没有用!?
这是学习迁移理论的问题
http://wiki.mbalib.com/zh-tw/%E5%AD%A6%E4%B9%A0%E8%BF%81%E7%A7%BB
要有没有用呢,要先看不同的迁移对象间的关系。
再来讨论迁移的可能性与它的「正」「负」迁移方向。
例如:
学了 Java 後,对 C 有帮助吗?
学了 C 後,对 Java 有帮助吗?
去掉 class 的部分,他的语法都是差不多的。
你可以知道它的变数宣告与定义都这样的型式:
type variable_name = value ;
这是许多语言共通的部分,
应该能算是学 Java 後对其他语言有帮助的部分
(看起来是很微小的帮助:D)
例如:
学了 Java 後,知道程式是需要「编译」再「执行」的。
而且「编译」的过程可能出现「cannot resolve symbol」
可能是类别名称打错了,或是 classpath 没给足
去用其他同为编译式的语言,
知道得完成「编译」的动作才可以「执行」
知道「编译」过程可能会有错误,
错误可能是人为输入错误,或编译条件没满足。
你得依 compiler 的讯息决定处理方式
像写 C 时得多设额外的 include path 与 lib path
若没设好也会看到相似於 cannot resolve symbol 的讯息,
经验到这里用上了,就不会感到相当疑惑。
若你看了学习迁移论,请多注意到迁移有可能是负面的。
对程式语言学习来说,语法容易迁移,语意容易误解。
当你在另一个语言看到相似的结构而开心
觉得这一段可以轻松一点时,得多注意在语意的细节上有什麽异同之处
像是在其他语言用惯了这样比较二个变数是否相等:
if foo == "something": ...
在 java 忘了物件应该用 equals 比较(特别是字串新手会忘了它是物件)
过去的经验给你的直觉,产生了负面的影响。
要避免这些负面影响,只能很仔细地深入语法相关的语意
才可以明确地区分出是否与过去的经验冲突。
若因为觉得有经验而「疏、懒」,那绝对是学习的大忌
正面的例子呢?若你明白了为何大量字串结合要用 StringBuffer
在其他语言也会有 sense 是不是可能有这个问题。
不管最後你选定了哪一个语言,请取得一份良好的学习历经。
因为我相信正向的经验比较容易引发正向的循环。
*. 蒐集一些好的 codying style
(在你自己也认同的前提)
*. 思考语言上是否有暧昧的写法,并提醒自己避免它
(别写出让人容易误解的东西)
*. 熟悉 SDK 基本工具使用与常用标准函式
(在没有好用的 IDE 时,你得怎麽野地求生!?)
(javac, java, CLASSPATH ....)
*. 使用开发工具让你有生产力
(IDE、Debugger、Code Template、使用 logger)
*. 累积跨语言的经验(单元测试、重构、...)
(总之,写出让大家高枕无忧的东西吧)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.231.137.107
※ 编辑: qrtt1 来自: 36.231.137.107 (08/25 01:48)
※ 编辑: qrtt1 来自: 36.231.137.107 (08/25 01:50)
※ 编辑: qrtt1 来自: 36.231.137.107 (08/25 01:54)