-
1 # me坤子
-
2 # SteveJrong
我認為「能」,但改變不大,如果過於執著於技術,可能會把人代入深淵,產生負面影響。
市場調研、市場需求分析、軟體功能分析、專案立項、產品總體設計、產品UI設計及實現、產品軟體設計及實現、app、後臺管理系統、運營管理系統等開發、系統測試、系統上線、系統覆盤
每一關都要過,都需要反覆的瞭解、推敲和修改,所以要求具備很強的宏觀和微觀思維,除了具備技術能力,還要具備市場研究甚至推廣銷售能力(程式設計師後期就會慢慢轉崗到IT專案經理或者技術專家,脫離寫程式碼,而去管理人員),所以程式設計師一般做事都很理性,不會衝動,比較謹慎仔細,考慮的很周全。這些工作中需要的做事風格多多少少會帶到生活中,就會提現為在生活中買東西要仔細考慮查閱瞭解到底好不好,才會買,或是做投資也會在之前做足文章,瞭解風險和收益後,綜合考慮要不要做投資,因為程式設計師偏技術,那麼技術類似都是有關聯的或者說類似的,如果讓他研究一下家裡電器怎麼修,會比一般人上手快點等等。這是程式設計師的工作性質導致的。
-
3 # 老白說IT
我最大的感受是改變了資訊的具化以及接收度。
以前和朋友出去玩,常常扯淡有的沒的,一般可能開始談論到某些人,後面直接就用人稱代詞來表示了,到了最後常常就是“他們”,“我們”,“那個誰”,穿插了整個談話,自己覺得說的是某某人但是可能並不是。現在工作8年多了吧,不知道什麼時候不知不覺的有了個習慣,每次說到這些代詞的時候,總會嘴碎多加一句“你是說xxx和yyy吧?”。這只是一個平常生活中的例子,還有很多方方面面都和這個類似。也正是這種習慣,反而讓我記東西更清晰了,以前扯淡完回家老婆一問三不知,感覺聊了半天好像啥都沒聊。現在不同了,各種扯淡的八卦資訊深入腦海。
當然這也不一定是程式設計帶來的,可能是和程式設計相關的工作經驗帶來的。
-
4 # 老楊說技術
可以改變的。
程式設計師整天和計算機打交道,和code打交道,會不自覺的更加崇尚邏輯思維,也更加的喜歡邏輯思維,所以很多事情也會從邏輯的角度去思考去處理,習慣成自然。
但是這些沒什麼優劣之分,更沒有什麼奇怪不奇怪的,存在即合理。如果要和程式設計師溝通,就多說客觀的理性的話,少說主觀的感性的話,就行了。
-
5 # 白毛拆解
程式設計師中有個之前很火的笑話,這麼說的:“老公,晚上回來買一個西瓜,如果看到西紅柿,就買兩個。”晚上,老公買了兩個西瓜回來,老婆問為什麼,老公說,“因為看到了西紅柿。”可能很多不從事程式設計師行業會認為這個有問題。但是程式設計師看完後一般都會心一笑。這就是程式設計改變人的思維方式的典型案例。這就是思維差異帶來的誤會。那麼是什麼導致的這種差異呢,當然是環境。
程式設計師打交道最多的兩個東西就是:產品經理,電腦。(不對不對,產品經理可不是東西)。說白了程式設計師寫程式就是和機器溝通。機器與人類是有極大的不同的。首先一條,就是精確,無歧義。計算機都低到上都是有明確而簡單的規則組成的,比如現代計算機的馮諾依曼體系,其背後就是圖靈機。圖靈機的原理並不複雜,但是表達能力卻極強。
因為精確,所以與機器交流的語言,也容不得半點的錯誤。不能讓機器產生歧義。不然就產生了傳說中的bug。所以一般程式設計師做事都會比較嚴謹。
還有一種特質,就是程式設計師喜歡自省。程式本身是精確的,如果得到的結果不是預期,那一定是自己寫錯了。寫程式的一半時間都在 debug,而 debug 的時候內心滿滿的都是 “我哪裡又錯了”,“臥槽,這麼SB的錯誤我都沒注意到。” 這種長時間自我反思的狀態,也會影響到生活,改變工作以外的思維方式。
-
6 # 碼農阿勇
程式設計這種工作在一定程度上會影響到人的思維方式,因為長期的這種工作逼迫他的聚焦點必須在著。
對於影響多大取決於人的性格和工作之餘的調節方式。對於奇怪的人不一定都從事程式設計了,也可以從事其他的比如藝術。奇怪的人一般比較擅長某一個專業的領域,在這個領域他認為自己是快樂的,是王者。
這個社會需要專才(你眼中奇怪的人)和通才(駕馭奇怪的人),因為有他們,我們的社會才會更精彩,你覺得那。
-
7 # 科技興
我覺得程式設計不能改變人的思維方式,原因如下:
其實這就跟理性和感性一樣,要想哪個改變哪個,都會引起巨大的衝突,理性讓人們的生活變得高效快捷,感性讓人們的生活變得更有人情味,兩者相輔相成,非要其中一個改變另一個是非常不現實的,不知道大家看沒看過一部電影《我,機器人》,計算機給機器人編制了三大法則,但是隨著機器人技術的發展開始出現問題,機器人嚴格按照三大法則行事,卻限制了人類的自由,並且試圖以這種方式改變人們的思維方式,結果怎樣,機器人和人類之間產生了巨大的衝突,甚至是戰爭,只有那些沒有設定三大法則的機器人站在了人類的一邊,電影最後男主和其中一個機器人合作關閉了三大法則,才結束了這場衝突。
我覺得就想電影中的情節一樣,程式設計改變人們的思維,其實人類最終會感到反感,我想也許不會出現電影中的情景,人類就會讓機器變得更加智慧,變得更像人類的思維方式,比起《我,機器人》其實我更喜歡另一部電影《機器人管家》裡的情節,一個機器人在人類生活中逐漸產生了人類的情感和思維,並十分嚮往變成受人類接受的“人類”,不但讓自己的身體變得和人類一樣,而且還可以自然衰老,甚至多次請求法律承認他人類的身份。
我覺得這才是機器和人類最好的相處方式,不是程式設計改變人的思維,而是人讓機器變得像人類一樣有人情味,而且機器也向往變成那樣。
-
8 # 木木西里
程式設計師有個著名的笑話,這麼說的:
“老公,晚上回來買一個西瓜,如果看到西紅柿,就買兩個。”晚上,老公買了兩個西瓜回來,老婆問為什麼,老公說,“因為看到了西紅柿。”程式設計師看到了一定會心一笑,甚至認真的人還會辯解說完全沒有什麼問題,認為這是對於語言嚴謹的追求。不管兩個西瓜吃不吃的完,沒了西紅柿怎麼炒雞蛋,至少我們可以看到,深入程式設計到了一定的程度,思維確實會發生不小的變化。
這種差異的本質來自於何處呢?來自於交流物件的變化。程式設計,本質上就是與機器交流。交流程度越深,思維方式就越會向交流物件靠近。就像跟東北人混熟了性格感覺也更豪爽一些,跟臺灣同胞話說多了也變得更加萌萌的那樣。
21世紀與其說是生物的世紀,不如說是機器的世紀。機器與演算法已經佔據了我們生活的方方面面。我們資訊換獲取來源不再來自於人工編輯的報紙,而是來自於搜尋和推薦系統。我們購物的渠道也從線下的人工商店轉換成了線上的自助服務。當人類社會積累的知識和行為都變成資料,慢慢地積累在一臺臺伺服器上,能夠與機器熟練交流的人,就是掌握先進生產力的人,就是能夠引領時代潮流的人。而與機器交流的語言,就是程式設計,就是寫程式碼。
機器與人類是有極大的不同的。首先一條,就是精確,無歧義。計算機都低到上都是有明確而簡單的規則組成的,比如現代計算機的馮諾依曼體系,其背後就是圖靈機。圖靈機的原理並不複雜,但是表達能力卻極強。因為精確,所以與機器交流的語言,也容不得半點的錯誤。所有與機器的語言表達,都是直面上的意思,也沒有意會一說。說清楚了,才會得到想要的結果,而如果得到的結果不如預期,那一定是沒有說清楚,程式碼寫錯了。
所以程式設計師也往往有這些特質,比如溝通的時候特別注重語言本身的意思,而會淡化情緒、表達方式、上下文情景等這些超出文字本身的內容。比如小姑娘在大熱天逛了一下午街,雖然買買買很開心,但大汗淋漓,有些疲乏又有些勞累,於是撒嬌似地說了一句“逛街好累啊”,期待著他能元氣滿滿地接一句“那我們去吃好吃的吧!”然後兩人滿血復活,還能看個電影什麼的。在他的心中可能就只聽到了一種抱怨“逛街好累啊”,然後自然而然地提出“那就別逛了,我們回家吧”。這樣有些掃興,但又無可奈何的建議。這些小情緒一旦超出了文字本身,可能就不會被注意到的。
還有一種特質,就是程式設計師喜歡自省。程式本身是精確的,如果得到的結果不是預期,那一定是自己寫錯了。寫程式的一半時間都在 debug,而 debug 的時候內心滿滿的都是 “我哪裡又錯了”,“臥槽,這麼SB的錯誤我都沒注意到。” 這種長時間自我反思的狀態,也會影響到生活,改變工作以外的思維方式。
人類的思維模式可能比較神秘,但機器的思維模式是清晰的,比如常見語言結構包括變數、迴圈、函式等等,與人類完全不同。因此,與機器對話,需要把人類的需求,轉換成機器可以理解的這些結構,中間的轉換很多時候並不容易。人類話語中的小小的變動,都會導致最後程式設計實現的巨大不同。所以跟程式設計師說話的時候,很多時候他們眉頭緊鎖,一言不發,死死地盯著你,你不要緊張,他們可能只是神情專注地思考,語言背後的每一點意思,反覆權衡不同的實現方式,來確保這些需求可以實現。甚至還有有些神經質地追問微小的細節,比如經常是什麼頻率,馬上究竟是要多快,很大的流量到底是多大。需求表達的越精確,就越有助於程式設計實現。
因為這些思維上的差異,不少人都覺得程式設計很難學。這個我也同意,思考方式的改變往往是最難的改變,甚至需要多年的培養。我從初中開始參加 NOIP 這樣的競賽,經過高中,大學,研究生,甚至工作了幾年,才慢慢感覺自己進入了大門。現在的小朋友們想要入門就幸福的多,有大量課程與培訓可以引導。但是,我認為,雖然培養興趣重要,但競賽的存在也功不可沒。因為競賽,有了明確的解決問題的目標,而且一步一步越來越難,循序漸進,能在積累知識的過程中獲得超越別人與自己的成就感,讓自己真正進入領域。像優必選這樣的機器人創造企業,也會推出《鐵甲小雄心》這樣的機器人綜藝,也會發起全球青少年機器人挑戰賽,這超過了一般教育機構,提供寓教於樂和寓教以賽的方式,透過提供統一的競技平臺,更能讓小朋友們通團體競技和趣味賽事等形式激發科技創新精神, 檢驗創意搭建、邏輯程式設計、運動控制、團隊協作等方面的學習成效,收穫技能和心理的成長。
21世紀機器的世紀。程式設計就是與機器溝通的方式,是獲取知識的必備技能。小朋友們早日探索,就能早日接受這種不同的思維方式,離未來也就更近一些。
-
9 # 福律閣土地訴訟
程式設計:強調面向物件,封裝,抽象,繼承——絕不幹重複的事情,程式設計師對此極其厭惡。
法律:冗餘的法律條文,過時的立法技術,滯後、拖沓——經常乾重復的事情,律師們樂此不疲。
我接觸過很多的程式設計師,剛開始我會主觀覺得他們在為難我,但是在我自己會編寫程式碼之後,我發現程式設計師的性格很友好,不會有什麼奇怪之處,他們是效率優先。
也接觸過很多律師,法學院畢業的人,數學天生不好(否則怎麼會讀法學院呢
-
10 # 美麗E然
本人曾經是程式媛;
程式設計久了,多少都會改變人的說話和思維方式;
比如,有段時間,我會經常觀察別人說話到底是什麼結構的,是順序結構、選擇結構還是迴圈結構。又比如,我跟教務辦的人說,以後我的課預設在實訓室上;
思考問題的方式容易公式化吧,比如 if .... then.... else .....
演算法的形成,編寫程式碼的過程,或多或少會影響他們的思維方式。至於性格,他們也不是都一樣,各種性格特點的都有。
-
11 # 王的學習筆記
我認為「能」程式是一種語言,是描述和構建一個世界(虛擬世界)的方式。
而我們用的語言也是描述世界的方式,只不過是現實世界。
但凡是語言,都是思維的產物;相應,也會反過來作用於思維,因此當然會改變。
甚至於你會一門外語都會改變你的思維方式。
-
12 # 穀粒說數
他對你感興趣,就會是另一種情況了...
思維方式,程式設計能改變,吃個早飯都能改變,不足為奇。程式設計師裡也有多種多樣的,這只是一份工作。
-
13 # 98號星球的小王子
之前在做輔導老師的時候,班級裡小朋友大多都在學程式設計,我明顯發現,學程式設計的孩子,靈活度,思維活躍程度都高於沒有學程式設計的孩子,而且這些學程式設計的孩子,能夠很好的舉一反三,好像可以在腦海裡構建模型,用邏輯的思維去理性看待問題,而那些沒有學程式設計的小朋友,沒有數感,數學題做起來特別的慢,邏輯性條理性不清楚。
所以我覺得,程式設計是可以改變人的思維方式
-
14 # 頭部玩家的船長
程式設計給我帶來的最大的改變就是系統性的思維方式和做事方法。
這種方式在有機會觸及其他領域時,非常有利。
-
15 # 智慧乳酪
我認為「能」。它是一種語言。語言是思維的一種表現。表現的方式不同思維的過程不同。形成的模式不同。人的思維當然可以改變。但凡事都有兩面性。在特定狀況要用特定思維,否則走不出自己的習慣思維。不能面對新情況新問題。一般人要掌握種以上的思維方式。在以後的生活中解決問題的方法才不會死板。
-
16 # 上海樂竹
程式設計是可以改變人的思維方式程式設計需要具備整體設計能力,清晰的邏輯思維,每個細節的具體實現。IT程式設計師都非常的務實,他們所處的環境、所接觸的人、所做的工作造就了他們務實的特點與品質。程式設計師大多數都是不太愛說話,基本都是悶騷型的人,和他們在一起會比較有安全感,工作相對穩定,IT的收入也非常的不錯。程式設計師都非常的單純,有時候給他們溝通,你會發現他們的想法、做事的態度跟小孩子一樣,簡單又天真。程式設計師又稱碼農,程式設計師看起來很高大上,其實大多數人工作的強度、工作的辛苦程度,跟工地的建築工人差不多,也是沒日沒夜的加班、奮鬥。程式設計師是年輕人實現夢想比較好的一個職業,前期工資水平相對比較不錯,經過時間、經驗、人脈的積累後期創業成功的機率比較大,這個行業技術更新換代特別快,也養成了他們終生學習的習慣。
程式設計師加班
-
17 # 蜜蜂攻城獅
只是影響思維方式,不會影響人的性格!
人的性格一般都是受到他所處的生活環境有關係,而思維方式是可以培養起來的。
比如一個非程式設計師,在接觸一個新的app軟體的時候,他們首先用的是功能,研究這個app怎麼用的。程式設計師雖然也會去研究這個app怎麼用,但是會下意識的去想這個app的這個功能是如何實現,這個app哪裡不協調,哪裡有Bug等等。
造成這個原因就在於,程式設計師因為大多是感性且邏輯嚴謹的人,一個邏輯不嚴謹的人,思考問題不全面的人,在做開發的時候,你會發現他寫的功能模組會有很多Bug,正是因為這樣的原因。導致了每一個程式設計師最後都會慢慢的變得邏輯思維很強,很會分析問題。
當然,程式設計師因為會經常加班,接觸的人不是產品經理就是測試,所以他們的社交能力相對來說比較偏弱。所以,當你跟程式設計師溝通的時候,你會發現有時候你跟他交談的時候,他說的問題跟你聊的問題有偏差!
所以會給你一種感覺就是程式設計師都不太會說話,聊天。但是當你遇見一個大齡程式設計師的時候,這些問題其實都會消失。程式設計師做的越久,他們就越會聊天。
最後,思維方式讓程式設計師變得邏輯嚴謹,但是並不會影響程式設計師的性格,性格這個其實真的跟是不是程式設計師無關。
-
18 # 懂點IT
首先可以肯定的是程式設計確實可以改變人的思維方式,筆者的理解更傾向於先有了這樣的性格和思維方式才去選擇了程式設計師行業!之所以覺得和他們交流有些怪異是因為他們總是站在技術層面去思考問題,這種思考問題方式可以幫助其更好和計算機打交道而不是人, 但是你身邊要是有一些朋友是從事程式設計行業的,如果相處的比較融洽也可以從他們身上學到很多解決生活中問題的新方法!這裡我要申明的是,現在很多學校開設程式設計課,甚至小學生都要學程式設計!我是持反對意見的,程式設計是一門綜合學科,涉及的基礎學科包括數學、物理學、計算機科學,資訊科學等等。計算機科學有涉及到軟體工程、程式語言、資料結構與演算法、資料庫,設計模式等等!說實話要學好程式設計真不是件容易事,但是歸根結底,程式設計是一門綜合學科,需要我們先具備良好的系統思維、抽象邏輯思維、創造性思維模式,小學生還處在發育階段,應該鍛鍊他們這方面的思維方式和方法上,而不是要求他們學習具體的一門技能。
程式設計概念是什麼?程式設計是指人類使用特定計算機語言編寫的一系列程式指令集合,並將其編譯到計算機中執行以解決特定領域的問題。這裡要感謝我們計算機先驅圖靈先生——公認現代計算機領袖,而他的最偉大之處不是說發明了計算機之類的,而是第一次提出了計算的本質:宇宙中一切問題都可追溯到計算這個最本質的問題,也就是其實所有問題都是可計算的,比如你找到媳婦兒機率是多大?我扔一塊石頭它會落到什麼位置?我寫一本書花了多少時間?我每天吃是多少食物才能達到減肥目標等等,生活中處處都是計算的影子。想想也是,科學家說過宇宙的本質是數學,數學當然是可計算的!有一個經典說法:程式=資料結構+演算法。程式設計就是使用特定資料組織方式(資料結構)和 一套特定執行步驟(演算法)來告訴計算機如何執行人類的指令。有興趣的朋友可以參考計算機科學叢書,資料結構和演算法之類的書籍。
程式語言有哪些?這裡大致列舉目前流行的幾門語言,實際情況是數不勝數,太多了!
從資料編譯型別來區分:分為強型別語言和弱型別語言。
從程式設計理念來區分:分為面向物件和函式式的程式語言。
彙編、C、C++:靜態型別的偏底層的計算機程式語言,適合操作計算機硬體,對使用者的系統底層知識和抽象能力要求較高,一般用來做裝置嵌入式開發、效能要求較高的特定場景、編寫其他程式語言和企業中介軟體的開發。java、 C#:現代軟體得以快速發展,真的要得益於java和C#了,特別是java,是一種靜態型別的、幾乎涵蓋所有企業級開發、移動領域開發(手機或其他智慧裝置)。幾乎你看到的90%以上的網都是java,比如淘寶、天貓、各大企業入口網站主要是java開發,這方面的人才需求也是最大的。當然一個網站不一定用到一種程式語言,比如淘寶,前端UI使用的javascript,HTML和其他前端框架,後臺使用java開發應用服務,區域性最佳化使用C或C++、中介軟體開發用到了java、C或C++。Python:弱型別的一門語言,這個應該是目前全網最火了,都在說python如何如何,它是一門指令碼解釋性語言,如果用他來做企業級開發還是不太適合,它的優勢在於簡單方便、社群龐大,而且工具包眾多,很容易實現你想要的功能,得益於AI人工智慧的崛起,Python將會變得越發強勁。javascrpit:弱型別函式式的一門語言,使用最廣泛前端指令碼語言,可以實現前端互動,你去淘寶網頁買東西,瀏覽網站所有的互動操作都它有關。如何讓機器讀懂人類程式碼?這裡需要我們使用編譯器將人類使用英語單詞編寫的程式碼翻譯成機器程式碼,以C語言為例,大致過程為:
C預處理器擴充套件原始碼,將原始碼用到的外部資源匯入到一起。然後編譯器將原始碼翻譯為彙編程式碼。彙編器將彙編程式碼翻譯為二進位制目的碼。連結器將目的碼於庫函式程式碼合併,生成最終可執行程式碼。何為優秀的程式設計師?終身學習:程式設計是一門綜合學科,涉及的知識點眾多,當代社會正處在資訊時代大變革中,技術的更新迭代速度非常頻繁,拿前端來說,從javascript、jquery時代到如今的前後端分離vue,reac等等,從業者需要不斷的學習新技術,首先把自己當作一個終身學習者,然後還要會學習,不要停留在技術本身,要思考每項新技術出現的原因?解決了什麼問題?在什麼場景下使用?思考技術的本質!技術突破:要敢於在工作中運用新技術,使用新的思路解決問題,突破自身的技術壁壘!永不言棄:程式設計是一個及其費力的過程,不僅是腦力也是體力活,有時為了找到系統問題,通宵是常有的事情,筆者剛從事這行業的時候,一連整個星期都是在公司通宵加班,有一次從上午九點開始到第二天上午11點,一連26個小時都沒閤眼為了系統上線!所以要給我自己打好預防針,不要輕易放棄!樂於分享:分享是一個自我提升的過程,學習的知識不用就會忘記,分享不僅可以鞏固知識也可以讓其他人收益,怎麼判斷自己確實理解一個知識點呢?很簡單,如果你能把它寫出來或說給別人能懂那你就確實理解了!這也是為什麼筆者我也開始分享自己的經驗了!它如何改變人的思維方式?程式設計其實也是一種複雜的社交活動,開發一個程式或系統大致分為以下過程:
可以看到其實寫程式碼是最後一步,在這之前我們需要大量的設計和社交活動搞清楚需求和問題,這個過程是艱難的,需要我們充分發揮的自己大腦,系統性思考整個系統架構,抽象化程式碼設計,提煉出需求,等等都是必可少的,提高我們的系統思維能力,溝通能力和抽象思維能力等等,是一項複雜的思維過程!
-
19 # 達特茅斯
當然,我並不是在說程式設計能塑造學神,而是說程式設計師的思維方式裡有某些特質和這些傳說中的學神出自同源。這些特質有時被冠以第一性原理,費曼技巧等等稱呼,出現在各路媒體對天才人物的頌揚之中。
從基本的科學原則中我們瞭解到,天才的大腦與我等凡人不應該有非常巨大的差異。那麼,使他們較凡人聰穎的關鍵顯然應該在思維方式上。這個事情更精確的描述是,一個孩童長期刻意維持某種高效率的思維方式,可以使他更有機率成長為常人眼中的天才。而大部分對天才人物的報道中,“怪異”是個高頻出現的詞。究其原因,無非就是長期對某種思維方式的刻意維持,形成了某種常態的、穩定的,但與常人不同的心理特徵,並透過言行等外顯行為被外界覺察到了。
那麼現在問題就變成了,程式設計師這份工作需要長期對某種思維方式進行刻意維持嗎?
要回答這個問題,首先要弄明白程式設計是什麼?用一句話來說,程式設計就是用計算機能聽明白的話,把我們人類想要達成的目標,向計算機傳達清楚。這個過程就好比你招了個外國人員工給你幹活,他還不懂中文,那你就只能先自學外文,然後再向他佈置任務。而在你們兩個人長期的純外文交流的工作環境中,你原先的中文思維就會漸漸地向外文思維發展。
程式設計師的工作環境和上面的情況差不多,所以一個程式設計師只要工作的時間足夠長,最終都會形成一個常態的、穩定的“程式語言”思維,或者叫邏輯思維。而這種思維顯然和我們大部分普通人的思維是有所區別的,這也是題主說“和程式設計師聊天感覺有點奇怪”這種情況出現的原因。
最後回到問題吧,程式設計不一定能改變人的思維方式,但長期程式設計能。
-
20 # 弘觀教育
很多人都在疑惑,都說學程式設計可以培養程式設計思維,而程式設計思維是什麼?對人有什麼幫助?今天,我們就這個問題和大家詳細聊一聊~什麼是程式設計?
在瞭解程式設計思維之前,首先要和大家說一說什麼是程式設計。程式設計就是和電腦對話,用電腦能聽懂的語言,告訴它我們想讓它做的事情。
舉個例子來說:如果我想休息一下,會這麼和孩子說:“把那個凳子搬過來。”如果我們想讓電腦聽懂這句話,就需要這麼和電腦表達:
定義物件:什麼是“凳子”;把凳子向上移動20釐米;往前移動兩米;把凳子向下移動20釐米這樣,電腦就完成了我們想要它做的事情。
So,相比於人類之間交流的隨意與感性,和電腦對話時,必須具備嚴謹、理性的思路,每一步都要給出準確的指令,這樣就能讓電腦按照自己的想法行動,不會讓結果跑偏。
想要讓電腦聽懂我們說的話,需要讓自己變得理性、嚴謹,思維具有條理。當孩子試著從電腦的角度去思考問題時,也就學習並鍛鍊到了我們常說的“程式設計思維”。
程式設計思維是什麼?很多人都聽過程式設計思維,但對它瞭解的卻不多,甚至會產生這種誤解——程式設計思維就是程式設計演算法。
其實,程式設計思維並不是編寫程式的技巧,而是一種高效解決問題的思維方式,它是“理解問題——找出路徑”的高效思維過程,由分解、模式識別、抽象、演算法四個步驟組成。
1、分解——鍛鍊拆解複雜問題的能力分解,就是把一個複雜的大問題,拆解成更可執行、更好理解的小步驟。假如你要為家庭出遊做一次旅遊規劃。“全家旅遊規劃”聽起來非常龐大、繁瑣,而學會分解的人們則會把這個難題拆分成幾個容易解決的小任務——確立目的地、安排行程、預定機票和酒店、準備行李清單。
在程式設計的過程中,就是在不斷地訓練他們把複雜的問題拆解、理順的過程。這個過程是解決問題的基礎,把問題拆解清楚,才有接下來實現的可能。正如麻省理工學院的計算機教授Mitchel Resnick所說:“ 在學程式設計的過程中教人們學會拆分問題,這才是最重要的。
2、模式識別——鍛鍊發現並整合“重複規律”的能力模式識別,就是識別不同問題的模式和趨勢(共同點)的過程,在我們的經驗庫裡找出類似問題的解決辦法,套用解決。識別的模式越多,解決問題的速度也就越快。
例如:對貓進行模式識別,我們會發現貓有這些共同點:有眼睛、耳朵、尾巴、四條腿……我們根據這些特點建立起貓的“模式”,按照這個模式就能批次畫貓了。不用每次畫一個新動物,只需要變換區域性特徵(例如毛髮顏色、尾巴長短)就能輕鬆解決。
So,在程式設計過程中,一直在進行著這樣的訓練,當發現一些可重複的步驟,就會把它們整合起來,建立模式;再遇到類似問題時就能讓計算機套用此模式,快速解決。3、抽象——鍛鍊找出問題本質的能力抽象,是指聚焦最重要的資訊,忽視無用細節。簡單來說就是找到問題的本質,過濾掉其他無關緊要的因素。
例如,有一套房子,我們看到的是這樣的:
但是在建築師眼中,這套房子可能是這樣的:
抽象思維高的人,能在大量資訊中抓住關鍵資訊,提高學習效率。不論是在做語文還是英語的閱讀理解中,抽象思維能力強的孩子總能很容易地找出關鍵句和中心思想,學習會更加輕鬆。
在程式設計世界裡,包含“子系統、模組、包、類、方法和語句”等不同等級的抽象,人們能夠透過程式設計的學習不斷提升聚焦關鍵資訊的能力。
4、演算法——鍛鍊高效解決問題的能力演算法是一步步解決問題的過程。根據前面對問題的分析與理解,設計每一步的路徑方法,解決整個問題。
在具體解決問題的過程中,最關鍵的是邏輯思維能力和除錯糾錯能力。
在程式設計練習中,任何一行程式碼出問題,程式都會出錯無法正常執行下去。這時,人們就必須要自己一步步執行步驟、梳理邏輯,找出問題並想辦法解決。
很早就聽說做it的人性格很奇怪,之前以為是誇張的,現在接觸過一些程式設計師之後發現真的是這樣。和他們聊天會感覺有點奇怪,說話的方式,思考問題的方式似乎都有些不同。是程式設計的工作改變了他們的思維方式還是這種性格的人都去做了程式設計師?
回覆列表
我認為「能」
先來說說大眾朋友們普遍存在的幾個誤解。
一、程式設計師都喜歡穿格子襯衫
戴著眼鏡穿著格子襯衫和牛仔褲,似乎已經成為程式設計師的標誌性搭配。連駭客小哥也不例外。
但是如果說這是因為程式設計的影響,小慕覺得有失公允。喜歡穿格子襯衫的並不只是程式設計師,準確來說,應該是“和人打交道少的、少注重打扮、非富二代的青年男性”都比較偏愛格子襯衫。
從衣服搭配的角度來說,格子襯衫是一種非常百搭的“女神”級別的服裝,很容易讓人產生“第一眼看上去很好看”的感覺,並且不用花太多心思去進行搭配就可以穿出比較日常休閒的感覺,這也是很多大品牌都喜歡格子製品的原因,它會讓人產生消費慾啊。
那麼問題來了,什麼樣的人會憑藉第一感覺並本著懶得搭配的原則去買衣服呢?肯定是“和人打交道少”的人。程式設計師毫無疑問屬於這個人群,坐在電腦前敲敲程式碼,只要穿的乾淨、舒服、得體、不扎眼,基本上就是程式設計師們對衣著的所有追求了,根本不用擔心著裝是否能融入環境、搭配是否達到最有效果這種問題。
但是!程式設計師只是包含在這個人群中,並不代表所有喜歡穿格子襯衫的都是程式設計師,這跟思維是否被程式設計影響也毫無關係,實際上這種情況主要是由於人的性格和社交圈子決定的。不信的話可以多觀察一下,其實很多搞理工科的男生,都喜歡穿格子襯衫。
嗯,允許反駁,畢竟身邊還有帥帥的特別會穿搭的程式設計師小哥哥。什麼,你說一定是需求不夠多、工作不飽和?No no,小慕覺得顏值、審美也是其中很重要的因素,主要看氣質。有個段子說的很對:
“說什麼打籃球的男生帥,踢足球的男生帥,著實全他媽放屁,只要你長的帥,彈玻璃球都帥!說什麼會跳芭蕾女性雅觀,會跳爵士的女生雅觀,又他媽放屁,只要你長的雅觀,擦玻璃都很雅觀!”
嗯,這個段子不是我說的。好了,我們繼續。
二、坐電梯一定要思考電梯系統
這個梗也是由來已久,傳說每個程式設計師在坐電梯或者等電梯的時候,都會不由自主思考電梯系統的任務的排程演算法。所以很多人就說,這就是程式設計對人思維的影響,但是小慕反而覺得這並不是對思維的一種影響。
這顯然是一種職業病……
一個蛋糕師看到成品糕點,會不由自主去想“這個配料面和糖的配比、味道鹹了還是甜了、奶油花紋做的夠不夠細緻”這些問題;
一個搞金融投資的顧問,看到股票就會想這支股票之前漲了還是跌了、現在有沒有必要購入、未來將會是什麼漲勢;
……
這些和程式設計師想電梯演算法其實都是一個道理,顯然是職業精神在大腦作祟的結果,跟思維方式的關係不大。
三、程式設計師說話都怪怪的
Emmmm這大概是題主之所以提出這個問題的癥結所在。許多程式設計師確實存在比較“另類”的說話方式,比如我們大家都知道“哦”“呵呵”之類聊天禁詞,在他們眼中根本感受不到深層含義,還有許多朋友也會感覺跟程式設計師聊天,兩個人之間的頻率對不上,電波無法感應,再加上大部分程式設計師說話風格都比較簡潔……
所以程式設計師們撩不到妹啊!
不過,小慕透過長期對程式設計師群體的觀察發現,很多時候程式設計師說話方式奇特的根本原因是……工作任務太多壓力太大導致的……而並非是所謂的程式設計影響思維。
在專案纏身又被bug折磨的時候,你去找程式設計師聊天,他們多半是單音節生物,迴應只有嗯、啊、哦、好等字眼,甚至有時候還會神神叨叨蹦出幾個你不認識的英文單詞;但是當比較輕鬆悠閒的時候,其實大部分程式設計師也能夠做到風趣幽默不讓聊天冷場。這並非程式設計影響思維,而是工作壓力和環境對人情緒的影響。
不信的話,可以去看看不是做程式設計工作但是同樣工作壓力大的人的說話方式,有的暴躁有的頹廢,其實會有題主跟程式設計師說話同樣的感受。
說到這裡,忍不住請大家多體諒一下單音節的程式設計師們……如果你是妹子,再多給這個單音節程式設計師一次機會吧……
說了這麼多誤解,那麼程式設計對人的思維方式的影響到底體現在哪裡呢?
這裡就要說一個大方向上的人類的特點了:人類是一種“在面對未知時總是嘗試在已知事物中找到與之類似的事物”的生物。看起來是不是很難理解?其實這句話的意思就是,當人類在大腦中構建好了某些體系後,再遇到未知事物時,人類就會不自覺地嘗試把已經搭建好的體系套用在這個未知事物上。
而這一點,在程式設計師群體上體現的特別明顯,也就是程式設計對程式設計師群體思維方式的影響。
比如,讓一個程式設計師去學習管理、涉及到公司組織架構的時候,他往往會把公司的組織架構套用在程式設計時的系統架構上:
公司不同部門之間的溝通,在程式設計師眼中那就是兩個模組在透過介面函式實現資料互動;
公司某部門內部的工作方式,在程式設計師眼中就變成函式的正常返回和異常處理、同步和非同步;
當公司出現“某個部門太忙”這種情況時,程式設計師會想如何才能降低I/O的訪問次數並同時提高部門的併發量;
……
這跟看著電梯想系統的職業病不一樣,是跳出了工作範疇,程式設計師用類似程式設計的想法思維去解決生活中碰到的實際問題,這才是程式設計對他們的影響。
腦洞再開大一點,當一個程式設計師接觸到哲學(此哲學就是此哲學,非彼哲學)的時候,他的想法可能是這個宇宙會不會就是上帝開發的一個系統,宇宙中的各種物理引數只是上帝設定的引數值,每個人其實都只是一個程式,當外界透過人的耳朵輸入一個“謝謝”後,人會透過嘴巴輸出一個“不客氣”。
可以說是非常直男的思維方式了,但這就是程式設計師。
因此,題主感受到的那種“程式設計師的思考問題的方式有點與眾不同”,根源就在這裡:程式設計師總是試圖用他們大腦中已經搭建得很完善的程式設計體系去了解和解釋這個世界的一切。