顯示廣告
隱藏 ✕
※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2019-06-06 00:10:33
看板 Gossiping
作者 jserv (松鼠)
標題 Re: [問卦] 為甚麼C語言自訂函式一定要在主程式上面?
時間 Wed Jun  5 21:55:19 2019


※ 引述《fragmentwing (片翼碎夢)》之銘言:
: 如題
: 最近終於開始自學C語言
: 為甚麼C語言一定至少要放個原型在主程式上方才行?
: 或者說,明明都是一行一行讀取,其他語言是怎麼做到可以把函式到處亂擺的

這問題非常好,我不知為何會引來負面聲音,可能是原發問人沒有把「其他語言」清楚
標示出來吧?抑或是問題太簡短呢?有趣的問題如果被忽略,那真是太可惜。

其實由 Dennis M. Ritchie (以下簡稱 dmr) 開發的早期 C 語言編譯器 [1] 沒有明確
要求 function prototype 的順序。dmr 在 1972 年發展的早期 C 編譯器,原始程式碼
後來被整理在名為 "last1120c" 磁帶中 [2],我們如果仔細看 c00.c 這檔案,可發現
位於第 269 行的 mapch(c) 函式定義,在沒有 forward declaration [3] 的狀況下,
就分別於第 246 行和第 261 行呼叫,奇怪吧?

而且只要再瀏覽 last1120c 裡頭其他 C 語言程式後,就會發現根本沒有 #include 或
#define 這一類 C preprocessor [4] 所支援的語法,那到底怎麼編譯呢?在回答這問題
前,摘錄 Wikipedia 頁面的訊息:
> As the C preprocessor can be invoked separately from the compiler with
> which it is supplied, it can be used separately, on different languages.
> Notable examples include its use in the now-deprecated imake system and for
> preprocessing Fortran.

原來 C preprocessor 以獨立程式的形式存在,所以當我們用 gcc 或 cl (Microsoft
開發工具裡頭的 C 編譯器) 編譯給定的 C 程式時,會呼叫 cpp (伴隨在 gcc 專案的
C preprocessor) 一類的程式,先行展開巨集 (macro) 或施加條件編譯等操作,再來
才會出動真正的 C 語言編譯器 (在 gcc 中叫做 cc1)。值得注意的是,1972-1973 年
間被稱為 "Very early C compilers" 的實作中,不存在 C preprocessor (!),當時
dmr 等人簡稱 C compiler 為 "cc",此慣例被沿用至今,而無論原始程式碼有幾個檔
案,在編譯前,先用 cat [5] 一類的工具,將檔案串接為單一檔案,再來執行 "cc"
以便輸出對應的組合語言,之後就可透過 assembler (組譯器,在 UNIX 稱為 "as")
轉換為目標碼,搭配 linker (在 UNIX 稱為 "ld") 則輸出執行擋。

所以說,在早期的 C 語言編譯器,強制規範 function prototype 及函式宣告的順序
是完全沒有必要的,要到 1974 年 C preprocessor 才正式出現在世人面前,儘管當時
的實作仍相當陽春,可參見 dmr 撰寫的 "The Development of the C Language" [6]

C 語言的標準化是另一段漫長的旅程,來自 Bell Labs 的火種,透過 UNIX 來到研究
機構和公司行號,持續影響著你我所處的資訊社會。

你或許會好奇,function prototype 的規範有什麼好處呢?這就要從 "Rationale for
International Standard -- Programming Languages -- C" [7] 閱讀起,依據 C9X
RATIONALE 的第 70 頁 (PDF 檔案對應於第 78 頁),提到以下的解說範例:

    extern int compare(const char *string1, const char *string2);

    void func2(int x) {
        char *str1, *str2;
        // ...
        x = compare(str1, str2);
        // ...
    }

編譯器裡頭的最佳化階段 (optimizer) 可從 function prototype 得知,傳遞給函式
compare 的兩個指標型態參數,由於明確標注了 "const" 修飾子,所以僅有記憶體地

址的使用並讀取相對應的內容,但不會因為修改指標所指向的記憶體內容,從而沒有產生

副作用 (side effect)。這樣編譯器可有更大的最佳化空間,可對照「你所不知道的 C
語言:編譯器和最佳化原理篇」,得知相關最佳化手法。

