軟體開發需要學好數學嗎?

csdn 發佈 2020-01-13T14:21:04+00:00

這類項目通常要求你需要掌握Java、JavaScript、Python、C# 和 Go 等語言,以及SQL等查詢語言。

大多時候並不需要,但也有好處。

作者 | Devin Soni

譯者 | 彎月,責編 | 屠敏

出品 | CSDN (ID:CSDNnews)

以下為譯文:

軟體工程師的工作是什麼?

為了了解數學與軟體開發之間的關係,首先我們需要了解一名普通的軟體工程師的工作。

大多數工程師最終都會從事Web或業務應用程式的開發,要麼是前端,要麼是後端,或者兩者兼顧。

這類項目通常要求你需要掌握 Java、JavaScript、Python、C# 和 Go 等語言,以及SQL等查詢語言。

除了語言本身外,你還需要學習使用框架和庫,例如 React、Angular、Express、Django 和Spring 等,這些框架和庫能夠加快開發應用程式的速度。

除此之外,你可能還需要學習開發運營方面的知識,例如 Docker 和 Kubernetes 等容器化產品,以及學習使用各種雲計算平台,例如亞馬遜的 AWServices,Google雲平台等。

什麼時候需要數學知識?

雖然學好這些軟體工程知識是一項艱巨的任務,但是重點在於,這些知識與數學都沒有直接的關係。儘管很多知識都是以數學領域的理論為基礎,但學習這些知識並不需要了解數學。

這些技術所需的大多數知識都是獨立的,不涉及大學課程中講授的理論內容。

即使是大多數計算機科學課程也只能幫助你了解這些技術的皮毛。大學課程可能會為你提供有關這些技術的設計及其實現方式的背景知識,但很少具體講解如何在實踐中使用這些技術。

話雖如此,基本的數學概念和知識仍與大多數軟體工程工作有一定的關係。但是這些數學知識都不要求任何正規的教育,你可以通過網際網路輕鬆自學。

以下就是軟體工程師需要掌握的基本數學知識和概念:

  • 通過快速的估算(例如費米問題),估計成本和系統負載。

  • 對機率和統計信息有基本的了解,能夠做出數據驅動的決策(例如使用A/B測試),以及進行基本的數據分析。

  • 對邏輯的簡單理解,能夠編寫正確的代碼並理解他人編寫的條件判斷式。

  • 對漸進分析有基本的了解,能夠編寫複雜的代碼,並引導自己尋求有效的解決方案。

數學有幫助嗎?

即使大多數軟體工程的工作都不需要數學知識,擁有紮實的數學基礎自然不是壞事。

雖然數學課和常見的軟體工程活動之間可能沒有太多可直接傳遞的信息,但是學習數學的過程可以培養你解決問題的重要能力。

從根本上講,軟體工程的工作就是通過編寫代碼和設計軟體系統來解決問題。同樣,數學,尤其是以證明為主的數學需要用數學語言撰寫一系列正確的聲明來解決問題。

從較高的層次來說,這兩項活動都涉及將邏輯和事實翻譯成某種表達語言。在這兩種情況下,邏輯的一致性和正確性都至關重要。

然而,這並非數學獨有的能力。許多其他領域(例如哲學)以及STEM領域(例如物理學)也涉及類似的能力。甚至還有一些活動,例如玩某些電子遊戲或解決難題,也需要類似的邏輯和解決問題的能力。

數學只是幫助軟體工程師在編程之外,建立批判性思維能力的眾多活動中的一個。

什麼時候需要使用數學?

雖然軟體工程的大多數子領域都沒有直接使用數學,但的確有一些領域需要使用數學。

這些領域包括機器學習、圖形、遊戲開發、機器人技術和程式語言開發等領域。

在這些領域中,你的工作需要直接應用數學知識,其中包括微積分、線性代數、圖論、機率、統計、邏輯和離散數學等。

但是,即使在大量需要數學知識的領域中,我們也很少將數學知識直接轉換為代碼,因為我們還可以使用庫。

這些庫(例如主要用於神經網絡編程的庫TensorFlow)可以抽象基本操作,程式設計師只需更多地關注高級概念。

例如,作為使用此類庫的工程師,你無需編寫代碼即可使用梯度下降。你只需指定神經網絡的架構以及訓練方式即可。

因此,即使在這些領域中,你仍然無需了解所有的底層數學知識。通常,僅了解概念以及應用方式就足以有效地完成你的工作。

原文:https://medium.com/better-programming/do-you-need-math-to-be-a-software-engineer-26694a11f7ea

本文為 CSDN 翻譯,轉載請註明來源出處。

關鍵字: