標籤:

為什麼軟體工程專業要學習大學物理?


說一個很現實的幾乎每一位前端或者App程序員都會遇到的問題:實現逼真的動效。經常有程序員問我為什麼自己實現的動效看上去那麼假,或者不理解動效API的參數而無法達到想要的效果。其實所謂的「真」就是符合現實世界中物體的運動規律,就拿著名的橡皮筋回彈效果來說(蘋果為此滿世界告安卓),它是由彈力和阻尼共同作用下的運動,可以表示成一個二階常微分方程:

m ddot{x} + c dot{x} + k x = 0

所有看上去逼真的回彈效果都只不過是上面方程的一個而已,你沒看錯,它還沒有一句列印 Hello World 的代碼長。這畢竟還是一個方程,我們還要用代碼來模擬它,也很簡單(為了這個問題臨時寫的,很粗糙):

var d = {x: 0, y: 0};
var v = {x: 0, y: 0};
var k = 25;
var damp = 3;

function update(dt) {
if (dragging) {
d.x = mouse.x;
d.y = mouse.y;
v.x = 0;
v.y = 0;
} else {
var acc = {x: 0, y: 0};
acc.x = -k * d.x - damp * v.x;
acc.y = -k * d.y - damp * v.y;
v.x += acc.x * dt;
v.y += acc.y * dt;
d.x += v.x * dt;
d.y += v.y * dt;

}

}

可運行的例子
在這裡,需要瀏覽器支持 canvas, IE 要求 IE10(拖動裡面的綠色方塊):Physical Animation

可以想像不到20行代碼就模擬了生動的橡皮筋回彈效果么?代碼中的 d 對應方程的 x, v 對應 x 的一階導數,acc 對應 x 的二階導數,damp 對應方程的 c,表示阻尼係數,k 表示彈力係數(還記得高中學的胡克定律么?),mouse表示的是滑鼠當前的位置,dragging 表示滑鼠是否正在拖拽。如果你懂物理這段代碼應該很簡單,如果你不懂那麼這就是為什麼軟體工程要學大學物理的原因

可能有人會覺得為了動效而學物理未免小題大做,其實軟體的本質就是對現實世界建模,而物理學在這個方向上已經摸爬滾打了幾百年,有大量知識可以直接遷移過來,上面的例子只是滄海一粟。


題主你好。

雖然這個問題關注的人並不多,回復基本上是灌水,但是剛好最近作業不是很多,我想好好聊一聊我的理解。

我和你有過類似的困惑,而且這些困惑往往在寫不出作業或者期末複習的時候冒出來:我是計算機學院的,以後就是要當一個程序員而不是物理學家,為什麼要學大學物理?我以後估計怎麼都不會碰密碼學,為什麼要學代數結構和數理邏輯?圖形學這東西我這輩子可能都不會碰,為什麼還要花時間弄懂這天書一樣的公式?

當時學得很痛苦,也不是特別感興趣,特別是考試要考薛定諤方程,什麼勢井的時候那種頭大的感覺我還記憶猶新。帶著這些情緒去學,這些課程我都學得懵懵懂懂,我的相關課程的成績都不是特別好看。

這主要是自己對大學培養目標的期待與大學培養人才目標的差異導致的。

大學培養人才的目標,跟技校相比不是熟練的某個技術方向的技術工人,而是素質更全面的「通才」,甚至可以說是「科學家」。而我,最開始我認為計算機系培養的應該是一群程序員,能解面試題,做漂亮的前端,寫高效的後台,混口飯吃就差不多了。

後來我發現,那些技能,其實技校的人也都在學,還做得比我好,因為他們不需要花太多時間在跟程序開發本身「沒有關係」的事情上面,做的都是實用性的事情。那時候我就開始思考,到底大學出來的學生,跟技校出來的學生,甚至是主要以就業為導向的學校出來的學生,能有什麼差別?

直到之後我的一些經歷讓我明白,原來大學物理中的一些方法和思維方式,恰恰是在各個領域都通用的方法,不僅僅是工作,也有生活。當然,不僅僅是物理,任何學科的技能和方法都可能對我們有所幫助,但物理是用作高等教育應該是最合適的,跟化學生物相比,整個體系更具體和嚴謹。

李開復先生在自傳《世界因你而精彩》中,有一句話[1]多多少少有點這個意思:

教育的本質是什麼?當我們將在學校所學的一切全部忘記,剩下的就是教育的本質。

