Ⅰ 電腦怎麼編程
隨著信息技術的發展,很多人都想要學習電腦編程。其實學習編程最重要的是入門,如果你入門的時候有一個好的方法和思路,打下比較扎實的基礎,對今後的編程工作是很有益處的。即使再學習新的編程語言,也會輕松的多。下面,北大青鳥長安街總校資深編程導師就為大家詳細講解如何學習電腦編程。
首先,我們可以先學習一下pascal,這個語言比較嚴謹,適合初學者。當然了,學習什麼語言也要看你具體准備從事什麼行業。例如你要進行嵌入式開發,C就是很好的選擇,如果是Windows開發,那麼VC就不錯。還有資料庫方面的開發、網路開發等等。不同的語言適合不同的方面。要看自己的選擇的。
還有很多人說自己的基礎很差,甚至中學畢業什麼的。其實這個並不重要,比較說英語,在計算機語言里所用到的單詞量很少,而且都是常用詞,經常使用就記住了。至於數學什麼的,其實數學只是培養你一個邏輯思維能力,在初學編程的時候影響不是很大。況且,作為一個基礎編程人員來說,上面還有系統分析師、項目經理,他們會把需求分析、概要設計和詳細設計做好的,你只要按照文檔寫代碼就OK了。不過,要上更上一步的話,其他基礎知識就非常重要了,畢竟你不能寫一輩子代碼。
接下來,很多人就會考慮自己究竟選擇什麼語言來學習。是C#、PHP還是JAVA?哪個語言更有發展?在學習好C語言以後,建議大家好好學習一下數據結構和軟體工程。特別是軟體工程,它能夠使你按照科學的工程方法進行軟體開發,對今後的發展很有好處。
其實,北大青鳥長安街總校老師認為,無論你學習什麼語言,只要堅持和努力,都會把這個語言學精,而只要學精,就一定會有發展。語言不是最重要的,應該把思想放在首位。要領悟思想,那首先學習語言是必然的,語言是思想的一種體現形式,就像一個人,如果不經常常使用語言,他又如何去表達自己的思想呢?編程也一樣,要領悟其精髓,必須先不斷地看,不斷地使用,才能在這種過程中慢慢有所體驗,當然有的人可能快些,有的人可能慢些,但是不管快慢,能夠達到就是進步。
以上只是北大青鳥長安街總校的老師對軟體開發學習方法的一些分析,當然,學好軟體編程,最重要的是通過真正的項目來鍛煉自己的操作能力。隨著項目經驗的增加,你才會感覺自己對這門語言的掌控能力真正提高了。
如果你想更深層的學習軟體開發,歡迎你來杭州北大青鳥校區學習軟體培訓課程。我們的老師會幫助你一步步的學好編程,成為令人羨慕的軟體工程師!
如何學習電腦編程?你了解清楚嗎?北大青鳥長安街總校「學歷+技能」雙贏教學模式,幫你找到你的優勢,給你成功的信心。在這里,不需要你的學歷起點有多高,不需要你的語數外成績多優秀,面對學員我們一視同仁。我們相信,你還有需要挖掘的潛力,你還有沒有體現得優點。未來不需要泄氣,選擇北大青鳥長安街總校,成就你的好未來
1.
工具:電腦、isualC+++6、0。
2.
具體步驟:1、打開軟體,先新建一個工程,在新建一個C++源文件。2、在建好文件之後,在源文件處,輸入需要實現的代碼。3、然後編譯這個程序,點擊軟體右上角有紅色邊框的按鈕。4、最後運行這個程序,點擊軟體的右上角的紅色框里的按鈕,查看運行結果
Ⅱ 電腦怎麼打開編程
編輯程序讓電腦執行的過程就叫編程。
編程語言很多,具有代表性的計算機語言有Java,BASICC,C++,VB,VF,SQL,網頁編程JSP,ASP,PHP。Java是目前應用最廣泛的編程語言之一,大學中則常常以C語言作為編程的入門語言。
很多軟體都可以編程,主要有eclipse,MicrosoftVisualStudio,MicrosoftVisualBasic,MicrosoftSQLServer等等。
Ⅲ 怎樣在電腦里學編程
1、如果你能夠熟練的使用Windows的話,你就已經可以開始你的程序生涯了,打怪升級走起來!(PHP網站開發在線培訓課程)
2、首先從C語言開始。有的朋友可能認為C語言太難了,應該從VB開始。雖然,對於一個初學者來說,用一些控制項堆砌成一個小軟體會有一些成就感,但是,基礎才是最重要的!C語言對於數據類型的描敘,遠比VB更全面、明白,而這些正是編程中的根本!
3、學C語言,從數據類型,基本表達式,再到條件語句,循環語句,然後學習函數,再加上一些簡單的數組知識,足矣。到現在為止,你只要理解結構化程序設計的思想也就夠了!
4、有了以上的基礎,就要開始學匯編了。匯編剛開始學的時候很難,那些各種各樣的寄存器,分段的內存地址,很難理解,可是這些知識理解了以後,後面的內容就簡單了,學習8086的那些指令,再加上一些偽操作,還有DOS和BIOS中斷的調用,就可以看懂書上的匯編程序了。到此,你會對計算機有更深一層的理解!
5、有了匯編的基礎,再來學習C語言中的精華部分——指針,可謂是如魚得水了。現在你要對C語言全全面面的學一遍了。
6、學完以上的內容,有必要研究一下數據結構了,線性表,堆棧,隊列,樹,圖,二叉樹,等等。
7、請時刻牢記:浮躁是學習編程的大忌。
8、當然,你還應該學習一些資料庫的知識,以及一些常用的演算法。
9、如果以上的知識你都達到精通的程度後,就可以開始C++的課程了,找本C++上,然後找一本VC上手的書,再花一個星期的時間學習VC的界面和用法,就可以做一些簡單的應用了!
10、要想學好VC,沒有扎實的C++知識是不行的,以下書籍是VC程序員必須翻的爛熟的:C++Primer;Effective C++;Thinking in C++;More Effective C++;深入淺出MFC。【推薦閱讀:2018年5本經典的編程入門書籍推薦】
11、深刻理解C++面向對象的思想。
12、編程的時候,出錯是難免的,所以,MSDN一定要熟練使用;好的代碼風格會使調試的時候,更加簡單的查錯,所以,一定要養成良好的編程風格。
Ⅳ 計算機怎麼編程
1、如果只是單純輔助的編寫一些小軟體來輔助自己的主要工作,那麼學習編程就相對來說學得簡單一些。先了解目前的開發語言和環境,結合自己需要做什麼小軟體,然後找一門開發語言來學習就可以達到目的。但如果比較復雜的軟體,因為基礎和學習的深度不夠,要開發這個軟體就有些難度了。如果輔助性質的小軟體,推薦使用VB.net,特別是桌面軟體。這個開發環境比較容易入手,控制項拖動,使用的語法比較容易理解,很容易上手。或C#.net,對於新手而且相對VB.net來說,個人感覺沒有這么容易好理解。花一個月時間可能就能做一個小軟體了。當然要參與到大型項目中,完全新手那就不是一個月的時間能解決的了。
2、如果是要從事軟體開發的工作,那麼學習時間就比較長了。對於軟體開發者來說,不只是開發語言,還有計算機、網路的相關基礎知識才行。
①:先說開發語言。確定好自己今後要從事的主要的開發語言,然後開始學習。比如:選擇.net系列、或者Java、或者python等等。可以在網路上搜索一些成套的基礎教程(一定從成套的教程,因為是由淺入深,學起來系統性而且容易上手),開始學習。配置好環境,一步一步按照教程進行實踐。
②:基礎知識。作為軟體開發者來說,單純只具有開發語言的知識是很難有大的發展的。因為對於計算機、軟體、系統、資料庫、網路等等不深入了解的話,一旦涉及到深入的開發,你就沒轍了。比如網路協議、介面、API等等相關知識。
那麼基礎知識要學習哪些呢?這里建議最基本的基礎知識至少還是要學習的。比如:計算機組成與原理、操作系統、計算機網路、資料庫原理、數據結構、編譯原理、軟體工程、軟體測試等等。不一定要專門花時間到外培訓,但至少自己花一些時間自學也是好的。萬丈高樓從地起,沒有基礎就不可能高。
從事軟體開發行業是一個不斷持續學習的過程,從事到老還要學到老。行業更新的知識太快,如果不學就跟不上。基礎知識不牢靠,今後工作學習中不能理解的就更多,會形成障礙的。
Ⅳ 用電腦怎麼編程
給你pascal編程吧..第一章 PASCAL程序設計介紹1.1 PASCAL介紹1.1.1 PASCAL語言介紹PASCAL語言是由瑞士的沃斯(N.Wirth)教授於1971年提出來的。它的命名是為了紀念法國數學家Pascal。它是世界上第一個結構化的高級程序設計語言。結構化程序設計主要由三種基本結構(順序結構、選擇結構、循環結構)組成。後來有人把函數和過程作為第四種基本結構。這四種結構對外看都有一個入口,一個出口,結構清晰,避免了由GOTO語句所引起的混亂。另外在程序設計方法方面,主張採用自頂向下,逐步求精的方法。即將一個大的復雜問題,劃分成若干少的易解決的問題。每個小問題,又可劃分成一些更小的更易解決的問題。這樣,每個小問題解決了,整個大問題也就解決了。這種方法也為多個人合作編程提供方便。由於PASCAL語言具有良好的結構程序設計特性,適合於教學,特別是適合於培養學生掌握自頂向下逐步求精的結構化程序設計思想和方法,並養成良好的程序設計風格和習慣,因此,國內外許多大學都將PASCAL作為一門程序設計教學語言。1.1.2 PASCAL程序設計的編輯、保存、調試例1-1:輸入半徑求園的周長和面積?program circle; const Pi=3.14; var r,L,s:real;begin write('r='); readln(r); L:=2*pi*r; s:=pi*r*r; writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);end .1.2 PASCAL基本組成1.2.1 PASCAL中使用的常量與變數程序中數據分為兩類:一類是在程序執行過程中其值保持不變的量,稱為常量;另一類是在程序執行過程中,其值可以改變的,這類數據稱為變數。1.常量說明在程序中,如果一個常數反復多次出現在程序中,用戶可以通過說明語句來定義一個標識符來代表這個常量。如: const pi=3.14; country='China'; success=true;2.變數說明PASCAL程序中數值可以改變的量稱為變數,由於變數可以取不同的值,因此變數必須通過標識符來代表。程序中出現的每個變數都必須在程序的變數說明部分進行類型說明.變數說明語法圖如下:如: var x,y,z:real; i,j,k:integer; ch:char; t,f:boolean; name:string;1.2.2 Turbo Pascal中標准數據類型介紹數據的類型確定了該類數據的表示形式和取值范圍,而且確定了其所能參加的各種運算。1.整型名稱類型標識符數據表示範圍佔用存儲空間整型integer-32768 ~ +327671byte短整型shortint-128 ~ +1272byte長整型longint-2147483648 ~ +21474836474byte位元組型byte0 ~ 2551byte字型word0 ~ 655352byte2.實型:實型有4種類型,如下表示實型名稱類型標識符數據表示範圍有效位佔用存儲空間實型real-2.9*10^39~+1.7*10^3811~126byte單精度型single-1.5*10^45~+3.4*10^387~84byte雙精度型double-5.0*10^-324~+1.7*10^30815~168byte擴展型extended-1.9*10^-4932~+1.1*10^493219~2010byte裝配十進制型comp-2^63+1 ~ +2^63 –1 19~208byte例:var x:real;當x的數學值為2時,在計算機中的值為:2.0000000000E+00當x的數學值為-25時,在計算機中的值為:-2.5000000000E+01當x的數學值為0.05時,在計算機中的值為:5.0000000000E-023. 字元型和字元串型名稱類型標識符說明字元型char單個字元用一對單引號括起的數據。字元串型string一個或一串字元用一對單引號括起來的數據。例: var ox:char; note:string; name:string[5];4.布爾型名稱類型標識符說明布爾型boolean值只有true和false,分別表示真和假或對與錯。1.2.3 運算符、標准函數及標准過程1.運算符2.標准函數和過程PASCAL中提供了很多標准函數和過程給用戶直接使用,方便了我們編程,下面介紹一些常用的標准函數和標准過程,其它函數和過程可以在Trurbo Pascal的幫助文件中查閱。(1) 算術標准函數函數名稱X類型結果類型說明abs(x)絕對值整型,實型整型,實型Abs(-25)=25sqr(x)平方值整型,實型整型,實型Sqr(5)=25sqrt(x)平方根整型,實型實型sqrt(25)=5.0000000000E+00trunc(x)取整整型,實型整型截取整數部分。trunc(-2.3)=-2round(x)取整整型,實型整型四捨五入取整。trunc(-2.6)=-3trunc(-2.3)=-2int(x)取整整型,實型實型截取整數部分int(2.5)=2.0000000000E+00int(-2.5)=-2.000000000E+00frac(x)取小數整型,實型實型frac(2.5)=5.0000000000E-01exp(x)指數整型,實型實型例:求e3 即,e為2.718exp(3)=2.0085536923E+01ln(x)對數整型,實型實型例:求log10(2)ln(2)=6.9314718056E-01random隨機數無實型隨機產生(0,1)間的隨機數random(x)隨機數整型整型隨機產生[0,x-1]間的隨機數其它函數還有正弦函數sin(x),餘弦函數cos(x),反正切函數arctan(x),自然對數函等等,請需要時從Turbo Pascal中的幫助文件查閱。註:在PASCAL中沒有定義冪運算函數xn 。但可採用下面式子計算:exp(n*ln(x)) 。(2) 算術標准過程[1] dec(x) 相當於 x:=x-1[2] dec(x,n) 相當於 x:=x-n[3] inc(x) 相當於 x:=x+1[4] inc(x,n) 相當於 x:=x+n(3) 字元處理標准函數為了說明方便,設s,str,str1,str2為字元串型(string),ch為字元型(char)變數。[1] concat(str1,str2)作用:把兩字元串連接成新字元中串。例:concat('abc','def') 結果:'abcdef'[2] (str,a,b)作用:從字元串str的左邊第a(整數)位開始截取b(整數)位字元串。例:('abcdef',2,4) 結果:'bcde'[3] length(str)作用:求字元串str的長度。例: length('abcdef') 結果:6 ;length('') 結果:0 ;length(' ') 結果:1[4] chr(x)作用:求x(x為整數1--255)表示的ASCII代碼對應的字元例:chr(65) 結果:'A' ;chr(66) 結果:'B'[5] ord(x)作用:求x的序號,其中x必須為有序類型。有序類型如:字元型、布爾型、整型、枚舉型、子界型等。例:ord('A') 即'A'的ASCII碼值為:65 ;ord('B') 即'B'的ASCII碼值為:66 ord(true) 結果:1; ord(false)結果:0 ord(13) 結果:13;ord(0)結果:0[6] pos(str1,str2)作用:求字元串str1在字元串str2中的開始位置,結果為整數。例:pos('abc','efabcdg') 結果:3 ;pos('abc','efabfgh') 結果:0[7] upcase(ch)作用:把ch對應的字元轉為大寫字母。例:upcase('a') 結果:'A' (4) 字元串處理標准過程[1] delete(str,a,b)作用:從字元串str的左邊第a(整數)個字元開始向右連續刪除b(整數)位字元,並把剩餘字元串賦給str例:str:='abcdefgh';delete(str,4,3); 最後str結果為:'abcgh' str:='abcdef';delete(str,8,3); 最後str結果為:'abcdef'[2] insert(str1,str,a)作用:把字元串str1插入字元串str中由第a(整數)位字元之前,並把新字元串賦給字元串變數str。例:str:='efghy';insert('abc',str,3);最後str結果為:'efabcghy' str:='efghy';insert('abc',str,8);最後str結果為:'efghyabc'[3] str(x,s)作用:將x(x為整數或實數)轉化為數字字元串,結果存入S。例:str(12.4,s) s的結果為:'1.2400000000E+01' str(124,s) s的結果為:'124'[4] val(str,a,code)作用:將數字字元串轉換成數字,並將該數字存入實型或整型變數a中,code為返回的錯誤代碼,code=0 表示轉換成功,無錯誤。 例:val('12',a,code) 若a為實型,a的結果為:1.2000000000E+01;若a為整型,a的結果為:12(5) 布爾型標准函數[1] odd(x)作用:判斷自變數x的奇偶特性,其中x為整型。奇數為true,偶數為false。例:odd(13) 結果:true ;odd(10)結果:false 。[2] eof(x)作用:判斷文件x是否處於結束狀態。其中x為文件型變數。文件結束為true,否則為false 。[3] eoln(x)作用:判斷文件x是否處於行結束狀態。其中x為文件型變數。行結束為true,否則為false 。(6) 順序類型函數[1] pred(x)作用:求x的前一個量值,其中x為字元型、布爾型、整型、枚舉型、子界型等有序類型。例:pred(6)=5 ;pred('b')='a' ;pred(true)=false ; pred(false)=true[2] succ(x)作用:作用:求x的後一個量值,其中x為字元型、布爾型、整型、枚舉型、子界型等有序類型。 例:succ(5)=6 ;pred('a')='b' ;pred(true)=false; pred(false)=true(7) 標准單元中常用標准過程Turbo Pascal中系統提供了八個標准單元,分別是:system(系統單元)、printer(列印單元)、dos(dos單元)、crt(顯示單元)、overlay(覆蓋單元)、graph(圖形單元)、turbo3(與3.0版兼容單元)、graph3(3.0海龜圖形單元)。這些單元中分別定義了大量的函數和過程供用戶使用。但注意在使用標准單元的函數和過程前,除system單元可省略說明外,其它要在程序開頭說明。說明格式如下:use 標准單元; 或 use 標准單元1,...,標准單元n;另外,前面介紹過的標准函數和過程都在system單元中。下面補充一些常用標准函數和過程。[1] clrscr 過程 在crt單元 格式:clrscr 作用:清文本屏幕,並將游標移到屏幕左上角。[2] delay 過程 在crt單元 格式:delay(ms) 作用:延遲ms毫秒數,其中ms為word型。[2] gotoxy 過程 在crt單元 格式:gotoxy(x,y) 作用:稱游標到y行x列上,其中x,y為byte型。[3] sound 過程 在crt單元 格式:sound(hz) 作用:按hz(word型)指定的頻率發音,調用該過程後會一直響,直到調用nosound過程將其關閉。[4] nosound 過程 在crt單元 格式:nosound 作用:關閉揚聲器。[5] readkey 函數 在crt單元 格式:readkey 作用:從鍵盤讀入一個字元,函數類型結果為char。[6] exit 過程 在system單元 格式:exit 作用:退出當前過程或模塊。[7] halt 過程 在system單元 格式:halt 作用:停止程序執行。[8] getdate 過程 在dos單元 格式:getdate(y,m,d,dw) 作用:返回當前日期(年,月,日,星期),其中y,m,d,dw為word型。1980<=y<=2099,1<=m<=12,1<=d<=31,0<=dw<=6(星期日為0)。[9] gettime 過程 在dos單元 格式:gettime(h,m,s,se) 作用:返回當前時間(時,分,秒,毫秒),其中h,m,s,se為word型。0<=h<=24,0<=m<=59,0<=s<=59,0<=se<=99秒。還有setdate(y,m,d,dw),settime(h,m,s,se),請讀者查閱Turbo Pascal的幫助文件。[10] read或readln過程 在system單元格式:read(f,v1,v2,...,vn)或readln(f,v1,v2,..vn) 其中f為文件型變數,標准輸入文件input(如鍵盤輸入)時可省,v1,v2,...,vn為變數名表。作用:從標准輸入文件(如鍵盤輸入)或磁碟文件中讀入數據到變數中,多個變數時,要用逗號分隔。 read與readln的區別是:readln會掉丟當前輸入行中多餘的數據。而read不會,多餘的數據可留待下一個read或readln使用。[11] write或writeln過程 在system單元 格式:write(f,v1,v2,...,vn)或writeln(f,v1,v2,...,vn) 其中f為文件型變數,標准輸出文件OUTPUT(如顯示器)可省,v1,v2,...,vn為表達式,且每個表達式的必須有唯一確定值,類型為標准類型。write與writeln區別是:writeln輸完所有數據項後,游標自動移動到下一行,即自動換行。1.2.4 一個較完全的PASCAL程序結構一個較完整和PASC程序結構如下:program 程序名(程序參數表)label 標號說明;const 常量說明;type 類型說明;var 變數說明;function 函數說明;procere 過程說明;begin 語句; ... 語句;end .本 章 練 習練習1:指出下面PASCAL表達式的錯誤,並改正。 (1) 7>2 AND (8<>6) (2) NOT 3>2 (3) 3+3/2+1 要求結果為4 (4) sqr 4 / 2 (5) sqrt(4-6)/2 (6) 1/(3-6/2) (7) 3.0 div 2 (8) a(b+c)/d練習2:補充完成程序,實現計算下面兩條數學表達式的運算結果,存檔文件用lx1_2.pas 。(1) (2)(5>2) and not (3<>1) program rzy1;begin writeln( ); writeln( );end .正確運行結果:練習3:補充完成程序,實現輸入長方形兩邊,求周長及面積。存檔文件用lx1_3.pasprogram rzy2;var a,b,L,s:real;begin write('a='); readln(a); write('b='); readln(b); L:=( )*2; s:= ; writeln('L=',L); writeln('S=',s);end .運行輸入數據 a= 4 ←┘ b= 5 ←┘正確運行結果:試把writeln('L=',L);改為writeln('L=',L:5:2);輸出結果有什麼不同?試輸入不同數據,結果如何?
Ⅵ 計算機編程如何入門
計算機編程最重要的是入門,如果入門的時候有一個好的學習方法及思路,有比較扎實的編程基礎,對今後的學習都是十分有幫助的,最重要的是學習計算機編程前,需要了解計算機語言有哪些,選擇一門語言進行系統的學習。目前,計算機語言分為JAVA、python、html5、C++等,建議你可以選擇JAVA這門語言,比較熱門,也是需求量、前景較光明的語言。
把一種計算機語言掌握後,想要學習別的語言也是比較簡單的,因為計算機語言都是互通的。還有很多人說自己的基礎很差,高中畢業什麼的。其實這個並不重要,比如說英語,在計算機語言里所用到的單詞量很少,而且都是常用詞,經常使用就記住了。
當然,如果要看原文資料或者幫助的話,專業詞彙比較多,不過在老師、同學的幫助下,也是沒什麼太大問題的。至於數學的學習,只是培養一個邏輯思維能力,在初學編程的時候影響不是很大。
學習計算機語言一般分為兩種方法,一種是自學,一種是報班學習,對於零基礎的學員建議報班學習,學習周期根據個人的實際情況而決定,一般在6個月到1年之間,如果基礎不扎實,只能多加練習。
關於計算機編程的學習可以到達內了解一下,達內目前已在北京、上海、廣州、深圳、大連、南京、武漢、杭州、西安、蘇州、成都、沈陽等70個大中城市成立了342家學習中心,擁有員工超過10000多人,累計培訓量已學員已達100萬人次。
達內集團憑借雄厚的技術研發實力、過硬的教學質量、成熟的就業服務團隊,為學員提供強大的職業競爭力,在用人企業中樹立了良好的口碑。。
Ⅶ 程序員如何在電腦上編程的
說到如何在電腦上編程。首先需要知道下面這個問題的答案:「程序到底是什麼?」計算機程序是指令集,它告訴計算機如何執行特殊的任務。VB~VC~VF~C~C#~C++~JAVA~.NET~這些都是編程 ASP~CGI~PHP~JSP這些是WEB編程。。 雖然都是編程,但編出來的程序可是不一樣的。 目標是什麼?開發?創業?還是去公司上班?還是業余愛好? 如果想業余編小程序,推薦VB~VC~容易上手。簡單。也蠻強大。 如果想學好了去企業上班,推薦C++~~~.net~~~JAVA之類的大型項目開發。 如果想做網站,就學ASP~CGI~PHP~JSP,這4個就JSP最最最難,先學ASP。現在是人工智慧時代,國家出台了很多政策鼓勵人工智慧發展,無人超市、無人駕駛、無人銀行、AI人臉識別層出不窮,我覺得以後人工智慧滲透的領域肯定也會越來越多,所以我推薦讓孩子學習Python語言,python語言適合做人工智慧的開發。簡單容易上手,學好了以後對學習、出國留學、就業什麼的也會有好處。首先,工程師根據你的需求給你一個合適的方案,這個方案包括硬體搭建、軟體架構。 然後,在你滿意的方案下為你選用設備 最後,程序員按照你的要求編寫軟體 各種設備有自己的命令解釋器,程序員寫出來的軟體是可以按照機器能解讀的編碼編寫的,這些不需要用戶知道,用戶只要知道怎麼使用,怎麼維護就可以了,如果知道的更多,那就可以成了開發者
Ⅷ 你怎麼在電腦上編程,而不用任何軟體
40267">
我從編程寫軟體學到的 7 件事,其實學習編程不難,寫軟體也不你那,就看我們如何看待了!
我正在一點一點的從一個工程師轉型為管理者。別弄錯了,雖然我在轉管理,但我仍然在每天寫代碼。不過我發現自己在會議和電話中會花越來越多的時間去分析討論,試著去組織團隊,並且為全局部署而不是具體戰術而煩惱。
當然這不是一件壞事。高層次的決策往往比單個的類和函數的細節更有影響。讓一個團隊更有效率,比僅僅讓自己更有生產力有更高的杠桿作用。但我想我已經從我多年來的編程中吸取到了一些經驗。我希望大部分經驗可以應用於管理方面。
1、沒有規定(rules),只有公案(koans)
譯註:公案(Koan)有五種重要的涵義: 作悟禪的工具; 作考驗的方法; 作權威的法范; 作印證的符信; 作究竟的指點。)
舉個例子:DRY,意思是「不要重復你自己」。作為軟體的基本規則這很好理解,因為很多話可以證明:「我做 X 是因為它沒有重復。」這說得通,不是嗎?如果你有兩個或者兩個以上部分的代碼在做相同的事情,說明你正在浪費。而且如果當你需要改變它們其中一個的時候,你可能也需要改變其他的,並且你很可能會忘記這么做。當它們不同步時,你會得到一個怪異的 bug。因此很顯然你不能重復你自己。
然而,在使用了幾年之後,人們開始懷疑它的普遍適用性。假如你的兩個方法中包含相同的代碼塊,所以你將其拿出來形成一個單獨的函數。通常那些方法會開始朝不同的方向發展…接著你發現自己要在函數中加入更多的參數,很可能為結果立了更多 flags……然後下一個接手的程序員會因為分離出來的函數以及它所帶的特定的參數和結果,而出現認知負載。你會意識到如果當初允許自己重復,並讓兩塊代碼自然的發展為不同的個體,你生成的代碼將會更簡單直觀。
這意味著 DRY 不好嗎?當然不是!通常在合適的環境下使用 DRY 是正確的…好吧,也許。我個人的經驗是:「重復一次是可以的,超過一次就不太好了…當然這取決於所處的環境。」因為所有事都取決於環境。DRY 的目的並不是為了 DRY。如果你迷信於此,小孩兒,那你還有太多要學。DRY 的目的為了讓你了解 DRY。那當然不是規定,僅僅是公案。
(讓我重申一遍:我在討論的是軟體。在我的經驗中,硬體規定的確更傾向於是我們所理解中的規定。這就是我為什麼要從電氣工程轉到軟體的原因)
細想我最喜歡的兩個計算機科學「定律」。第一:「計算機科學中沒有一個問題是不能通過添加另一層抽象來解決的!」這句話完全正確嗎?當然不。這在現象學上是正確的嗎?實際上,的確是。這是否意味著抽象是解決任何問題的正確途徑?不,不是。它是一個公案,可以啟發思想。
還有我歷來最喜歡的:「第一優化定律:不要這樣做。第二優化定律(對專家而言):不要又這樣做。」這顯然是一個公案,卻稱自己為法規。是時候讓你的代碼運行的更快嗎?不。是時候讓你的代碼運行的更快嗎?還不是。什麼意思?意思是要考慮到時間,復雜性,認知負載,具體結果,生活意義,人類存在的意義。並且三思而後行,小孩兒。但不要花太長時間,我們還有工作要做。
2、要想得到他人的信任,先信任他人
這不僅僅針對於管理者。雖然它對管理者尤其重要。信任是你真正擁有的唯一價值。如果你的公正、判斷、理解、誠實不被信任。接下來你組織的成員將把你視為禍害並繞著你走。然而,如果你是個有能力但不被信賴的開發者,你可能還有一些價值。雖然你在每個決定上做的努力都會被大大消減。
不過更重要的一點是:一個團隊的成員需要互相信任。當 Natascia 說:「我來解決那個問題單(ticket)」,你必須相信她會去做。當你說:「Peter 能在截止時間前完成的。」,你必須相信那會實現。當某人說,「我有一個瘋狂的點子」,他們必須信任他們會被尊重和認真對待,盡管那點子的確很瘋狂。
你是如何建立和得到信任的?答案很簡單:你去信任他人。你相信那個說他可以學會這個新庫並且在周一前會整合完的人。你相信那個說他需要提前離開,因為家裡有事而會錯過明天工作的人。你相信那些想在截止日期前一個月休假的人,因為他們覺得自己已經開始筋疲力盡了。你相信說想要解決難題的初級程序員。
但你不總是正確的。有些時候人在工作上存了壞心。你需要揭露這些人的真面目,讓他們盡早離開。有時候你要信任那些真心想成功的人,雖然他們會失敗。但違反常識的是,長遠來看這通常是個勝利。因為那些人會記住你的信任,他們會盡一切努力來報答你。
3、簡單比優雅重要的多
我也喜歡緊湊優雅的代碼。我喜歡靈活的框架,有如此多抽象層次隨時待命,無論拋出什麼改變的需求都能解決。我喜歡使用位向量、位位移、略微復雜的數據結構和不太流行且古怪的小語言特性,但在特定環境下十分實用。
然而你並不只是為了你自己寫代碼。即使它只是個「原型」。(我已經記不清我有多少「原型」在多次對層操作和潤色的過程中出現問題。)而且你不僅僅是為了解決當前的問題編寫它。你正在為了下一個接手的開發者可以使用它來解決下一個問題而編寫。把你寫到那五行代碼擴充為十行可以增強其可讀性,你知道嗎,也許擴展為十五行效果會更好。
你可以提前嘗試並用靈活且充滿抽象的框架解決它們。但是也許預言不是你的強項,也許你關於下一個問題的概念的想法完全是錯誤的。也許僅僅編寫足夠簡單的代碼才是最佳選擇。有一個命名約定和一個編碼風格,讓它讀起來像英語一樣。也許不是添加一個類,而是下一個開發者在試圖跟隨你的控制流程時必須保持另一個文件的開放。你應該用愚蠢的方式,不雅的方式,簡單的方式。
4、動力比大多數事都重要
我們都曾見過這種情況。一周里每個人都在檢查代碼,構建顯而易見的雛形,每天不斷增加特性,測試覆蓋率越來越高。疏忽也隨著生產的想法和解決方案而出現。不知怎麼的下一周所有事都變得緩慢起來。關於 A 的決定,會影響到 B、C和 D。當人們可以運行D、E 和 F 時,它們不是邏輯序列發展上的一部分。於是需要做更多的假設,認知負載加重,你不得不模擬出一堆東西來寫出非模仿代碼。一些人需要做這個決定。
或許不是決定會癱瘓,是你上周所做的一切都在錯誤的基礎上,是一個「地震多發區」的技術負債。你需要停止所有事返回並重構它。而且你必須馬上開始,因為等的時間越長,事情會變得越糟糕。沒人想看到這種事發生 。但他們寧願現在面對也比下個月知道的好。讓暴風雨來的更猛烈些吧。
也許上周每個人都拼勁全力,現在實在撐不住了。你知道該怎樣嗎?得讓他們休息一下,每個人,休息一整天。我保證,這會給你接下來的「長跑」節省時間。
I我們很難定義、衡量以及說明動力。但它在軟體開發中是真實存在的東西。而且它的缺失會成為造成首要影響,導致我們需要去解決很多根本問題。別忽略它,也別期望或假裝它會神奇地回來。察覺警報並迅速採取行動。
5、與和你互補而不是像你一樣的人一起工作
每當我看到人們根據「文化契合度」來找人的時候,我就會拚命翻白眼。你知道大多單一栽培會發生什麼嗎?他們遭遇了他們不知如何解決的病原體,然後嗝屁死翹翹了。
你不會希望你的所有開發者、設計者、 QA人員、產品人員、銷售人員和執行官是彼此的克隆人。你肯定不想。每個人都有自己的長處和短處、優點和缺點。你想要僱傭的是他們的長處,讓其他人的長處彌補他們的短處。
比如說我,寫代碼非常快,擅於溝通,讀寫文章都奇快。我在任何時候都能熟悉很多編程語言和框架。我理解東西透徹且迅速,有豐富的經驗。然而我還是一個在特定領域、框架和語言缺乏深刻專研、精通掌握的全才。我是一個真正從別人身上獲益的建築師,跟蹤所有需要,在骨骼構建好之後添加肉體和潤色。我還是個 UX 盲(等一下,你說那些還沒對齊?),這一直被當作同事之間的玩笑。
像我這樣的人非常難找到也是及其被需要的。但一個由我和九個像我一樣的克隆人組成的公司是從一開始就註定要失敗的。唔,我們會把很多事情做好,但只需要一個集中的盲點,一個災難性的空隙就足以毀滅公司。大多數人承認有些事情他們做不好,另一些人可能需要照應。這些人往往是尋找「文化契合度」的人,並試圖僱傭和他們一樣的人。真令人哭笑不得。
6、任何決定都比沒決定強
別猶豫,當你拿不準主意時,去做就好了。當然,這可能不適用在生產代碼的時候。但它可以應用於除此之外在軟體開發里的任何方面。我們在歷史上發展最快的行業里工作。我們生活在以指數形式發展的世界裡。時間不等人,別浪費它。
這與低級決策的高級討論一樣真實。在高水平的討論里,比如「我們應該實現特性 A 還會說 B?我們要用哪種方式實現呢,X 還是 Y?「,常常會產生這樣的對話,」讓我們先跳過這個…下周再對它進行討論…「,或者更陰險的,」讓我們先研究一下其他人做了什麼再來討論一次。「這樣的問題極少情況下會有正確答案。大多時候,像這么說才是正確的,」我會在今天之前決定嘗試哪一個,這樣我們就可以明天開始行動了。
甚至 A 選項基本上是錯誤選擇,開始進行 A 大概也比啥都不做強。這和直覺是相悖的,但它通常也是正確的。以實際上手的方式去理解 A 的本質是一個更好的辦法,這個道理始終是正確的。這樣的理解可能會引導你做出更好的決定。
對於低級決策,那就更應該如此了。「規范沒有說明我們應該如何處理錯誤條件 X,或者錯誤信息應該是什麼。」(規范似乎是為一個有抱負的烏托邦寫的,在這種烏托邦中,錯誤條件和獨角獸一樣罕見。)「我知道,我只是想插一句,回去問問他們在這種情況下想做什麼!」
這非常誘人。如果你這么做,沒人能指責你哪裡做錯了。但這么做是錯誤的。寧願繼續自己做決定,盡管有些魯莽,也不要什麼都不做等著問別人。讓它們在你做已經寫好的程序和你學到的教訓里迭代,雖然你知道這並不完美,也好過從頭開始錯誤認知。它們和項目將會變得更好。快速嘗試,快速改變方向。
7、保持謙虛,但要自信
你不需要所有的答案。甚至是我也不得不勉強承認我不會有全部的答案。可惡,我甚至連它們的大多數也沒有,不過我有自信,只要給我足夠的時間和精力,我能弄清楚大部分。並且你也可以。
我們無法都成為 Jeff Dean(谷歌大牛)、中本聰(比特幣創始人) 或是 Margaret Hamilton(登月計劃中的女程序員)。我們在一個充斥著真正的天才和自稱天才的地方工作。沒人知道所有的事情,每個人都敏銳地意識到他們所不知道的一切。幸運的是,大多數情況下,我們不是科學家。我們的工作不是去尋找新突破。我們的工作是實踐他人的發現,使東西運轉,希望服務於人們真正想要的東西。也許你永遠不會發明任何東西,像是布隆過濾器或默克爾樹。不過大多與你共事的人們也不會。而且這不是重點,重點是使用布隆過濾器和默克爾樹,亦或是在它們之上建個抽象層,來實際的完成它們。
所以假設你懂的會比在座的人都多是錯誤的,就算你覺得他們違背直覺的想法很瘋狂,他們的語言選擇很糟糕。假設人家比你懂的多也是錯誤的,即使真是那樣,也沒關系。世界上多的是聰明人因為一些不可思議的原因什麼實際東西也沒做出來。(開個廉價的玩笑╮(╯▽╰)╭:這就是為什麼我們有學術界的原因。)
如果你真的做出了一些東西,在面對那些令人眼花繚亂的理論知識,或是和你相似甚至比你做的更糟糕的人時大可不必謙虛。在一天結束之時,正是那些在戰壕中的開發者——構建、測試和開發了代碼的人,真正做了事情。話說那些發現自己遠離戰壕的人,那些沒有和你一起並肩作戰的逃兵,你有權利鄙視他們。並且向你的夥伴致敬,而不是上司。
原文標題:做好這7件事 讓你學編程寫軟體不在難
原文鏈接:http://www.epx365.cn/peixun/software/201840267.html
Ⅸ 怎樣用自己的電腦進行編程練習
1.首先,打開Microsoft Visual C++6.0這個軟體。(沒有的安裝一個,在網上有很多免費下載),點擊如圖圖標。