一如 C9X RATIONALE 提到,C 語言和其他受 Algol 影響的程式語言,都具備 function
prototype 機制,這使得編譯時期,就能進行有效的錯誤分析和偵測。無論是 C 語言、
B 語言,還是 Pascal 語言,都可追溯到 ALGOL 60 [9]。


ALGOL 是Algorithmic Language (演算法使用的語言) 的縮寫,提出巢狀 (nested) 結構
和一系列程式流程控制,今日我們熟知的 if-else 語法,就在 ALGOL 60 出現。
ALGOL 60 和 COBOL 程式語言並列史上最早工業標準化的程式語言。
可參見本看板 #1SdKXN4t
Re: [問卦] 為什麼只有C語言 A B語言呢? - Gossiping板 - Disp BBS
[圖]
[圖]
[圖]
 Han3 Kiang O2 (客家語四縣腔) 電腦程式語言的發展是個迷人的主題,畢竟人們一直都想駕馭著電腦,而程式語言就是 其中最關鍵的議題之一。為何我們該認真看待程式語言的歷史呢?因為即便某些程式
 

程式語言的演化,深受底層工具和硬體限制的影響,這次探討的 function  prototype
及函式宣告的順序,其實就反映出編譯器演化的歷程。人類史上第一個編譯器,A-0
System 開發於 1951-52 年間,注意到當時的用語是 "System",而且名稱 A-0 代表

Arithmetic Language version 0,與其說是今天我們提及的高階語言編譯器,不如說是

程式的載入器 (loader) 或連結器 (linker)。
相關訊息可參見本看板 #1RhWSNPG
Re: [問卦] 寫程式語言的語言是怎麼來的? - 看板 Gossiping - 批踢踢實業坊
[圖]
[圖]

這問題困擾我超過 25 年,身為「文組」的我,希望可以解答部分提問。 致力於人文和科學教育的 Crash Course [1] 有部很棒的短片,可在十分鐘內 回覆上述大部分問題,請見:  短片中提及人類史上第一個編譯器,A-0 System [2] 開發於 1951-52 年間,注意
 

黑格爾在其 1820 年的著作「法哲學原理」提到: (德語原文)
> Was vernuftig ist, das ist wirklich;
> und was wirklich ist, das ist vernuftig.

英語可解讀為 "What is rational is actual and what is actual is rational.",
像是 C 語言這樣的工業標準,至今仍活躍地演化,當我們回顧發展軌跡時,凡是合乎
理性 (vernuftig),也就必然會出現、或成為現實 (wirklich),反過來說也成立。

甚至我們可推敲 C9X RATIONALE 字裡行間,每個看似死板規則的背後,其實都可追溯出
像是上方的討論。

歡迎關注「你所不知道的 C 語言」系列講座:
    https://hackmd.io/@sysprog/HJpiYaZfl
「你所不知道的 C 語言」系列講座 - HackMD
[圖]
# 「[你所不知道的 C 語言]( 回歸第一手資料,透過反思 C 語言程式設計的細節,重新學習電腦原理 -- [jserv](ht ...

 

千萬別忘了 C 語言的發展就是為了開發 UNIX 作業系統和相關系統程式,而 Linux 核心
自然就是將 UNIX 精神發揚光大的智慧結晶,歡迎關注「Linux 核心設計」課程,附有
線上教材:
    http://wiki.csie.ncku.edu.tw/linux/schedule

[1] Very early C compilers and language,
    https://www.bell-labs.com/usr/dmr/www/primevalC.html
[2] 位於 GitHub 的副本,
    https://github.com/mortdeus/legacy-cc/
GitHub - mortdeus/legacy-cc: The earliest versions of the very first c compiler known to exist in the wild written by the late legend himself dmr.
[圖]
The earliest versions of the very first c compiler known to exist in the wild written by the late legend himself dmr. - mortdeus/legacy-cc ...

 
[3] https://en.wikipedia.org/wiki/Forward_declaration
[4] https://en.wikipedia.org/wiki/C_preprocessor
[5] cat 工具程式的作用是 "concatenate and print file",
    https://www.unix.com/man-page/posix/1posix/cat/

 
[6] The Development of the C Language,
    https://www.bell-labs.com/usr/dmr/www/chist.html
[7] Rationale for International Standard -- Programming Languages -- C
    http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf
[8] 你所不知道的 C 語言:編譯器和最佳化原理篇,
    https://hackmd.io/@sysprog/Hy72937Me