同時,大學物理能夠讓你在一個你接觸了若干年的領域系統地訓練你使用現代數學工具:線性代數、微積分和統計學,這些東西軟體領域有廣泛應用,卻很難再找到如大學物理這樣的訓練體系的替代品,也不是很有必要。

從幾個簡單的例子入手吧。

我女朋友租的房子里有一台新安裝的燃氣熱水器,將水燒熱之後通過管道輸送到洗手間,再跟冷水混合到一起之後,得到溫水輸出,水溫的調控是通過出水段如下圖所示的閥門控制冷熱水混合比例達到的。

然而這個熱水器有一個奇怪的問題,就是每次閥門由熱水向冷水調節只要超過一個位置,它就會熄火。由於即便是最低檔的水溫出水還是太熱,我女朋友沒辦法洗澡,叫房東來了幾次也無濟於事(房東聲稱這是新的熱水器,也叫了售後來,表示沒有問題)。

無奈只能自己動手解決問題。我首先把水閥卸了開始尋找原因,發現水閥連接處牆壁內的水管有一處彎折,因此熱水出水口非常窄,這導致熱水出水的水壓比較低。而閥門冷熱水是連通的,根據多年使用燃氣熱水器的經驗,我推測應該是由於熱水管那個窄口的存在,導致本來就水壓本來就比較低的熱水在與冷水水管連通後,熱水器內水流量過小為了避免內部過熱而啟動的熄火保護。

注意我上面這段分析,都是自然而然的從腦子裡流出來的,就像常識一樣,但是我女朋友卻做不到,因為她學的是文科,不知道伯努利方程,連通器的性質也忘記的差不多了,更重要的是一般文科不太需要這樣的建模過程,而這種事情我們在解物理題的時候做得太多了,不是么?飛行的滑塊,偏轉的電子,飽和的電容……

(應女朋友要求加入此段:答主為了襯托自己的理科生邏輯性強的優越感,強行把女朋友描述成毫無常識的傻白甜,對於女朋友本身聰明伶俐的形象造成極大的影響,特此澄清和說明。)

這就是五年的中學物理學習加上大學物理訓練出來的分析思維——水流經過熱水器再出水的整個過程被抽絲剝繭簡化成一個腦海中的模型,然後分析出原因所在。

分析完了還要解決問題,熱水器的火力開關已經開到最小,水流已經開到最大,出水管道在牆內不能更換,水壓也不受控制,怎麼辦?

最後我的解決辦法是把熱水器外的燃氣閥門從全開的狀態打到半開,減小進氣量,問題成功解決,從此女朋友愉快地洗上了熱水澡。

自始至終,這些想法都是自然而然的一種內化的能力,而這時候我才發現,沒有經過物理思維訓練的人,是很難做到這樣的分析過程的。

還有一個生活中的例子。

女朋友搬新家,買了一個新床,來幫裝床的是個小夥子。床板的連接處是用如下圖所示的釘子連接起來的,當然床板的釘是要比這個長一點,當時我還不知道這個東西叫做自攻釘,只知道這是螺釘。

那個小夥子應該是新來的,發現床板忘記打孔了,他就開始強行擰,累得滿頭大汗。我在一邊觀察這個螺絲釘頭是平的,底部是尖的,就給他提建議說,你可以用鎚子敲進去一點,再開始擰。他試了試,果然好使,效率倍增。最後他感嘆了一句:「哎呀,還是你們上過大學的人腦子好使。」

我想看到這個螺釘的形狀很多人能夠和我有一樣的反應——它就應該是這樣用的。但是這後面蘊藏的是什麼,可能很多人沒有仔細想過。這後面有壓強、摩擦力、斜面等等物理概念。

經驗給了我感性的認知,物理公式和模型給了我理性的理解,然後我二者內化成了一種能力,在碰到類似的問題的時候就自然而然地從腦海中流淌出來,很多時候,我自己都意識不到,覺得這是常識,直到我發現別人做不到的時候,我才知道,原來這是那些看似「與專業無關」的學習和訓練帶來的能力。

前面兩個都是生活中的例子,提出來是因為可能沒有計算機基礎的人也能夠更容易理解。題主既然是軟體學院的,想必一定知道軟體工程師絕不僅僅是「搞安卓的」和「做網站的」,太空梭、機器人、視頻監控等等領域都有大量的軟體工程師,而這些位置的工程師,只會「寫代碼」是遠遠不夠的,還需要了解現代常用的數學工具:線性代數、微積分、統計學,這三個數學分支構成了現在非常火的機器學習的基礎。而這些知識,從數學課上學到的往往非常理論,不直觀,可能很多公式你學過了就忘記了。而實踐它們的最佳領域是哪裡?當然是物理!因為作為一個理工科的學生,你在中學已經有了足夠的解題經驗和認知基礎,你更容易在熟悉的問題上使用一個全新的數學工具。就好比,微元法和微積分本質上都是一個東西,但是卻是兩種截然不同的角度。

