《程序開發(fā)心理學(xué)》第講_第1頁
《程序開發(fā)心理學(xué)》第講_第2頁
《程序開發(fā)心理學(xué)》第講_第3頁
《程序開發(fā)心理學(xué)》第講_第4頁
《程序開發(fā)心理學(xué)》第講_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 32學(xué)時 (理論8 +討論8實驗16)學(xué)習(xí)本課程,應(yīng)該注重從心理層面探討:什么樣的管理人員、人力資源經(jīng)理、文檔撰寫人員、程序員才堪稱是 怎樣才能打造出優(yōu)秀的開發(fā)團隊?優(yōu)秀的開發(fā)團隊?平時考核(50)項目業(yè)績討論課的報告每一次的小組作業(yè)完成情況 如果使用的是有缺陷的或者設(shè)計不良的工具,那么,即使是最好的工匠,也只能制造出低劣的產(chǎn)品,并淪為拙劣的工匠。機器語言、匯編語言、高級語言、開發(fā)平臺 。國內(nèi)很少有研究編程語言的,即便是溫伯格從事的操作系統(tǒng)、調(diào)試工具、性能分析程序、等等系統(tǒng)工具,也很少有研究。我們這個學(xué)科的落后,決定了我們絕大部分專業(yè)人員從事面向領(lǐng)域應(yīng)用的研究工作。 1.1.1 1.1.1

2、程序開發(fā)語言是什么程序開發(fā)語言是什么 程序開發(fā)語言,本質(zhì)上只是一種與計算機交流的符號系統(tǒng)。只是看上去像是一種語言(英語)而把它叫做程序開發(fā)語言。 我們知道,數(shù)學(xué)符號體系不是語言,只是看上去像是語言而已。因此,程序開發(fā)語言的概念實際上是與程序開發(fā)這一想法本身一同出現(xiàn)的。 “真正試著去理解關(guān)于程序開發(fā)以及程序開發(fā)語言的所有方理解關(guān)于程序開發(fā)以及程序開發(fā)語言的所有方面面”,這種想法很好,但是,什么是所有方面呢? 盡快寫出代碼,是培養(yǎng)業(yè)余程序員的做法盡快寫出代碼,是培養(yǎng)業(yè)余程序員的做法。 1.1.2 1.1.2 程序開發(fā)語言與自然語言程序開發(fā)語言與自然語言 我們用Hockett 給出的人類自然語言13

3、項結(jié)構(gòu)特征,來比較自然語言與程序開發(fā)語言: 第一,聽說信道第一,聽說信道口語具有口語具有 “我說你聽我說你聽”的聽說信道特征;程序開發(fā)語言(如FORTRAN)是書面語言,離開黑板、紙筆,很難用程序開發(fā)語言討論,如口述代碼,將無法交流。因此程序開發(fā)語言不具程序開發(fā)語言不具有聽說信道特征有聽說信道特征。第二,迅速消失第二,迅速消失口語具有迅速消失的特點口語具有迅速消失的特點,用程序開發(fā)語言交流程序開發(fā)語言交流則不能迅速消失則不能迅速消失,需要提前做好“什么可以消失了”的準(zhǔn)備(程序區(qū)域、臨時數(shù)據(jù)區(qū)、全程數(shù)據(jù)區(qū)域、永久數(shù)據(jù)區(qū)域等等)第三,廣播發(fā)送和定向接收第三,廣播發(fā)送和定向接收人們說話時聲音會向各個

4、方向傳遞,我們能夠判斷聲音是從哪個方向傳來的,因此自然語言是廣播發(fā)送自然語言是廣播發(fā)送的的;而程序開發(fā)就像祈禱一樣程序開發(fā)就像祈禱一樣,是“”的。第四,可互換性第四,可互換性這也許是自然語言和程序開發(fā)語言的真正差別所在。不論用什么語言交流時,每個人的大腦里都能夠把理解的每個人的大腦里都能夠把理解的東西再現(xiàn)出來東西再現(xiàn)出來;但是,使用程序開發(fā)語言程序開發(fā)語言的計算機卻不能理解其它語言,它程序開發(fā)語言只能使用當(dāng)前自己的一種內(nèi)部語言只能使用當(dāng)前自己的一種內(nèi)部語言,不論你寫的程序什么樣,有沒有,有多少錯誤,統(tǒng)統(tǒng)都以它的語言來理解,當(dāng)它“胡言亂語”時,往往是有重要的事情說給你的時候。第五,構(gòu)詞能力第五,

5、構(gòu)詞能力既,是。 1.1.1.1. 程序開發(fā)語言與自然語言程序開發(fā)語言與自然語言 第一,表達(dá)情緒功能第一,表達(dá)情緒功能自然語言表達(dá)情緒時,如“你好”、“胡說!”;計算機情緒不外露,有時簡單地說“XXX錯了”,“死機”,這是它最強烈的情緒化語言。這兩部是程序語言的主體,自然語言中它們也很常見。第四,元語言第四,元語言元語言語句是用來說明語言的。程序開發(fā)語言以自然語言作為元語言,可能還要用到一點兒數(shù)學(xué)。 第五,詩歌第五,詩歌自然語言的詩歌化好像沒有必要在程序開發(fā)語言中存在,而從審美的角度看,程序開發(fā)語言的形式美,還是很明確的。真正的程序員會時而把自己的程序當(dāng)成藝術(shù)作品來看待,他追求思路清晰流暢、層

6、次分明、簡便精巧、便于理解、其他性能優(yōu)良等等。這些指標(biāo)和藝術(shù)指標(biāo)完全一致,你能說這樣的程序不藝術(shù)嗎?而這些指標(biāo)的反義方面,必是混亂的、難以想象的程序。 第六,交際第六,交際自然語言類似于“呃嗯.但是而且”等等,用作保持交流狀態(tài);計算機則是“時不時地敲擊上檔鍵” “真正試著去理解關(guān)于程序開發(fā)以及程序開發(fā)語言的所有方面”,這種想法很好,但是,什么是所有方面呢?盡快寫出代碼,是培養(yǎng)業(yè)余程序員的做法。程序開發(fā)最多不過是兩個不同物種之間的交流,程序開發(fā)語言以及所有系統(tǒng)設(shè)備不過是為了讓這種交流對其中一個物種(人)而言變得簡單容易一些的工具。其實,背后,有一些,。有一些我們能夠闡明的、不針對某種語言的一些原

7、則(),可以幫助我們學(xué)習(xí)程序開發(fā)語言。這樣,可以舉一反三地學(xué)習(xí)多門語言,使得學(xué)習(xí)新語言變得不難么痛苦。 但是,問題的另一方面:但是,問題的另一方面: 我們只能要求程序開發(fā)語言更“自然”一些,以便于我們的表達(dá)方式與表達(dá)者的思想?yún)f(xié)調(diào)一致。不論怎樣,我們都必須適應(yīng)計算機。 事實上,人類的每個發(fā)明創(chuàng)造都改變了人類自身人類的每個發(fā)明創(chuàng)造都改變了人類自身。1.2.1 1.2.1 程序開發(fā)語言的程序開發(fā)語言的 命令與陳述命令與陳述這兩部是程序語言的主體,自然語言中它們也很常見。 構(gòu)詞能力構(gòu)詞能力既表達(dá)從未有過的事物能力,是程序開發(fā)語言不可或缺的,而且很成功。例如:表述概念的(陳述語句)例如:表述概念的(陳述

8、語句) 設(shè)是概念,等等,而概念是怎樣的還可以遞歸地表述為是概念,直到用一個符號表征了的具體某個值得關(guān)注的物理性質(zhì)或存在狀態(tài)的某種“征量”,這是科學(xué)作為解決問題的基礎(chǔ)離開了這種征量,科學(xué)將無以為繼。例如:表述做什么(命令語句)例如:表述做什么(命令語句) 通常,計算機并不能直接做什么,它只能把做什么以某個表征這個動作的信號輸出給外部設(shè)備,由這個設(shè)備來實現(xiàn),如啟動電機、放開制動器、左轉(zhuǎn)度等等。 很多時候,我們做一件事情,可以順次地、或并行地做一系列事物,逐步地就把這件事情做完了,例如:做邏輯判斷(命令語句的祈使句范式)例如:做邏輯判斷(命令語句的祈使句范式) 但是,通常做任何事情都是在某個條件成立

9、的時候才可以的,最常見的基本框架是If A=1Then Do B Else Do C ,并且,其表達(dá)一個未知事物的“隨意度”是很高的,同一件事情讓不同的設(shè)計者來設(shè)計其表述方案,幾乎是很難重樣。我們希望程序開發(fā)語言在不失隨意性的前提下,做適當(dāng)?shù)募s束,以便于理解各自的方案,表征為一致性、簡潔性、局部性與線性等等 1.2.2 1.2.2 程序開發(fā)語言的一些約束程序開發(fā)語言的一些約束一致性一致性不管在哪里,同一件事應(yīng)該以同一種方式完成。一致性的對立面包括:一致性的對立面包括:在不同程序開發(fā)語言中,字符串、表達(dá)式、下標(biāo)、循環(huán)、括號、/算術(shù)符號的運用、等等有許多似是而非的“一致性”,這增加了學(xué)習(xí)語言的難度

10、。使程序員困惑(本來不應(yīng)該對他們的程序開發(fā)語言感到困惑的)二義性就是程序員非??謶值模篈 = B/C*D,自左向右?還是 自右向左?編譯器可以適當(dāng)?shù)卦黾泳幾g時的交互信息,這樣就不用學(xué)習(xí)時感到“恐懼”了程序員制造的二義性:變量命名,令人不解。無法閱讀。二義性可能給調(diào)試帶來更多的麻煩,甚至是災(zāi)難!簡潔性簡潔性 人類頭腦的局限性決定了我們理解東西的局限性。理解較短的程序,比理解較長的程序容易。因為,較短的程序所含有的邏輯意義相對較少,所以容易些。 簡潔性的對立面包括:簡潔性的對立面包括:字符個數(shù)多,或是表征的意義不明確。人們理解一個個組塊,并藉此構(gòu)建更大、更多的組塊,用組塊構(gòu)建程序的結(jié)果,使得程序在

11、整體上更加簡潔了。函數(shù)、過程等就是為了簡潔性而定義的程序開發(fā)語言要素。設(shè)計不同的數(shù)據(jù)結(jié)構(gòu),也是為了獲得程序簡潔性的考慮。程序開發(fā)語言的通用性,作為普遍要求,決定了程序開發(fā)語言不能夠無限制的提供簡潔性,而把數(shù)據(jù)結(jié)構(gòu)定義得十分繁瑣。局部性與線性局部性與線性 好的程序,其框架結(jié)構(gòu)適應(yīng)程序員的聯(lián)覺記憶特征和順序記憶特征,這樣才便于理解。聯(lián)覺記憶讓我們能夠在匆匆一瞥之間,將事物作為一個整體來記?。嫒荩?;在一個程序中,對應(yīng)于聯(lián)覺記憶的是“局部性局部性”的概念,既的概念,既在在同一個地方同一個地方(如同一頁),(如同一頁), 找到找到一個程序一個程序所有相關(guān)部分所有相關(guān)部分,否則,查看程序清單就要來回地翻

12、頁,而翻頁的紛繁信息擾亂了記憶的程序信息,影響了分析的精準(zhǔn)程度;順序記憶是一個單方向的鏈條,只有沿途而行,才知道下沿途而行,才知道下一個環(huán)節(jié)該是什么一個環(huán)節(jié)該是什么,而難以任意指定某個環(huán)節(jié)(如唱歌)。嚴(yán)格按照線性順序編排的一系列判斷,要比有分支或循環(huán)的序列更容易處理;不要用GOTO語句,這樣,我們的程序就不具有局部性和線性特點了。 這里的話題是:根據(jù)某些認(rèn)識(組織的、和心理的),為程序調(diào)試、運行管理(分時和批處理)以及文檔工作,設(shè)計出更好的工具。本課程,僅就程序調(diào)試、文檔寫作等內(nèi)容做討論。 1.3.1 1.3.1 程序測試工具程序測試工具完全排除錯誤幾乎是一件不可能完成的任務(wù)。如何建立對某個程

13、序“是否還有錯誤”的信心呢?這是一個心理層面的問題,技術(shù)上只能得到些支持,但是,不能簡單地依靠它。測試工具可以幫助我們回答這樣的問題:我們做了那些測試?覆蓋了多大范圍?程序應(yīng)該程序應(yīng)該盡可能地具有緊湊性、局部性。免除邏輯和免除邏輯和參數(shù)波及更大的范圍參數(shù)波及更大的范圍。否則,程序?qū)⒏与y以測試。緊湊性、局部性 “變量引用的平均距離” 引用處(頁碼) 聲明處(頁碼)變量的引用次數(shù)很多或很少,揭示了這個變量是否有必要存在,以及,程序代碼的一致性、緊湊性等指標(biāo)。N1,N2,N3,Nm,,這樣命名的標(biāo)量,可能使得對于他們的引用具有了緊湊性,但是,不如引用一個數(shù)組。這是一個典型程序開發(fā)心理學(xué)的問題。1.

14、3.2 1.3.2 程序程序文檔文檔 文檔的作用是希望幫助閱讀者理解程序。不同讀者有不同的需求,沒有哪種文檔對所有讀者都適用。應(yīng)設(shè)定適度的目標(biāo),一遍區(qū)別對待普通文檔和針對特殊讀者去編寫特別用途的文檔。一般說來,文檔應(yīng)該具備如下內(nèi)容:文檔,首先要告訴讀者它需要具備的知識(包括技術(shù)背景和領(lǐng)域知識背景) 程序流程圖是軟件文檔的重要內(nèi)容,但不是全部。應(yīng)該是先畫流程圖后寫代碼,還是先撰寫代碼然后再由流程圖自動生成器來生成呢?不是隨便什么人(只要能夠?qū)懳恼?都可以寫出好文檔的。誰會使用這份文檔? 它將如何被使用? 使用者在哪里使用? 它將被使用多長時間? 1、把關(guān)鍵字或非關(guān)鍵字設(shè)置為粗體、小寫 ,總之,區(qū)別這兩者。2、替換二義性的符號、區(qū)分不同嵌套層次的括號3、撰寫比較清晰的程序注釋4、給出變量的中文注釋、和縮寫注釋給出變量的中文注釋、和縮寫注釋5、給出變量的引用指示,說明它們

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論