『壹』 Python能用來做什麼
Python 語言主要有以下用途:
1) 簡單:Python 是一種代表簡單主義思想的語言。閱讀一個良好的 Python 程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格。Python 的這種偽代碼本質是其優點之一,使用戶能夠專注於解決問題而不是去搞明白語言本身。
2) 易學:Python 有極其簡單的語法,非常容易上手。
3) 免費、開源:Python 是 FLOSS(自由/開源軟體)之一。簡單來說,用戶可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS 是基於一個團體分享知識的概念,這也是為什麼 Python 如此優秀的原因之一:它由一群希望看到 Python 更加優秀的人創造,並被他們不斷改進。
4) 高層語言:使用 Python 語言編寫程序時,不用考慮如何管理程序使用的內存等底層細節。
5) 可移植性強:由於它的開源本質,Python 已經被移植在許多平台上。如果 Python 程序沒有使用依賴於系統的特性,那麼程序不用修改就可以在下述任意平台上面運行。這些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、Pocket PC 和 Symbian。
6) 解釋型語言:編譯型語言(如 C 或 C++)源程序從源文件(即 C 或 C++ 語言)轉換到二進制代碼(即 0 和 1)的過程通過編譯器和不同的標記、選項完成,當運行程序的時候,連接器把程序從硬碟復制到內存中並且運行。而 Python 程序不需要編譯成二進制代碼,直接從源代碼運行程序。
在計算機內部,Python 解釋器把源代碼轉換成位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。因此,用戶不再需要操心如何編譯程序、如何確保指定了正確的模塊或包文件等細節,所有這一切使得使用 Python 更加簡單。同時,由於只需要把 Python 程序拷貝到另外一台計算機上即可工作,這也使得 Python 程序更加易於移植。
7) 面向對象:Python 既支持面向過程的編程也支持面向對象的編程。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在面向對象的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他語言(如 C++ 和 Java)相比,Python 以一種非常強大又簡單的方式實現面向對象編程。
8) 可擴展性強:如果希望把一段關鍵代碼運行得更快或希望某些演算法不公開,可以使用 C 或 C++ 語言編寫這部分程序,然後在 Python 程序中調用它們。
9) 可嵌入性強:可以把 Python 嵌入 C/C++ 程序,從而向用戶提供腳本功能。
10) 豐富的擴展庫:Python 擴展庫很龐大,可以幫助處理包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV 文件、密碼系統、GUI(圖形用戶界面)、Tk 以及其他與系統有關的操作。只要安裝了 Python,所有這些功能都是可用的,這被稱作 Python 的「功能齊全」理念。除了擴展庫以外,還有許多其他高質量的庫,如 wxPython、Twisted 和 Python 圖像庫等。
『貳』 為什麼現在有些人不願意去學葯學專業
我就是醫學院葯學專業的,畢業至今27年了。
我跟大部分葯學畢業生不同的是,我在很多不同單位都工作過,醫院葯劑與中葯炮製,制葯廠新葯研究,葯檢,天然提取物研究等等。
我跟大家說說葯學畢業生的感受:
1、醫院:在醫院,不算後勤與管理層,就醫學技術來講,四個專業類別人員,包括醫生,護師,化驗與檢查,葯劑師。
在這四個專業技術人員裡面,葯劑師最不受待見,地位最低,當然醫生地位最高。
2、制葯廠:制葯廠,一樣有後勤,管理層與技術人員。在大點的制葯企業,葯學技術人員崗位有:新葯研究,葯品生產管理,質量管理,倉儲,銷售。其中前三個崗位會要求比較高的葯學資歷。
新葯研究,西葯基本都是仿製工作;中成葯的話,要麼古方改成現代劑型,要麼名醫名方做新葯開發。
早些年,企業新葯研究成果,關鍵並不在技術,而在於申報渠道是否通暢,這些年改進好多,可是還是有很多潛規則在裡面,讓科研技術人員沒存在感。
生產管理與質量管理,往往是一對冤家,總有難以調合的矛盾,需要企業領導摻合。
葯物銷售,對專業技術要求並不高,可是確是最受重視的部門,重視的結果,往往就是他們的待遇比技術人員高,技術人員存在感很受打擊。
3、葯檢:葯檢所一般是事業單位,一般接受企業有質量標准或者國家標準的葯品檢驗,這里的檢驗結果具有法律效力。由於是事業單位,工作穩定,待遇比較好,是葯學專業畢業生的理想就業去向。
4、植物提取物:以前有一家做迷迭香植物提取物的生物工程公司,由於市面上並沒有成熟的提取技術,公司花了很大成本,請中科院的專家來研究,沒有理想成果,反反復復生物工程工程專業博士碩士都聘請過,都沒預期效果,公司差不多要放棄這個項目了。
偶然的原因,我接手了這個科研項目,花了差不多一年多時間,得出成果,並首先實現國內產業化。我後來查閱了以前的部分科研資料(企業保管不規范,有些資料可能參與人員離職時帶走了,所以資料不全),研究方向可能是不正確的,出成果才怪。
我並不是說,那些專家不行,也許只是專業並不對口,他們並不擅長搞這些植物提取物研究,而相關企業領導並不懂這個行業,就引進了這個項目。
葯學專業同學們,我可是為你們掙了一口氣,雖然我現在離開醫葯行業,搞網路經濟了,我還是很惦記著你們,加油!
葯學專業是一個吃苦不討好的專業,所以許多學生不喜歡學葯學!葯學的基本特點是實驗多,課程難,就業差,工作苦,收入低!是付出和收入最不匹配的專業。
所以,同一所大學葯學專業是錄取分最低的專業,或者說被調劑最多的專業!
葯學的就業方向:
首選葯監局。公務員,是葯學最好的就業方向,只是招聘職位少,競爭激烈!
其次讀到博士,到學校教書。這也是比較輕松的職位!收入也好!
第三,碩士博士去葯物研發單位。收入還好,只是工作壓力大,加班是家常便飯!
第四,本科,碩士去葯企質量部門。加班多,收入低,一般本科3000多,碩士4000左右。
綜上所述,葯學是不太好的專業,所以大家不喜歡選擇讀。
一,問題問的很奇怪,或者說很幼稚。任何專業都有人不願意去學!葯學也一樣,有人想學,有人不願意學,這非常正常啊。
二,葯學是培養具備葯學學科基本理論、基本知識和一定的實驗技能,能夠在葯學領域從事葯物研究與開發、葯物生產、葯物質量控制、葯物臨床應用和監督管理等方面工作的葯學專門人才。不願意從事這類職業的人,當然就不願意學了。
三,葯學專業不是目前非常熱門的專業,但是就業前景還是比較廣闊的,科研,院校,葯企,公務員等等。尤其是重點大學的葯學專業,就業比較有優勢。
四,重點是,很多時候某個專業要看是什麼學校設置。都是同一個專業,北大和一個二本末流大學都有,但那是一樣么?葯學專業亦如此。
任何專業都有有冷有熱,有人不願意去學!葯學也一樣,有人想進,有人想出,這非常正常啊。
以前三件寶:醫生、司機和賣豬佬。不過,現在這些行業不吃香了!
以前司機、醫生、賣豬佬是三件寶,收入穩定,風險低,好多人想進來。由於競爭激烈,工資低,葯價高,要值副班,工作時間長,還有一些醫患關系有沖突,出了問題要問責。
葯學專業首先就業面窄,要不就去考公務員去政府衛生管理部門,要不就去制葯廠從事葯物開發、生產、檢驗,要不就去醫院葯房分葯,要不就當醫葯代表,我接觸的學葯學的部分人進了制葯廠……葯學工作很多不是葯學專業的人,都能做,所以都幹些基礎性的工作,前途暗淡,大家都知道。
現在的葯國家開始控制價格,沒有原先那麼高的利潤,油水少很多,患者也少買葯,看來一切往錢看不行了,所以從事這個行業的人相對就減少了,就會導致更多的人不想學,現在工作也想跳槽。所以葯學就業前景不是很好。
葯學專業是一個低薪專業,雖在一個高利潤為特色的行業裡面,從事人員卻拿著低工資。這個行業要發展只有兩條路,第一爬到管理層,甚至當高管;第二,做銷售,賣葯。
這個專業是個需要高學歷,高技能,高知識的專業,頂尖的人才非常稀缺而且發展很好,但是對於本科畢業者很難從事葯物研發一類的工作,特別是如果高校水平本身有限,更難求職到滿意工作,一定比例畢業生只能從事葯物銷售等工作,而這類工作本身並非葯學專業能夠帶給你什麼核心競爭力,而專業本身對口的行業或對應的就業崗位並不多,就業質量也一般,但是如果真正名校或行業背景院校畢業,比如博士畢業,有一定科研能力,從事葯物研發工作,那麼還是非常好的前景,有些專業就是屬於金字塔頂類型的專業,但是有些專業對應就業范圍廣,行業廣或行業前景好,可能就會更加熱門一些,比如計算機,會計之類。所以從這幾個維度去考慮,葯學專業可能有些冷門了,但是並不代表所有人都不能學。
我確信我不喜歡葯學專業,日後也絕不會考慮從事葯學相關的科研工作。
本人非葯學專業的,目前所了解一些有關葯學方面的東西,如下:1. 我能理解葯學作為一個實驗學科所帶來的各種不可避免的 實驗性課程 ,但它們往往都是 大量重復性的工作 (尤其是一些醫學或生物基礎實驗課程),極其枯燥和形式化。
我不覺得專業排名考前的好學生做這種實驗比我做得好多少,我也不覺得一個初中生但凡了解實驗步驟後會做不出這種實驗。
2. 我不喜歡葯學專業不意味著別人不喜歡,我沒有發掘的專業樂趣不意味著別人也沒發掘。我身邊不乏有志於新葯研發的同學,我覺得他們特別厲害。如果有人仔細思索過後仍然願意在這條路上走下去,我衷心祝願他能堅持所愛,有所成就。
當然一份熱愛的事業可遇而不可求,僅憑熱愛就獻身的人太理想化了,每個人的背景條件都不一樣,而現實和生活對所有人是有要求的,能扛住壓力是真漢子!
3. 未來幾十年 國民大 健康 一定會成為炙手可熱的專業,但是想在其中分一杯羹的人一定要找對方向。
在 人工智慧 大行其道的時代,傳統的葯學就業會面臨很大程度的洗牌,葯學生應當要在這方面有自己的判斷力。
這些想法,早已超過了這個問題本身,而是以下回答,僅供參考。葯學專業是一個低薪專業,在一個高利潤為特色的行業裡面,從業人員卻拿著低收入。這個行業要拿到可以吹牛逼的收入水平只有兩條路,第一爬到管理層,我指的是高管;第二,做銷售,賣葯。
其實不奇怪,這個專業開在醫學院校,但是卻更像化學,應該說我們的有機化學學的比化學專業的更好,一個合格的葯學畢業生,化合物合成,分析,分離能力應該比化學專業的更牛逼。當然,大部分葯學畢業生都不合格。不是學生的問題,而是學校的問題!學校太窮了!這個行業非常依賴生產工具,和生物專業一樣,就算你是北大葯學院的高材生離開那些動輒幾十幾百萬的儀器,你啥都幹不了。我們比較一下,和 社會 上大家公認的高薪行業計算機軟體,金融等專業相比,招個程序員,一台電腦,一張桌子,一把椅子就可以開始幹活了。招個葯學生來做新葯研發,或者簡單點就做做質控,一台小液相基本就是20多萬了,現在做研發質譜少不了,200萬,還是低配。關鍵是作為葯物工作的基本工具,液相色譜,有幾個剛畢業的葯學本科生能夠熟練使用?
當然關鍵因素是這個行業大部分工作和個人能力沒有太大關系,不管是研發,質控還是生產其實都是重復性的螺絲釘工作,這樣的工作是拿不到高薪的,所以這個專業的大部分人都在愉快或者不愉快的賣著葯。
現在比較火的就是臨床醫療方向了,在中國還處於上升期,國內現在對這方面的人才需求比較大。
其實還是一分耕耘一份收獲,你到底想要什麼,自身要長遠的去想一想。
首先在葯品生產研發領域,生產製造本身就不掙錢,還有大批生物、化學、化工的人員來搶飯碗,而且他們似乎比我們更專業,葯學人員根本沒有優勢。在科研領域,國內的葯學研究簡直是笑話。企業不會去搞研究,研究新葯風險大成本高,他們只需要搞搞仿製葯,掙幾個小錢過日子就行了。由於缺乏產業支持,高校和研究所的研究,基本是空中樓閣,看似逼格滿滿,實際上都是水貨。
其次在葯品流通銷售領域,更可悲,醫葯代表就一葯販子,像孫子一樣伺候醫生;葯店葯師相當於超市售貨員,不斷地向老百姓推銷維生素和保健品,比超市推銷員還讓人鄙視。
葯學專業不是大眾化,熱門的專業,所以有些人不願意去讀,當然並不是所有人的愛好興趣都一樣,所以有人選專業,會根據自己的喜好,和發展方向來選專業。
葯業專業學也不是很冷門,所以還是會有相當一部分的選著這個專業的。且葯業專業想要以後的路。更好還要往更高層次去讀博士做科研,才能有所成就,如果只是普通的本科,就只能在醫院葯技師或是葯店做銷售。
當然現在這 社會 還是需要很多大量的葯學專業人才的。
因為課程難又難找工作,所以不願意唄。相比於金融、電商等行業,葯學的孩子很苦的。
我雖然不是葯學專業,但是也擦邊,也是生命科學類。課程真的很難,什麼分子生物學、生物化學、化工原理、有機化學、基因、葯物學、微生物學等等,每次考同源重組機制,背那些蛋白因子調控過程,真心累。
累就累吧,至少讓我找個好工作對吧?可是葯學本科出來想找工作是太難了,工資還不高。
好不容易,考上研究生,又要學什麼高級分子生物學、高級有機化學等,累啊。天天做實驗,八點就要打卡,晚上因為實驗失敗或者必須接種啥的,熬到十二點是常有的事情,最後投了篇文章還被退回來了。
好不容易順利畢業了,找到了工作,雖然工資比其他行業低了點,但是也勉強,自己告訴自己堅持就是勝利,可是公司也是累死累活,天天實驗,吃力還不討好,被折磨的精疲力盡,老了好幾歲,看著同學的熱門專業過得那麼瀟灑,心理自然失落。
所以,前車之鑒,又加上現在房子車子的現實問題,很多人(一般人,除了那些厲害的,立志從事葯學)不願意學葯學,就是太苦了,還付出得不到回報。相比於他們的同學一出校門就拿高工資、工作還很輕松,心理自然不舒服。
不過,如果你有毅力和興趣,葯學讀到博士、再到國外呆幾年,也是大有成就的,就看你的志向有多高。
這里講的葯學一般是指醫學院的葯學,而不是指化工學院或理工大學的葯學。這兩者是有本質區別的,醫學院的葯學是指葯理學,也就是就業在醫院里當葯劑師的行業。不過大家不願學葯學的原因還是就業前景不明朗,很多葯學專業的學生只能當醫葯代表,而醫葯代表的工作實質上就是推銷葯物,而這行業確實是個說不清道不明的行業,涉及回扣和賄賂,很多人不願進入這行業。
而理工大學的制葯專業基本和制葯企業有關,新葯的研發難度大專業強,能獨當一面搞葯物研發的科研人員並不多。所以很多人還是會加入醫葯代表的行列去打開銷售渠道。這就是葯學怎麼也不如臨床醫學那麼熱門那麼吃香。
『叄』 初中畢業學什麼技術有前途,有知道的嗎
1、軟體開發專業。
培養目標:培養具備軟體開發工作所需的知識和技能,編碼熟練度和規范性達到一定要求;具備調適能力、測試能力及文檔編寫能力的人才。
就業方向:從事外包軟體開發工程師、游戲開發工程師、數據模型工程師系統分析工程師、系統設計工程師、游戲開發工程師等工作。
2、電子商務專業。
培養目標:培養具備管理、經濟、法律及網路技術等方面的知識和基本技能,能在各類企、事業單位、金融機構及政府部門從事實際業務管理、策劃、調研及研究工作的專門人才。
就業方向:從事電子商務平台規劃、網路編程、電子商務平台安全設計、電子商務網頁設計、站點管理與技術維護等工作。
3、設計專業。
就業方向:於廣告公司、企業策劃設計公司等設計部門擔任平面設計、裝飾設計、效果圖設計、展示設計等工作。、
在這里我推薦新 華 電 腦 ,辦校34年了,也上過央視,你可以考慮考慮
『肆』 程序員與游戲程序設計師的區別
你可以先去【繪學霸】網站找「游戲設計/游戲製作」板塊的【免費】視頻教程-【點擊進入】完整入門到精通視頻教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=307&zdhhr-11y04r-423981481
想要系統的學習可以考慮報一個網路直播課,推薦CGWANG的網路課。老師講得細,上完還可以回看,還有同類型錄播課可以免費學(贈送終身VIP)。
自製能力相對較弱的話,建議還是去好點的培訓機構,實力和規模在國內排名前幾的大機構,推薦行業龍頭:王氏教育。
王氏教育全國直營校區面授課程試聽【復制後面鏈接在瀏覽器也可打開】: www.huixueba.com.cn/school/3dmodel?type=2&zdhhr-11y04r-423981481
在「游戲設計/游戲製作」領域的培訓機構里,【王氏教育】是國內的老大,且沒有加盟分校,都是總部直營的連鎖校區。跟很多其它同類型大機構不一樣的是:王氏教育每個校區都是實體面授,老師是手把手教,而且有專門的班主任從早盯到晚,爆肝式的學習模式,提升會很快,特別適合基礎差的學生。
大家可以先把【繪學霸】APP下載到自己手機,方便碎片時間學習——繪學霸APP下載: www.huixueba.com.cn/Scripts/download.html
『伍』 我想知道郝斌老師為什麼要從程序員轉為去做老師。有真正知道的認給我解答嗎
中國的程序員35歲是道坎,一般不是轉行就是轉文職
能繼續搞開發寫程序,或是成為項目經理的少之又少。
咱們國家現在主要還是做外包,一般的大學畢業生,不用太刻苦的
大學4年平均年代碼量有8000行的,那些外包足能應付
人家雇個新大學畢業生,肯定比雇個35歲的程序員價錢低。
『陸』 軟體開發的程序員每月工資普遍是多少
在北上廣,新進的月6000-7000元
『柒』 初中畢業學什麼有前途
初中生到技校肯定是學習職業技能的,技校有很多,一般來說正規專業的技校在設備、教學、就業、環境等各方面都很全面,選擇時要到校先實際看看,看有哪些專業,畢業之後的就業問題是否能解決等這些問題。
汽年輕人做汽修,可以積累很多的汽車專業知識,對汽車構造會有深入了了解,隨著年齡的增長,技術積累達到了一定的高度,可以向汽車行業的三個方向發展,
1技術,技術總監,負知責技術指導與技術培訓。
2管理,售後經理,車間主任,負責售後服務的管理工作。
3銷售,道銷售顧問,賣車,買汽車保險等。從基礎做起,積累經驗,逐步提高,汽車行業發展前景廣闊,堅持一定會有好前途!祝你成功!
『捌』 什麼極限編程
ExtremeProgramming(極限編程,簡稱XP)是由KentBeck在1996年提出的。KentBeck在九十年代初期與WardCunningham共事時,就一直共同探索著新的軟體開發方法,希望能使軟體開發更加簡單而有效。Kent仔細地觀察和分析了各種簡化軟體開發的前提條件、可能行以及面臨的困難。1996年三月,Kent終於在為DaimlerChrysler所做的一個項目中引入了新的軟體開發觀念——XP。
XP是一個輕量級的、靈巧的軟體開發方法;同時它也是一個非常嚴謹和周密的方法。它的基礎和價值觀是交流、樸素、反饋和勇氣;即,任何一個軟體項目都可以從四個方面入手進行改善:加強交流;從簡單做起;尋求反饋;勇於實事求是。XP是一種近螺旋式的開發方法,它將復雜的開發過程分解為一個個相對比較簡單的小周期;通過積極的交流、反饋以及其它一系列的方法,開發人員和客戶可以非常清楚開發進度、變化、待解決的問題和潛在的困難等,並根據實際情況及時地調整開發過程。
什麼是軟體開發
軟體開發的內容是:需求、設計、編程和測試!
需求:不僅僅是用戶需求,應該是開發中遇到的所有的需求。比如,你首先要知道做這個項目是為了解決什麼問題;測試案例中應該輸入什麼數據……為了清楚地知道這些需求,你經常要和客戶、項目經理等交流。
設計:編碼前,肯定有個計劃告訴你要做什麼,結構是怎樣等等。你一定要按照這個來做,否則可能會一團糟。
編程:如果在項目截止日,你的程序不能跑起來或達不到客戶的要求,你就拿不到錢。
測試:目的是讓你知道,什麼時候算是完成了。如果你聰明,你就應該先寫測試,這樣可以及時知道你是否真地完成了。否則,你經常會不知道,到底有哪些功能是真正完成了,離預期目標還差多遠。
軟體開發中,客戶和開發人員都有自己的基本權利和義務。
客戶:
定義每個用戶需求的商業優先順序;
制訂總體計劃,包括用多少投資、經過多長時間、達到什麼目的;
在項目開發過程中的每個工作周,都能讓投資獲得最大的收益;
通過重復運行你所指定的功能測試,准確地掌握項目進展情況;
能隨時改變需求、功能或優先順序,同時避免昂貴的再投資;能夠根據各種變化及時調整項目計劃;
能夠隨時取消項目;項目取消時,以前的開發工作不是一堆垃圾,已開發完的功能是合乎要求的,正在進行或未完成的的工作則應該是不難接手的。
開發人員:
知道要做什麼,以及要優先做什麼;
工作有效率;
有問題或困難時,能得到客戶、同事、上級的回答或幫助;
對工作做評估,並根據周圍情況的變化及時重新評估;
積極承擔工作,而不是消極接受分配;
一周40小時工作制,不加班。
這就是軟體開發,除此之外再還有其它要關心的問題!
靈巧的輕量級軟體開發方法
一套軟體開發方法是由一系列與開發相關的規則、規范和慣例。重量級的開發方法嚴格定義了許多的規則、流程和相關的文檔工作。靈巧的輕量級開發方法,其規則和文檔相對較少,流程更加靈活,實施起來相對較容易。
在軟體工程概念出現以前,程序員們按照自己喜歡的方式開發軟體。程序的質量很難控制,調試程序很繁瑣,程序員之間也很難讀懂對方寫的代碼。1968年,EdsgerDijkstra給CACM寫了一封題為的信,軟體工程的概念由此誕生。程序員們開始摒棄以前的做法,轉而使用更系統、更嚴格的開發方法。為了使控制軟體開發和控制其它產品生產一樣嚴格,人們陸續制定了很多規則和做法,發明了很多軟體工程方法,軟體質量開始得到大幅度提高。隨著遇到的問題更多,規則和流程也越來越精細和復雜。
到了今天,在實際開發過程中,很多規則已經難於遵循,很多流程復雜而難於理解,很多項目中文檔的製作過程正在失去控制。人們試圖提出更全面更好的一攬子方案,或者寄希望於更復雜的、功能更強大的輔助開發工具(CaseTools),但總是不能成功,而且開發規范和流程變得越來越復雜和難以實施。
為了趕進度,程序員們經常跳過一些指定的流程,很少人能全面遵循那些重量級開發方法。
失敗的原因很簡單,這個世界沒有萬能葯。因此,一些人提出,將重量級開發方法中的規則和流程進行刪減、重整和優化,這樣就產生了很多適應不同需要的輕量級流程。在這些流程中,合乎實際需要的規則被保留下來,不必要的復雜化開發的規被拋棄。而且,和傳統的開發方法相比,輕量級流程不再象流水生產線,而是更加靈活。
ExtremeProgramming(XP)就是這樣一種靈巧的輕量級軟體開發方法。
為什麼稱為「Extreme」(極限)
「Extreme」(極限)是指,對比傳統的項目開發方式,XP強調把它列出的每個方法和思想做到極限、做到最好;其它XP所不提倡的,則一概忽略(如開發前期的整體設計等)。一個嚴格實施XP的項目,其開發過程應該是平穩的、高效的和快速的,能夠做到一周40小時工作制而不拖延項目進度。
XP的軟體開發是什麼樣
1極限的工作環境
為了在軟體開發過程中最大程度地實現和滿足客戶和開發人員的基本權利和義務,XP要求把工作環境也做得最好。每個參加項目開發的人都將擔任一個角色(項目經理、項目監督人等等)並履行相應的權利和義務。所有的人都在同一個開放的開發環境中工作,最好是所有人在同一個大房子中工作,還有茶點供應;每周40小時,不提倡加班;每天早晨,所有人一起站著開個短會;牆上有一些大白板,所有的Story卡、CRC卡等都貼在上面,討論問題的時候可以在上面寫寫畫畫;下班後大家可以一起玩電腦游戲……。
2極限的需求
客戶應該是項目開發隊伍中的一員,而不是和開發人員分開的;因為從項目的計劃到最後驗收,客戶一直起著很重要的作用。開發人員和客戶一起,把各種需求變成一個個小的需求模塊(UserStory),例如「計算年級的總人數,就是把該年級所有班的人數累加。」;這些模塊又會根據實際情況被組合在一起或者被分解成更小的模塊;它們都被記錄在一些小卡片(StoryCard)上,之後分別被程序員們在各個小的周期開發中(Iteration,通常不超過3個星期)實現;客戶根據每個模塊的商業價值來指定它們的優先順序;開發人員要做的是確定每個需求模塊的開發風險,風險高的(通常是因為缺乏類似的經驗)需求模塊將被優先研究、探索和開發;經過開發人員和客戶分別從不同的角度評估每個模塊後,它們被安排在不同的開發周期里,客戶將得到一個盡可能准確的開發計劃;客戶為每個需求模塊指定驗收測試(功能測試)。
每發布一次開發的軟體(經過一個開發周期),用戶都能得到一個可以開始使用的系統,這個系統全面實現了相應的計劃中的所有需求。而在一些傳統的開發模式中,無論什麼功能,用戶都要等到所有開發完成後才能開始使用。
3極限的設計
從具體開發的角度來看,XP內層的過程是一個個基於測試驅動的開發(TestDrivenDevelopment)周期,諸如計劃和設計等外層的過程都是圍繞這些展開的。每個開發周期都有很多相應的單元測試(UnitTest)。剛開始,因為什麼都沒有實現,所以所有的單元測試都是失敗的;隨著一個個小的需求模塊的完成,通過的單元測試也越來越多。通過這種方式,客戶和開發人員都很容易檢驗,是否履行了對客戶的承諾。XP提倡對於簡單的設計(SimpleDesign),就是用最簡單的方式,使得為每個簡單的需求寫出來的程序可以通過所有相關的單元測試。XP強調拋棄那種一攬子詳細設計方式(BigDesignUpFront),因為這種設計中有很多內容是你現在或最近都根本不需要的。XP還大力提倡設計復核(Review)、代碼復核以及重整和優化(Refectory),所有的這些過程其實也是優化設計的過程;在這些過程中不斷運行單元測試和功能測試,可以保證經過重整和優化後的系統仍然符合所有需求。
4極限的編程
既然編程很重要,XP就提倡兩個人一起寫同一段程序(PairProgramming),而且代碼所有權是歸於整個開發隊伍(CollectiveCodeOwnership)。程序員在寫程序和重整優化程序的時候,都要嚴格遵守編程規范。任何人都可以修改其他人寫的程序,修改後要確定新程序能通過單元測試。
5極限的測試
既然測試很重要,XP就提倡在開始寫程序之前先寫單元測試。開發人員應該經常把開發好的模塊整合到一起(ContinuousIntegration),每次整合後都要運行單元測試;做任何的代碼復核和修改,都要運行單元測試;發現了BUG,就要增加相應的測試(因此XP方法不需要BUG資料庫)。除了單元測試之外,還有整合測試,功能測試、負荷測試和系統測試等。所有這些測試,是XP開發過程中最重要的文檔之一,也是最終交付給用戶的內容之一。
XP中的重要慣例和規則
1項目開發小組(Team)
在XP中,每個對項目做貢獻的人都應該是項目開發小組中的一員。而且,這個小組中必須至少有一個人對用戶需求非常清晰,能夠提出需求、決定各個需求的商業價值(優先順序)、根據需求等的變化調整項目計劃等。這個人扮演的是「客戶」這個角色,當然最好就是實際的最終用戶,因為整個項目就是圍繞最終用戶的需求而展開的。程序員是項目開發小組中必不可少的成員。小組中可以有測試員,他們幫助客戶制訂驗收測試;有分析員,幫助客戶確定需求;通常還有個Coach(教練),負責跟蹤開發進度、解決開發中遇到的一些問題、推動項目進行;還可以又一個項目經理,負責調配資源、協助項目內外的交流溝通等等。項目小組中有這么多角色,但並不是說,每個人做的工作是別人不能插手或干預的,XP鼓勵每個人盡可能地為項目多做貢獻。平等相處,取長補短;這就是最好的XP開發小組。
2計劃項目(PlanningGame)、驗收測試、小規模發布(SmallReleases)
XP開發小組使用簡單的方式進行項目計劃和開發跟蹤,並以次預測項目進展情況和決定未來的步驟。根據需求的商業價值,開發小組針對一組組的需求進行一系列的開發和整合,每次開發都會產生一個通過測試的、可以使用的系統。
計劃項目
XP的計劃過程主要針對軟體開發中的兩個問題:預測在交付日期前可以完成多少工作;現在和下一步該做些什麼。不斷的回答這兩個問題,就是直接服務於如何實施及調整開發過程;與此相比,希望一開始就精確定義整個開發過程要做什麼事情以及每件事情要花多少時間,則事倍功半。針對這兩個問題,XP中又兩個主要的相應過程:
軟體發布計劃(ReleasePlanning)。客戶闡述需求,開發人員估算開發成本和風險。客戶根據開發成本、風險和每個需求的重要性,制訂一個大致的項目計劃。最初的項目計劃沒有必要(也沒有可能)非常准確,因為每個需求的開發成本、風險及其重要性都不是一成不變的。而且,這個計劃會在實施過程中被不斷地調整以趨精確。
周期開發計劃(IterationPlanning)。開發過程中,應該有很多階段計劃(比如每三個星期一個計劃)。開發人員可能在某個周期對系統進行內部的重整和優化(代碼和設計),而在某個周期增加了新功能,或者會在一個周期內同時做兩方面的工作。但是,經過每個開發周期,用戶都應該能得到一個已經實現了一些功能的系統。而且,每經過一個周期,客戶就會再提出確定下一個周期要完成的需求。在每個開發周期中,開發人員會把需求分解成一個個很小的任務,然後估計每個任務的開發成本和風險。這些估算是基於實際開發經驗的,項目做得多了,估算自然更加准確和精確;在同一個項目中,每經過一個開發周期,下一次的估算都會有更過的經驗、參照和依據,從而更加准確。這些簡單的步驟對客戶提供了豐富的、足夠的信息,使之能靈活有效地調控開發進程。每過兩三個星期,客戶總能夠實實在在地看到開發人員已經完成的需求。在XP里,沒有什麼「快要完成了」、「完成了90%」的模糊說法,要不是完成了,要不就是沒完成。這種做法看起來好象有利有弊:好處是客戶可以馬上知道完成了哪些、做出來的東西是否合用、下面還要做些什麼或改進什麼等等;壞處是客戶看到做出來的東西,可能會很不滿意甚至中止合同。實際上,XP的這種做法是為了及早發現問題、解決問題,而不是等到過了幾個月,用戶終於看到開發完的系統了,然後才告訴你這個不行、那個變了、還要增加
哪個內容等等。
驗收測試
客戶對每個需求都定義了一些驗收測試。通過運行驗收測試,開發人員和客戶可以知道開發出來的軟體是否符合要求。XP開發人員把這些驗收測試看得和單元測試一樣重要。為了不浪費寶貴的時間,最好能將這些測試過程自動化。
頻繁地小規模發布軟體(SmallReleases)
每個周期(Iteration)開發的需求都是用戶最需要的東西。在XP中,對於每個周期完成時發布的系統,用戶都應該可以很容易地進行評估,或者已經能夠投入實際使用。這樣,軟體開發對於客戶來說,不再是看不見摸不著的東西,而是實實在在的。XP要求頻繁地發布軟體,如果有可能,應該每天都發布一個新版本;而且在完成任何一個改動、整合或者新需求後,就應該立即發布一個新版本。這些版本的一致性和可靠性,是靠驗收測試和測試驅動的開發來保證的。
3簡單設計,PairProgramming,測試驅動開發,重整和優化
XP程序員不但做為一個開發小組共同工作,還以兩個人為一個小開發單元編寫同一個程序。開發人員們進行簡單的設計,編寫單元測試後再編寫符合測試要求的代碼,並在滿足需求的前提下不斷地優化設計。
簡單設計
XP中讓初學者感到最困惑的就是這點。XP要求用最簡單的辦法實現每個小需求,前提是按照這些簡單設計開發出來的軟體必須通過測試。這些設計只要能滿足系統和客戶在當下的需求就可以了,不需要任何畫蛇添足的設計,而且所有這些設計都將在後續的開發過程中就被不斷地重整和優化。
在XP中,沒有那種傳統開發模式中一次性的、針對所有需求的總體設計。在XP中,設計過程幾乎一直貫穿著整個項目開發:從制訂項目的計劃,到制訂每個開發周期(Iteration)的計劃,到針對每個需求模塊的簡捷設計,到設計的復核,以及一直不間斷的設計重整和優化。整個設計過程是個螺旋式的、不斷前進和發展的過程。從這個角度看,XP是把設計做到了極致。
PairProgramming
XP中,所有的代碼都是由兩個程序員在同一台機器上一起寫的——這是XP中讓人爭議最多、也是最難實施的一點。這保證了所有的代碼、設計和單元測試至少被另一個人復核過,代碼、設計和測試的質量因此得到提高。看起來這樣象是在浪費人力資源,但是各種研究表明事實恰恰相反。——這種工作方式極大地提高了工作強度和工作效率。
很多程序員一開始是被迫嘗試這點的(XP也需要行政命令的支持)。開始時總是不習慣的,而且兩個人的效率不會比一個人的效率高。這種做法的效果往往要堅持幾個星期或一兩個月後才能很顯著。據統計,在所有剛開始PairProgramming的程序員中,90%的人在兩個月以後都很認為這種工作方式更加高效。
項目開發中,每個人會不斷地更換合作編程的夥伴。因此,PairProgramming不但提高了軟體質量,還增強了相互之間的知識交流和更新,增強了相互之間的溝通和理解。這不但有利於個人,也有利於整個項目、開發隊伍和公司。從這點看,PairProgramming不僅僅適用於XP,也適用於所有其它的軟體開發方法。
測試驅動開發
反饋是XP的四個基本的價值觀之一——在軟體開發中,只有通過充分的測試才能獲得充分的反饋。XP中提出的測試,在其它軟體開發方法中都可以見到,比如功能測試、單元測試、系統測試和負荷測試等;與眾不同的是,XP將測試結合到它獨特的螺旋式增量型開發過程中,測試隨著項目的進展而不斷積累。另外,由於強調整個開發小組擁有代碼,測試也是由大家共同維護的。即,任何人在往代碼庫中放程序(CheckIn)前,都應該運行一遍所有的測試;任何人如果發現了一個BUG,都應該立即為這個BUG增加一個測試,而不是等待寫那個程序的人來完成;任何人接手其他人的任務,或者修改其他人的代碼和設計,改動完以後如果能通過所有測試,就證明他的工作沒有破壞願系統。這樣,測試才能真正起到幫助獲得反饋的作用;而且,通過不斷地優先編寫和累積,測試應該可以基本覆蓋全部的客戶和開發需求,因此開發人員和客戶可以得到盡可能充足的反饋。
重整和優化(Refactoring)
XP強調簡單的設計,但簡單的設計並不是沒有設計的流水帳式的程序,也不是沒有結構、缺乏重用性的程序設計。開發人員雖然對每個USERSTORY都進行簡單設計,但同時也在不斷地對設計進行改進,這個過程叫設計的重整和優化(Refactoring)。這個名字最早出現在MartinFowler寫的《Refactoring:》這本書中。
Refactoring主要是努力減少程序和設計中重復出現的部分,增強程序和設計的可重用性。Refactoring的概念並不是XP首創的,它已經被提出了近30年了,而且一直被認為是高質量的代碼的特點之一。但XP強調,把Refactoring做到極致,應該隨時隨地、盡可能地進行Refactoring,只要有可能,程序員都不應該心疼以前寫的程序,而要毫不留情地改進程序。當然,每次改動後,程序員都應該運行測試程序,保證新系統仍然符合預定的要求。
4頻繁地整合,集體擁有代碼(CollectiveCodeOwnership),編程規范
XP開發小組經常整合不同的模塊。為了提高軟體質量,除了測試驅動開發和PairProgramming以外,XP要求每個人的代碼都要遵守編程規范,任何人都可以修改其他人寫的代碼,而且所有人都應該主動檢查其他人寫的代碼。
頻繁地整合(Integration)
在很多項目中,開發人員往往很遲才把各個模塊整合在一起。在這些項目中,開發人員經常在整合過程中發現很多問題,但不能肯定到底是誰的程序出了問題;而且,只有整合完成後,開發人員才開始稍稍使用整個系統,然後就馬上交付給客戶驗收。對於客戶來說,即使這些系統能夠通過終驗收測試,因為使用時間短,客戶門心裡並沒有多少把握。
為了解決這些問題,XP提出,整個項目過程中,應該頻繁地,盡可能地整合已經開發完的USERSTORY(每次整合一個新的USERSTORY)。每次整合,都要運行相應的單元測試和驗收測試,保證符合客戶和開發的要求。整合後,就發布一個新的應用系統。這樣,整個項目開發過程中,幾乎每隔一兩天,都會發布一個新系統,有時甚至會一天發布好幾個版本。通過這個過程,客戶能非常清楚地掌握已經完成的功能和開發進度,並基於這些情況和開發人員進行有效地、及時地交流,以確保項目順利完成。
集體擁有代碼(CollectiveCodeOwnership)
在很多項目開發過程中,開發人員只維護自己的代碼,而且很多人不喜歡其他人隨意修改自己的代碼。因此,即使可能有相應的比較詳細的開發文檔,但一個程序員卻很少、也不太願意去讀其他程序員的代碼;而且,因為不清楚其他人的程序到底實現了什麼功能,一個程序員一般也不敢隨便改動其他人的代碼。同時,因為是自己維護自己的代碼,可能因為時間緊張或技術水平的局限性,某些問題一直不能被發現或得到比較好的解決。針對這點,XP提倡大家共同擁有代碼,每個人都有權利和義務閱讀其他代碼,發現和糾正錯誤,重整和優化代碼。這樣,這些代碼就不僅僅是一兩個人寫的,而是由整個項目開發隊伍共同完成的,錯誤會減少很多,重用性會盡可能地得到提高,代碼質量是非常好。
為了防止修改其他人的代碼而引起系統崩潰,每個人在修改後都應該運行測試程序。(從這點,我們可以再次看到,XP的各個慣例和規則是怎樣有機地結合在一起的。)
編程規范
XP開發小組中的所有人都遵循一個統一的編程標准,因此,所有的代碼看起來好像是一個人寫的。因為有了統一的編程規范,每個程序員更加容易讀懂其他人寫的代碼,這是是實現CollectiveCodeOwnership的重要前提之一。
5Metaphor(系統比喻),不加班
XP過程通過使用一些形象的比喻讓所有人對系統有個共同的、簡潔的認識。XP認為加班是不正常的,因為這說明關於項目進度的估計和安排有問題。
Metaphor(系統比喻)
為了幫助每個人一致清楚地理解要完成的客戶需求、要開發的系統功能,XP開發小組用很多形象的比喻來描述系統或功能模塊是怎樣工作的。比如,對於一個搜索引擎,它的Metaphor可能就是「一大群蜘蛛,在網上四處尋找要捕捉的東西,然後把東西帶回巢穴。」
不加班
大量的加班意味著原來的計劃是不準確的,或者是程序遠不清楚自己到底什麼時候能完成什麼工作。而且,開發管理人員和客戶也因此無法准確掌握開發速度;開發人員也因此非常疲勞。XP認為,如果出現大量的加班現象,開發管理人員(比如Coach)應該和客戶一起確定加班的原因,並及時調整項目計劃、進度和資源。
XP中一些基本概念的簡介
UserStory:開發人員要求客戶把所有的需求寫成一個個獨立的小故事,每個只需要幾天時間就可以完成。開發過程中,客戶可以隨時提出新的UserStory,或者更改以前的UserStory。
StoryEstimates和開發速度:開發小組對每個UserStory進行估算,並根據每個開發周期(Iteration)中的實際情況反復計算開發速度。這樣,開發人員和客戶能知道每個星期到底能開發多少UserStory。
ReleasePlan和ReleaseScope:整個開發過程中,開發人員將不斷地發布新版本。開發人員和客戶一起確定每個發布所包含的UserStory。
Iteration(開發周期)和IterationPlan:在一個Release過程中,開發人員要求客戶選擇最有價值的UserStory作為未來一兩個星期的開發內容。
TheSeed:第一個開發周期(Iteration)完成後,提交給客戶的系統。雖然這不是最終的產品,但它已經實現了幾個客戶認為是最重要的Story,開發人員將逐步在其基礎上增加新的模塊。
ContinuousIntegration(整合):把開發完的UserStory的模塊一個個拼裝起來,一步步接近乃至最終完成最終產品。
驗收測試(功能測試):對於每個UserStory,客戶將定義一些測試案例,開發人員將使運行這些測試案例的過程自動化。
UnitTest(單元測試):在開始寫程序前,程序員針對大部分類的方法,先寫出相應的測試程序。
Refactoring(重整和優化):去掉代碼中的冗餘部分,增加代碼的可重用性和伸縮性。
小結
XP的一個成功因素是重視客戶的反饋——開發的目的就是為了滿足客戶的需要。XP方法使開發人員始終都能自信地面對客戶需求的變化。XP強調團隊合作,經理、客戶和開發人員都是開發團隊中的一員。團隊通過相互之間的充分交流和合作,使用XP這種簡單但有效的方式,努力開發出高質量的軟體。XP的設計簡單而高效;程序員們通過測試獲得客戶反饋,並根據變化修改代碼和設計,他們總是爭取盡可能早地將軟體交付給客戶。XP程序員能夠勇於面對需求和技術上的變化。
XP很象一個由很多小塊拼起來的智力拚圖,單獨看每一小塊都沒有什麼意義,但拼裝好後,一幅美麗的圖畫就會呈現在你面前。
『玖』 想做程序員,學哪種語言好
其實這里說的語言也就是我們所熟知的編程語言。編程語言俗稱「計算機語言」,種類非常的多,總的來說可以分成機器語言、匯編語言、高級語言三大類。程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。
如今IT行業如此火爆必然吸引了很多人想加入其中,那麼如此多的編程語言,我們該如何選擇學習呢?究竟哪種編程語言或者哪些編程語言能在工作中給予我們最大的幫助?下面我就以TIOBE編程語言榜流行度較高的編程語言為例,詳細為大家解答一下主流編程的用途,希望能對大家的編程語言學習有一定的借鑒意義。
Java 佔比16.8%
Java是一種簡單的,跨平台的,面向對象的,分布式的,動態的語言。時至今日,Java依舊是在科學應用中最好選擇,包括自然語言處理。同時Java是默認的軟體行業的應用程序開發語言,在金融服務行業的大量使用,投資銀行和電子商務應用空間也非常之大。
C語言 佔比14.9%
C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。主要用於嵌入式開發,操作系統開發,文字處理程序開發等。它對編寫程序限制少,靈活性大,功能強。現在C語言不僅用來編寫系統軟體,也用來編寫應用軟體。
C++ 佔比7.4%
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點,的面向對象的程序設計。很多游戲或者互聯網公司的後台伺服器程序都是基於C++開發的,在科學計算領域,近年C++憑借先進的數值計算庫、泛型編程等優勢在這一領域也應用頗多。
Python 佔比6.9%
Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。Python具有豐富和強大的庫。它常被昵稱為膠水,能夠把用其他語言製作的各種模塊很輕松地聯結在一起。在神經網路、深度學習方面,Python都能夠找到比較成熟的包來加以調用。而且Python是面向對象的動態語言,且適用於科學計算,這就使得Python在人工智慧方面備受青睞。
C# 佔比3.5%
C#是一種安全的、穩定的、簡單的、優雅的,由C和C++衍生出來的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性。主要用於客戶端應用程序、web應用。在數據處理方面有著很好的模型與框架,靈活多變的資料庫管理模式。支持多處理器多核的非同步任務模型,多個非同步任務之間可以自由調控,可以自行安排各個線程的執行順序。
最終選擇哪種編程語言學習,決定權還是在自己手中,希望大家通過仔細評估,結合自己的興趣和職業規劃作出最明智的學習選擇。