蜜桃av色欲a片精品一区,麻豆aⅴ精品无码一区二区,亚洲人成网站在线播放影院在线,亚洲 素人 字幕 在线 最新

微立頂科技

新聞資訊

創(chuàng)新 服務(wù) 價值

  什么是程序員?編程本質(zhì)是什么?

發(fā)布日期:2022/8/11 17:33:48      瀏覽量:

關(guān)于編程本質(zhì)那些事

鄙人大學(xué)電氣自動化專業(yè),非科班出身,對編程了解不深,但是,經(jīng)過多年學(xué)習(xí)以及實踐,對它又有了一番新的認識,在這里我想把它說一下。

可能適合剛?cè)腴T或者即將入門的新人。

編程概述 什么是編程

編程其實就是編寫程序,讓計算機解決某個問題并得到想要得到的結(jié)果。 重要的是只要運行起來,就可以離開人自動運行。
程序(計算機程序),一組指令,一組指示計算機或者其他具有消息處理能力裝置每一步動作的指令,通常用某種程序語言編寫,運行于某種目標體系結(jié)構(gòu)上。
什么是編程語言
程序是由語言寫出來的,語言分為高級和低級,應(yīng)對離自然語言的遠近,越自然化的語言,自然越高級。
編程的本質(zhì) 數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)
數(shù)據(jù)是描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,并輸入給計算機處理的符號集合。例如 各種類型,視頻文本。
數(shù)據(jù)的元素 (類)
是組成數(shù)據(jù)的,有一定意義的基本單位,在計算機中通常作為整體處理。也被稱為記錄。
數(shù)據(jù)項(屬性)
一個數(shù)據(jù)對象可以由若干個數(shù)據(jù)項組成,例如人,眼耳鼻舌身等屬性。
數(shù)據(jù)對象(實體或集合實體)
是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的子集。
數(shù)據(jù)結(jié)構(gòu)
是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu).
邏輯結(jié)構(gòu):集合,線性,樹形,圖形。
物理結(jié)構(gòu):線性,鏈式
算法
算法是解決特定問題求解步驟的描述,在計算機中表現(xiàn)為指令的有限序列,并且每條指令表示一個或多個操作。
所以,我認為就算是最簡單的一個指令,也算是算法。
而大部分外人所說的算法,是高深的算法或者值錢的算法或者性能高的算法。
不要對算法想象的特別的高深,這樣就不容易深入學(xué)習(xí),其實計算機的計算單元只是一個加法計算器就實現(xiàn)了加減乘除。
算法的目的
  1. 能實現(xiàn)想要的結(jié)果,比如壓縮算法,加密算法,首先得保證數(shù)據(jù)不失真。
  2. 高效,空間復(fù)雜度,時間復(fù)雜度較好(然后保證,使用的資源足夠少,做的事兒足夠多,速度足夠快)
算法的依賴
數(shù)據(jù)結(jié)構(gòu)是算法實現(xiàn)的基礎(chǔ),算法總是要依賴于某種數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)的。往往是在發(fā)展一種算法的時候,構(gòu)建了適合于這種算法的數(shù)據(jù)結(jié)構(gòu)。
算法的操作對象是數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是算法設(shè)計的基礎(chǔ)。
兩者都是為最終解決問題服務(wù)的
何為編程的本質(zhì)

所以,編程的本質(zhì)就在于算法與數(shù)據(jù)結(jié)構(gòu)的結(jié)合。

下面是我自己總結(jié)編程的要點。

  1. 程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法
  2. 算法 = 控制 + 邏輯

如果將邏輯和控制有效的分開,那么,代碼就變得容易改進和維護。

第一個表達式傾向于數(shù)據(jù)結(jié)構(gòu)和算法,它是想把這兩個拆分,早期都在走這條路。他們認為,如果數(shù)據(jù)結(jié)構(gòu)設(shè)計得好,算法也會變得簡單,而且一個好的通用的算法應(yīng)該可以用在不同的數(shù)據(jù)結(jié)構(gòu)上。
第二個表達式則想表達,數(shù)據(jù)結(jié)構(gòu)不復(fù)雜,復(fù)雜的是算法,也就是我們的業(yè)務(wù)邏輯是復(fù)雜的。我們的算法由兩個邏輯組成,一個是真正的業(yè)務(wù)邏輯,另外一種是控制邏輯。程序中有兩種代碼,一種是真正的業(yè)務(wù)邏輯代碼,另一種代碼是控制我們程序的代碼,叫控制代碼,這根本不是業(yè)務(wù)邏輯,業(yè)務(wù)邏輯不關(guān)心這個事情。

所以

程序 = 數(shù)據(jù)結(jié)構(gòu) + 控制 + 邏輯

代碼始終 軟件


實際上的執(zhí)行描述應(yīng)該是這樣的。

大部分的語言都是基于操作系統(tǒng)的,當一個語言的程序執(zhí)行了讀取文件的操作,他就會先調(diào)用操作系統(tǒng)的讀取文件的方法,這個方法由操作系統(tǒng)這個程序提前內(nèi)置。

操作系統(tǒng)是由內(nèi)核,文件系統(tǒng),各種驅(qū)動,IO,寄存器,硬盤,網(wǎng)絡(luò)等等組成,實現(xiàn)了對硬件資源的全面掌控或者說是管理。

而,大部分的軟件也是基于對硬件或者對數(shù)據(jù)的管理。

硬件

硬件為執(zhí)行者

