當前位置:首頁 » 編程軟體 » 編程講座標題

編程講座標題

發布時間: 2022-12-22 14:41:18

『壹』 c語言的問題一個

January 2006 日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

熱 點 日 志

基於VC++的OpenGL編程講座之
VC與Matlab介面編程之Matc
基於VC++的OpenGL編程講座之
基於VC++的OpenGL編程講座之
如何編寫對文件按位元組寫入的程序
VC++實現單文檔程序的全屏顯示及恢
使用內存映射文件來提高你程序的性能
編程實現關閉討厭的彈出窗口
用VC實現特定編輯框上對回車鍵響應
讓你的軟體界面更漂亮

最 新 評 論

我 的 朋 友 圈

博 客 統 計

日誌總數:13
評論數量:0
留言數量:0
訪問次數:85
加為好友 發送簡訊

登 錄 信 息

用戶名:
密 碼:
記住密碼
用戶注冊 忘記密碼

友 情 鏈 接

RSS內容聚合

首頁 | 上一篇 | 下一篇 基於VC++的OpenGL編程講座之坐標變換

--------------------------------------------------------------------------------
By nitte 發表於 2006-1-10 18:36:00

OpenGL通過相機模擬、可以實現計算機圖形學中最基本的三維變換,即幾何變換、投影變換、裁剪變換、視口變換等,同時,OpenGL還實現了矩陣堆棧等。理解掌握了有關坐標變換的內容,就算真正走進了精彩地三維世界。

一、OpenGL中的三維物體的顯示

(一)坐標系統

在現實世界中,所有的物體都具有三維特徵,但計算機本身只能處理數字,顯示二維的圖形,將三維物體及二維數據聯系在一起的唯一紐帶就是坐標。

為了使被顯示的三維物體數字化,要在被顯示的物體所在的空間中定義一個坐標系。這個坐標系的長度單位和坐標軸的方向要適合對被顯示物體的描述,這個坐標系稱為世界坐標系。世界坐標系是始終固定不變的。

OpenGL還定義了局部坐標系的概念,所謂局部坐標系,也就是坐標系以物體的中心為坐標原點,物體的旋轉或平移等操作都是圍繞局部坐標系進行的,這時,當物體模型進行旋轉或平移等操作時,局部坐標系也執行相應的旋轉或平移操作。需要注意的是,如果對物體模型進行縮放操作,則局部坐標系也要進行相應的縮放,如果縮放比例在案各坐標軸上不同,那麼再經過旋轉操作後,局部坐標軸之間可能不再相互垂直。無論是在世界坐標系中進行轉換還是在局部坐標系中進行轉換,程序代碼是相同的,只是不同的坐標系考慮的轉換方式不同罷了。

計算機對數字化的顯示物體作了加工處理後,要在圖形顯示器上顯示,這就要在圖形顯示器屏幕上定義一個二維直角坐標系,這個坐標系稱為屏幕坐標系。這個坐標系坐標軸的方向通常取成平行於屏幕的邊緣,坐標原點取在左下角,長度單位常取成一個象素。

(二)三維物體的相機模擬

為了說明在三維物體到二維圖象之間,需要經過什麼樣的變換,我們引入了相機(Camera)模擬的方式,假定用相機來拍攝這個世界,那麼在相機的取景器中,就存在人眼和現實世界之間的一個變換過程。

圖一、相機模擬OpenGL中的各種坐標變換

從三維物體到二維圖象,就如同用相機拍照一樣,通常都要經歷以下幾個步驟:

1、將相機置於三角架上,讓它對准三維景物,它相當於OpenGL中調整視點的位置,即視點變換(Viewing Transformation)。

2、將三維物體放在場景中的適當位置,它相當於OpenGL中的模型變換(Modeling Transformation),即對模型進行旋轉、平移和縮放。

