1、頭腦風(fēng)暴,想出好點(diǎn)子。 一個(gè)好的程序的目標(biāo)是讓人們的生活更方便。可以看一下現(xiàn)在已有的幫你完成工作的程序,是否有可以簡化或優(yōu)化的地方?一個(gè)成功的程序一定是能讓用戶感到非常實(shí)用的。檢查一下你每天用電腦完成的工作, 是否有一些任務(wù)是可以讓程序自動(dòng)幫你完成的?
把每個(gè)想法都寫下來。即使這么做會(huì)顯得有點(diǎn)傻。說不準(zhǔn)哪天這些想法就變成了偉大的創(chuàng)新。
2、分析其他程序。它們做了什么事?怎樣才能做的更好?它們是否錯(cuò)過了什么?回答這些問題可以幫你更好的提出自己的想法。
3、編寫設(shè)計(jì)文檔。設(shè)計(jì)文檔應(yīng)當(dāng)勾畫出產(chǎn)品的主要功能和你完成它的方式,而且它能使你在開發(fā)過程中保持專注并更有計(jì)劃。你可以查閱一些關(guān)于如何寫設(shè)計(jì)文檔的資料。此外設(shè)計(jì)文檔還能幫你找出最適合你的項(xiàng)目的編程語言。
4、從最簡單的部分做起。如果你是剛開始接觸計(jì)算機(jī)編程的話, 你應(yīng)該從最簡單的東西做起并不斷進(jìn)步。如果你用一段簡單的程序?qū)崿F(xiàn)一個(gè)具體的目標(biāo),你將會(huì)學(xué)到很多東西。
1、下載一個(gè)好用的文本編輯器。幾乎所有的程序都是在文本編輯器中寫好然后被編譯和運(yùn)行的。你可以使用像是記事本、TextEdit這樣的程序來寫代碼,但我更建議你下載一個(gè)支持語法高亮的編輯器,比如Notepad++, JEdit或Sublime Text。這樣的編輯器會(huì)讓你的代碼看起來一目了然。有些語言,比如說Visual Basic,自己的安裝包中就帶有編輯器和編譯器。
2、學(xué)習(xí)一門編程語言。 所有的程序都是通過編碼實(shí)現(xiàn)的。如果你想要開發(fā)自己的程序,那么你必須熟悉至少一種編程語言。哪種語言更適合你取決于你想要實(shí)現(xiàn)的程序的類型,然而最常用和重要的語言有以下幾種:C語言 - C語言是一門低級(jí)語言,這意味著它和計(jì)算機(jī)硬件的交互更為緊密。C語言已經(jīng)有很長的歷史了,但它仍然被廣泛使用。
C++ - C語言最大的弊端是它不是面向?qū)ο蟮模虼水a(chǎn)生了C++。 C++是現(xiàn)在世界上最流行的變成語言了。許多常用程序,比如Chrome,F(xiàn)irefox,Photoshop都是用C++開發(fā)的。在視頻游戲領(lǐng)域C++也非常流行。
Java - Java可以說是C++的進(jìn)化版, 同時(shí)它的可移植性極強(qiáng)。絕大部分計(jì)算機(jī),不論安裝了什么操作系統(tǒng),都可以運(yùn)行Java虛擬機(jī),因此Java程序幾乎可以在所有計(jì)算機(jī)上運(yùn)行。它在視頻游戲和商務(wù)軟件中被廣泛使用,因此被很多人視為必不可少的語言。
C# - C#是一門基于Windows平臺(tái)的語言,也是Windows程序開發(fā)中用到的主要語言之一。他和Java和C++的關(guān)系很緊密,如果你對(duì)Java已經(jīng)很熟悉了那么學(xué)習(xí)C#會(huì)很簡單。如果你要開發(fā)Windows或Windows Phone程序,你需要好好學(xué)習(xí)下這門語言。
Objective-C - 這是C語言家族中的又一成員, 它被專門設(shè)計(jì)用于蘋果系統(tǒng)的開發(fā)。如果你想要開發(fā)iPhone或iPad應(yīng)用,學(xué)習(xí)這門語言就對(duì)了。
3、下載編譯器或解釋器。 對(duì)于像C++和Java這樣的高級(jí)語言,你需要有一個(gè)編譯器來把你的代碼翻譯成計(jì)算機(jī)可以直接使用的格式。根據(jù)你使用的語言的不同,有許多不同的編譯器可供選擇。有一些語言是解釋性語言,它們不需要編譯器。作為替代,它們需要計(jì)算機(jī)上安裝一個(gè)解釋器, 然后這樣的程序就可以直接運(yùn)行了。Perl和Python都是解釋性語言的代表。
4、學(xué)習(xí)基本的編程概念。 無論你選擇了哪種語言,你都需要了解一些基本和通用的變成規(guī)范。弄清楚語言的語法規(guī)范能幫助你創(chuàng)建更為強(qiáng)大的程序。這些通用的概念包括:聲明變量 - 變量是用于存儲(chǔ)你程序中的數(shù)據(jù)的。這些數(shù)據(jù)可以被存儲(chǔ),修改,操作和再被讀取。
使用條件語句(諸如if, else, when等) - 這些語句是程序的基本功能之一,他們決定了程序的邏輯。條件語句是以"true"和"false"為中心的。
使用循環(huán)。 循環(huán)讓你可以一直重復(fù)一段過程直到收到結(jié)束指令為止。
使用轉(zhuǎn)義符 - 這些指令可以讓你創(chuàng)建新行、空白、引號(hào)等。
添加注釋 - 注釋對(duì)于幫你記住代碼的功能、幫其他程序員理解你的代碼以及暫時(shí)屏蔽代碼片段都很有用。
理解正則表達(dá)式。
5、看一些編程語言相關(guān)的書籍。無論你是編程新手還是大牛,總有適合你看的書。你可以在附近的實(shí)體書店或者網(wǎng)上書店找到這樣的書。手邊有一本書以便工作的時(shí)候翻一翻是非常有用的。除了實(shí)體書之外,別忘了網(wǎng)絡(luò)上還有數(shù)不清的指南和教程,那都是你的寶貴財(cái)富。你可以在51CTO, CSDN, 網(wǎng)易云課堂等網(wǎng)站上找到許多有用的指南。
6、參加一些課程。 雖說只要用心每個(gè)人都可以自學(xué)編程, 但如果能有老師和教室這種環(huán)境也是大有裨益的。一位計(jì)算機(jī)專家一對(duì)一的輔導(dǎo)將會(huì)大幅度加快你掌握編程基礎(chǔ)知識(shí)和概念的速度。這些課程還能幫你進(jìn)一步學(xué)習(xí)數(shù)學(xué)和邏輯等只是,這對(duì)于復(fù)雜的程序來講也是很有必要的。上課是要花錢的,所以你要確保你上的課能讓你學(xué)到想學(xué)的東西。
7、多提問題。 互聯(lián)網(wǎng)可以讓你很方便的和其他開發(fā)者去的聯(lián)系。 如果你在項(xiàng)目中遇到了棘手的問題,不妨到諸如StackOverflow這樣的網(wǎng)站上去尋求幫助。不過請(qǐng)確保你在提問之前已經(jīng)嘗試了一些解決方法,并且你的問題描述應(yīng)當(dāng)清晰明確。
1、先寫一段簡單的程序,包含最基本的功能即可。 這就是你的程序原型,它表明了你最終想要實(shí)現(xiàn)的程序的功能。原型應(yīng)當(dāng)快速迭代,直到你找到了有效的設(shè)計(jì)模型。比如說,如果你想要開發(fā)一個(gè)日歷程序,那么你的原型應(yīng)該是一個(gè)簡單的日歷(帶有正確的日期)并能向其添加事件。在開發(fā)過程中你的原型會(huì)經(jīng)常變化,因?yàn)槟愠?huì)想到更好的解決問題的辦法或是想要添加新的功能。
原型不需要很完美。事實(shí)上,藝術(shù)和設(shè)計(jì)上的工作是你最不需要關(guān)心的。還拿日歷的例子來說,你的原型看起來就像是純文本的也沒關(guān)系。
如果你要做一款游戲,你的原型一定要有趣。如果原型都不有趣的話,很可能最終的結(jié)果也不會(huì)有趣。
如果你的原型無法體現(xiàn)你真正的想法,那么也許你需要重新設(shè)計(jì)一個(gè)了。
2、建立一個(gè)團(tuán)隊(duì)。 如果你只靠自己一人開發(fā)程序,你不妨用程序原型幫你組建一個(gè)團(tuán)隊(duì)。團(tuán)隊(duì)合作能幫你更快的追蹤bug,迭代功能,和設(shè)計(jì)視覺效果等。對(duì)于小項(xiàng)目來說團(tuán)隊(duì)并沒有什么必要,但也能顯著的減少開發(fā)耗時(shí)。
要管理好一個(gè)團(tuán)隊(duì)是個(gè)復(fù)雜和困難的過程,需要有高超的管理技巧和合理的團(tuán)隊(duì)架構(gòu)。你可以查閱一些關(guān)于如何領(lǐng)導(dǎo)一個(gè)團(tuán)隊(duì)的指南。
3、必要時(shí)從零做起。 一旦你掌握了一門語言,你就可以在短短幾天內(nèi)建立你的原型并讓它運(yùn)行起來了。 因?yàn)樵褪怯糜诳焖俚?,所以如果你覺得它不能讓你滿意,就請(qǐng)大膽的推翻自己的想法重新開始吧。
4、多寫注釋。 除了程序中最基本的部分都盡量寫上注釋吧!這能幫你在不得不把你的項(xiàng)目擱置一段時(shí)間之后想起來你寫了什么,還能幫其他開發(fā)者理解你的代碼。當(dāng)你在一個(gè)團(tuán)隊(duì)中工作時(shí)這一點(diǎn)尤為重要。在測試代碼時(shí)你還可以用注釋暫時(shí)屏蔽掉代碼中的一部分。只需簡單的在你想屏蔽的代碼周圍加上注釋符號(hào)它們就不會(huì)再被編譯了。當(dāng)你把注釋符號(hào)刪除時(shí)他們馬上就恢復(fù)了。
1、在阿爾法測試階段(阿爾法測試階段是指軟件開發(fā)過程中最早的階段,這時(shí)產(chǎn)品還沒有發(fā)布給用戶,由開發(fā)團(tuán)隊(duì)內(nèi)部進(jìn)行測試并修復(fù)bug——譯者注),測試團(tuán)隊(duì)可以很小。一個(gè)小的團(tuán)隊(duì)可以讓你獲得更有用的反饋,并讓你和測試人員一對(duì)一的交流。每次你對(duì)程序原型作出改進(jìn)時(shí),新的程序版本都要發(fā)送給阿爾法測試人員。測試人員會(huì)測試全部的功能并盡全力把程序搞崩潰,并記錄下所有的結(jié)果。如果你在開發(fā)商業(yè)軟件,你最好保證你的測試人員都簽署了保密協(xié)議。這能防止他們把你的程序泄露給其他人、用戶或媒體。
抽出時(shí)間建立一個(gè)良好的測試計(jì)劃。要確保你的測試人員能夠很方便的匯報(bào)問題和獲得最新的程序版本。GitHub或其他代碼倉庫都是好用而且簡單的處理這個(gè)問題的工具。
2、一遍又一遍的測試你的原型。 Bug是所有開發(fā)者都會(huì)有的煩惱。錯(cuò)誤的代碼和不正確的用法都會(huì)導(dǎo)致各式各樣的問題,即使你的產(chǎn)品已經(jīng)快完成了。所以你應(yīng)當(dāng)繼續(xù)修改你的原型,一遍又一遍的測試它。嘗試各種可能的辦法把它搞崩潰,然后再想辦法修復(fù),讓它在將來不會(huì)再崩潰。如果你的程序要處理日期,就嘗試輸入一些古怪的日期。因?yàn)楹芫靡郧盎蚝芫靡院蟮娜掌诙伎赡茏尦绦虺霈F(xiàn)奇怪的問題。
輸入錯(cuò)誤類型的變量。比如說如果你有一個(gè)表格是讓用戶填寫年齡的,就填幾個(gè)字進(jìn)去看看程序會(huì)如何處理。
如果你的程序有圖形界面,就把每個(gè)地方都點(diǎn)一遍??纯串?dāng)你回退到上一個(gè)界面,或者點(diǎn)擊的順序錯(cuò)誤時(shí)會(huì)發(fā)生什么。
3、按照重要性處理問題。 當(dāng)修正一個(gè)阿爾法版本的程序時(shí),你要花許多時(shí)間修改有問題的功能點(diǎn)。當(dāng)你處理來自測試人員的問題報(bào)告時(shí),它們應(yīng)當(dāng)按照兩個(gè)標(biāo)準(zhǔn)排序:嚴(yán)重性和優(yōu)先級(jí)。問題的嚴(yán)重性是衡量一個(gè)問題所能造成的危害的大小的標(biāo)準(zhǔn)。那些能讓程序崩潰、寫入錯(cuò)誤數(shù)據(jù)、讓程序終止運(yùn)行的bug是阻礙性的,必須第一時(shí)間被修復(fù)。那些不能正常工作或返回了錯(cuò)誤結(jié)果的功能點(diǎn)是很嚴(yán)重的問題,然后那些讓程序很難看或者很難用的問題也是重要問題。除此之外還有一般、小問題和微不足道的問題幾個(gè)標(biāo)準(zhǔn),這些問題影響的是小模塊或不重要的部分。
問題的優(yōu)先級(jí)決定了當(dāng)你解決bug時(shí)下手的順序。軟件開發(fā)中修復(fù)bug是很耗時(shí)的一個(gè)過程,會(huì)占用你開發(fā)新功能和優(yōu)化現(xiàn)有功能的時(shí)間。因此,你必須考慮bug的優(yōu)先級(jí)以便在最后的截止時(shí)間前完工。所有阻礙性和嚴(yán)重級(jí)別的問題都必須是最高優(yōu)先級(jí)的, 有時(shí)會(huì)被叫做P1級(jí)。 P2級(jí)的bug則是指已計(jì)劃要修復(fù)但不會(huì)阻礙產(chǎn)品發(fā)布的重要問題。P3和P4級(jí)的bug不一定會(huì)被修復(fù),屬于"如果有了會(huì)更好"的范疇。
4、增加更多功能。 在阿爾法階段,你需要為你的產(chǎn)品增加更多的功能以使它更加接近你的設(shè)計(jì)文檔描繪的樣子。阿爾法階段是你的程序原型不斷進(jìn)化為完整的程序的過程。當(dāng)這一階段結(jié)束時(shí),你的程序應(yīng)當(dāng)實(shí)現(xiàn)了所有的功能。不要偏離你最初的設(shè)計(jì)文檔太遠(yuǎn)。軟件開發(fā)中的一個(gè)常見問題是"功能狂",就是說把太多新的想法加入到產(chǎn)品中,導(dǎo)致最開始的關(guān)注點(diǎn)已經(jīng)丟失了,把開發(fā)時(shí)間浪費(fèi)在太多不同的功能上。你的程序應(yīng)該把它要做的事情做到最好,而不是變成一鍋大雜燴。
5、測試你添加的每個(gè)功能。在阿爾法階段,每當(dāng)你添加新功能時(shí),都要把最新的程序版本發(fā)給測試人員。版本更新的頻率完全取決于你的團(tuán)隊(duì)的規(guī)模以及功能完成的進(jìn)度。
6、阿爾法階段結(jié)束后不要再添加新功能。 一旦你完成了你程序所需的所有功能,你就可以結(jié)束阿爾法階段了。這時(shí)不應(yīng)該再加入任何新的功能了,并且要保證已有的功能可以正常工作。然后你就可以進(jìn)行進(jìn)一步的測試和優(yōu)化,或者叫貝塔階段。
1、擴(kuò)大測試人員的人數(shù)。在貝塔階段,程序?qū)⒈环职l(fā)給更多的測試者。 有些開發(fā)者會(huì)將貝塔階段公開,或稱為公開貝塔階段。這將允許任何人注冊(cè)和參加產(chǎn)品的測試。你可以采用公開貝塔測試,也可以不用,這取決于產(chǎn)品的需求。
2、連接性能測試。隨著程序被越來越多的人使用,可能你的程序的性能將取決于到服務(wù)器的連接數(shù)。貝塔測試讓你可以確認(rèn)你的程序在很大的負(fù)載下是否還能正常工作,從而確保程序發(fā)布時(shí)是可用的。
3、優(yōu)化你的軟件。 在貝塔階段,也不應(yīng)該增加新的功能。所以你應(yīng)該把注意力放在提高程序的美感和可用性上。在這個(gè)階段, 用戶界面的設(shè)計(jì)變的十分重要。要保證用戶在瀏覽程序和使用各項(xiàng)功能時(shí)沒有障礙。用戶界面設(shè)計(jì)和功能的結(jié)合是非常困難和復(fù)雜的。有些人就是全職做用戶界面設(shè)計(jì)的。只要保證你自己的工程是簡單易用、看起來舒服就行了,畢竟專業(yè)的用戶界面是需要資金和團(tuán)隊(duì)的支持的。
如果你有相應(yīng)預(yù)算,還是有許多從事圖形設(shè)計(jì)的自由職業(yè)者可以為你設(shè)計(jì)一個(gè)用戶界面的。如果你有一個(gè)很棒的項(xiàng)目并期待它取得巨大成功,那就找一個(gè)用戶界面設(shè)計(jì)師加入你的團(tuán)隊(duì)吧!
4、繼續(xù)找問題。 在整個(gè)貝塔階段,你都應(yīng)該給用戶匯報(bào)的問題做歸類和定優(yōu)先級(jí)。因?yàn)橛懈嗟臏y試者測試了產(chǎn)品,很可能會(huì)發(fā)現(xiàn)新的問題。牢記項(xiàng)目的最終截止日期,按照問題的重要性把他們干掉吧。
1、做好市場規(guī)劃。 如果你想要獲取用戶,你就得保證他們能知道你的程序的存在。就好像任何其他產(chǎn)品一樣,你需要做一點(diǎn)廣告,好讓人們知道有這回事。市場推廣活動(dòng)的廣度和深度取決于你程序的功能(你的程序是專業(yè)性的還是大眾性的?)和你可用的預(yù)算。下面有一些簡便的提高你的程序的知名度的方法:在相關(guān)的論壇上發(fā)帖子。要保證你遵守了發(fā)帖的論壇的規(guī)定以防你的帖子被屏蔽。
給一些科技媒體發(fā)送你的程序樣例。找一些適合你的程序的博客或網(wǎng)站,給他們的編輯發(fā)一個(gè)樣例程序詳細(xì)介紹一下你的程序。別忘了帶上幾張截圖。
在視頻網(wǎng)站上上傳一些視頻。如果你的程序是用來完成某種特定工作的,就做一些視頻來演示一下它是怎么工作的,上傳到視頻網(wǎng)站上,并把他們標(biāo)記為"如何做。。。"類的視頻。
在社交媒體上創(chuàng)建主頁。你可以在微信、人人網(wǎng)上免費(fèi)創(chuàng)建一個(gè)賬號(hào)或主頁來介紹你的程序,也可以在微博上發(fā)布一些跟你的程序或公司相關(guān)的新聞。
2、把你的程序放在你的網(wǎng)站上。對(duì)于小的程序,你大可以把程序文件放在你的個(gè)人網(wǎng)站上。如果你想要對(duì)用戶收費(fèi)的話你還需要引入一個(gè)付費(fèi)系統(tǒng)。如果你的程序開始流行,你可能需要把程序文件放在服務(wù)器上以便讓更多用戶下載。
3、創(chuàng)立支持服務(wù)。一旦你的程序公之于眾,你總是會(huì)收到來自用戶的各種技術(shù)性問題,比如不知道該如何使用你的程序等。你的網(wǎng)站應(yīng)當(dāng)有全面的文檔和某種形式的支持服務(wù),比如說論壇、電子郵件、人工服務(wù)或它們的組合。當(dāng)然了,你能提供的服務(wù)取決于你的預(yù)算。
4、一直保持更新。幾乎所有的程序在最初發(fā)布一段時(shí)間之后都要打補(bǔ)丁和更新。這些更新可能會(huì)修復(fù)一些嚴(yán)重的或不嚴(yán)重的問題,升級(jí)安全協(xié)議,提高穩(wěn)定性,或者添加新功能,甚至重制用戶界面。不斷更新你的程序能幫你提高競爭力。
樣本C++程序,樣本MATLAB程序
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com