接下來我要講的是我最近碰到的機器視覺方面的一個問題。

這個學期我上了我們學校的計算機視覺課程,都做的是一些有趣的問題。由於老師是機器人系的,所以涉及到很多機器視覺的東西。一個有趣的作業就是:如何通過兩個已知位置的相機拍攝的圖片,對目標物體進行3D重構,這是3D電影的基礎,這就是讓你能夠看到栩栩如生的《阿凡達》、《少年派》的看似無用的大學物理理論所涉及的一個點。

上圖吧:

左右兩張圖是同一個物體從不同角度拍攝的圖片。他們重構的結果是這樣的:

可惜時間太緊我沒有時間加上紋理,不然一定更酷炫。助教的重構結果在這裡:

https://www.youtube.com/watch?v=WOAqndrcDIwfeature=youtu.behd=1

抱歉了,可能有的朋友需要自行搭梯子,我這裡放個截圖吧:

這裡面就大量應用到了坐標系變換——這恰恰是中學物理和大學物理裡面區別最大的地方:中學物理訓練的是分析過程,不管什麼方法,解出來就好。而大學物理則更進一步,則需要系統化、標準化的分析流程和建模,比如說,全程使用矩陣求解。這就是為什麼你看到大學物理裡面力學的開始章節彷彿在侮辱你的智商——高中都不會出這麼蠢的題。然而那些只是訓練向量計算過程的題目——這恰恰是中學裡面很少有的。

下面是這次作業的一個理論題,應用的原理非常簡單,只需初中的平面鏡成像,以及高中的立體幾何足矣。

示意圖是我自己畫的,這是我畢生所學的繪畫技巧,太丑還請見諒!

這個題放給一個初中生,只要搞清楚了相關概念列出公式是一定能夠證明出來的。但是我相信絕大部分的中學生都做不出這樣的證明:

這是什麼區別,一個比較直觀的類比是,這類似於解雞兔同籠問題的時候,小學算術法跟中學代數法的區別——從數學工具上說,中學的方法更抽象,更通用。可能對於目前這個問題,兩種方法都能夠得到更正確的答案,但是求解更難更複雜的問題,強大數學工具往往能夠助你一臂之力。

如果說上面都是物理訓練思維和數學工具的話,那下面這個例子則更有趣,是物理理論跟計算機理論的直接關聯。

現在自然語言處理技術的應用非常廣泛,其中包括所謂的輿情分析、機器翻譯、垃圾郵件檢測等等。而這些技術一個很重要的基礎就是資訊理論。

說到資訊理論,沒有人不知道香農。資訊理論裡面很重要的一個概念就是熵。然而熵最開始的定義是從物理學裡面來的,香農收到啟發,將它應用到了資訊理論。而根據維基百科中的描述:

根據Jaynes(1957)的觀點,熱力學熵可以被視為香農信息理論的一個應用:熱力學熵被定義為與要進一步確定系統的微觀狀態所需要的更多香農信息的量成比例。比如,系統溫度的上升提高了系統的熱力學熵,這增加了系統可能存在的微觀狀態的數量,也意味著需要更多的信息來描述對系統的完整狀態。

https://zh.wikipedia.org/wiki/%E7%86%B5_(%E4%BF%A1%E6%81%AF%E8%AE%BA)

資訊理論中的熵又反過來推動了熱力學對熵的理解。可見,現代科學體系並不是獨立的,割裂的,而是相通的。

再說個有趣的例子吧,雖然這並不是大學物理里教的。

相信很多人都聽說過分形學,Matrix67的博客里有大量關於分形的文章,比如7 個分形圖形的動畫演示。

下面就是一個常見的分形圖形,雪花,非常美吧:

可是它可不僅僅是美而已。

我不太了解分形的物理學成因,但是由於它自相似的性質,在資料庫領域,分形具有重要的作用。這個學期我上了一門多媒體資料庫和數據挖掘的課程,老師是H-Index高達107的大神。他在講課的時候就花了很長的時間講分形和分形維數,剛開始我也十分不理解,後來去翻了他說的論文才恍然大悟:

在存儲坐標的時候,為了兼顧查詢和插入效率,出現了Quad-樹,KD樹的數據結構,這些數據結構的複雜度分析就用到了分形學中Hausdorff Dimension和Minkowski–Bouligand Dimension的分析方法。具體細節就不在這裡展開了。

更別說微積分、傅里葉變換等等了,這些在圖像,聲音領域,用得太多太多,但是你要讓一個從未接觸過數字語音圖像的人上課聽這些應用,多半是聽不懂的,而大學物理恰恰是最好的練兵場。

當然,不僅僅是這些。就以我的本科學校為例,我們的課程開設有理論課和實驗課。

當初寫實驗報告的時候,我們本科的要求格外變態。實驗數據必須現場獲取,現場有老師簽字,不許有任何修改,做出來是什麼樣就是什麼樣。不符合預期的統統在報告里分析,如果實在差得離譜的自己下課找時間重做,作圖必須手繪,用作圖紙。

這課程消耗的時間,幾乎是我那個學期花在學習上的時間的一半,遠遠超過專業課程。當時我非常的不理解,學計算機的,為什麼要手繪報告?為什麼要分析液氮和扭稱?為什麼要花這麼長的時間分析實驗過程?別人做過千百次的實驗,為什麼我做不對了我還要花那麼多時間去重做?

但是,後來我才慢慢意識到,正是因為有了這樣看似枯燥無聊費時費力的訓練,我才能夠在生活和學習中具備像前面分析熱水器那樣的分析能力。

程序Debug,你做過吧?計算機系的女生說,能夠幫人Debug的男生最帥了,於是真的有很多很多人,De著De著Bug就De成了男朋友。其實,Debug的過程,跟你做實驗時候實驗結果不符合預期的過程是非常相似的:都是在一個龐雜的系統中,根據結果提供的信息,逆向分析可能出錯的原因,同樣費時費力、同樣考驗耐心。這樣的能力對於一個剛剛會寫Hello World的學生來說,讓他在一個大工程里訓練不現實,但是讓他在物理實驗裡面訓練卻是可行的——因為他已經當了好多年的理科生,做過好多好多類似的物理實驗。

另外,設計實驗也是非常重要的技能。雖然我沒有實際的工作經驗,但是我想真正做起來應該差不多。在產品經理的崗位上,往往需要去做一些用戶需求的調查,用戶實驗的測試,這時候物理實驗裡面那些建模和分析方法就能夠起到作用了。

科學知識是人類智慧的結晶,最好還是不要用「有用」和「無用」這樣功利的心態去看待它。數學家們發展線性代數的時候,也沒有想到日後會被海森堡用到量子力學裡;黎曼發展黎曼幾何學的時候,也沒有想到會被愛因斯坦用到廣義相對論;數學家們研究凸優化的時候,也沒有想過最後竟然會成為機器學習里的一把寶劍……

我在實習的時候,做過一個項目,是把類似bash語法的機器集群配置文件解析出來,可視化其中的數據通信依賴,然後進行可視化編輯。一年之後,當時一起實習現在已經是員工的同事告訴我,我寫的配置文件解析器因為某個符合bash語法但是不符合配置文件規範的手寫的配置文件掛了。現在回想起來,最大的缺憾是當時做配置文件解析的時候,還沒有深入理解編譯原理中Parser的工作方法,用了非常粗暴的刪空格換行等規則式的格式化方法,而且還因為語法五花八門而debug了很久。要是當初能夠寫個狀態機,那規則會簡單很多,而且理論上只要符合bash語法的應該都可以解析正確。

這是另外一個話題了,意識到這個,還是因為我Linkedin的面試面掛了,然後一個同學告訴了我這樣一個解法:你有哪些對當初學習的「沒用的知識」恍然大悟甚至受益的經歷? - 知乎用戶的回答

瞬間,數字電路、狀態機、字元串匹配……相關的東西全部湧現出來。大概打通任督二脈就是這樣的感覺。我想,所謂的融會貫通,大致如此。

中國的高等教育,雖然跟先進的國家相比還是很有差距,但是請相信最高層的設計者們在大方向上還是高瞻遠矚的,只是具體的細節和實施上,實在有點慘不忍睹,所以才會讓學生產生厭惡和困惑。

在國內,我最大的感受是,學的理論跟實踐割裂得太厲害,老師授課水平或者精力有限:有的講課老師甚至自己都還沒有完全弄清楚課程的內容,有的老師則是自己很清楚,卻不知道怎麼講清楚。還有一個問題是,教材寫得太「蘇式」了。上來就是一大版結論和證明,從來不告訴你為什麼這麼搞,這麼弄有什麼用,如果老師講得好,那就是考完忘;如果老師講得不好,考試都成困難,然後老師只能考試放水。該學好的東西沒有學好,最後用到了還得回頭補。而「美式」的教材則基本是按照能讓讀者自學的標準把每一個問題講清楚的,微積分的來龍去脈、實際問題中的應用,等等。

相比之下,美國頂尖大學就好一點,起碼對於抄襲的容忍度很低,助教的作用很大,課程設計比較成體系,教材寫的比較生動適合自學。

所以我建議題主,既然開設了這門課,就盡量好好學,技多不壓身。說不定哪一天就能對你的生活和工作帶來莫大的幫助,或許能讓你在職業的道路上走得更遠。復旦人總愛「裝逼」地說,他們是「自由而無用的靈魂」,但往往由於寬鬆的環境,變成了「自由而沒用」。在我的理解中,「自由而無用」指的是祛除功利的念頭,腳踏實地的學習,不管所學的東西在所能預料的範圍內能否給自己產生好處,去追求純粹的知識,而非有用的知識。無用之用,或許方為大用。

以上,就是我對大學裡基礎學科設置和學習的一些粗淺的理解和思考,希望能夠對你有所幫助,也希望有類似經歷的同學來多多交流一下類似的經驗。

好久沒寫這麼長的文章了,不過也算是把我積累的一些思考全部吐了出來。多年不寫長文不知道是不是寫的很雜亂,如果能夠有人從中得到啟發或者幫助,那我就很高興了。

Note:

[1] @劉桐指出,這句話是愛因斯坦先說的,原話是「在學校所學的一切全都忘記之後,還剩下來的才是教育。」

=================================

發了一段時間被頂上日報,受寵若驚,根據補充一些文科生為什麼學編程、Flash的例子:

下面這張圖來自一個攝影師,

整個系列在這兒: Fine Art - Day To Night

這個系列的照片是一整天所拍攝圖片的疊加,能夠做到這麼平滑,應該是使用了程序輔助拼接。我並不知道具體他是怎麼做的,應該是寫了一個程序根據特定紋理演算法來拼接,輔以photoshop等軟體修正,看,攝影師會編程,能夠進一步放飛靈感不是。


你要知道你的職業壽命可能是50年,而不是5年。你要拿的是工學學士學位,而不是軟體工程技術學院畢業證。

為了稱得上合格的工學學士,工科生理所應當要學習大學物理。

數學、物理一直都是能聯繫多個領域的核心學科(計算機行業還能火幾年? - Summer Clover 的回答),計算機科學也正在成為這樣的核心學科。所有的理工類專業都應當設置這三個核心學科的基礎課。

我們很難知道未來10年的競爭需要哪些基礎知識。

我們完全猜不到30年後會會有哪些技術湧現。

比如量子計算?嗯?連大學物理都沒學過的工程師會怎麼樣?

現在理工科本科培養計劃里,無論中外,數學、物理和計算機都是標配。從美帝東海岸的MIT、Harvard到美帝西海岸的Stanford都是如此。

對於數學系、物理系同樣如此,如果不設置物理/數學和計算機基礎課,就等於還沒畢業就廢了學生3成潛力。

設置核心學科,這不是陳舊落後的課程設置,而是前沿視角的課程設置。

如果某些大學按部分用戶宣稱的不用大學物理淘汰計算機/軟工專業學生,那麼應當被沒落淘汰的就該是這些大學。


題主知道曼哈頓計劃么?

計算機最早就是為物理中的核反應服務的。

軟體 ≠ 碼農

軟體是利用一台計算機來解決現實問題,而現實問題對應的最直接的學科就是物理。

如果你要開發遊戲,你還要學心理學

如果你要開發有限元軟體,你還要學微分方程和矢量積分

如果你要開發多相流軟體,你還要學流體力學

如果你要開發汽車設計軟體,你還要學剛體力學

如果你要模擬分子行為,你還要學大學化學

如果你要模擬生物基因,你還要學基因工程學

學不學是你的事,教不教是大學的事

你不感興趣你可以考個60分飄過就好,但是你的同學們有想學的。

這個世界就是這樣,你不想學的東西,往往有很多人搶著學。

你學不會,有的是能學得會的。

如果答主只想當一個小碼農,你可以不學大學物理。

但如果答主想當一名軟體工程師或計算機類的科學家,你要學的還多著呢

想不想上天,自己決定吧~


防止你們因為課不夠太閑了就去廣場散步、上知乎黑自己的母校、信仰邪教、參與時間眾籌。


