為什麼編程語言只是在處理數據卻能解決那麼多實際問題?

馮仲平


仁者見仁,智者見智。說下我的理解。


先類比幾個讓人驚訝、又理所當然的現象

  • 詠春只有攤、膀、伏三板斧,卻可以一個打十個!
  • 數學只有加法和乘法,卻可以發現運動定律,更可以計算衛星軌道!
  • 英文字符只有26個,人類卻可以寫出那麼厚的書,不就是26個字符的排列組合麼?
  • 漢字永字八法,“點、橫、豎、撇、捺、挑、折、勾”, 從千年前的司馬遷,還是那麼有滋有味!
  • 電路只是處理與或非三種邏輯,卻能組合成彪悍的CPU!

即使簡單的組合,也可以千變萬化

事情應該力求簡單,不過不能過於簡單。

編程本質上只有分枝判斷(if/else)、循環執行(For/while)、遞歸調用。不信,去看所有的代碼,不論何種語言,不論何種功能,都是這三者的反覆組合。正是這三種的組合,卻可以:

  • 支撐起數億人訪問電商網站
  • 構建出人工智能的神經網絡
  • 解決數據上個千奇百怪的各種場景問題。

想想不是很神奇麼?

但是,這三種基礎邏輯組合起來,千變萬化。正是這千變萬化,讓編程可以解決那麼多實際中遇到的問題。

編程,本質上是數學。

自古至今,人類研究來研究去,無非就兩個科目。一個是哲學,一個是數學。從幼兒園到大學到研究生入學,都離不開數學。很多新的學科,尤其是理工類,都是基於數學。

為什麼數學可以解決這麼多問題?

我覺得這是一個哲學問題。你的去問哲學家。或者將夜中的盪鞦韆的十一師兄。


最近兒子經常問為什麼。比如為什麼水是透明的?我回答說因為水就是透明的。有點無賴,唉。


平凡科技


作為一名IT行業的從業者,我來回答一下這個問題。

首先,編程語言看似僅僅是在處理數據問題,但是隨著大量的資源逐漸數據化,編程語言的資源整合和處理能力也會越來越強大,這一點將隨著大數據的不斷髮展而有越來越明顯的體現。

編程語言一端要對接各種操作系統和資源平臺,另一端則對接具體的開發場景,操作系統和資源平臺通過接口的方式來開放自身的各種功能,而程序員則可以通過編程語言來完成對於這些資源的整合和利用,以完成具體的業務邏輯處理,通常情況下,計算和存儲是編程語言主要的任務。

編程語言能夠解決什麼樣的問題,或者說編程語言自身的功能邊界,在很大程度上取決於編程語言所處的資源平臺,不同的資源平臺往往能夠解決不同類型的問題。隨著產業互聯網的發展,整個開發領域將逐漸進入到平臺化開發時代,其中雲計算平臺、大數據平臺、物聯網平臺和人工智能平臺將不斷提升自身的資源整合能力,程序員基於這些開發平臺也能夠不斷拓展自身的開發能力邊界。

編程語言本身也與具體的開發場景有密切的關係,比如嵌入式開發往往會採用C語言,Web開發會採用PHP、Java、Python等,而大數據開發可以採用Python、Scala等,所以程序員往往需要根據不同的開發場景來選擇使用不同的編程語言。對於初學者來說,如果沒有明確的開發方向,可以選擇學習一門全場景編程語言,比如Java、Python和C#這三門編程語言就是不錯的選擇。

我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言,或者私信我!


IT人劉俊明


為什麼編程語言只是在處理數據卻能解決那麼多實際問題?