你所不知道的 C 語言:編譯器和最佳化原理篇 - HackMD
[圖]
# [你所不知道的 C 語言]( *以 GNU Toolchain 為探討對象,簡述[編譯器如何運作,以及如何實現最佳 ...

 
[9] Algol 60,
    https://en.wikipedia.org/wiki/ALGOL_60

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.82.61 (臺灣)
※ 文章代碼(AID): #1SzydGFl (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1559742928.A.3EF.html
XXXXHAY: 頭1F 06/05 21:55
Costco5566: hello world2F 06/05 21:56
sujianwei20: 前十3F 06/05 21:56
moswu: 我也這麼覺得4F 06/05 21:56
jiajia1 
jiajia1: 快來推ㄍ不然被當文組5F 06/05 21:57
Ericz7000: 前十6F 06/05 21:57
he00504616: 先推7F 06/05 21:57
angerD: 先推8F 06/05 21:57
siamese: 這不是基本的嗎9F 06/05 21:58
a22918097: 推10F 06/05 21:58
VXcc: 嗯嗯嗯 就是這樣11F 06/05 21:58
ggBird: 神12F 06/05 21:59
fox875566: 看不懂13F 06/05 21:59
Cybershit: 大大安安推一個14F 06/05 22:00
Friend5566: 推一下 免得被說看不懂15F 06/05 22:00
redDest: 推16F 06/05 22:00
landysh: 推17F 06/05 22:00
lturtsamuel: 看到這篇好像我不是CS的一樣QQ18F 06/05 22:00
rewrite404: 朝聖19F 06/05 22:01
g5637128: 跪著推20F 06/05 22:01
pzyc79: 這就是為什麼我恨C21F 06/05 22:01
gungunme5566: 專業22F 06/05 22:01
brian1015: 推23F 06/05 22:02
Mesa5566: 116一定是廢文 幫補血24F 06/05 22:02
obdv: 淦 這樣摸不到C罩拉25F 06/05 22:02
barry910543: 大神又出來普渡眾生了26F 06/05 22:02
HowieH: 看不懂還是要推27F 06/05 22:02
NTULioner: 嗯嗯 我也是這樣想的28F 06/05 22:02
Turas: CCC29F 06/05 22:02
OGCOGCOGCOGC: 看不懂30F 06/05 22:03
TrevorStory: 推31F 06/05 22:03
salesperson: 恩恩跟我想的一樣 只是我懶的打32F 06/05 22:03
cjamhe01385: 每次線上講座必看,可惜在新竹上班,不然就去旁聽了33F 06/05 22:03
ymx3xc: 我也是這麼想的34F 06/05 22:04
compuworld: 朝聖推35F 06/05 22:04
hizuki: 講古36F 06/05 22:04
WYchuang: 老闆問我為什麼跪著上班37F 06/05 22:04
jackyT: 這個釣到jserv太扯38F 06/05 22:05
FlynnZhang: 卡39F 06/05 22:05
jimmy1999: 錢錢40F 06/05 22:05
allomifo: 推41F 06/05 22:06
tongzhou: 朝聖42F 06/05 22:06
eric21489: 太神啦 釣到ㄌ43F 06/05 22:06
tcfsh510: 推 朝聖44F 06/05 22:06
Ericz7000: 之前老師有去交大上物聯網什麼的課啊45F 06/05 22:06
faker007: 看無46F 06/05 22:07
choco7: 恩恩 跟我想得差不多47F 06/05 22:07
nqj: 嗯嗯對丫48F 06/05 22:08
jackwula9211: 不過C++某些時候還是很好用啊49F 06/05 22:08
u04rmp: 快推50F 06/05 22:09
terryshu: 推51F 06/05 22:09
andy188: 前百52F 06/05 22:09
max8568: 有神快拜53F 06/05 22:09
ZhouGongJin: 只能給個讚54F 06/05 22:09
q13461346: 跪了55F 06/05 22:09
rong1994: 嗯嗯 我也是這麼認為的56F 06/05 22:10
nicklyyyy: 嗯,跟我想說的差不多57F 06/05 22:11
mmonkeyboyy: 推一下 認真 還用RANDY的書 XD58F 06/05 22:11
ajason0753: 先跪再說59F 06/05 22:11
Hacker8246: 沒錯 就是這樣60F 06/05 22:12
jahfone: 那為什麼有些程式語言不這樣用呢?61F 06/05 22:13
devilkool: 神62F 06/05 22:13
Fice: 推63F 06/05 22:13
chaige: 跟我想得差不多 中間有地方小錯但無傷大雅 可以接受64F 06/05 22:13
DanielHAO: 恩恩跟我想的一樣65F 06/05 22:13
a0652qj: 完全看不懂,剛好也箭頭XD66F 06/05 22:13
ploveh: jserv下凡67F 06/05 22:13
hardway: 太會了吧68F 06/05 22:14
hohamita: 推69F 06/05 22:14
s0805744: 看完覺得大學對不起我教授70F 06/05 22:14
jserv: @jahfone, 最初C語言不用理會函式定義的順序,最終能夠處理71F 06/05 22:15
jserv: 符號(symbol)之間的相依狀況即可。是後來C語言才變嚴格的
kipi91718: 推! 好詳細長知識了 寫了這麼久的C都不知道標準來由73F 06/05 22:15
cattgirl: 你在寫期刊74F 06/05 22:17
jserv: @Ericz7000, 之前我在交大資工系還開了「自由開源軟體與75F 06/05 22:17
CityRanger: 廢物cs生看不懂 QQQQQ76F 06/05 22:17
jserv: 專案協作」: https://sites.google.com/site/fossapc/77F 06/05 22:17
自由開源軟體與專案協作
[圖]
此門課程分為二大部份,第一部份為與自由開源軟體專案協作相關的專題演講課程,包括技術平台的應用,以及授權知識的理解;第二部份為多人協同專案的實際參與,不限定參與方式必然為程式碼之寫作,但亦必須與自由開源軟體專案共工模式具有正相關,期末評分,則綜合演講課的出席比例,以及專案協作成果的報告內容為評鑑標準。 ...

 
jserv: @kipi91718, 沒事,我只是練習打字,下次請鼓勵發問的人78F 06/05 22:18
donkilu: 推79F 06/05 22:19
mmonkeyboyy: 這本書台灣不是很多人用的  根本是OS基石80F 06/05 22:19
jserv: @jackwula9211, 針對 C++ 可講古的題材更多啊...嘶81F 06/05 22:20
iamnotme: 有神快拜82F 06/05 22:22
Gold740716: 但既然身為編譯式語言,完全可以分析完整份檔案再開始83F 06/05 22:23
smonke: 好~! 完全不懂...還是給推84F 06/05 22:23
justatree: 推85F 06/05 22:23
iverlung: 有神快拜86F 06/05 22:23
palapalanhu: 神87F 06/05 22:23
Gold740716: 最佳化吧?哪個在先哪個在後其實可以忽略。88F 06/05 22:24
jserv: @Gold740716, 涉及到 side effect89F 06/05 22:24
Gold740716: cs 這篇看不懂可以自盡了90F 06/05 22:24
kyrie77: 嗯嗯嗯 跟我想的差不多91F 06/05 22:25
amethystboy: 一定要先推92F 06/05 22:26
cattgirl: 你是不是成大教授93F 06/05 22:26
aa55667878: 推94F 06/05 22:26
lusifa2007: 快推一個不然人家以為我們不懂Xd95F 06/05 22:26
nonopig: 推 跟我想的是一樣96F 06/05 22:27
cattgirl: 我朋友交大教授 與你決一死戰97F 06/05 22:27
fjyang: 神98F 06/05 22:28
jserv: @cattgirl, 可以請你朋友等我大學畢業,再來決鬥嗎?99F 06/05 22:28
ry3298: 推100F 06/05 22:29
DarkerDuck: 推推101F 06/05 22:29
kis28519: 有神快拜102F 06/05 22:30
ccucwc: 認真推103F 06/05 22:32
roro0: 好強 XD104F 06/05 22:34
kingofage111: 推105F 06/05 22:35
ERT312: 學程式語言還要讀歷史106F 06/05 22:35
yuxds: 推107F 06/05 22:37
justastupid: 嗯嗯 你說的沒錯108F 06/05 22:41
wju1230: 有貓給推109F 06/05 22:41
ShittyFace: 先推再看110F 06/05 22:41
bmks: 推個111F 06/05 22:41
vita88: 好啦,我看不懂112F 06/05 22:42
Wand 
Wand: 推113F 06/05 22:42
skhten: 怕114F 06/05 22:42
arsonlolita: 嗯嗯115F 06/05 22:42
ab37695543xs: 所以簡單的來說就是為了更容易在編譯時期找到錯誤與116F 06/05 22:46
ab37695543xs: 最佳化囉?
atpx: 算是有表達到我的想法, 給你75分118F 06/05 22:46
knme: 推119F 06/05 22:48
ljsnonocat2: 有神快拜120F 06/05 22:51
sismiku: 恩 跟我想的差不多121F 06/05 22:52
KNVSEOC: 就算一知半解也要推122F 06/05 22:53
minicoke: 德文你也懂?123F 06/05 22:55
pazoo: 推124F 06/05 22:55
derekjj: 有神快拜125F 06/05 22:56
kiuan: 推126F 06/05 22:56
gakaza: 跪推 +1127F 06/05 22:57
fallen01: 推128F 06/05 22:59
FJHS: 朝聖129F 06/05 23:02
scoutpioneer: 嗚嗚身為理組還是看不懂130F 06/05 23:03
jserv: @ab37695543xs, 回顧程式語言的發展,人類的想像力很豐富,131F 06/05 23:04
asiamistborn: 7777777777777132F 06/05 23:04
jserv: 像是LISP這類對應到數學抽象思考的語言,很早就提出了。但C133F 06/05 23:04
jserv: 卻走了實務導向的路途,也就是一方面讓語言本身定義嚴謹,
jserv: 另一方面確保編譯器和連結器得以有效實作出來
derson: 只能跪著推了136F 06/05 23:05
silentduke: 朝聖推137F 06/05 23:06
yoshihuang8: 推138F 06/05 23:06
pandatom: 朝聖jserv139F 06/05 23:07
voyhanxu: 快推!免得被別人發現我文組的!140F 06/05 23:07
frk2z125: 推 以前計算機很弱,對於記憶體與size更是斤斤計較, 所141F 06/05 23:09
frk2z125: 以能從人這邊規範就規範
qwer338859: 神143F 06/05 23:10
Missnanako: 嗯嗯144F 06/05 23:11
Misoshiru: 嗯嗯我也是這麼想的 只是懶得打145F 06/05 23:13
ericleft: 原來如此146F 06/05 23:13
lainhoter: 初音只是個軟體147F 06/05 23:14
vasia: 全台文組同學深表贊同148F 06/05 23:15
danny30715: 朝聖149F 06/05 23:15
blackman5566: 寫了大半輩子程式也看不懂這篇在說什麼 只能推了150F 06/05 23:16
probity: 我早告訴過你了151F 06/05 23:18
schumi7401: 正如我想152F 06/05 23:20
lolitass: 趕快推 以免被發現完全看不懂153F 06/05 23:21
youngglasses: 簡單說就是為了最佳化啦.... 越早將宣告的部分寫出154F 06/05 23:23
youngglasses: 在轉換的初期處理的時候就可以更好的安排資源
mike40709: 沒錯跟我想的一樣156F 06/05 23:23
xu3ru0454: 你及格了!157F 06/05 23:23
blackbottle: 對對對沒錯沒錯 就是這樣 我也是這麼覺得 只是還沒來158F 06/05 23:25
blackbottle: 得及寫文章
Everyeeeee: 我知道啊160F 06/05 23:25
isisss: 嗯嗯 我也這樣覺得161F 06/05 23:26
gabriel: 八卦好文必須推162F 06/05 23:28
amALu: .........163F 06/05 23:31
eric112: 原來大家都這樣想164F 06/05 23:32
fg008kimo: 好聞必推165F 06/05 23:32
SamuelLuo: 推,沒想到還能看到德文166F 06/05 23:36
liaon98: 跪著讀167F 06/05 23:36
erre: 這其實真的很基本……168F 06/05 23:37
Account4PTT: 推169F 06/05 23:39
bbo6uis122: 推170F 06/05 23:40
RoaringWolf: 恩恩,對,就這樣嘛,恩171F 06/05 23:41
Bright: 嗯嗯 對172F 06/05 23:45
zs84: 推173F 06/05 23:47
loet: 推174F 06/05 23:48
omegajoker: 推175F 06/05 23:49
coolda: 先推再看176F 06/05 23:50
notneme159: 推個177F 06/05 23:53
tommy6300167: 跟我想的差不多  打到一半被你先回答了178F 06/05 23:53
ck030561: 唉 本來想開示的 你都講完了179F 06/05 23:54
MagicSword: 嗯嗯,我也這樣覺得。180F 06/05 23:54
randy061: 雖推,但太硬了… 無法看完181F 06/05 23:55
shishe: 推推 學了C語言 但看到你的之後感覺什麼都沒學過182F 06/05 23:55
imaxpayne: 跟我想的一樣183F 06/05 23:56
Matz: 推推184F 06/05 23:57
platinum5566: 長知識了185F 06/05 23:59
a5245242003: 推186F 06/06 00:00
panda04056: 推推187F 06/06 00:00
tweence:188F 06/06 00:05
tom83615: 嗚嗚嗚我廢物  只看得懂3成189F 06/06 00:07
qscez: 推190F 06/06 00:07
jai166: 竟然釣到大神191F 06/06 00:07

