作者milochen (16/100天自我观察)
看板CSSE
标题Re: 软体设计、物件导向、职衔、科系认同、钱,以ꐠ…
时间Mon Jan 8 02:20:02 2007
※ 引述《tinlans ( )》之铭言:
: 监於个人前阵子培养的新习惯:
: 延伸原主题过三步换标题以减轻原 po 心理压力。
: 所以先换标题,
: 不过我不是教授也不是从商的,
: 标题下得不好就请见谅。
: ※ 引述《lg31cm (我住5F)》之铭言:
[恕删]
其实活在台湾的资讯里,很多都会迷失掉
话说自己也是在科技大学毕业後,在当兵时,
刚好想说有机会会面临找工作的问题,又听说某某公司考C++是用英文的
所以也来读英文,顺便去看看国外在讨论问题时,他们的重心在那边。
接着才发现,不对耶!! 跟之前认知差距好大, 有非常大的不对劲。
以前大学时代学校教的就是一个main.cpp打天下,反正老师也只知道说
"反正你就是要 #include <iostream>" 才能开始写,然後会写递回程式的人
,其程式功力在班上就可以排行前几名了。但也也是一直到了大学
因为我也是发现怎麽技职跟一般大学又有不对劲(就是类似台湾跟国外)
所以有一段时间去摸高中学的集合论里面讲的function为何,所以到後来才真的搞懂
到底递回是怎麽一回事,才算是有个完整的了解。若要说真的全盘通,
也已经是在当兵的时候了。
不经感叹,虽然同样都是努力,不过在台湾就是很容易接受到错误的资讯与情报
在我当兵时,曾经有人说「失败的人讲的话永远不可采信,只有成功的人说的话才算数」
她的道理在於「因为失败的人之所以失败,是因为他跟本就搞不清楚自己失败在那」
在台湾,如果平时不多作功课,主动的去接触世界上的成功人事(不能仅限於台湾)
,多吸收成功人事的观点,所谓的看书不是去看他们的自传,因为这种会出书的东西
说穿了就是为了在讨好普遍的观众,自传千万不可看,而是要与他们亲身交谈去作了解。
以前高职的时候,每一天至少都会花三个小时以上在作coding,不过不是for job
只是纯碎因为 想到什麽东西,就可以写出那个东西,因此而感到兴奋。
退伍出来工作也半年了,前三个月跟不会作系统分析的人作系统分析
(感触是不知道那一天才能遇见真的SA,来作有用的SA,很多SA本身程式设计概念
都还停留在procedural,然後号称自己物件导向分析)
等到後三个月在作C++开发以後,才发现其实物件导向分析是什麽
自己真的也是完全都不知道。
C++ 怎麽写呢?? 写了三个月才发现, 打从底子来说,自己跟本就是不会C++的人。
应该要来整个全部重新学习,否则一直拿着错误的旧观念再继续学下去的话,
跟本就不可能有学好的一天。
但是说实在的,如何安排一个好的流程,来学好C++,自己其实也不知道到底要看什麽
书,或者如何的来规划。这方面的资讯可能版上很多,但其实自己也不知道那个才是
对的,那个是可以follow的方向。所以真的要学习,就是一直作开发,有问题就发问。
也别无其它办法了。
像高职对於作硬体设计方面有一套很完善的流程,可以让你好好学之後,会对整个
设计非常清楚。而一般大学特别是在数位逻辑设计实务上特别不行,这时不得不佩服
当初在归划这个学硬体设计的课程时,竟然可以把这麽复杂的东西,整理到
国中数理程度的就能够容易上手。这真的是相当不简单的一件事。
不过不知道像要学软体开发的话,不知道有没有这种一连贯的流程。如果真有就好了:(
以C++来说,其实台湾应该本来有很好的环境可以培养,
因为有聊到一位在西安那边的人,硕士毕业後有去作软体开发工作
Design Pattern是他们最基本在用的术语,他们的认知里这是需要经验但很好用的东西
,他们的认知里认为,作程式设计的人,不能不会这本书。他们也很喜欢侯捷,因为
大陆那边的人其实英文并不是很好,翻译的书藉对他们的学习带来很的帮助,所以
像侯捷翻译的书,对他们来说实在是太有帮助了。後来想想,
台湾的技术还没被大陆覆盖掉??,觉得还满不可思议的
後来想想可能是因为台湾的企业界所保有的 硬体设计 经验知识
是大陆那边一时还无法取代的关系。
Google 跟 MS 在大陆徵才,月薪也只有给二万元人民币,
位於北京中国科学院 ,一个少年班的,26岁拿到博士,可以自己一个人独立开发
distributed virtual machine,薪水我有点忘了,好像月薪一万还两万人民币。
什麽是少年班? 沈向洋 就是少年班的,
反正 少年班 是 算是一种很猛的天才特殊教育 XD
这些都是大概自己透过因缘际会的关系,实际获得的一些小情报
然後一方面又看到自己的C++,跟本就是直接称的上「不会C++」还比较贴切
: 抄完这些东西之後就什麽也没补充了,
: 然後初学者,包括自以为 C++ 都学通了的人就真的被耍到,
: 真的有什麽想要 reuse 的东西就给它「继承」下去,
: 譬如说,Derived 这个 class 想 reuse ItemA、ItemB、ItemC 这三个 classes 的功能,
: 而 ItemA、ItemB、ItemC 都继承了 BaseItem,
: 他们就真的这样写下去:
: class Derived : public BaseA, public BaseB, public BaseC {
: ...
: };
: 首先遇到的问题有可能是需要 virtual 继承的问题,
: 不过这个跟他们解释过以後普遍还觉得 ok 可以接受;
: 但是他们程式写到後来 (接近 UI 那一面的时候),
: 突然想到可能需要依 user 输入来改变要 reuse 的 classes,
: 也就是用其它事先继承自 BaseItem 并已实作的现成 classes 来替代。
: 然而这些人的脑袋被教科书误导已深,
: 在历经一番 code 乱改乱 try 都得到 error messages 之後,
: 直接丢出一句「C++ 怎麽没有支援动态继承啊?」,
: 这时他们用 OO 写 code 的意愿就逐渐大大的被动摇了,
: 因为他们发现事实没有想像中以及书中所说的完美,
: 脑袋里都想着(哔--)的怎麽这麽麻烦,林(哔--)花在解决这 error 的时间,
: 早就用旧方法写完了,OO 这东西怎麽看起来简单用起来这麽复杂啊。
: 要是好心跟他们说其实应该用合成的方式而不是乱用继承,
: 也就是:
: class Derived {
: ItemBase *first;
: ItemBase *second;
: ItemBase *third;
: ...
: };
: 这样的方式来 reuse,
: 就可以达成他们当初打算用「动态继承」所想要达成的目的,
: 结果你猜猜看绝大多数的人是啥反应?
: (哔--)!那当初叫林(哔--)花那麽多时间学继承怎样用是要冲三(哔--)!
: 这样写不是还要林(哔--)多写一堆(哔----)东西去转 call members 里的东西!?
: (哔--)你的 OO!(哔--)背回去写 C 还比较快!学这三(哔--) OO 浪费林(哔--)时间!
: 差不多就是这类型的反应,
: 我也不讳言,
: 走到这一步还没把 OO 甚至是整个 C++ 扔掉的,
: 在我目前为止看过的人里面差不多是总数的 4%,
: 但我前面也说过这个 % 数只是一种假象,
: 是大家都高学历、人人有大学读、校校都有资X系才造成的假象,
: 全世界是有几个国家会像台湾这样的?
: 以台湾这种人口数量和产业种类和来说,有这几 % 就够多了;
: 好了为了避免进入邪恶的政治议题,这里也是点到为止。
说真的自己跟本不知道 继承 要如何使用
顶多只知道 用 concrete class去继承 abstract class而己
而且我只会用像大大您说的 像这样子的写法
class Derived {
ItemBase *first;
ItemBase *second;
ItemBase *third;
...
};
很多以前在金石堂买的C++书,所说的那个继承,到最後都会发现
为什麽都用不起来。到底继承的精随在那边,
现在想想还真的不知道何时才需要concrete class 去继承 concrete class。>"<
很糟糕,继承它有这麽多的规范,有friend,protect,public,private什麽的
以前都从书乱看看来的,现在等真的上战场时,发现怎麽都不知道怎麽用
而且之所以用,也常常只是为了要让 在 语法 合法, 而 语意 上常常是无意义的
>"<
其实还蛮想要把以前学的C++ 概念重新刷掉,
整个把自己当作白纸从新来学 。 但又不知道
该如何去判断 那个 书可学,那个书不可学。
或者那个书适合,那个书不适合看。
见笑了 >"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.146.217
※ 编辑: milochen 来自: 125.225.146.217 (01/08 02:20)
1F:推 nvfp:推自传不看比较好 XD 两年前我也开始有这种感觉 01/08 10:32
2F:→ nvfp:另外C++的话 我很喜欢一本讲vc 红皮 封面是一个微笑老头的 01/08 10:37
3F:→ nvfp:前半本讲基本观念讲得还蛮深入的 01/08 10:38
4F:→ nvfp:www.books.com.tw/exep/prod/booksfile.php?item=0010017035 01/08 10:49
5F:→ nvfp:就是这本, 前面有很大篇幅用完整例子讲基本观念 01/08 10:50
6F:推 sniffing:他的书都太详细,以致於很容易让人半途而废 XD 01/10 00:32