3、選擇相機鏡頭並調焦,使三維物體投影在二維膠片上,它相當於OpenGL中把三維模型投影到二維屏幕上的過程,即OpenGL的投影變換(Projection Transformation),OpenGL中投影的方法有兩種,即正射投影和透視投影。為了使顯示的物體能以合適的位置、大小和方向顯示出來,必須要通過投影。有時為了突出圖形的一部分,只把圖形的某一部分顯示出來,這時可以定義一個三維視景體(Viewing Volume)。正射投影時一般是一個長方體的視景體,透視投影時一般是一個稜台似的視景體。只有視景體內的物體能被投影在顯示平面上,其他部分則不能。

4、沖洗底片,決定二維相片的大小,它相當與OpenGL中的視口變換(Viewport Transformation)(在屏幕窗口內可以定義一個矩形,稱為視口(Viewport),視景體投影後的圖形就在視口內顯示)規定屏幕上顯示場景的范圍和尺寸。

通過上面的幾個步驟,一個三維空間里的物體就可以用相應的二維平面物體表示了,也就能在二維的電腦屏幕上正確顯示了。總的來說,三維物體的顯示過程如下:

圖二、三維物體的顯示過程

二、OpenGL中的幾種變換

OpenGL中的各種轉換是通過矩陣運算實現的,具體的說,就是當發出一個轉換命令時,該命令會生成一個4X4階的轉換矩陣(OpenGL中的物體坐標一律採用齊次坐標,即(x, y, z, w),故所有變換矩陣都採用4X4矩陣),當前矩陣與這個轉換矩陣相乘,從而生成新的當前矩陣。例如,對於頂點坐標v ,轉換命令通常在頂點坐標命令之前發出,若當前矩陣為C,轉換命令構成的矩陣為M,則發出轉換命令後,生成的新的當前矩陣為CM,這個矩陣再乘以頂點坐標v,從而構成新的頂點坐標CMv。上述過程說明,程序中繪制頂點前的最後一個變換命令最先作用於頂點之上。這同時也說明,OpenGL編程中,實際的變換順序與指定的順序是相反的。

(一)視點變換

視點變換確定了場景中物體的視點位置和方向,就向上邊提到的,它象是在場景中放置了一架照相機,讓相機對准要拍攝的物體。確省時,相機(即視點)定位在坐標系的原點(相機初始方向都指向Z負軸),它同物體模型的預設位置是一致的,顯然,如果不進行視點變換,相機和物體是重疊在一起的。

執行視點變換的命令和執行模型轉換的命令是相同的,想一想,在用相機拍攝物體時,我們可以保持物體的位置不動,而將相機移離物體,這就相當於視點變換;另外,我們也可以保持相機的固定位置,將物體移離相機,這就相當於模型轉換。這樣,在OpenGL中,以逆時針旋轉物體就相當於以順時針旋轉相機。因此,我們必須把視點轉換和模型轉換結合在一起考慮,而對這兩種轉換單獨進行考慮是毫無意義的。
除了用模型轉換命令執行視點轉換之外,OpenGL實用庫還提供了gluLookAt()函數,該函數有三個變數,分別定義了視點的位置、相機瞄準方向的參考點以及相機的向上方向。該函數的原型為:

void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble upx,GLdouble upy,GLdouble upz);

該函數定義了視點矩陣,並用該矩陣乘以當前矩陣。eyex,eyey,eyez定義了視點的位置;centerx、centery和centerz變數指定了參考點的位置,該點通常為相機所瞄準的場景中心軸線上的點;upx、upy、upz變數指定了向上向量的方向。

通常,視點轉換操作在模型轉換操作之前發出,以便模型轉換先對物體發生作用。場景中物體的頂點經過模型轉換之後移動到所希望的位置,然後再對場景進行視點定位等操作。模型轉換和視點轉換共同構成模型視景矩陣。

(二)模型變換

模型變換是在世界坐標系中進行的。預設時,物體模型的中心定位在坐標系的中心處。OpenGL在這個坐標系中,有三個命令,可以模型變換。

1、模型平移

glTranslate{fd}(TYPE x,TYPE y,TYPE z);

該函數用指定的x,y,z值沿著x軸、y軸、z軸平移物體(或按照相同的量值移動局部坐標系)。

2、模型旋轉

glRotate{fd}(TYPE angle,TYPE x,TYPE,y,TYPE z);

該函數中第一個變數angle制定模型旋轉的角度,單位為度,後三個變數表示以原點(0,0,0)到點(x,y,z)的連線為軸線逆時針旋轉物體。例如,glRotatef(45.0,0.0,0.0,1.0)的結果是繞z軸旋轉45度。

3、模型縮放

glScale{fd}(TYPE x,TYPE y,TYPE z);

該函數可以對物體沿著x,y,z軸分別進行放大縮小。函數中的三個參數分別是x、y、z軸方向的比例變換因子。預設時都為1.0,即物體沒變化。程序中物體Y軸比例為2.0,其餘都為1.0,就是說將立方體變成長方體。

(三)投影變換

經過模型視景的轉換後,場景中的物體放在了所希望的位置上,但由於顯示器只能用二維圖象顯示三維物體,因此就要靠投影來降低維數(投影變換類似於選擇相機的鏡頭)。

事實上,投影變換的目的就是定義一個視景體,使得視景體外多餘的部分裁剪掉,最終進入圖像的只是視景體內的有關部分。投影包括透視投影(Perspective Projection)和正視投影(Orthographic Projection)兩種。

透視投影,符合人們心理習慣,即離視點近的物體大,離視點遠的物體小,遠到極點即為消失,成為滅點。它的視景體類似於一個頂部和底部都被進行切割過的棱椎,也就是稜台。這個投影通常用於動畫、視覺模擬以及其它許多具有真實性反映的方面。

OpenGL透視投影函數有兩個,其中函數glFrustum()的原型為:

void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);

它創建一個透視視景體。其操作是創建一個透視投影矩陣,並且用這個矩陣乘以當前矩陣。這個函數的參數只定義近裁剪平面的左下角點和右上角點的三維空間坐標,即(left,bottom,-near)和(right,top,-near);最後一個參數far是遠裁剪平面的Z負值,其左下角點和右上角點空間坐標由函數根據透視投影原理自動生成。near和far表示離視點的遠近,它們總為正值。該函數形成的視景體如圖三所示。

圖三、透視投影視景體

另一個透視函數是:

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);

它也創建一個對稱透視視景體,但它的參數定義於前面的不同,參數fovy定義視野在X-Z平面的角度,范圍是[0.0, 180.0];參數aspect是投影平面寬度與高度的比率;參數zNear和Far分別是遠近裁剪面沿Z負軸到視點的距離,它們總為正值。

圖四、透視投影視景體

以上兩個函數預設時,視點都在原點,視線沿Z軸指向負方向。

正射投影,又叫平行投影。這種投影的視景體是一個矩形的平行管道,也就是一個長方體,如圖五所示。正射投影的最大一個特點是無論物體距離相機多遠,投影後的物體大小尺寸不變。這種投影通常用在建築藍圖繪制和計算機輔助設計等方面,這些行業要求投影後的物體尺寸及相互間的角度不變,以便施工或製造時物體比例大小正確。

圖五、正射投影視景體

OpenGL正射投影函數也有兩個,一個函數是:

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top, GLdouble near,GLdouble far)

它創建一個平行視景體。實際上這個函數的操作是創建一個正射投影矩陣,並且用這個矩陣乘以當前矩陣。其中近裁剪平面是一個矩形,矩形左下角點三維空間坐標是(left,bottom,-near),右上角點是(right,top,-near);遠裁剪平面也是一個矩形,左下角點空間坐標是(left,bottom,-far),右上角點是(right,top,-far)。所有的near和far值同時為正或同時為負。如果沒有其他變換,正射投影的方向平行於Z軸,且視點朝向Z負軸。這意味著物體在視點前面時far和near都為負值,物體在視點後面時far和near都為正值。

另一個函數是:

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

它是一個特殊的正射投影函數,主要用於二維圖像到二維屏幕上的投影。它的near和far預設值分別為-1.0和1.0,所有二維物體的Z坐標都為0.0。因此它的裁剪面是一個左下角點為(left,bottom)、右上角點為(right,top)的矩形。

(四)視口變換。

視口變換就是將視景體內投影的物體顯示在二維的視口平面上。運用相機模擬方式,我們很容易理解視口變換就是類似於照片的放大與縮小。在計算機圖形學中,它的定義是將經過幾何變換、投影變換和裁剪變換後的物體顯示於屏幕窗口內指定的區域內,這個區域通常為矩形,稱為視口。OpenGL中相關函數是:

glViewport(GLint x,GLint y,GLsizei width, GLsizei height);

這個函數定義一個視口。函數參數(x, y)是視口在屏幕窗口坐標系中的左下角點坐標,參數width和height分別是視口的寬度和高度。預設時,參數值即(0, 0, winWidth, winHeight) 指的是屏幕窗口的實際尺寸大小。所有這些值都是以象素為單位,全為整型數。

(5)裁剪變換

在OpenGL中,除了視景體定義的六個裁剪平面(上、下、左、右、前、後)外,用戶還可自己再定義一個或多個附加裁剪平面,以去掉場景中無關的目標,如圖六所示。

圖六、附加裁剪平面

附加平面裁剪函數為:

1、void glClipPlane(GLenum plane,Const GLdouble *equation);

函數參數equation指向一個擁有四個系數值的數組,這四個系數分別是裁剪平面Ax+By+Cz+D=0的A、B、C、D值。因此,由這四個系數就能確定一個裁剪平面。參數plane是GL_CLIP_PLANEi(i=0,1,...),指定裁剪面號。

在調用附加裁剪函數之前,必須先啟動glEnable(GL_CLIP_PLANEi),使得當前所定義的裁剪平面有效;當不再調用某個附加裁剪平面時,可用glDisable(GL_CLIP_PLANEi)關閉相應的附加裁剪功能。

下面這個例子不僅說明了附加裁剪函數的用法,而且調用了gluPerspective()透視投影函數,讀者可以細細體會其中的用法。常式如下:

#i nclude "glos.h"
#i nclude <GL/gl.h>
#i nclude <GL/glu.h>
#i nclude <GL/glaux.h>
void myinit(void);
void CALLBACK myReshape(GLsizei w, GLsizei h);
void CALLBACK display(void);
void CALLBACK display(void)
{
GLdouble eqn[4] = {1.0, 0.0, 0.0, 0.0};
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 0.0, 1.0);
glPushMatrix();
glTranslatef (0.0, 0.0, -5.0);
/* clip the left part of wire_sphere : x<0 */
glClipPlane (GL_CLIP_PLANE0, eqn);
glEnable (GL_CLIP_PLANE0);
glRotatef (-90.0, 1.0, 0.0, 0.0);
auxWireSphere(1.0);
glPopMatrix();
glFlush();
}
void myinit (void)
{
glShadeModel (GL_FLAT);
}
void CALLBACK myReshape(GLsizei w, GLsizei h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
}
void main(void)
{
auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
auxInitPosition (0, 0, 500, 500);
auxInitWindow ("Arbitrary Clipping Planes");
myinit ();
auxReshapeFunc (myReshape);
auxMainLoop(display);
}

閱讀全文(32) | 回復(0) | 引用通告(0) | 編輯 | 推薦

發表評論:昵稱:密碼: (遊客無須輸入密碼)主頁:標題: 字型大小1234567

心中的夢想 導航 : ChinaITLab | Cisco | Windows | Linux | java | Oracle | 論壇

中國IT實驗室博客首頁我的首頁 我的相冊VC隨寫(13) 心情隨筆(0)

人們回眸本世紀的滄桑巨變,心中棲息著許多期盼和夢想,其中最宏偉
壯麗、最朴實純真的夢想之一莫過於人類不再被拖入戰爭的深淵,化干戈為
玉帛,營造和維護一個和平、穩定、繁榮的世界.......

『貳』 歪歪的網路公益講座有哪些啊,免費的編程方面的 拜託各位大神

我看了天轟穿老師的歪歪的網路公益講座,聽風趣的,具體你可以去他學雲網的博客的上看看的。

『叄』 新生入學教育系列講座標題怎樣吸引

新生入學教育系列講座標題這樣寫吸引:在寫的時候,開場白(即前幾句)應該盡量的有些調侃,否則新生通常不會對你這後文感興趣。還有,一些道理盡量舉幾個有趣而且現在最流行的例子,貼近大家距離。

『肆』 健康教育講座有哪些標題

健康姐與講座有哪些標題江南教育講座有很多標題犀利。心理健康與能力。健康的重要性。

『伍』 華為自研編程語言「倉頡」開啟內測

華為自研編程語言「倉頡」開啟內測

華為自研編程語言「倉頡」開啟內測,華為2022年將推出自研的編程語言倉頡,將鴻蒙和歐拉在應用開發生態上進行打通,拓展系統的可能性。華為自研編程語言「倉頡」開啟內測。

華為自研編程語言「倉頡」開啟內測1

備受關注的華為自研編程語言「倉頡」,又火上熱搜了。

這次是因為「倉頡」正式開啟了內測,目前已經有部分開發者拿到源代碼。

前不久,華為編程語言實驗室發布了一份「新語言試用報名-202203」問卷,正式徵集一小批開發者對「倉頡」編程語言進行小范圍測試。

從問卷內容來看,開發者們需要填寫Gitee主頁、職業和公司等信息,然後等待郵件通知。

現在,隨著更多細節被透露出來,之前對於「倉頡」猜測的一些傳言,也有了明確的答案。

英文名Cangjie,並非中文編程

事實上,早在去年10月,華為官方就明確透露過「將發布自研鴻蒙編程語言」。

對此,華為消費者業務軟體部總裁龔體表示,它將「為鴻蒙生態基礎設施建設補上最後一環」。

同時,華為也已經申請注冊了「華為倉頡」、「倉頡語言」等商標,分類包括科學儀器、設計研究等,而部分「倉頡」商標則還在駁回復審、注冊申請的階段。

這里看到華為還注冊了一個叫「倉傑」的商標,目前也已經通過申請(手動狗頭):

△圖源@企查查APP

時間來到今年3月份。

隨著內測的開啟,部分開發者在拿到「倉頡」的源代碼後,也對此前漫天飛的猜測和傳言進行了一些回應。

其一,「倉頡」的英文名就是Cangjie,而不是此前傳聞的「char」。

當時華為被曝研發「倉頡」後,知乎就傳出過這門編程語言英文名是「char」的消息:

目前這個傳聞已經被辟謠。

其二,「倉頡」不是中文編程,也不存在所謂的「套殼」。

據知乎一位匿名用戶表示,體驗後發現「倉頡」編程語言「跟中文半點關系沒有」,語法類似go+java。

其實,現在隨手一搜還是能搜到一大堆關於「倉頡」是中文編程的假消息……

其三,之所以還在內測,是因為包括團隊和內測成員都還在改進代碼。

嗯,問就是還在修bug(手動狗頭)。

但其實,大家最好奇的還是「倉頡」這門編程語言究竟長啥樣。

事實上,此前華為編程語言實驗室主任、南京大學馮新宇教授,已經開設過一門關於《編程語言的設計和實現》的課程,目前華為官方已放出B站視頻。

華為官方開設過編程語言課程

在講座一開始,馮教授就透露了自己目前進行的一些工作。

具體來說,學術上的研究主要包括PL理論及應用等,而工業方面的研究,則主要是帶領華為編程語言實驗室進行工業編程語言的設計和實現:

在馮新宇教授給出的課件中可以看見,目前的編程語言類型主要可以分為以下幾種,其中著重提到了平台型語言:

像C#、Go、Swift這些開源編程語言,也都是由像谷歌、微軟和蘋果這樣的公司自己投入去做的`,以此掌控語言的技術演進策略和方向。

但華為「倉頡」究竟是一門怎樣的語言,目前還有待官方正式公開信息。

華為自研編程語言「倉頡」開啟內測2

16日,華為編程語言實驗室發布了一份「新語言試用報名-202203」問卷,面向部分開發者發布了華為新語言的試用報名問卷,開發者們需要填寫Gitee主頁、職業和公司等信息,然後等待郵件通知。

同時,在問卷填寫完成後,將通過郵件進行後續信息的通知。根據華為此前公布的內容來看,這款「新語言」,指的應該就是華為在2021年開發者大會上,公布的自研編程語言「倉頡」。

華為副總裁、計算產品線總裁鄧泰華曾2021年 9 月在接受采訪時表示,倉頡是華為根據HarmonyOS量身打造的編程語言,華為2022年將推出自研的編程語言倉頡,將鴻蒙和歐拉在應用開發生態上進行打通,拓展系統的可能性。華為消費者業務軟體部總裁龔體表示,它將「為鴻蒙生態基礎設施建設補上最後一環」。

隨著內測的開啟,部分開發者在拿到「倉頡」的源代碼後,在網上對之前各種謠言進行了回應和澄清:

第一,不是中文編程;

第二,不存在所謂的「套殼」;

第三,內測的原因歸根結底還是正在改進。

第四,「倉頡」的英文名是直譯「Cangjie」,不是「char」。

我們國家也應該有自己的編程語言了…

蘋果有Swift;

谷歌有Dart;

微軟有 TypeScript,它的作者安德斯·海爾斯伯格,是C#的首席架構師;

連小小捷克的JetBrian「噴氣腦」公司搞的Kotlin,這貨上天入地無所不能,是我目前知道的應用范圍最廣泛的語言……還有Julia近來也是掀起一股熱潮……我們國家也應該有自己的編程語言了…

9月初,微博博主「IT工程師」爆料華為正在研發自主編程語言「倉頡」,由南京大學的計算機科學與技術系博士生導師——馮新宇領銜開發。

華為自研編程語言並非秘密,華為在編譯器與編程語言方面早有動作。

方舟編譯器,就是華為在編譯器方向的研究成果之一。

2019年8月31日,華為在開源平台上放出了方舟編譯器的源代碼,這是華為首個完全自主研發的編譯器平台。

早前,在谷歌對華為封鎖GMS的時候,華為以「先見之明」在制裁不久後就發布了HMS,如今HMS全球開發者已經達到180萬,華為應用市場APP Galley全球活躍用戶也達到了4.9億,應用分發量達到2610億,成為全球第三的應用商店。

讓我們一起期待正式公布的那一天吧!

華為自研編程語言「倉頡」開啟內測3

華為編程語言實驗室,面向部分開發者發布了心得語言試用報名的問卷。在完成問卷的填寫後,會根據郵件進行後續信息的通知。

早在2020年9月的時候,有微博博主就曝光了,華為正在研發自主編程語「倉頡」,帶領整個團隊的是南京大學的博士導師馮新宇。在20年的時候就網傳「倉頡」是為了鴻蒙來的。

如今消息已經證實,確實「倉頡」是根據鴻蒙HarmonyOS量身打造的編程語言,通過「倉頡」鴻蒙和歐拉在應用開發生態上進行打通。

基於上面消息網友展開了廣泛討論,其中有一個網友說中文編程語言如果推廣開,可以降低編程的門檻,這是好事。但是其他網友炸鍋了:

也就是有網友認為我國編程語言是中文的,中文編程語言可以降低編程門檻。持反對意見的網友覺得「你學好中文了,你會寫書寫作文?」。

但是有一些表示自己是倉頡內測成員的網友來辟謠了。已經簽訂保密條款限制,目前只允許辟謠。首先非中文編程,從掌握的代碼的來看也不存在網傳的「套殼」。內側的根本原因就是還在改進。所謂內側人員不能泄露任何文檔、代碼風格,內側群聊等等相關消息。

而且倉頡的英文直譯是Cangjie;

『陸』 提高編程技能,你做過有效的事情是什麼

在stackexchange網站上看到了一個非常好的問答,有人問:你做過的有效的提高你的編程水平的一件事情是什麼?

回首作為一個程序員這些年來的生活和職業道路,我使用了很多種不同的方法來提高我的編程技能——閱讀代碼,編寫程序,閱讀書籍,聽講座,看視頻,等等。

我的問題是:你做過的有效的提高你的編程水平的一件事情是什麼?對於那些想提高水平的程序員,你的建議是什麼?

我希望你們提供的答案是各種各樣的,並且不是那種「放之四海而皆準」的答案——我希望得到適用於不同人的不同的答案。

有很多人給出了自己的答案,在這里,我將其中受認可的前三種答案選出來翻譯給大家。

受歡迎的回答:學無止境

沒有特別的先後次序?

和比自己更聰明的人一起工作

永遠樂意聽取他人的意見,不管對方是低級水平,一般水平,資深,還是大師。職稱頭銜並不代表一切。

學習其它的框架/語言,學習它們是的工作原理和思想,拿它們跟你已知的技術做比較。

學習各種設計模式,實踐理論,然後用它們檢查自己先前的知識,在需要的時候使用這些模式。

結對編程

反對Joel說的一切。


第二受歡迎的回答:成為多面手

爭取成為一個『多面手萬事通』

在我職業生涯的早期,我在一種資料庫和編程語言上是個專家。不幸的是,這種資料庫在「資料庫戰爭」中落敗了,我才發現我的職業道路?很窄。在此之後,我下定決心以後決不能把自己封在一個小空間里。我開始學習所有手頭上能接觸到的東西:Windows,Unix,C,C++,Java,C#,Perl,Python,Access,SQLServer,Oracle,Informix,MySQL,等等。不管什麼樣的新的,不常見的工具或技術,我都成為「大拿」——「去問克雷格(作者自己),他要是不會,他會去學會的。」結果,我做了各種各樣的項目,從為環境監測做嵌入式系統,到為導彈防禦做命令和控制系統。

我在各種的公司里唯一遇到的問題是:它們堅持要把我固定在一個專門的研究方向內,而我的專門研究是要成為一個多面手。[編輯:也叫做學識淵博的人或多才多藝的人或多領域專家。]

有些事情需要留意?高科技界里知識的半衰期是多少?根據摩爾定律(Moore』slaw):18-24月內,半數你學到的知識都會過時。錯誤的遵循這種規律的專家會輕易的在這種技術發展的壓力崩潰;一個多面手要做的事就是不斷的豐富自己的技能,並從應用這些技能的經歷中吸取教訓。

第三受歡迎的回答:不要跟臭棋簍子下棋

我一直認為自己在不錯的程序員中也算是個「灌籃高手」。直到有個傢伙——我們叫他艾倫——被招進團隊。艾倫很顯然在很多方面都比我優秀。也比我年輕。他讓我認識到,在過去的這些年裡,我沒有多少長進。我是一個特定技術方向的程序員,而且是水平一般。

這驚醒我應該自覺的不斷提高自己的水平,特別是我寫的代碼的水平。

艾倫引導我學會了很多東西。他告訴我,大部分我寫的代碼在今後的數年裡都將一直維護和進行擴展,寫代碼時要將這點銘記在心。我應該為我的代碼寫自動測試程序。艾倫說代碼的開發一定不能停止在第一版上,應該不斷的重構,提煉,讓它達到完美。我發現,我對這些語言和工具的使用都還有還很大的改進空間。

從艾倫那我學到的重要的一件事情是:永遠不要停止學習。

數年後,艾倫離開了公司。我的心裡突然感覺空盪盪的。這些年與他為伴讓我在技能上提升到了一個全新的水平,我知道現在我比團隊里的其他人優秀很多。他們仍然寫著糟糕的代碼,犯著以前犯過的錯誤。我努力教育他們,但他們對此不感興趣。事實上,他們討厭有人這樣傲慢自大的指出他們犯的錯誤。

於是,幾個月後,我也離開這這個公司。我去了一個很小的公司,在一個很出色的團隊里工作。那裡每個人都渴望學習更多知識,我喜歡這樣的。

我很幸運能遇到艾倫。沒有他,我也許現在仍然待在那家死氣沉沉的公司和那幫食古不化的傢伙在一起,哪都去不了,想的全是自己的私利。