首先這源自一種傲慢,教學內容制定者的傲慢: 我認為你應該學,這是為了你好,為國家好,為了社會好——但是我不屑於告訴你為什麼。

我上大學的時候拿這個問題問過我們主管教學的副院長,他老人家的回答是「呵呵」。我不知道是不屑我愚蠢的提問還是不願告訴我學校所面臨的無奈。

直到我現在工作10+年了,我才知道,除了政治課以外,大學裡面的課程設置,要麼有助於我們對世界的認知,要麼有助於我們解決現實問題。純無用途的課程幾乎沒有。只是毫無例外,沒有一個老師在開講一門新課的時候,告訴我們這個課程到底有什麼用。這或許是第二個原因吧,教學實踐者的懶惰。

如果先給同學們提出一個問題: 怎樣從一張圖片里用程序找出一個人的輪廓?然後以解決這個問題為主線,把所涉及到的演算法和數學都講一遍,相信仍然覺得無趣的同學會非常少。

以我所在的學校而言,老師們想做到這一點,真的是不費吹灰之力。

為什麼不這麼做呢?老師們真的對於這些應用一點都不了解嗎?還是根本懶得費這個腦子,對著教材念一遍多省事,剩下時間開公司賺錢比啥不強?

最後我不得不說一句,大學期間我是差生,或許因為沒有認真聽課,而錯過了老師們精彩的、對專業知識應用場景的說明。如果是這樣,我願意為我的說法道歉。


南大軟院也不學 連統計都是結合軟體測試學的


反對最高票的答主。

雖然我很喜歡物理,也對最高票答主列舉的幾個解決問題的事情很佩服,但還是點了反對。

因為:

第一,很多人即便是物理專業也可能達不這樣,更何況其它專業的。個例並不能說明問題,還有很大一部分是學瞭然而並沒有什麼卵用的。

第二,最高票答主用物理知識順利解決很多問題,還有人用化學知識解決很多問題,還有人用心理學知識解決很多問題。知識當然是好的,不過也要考慮到時間問題,大學只有四年,不能什麼都學。有興趣可以多學些其它的,不一定要放到必修課程中。

第三,最高票答主提到物理的系統性,邏輯性。然而這些並不是物理才有的。軟體工程專業課程中也有很多是可以培養系統性與邏輯性思維,以及鍛煉數學的。

個人覺得,這個就是課程設置不合理,沒什麼複雜的。如果有覺得是學校用心良苦的話?那麼請解釋一下為什麼所有專業都要學毛概馬克思之類的。

隨便吐槽一下,對於官方(特別是政府部門)一些不合理的東西,有些人硬是要找一堆理由來說明它們的合理與必要。比如剛剛看到一個給GFW各種洗地的題目。


因為你不能自由選課呀


中大軟院不學. 至少當年不學.


我以前有個項目,裡面要寫列車模擬模擬

也就是下面這個這四個公式不停迭代

F = frac{P}{v}

a = frac{Fcdot cosalpha - f }{m}

Delta v = acdot Delta t

Delta s = vDelta t + frac{1}{2} aDelta t^{2}

老闆覺得這個事情很容易,於是叫找了組裡工作時間最久的那個傢伙來寫,當然啦,這個傢伙說,他高中畢業後就沒學過物理和數學。

然後他寫了兩年沒寫出來能正確跑的!然後他就被開了。

PS: 為什麼我說這個很容易,因為我的畢業實習裡面30%的內容寫的就是這個。


因為是工科


有些人總想著洗地洗地。

物理沒用就是沒用,這地洗不了。

你將來工作要用,可以自己選修。大部分人根本用不到。

那要是學校要求電子工程專業必修語文,音樂美術,你也來洗嗎?

畢竟自然語言處理,音頻處理,圖像處理,都算在EE里喲


研究物理學是人類的頂級智力享受之一,請不要浪費這麼好的入門機會


不邀自來,上圖:

現在工作了,才發現想要進一步提升自己,高數、線代、離散等當時覺得沒有用的東西到底有多重要。

圖片來源:邪惡八進位:[討論]如何系統化學習計算機侵刪


軟體不就是對物理世界的模擬嗎,不學物理怎麼模擬?


其實要討論這個問題,我們不能僅僅著眼於「中國大學的軟體工程專業要不要開物理課」這個非黑即白的選擇。單純地不開物理課,或者跟所有的專業上一樣的物理課,都不能說是特別理性的回答。

