-
1 # 執著的瘋子8
-
2 # 實在想不出叫什麼暱稱了
難在你覺得自己不行,就心裡產生了障礙,自己嚇到自己,各種猶豫,或是直接放棄。難不難,只有試了之後才知道。那麼對人都做,難道你比別人差嗎?如果一定要說難,那可能就是傳說中的那種邏輯思維吧,但凡是具備傳播性可複製的東西,都有它內在的規律,不然那麼多人怎麼都學會了呢?任何事,只要你用心並努力,都不難。最難的是,還沒做呢,自己先怕了。
-
3 # 滑頭鬼太郎
筆者學習了很多程式語言,個人認為最難的是用程式思維去思考解決問題的方法,就是將問題逐步分解,分解到可以透過程式設計處理的最小問題,逐一解決,這是很關鍵的,其中出現跳躍性思維就會導致最終程式出錯。
人的思考方式和機器的思考方式差別很大,就拿最簡單的一加一等於來說,我們可以瞬間得出答案,但是機器不一樣,再簡單的問題,也需要一個程式計算的過程。
而且程式設計是一個客觀的事物,不是一個主觀的想法,需要嚴格遵守程式語言的規則,也就是所謂的需要死記硬背,這也是一個難點。
綜上所述,程式設計到底難在哪裡?
第一,思維的轉變
第二,語言的學習
程式設計雖然不易,但只要多多練習,還是可以攻克這些難題。
-
4 # 工科男的閒暇時光
難在對一個實際問題進行程式設計。程式設計並不僅僅是一個敲程式碼的過程,它還是對程式設計師思維想法的一種提煉。記得當初剛學程式設計那會,我想做一個最簡單的註冊登入功能,於是我直接根據所學不久的表單元素便輕而易舉地做出來,但我想做得更好一點,於是便加入資料庫知識,將註冊賬號資訊儲存起來,登入時必須與資料庫儲存的賬號密碼進行校驗。後來找了老師問了一下他的觀點,他又跟我普及了網路安全的知識,我又在其中加入了諸多限制提示功能,並且對程式碼進行了微調,防止SQL注入...當時真的學會了挺多。
難在大系統程式設計中的團隊溝通交流。或許團隊程式設計中大體是按照總綱來程式設計,但每個人的編碼習慣都有所不同,分派的任務不換人還好,一換人的話前者所寫的程式碼誰認識。同時溝通困難也是一個毛病,團隊中的每個人技術水平不一樣,大家的想法也是不一樣的,在實際開發過程中溝通有礙延誤專案是時有發生的。
難在技術更新速度快,今天的流行技術在明天或許就是過時的了。SSH框架才流行沒多久便被SSM取代了,而現在呢,走在前沿的是SpringBoot框架了。所以技術的快速更新使得我們程式設計過程中需要不斷掌握新的開發技術,否則我們會被淘汰,這樣一來亞歷山大啊。
-
5 # IT人劉俊明
作為一名IT行業的從業者,同時也是一名教育工作者,我來回答一下這個問題。
首先,程式設計可以分為三個階段,第一個階段是對於程式語言自身語法的理解,這個部分雖然也具有一定的難度,但是大部分人,即使沒有任何程式設計基礎,經過一個系統的學習過程,都能夠掌握。
第二個階段是透過程式語言來完成各種邏輯操作,這個部分正是程式設計的難點所在,此時需要掌握各種演算法和資料結構。實際上,程式設計問題說到底就是數學問題,但是並不是數學基礎好的人,就一定能夠順利掌握程式設計,這中間還需要一個轉換的過程,關鍵就在於演算法設計能力的培養,這個過程比較考驗程式設計師的邏輯思維能力和抽象能力。
第三個階段是透過程式設計來完成各種資源的整合和操作,這個部分也是程式設計的一個難點,此時對於程式設計師的知識結構有較多的要求,涉及到作業系統、計算機網路、資料庫等計算機基礎知識。隨著當前雲計算和大資料的發展,目前雲計算平臺和大資料平臺對於程式編寫的影響越來越大,因為程式設計師需要藉助於這些平臺來完成資源整合。相對於演算法設計來說,雖然這部分的難度也比較大,但是經過一個系統的學習過程,程式設計師的資源整合能力也會越來越強,這部分難點是完全可以透過努力來解決的。
對於很多初學程式設計的人來說,學習最大的難點在於如何建立自己的程式設計思想,而要想建立自己的程式設計思想,可以從程式設計過程和程式設計方法兩個方面入手。雖然不同的程式語言有不同的程式設計過程,但是說到底就是一個抽象問題,而要想提高自身的抽象能力,多做實驗是非常有效的方法。
-
6 # 井151276607
程式設計,難在細節。用20%的功夫,可以做好80%到90%的工作,用時也就想10%的時間(應用專案生命週期)。可是,要完成其餘的20%工作,餘下的時間是做不到的。
-
7 # 千與優選
作為一個自學者的體會:
1,學習程式設計,就像起初我們學習英語一樣,開始靠死記硬背,基礎零散的每一個單詞的意義和如何應用!
2,當然死記硬背,並不能百分百記住,但要做到看見每一個程式語言要知道是何用途?是何意思?
3,看懂了,不代表就會用,那麼最難的就在這裡了,多多練習,從不斷的敲打程式碼,去熟悉、記憶、去完善沒這個過程,貴在堅持!貴在堅持!貴在堅持!!!
本人從2009中旬自學半年,之後不斷學習,直至現在扔在不斷鞏固學習!期間學了設計PS,CDR,CAD,AI,影片後期Pp,如果說難在哪裡?還是那句話,能看懂,知道什麼作用,不叫會,只是叫略懂,真正的高手閉著眼睛都可以快去熟練敲打程式碼,哈哈,所以貴在堅持!
-
8 # 橙子書生
會者不難,難者不會。
這是古話,也是教育的基石。
程式設計,最根本的基石所在,就是C + +
基礎知識一定要掌握好,要領悟其中的精髓。
俗話說得好,萬丈高樓平地起,根基最關鍵。
-
9 # 數碼大磚家
學習一種新的語言,特別是我們華人學的文字都是方塊字象形文字,而c語言和英語一樣都是字母,對我們華人來說確實難了一些,剛入門確實需要死記硬背。我覺得這就是慢點
-
10 # 江南漁夫
不說廢話,能看完第一卷並大部分消化掉,程式設計思維就算入門了。能看完目前為止已經發表的前四卷並且大部分消化掉,可以算是個很好的程式設計師了。注意這裡的衡量標準不是指寫業務程式碼的能力,而是編寫合理的程式的能力!
-
11 # 小小邁克
程式設計的難處不在於程式碼能不能寫得快,而在於需要對以下幾個方面做出有效的交待:
1、做出來容易,做正確難。做出來指沒 bug 且完成需要的功能,這是最基本要求。正確不是指功能正確,而是指程式可以很容易推理理解,理解意圖,理解它是如何做到的,理解為什麼系統不會出錯,理解為什麼要這麼做。
2、程式設計是給未來的人講故事。你無法知道將來這個人是誰,他都懂什麼,他經歷過什麼,這個系統將來已經是什麼樣子了。我們需要在這種無知,缺乏資訊的情況下做決定,從千萬種把這件事做出來的方法裡,選出你覺得最能把這個故事給講好的那種方式,把故事寫下來。程式設計是一種溝通,溝通是一種藝術,用程式跨越時空之溝通則是一門屬於程式設計師的特有的藝術(就好比數學家用數學公式來溝通)。
3、壞的決定會導致壞的決定,甚至導致人們去扭曲一個好的決定去迎合壞的決定。垃圾會製造垃圾,一個放在系統裡不經清理的額外複雜度,會導致更多額外複雜度的生成。
4、每個人甚至同一個人的不同時刻都有自己不同的製造額外複雜度的缺陷,回頭看你昨天寫的程式碼,可能會覺得都是垃圾。
-
12 # 蟲洞科技
普通人:
我今天要買一斤蘋果。
程式設計師:
我今天要買一斤蘋果。
因為我只喜歡紅富士蘋果,所以我只買紅富士蘋果。
我能接受的最高價格是10元/斤。
正常情況下一斤蘋果用一個袋子能裝下,但是為防萬一,我會帶兩個袋子。
我知道附近的3家水果店,所以我會依次訪問這3家水果店。
根據上述條件,我設計出以下的買蘋果的流程:
這個流程怎麼樣?我來設計一些測試樣例,測試一下這個流程。
測試發現一個問題:如果水果店0和水果店1都有紅富士蘋果並且價格都低於10元/斤,而且水果店1的價格比水果店0更低,那麼我希望買水果店1的蘋果,但我設計的流程會讓我買水果店0的蘋果。
為了解決這個問題,我應該先詢問所有水果店的價格,然後去價格最低的那一家買蘋果。
經過修改,我重新設計出以下的買蘋果的流程:
現在這個流程是不是完美了呢?不是,我還能發現很多問題。如果3家水果店都有紅富士蘋果但都不到一斤,但是三家店加起來能達到一斤,那麼我不應該結束流程回家,而是應該把三家店的紅富士蘋果都買下來。如果我向水果店詢問價格的時候這家店還有紅富士蘋果,但我詢問完所有水果店的價格後這家店的紅富士蘋果賣完了,那麼我的流程會讓我試圖處理不存在的紅富士蘋果。我走路的過程中可能會遇到突發事件,比如發現了新的水果店,比如袋子破掉了蘋果掉一地,對於這些情況我的流程都無法進行處理。
啊問題太多了我懶得再改流程了。我還是去X寶買吧。那麼接下來我要設計一個在X寶買紅富士蘋果的流程……
-
13 # 小小程式設計師玲兒
我現在正在尚學堂學習Java,以我的學習經驗看,程式設計最難的地方在於想法,一個有想法的人才能做出不一樣的效果,要形成自己的思維邏輯;如果只是簡單的碼農只要跟著老師敲程式碼,基本正常人都可以學會,一遍不行兩遍,甚至更多遍,如果沒有想法那麼發展就非常受限了
-
14 # 機械科技fan
程式設計,按你所處的階段來講吧,不同階段難在哪裡?
第一階段,如果你還沒學程式設計,剛開始,那最難的應該是你學習語言,
那些看似英文,又不是英文,
看似大括號,小括號又不是你學的數學。
看似一行還有好多空間卻非得跳行。
懵逼了吧,各種語法規則,你從來都沒見過的程式碼,函式,對新人來說難不難。估計都是感覺天花亂墜,它認識你,你不認識他。這個階段沒有什麼好的方法,拿出你小學學習的心態,那就是,背,背,背!直到你看到啥都想int--if --includ
第二階段,當你熟悉了這些基本程式碼,語法規則,就是你學會邏輯的問題了
按照程式設計的邏輯,也是電腦傻傻的邏輯
#include<stdio.h>
typedef struct student
{
int num;
char name[20];
int Score1;
int Score2;
int Score3;
float average;
}student;
student st[3];
void CreateStudent(student st[])
{
int i,j;
float Average;
for(i=0;i<3;i++)
{
printf("請輸入學生%d的資料:",i+1);
printf("學號為:");
scanf("%d",&st[i].num);
printf("姓名是:");
scanf("%s",&st[i].name);
printf("第1門成績是:");
scanf("%d",&st[i].Score1);
printf("第2門成績是:");
scanf("%d",&st[i].Score2);
printf("第3門成績是:");
scanf("%d",&st[i].Score3);
printf("");
st[i].average = (st[i].Score1+st[i].Score2+st[i].Score3)/3;
}
}
void SortStudent(student st[],int nLength)
{
int i, j, max;
student temp;
for(i=0; i<nLength;i++)
{
max = i;
for(j=i+1; j<nLength; j++)
{
if(st[j].average > st[max].average)
max = j;
}
if(max != i)
{
temp = st[i];
st[i] = st[max];
st[max] = temp;
}
}
}
int main()
{
int j;
CreateStudent(st);
SortStudent(st,3);
printf("學號\t姓名\t語文\t數學\t英語\t平均分");
for(j=0;j<3;j++)
{
printf("%d",st[j].num);
printf("\t%s",st[j].name);
printf("\t%d",st[j].Score1);
printf("\t%d",st[j].Score2);
printf("\t%d",st[j].Score3);
printf("\t%2f",st[j].average);
printf("=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*");
}
}
第三階段,對於專業的程式設計員來說,設計程式的可擴充套件性,那應該是一個非常龐大的體系,一定是在未來幾年可以增加很多的功能,而且穩定,此處難度係數數量級增加
-
15 # 枯枯王
這個問題以我個人觀點來說分為兩個部分
一、初學者而言的,本來沒有接觸過,不論是工作需求、學習或者興趣等原因使得自己接觸程式設計,從而有一個學習過渡期,這個階段會感覺程式設計難,那麼建議靜下心來思考自己是否能在很厭惡的情感下依然可以程式設計(類似於不喜歡工作但是為了生活不得不做)。如果這個都不能打消你進入程式設計行列的念頭,那麼後期就簡單了,網上很多這方面的學習資源。
二、熟練者而言的,我本人比較討厭用碼農來形容程式設計師(碼農多少有些機械式的意思,而我覺得程式設計應該是多少含有些創造性的意味),當然這是題外話。這裡所說的難就想相對有個好聽些的名字叫創意,就是要在規則內去創造出改變生活的東西。
-
16 # 網由之路
(1)思維模式的切換。你需要有技術思維。能夠成功建模。這可能是大多數人,沒有信心,或者不適合從事程式設計的原因之一。說到底,程式設計師就是在兩種思維模型之間轉換的人。一種是人類看到的感受到的外行人視角,一種是技術思維,即如何透過程式設計,來完成前者。
(2)語言上的難度,例如 C++ 語言本身。它包含了讀寫兩方面的基本要求,達到你可以面對越來越複雜,越來越難於理解的程式碼,而不會感到困難和退縮的程度。很多人看到複雜的程式碼時,自信心就已經被擊潰了。C++ 和 彙編,大概是目前難度最大的兩門語言。彙編難度主要是程式碼可讀性是最低的,程式碼量和跳轉數量是最大的。
(3)超強的對耐心的挑戰,程式設計中遇到的困難的挫敗感極強,大部分人會對此感到崩潰。程式設計需要付出和投入極大精力和耐心,對人的能力是很大挑戰,例如,無法完成任務,無法解決某個問題,無法找到問題所在。程式設計領域,有很多水平體現在穩定可靠性上,當你寫出一個東西,實驗是成功,然而在部署後實際執行時,總是出現隔三差五出現很難解釋的問題的時候,說明你的水平有限。你的水平,和你的成果的可維護性,穩定性,可靠性是成正比的,而很多人可能會比較忽視這種“不夠直觀和直接,難以量化”的能力。它們需要程式設計師的責任心和經驗的積累,比如說,多執行緒程式設計方面的經驗等。
(4)當你掌握了基本程式設計技術和技巧,可以開始工作時,還有一項潛在的能力在考研你,你的大腦必須能夠完成在比較複雜場景下的排程,和場面掌控能力。比如說,你能夠一個人編寫需要配合的多個應用程式,它們可能來自服務端和客戶端,可能來自不同的功能程式。透過多個應用程式相互協調協作,透過溝通來有條不紊的完成一項任務。你的大腦必須足夠應付這樣的局面。在複雜的環境中,掌控大局,熟練的掌控整體和區域性,有條不紊。
(5)需要鋪墊大量基礎知識,才能開始進入實踐。比如說,你要編寫“俄羅斯方塊”這樣一個簡單的遊戲,你需要有資料結構,和簡單演算法的基礎知識的積累,而不僅僅是學會了程式語言就可以的。 -
17 # 無為先生
作為基層程式猿多年,總結一下程式設計的難點:
1、初學者。程式設計是用計算機語言和計算機交流,你輸入什麼,你期望計算機理解之後,輸出你需要的結果。所以這個過程可以概括為“輸入–計算–輸出”。學習一門計算機語言,說難不難,說易也不太容易,為什麼呢?如果你是程式設計的初學者,你要上手一門語言,是非常困難的(天才除外);但如果你是精通一兩門語言,再去學其他語言,可以說一個星期就能熟悉。所以,對大部分初學者來說,程式語言是難點。
2、程式設計思想。這個是我第一家公司的部門老大常給我灌輸的重中之重:一定要有程式設計思想。跳過初學者這一關,假設你可以對任何語言順手拈來、即插即用,那麼,你水平就一定很高了嗎?其實不然,這隻能說明你學習能力上一層樓了,但並不說明你就多麼厲害。比如,你熟悉設計模式嗎?設計系統的時候有沒考慮擴充套件性?是否考慮到效能問題……如果整天只做crud,不去關注以上問題的話,瓶頸是很難突破的。那麼程式設計思想何來?就要平時多閱讀這類的書籍和文章,比如設計模式,比如高併發系統設計相關知識等。除此以外,還要多思考,為什麼這樣設計,所謂學而不思則罔,思而不學則殆!
3、溝通能力。好了,即使你掌握多種語言,又可以把系統設計要得很溜了,但是如果你是個不會說話的啞巴,你就無法表達出自己的思想,無法向老闆展現你的才能,那麼你的職業生涯會受到很多限制。我自認為本人的溝通能力是弱項,自己也在不斷努力改善這點。現在每次參加討論的時候都會積極發言,表達自己的觀點,除此之外還報了一些口才課,來提升自己的表達能力。
-
18 # 方法研究
程式設計其實並不難,很多人學個培訓班都可以當碼農。
程式設計最好的辦法是先不想多了,跟著老師學,多敲示例程式碼,熟練了就不感覺困難了。
當然和所有其它知識一樣,入門易,精通都難,需要各方面知識的積累,特別是數學。
-
19 # NewClouds
俗話說的好“世上無難事只怕有心人”,難的事情有很多,但是程式設計的樂趣同樣有很多,具體可以從以下幾個方面參考下。
創造欲
這是創造事物的純粹快樂,這就像小孩子玩泥巴時的快樂,小孩喜歡玩泥巴,成年人喜歡建立事物,特別是還喜歡自己設計。
這種快樂是上帝創造世界的折射,一種呈現在每一片獨特的、嶄新的樹葉和雪花上的喜悅。
幫助欲
滿足欲
這是一種來至於整個過程體現出來的一股強大魅力——如同將零件完美地組合在一起,看到他們以精妙的方式執行著,並收到了預期的效果。
受虐欲
這種快樂是持續學習的快樂,它來自於這項工作的非重複特性。人們所面臨的問題總是有著這樣那樣的不同,因而解決問題的人總可以從中學習新的事物,有時是實踐上的,有時是理論上的,或者兼而有之。
控制慾
這種快樂來自於易於駕奴的介質上工作。程式設計師,就如同詩人一樣,幾乎總是僅僅在單純的思考中工作。程式設計師憑空地運用自己的想象,來建立自己的”城堡”。
在人類活動歷史上,很少有創造介質如此靈活,如此易於精煉和重建,如此容易實現概念上的設想。
然而程式畢竟不是詩歌,程式時實實在在的東西;它可以移動和執行,能夠獨立產生可見的輸出;它能列印結果,繪製圖形,發出聲音。神話和傳說中的魔術在我們的時代已經變成現實。在鍵盤上鍵入正確的咒語,螢幕就會活動、變幻和顯示出前所未有的也不可能存在的事物。
程式設計的快樂在於它不僅滿足了我們內心深處進行創造的慾望,而且還喚醒了每個人內心的情感。
如果真的下定決心走進程式設計的話,一定要先培養興趣。
-
20 # 控制研究控
程式設計是有點難度的,就像我們從小都開始學習語文一樣,但是論述同樣的事情,有的人能論述的好,而有的人卻依然論述的不好或者不完整。由此可見,即使是從小都在不斷學習文字,語法,敘事方法等,依然不能把文章寫的很好,而程式設計也是同樣的道理!
現在任何一種程式語言,都包含很多的關鍵字,函式,語法等,這就使得程式設計和寫文章很像了!
寫文章需要詞彙量,需要文章的結構明晰,需要論點鮮明,論據有說服力;而程式設計也是一樣的,需要對很多函式指令的用法瞭如指掌,也需要整體的架構構建的合理,層次清晰,還需要每一個事件屬性動作都被正確設定和觸發。---可以說,很多事情的本質是一樣的,我們學習日常的語言,和學習計算機軟體的程式語言,有一定的通用性存在!而難的原因,還是因為量太大,容易忘記和容易考慮不全面!
函式指令等用法容易忘記,考慮不全面就造成一些bug,可能一般的除錯也不能發現,只有經過很多的驗證測試才能發現一些bug,而這些bug的產生其實還是因為條件分析考慮的不夠全面!
對於我個人來說,程式設計難的一個原因可能是因為現在主流的程式設計軟體,還是以英文環境為基礎的,有時相關的幫助解釋翻譯不到位,也會造成一些使用上的困擾!---當然,可能計算機技術的相關發展,很多概念和解決方式也都是由外華人主導實現的,這就造成有些源頭性的概念理解的不夠清楚,或者不能深入理解當時的技術工況!
回覆列表
演算法,思想。你若是隻會寫一些程式,做做伺服器與客戶端的互動,那就當我沒說。因為你根本無法理解一條程式碼最佳化百萬級的承載量的偉大。