<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          當(dāng)程序猿遇上數(shù)學(xué)

          共 4591字,需瀏覽 10分鐘

           ·

          2021-04-19 23:00

              曾經(jīng)一直有人問(wèn)數(shù)學(xué)老師,學(xué)數(shù)學(xué)有什么用?我去買菜難道還要用到微積分嗎?我去開(kāi)會(huì)難道還要用到線性代數(shù)嗎?這估計(jì)是很多人學(xué)不好數(shù)學(xué)、不想學(xué)數(shù)學(xué)而找的借口,但這個(gè)問(wèn)題究竟要怎么回答呢?今天我就站在程序員的角度上來(lái)回答下這個(gè)問(wèn)題。


              隔壁老王是一個(gè)剛?cè)肼毜某绦蛟?,最近正在被資深程序猿小明帶著。

              小明:老王,你數(shù)學(xué)怎么樣啊?

              老王:啊,數(shù)學(xué)?加減還可以,乘除就要看了。

              小明:¥#…&*)@!



          1Mission One



              小明:老王,最近射擊師小紅設(shè)計(jì)了一套不錯(cuò)的UI動(dòng)效,你不還是單身狗嗎,給你個(gè)機(jī)會(huì)去聊聊妹吧,把這套動(dòng)效完成好!

              老王:跪謝小明,保證完成任務(wù)!

              小紅:動(dòng)效很簡(jiǎn)單,就幾個(gè)動(dòng)畫,幾個(gè)自定義View,自定義View要能適配各種大小,點(diǎn)擊的時(shí)候判斷區(qū)域來(lái)顯示動(dòng)態(tài)效果。

              老王:包在我身上,so seay,just do IT。

              

              過(guò)了幾天……


              小明:時(shí)間就是金錢,我的老王,工作完成的怎么樣了???

              老王:尼瑪,這玩意算不清楚了啊,怎么一會(huì)要算大小,一會(huì)大小算的又不對(duì),還得去學(xué)自定義View的繪制原理,這什么鬼!

              小明:臥槽,你不是說(shuō)你加減法不錯(cuò)的嗎??這里都是最簡(jiǎn)單的加減法?。?!好好了解下自定義View的onMeasure和onLayout的含義和流程,下面就是完全的數(shù)學(xué)計(jì)算了?。?shí)在不行,公司有一本《Android群英傳》,里面的第三章『Android控件架構(gòu)與自定義View詳解』,對(duì)自定義View的流程進(jìn)行了非常詳細(xì)的講解,可以好好參考下。

              老王:嗯嗯,太好了,我馬上去看!


              的確,很多人抱怨自定義View很難,而實(shí)際上,一個(gè)基本的自定義View,使用到的,實(shí)際上就是最簡(jiǎn)單的加減法,根據(jù)坐標(biāo)、大小,來(lái)計(jì)算自己的位置,大小,而很多人覺(jué)得復(fù)雜,只是被一些高級(jí)的自定義View給唬住了,往往看見(jiàn)非常復(fù)雜的坐標(biāo)運(yùn)算,就放棄了。實(shí)際上,只要你『明知山有釜,偏向釜山行』,靜下心來(lái)仔細(xì)分析每個(gè)公式的含義,相信很快就能了解它的作用,同時(shí),只要你淡定下來(lái),好好梳理下你要實(shí)現(xiàn)的自定義View的顯示,根據(jù)Android所提供的那些API進(jìn)行編寫,寫上幾個(gè),就有套路了,畢竟,加減法還是很簡(jiǎn)單的嘛!



          2Mission Two



              小明:感謝天,感謝地,你的自定義View終于寫好了,可是動(dòng)效呢?難道你看片只看截圖?趕緊給我動(dòng)起來(lái)!

              老王:哦,我一般都是老司機(jī)帶著看的。我嘗試下自己動(dòng)動(dòng)吧。


              a few days later……

              

              小明:時(shí)間就是金錢,我的老王,工作完成的怎么樣了?。?br>

              老王:為了部落,我的女王!

              小明:別BB,今天搞不定,晚上團(tuán)隊(duì)保健,哦不,團(tuán)隊(duì)活動(dòng)你別來(lái)了。

              老王:可是,這個(gè)區(qū)域真的很難啊,我數(shù)學(xué)不好,可是要判斷『一個(gè)點(diǎn)擊點(diǎn)是否在一個(gè)閉合路徑內(nèi)』,這個(gè)問(wèn)題很難啊,我在網(wǎng)上找了,這個(gè)至少要用到高中數(shù)學(xué)啊??!

              小明:臥槽,你似不似傻!Android提供的API你都了解嗎?通過(guò)Region不就可以很方便的判斷了嗎??還算法,算你妹??!

              老王:嗯嗯,太好了,我馬上去看!

              

              的確,很多人抱怨自定義View里面要做很多很復(fù)雜的判斷,一會(huì)牽扯到這個(gè)算法,一會(huì)牽扯到那個(gè)算法,但實(shí)際上,這些都是你對(duì)Android API不了解所造成的,很多常用的算法的判斷,都被Android所封裝了起來(lái),你只需要簡(jiǎn)單的調(diào)用即可,否則,你就會(huì)花費(fèi)大量的時(shí)間,來(lái)做一些無(wú)謂的工作。另外,掌握好Android的一些API,可以給你提供更簡(jiǎn)單的繪制方法,例如對(duì)Canvas的旋轉(zhuǎn)、鎖定、圖層等API的使用,有時(shí)候就可以讓復(fù)雜的角度計(jì)算,變成加減法的運(yùn)算。



          3Mission Three



              小明:老王,小紅跟我反映,你上次的動(dòng)效很僵硬啊,完全不像是一個(gè)高級(jí)工程師寫出來(lái)的東西啊

              老王:臥槽,我本來(lái)就不是啊。

              小明:你都工作好幾天了,是時(shí)候向高級(jí)程序猿進(jìn)軍了!來(lái),把這個(gè)動(dòng)效改的更自然一點(diǎn)吧!

              老王:哦,是不是寫完就是高級(jí)程序猿了。


              數(shù)日後……


              小明:時(shí)間就是金錢,我的老王,工作完成的怎么樣了啊?

              老王:我看了,要模擬更加真實(shí)的動(dòng)畫,就需要用到TimeInterpolator和TypeEvaluator,還有各種函數(shù)的計(jì)算,這明顯要用乘除法了??!

              小明:臥槽,你高中數(shù)學(xué)老師在哪,看我打不死他!幾個(gè)函數(shù)圖像都不能理解,你還想進(jìn)階高級(jí)程序猿!好好看看微信公眾號(hào)『Android群英傳』的這篇文章吧模擬自然動(dòng)畫的精髓——TimeInterpolator與TypeEvaluator,要想多學(xué)干貨,一定要多看這個(gè)公眾號(hào)!


              的確,程序開(kāi)發(fā)中的很多細(xì)節(jié),都需要使用數(shù)學(xué)來(lái)進(jìn)行精益求精。文中的這個(gè)例子,就是一個(gè)比較典型的代表,函數(shù)圖像在開(kāi)發(fā)中有很多用處,但這并不代表我們需要去推導(dǎo)、去研究新的函數(shù),至少老王的高中數(shù)學(xué)還達(dá)不到這水平,我們只需要去了解、知道如何使用、計(jì)算就OK了。讓專業(yè)的人去做專業(yè)的事,我們是程序開(kāi)發(fā)、而不是數(shù)學(xué)家。



          4Mission Four



              小明:老王,你已經(jīng)是高級(jí)程序猿了,是時(shí)候給你一些高難度的任務(wù)了。

              老王:我才工作幾天啊!

              小明:嗯,不錯(cuò),這次的圖像處理任務(wù)就交給你了哈,頑張ってください!

              

              逝者如斯夫……


              小明:時(shí)間就是金錢,我的老王,工作完成的怎么樣了?。?br>

              老王:圖像的處理要使用到矩陣這些知識(shí),我現(xiàn)在正在復(fù)習(xí)線性代數(shù)!

              小明:臥槽,復(fù)習(xí)你妹?。D像處理也好、Matrix變換也好,用到的線性代數(shù)最多不超過(guò)線代的第一冊(cè)、第二章、第三節(jié)!了解最基本的矩陣知識(shí)就可以了啊,實(shí)在不行,去看看公司那本『Android群英傳』的第六章和第七章吧!

              老王:嗯嗯,我馬上去看!

              

              的確,矩陣在Android中用的非常多,很多程序都是通過(guò)矩陣來(lái)進(jìn)行運(yùn)算的,這也是線性代數(shù)的實(shí)際意義所在,很多人剛開(kāi)始學(xué)習(xí)線代的時(shí)候,認(rèn)為好像壓根都沒(méi)有一點(diǎn)用,但實(shí)際上,這些都是現(xiàn)代計(jì)算機(jī)的基礎(chǔ)知識(shí),掌握好這些知識(shí),可以讓你在后面開(kāi)發(fā)程序的時(shí)候,對(duì)這些處理有更加深刻的認(rèn)識(shí),因?yàn)殡m然SDK給我們封裝了很多矩陣的操作方法,但是,知其然,and其所以然,會(huì)讓你對(duì)知識(shí)點(diǎn)有更加深刻的理解,同時(shí),遇到問(wèn)題,也有更多的思路去分析。



          5Mission Complete



              老王:小明,你簡(jiǎn)直比數(shù)學(xué)老師還牛逼啊,短短幾天,我的數(shù)學(xué)突飛猛進(jìn)啊,我感覺(jué)現(xiàn)在已經(jīng)直逼高等數(shù)學(xué)了??!

              小明:你知道我為什么要用自定義View來(lái)給你講解數(shù)學(xué)嗎?自定義View對(duì)于初學(xué)者來(lái)說(shuō),是學(xué)習(xí)Android常常遇到的第一只大老虎,而且也是最能看出一個(gè)程序猿數(shù)學(xué)基礎(chǔ)的知識(shí)點(diǎn),一個(gè)自定義View,說(shuō)白了,就是讓你教計(jì)算機(jī)這個(gè)『智障』如何去畫畫,計(jì)算機(jī)什么都不懂,他只能按照你的思維去繪制,而你需要做的,就是將View拆解成坐標(biāo)點(diǎn)、已經(jīng)點(diǎn)運(yùn)動(dòng)的軌跡,那么這里所用到的知識(shí),包括但不限于以下幾種:

          • 函數(shù)圖像

          • 三角函數(shù)

          • 角度與弧度

          • 直線方程

          • 貝塞爾曲線

          • 矩陣

              掌握這些基礎(chǔ)知識(shí),不僅僅是學(xué)好自定義View,更是學(xué)好編程的基礎(chǔ),當(dāng)然,這里面的大部分知識(shí),在高中數(shù)學(xué)就已經(jīng)基本學(xué)完了,大學(xué)里的高數(shù),不過(guò)是進(jìn)一步的補(bǔ)充和優(yōu)化,如果你是一般的應(yīng)用程序開(kāi)發(fā),那么這些就夠了,但如果你是一些比較專業(yè)的應(yīng)用開(kāi)發(fā),例如圖像、音頻處理這些App,就需要比較專業(yè)的數(shù)學(xué)知識(shí)了。

              所以說(shuō),程序猿需要數(shù)學(xué)嗎?如果你只想重復(fù)寫寫那些頁(yè)面,調(diào)整調(diào)整UI的話,那確實(shí)不需要,但一個(gè)不想當(dāng)醫(yī)生的廚師不是一個(gè)好程序猿,如果你要讓你開(kāi)發(fā)技能更上一層樓,那你就必須對(duì)數(shù)學(xué)有所了解,不管是最簡(jiǎn)單的取模、排序,還是一些常用的算法、圖像處理、圖形變換,或者說(shuō),是一些動(dòng)效、UI,這些都需要數(shù)學(xué)知識(shí)來(lái)支撐。

              另外,我想說(shuō)的是,即使對(duì)于非程序猿,哪怕是文科生,數(shù)學(xué)依然是非常有用的一門學(xué)科,但它對(duì)于這些人的幫助,并不是在于方程、函數(shù),而是數(shù)學(xué)思維的培養(yǎng),數(shù)學(xué)思維,讓一個(gè)人的思維更縝密、邏輯有條理,這才是數(shù)學(xué)對(duì)人最大的幫助!

              老王:小明說(shuō)得對(duì)!小明真牛逼!



          以上內(nèi)容純屬虛構(gòu),如有推廣,是我故意的!

          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  yw视频在线观看 | 超碰0374在线观看 | 成人视频在线免费观看 | 开心激情成人网址 | 国产精品久久久久久久久吹潮 |