我特別贊同之前這個問題下一位答主的一句話,即我們生活在這樣的社會中,已經習慣了為一些自己不能改變的事情進行辯護,從而獲得一些生活的安慰。牆是如此,霧霾之類的事情也是如此。認真地說,這個世界上確實沒有什麼事情是一點優點都沒有的,不是嗎?所以說,討論「大學物理對軟體學生有什麼好處」似乎跟題主的意思有點偏離。畢竟,這個問題的姿態屬於「挑戰者」,即質疑物理課存在的合理性。所以站在那些支持開物理課的朋友的角度,有意義的回答應該是「為什麼物理是一定要學的?」而非「物理學了有什麼好」。畢竟,作為一個前文科生,我覺得理工科專業同學人文素養恐怕比物理水平欠缺了更多,特別是數學系應該增加西方哲學史的課程,不知各位答主有何高見?

我們再回頭來品味一下「大學物理」「軟體工程」「大學」幾個關鍵詞,可以發現下面若干層意思:

  • 軟體工程專業要不要開物理課?
  • 如果開,應不應該作為必修?
  • 如果是必修,那學什麼難度的物理?
  • 學生應該在什麼時候上這個課?

如果我們能夠把非黑即白的問題都拆成這樣,那世界上恐怕會少很多無謂的爭吵。

單純對於第一個問題,我想幾乎所有人的回答都會是「開」,反正多門課多條路,豐富一下有什麼不好呢?

但是,凡事不能太散漫。物理是一門有「難度」的課,不比學校里一些面向所有專業要求寬鬆的選修課。物理課當然可以那樣,不過就似乎違背了開物理課的本意了。至少,趣味性、知識性,總得佔一頭,對吧?當然,選這個課刷GPA的不在此範疇。

所以這樣的課,最終要麼是變成強制性的必修,要麼因為沒人學習最終淹沒在學院歷史的長河裡。

可能你會說,每個專業專業選修也不少啊,比如軟院開一門iOS開發,那願意來上的人肯定多啊,為什麼物理就不行呢?

問題就在這裡。如果我們假定物理課成為專業課而不是公共課的一部分,那麼現在的物理課體系,顯然是不足以滿足「專業」這個要求的。在這種情況下,必須為軟體學院,或者計算機類的同學,單獨設計一門針對這個領域學生的物理課。但是這樣又走偏了。工作和物理相關的程序員,真的有比從事金融行業的多?那為什麼不開金融方面的專業課呢,對吧?

所以物理還是得搞成公共課。

既然是公共課,那就有一個難度的問題。物理課不是一個布爾值,我校部分文科專業也要學物理的,但是他們的物理課顯然跟機械專業的物理課不在一個檔次上。至於某個答主說的,生活常識的問題,我想遠遠不需要大學物理A吧?而且生活常識多了去了,不如放成選修。

簡單總結一下我的觀點:物理課有開的意義,但是要和真正的「工科」專業的物理課有所區別。而如果要把物理課作為專業課體系的一部分,大部分軟體學院恐怕都沒有這個條件。

我想我們應該看的比這個問題更遠一點。開不開物理課重不重要?重要。但是有沒有比這個問題更重要,更根本的問題呢?

不少軟體工程專業的同學對開設物理課這件事情的質疑,從更廣泛的方面來說,其實是對整個軟體工程專業培養體系的質疑。不是說物理課開了或者不開,這個學院就一定怎麼樣。但是培養計劃的設計,很多時候可以反映一個學院或者學校的基本態度,即它希望培養出什麼樣的人才,以教學還是研究作為重點,要不要體現出自己的特色。

教育部在本世紀初提出了示範性軟體學院的概念。十五年過去了,現在的示範性軟體學院同當年比起來何如?同國外名校的看齊,同實際業界的聯繫,同先進技術的引入,是進步了呢,還是退步了呢?

我沒有任何要貶低計算機系同學的意思。我想說,是不是再過十年,軟體學院就可以和計算機學院合併了呢?因為越發趨同,已經沒有存在的必要了。

而物理課的存廢,恐怕只是這個令許多學生不安的大背景下的縮影。

(附)

想集中說一下我對一些常見觀點的看法。

學物理是讓你成為一個合格的大學生,而不是一個培訓班出來的碼農。

我不是想抬杠,不過,難道學了物理就不是碼農了……?或者說,是有多想黑大學計算機教學的水平,才會認為大學計算機專業和社會培訓班的差別只在會不會物理啊?在前面說過了,如果說條件很好,那開物理當然是好的。但是如果本來培養計劃和課時就很緊張,我覺得開計算理論或者近世代數,包括講講CSAPP什麼的可能都好一些,更別提什麼把編譯原理給砍了這種事情了……

