Soft_Job 板


LINE

顺着原 po 的问题 如果现阶段在烦恼要选择哪一个语言好 我会回答,哪一个都好,真正的重点在於 自己倒底有没有办法利用这个语言,好好完成一件工作 如果自称很熟悉语言A,但在处理真实工作时,却又丢三落四 一下子这边漏掉一个条件判断,一下子弄错那边一个回圈处理 在这种状况下,即使选择其它语言BCDEXYZ写程式,情况一样类似 这是写程式的内在逻辑概念够不够好的问题,和选用哪种语言,没有任何关系 如果现在还在烦恼选择语言 倒不如,先随便挑一个语言,然後用它来处理手头上的所有问题 当一而再,再而三,处理过的问题够多,累积够多处理抽象问题的经验 有这样的基础後,再回头来谈用哪个语言好哪个语言不好才比较恰当 * * * * * * * * * * P.S. 我想,在这个问题的讨论时 大家经常把语言 (Language) 与平台 (Framework) 的概念混用 在决定一个工具好用或不好用时,某种程度而言 平台与函式库集所扮演的角色,会比语言本身还重 大家觉得一个"语言"好用,其实,大部分是指,这套工具所提供的"函式库"好用 但大部分的 programmer 分不太清楚语言与函式库的差别 所以,我在文中,还是依大家的习惯,写成这是不一样的 "语言" * * * * * * * * * * 举个例子,我曾遇过一位号称写 .NET 有好几年经验的人 但他写的程式码,总是问题很多 後来试图深入了解他的程式码,但我自己那时只熟 Java 经过约十五分钟的访谈与 code overview 当看到某一段 code 时,我那时心中所想的是 如果这个部分使用 Java 开发,那可以使用 HashMap 解决这个问题 但他讲了一堆听起来好像很复杂的方法,但总是缺东缺西丢三落四 由於那时我不熟 .NET,那时我先问他一句,.NET 有没有像 map 的物件可以使用? 他当然听不懂我讲什麽 随後,我抢了他的键盘萤幕,在 MSDN 找了约十分钟左右 找到了一个东西,叫做 Dictionary,就告诉他 你这个部分,使用 Dictionary 这个物件可以很方便地解决 一开始他还无法体会出 Dictionary 如何使用 我就想办法找资料,凑出几行 sample code 教他 Dictionary 该怎麽应用在原本的问题上 为何会发生,由不熟 .NET 的人,教懂 .NET 的人,如何写 .NET code? 从这个例子中,可以看出一些端倪 常写 Java code 的人,我想,collection 物件是家常便饭 如果真的有认真在写 code,对於 collection 物件的抽象概念,一定了然於胸 当换到不同的平台,遇到类似的问题时 脑中第一个所想的是,新平台上有没有类似的物件可以使用 自然而然,在搜寻时,就会很有目标性,很快找到自己要的东西 所以即使我那时并不熟 .NET,但我却可以很快找到 Dictionary 正是我要的物件 并进而教别人该怎麽用 这是我使用 Java 的所学到的抽象概念,转移上 .NET 的结果 这种概念,通常是 language independent 但却可以透过在某个语言上深化学习的过程中 同步加强 language independent 的抽象化能力 当累积到一个程度之後,就开始出现外溢效应,很轻易地扩展至其它语言与平台 就像 Java HashMap -> .NET Dictionary 这个简单的例子 如果写程式时,没有使用 collection 的习惯 那这个跨语言抽象概念扩展就不会发生 讲白一点,就是因为够熟悉 Java,顺带地连自己不熟的 .NET 也莫名奇妙地增强 当然,反方向也会成立,当够熟悉 .NET 时,连带地其它语言的能力也会一同增强 当然,并不是每一件事都可以这样对应 比如,.NET 的 DataSet 很好用 但在 Java 中却没有对应的物件 (不考虑 3rd party packages) * * * * * * * * * * 为何还会有人觉得这种跨语言的外溢效应很不可思议? 恕我直接说,有很多 programmer 其实是属於拼凑型的 programmer 当碰到问题时,就东剪一段程式码西凑一块程式码,试图处理问题 当然在很多情况下,这种方法很好用,但,这是只知其然而不知其所以然的方法 当自己没有花力气好好研究自己经手过的每一行程式码时 再多年的经验,恕我直说,真的用处不大 所以,当碰到其它的平台时,会觉得那是火星人的东西,也是理所当然 恕我直说,这是因为从未真正下工夫研究过号称自己会自己懂的东西 当然,以初入门而言,谈跨不跨平台还尚早 好好利用自己会的语言做好每一件事累积足够的经验才是要务 要评断平台与平台间的比较,等到自己做得好现有的工作後再说 * * * * * * * * * 当然,每一种语言与平台,都有属於自己的特色 这是有机会接触不同平台时,再花时间力气了解即可 就像 Ruby 的 continuation,这个概念在其它的主流语言中,几乎见不到 即使接触新语言时,多多少少都要花点时间力气都摸索学习 但,这并不是个无法跨跃的鸿沟 因为,两个不同语言抽象概念相似的地方,远比相异的地方多很多 好好学习其中的抽象精神,才叫做真正的写程式 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 116.59.40.27 ※ 编辑: mgtsai 来自: 116.59.40.27 (08/23 03:26)
1F:推 dumbjames:推最後一句..这就是为什麽我助教跟上级都可以用嘴写程式 08/23 10:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP