還給新生上 C 語言,它們 OUT 了嗎?

2024年2月6日 32点热度 0人点赞

這是一個好問題。簡單的回答:C語言本身並不過時;但教授C語言的願景可能需要與時俱進!

C語言本身是一門經典的編程語言,它在操作系統內核、驅動程序、芯片開發、嵌入式等基礎軟件、設備的開發中,依然扮演著舉足輕重的角色。

但如此經典的編程語言,為什麼會讓人覺得OUT呢?

我想主要原因是上述C語言大放異彩的領域,已經慢慢趨於平靜,眾所周知,今天更有“錢”途的軟件開發更多集中在互聯網、移動、AI等高級應用的開發上面。所以,相比之下越來越多的開發者在向JAVA、Python、Go、Rust這些新型語言上發力。

個人覺得:當前的C語言課程最大的問題是:教學模式上有一些問題,很多時候沒有發揮出C語言的核心價值。例如:今天的C語言教學,可能還是所謂的“英語”式教學模式:牢記語法,快速上手編程。這種方法還是比較經典的,阿佈沒有批評的意思。但問題是這種學習方式,AI比我們人類學生更強、更有優勢!你需要多久寫一個經典的排序算法?AI需要多久?你解決一個leetcode問題,AI需要多久?

人類工程師的護城河,絕對不是人腦有限的記憶力,而是創造力!我們都知道C語言是一門接近底層的高級語言,但實際教學中,它就是一個“選擇題”或者“填空題”。C語言如果不能從CPU、操作系統的層面,把整個計算機體系知識貫穿起來的話,它的功效就會大打折扣。以這個視頻“CPU眼裡的:內存屏障 | 亂序執行”為例,視頻用簡單的C語言,解釋了著名的CPU亂序執行問題。

當然,該視頻系列的內容還很多。當你開始用CPU的視角看待C語言程序的運行時,你在使用其他編程語言:C ,Java,Python的時候,更能充滿信心。一個有趣的現實就是,本系列的紙質書籍《CPU眼裡的C/C 》的很多讀者是Java程序員。

總結一下,我們需要利用C語言,親手觸摸一下現代計算機系統。人類程序員應該對編程語言、計算機系統有相對全面、深刻的認識,不能僅僅停留和羈絆在語法層面,通過良好的內功去把控整個系統,並善用AI去生成一些千篇一律的代碼。

如果認可阿佈的觀點,或喜歡這種描述方式,也可以看看由阿佈編寫,多位微軟大佬聯袂推薦的新書《CPU眼裡的C/C 》,祝學習順利!

#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 樣式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); }