忠實的執(zhí)行由軟件生成的機器碼,既機器指令,并有條不紊的執(zhí)行。

對數(shù)據(jù)進行各種搬移,并發(fā)數(shù)據(jù)按需放到不定的指定位置。

軟件硬件中間發(fā)生了什么

這個其實是我很早就好奇的一件事情,硬件何時與軟件建立了溝通,軟件如何與硬件進行了聯(lián)系,又或,啥時候進入了所謂的Main方法。


這個是嵌入式的匯編啟動代碼,中間的一部分,寫的是,在啟動的過程中,指定了要執(zhí)行的__main函數(shù)。
__main函數(shù)代碼是編譯器自動生成的,你無法直接找到。
__main主要做這么兩件事:初始化C/C++所需的資源,調(diào)用main函數(shù)
代碼始終 總結(jié)
各種編程語言由編譯器或者解釋器,生成匯編,再然后生成與當前CPU相匹配的機器碼(機器語言),然后由CPU解釋為之執(zhí)行,每一條機器語言對應(yīng)一條指令集。
總而言之,匯編直接對應(yīng)指令集。匯編是指令集的簡寫或者名稱形式。
CPU忠實的執(zhí)行了全部代碼給的所有指令集合,并完成了工作。

這就是它的本質(zhì),很簡單,但是,看書又很枯燥,也許不會有人告訴你,但是,知道了,又感覺那么的簡單的事情。

了解和知道整體,才助于有系統(tǒng)化的知識。

碎片的知識是片面的,只有系統(tǒng)化的知識才是整體的,可以讓你輕松看到問題的本質(zhì),更有效率的處理完事務(wù),也容易讓你思考。

操作系統(tǒng)

我們必當寫過一個“操作系統(tǒng)”。

就比如,操作系統(tǒng)里有一個內(nèi)存管理,我們?yōu)榱瞬痪窒抻趩误w,就出現(xiàn)了Memcached,Redis,等基于內(nèi)存和硬盤管理的業(yè)務(wù)型內(nèi)存管理。

然后,從單體的操作系統(tǒng),延伸到了,分布式,集群,共用多臺計算機資源,分布或共同執(zhí)行。

所以,操作系統(tǒng)也在從無到有,從單到集中再到分布,合而分之,分而合之。

常遇到的四個問題(當然只是舉例)

我曾經(jīng)面試過一些新人,每個人對問題都有不同的見解,但是,我還是希望有自己的見解,而不是聽聞而已。

就比如,windows安全還是linux安全?

對于變化是應(yīng)該避免還是擁抱

穩(wěn)定的事物必然是趨向于降低變化的,但是,發(fā)展,拓展,擴展,都是需要外擴,發(fā)展才是硬道理,針對業(yè)務(wù)的發(fā)展,不得不擁抱變化,甚至要主動積極的引入變化,但是,為了保證整體的穩(wěn)定,又要避免對穩(wěn)定部分的引入變化,引起整體的震蕩。

這種矛盾的局面下,形成了兩個極端,一方面要讓業(yè)務(wù)活起來,流動起來,一方面又想讓其他核心業(yè)務(wù)穩(wěn)定起來,不要影響現(xiàn)有業(yè)務(wù)。

而這種極端的環(huán)境結(jié)果,是必然的。

只能針對兩種不同的極端情況,對其采納即可,保持一種平衡。

對于編程語言的選擇,我選最火的還是自己用的舒服的

優(yōu)秀的語言很多,用的廣泛的語言也很多,市場占有率高的語言也有很多,工資高的語言也有很多,但是,真到具體選擇的時候,發(fā)現(xiàn)還是讓人糾結(jié)。

入門語言,盡量選擇交集,這樣,都占有一定的好處,入門之后,還是不要太在意語言本身了,把它當成一種工具,這樣,工具多少其實無礙。

畢竟,工具好壞都不太影響你真正成果的產(chǎn)出。

對于別人所說的這個好還是不好

每個人對于一些定論都有各自的見解,但是,我還是希望得有自己的深度思考,就比如,windows安全還是linux安全?,如果盡信網(wǎng)上說的,那就是linux安全,畢竟linux漏洞少。

盡信書,不如無書。

哪個能力更加的重要?溝通還是自學(xué)

如果我剛畢業(yè),可能會說某某能力很重要,咋的咋的,但是,自己工作多年,所以,也不太好說哪個能力重要,但是,揚長避短,才能讓你發(fā)展起來。

很多人都會說自己不會啥不會啥,而不會說自己會啥會啥,我想選擇另外一邊會有不同的人生結(jié)果。

對于未來編程語言我的暢想

按照自然發(fā)展規(guī)律,以后用漢語(自然語言)來編程指日可待。

這樣,各種的AI智能,都是先從理解人類所說的話語的語義開始的,自然語言分析也是一門學(xué)科。

總結(jié)

勿忘初心,方得始終
為什么人一定要有夢想或者理想,因為如果你想都不想,放到你面前也不會屬于你自己。
夢想是一定要有的,萬一實現(xiàn)了呢?


  業(yè)務(wù)實施流程

需求調(diào)研 →

團隊組建和動員 →

數(shù)據(jù)初始化 →

調(diào)試完善 →

解決方案和選型 →

硬件網(wǎng)絡(luò)部署 →

系統(tǒng)部署試運行 →

系統(tǒng)正式上線 →

合作協(xié)議

系統(tǒng)開發(fā)/整合

制作文檔和員工培訓(xùn)

售后服務(wù)

馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     聯(lián)系人:石先生/雷先生