每個程式的運行程序,都可以比喻成彈珠穿越迷宮的游戲.
有一個豎直方向的復雜迷宮,上面有若干入口,底下有若干出口,里面的路徑連接很復雜.我們讓眾多大小不一,形狀各異的彈珠從迷宮上面的入口順著迷宮管道往下落,直到出口,彈珠從入口跑到出口的程序,就相當于程式運行的程序,
實際上,真實模型會更復雜一些,入口并不是彈珠的唯一來源,有的管道自己會產生彈珠往下落,此外,在運行程序中,有的彈珠會消失在管道里,永遠不在出來,如果要對應多執行緒,迷宮模型也要相應的擴展,在前后疊加多個迷宮,由平面變成立體,迷宮相互之間還有橋梁連接,路是通的,
迷宮入口的彈珠,就是程式的原始資料,這些彈珠在下落的程序中會被加工,他們可能會變大變小,還可能分裂或組合,最終走出迷宮的彈珠,則是呈現給用戶的最終資料,這里的迷宮管道,就是程式的代碼結構,
正如水由氫和氧元素構成,程式世界則由資料和代碼構成,
資料和代碼的關系:
資料是根本目的,代碼是手段,代碼永遠是為資料服務的,
資料分為輸入資料和輸出資料,代碼是將輸入資料轉化為輸出資料的工具,用戶最關心的永遠是最終資料是不是他想要的,以及能否在規定的時間內得到,代碼是如何實作的,并不是用戶的關心點,
什么樣的資料,決定了會有什么樣的代碼,有的系統處理的資料量小,有的系統處理的資料量大,兩者代碼復雜度肯定不一樣,
有的系統雖然資料量大,但資料主要躺在資料庫里,像一潭死水難得動彈,有的系統則不停的處理大并發資料,它們的代碼復雜度肯定也不一樣,
有的系統輸入資料量大,輸出資料量小,比如人工智能,系統可能要分析近百萬張貓的圖片,才能使別出一只新的貓,這種系統最大的難點主要是分析這些輸入資料是否合理和準確,
有的系統輸入資料量小,輸出資料量大,比如游戲,玩兒家的輸入都是有限的,而系統要向玩兒家戰士一個虛幻的世界,這種系統最大的難點是輸出資料是否貼合用戶的心意,
有的系統,并非所有的輸出資料都很重要,所以產生一些BUG,用戶是可以忍受的,但有的系統,所有的資料處理必須萬無一失,可能業務邏輯并不復雜,但要求五筆復雜且精確的代碼,
總之,和什么樣的資料打交道,會最終決定存在什么樣的代碼,而代碼不斷的升級修改,永遠是為了匹配資料的要求或者追逐資料的變化,
資料是目的,代碼是手段,
結束!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335615.html
標籤:其他
