❶ 談一談,程序員的工作環境是怎樣的呢
程序員對工作環境往往需要有一張大的辦公桌,他們不僅用一台電腦在工作,有時候需要幾台電腦同時操作,而且遇到一些bug或者瓶頸的時候需要和同事協同工作,當然在硬體方面除了辦公桌要大外,還需要配置比較高的電腦,畢竟這是程序員最基本的工作工具,試想如果剛有靈感,結果電腦卡頓或者死機了,那有可能靈感頓時就消失了,所以他們大多數工作環境都擁有足夠大的辦公桌和高配置的電腦。
❷ 我想成為游戲開發程序員,要學些什麼
1.圖形引擎 2.聲音引擎 3.物理引擎 4.游戲引擎 5.人工智慧或游戲邏輯 6.游戲GUI界面(菜單) 7.游戲開發工具 8.支持區域網對戰的網路引擎開發 9.支持互聯網對戰的網路引擎開發 下面逐一介紹每個部分: 1.圖形引擎主要包含游戲中的場景(室內或室外)管理與渲染,角色的動作管理繪制,特效管理與渲染(粒子系統,自然模擬(如水紋,植物等模擬)),光照和材質處理,LOD(Level Object Detail)管理等,另外還有圖形數據轉換工具開發,這些工具主要用於把美工用DCC軟體(如3DS Max,Maya,Soft XSI,Soft Image3D等)軟體製作的模型和動作數據以及用Photo shop或painter等工具製作的貼圖,轉化成游戲程序中用的資源文件。 2.聲音引擎主要包含音效(Sound Effect簡稱SE),語音(VOICE),背景音樂(Background music簡稱BGM)的播放。SE是指那些在游戲中頻繁播放,而且播放時間比較短,但要求能及時無延遲的播放,VOICE是指游戲中的語音或人聲,這部分對聲音品質要求比較高,基本上用比較高的采樣率錄制和回放聲音,但和SE一樣要求能及時無延遲的播放,SE在有的時候因為內存容量的問題,在不影響效果的前提下,可能會降低采樣率,但VOICE由於降低采樣率對效果影響比較大,所以一般VOICE不採用降低采樣率的做法。BGM是指游戲中一長段循環播放(也有不循環,只播放一次)的背景音樂,正是由於BGM的這種特性,一般游戲的背景音樂是讀盤(光碟或硬碟)來播放。另外一些高級聲音特效,如EAX,數字影院系統(DTS5.1),數字杜比環繞等。 3.物理引擎主要包含游戲世界中的物體之間、物體和場景之間發生碰撞後的力學模擬, 以及發生碰撞後的物體骨骼運動的力學模擬(比較著名的物理引擎有havok公司的game dynamics sdk,還有open source 的ODE—Open Dynamics Engine)。 4.游戲引擎主要是把圖形引擎、聲音引擎、物理引擎整合起來,主要針對某個游戲製作一個游戲系統,其包含游戲關卡編輯器,主要用途是可以可視化的對場景進行調整,光照效果和霧化等效果調整,事件設置,道具擺放,NPC設置,另外還有角色編輯器,主要用於編輯角色的屬性和檢查動作數據的正確性。一般日本游戲公司的做法,他們會把關卡編輯器和角色編輯器直接做到游戲中,所有的參數調整都在游戲中通過調試菜單來進行編輯,所以一般他們把這部分調試菜單的功能做的很強大,同時在屏幕上實時的顯示一些重要的信息,這樣做的好處是關卡編輯器調整的效果直接就是游戲的效果,但是對於程序的重用性來說可能不是很好,比如說要用到另外一個游戲項目中就比較難,除非兩個游戲類型相同,只要把場景和角色數據換一下,還有做下一代產品也沒有問題,只要根據式樣增加調試菜單的功能就可以了。 5.人工智慧和游戲邏輯開發,這部分日本和歐美的游戲開發模式也有很大不同,在歐美游戲公司中運用腳本語言開發很普遍,所以這部分程序開發主要是用腳本語言編寫,而且腳本程序和游戲程序的耦合性很低,有單獨的編輯、編譯和調試環境,這樣比較利於游戲程序和關卡設計開發分開,同時並行開發,所以一般他們都會有專門做關卡設計的程序員崗位。而日本游戲公司腳本語言一般和游戲的耦合性比較高,一般通過一些語言的宏功能和一些編譯器的特定功能來完成一個簡單的腳本系統,所以一般這些腳本程序只能在游戲程序中進行調試,而不能在一個單獨的腳本編輯,編譯環境中進行開發。 6.游戲GUI界面(菜單),主要是指那些游戲中用戶界面設計,有做的復雜,有簡單的,做的簡單就是2D GUI界面,做的復雜有3D GUI界面。 7.游戲開發工具主要包含關卡編輯器,角色編輯器,資源打包管理,DCC軟體的插件工具等開發。 8.支持區域網對戰的網路引擎開發,主要解決區域網網路發包和延遲處理,通訊同步的問題,有同步通訊和非同步通訊兩種做法,非同步通訊用於那些對運行幀速要求比較高的游戲,同步通訊相對非同步通訊來說效率相對低,但是同步通訊的編程模型相對非同步通訊來得簡單一些。 9.支持互聯網對戰的網路引擎開發,目前大部分網游都是C/S結構的,伺服器端軟體配置管理,伺服器程序的最優化,還有游戲大廳、組隊、游戲邏輯處理、道具管理、收費系統等。另外還有一些網路系統是C/S和P2P兩種結構混合的,如XBOX Live等。 程序員在游戲公司中的崗位在日本游戲公司和歐美的游戲公司有些不同,日本游戲公司中程序員的崗位主要有技術監督(Director),主程序員(Main Programmer),程序員(Programmer),在日本游戲公司里負責游戲項目開發的程序員,一般不會專門根據工作內容劃分程序員,除了獨立的系統研究室和聲音系統製作部門(這兩個部門是比較獨立的,往往同時給好幾個項目服務),負責每個游戲項目開發的程序員,隨時都可能一人多職,比如說主程序員除了負責整個游戲系統以外,可能還要負責圖形或聲音引擎開發等,程序員除了人工智慧以外還有菜單製作等。這種情況在歐美的游戲公司比較少見,他們分工的比較細,一般有圖形程序員,聲音程序員,人工智慧或游戲關卡程序員,物理程序員,每個組中可能還會有一個Leader。 這一點,日本公司和歐美公司也有些不同。日本公司一般喜歡從一些高校中招聘一些應屆優秀畢業生,一方面比招聘有經驗的人要來的成本低,另方面新人是一張白紙,容易培養,像SEGA、KONAMI等都是按這種原則招聘員工的,所以想進入日本游戲公司,你要學好你的軟體課程。而歐美公司希望招聘進來,能馬上進入項目的開發中去,所以他們一般希望招聘有工作經驗的人,即使不是行業中,在相關行業中工作2、3年的也可以,所以想進入歐美游戲公司你的工作經歷很重要。 我覺的一個游戲軟體程序員,最起碼的要求是熟練掌握計算機本科專業所學的知識,主要包括C語言或C++語言,數據結構,編譯原理,演算法等,另外線性代數、微積分、牛頓力學在圖形和物理引擎開發方面用途也很廣泛,如果要提高的話還有必要了解硬體相關的知識如計算機體系結構、匯編語言,這些對我們學習一個新的硬體平台、編寫最優化代碼、提高自己游戲的競爭力都是非常有益的。另外,保持有恆心、不怕苦(比如說通宵加班)的心態,對游戲的熱情也是非常重要的。對於那些想進入游戲行業,但缺乏軟體開發知識的人,可以通過參加游戲開發培訓來 現在有很多人,計算機本科畢業,學了很多軟體開發的知識,但是一旦要用到實際的項目開發時,感覺無從下手,這主要是在學校里運用知識的機會太少了。所以學習游戲編程最好的方法是能實際參與到一個好的游戲項目中和有豐富開發經驗的人一起開發游戲,可能學到很多你從書本上學不到知識和技能。但有時候你一時還沒有機會參與到一個好項目中,沒有機會進入一家好的游戲公司,但是你對游戲開發有一腔熱情,很希望學習游戲開發的技能,那你就應該去參加專門的游戲開發培訓,因為游戲開發培訓班中的老師都是一些有豐富開發經驗的老師,一般都有五年豐富的項目開發經驗,聽他們的課,實際上就是在和他一起分享這么多年的開發經驗,另外游戲開發培訓課程中會專門設計一些項目和課題,它們本身就是可以直接運用游戲開發中,這樣你可以不進入著名的游戲公司,但可以學到這些公司中一些常用的開發技能。另外還有一種方法經濟實惠的方法,參加一些網上志願者的開源項目,這些項目從品質來說有好有壞,選擇一個好的項目非常重要,另外他們中間本身有許多是業內人士,本來你要進入他們公司,才能學習到他們的經驗,但是通過開源項目,你就有向他們學習的機會了,說不定哪一天,你就進入一家知名的游戲公司了,不過目前開源的完整游戲項目好的不多,到是在圖形引擎和物理引擎方面有一些很不錯的開源項目,但要加入進去的話,你的基礎一定要好啊,有些開源的團隊也不是隨便什麼人就能加入的。
❸ 怎樣做一名高效率程序員
1、理解編程語言的原理
三流的人才懂應用,二流的人才懂開發,一流的人才懂原理。各種語言之間存在著相似的地方,掌握語言的原理是必不可少的。最重要的,讓語言去適應項目,反之亦然。
2、向優秀程序員學習
你有一個蘋果,我也有一個蘋果,我們交換蘋果,你我還是有一個蘋果;你有一種思想,我也有一種思想,我們交換思想,你我就有了兩種思想。
與優秀的程序員為伍,你將吸收的最實用的經驗,這遠比你一個人自學、死磕編程來的快一些。有一句話說到好,與臭棋佬下棋,棋會越下越臭。不可否認這樣一個事實:和什麼樣的人在一起,就有什麼樣的格局,就會有什麼樣的人生。
3、了解數據結構和演算法
如果你要成為一個高效的開發者,就必須學會快速排序、學會辨認O(n2)程序、學會編寫遞歸函數。
學會多種語言,你便會更清楚不同的框架是相同問題的是如何解決的。盡可能去了解底層命令(plumbing),以便能夠作出明智的決定(Web框架是怎麼存儲session狀態的?Cookie到底是什麼?)。
4、精通一個編輯器
高效開發者通常是用IDE編輯器嗎?其實不是的,他們更常用的文本編輯器,因為這樣更會學到東西。
如果使用編輯器選擇通用的Emacs或Vim,自然是最好的。其次,挑選你的首選平台最支持的。使用宏,不斷地寫代碼;使用Visual Studio或SublimeText的自動補齊功能。
5、整潔的代碼勝過巧妙的代碼
如果想讓別人可以輕松讀懂你編寫的代碼,請盡量使用最少的代碼來完成任務。在編寫代碼過程中,遵循DRY(Don』t repeat yourself)的原則,使用明確定義的對象和庫,將任務分解成小而簡單的代碼段。
6、掌握代碼調試技巧
現如今市場和需求變化相當快,項目的周期有時就會縮短。一個月的工作計劃,會縮短到2個星期。項目的壓力難免會導致程序員的代碼質量會有所下降!
因此,調試技巧在這樣的環境下就顯得尤為重要。高級程序員會在函數的開始和結束輸出Log,把所有的參數和返回值列印到日誌系統,便於追蹤。在解決問題的過程中,使用開發工具一行一行進行調試,實時觀看參數的變化。
7、重新回顧代碼
重新去回顧和審視自己寫過的代碼,通常會有兩種體驗,一種是我怎麼寫了這么爛的代碼;另外一種則是對自己寫過的代碼充滿了成就感。回顧代碼有時可以觸發我們新的想法,甚至還能對編碼有一個更深層次的思考。
❹ 程序員最理想的工作環境應該是什麼樣的
程序員的培養是一個漫長的過程,需要耗費巨大的財力物力,程序員本人也為了成為最優秀的,沒日沒夜的工作,多數男性程序員沒有女朋友,愛情的世界是一片空無,也沒有節假日。那麼作為程序員他們眼中理想的工作環境是怎樣的呢?
好的學習提升自我的氛圍
程序員希望所在的工作單位能考慮的更加長遠一些,能給自己創造一個好的提升技能的氛圍。希望企業能夠對自身技能提升有相應的培訓,不要只是單純的對程序進行加工,要有自己的創新性。
畢竟程序員做出的每一個程序都像是自己的孩子一樣,作為程序生產者的程序員,怎麼會不希望自己做出來的東西是最優秀的呢?所以,程序員最在意的是公司能否提供一個對自己有提升作用的氛圍。
程序員,雖然看起來是腦力活,但是沒有一個程序員不是為了自己開發的軟體付出所有,程序員想要的工作環境很簡單,就是有一個能提升自己,被別人尊重,希望國內的公司能為程序員創造一個他的所需要的基本的環境。
❺ 互聯網軟體開發工程師的工作環境如何是你喜歡的嗎
大公司的程序員,工作環境基本上就是一個電腦版的 「衡水中學」,每天就是開會寫代碼改代碼查代碼開會繼續循環往復,跟中學里每天就是拚命讀書刷題刷題讀書吃飯無味上廁所要跑一個樣。硬體配置無需你考慮,肯定是夠你用。跟人的成本比起來,硬體就是個渣。大公司的程序員工作比較穩定,每個人的分工是比較明確的,職業路徑也很明晰,越往上的職位對智商的要求越高,這點和靠情商往上升的工作還真有點不一樣。在程序員這個隊伍里拍馬屁搞關系基本沒啥用,你寫的代碼都無需用戶檢驗,自己一跑就知道成不成。這也是 IT 公司通常人際關系和氛圍都比較輕松且簡單直接的根本原因,特別適合那些不喜歡搞關系的同學去擼起袖子加油干。
❻ 程序員都要求會哪些軟體
用什麼軟體不重要,也不一定非用什麼軟體,關建看你要做什麼。樓上說的都是B/S結構軟體的程序員,另外回答的東西也太XX了,一看就是來給那個公司打廣告的。
程序員有很多種,首先說一下做B/S結構軟體的,也就是WEB開發。因為是WEB,所以html和javascript是肯定要會的,然後還得看你做的是什麼類型的網站,因為用html寫郵的頁面是靜態的(並不是說頁面上的東西不會動啊)。現在用的比較多的主要有PHP,JavaEE和ASP.NET幾個(其它的也有,只是這幾個比較常見),門戶網站一般多用PHP,因為開發速度快(LAMP架構),JavaEE用在要求安全性高的地方多一些,比如金融。另外ASP也比較常見,微軟的網站肯定是asp的!所以還得掌握這么一門主要的開發語言。
然後說一下做客戶端應用的吧,現在的客戶端軟體多用C/C++開發的吧,當然還有很多其它的就不提了。然後就是伺服器軟體,用的也是這兩個比較多。上面提到的這些都算是「語言」,我們寫出的代碼經過編譯後就是軟體了,法然其中還有調試的過程,編寫,調試和編譯一般都是在IDE(集成開發環境)中進行的(html和JavaScript這些解釋性語言是不用編譯的)。
而你說問的「會用哪些軟體」就應該是這個IDE了,其實我們完全可以不用任何IDE,它只是給我們提供了一個集成的環境,把編輯,調試和編譯的過程集中到了一個界面上,加快了開發速度。
我本人就是個程序員,如果還有什麼不明白的希望可以幫到你 ,當然我的回答也可能比較片面,除了這些以後還有一些,比如說區動開發和做欠入式的。IDE加快了我們的開發速度,但是卻降低了我們的能力
❼ 如何更好的搭建Visual C++環境
先寫測試能強迫程序員給出完整清晰的類介面,還能在每次建立系統時自動測試。1.Visual C++環境適用預處理#define定義一個或多個調試標記,在代碼中把調試部分使用#ifdef 和#endif 進行管理。當程序最終調試完成後,只需要使用#undef標記,調試代碼就會消失。常用的調試標記為DEBUG, 語句序列:2.運行期間調試標記在程序運行期間打開和關閉調試標記。通過設置一個調試bool標記可以實現。這對命令行運行的程序更為方便。例如下面代碼:#include<iostream> #include <string> using namespace std; bool debug =false; int main(int argc,char*argv[]) { for(int i=0;i<argc;i++) if(string(argv[i])==「--debug=on「) debug = true; bool go=true; while(go) { if(debug) { 調試代碼 }else {} } } 3.把變數和表達式轉換成字元串可是使用字元串運算符來實現轉換輸出定義#define PR(x) cout<<#x」=」<4.c語言的assert()該宏在中,,當使用assert時候,給他個參數,即一個判讀為真的表達式。預處理器產生測試該斷言的代碼,如果斷言不為真,則發出一個錯誤信息告訴斷言是什麼以及它失敗一會,程序會終止。#include< assert>using namsapce std;int main(){int i=100;assert(i!=100); //Fails}當調試完畢後在#include前加入#define NDEBUG即可消除紅產生的代碼}C++代碼和調試本部分教程主要介紹了良好的Visual C++環境風格、如何書寫安全的代碼以及在Visual C++環境下的程序調試技術,這些內容對於新員工從學生成長為真正的程序員,逐步參與實際項目的開發工作,以及閱讀第三方代碼非常重要。1 規范易懂的代碼現階段軟體開發,都要依靠團隊的合作。程序員不再是個人英雄主義的代名詞,程序員一方面要依賴大量其他程序員完成的代碼,一方面又提供大量代碼給其他人使用,代碼實際上具備了兩個要素:首先是可靠的提供某種功能,其次是清楚地表達作者的思想。任何交流都必須有一定的規范才能進行,體現在代碼中就是規范易懂。另外,規范易懂的代碼才是可重復使用的,規范的代碼具有更長的壽命,具有更好的可維護性,也更方便後期的擴展。1.1 好代碼的幾個特徵怎麼樣的代碼才算規范易懂,體現在細節上會有無數的爭論,實際上無論風格和習慣如何,好的代碼具有幾個共同的特徵: 1. 良好的命名:好的變數名和函數名,讓閱讀代碼的人馬上就知道該變數或者函數的作用,很容易就能理解程序的大概結構和功能。程序員有必要理解匈牙利命名法。 2. 一致性:一致性帶來更好的程序,一致的代碼縮進風格能夠顯示出代碼的結構,採用何種縮進風格並不重要,實際上,特定的代碼風格遠沒有一致的使用它們重要。 3. 注釋:注釋是幫助程序讀者的一種手段,程序作者也是未來的程序讀者之一。最好的注釋是簡潔地點明程序的突出特徵,或是提供一種概觀,幫助別人理解程序;但如果注釋只是說明代碼已經講明的事情,或者與代碼矛盾,或者以精心編排的形式迷惑干擾讀者,那就是幫了倒忙。1.2 養成好習慣前面已經提過,特定的代碼風格遠沒有一致的使用他們重要,所以,把過多的精力放到A or B的選擇上是浪費時間,你要做的是堅持。如何書寫規范易懂的代碼,如何養成良好的習慣,下面是一些提示。1. 按照匈牙利命名法給變數和函數命名。 2. 遵循國際流行的代碼風格。 3. 寫代碼的同時就遵循你的命名規范和書寫風格,千萬不能事後補救。 4. 利用工具(Parasoft C++ Test)檢查你的代碼,評估一下自己形成良好的習慣沒有。 5. 堅持不懈直到養成習慣。2 編寫安全可靠的代碼在大型應用軟體系統中,各個代碼片段共同構成完整的系統,Visual C++環境間的交互非常頻繁,程序崩潰往往並不在錯誤發生的時候就發生,而是延遲了一段時間,經過數個函數之間的中轉後才發生,此時定位和查找錯誤非常費時費力,如何才能及時反映程序中的錯誤。如何在代碼中避免一些幼稚的語義錯誤呢?一個函數往往會被其他程序員拿來使用,但是他怎麼能夠正確的使用其他人編寫的函數呢?這部分內容能夠(部分)幫助解決這些問題。2.1 契約編程 契約編程(Design by Contract)的思想在C++聖經級的著作,C++之父Bjarne Stroustrup的《C++程序設計語言》中略微提到過,OO領域的聖經級著作《面向對象軟體構造》以大篇幅闡釋了契約編程,現在越來越多的軟體開發人員認識到契約編程的重要性,並逐步地在實際工作中採用契約編程。對契約編程簡單的解釋是:對實現的代碼塊(函數、類)通過規定調用條件(約束)和輸出結果,在功能的實現者和調用者之間定義契約。 具體到我們的工作,開發人員應該對完成的每個函數和類,定義契約。契約編程看似平淡無奇,對程序開發沒有什麼具體的幫助,實際上,契約編程在開發階段就能夠最大程度的保證軟體的可靠性和安全性。解讀Visual C++ 2005具體實例高手指點VC++ 2005 Express配置問題C++之父:面向對象的進化與實現如何更好的設置Dev C++說明淺析C++編譯器的使用與學習在實際工作中,每當你需要使用其他程序員提供的模塊,你並不知道如何調用,也不知道你傳入的參數是否合法,有時候對於功能模塊的處理結果也不敢相信。這些本來應該很明顯的信息因為模塊提供者沒有顯式的提供,造成了調用者只能忐忑不安的摸著石頭過河,浪費了大量時間,而且為了讓自己的代碼更安全可靠,在代碼中做了大量的判斷和假設,造成代碼結構的破壞和執行效率的損失,最後,調用者依舊不能確保自己的調用是正確的。而契約編程通過嚴格規定函數(或類)的行為,在功能提供者和調用者之間明確了相互的權利和義務,避免了上述情況的發生,保證了代碼質量和軟體質量。Visual C++環境主動調試 主動調試指在寫代碼的時候,通過加入適量的調試代碼,幫助我們在軟體錯誤發生的時候迅速彈出消息框,告知開發人員錯誤發生地點,並中止程序。這些調試代碼只在Debug版中有效,當經過充分測試,發布Release版程序的時候,這些調試代碼自動失效。主動調試和契約編程相輔相成,共同保證軟體開發的質量。契約編程相當於經濟生活中簽訂的各種合同,而主動調試相當於某方不遵守合同時採取的法律懲罰措施。