--
※ 看板: Gossiping 文章推薦值: 1 目前人氣: 0 累積人氣: 1302 
作者 jserv 的最新發文:
  • +38 Re: [問卦] 有GNU/Linux那有BSD/Linux嗎? - Gossiping 板
    作者: 140.116.246.163 (台灣) 2022-06-12 12:30:49
    回答這問題之前,我們應該先思考「什麼是 BSD?」 依據 FreeBSD 網站 的描述,FreeBSD 衍生自 BSD,後者則是 "the version of UNIX developed …
    49F 38推
  • +404 Re: [問卦] 要怎麼用針在光碟上戳出一個作業系統 - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-09-04 04:54:37
    「既然你誠心誠意地發問了,我們就大發慈悲地告訴你」(語出「火箭隊」) 這則笑話在 2010 年就出現巴哈姆特電玩資訊站 ,內容改寫自中國網友的創作, 已有十餘年,不過該笑話的弊端在於「針」。DVD 燒 …
    499F 407推 3噓
  • +83 Re: [問卦] 如何在Linux底下自幹win3.1系統? - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-09-03 12:41:58
    我是跟鄉民進來看熱鬧的,我跳進來了,我又跳出去了,打我啊笨蛋! (取自方唐鏡 名言) 學校老師應該忙著開學事宜,我幫他們回覆你的提問。 原題「在 Linux 系統底下要怎麼自己搞 win3.1 呢?」 …
    101F 83推
  • +230 Re: [問卦] 在卡上打洞寫程式是什麼感覺 - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-04-23 06:37:27
    剛好我需要跟學生解釋為何 Linux 核心原始程式碼的風格規範 中,限制一行至多 80 個字元,其典故跟「打孔卡」(punched card) 有關。 1890 年代,美國人口普查就使用新發明的穿孔卡 …
    247F 230推
  • +439 Re: [問卦] 原來上 ptt 可以學 linux 操作.. - Gossiping 板
    作者: 140.116.246.163 (台灣) 2021-04-23 00:01:26
    這恰好連結台灣特有的 BBS (電子布告欄) 文化及早期 Linux (和 BSD) 文字編輯器的 關聯。也讓我想起一年前過世的陳昇瑋博士,他的舊名是陳寬達,並以 Xshadow 的名號 馳名於早期的 …
    512F 444推 5噓
點此顯示更多發文記錄
分享網址: 複製 已複製
( ̄︶ ̄)b klin1 說讚!
1樓 時間: 2019-06-05 22:50:23 (台灣)
  06-05 22:50 TW
跟我前幾天上課說的差不多
2樓 時間: 2019-06-05 23:22:29 (澳門)
  06-05 23:22 MO
學用語言和了解語言是兩種不同的概念,好吧⋯我兩種都不會,現在只連寫vba都瘋狂copy
3樓 時間: 2019-06-06 22:46:19 (台灣)
  06-06 22:46 TW
一般人不用特別去學C語言啦~ 你要是台清交成的,會演算法,很容易就去聯發科,在那用C去寫protocol,例如5G晶片的protocol,它的難度不是C語言,而是protocol要與晶片要debug,調適~ 對高材生來說,學這個是瞬間的,C語言只是工具,幾天就會敲了,主要還是研究~
4樓 時間: 2019-06-06 22:51:17 (台灣)
     (編輯過) TW
這說明什麼問題,一般人你學C,你會找不到頭路,那些公司根本不看你會不會C語言,首先看你學歷,想學寫程式找頭路的,跳過C,直接去學寫網頁、學別的高級語言比較實在~
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