問出這個問題可能是將編程語言指揮電腦處理的數據和平常接觸的狹隘數據定義混淆了,電腦處理的數據不僅是指我們平時說的數據,還有數據間的邏輯關係。如果在數據這個地方鑽牛角尖,還會出現一個較真的問題“明明電腦只能識別0和1兩個數據,他是怎麼處理3的?”。0和1能表示比較大的數字,是引入了進制這一概念,二進制數當前位置大於一時,向上一位進一來表示更大的數字,這是二進制數內部的邏輯關係。進制這一概念解決了表示更大數字的問題。假如僅僅只有這的話,電腦也只能處理純數字,連最簡單的加減都做不到,為了解決這一問題,電腦引入了邏輯門這一概念,通過數據與邏輯的結合實現加減的處理(想詳細瞭解電腦加法運算的可以看下我這個回答http://t.cn/AikU4Bdj)以及更加複雜的現實邏輯問題的處理。比如“王五吃飯”這個事情。我們把它拆解為“王五”“吃”“飯”以及一個邏輯真值“True”(數字1)代表肯定動作(用計算機交換碼中規定的數字組合來分別代表“王五”“吃”“飯”)。假如沒有吃飯,將吃的邏輯值通過非門電路,吃的邏輯值就變為假“False”(數字0)。電腦就是這樣把現實中的事情和電腦中的數據聯繫在一起,並處理他們的邏輯變化,更復雜的問題就是更多的數據以及邏輯關係的組合。編程語言就是直到電腦完成這一過程的工具。


科級雞


編程的目的是什麼,就是為了解決實際問題。

語言只是一個實現工具,工具本身是不會動的,那就要靠人去設計一套動作,讓它動起來,達到幫助人去解決問題的目的。

數據是什麼,就是日常的各種現象的數字化表象。人可以去分析它們,但是數據量一旦上去,只靠人就不行了(20個指頭數不過來了)人就需要機器去幫忙,而這種重複性高強度的數據整理工作恰好是機器的長處。

有了機器的幫忙,人就可以通過通過(數據)現象去看(規律)本質了。但是該怎麼分析該怎麼處理數據,這完全要看人的設計能力了。

至於編程語言,無論是C、PHP、Java、python,那都是工具,就像改錐、榔頭、鋸子一樣,區別就是什麼環境下最適合用什麼。例如鋸樹當然鋸子最好用,但你也能用榔頭慢慢砸,更可以用改錐一下下捅。至於為什麼別人捅三下就能解決問題,而你要去捅一百下,那是你捅的不是地方(不熟練/不會用/沒經驗)。

簡單的數據處理過程,例如網上購物,通過選品牌、類型、價格範圍就能確定合適的商品範圍,這就解決了找不到想要商品的實際問題。而程序只是按我們的條件幫我們做了過濾而已,但是否滿足了需求,那還要人去判斷,然後根據結果再設定條件去篩選,直到有或沒有。

至於數據處理,也不是簡單的過濾,也要先分析數據之間的關係,剔除無關的數據,補全缺失的部分,制定處理規則,然後才是編程。循環幾次才獲得滿意的結果,而不能簡單的只看最後一次。


IT的老司機


《離散數學》這門課會告訴你答案。

《數字邏輯》這門課會告訴你具體做法。


系統一定要我起個名字


因為互聯網時代就是信息的時代,是萬物互聯的時代。那麼物品之間通過什麼建立聯繫的呢?答案就是數據,那麼身為編程語言就重要的功能就是賦予數據一定的邏輯,那麼這些邏輯的組合就變了功能,比如語音識別,機器翻譯,自動駕駛等。之所題主有此疑問,我認為是對編程語言的理解還不夠全面,應該多去了解一些其它的編程語言,你就會發現,語言不過是描述一段邏輯的形式,區別在於語法,其中的邏輯是不變的。


大數據和人工智能UPUP


通過編程完成對芯片的控制,通過芯片驅動各種電子元件,做出各種電子產品,這也是單片機的應用!!


單片機設計製作


因為那些問題都可以被數據描述。


James036


數據是信息,計算機實際上在交換信息,和從複雜信息中找到有價值的信息,這些信息幫助人現實世界做出決策,價值由此產生。


愛吃火鍋的小青年


因為很多實際問題本質上就在處理數據


分享到:


相關文章: