作者lg31cm (我住5F)
看板CSSE
标题Re: 软体设计、物件导向、职衔、科系认同、钱,以ꐠ…
时间Tue Jan 9 00:34:49 2007
※ 引述《tinlans ( )》之铭言:
: ※ 引述《milochen (16/100天自我观察)》之铭言:
: : 其实活在台湾的资讯里,很多都会迷失掉
: : 话说自己也是在科技大学毕业後,在当兵时,
: : 刚好想说有机会会面临找工作的问题,又听说某某公司考C++是用英文的
: : 所以也来读英文,顺便去看看国外在讨论问题时,他们的重心在那边。
: : 接着才发现,不对耶!! 跟之前认知差距好大, 有非常大的不对劲。
: : 以前大学时代学校教的就是一个main.cpp打天下,反正老师也只知道说
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 这种科大教授太不应该,普大还说得过去,科大教授还这样真的说不过去,
: 无奈的是科大教授普遍都没有应当「传授实务经验」的自觉,
: 不过再扯下去恐怕又会进入邪恶的政治议题了。
: 我科大时代的老师也没有教这种东西,
: 同学跟学弟都是到大三开始做专题才来问我的,
: 当时他们才真正知道区分「宣告」跟「定义」的重要性,
: 之前都以为我强调这个只是在吊书袋。
: 另外,The C++ Programming Language 这本书大概在第十章的地方,
: 就会讲到分多个 .C (泛指 .C .cpp .cxx) 跟 .H (泛指 .h .hpp .hxx) 的方法,
: 不会的最好尽早学起来。
我念书就学会这招,不过还真的一堆人都不知道...囧rz
: 另外,也应该尽早学会 DLL 或 shared object 应用在 OO 上的技巧,
: 一大堆人到了进去业界才知道 executable file 只要看到 base class,
: 就能直接透过 dynamic binding 机制 call 到 dynamic library 中
: derived classes 内的 virtual functions,
: 而反过来说,
: 当 dynamic library 内的 source code 不可见,
: 但其 header files 提供 base classes 的定义式时,
: 使用 library 的人就可以透过继承机制去 reuse 现有但不可见的 code。
: 只不过,书很少会讲这种东西,
: 也不会有讲 OO design pattern 的书跟你说 factory 可以配这东西玩。
我在 COM 写过类似的东西,不过又如何呢?只不过被微软摆了一道
全部作成一颗 .exe 我还省事,搞个 DLL 还会版本冲突啥一堆的,
user: 爽到你甘苦到我
: : "反正你就是要 #include <iostream>" 才能开始写,然後会写递回程式的人
: 从这角度来看,
: 你们老师还不错,
: 我大学老师教的是 #include <iostream.h>。
: 然後同学之间流传着两岸之间不知道是谁开始的鬼讲法:
: #include <iostream.h> 不用 using namespace std; 所以比较方便,
: 而 #include <iostream> 就要写所以比较麻烦。
: : ,其程式功力在班上就可以排行前几名了。但也也是一直到了大学
: : 因为我也是发现怎麽技职跟一般大学又有不对劲(就是类似台湾跟国外)
: : 所以有一段时间去摸高中学的集合论里面讲的function为何,所以到後来才真的搞懂
: : 到底递回是怎麽一回事,才算是有个完整的了解。若要说真的全盘通,
: 我印象里国中就会讲到 function 的意义,
: 不过大学离散里应该也会讲到才对。
: 外国大学常把离散当成 CS 基础科目之一,
: 也是这个道理,
: 以 UCSD 的 CS 来说,
: 离散的课程代号就是 < 100,
: 像是 CSE 20 这样,
: 属於 lowerdivision,
: lowerdivision 很接近台湾所谓的「通识课程」。
个人偏见:这种东西搞不懂也没什麽关系
至於程式功力,我还不满18岁看到国中生刘灯有办法写出
.txt 转 .exe 秀中文就知道自己有多渺小了
: : 也已经是在当兵的时候了。
: : 不经感叹,虽然同样都是努力,不过在台湾就是很容易接受到错误的资讯与情报
: : 在我当兵时,曾经有人说「失败的人讲的话永远不可采信,只有成功的人说的话才算数」
: : 她的道理在於「因为失败的人之所以失败,是因为他跟本就搞不清楚自己失败在那」
: : 在台湾,如果平时不多作功课,主动的去接触世界上的成功人事(不能仅限於台湾)
: : ,多吸收成功人事的观点,所谓的看书不是去看他们的自传,因为这种会出书的东西
: : 说穿了就是为了在讨好普遍的观众,自传千万不可看,而是要与他们亲身交谈去作了解。
: 我是认为失败者的话虽不可全盘采信,
: 却有一定的参考价值,
: 如果区分能力够的话,
: 曾经风光一时但最後失败的失败者,
: 某些经验也是可以参考的,
: 只是听的人必须要具备一定的判断能力。
: 这个说法倒是跟你说的没有冲突,
: 就当成是一种补充吧,
: 免得使某些人有因人废言的错觉。
: : 以前高职的时候,每一天至少都会花三个小时以上在作coding,不过不是for job
: : 只是纯碎因为 想到什麽东西,就可以写出那个东西,因此而感到兴奋。
: : 退伍出来工作也半年了,前三个月跟不会作系统分析的人作系统分析
: : (感触是不知道那一天才能遇见真的SA,来作有用的SA,很多SA本身程式设计概念
: : 都还停留在procedural,然後号称自己物件导向分析)
: 我在外面的时候也碰过很多这种人,
: 学校的学生顶多是因为「不知现实环境」而讲出天真的话,
: 在业界工作的人和学校教授就很爱「号称自己会xxx」,
: 从诚实的角度来讲我倒觉得学生在这方面好多了。
: 工程跟商业不同的地方就在於,
: 很多东西会和不会都骗不了人,
: 随便聊个三四句话就能知道这个人是不是半桶水或不懂装懂,
: 所以真的不要随便乱虎烂,
: 哪怕是虎烂技术强到神乎其技,
: 在资深工程人员面前也不过是个小丑罢了。
本公司几个天王能力都远超过我,但是他们的共识是
市场比技术重要(一堆11x各位的老学长)
: : 等到後三个月在作C++开发以後,才发现其实物件导向分析是什麽
: : 自己真的也是完全都不知道。
: : C++ 怎麽写呢?? 写了三个月才发现, 打从底子来说,自己跟本就是不会C++的人。
: : 应该要来整个全部重新学习,否则一直拿着错误的旧观念再继续学下去的话,
: : 跟本就不可能有学好的一天。
: : 但是说实在的,如何安排一个好的流程,来学好C++,自己其实也不知道到底要看什麽
: : 书,或者如何的来规划。这方面的资讯可能版上很多,但其实自己也不知道那个才是
: : 对的,那个是可以follow的方向。所以真的要学习,就是一直作开发,有问题就发问。
: : 也别无其它办法了。
: 进入业界以後才开始学会痛苦得多,
: 因为 C++ 就算是时间超多的学生大概也是得花个 2 年时间才行,
: 在业界的时候私人时间少,
: 看书的时间都断断续续的,
: 学习成效会取决於个人的记忆能力极限,
: 所以我反而不建议工作环境用不到的业界人士去花时间学,
: 在业界还有很多属於在业界应该学习的东西,
: 在什麽阶段以学什麽东西为优先是比较恰当的态度,
: 不然可能会因此而拖累到别人,
: 也会影响到自己给同事及上司的观感。
: 如果说是工作上会用到的话,
: 那就只能拼了。
业界要有人重视才行,业界最重视的还不是学历
就算C++耍的比别人精最後发现人家C都不太熟
薪水比你多一万还不是干得要死
台清交电资硕士才是王道,C++?等考上再学吧,
用实力证明自己很行这条路很苦的!
: : 像高职对於作硬体设计方面有一套很完善的流程,可以让你好好学之後,会对整个
: : 设计非常清楚。而一般大学特别是在数位逻辑设计实务上特别不行,这时不得不佩服
: : 当初在归划这个学硬体设计的课程时,竟然可以把这麽复杂的东西,整理到
: : 国中数理程度的就能够容易上手。这真的是相当不简单的一件事。
: 现在的高职被改到很惨了,
: 已经没我们当初读的时候这麽王道,
: 历史地理也被插入高职课程,
: 排挤掉了专业课程和实习课程,
: 电子学也剩下两学期而非四学期了。
: 不过补习班老师的水准依然很够力,
: 虽然鼓励补习不是一件好事,
: 但补习班老师会认真思考「教学方法」,
: 而非传统观念所认知的「解题技巧」,
: 当初我补习班老师就从观念开始打通,
: 从 BJT 到 FET 的计算全部只要背一条公式就能贯通,
: boolean 代数化简完全不用卡诺图直接在式子上消等等的,
: 学校的实习老师也属於观念推导型的,
: 强调会欧姆定律就可以处理实务上的一切问题。
: 而你所说的数位逻辑电路,
: 我觉得透过实习去抓感觉很重要,
: 将化简後的代数式直接接成电路跑出来,
: 可以获得成就感以及对理论的信任感 (这在类比电路上也是一样),
: 在现在实习课被砍成这样的状况下,
: 多数学生所会的只剩下解题而已,
: 这还真的是蛮遗憾的。
: 其它的因为最後都会扯到邪恶的政治议题,
: 就不再讲下去了。
我是硬体的东西学的太差才去跑软体的,结果多年後又回到EE领域,
唉唉~
当年一堆人聊天也是讲EE念的好谁要来念CS!?
: : 不过不知道像要学软体开发的话,不知道有没有这种一连贯的流程。如果真有就好了:(
: : 以C++来说,其实台湾应该本来有很好的环境可以培养,
: : 因为有聊到一位在西安那边的人,硕士毕业後有去作软体开发工作
: : Design Pattern是他们最基本在用的术语,他们的认知里这是需要经验但很好用的东西
: 把前人的智慧和心血丢在一边,
: 本来就是很不好的行为,
: 有丰富工程经验的人应该都能深深体会到这点,
: 其实台湾也有不少这种人存在,
: 只不过这是 % 数的问题,
: 所以台湾这种公司以及员工在「数字」上显得较少。
: 加上对岸人口直接导致的菁英筛选率,
: 竞争意识也比台湾来得更加强烈,
: 自然而然就会演变成你听到的这样。
这种东西为什麽不受重视?
讲难听一点,我见过一堆领了不少股票赚了几百万上千万的,
他们的电脑里还不是一堆盗版软体
唯有台湾社会认同软体的价值, design pattern 才会被认为是
一门真正的学问
又或者说台湾软体哪天创造的价值不输给硬体,学校的软工教授
的地位就不输给搞半导体那票人时, design pattern才会被认为
是既爱迪生发明灯泡之後最伟大的发明
不过以台湾的浅碟文化,算了吧!
: : ,他们的认知里认为,作程式设计的人,不能不会这本书。他们也很喜欢侯捷,因为
: : 大陆那边的人其实英文并不是很好,翻译的书藉对他们的学习带来很的帮助,所以
: : 像侯捷翻译的书,对他们来说实在是太有帮助了。後来想想,
: : 台湾的技术还没被大陆覆盖掉??,觉得还满不可思议的
: : 後来想想可能是因为台湾的企业界所保有的 硬体设计 经验知识
: : 是大陆那边一时还无法取代的关系。
: 就我目前观察到的是,
: 软体方面对岸也尚未能覆盖台湾,
: 原因不是在於工程方法,
: 而是卖弄小聪明这点台湾商人经验比较丰富,
: 但小聪明究竟能撑得了多久,
: 还值得慢慢观察。
: 在工业界,
: 商人的嘴炮得以实现奠基於工人的工程能力,
: 一旦工程能力到达极限,
: 嘴炮也会膛炸,
: 现在只不过是极限未到罢了;
: 而商业界则不在此讨论范围。
大陆有够大的内需市场来培养本土软体公司,台湾嘛..
政府宣布删减IT预算你看有多少公司跑出来哭爸,
可见得有多少公司是靠政府标案过日子
扣掉这些公司,还有几家公司是真正做出够水准的软体
外销赚钱?再对比台湾本土CS毕业生人数,各位能不担心吗?
不过也是见过不少人吃政府奶水吃得爽爽就是了
: : Google 跟 MS 在大陆徵才,月薪也只有给二万元人民币,
: : 位於北京中国科学院 ,一个少年班的,26岁拿到博士,可以自己一个人独立开发
: : distributed virtual machine,薪水我有点忘了,好像月薪一万还两万人民币。
: : 什麽是少年班? 沈向洋 就是少年班的,
: : 反正 少年班 是 算是一种很猛的天才特殊教育 XD
: : 这些都是大概自己透过因缘际会的关系,实际获得的一些小情报
: : 然後一方面又看到自己的C++,跟本就是直接称的上「不会C++」还比较贴切
: 我看过北京 Intel 的 compiler 工程师写出的 code,
: 虽然是 C++ 写的但是跟不会 C++ 没啥两样,
: 之所以没惨死是因为当初 SGI 的人写得好;
: 你说的 Google 跟 MS 徵到的人其能力我也见识过,
: 论平均程度的话,
: 对岸软体方面的工程能力跟 10 年前的台湾不会差很多,
: 所以会开那种价位徵才我倒是觉得颇合情合理的。
: 对岸的超强技术份子有些集中在中央军委搞的国防科学技术大学,
: 过去在跟(哔----)合搞 C4ISR 系统时有去做过大量交流,
: 深深发觉到我们的中正理工学院和国防科技人才根本是个(哔--),
: 但是这也是正常现象,
: 双方投入的资金差太多了。
但是台湾半导体有国际水准?为何软体是这种水准??
: : 说真的自己跟本不知道 继承 要如何使用
: : 顶多只知道 用 concrete class去继承 abstract class而己
: : 而且我只会用像大大您说的 像这样子的写法
: : class Derived {
: : ItemBase *first;
: : ItemBase *second;
: : ItemBase *third;
: : ...
: : };
: : 很多以前在金石堂买的C++书,所说的那个继承,到最後都会发现
: : 为什麽都用不起来。到底继承的精随在那边,
: 在於要定义一个 family 的时候,
: 不过必须先理解 Dependency Inversion Principle (DIP) 再下手,
: 以免出现惨案。
: 前面提到的 reuse 纯 binary 形式的 library 也是一例。
: : 现在想想还真的不知道何时才需要concrete class 去继承 concrete class。>"<
: 尽量不要这样搞,
: 其实我发现一堆 MS 环境的 IDE 在自动 generate source code 时,
: 都已经摆明是用合成方式 reuse 元件了,
: 结果一堆奇怪的小朋友明明常年都在用,
: 却都没有得到启发,
: 问他们为什麽都跟我说有看到但没去想那麽多。
: : 很糟糕,继承它有这麽多的规范,有friend,protect,public,private什麽的
: : 以前都从书乱看看来的,现在等真的上战场时,发现怎麽都不知道怎麽用
: : 而且之所以用,也常常只是为了要让 在 语法 合法, 而 语意 上常常是无意义的
: 以非正规角度来说,
: 这些东西是「为同事和後辈着想」用的,
: 只要思考出发点是在这里,
: 就比较不会感到迷惑。
: 如果你有闲的话,
: 可以打开 CVS 的 web-front 追踪看看,
: 你的同事过去用你的东西有没有发生过什麽问题,
: 这是对於比较内向的人蛮实用的技巧,
: 不过前提是所待的团队有正确的 CVS 使用观念。
: 另外,能加上 const 的地方就尽量加上 const,
: 尤其是 member functions 的 prototype 後面那个,
: 只是要 traverse container 的 iterator,
: 最好也是用 container_type::const_iterator,
: 不要为了一时方便自己而造成整个 team 的负担,
: 遗憾的是听不进去的人就是听不进去。
: 这些东西跟 OO 其实比较无关,
: 这种封装的概念在纯 C 时代就有了,
: 也就是 static 跟 extern 在 global space 上的用法,
: static 在 module 上有 private 的意涵,
: 而 extern 在 module 上有 public 的意涵。
: 至於 protected 和 friend 则是支援 ADT paradigm 的程式语言,
: 为求效能和方便性上的变通所做出来的。
: 如果你不知道我在说啥,
: 可以请教一些 80 年代就在公司工作的前辈。
: : 其实还蛮想要把以前学的C++ 概念重新刷掉,
: : 整个把自己当作白纸从新来学 。 但又不知道
: : 该如何去判断 那个 书可学,那个书不可学。
: : 或者那个书适合,那个书不适合看。
: 可以从 C++ 的两本圣经本下手,
: 如果想重头的话,
: 不过如前所述,
: 因为你现在已经在业界,
: 个人建议是有需要才学。
: : 见笑了 >"<
把C学好就很够用了,在台湾会好几种程式语言还不如
去多学几种MCU,MPU
旁边的老人跟我抱怨现在愿意写asm的人越来越少,拜托连C都
越来越少人会,结果一堆厂商找不到熟C的人,真是太爆笑了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.33.4