再說,這種「大學生≠培訓班」的論調在知乎上,包括各個程序員論壇都很常見。我部分同意。但是這個「合格的大學生」絕不僅僅是多學了一點數理知識那麼簡單,說得還真像計算機領域只剩數學了一樣。怪不得外行經常不尊重程序員的勞動成果。並且,「大學學的是內功」這句話,永遠不能成為專業課老師講課水平不行的借口……

你以後工作了遇到這類問題,就會發現物理還是有用的。

可以去問一個已經大三了的大一學物理的學生,看看他還能想起多少,更勿談工作了。而且,如果是真的要「用到專業知識」的程度,那點物理恐怕也不夠吧。

如果你是想說「到時候根據這點知識能大概知道現學什麼」的話,我倒是有點同意。不過這種「啟發性」的知識,在自己的專業領域恐怕欠缺得更多。

你就是不想學,在這吵什麼吵。

呃……大家這麼不滿霧霾,我是不是可以說「你們就是不想得肺病,吵什麼吵」?這位同學既然是把問題放到了知乎上,那就是給大家討論的。這也不是什麼道德情感倫理題,大家點進來就是為了嘲諷題主。如果說您覺得這種問題沒意義,那我可能會認為您的評論更沒有意義。

我還是對知乎的理性討論精神抱有一點點的期待的。該不該學物理,為什麼學物理,大家都可以拿出自己的觀點,而不是站在道德高地上指責(這種回答在教師類問題下很多)。很高興現在看到的高票答案,不管是贊成還是反對,都還是比較理性的。不過要真正地達到各抒己見的目標,我想我們還有很長的路要走。

我當然理解一些物理是核心專業課的同學看到這種質疑時候的心情。不過,這個時代人人都要學會用計算機已經是基本共識了,甚至知乎上有人認為人人都該學編程。但當有其他專業的同學在質疑他們的編程課開設的合理性時,我並不會選擇嘲諷甚至謾罵,認真地討論或許有用得多。畢竟,理性思考是理工科乃至所有科學最寶貴的精神,不是嗎?

你說了也沒用,物理還是得學。

的確有很多事情是我們無法改變的。不過也有一部分,也許經過我們的努力,真的可以得到改變。就算我們的觀點沒有實際作用,我們還是需要思考,而不是選擇盲從,思考是人類的權利。你可以不同意我,甚至可以不讓我表達,但是你不能阻止我思考。如果說,因為我們的觀點改變不了培養計劃這個現實,所以我們不應該質疑的話。那麼,你對開設物理課的支持,是不是也一下變得沒有意義了?


大學物理的目的除了物理知識本身

還有數據嚴謹性(比如實驗數據處理)

最重要的是使學生掌握使用數學方法解決實際問題(物理)的能力。

對於日後軟體開發過程中的演算法設計等有一定意義。

之前的答案不夠嚴謹有所修改


歷史傳承問題。過去搞計算機學學物理和電子還是很有必要的。現在整個軟體業分工很細了,有一部份碼農不學物理對自己的工作確實沒多大影響了。而整個教育架構是從舊的教育方法繼承過來的,沒有針對這個新特點做調整。

不過,作為一個以知識型技能為生的人,不學大學物理,其實是有遺憾的。就算不安排這個課程,也值得業餘看看相關的書。


反對最高票答案

沒有解釋物理對於軟工專業的必要性

比如,物理對於計算機圖形學必要,因為其理論和技術經常基於真實的物理知識。和軟體工程沒有這種關係。

如果軟體專業的學生能掌握大學物理課程的知識,有一點好處:拓寬學生的適應寬度,流出互聯網行業。

很多較為傳統的工業,例如機械飛機機器人等,越來越需要編寫複雜的軟體。軟體專業學生往往缺乏相應的知識積累,又數學物理基礎薄弱,短時間內難以補足。所以很多時候是由原專業的人學習軟工知識來做。

這個好處應該不是開課的原因,也不值得為這個原因開課。

PS:數學不同,數學對計算機影響深遠,無論哪個分支,微積分線代概率論這些數學工具幾乎總是能用上的。


推薦閱讀:

Windows 下桌面應用開發有哪些主流技術?
CAE軟體有哪些?
類似於「善用佳軟」,「小眾軟體」這樣的網站有哪些?
服裝實體店+網店有什麼好用的進銷存軟體啊?
除了 Tagxedo外,還有什麼好的軟體製作可以詞雲?

TAG:軟體 | 大學 |