|
匯編是大陸用法3 m: f/ x% y" ]% }. `! i9 Y; s# J
就是台灣的組合語言 (我想應該很多人出差去過大陸的都知道 )$ T- t( A6 N) ^+ Y9 x
3 |1 e, K4 b0 G P
其實很多compiler都會出錯' Q, ~3 v9 b* V; S' N6 f% G) J8 U
甚至連CPU都有bug....$ w( d p) G' o3 }2 I
assembly的確出錯的機率比較小
9 k$ k: ]- g& p' a! @畢竟是貼近機器碼的思維& L1 S; }6 q- {- ?4 e1 y+ s6 ?
所以編譯器比較容易撰寫8 b+ x5 C7 |+ R0 d
中高階複雜語言的compiler除了要follow一些spec之外
" L4 a$ ]8 I. y/ P7 _還要被拿去用在各種所謂『指令集相容』的處理器
6 w8 _+ \& M7 x0 c7 b: @有些cpu的bug也透過修改compiler gen code的方式解掉, k5 x8 \3 X8 s6 I7 G
越高階的語言編譯器就相對就比較難寫! H/ J! D' n0 L* w8 z; ]" e% u
所以c/c++ compiler問題也真的是比較多
O: E' t, B. }3 }寫貼近hw的程式碼的人
! G# @6 W& a' k" E大概都預期要小心的確認data size/length Z8 ?: |: c- b! m1 t$ R8 D
; c3 @6 h8 [# [( w& ~- r不過語言無分好壞) b0 X3 ^- Q6 O4 h( [0 T9 Q6 e
它們的誕生都是有其目的5 A$ |/ F. f, K# {
也都可以在某些考量上表現得比其他更適用" @ X4 W6 @3 s$ `+ d$ m# q
例如你可以用assembly code寫一個大型3D online game, o! G$ v8 z% m( r
但是開發時程可能會比較久,要maintain可能也比較困難....
/ G0 X, y2 Q3 Q
, j$ O3 P+ B" x$ g+ H' E' P至於debug大概是工程師永遠的痛啊∼
# b# U3 D; [. J1 b能夠一眼就找出問題的神人
3 W, M8 K5 W0 q背後總是有強大的技術知識在支持他 |
|