Re: [請益] 撰寫模擬器
※ 引述《Dungeon.bbs@ptt.cc (Dungeon)》之銘言:
> ※ 引述《typecommand (:))》之銘言:
> : 1.C執行效率比C++好,而且學習曲線也較短,照理
> : 說我應該選C,但是我已習慣物件導向的程式觀念
> : ,不想再重回以前的程序導向程式設計,而且我
> : 撰寫的這個模擬器,日後還會繼續擴充功能,怕
> : 用C來撰寫,日後功能會擴充不易。
> 有一個很嚴重的問題。
> 學過物件導向分析與設計了嗎?
> 沒有?!!
> 那C++頂多只是拿來把FUNCTION包到CLASS裡罷了。
其實不單單只是這樣子而已,
我也看過有人為了「寫起來比較方便」,
所以還真的會亂翻書擷取片段觀念用上繼承跟多型,
還能生出一個很白目的繼承樹出來,
只有寫的那個人自己知道該怎麼去用它。
> 有人真的只學C++就能寫出物件導向架構的程式?
> 這是不可能滴!
這還是有可能的,
包括我和我身邊不少人都是光看書名裡有「C++」的書,
就學成基礎觀念和基本應用的方法,
之後才去看比較一般性非特定語言的物件導向書籍來加強觀念,
其實 C++ 存在很多進階書籍,
取其內容聯集常能構成 1/4 - 1/2 本不同專業教科書的內容。
你可能會覺得書名有 C++ 跟只學 C++ 是不同的兩回事,
但是很多人當初讀那些書的原意就只是要精進 C++,
像是 Effective C++、Exceptional C++、Inside the C++ Object Model 等等。
> 至於模擬器這種需要根據硬體特性寫作的東西,
> 程序導向才是最優美的。 硬要套物件導向的觀念
> 進去,會被很多繁瑣的細節搞到架構出不來。
套錯誤的物件導向觀念進去才會發生這種事情,
物件的分類和繼承體系設計,
並不能被現實環境的物體牽著鼻子走,
而是應當從工程角度出發去做規劃,
很多教科書為了方便讀者理解舉了一些不好的例子,
卻又沒有指出實際上那樣做可能發生的問題,
才會讓一堆新手搞不清楚狀況就錯誤規劃,
結果掉進一堆本來不該出現的繁瑣細節深淵之中。
> 什麼??
> 有人天真的認為同樣寫一個 function, 在把他放進去
> class以後就會變得比較好維護?
當存在多個 namespace 的時候,
如果把 function 封裝進 class 會容易維護是真的,
否則不熟悉 Interface Principle 或 Koeing Lookup 的 programmer,
容易寫出潛藏 ambiguous function call 的 code 出來,
讓別人以及他自己在使用上遇到一些麻煩;
而 member functions 跟 class 有較強烈的關聯性,
所以 member functions 會較優先被搜尋到,
那些對新手來說較詭異的問題也得以避免。
不要以為這種問題很少發生,
我三天兩頭就遇到有人丟 ... ambiguous ... candidates are ... 的 error 來問。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰ * From:61-230-216-187.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎
[修改]tinlans:61-230-216-187.dynamic.hinet.net 18/06/01 11:58:59
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章