從我個人而言,我覺得第三個答案對我有價值,不知各位同行們有什麼感受?


『柒』 講座 歡迎標語我們公司請了一位教授來講課,請問歡迎標語該怎麼寫

熱烈歡迎某某教授親臨本公司演講

『捌』 c語言編程題 題目標題: 猜年齡 美國數學家維納(N.Wiener)智力早熟,11歲就

c語言追求的是程序執行時間效率,題目給出立方之後是四位數,可以人為確定年齡范圍在10-21歲,至於為什麼不確定六位數再精確一點,個人覺得沒什麼必要。這個編程的核心在於如何分辨這10個數字不同,我定義了一個函數,用數組加循環判斷。以下是具體代碼。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

intsame(inta[10]);//判斷10個數是否相等,相互不相等返回1
intmany(inta);//判斷一個整型數是幾位數

main()
{
inta[10],i,j,s,l;//a儲存10個數字的數組,i年齡循環變數,j將數字存入數組,s儲存四位數,l儲存六位數
for(i=10;i<22;i++){
s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位數則退出當次循環
for(j=0;j<4;j++){
a[j]=s%10;
s=s/10;
}//存入四位數
for(j=4;j<10;j++){
a[j]=l%10;
l=l/10;
}//存入六位數
if(same(a))
printf("age=%d ",i);//輸出
}
system("pause");
}

intmany(inta){
inti=0;
while(a>0){
a=a/10;
i++;
}
returni;
}

intsame(inta[10]){
inti,j,flag=1;
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(a[i]==a[j])
flag=0;
}
}
returnflag;
}

『玖』 給高一新生講座的標題

看來你高中時代的表現不錯,這種事我比較有經驗,我看你的提綱好像和我這里的內容有點區別,我的這些題目看看你能不能用:《新高一·新天新地》《繼往開來·成就夢想》《我的高中,現在開始》······
其實,你不準備標題也可以,在寫的時候,開場白(即前幾句)應該盡量的有些調侃,否則新生通常不會對你這後文感興趣。還有,一些道理盡量舉幾個有趣而且現在最流行的例子,貼近大家距離。
祝你的演講成功!

『拾』 編程必備課程有哪些

剛學,那麼C語言肯定是不能不學的,【C】是基礎的基礎。先學C,一定要把C基礎打牢!另外,【數據結構】是必學的。另外就是【計算機組成原理】也就是接近計算機硬體方面的東西也需要了解。了解了計算機的底層實現對編程是很有用的。你看是學我建議你就從C開始,沒人會反對從C開始學的,給你推薦本書,譚浩強《C程序設計》,你可以去網上查查這本書。評價是比較高的。而且現在的很多高校都是用這本書做入門教材,不管計算機專業還是非計算機專業都是。學程,從C開始,這似乎是理所當然的事了。雖然說現在很大部分人說編程思想更重要,是,我承認這點,可是你一點程序都不會學怎麼去體會思想,起碼你得會寫程序你才會有思想產生嘛,對於初學程序的來說,學會怎麼編程是編程思想的前提。如有疑問,請補充!

熱點內容
聯想z5的配置如何 發布:2025-07-16 09:08:21 瀏覽:879
電腦加密軟體哪個好 發布:2025-07-16 09:05:47 瀏覽:319
王者榮耀攻速疊加演算法 發布:2025-07-16 09:04:23 瀏覽:944
安卓如何看運行版本號 發布:2025-07-16 08:57:03 瀏覽:71
虛擬網伺服器ip地址 發布:2025-07-16 08:56:02 瀏覽:50
棉密碼怎麼樣多少錢買的 發布:2025-07-16 08:43:54 瀏覽:799
java日期之間的天數 發布:2025-07-16 08:21:38 瀏覽:961
我的世界挖鑽石賺錢的伺服器 發布:2025-07-16 08:15:18 瀏覽:723
python進程獲取 發布:2025-07-16 08:15:10 瀏覽:407
安卓系統優盤打不開怎麼回事 發布:2025-07-16 08:14:34 瀏覽:763