當前位置:編程學習大全網 - 編程語言 - 昌平北大青鳥分享編程需要多少數學知識?

昌平北大青鳥分享編程需要多少數學知識?

1、編程中的數學

於是我馬上回顧了下編程中用到的數學知識,好像少的可憐。

計數的能力:for循環中經常用,?小學生都會。

數字的加減乘除:每種編程語言都會內置支持,都不需要妳自己算

余數和模:偶爾會用得到

集合運算:交集、並集、差集,編程中用的不多。

布爾運算:?AND,OR,?非

各種進制:二進制、十進制、十六進制

還有哪些?我想不起來了。

當然這和我從事的編程領域有極大關系,昌平北大青鳥認為如果我做的不是Web開發,而是搜索,遊戲,安全,算法,人工智能等,那對數學的要求估計就開始飆升了。

其實計算機的基礎是數學,只是我們壹直在應用層編程,體會不到罷了。

比如說我們日常使用的計算機,絕大部分都是所謂馮諾依曼結構,這個結構可以說是圖靈機這個概念機器的具體實現,而圖靈機就是壹個純數學的東西啊,沒有圖靈機這麽偉大的抽象作為數學基礎,現代的計算機是制造不出來的。

再比如說密碼領域需要很多數論的知識,RSA算法就涉及到大素數的分解;

我們常用的Mysql,Oracle等關系數據庫的底層基礎是離散數學的笛卡爾乘積;

通信系統中很重要的壹個原理就是傅裏葉變換。

編譯器會用到有限狀態機;

數據的壓縮會用到各種數學的算法;

項目管理中的進度管理,甘特圖數學基礎就是圖論。

.....

總之,數學在計算機科學扮演著非常重要的角色,是整個學科的基礎。

2、不拼數學拼什麽?

具體到應用層編程,尤其Web開發、企業信息化開發,整天折騰的是框架和類庫,用不到這麽多高大上的數學知識,那到底拼的是什麽?

想想編程中常用的數組,如果是壹維數組,做個循環和遍歷,每個人都能輕松應對。如果要用數組來表示二叉樹,就需要把壹個樹形結構對應到線性結構,那難度立刻上升。

如果在編程中需要自己實現鏈表,就會發現把各個節點的鏈接關系維護好,需要把指針調來調去,挪來挪去,實在不是壹件容易的事情。

這樣的能力就是邏輯思維的壹種體現。

我們在做系統設計的時候,經常需要總結、分析現實需求,找到容易變化的部分和相對穩定的部分,把他們封裝起來,形成核心的概念,支撐起整個系統,這是壹個抽象的過程,雖然用不到多少數學知識,但是思維的過程也極不容易。

邏輯思維能力和抽象能力的差別,能夠區分出程序員的優秀和平庸。

壹個優秀程序員寫出的代碼,接口清晰,容易擴展,易於維護;?壹個差程序員寫出的代碼,思路混亂,完全是壹些計算機語句的堆砌,別人看不明白,過壹段時間自己都看不明白了。

數學系的同學在這兩方面恰恰是長項,想想看,數學系同學們整天折騰這麽多“枯燥的”抽象概念,再去看編程這樣大部分都是具體化的實現,簡直是分分鐘搞定!這可能是數學系的轉到編程領域很厲害的原因吧。

邏輯思維能力通過學習數據結構和算法,做數據結構的習題可以得到有效的提高,抽象能力需要在實踐中不斷的練習、積累經驗。對於初學編程的同學,從現在就開始努力提升吧!

  • 上一篇:壹部不怕丟失的手機 ivargo啟凡評測
  • 下一篇:二年級寫話假期的打算
  • copyright 2024編程學習大全網