當前位置:首頁 » 編程軟體 » 編程核心環節

編程核心環節

發布時間: 2023-01-11 16:37:07

① 我想做游戲設計方面的編程工作,需要學點什麼呢

編程工作屬於計算機相關專業,如果對自己有信心有基礎是可行的。

當下互聯網行業發展迅速,與之相關的產業大多發展都很好,游戲設計的前景自然也是相當不錯的。一個游戲問世要經歷很多環節,劇本設計,原畫創作,場景建模,但核心部分還是編程語言開發。

主要學的內容如下:

1.游戲程序設計:C++程序設計入門;基本數據類型和輸入輸出;流程式控制制語句;數組、指針和引用、函數;程序結構和書寫規;范結構體和聯合體、類;繼承與多態;異常處理與程序調試。

2.演算法與數據結構:演算法分析;數據結構;基本演算法;STL的概念與使用;靜態庫與動態庫;XML庫的使用。

3.Win32程序設計:Windows程序入門;Windows消息;GDI繪圖游戲工具與MFC;網路編程基礎。

4.游戲數學和智能應用:游戲中的坐標系;矢量、矩陣;幾何碰撞;物理模擬;人工智慧與尋路演算法。

5.2D游戲技術與應用:2D游戲技術概論;游戲地圖系統;GUI系統;戰斗系統設計;任務系統;優秀的聲音引擎BASS;Cocos2D-X引擎;Box2D物理引擎。

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

② 軟體是如何開發出來的

軟體開發流程

先上一個軟體開發的整體流程圖,這就是大名鼎鼎的「瀑布模型(Waterfall Model)」。據說由溫斯頓·羅伊斯(Winston Royce)在1970年提出。

1、環境部署

准備伺服器,部署操作系統、軟體環境、安全軟體、FTP伺服器等。資料庫和應用可分開布置在多個伺服器,也可布置在同一伺服器。

准備網路,分為內網和外網。外網需要購買公網IP和域名。

負責人:網路管理員

2、軟體開發

包括開發語言選擇、架構設計、資料庫設計等工作,並進行編碼、編譯、測試、打包。

負責人:程序員

3、軟體部署

將程序文件上傳到伺服器,進行部署、配置,成功後即可通過客戶端訪問項目。

負責人:軟體實施


軟體開發階段

下面以java語言開發為例,簡單講講程序員是如何進行軟體開發的。

(本部分參考了「軟帝在線」公眾號、博客園「架構與我」的文章)。

1、新建java文件(或工程)

java源代碼本質上就是普通的文本文件,可以用txt等工具編輯java代碼(程序員一般採用源代碼編輯工具,如:Notepad++;或集成開發工具IDE,如:Eclipse)。txt編寫後需將文件擴展名改成java。

2、編寫代碼

以「Hello World」舉例編寫代碼:

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

該程序表示的意思是輸出Hello World這樣一段話。

3、編譯程序

Java程序之所以能做到跨平台運行,是因為Java程序運行在JVM中的,然而JVM只能夠識別位元組碼文件,而不能直接識別Java文件。所以需要先將Java文件編譯成位元組碼文件,即class文件,然後位元組碼文件才能夠在JVM中運行。

編譯文件,可以通過手動執行Dos命令javac,或直接用編譯器如Eclipse完成。

4、運行程序

可在Dos命令窗口中輸入java命令,按回車,輸出Hello World;

或在編譯器的控制台中看到輸出結果。

5、單元測試

單元測試(模塊測試)是開發者對編寫的一小段代碼,檢驗一個很小的、很明確的功能是否正確。

通常採用JUnit框架(多數java開發環境已集成)進行測試,即所謂白盒測試,叫「白盒」是因為程序員知道被測試的軟體如何(How)完成功能和完成什麼樣(What)的功能。

測試通過後,就完成了軟體開發階段,可以打包部署了。(IT售前圈)

③ 怎麼研發一款編程語言

編程語言,作為人與計算機溝通的橋梁,有著重要和深遠的意義。有過計算機編程經驗的人,多少學習或掌握過一到多種編程語言。計算機專業領域的編程語言成百上千種,主流的編程語言也有數十種之多。每種編程語言面向的領域和特性都不盡相同,不過歸根結底是為了解決人與計算機之間溝通的效率問題,提高計算機的生產力。想必有不少人對那些主流編程語言的創造者十分傾佩,也相信有不少人會好奇一門編程語言是如何誕生的。那麼如何創造一門編程語言呢?
總的來看,創造一門編程語言需要有以下幾個過程:
(1)設計語言的特性。
(2)定義語言的單詞、語法和語義。
(3)實現編譯器或者解釋器將程序翻譯為計算機底層表示。
(4)生成計算機程序的二進制存儲格式。
(5)完善語言的運行時環境和標准庫。

一、語言特性設計
所謂語言特性,就是編程語言為開發者提供了什麼樣的原子性功能特徵。比如是否支持數學表達式計算、字元串處理,是否支持變數、函數和遞歸,是否支持分支、循環復合語句等。語言的變數類型是強類型、弱類型,還是動態類型,程序是過程式、函數式,還是面向對象的。是否支持模板、泛型和反射機制,是否支持多線程和並發特性,是否支持錯誤和異常處理機制等等。
語言特性設計是一門編程語言最關鍵的環節,直接決定了語言的基本特徵和雛形。當然,這也是最難的一個環節,因為語言設計是面向具體問題領域的,是語言設計者從大量的編程實踐中的獲得的總結和升華。比如C語言設計者希望面向計算機底層,擁有對操作系統和硬體的直接操縱能力。而Python的設計者則希望盡可能地減少操作計算機資源的繁瑣過程,以獲得語言的簡潔性、高度的靈活性和擴展性。SQL的設計者面向具體的數據查詢和分析領域,希望幫助開發者獲得快速檢索和操縱數據的能力。而Go語言的設計者則希望在保留C語言優秀功能的基礎上,擴展編程語言對高並發環境的支持,並擁有垃圾回收和快速編譯的能力。
凡此種種,編程語言特性的設計都是面向具體的問題領域的,是語言設計者構建於開發者和計算機之間的中間層,是對開發過程中重復功能邏輯的原子性「封裝」,最終的目的是為了提升具體問題領域內的軟體開發效率。

二、單詞、語法和語義
和人類使用的自然語言類似,編程語言也有自身的單詞、語法和語義,專業上稱為詞法記號、語言文法和語義。
常見的詞法記號可以分為數字、字元、字元串、標識符、關鍵字,以及用於連接表達式的運算符、分割語句或者程序段落的界符等符號。這些是編程語言程序的基本單位,通過它們的有序組合,構建出了一門編程語言形形色色的代碼片段。
編程語言的文法是用來描述語言的語法規則的,具體來說是規定詞法記號之間的排列組合的順序與規則。它描述了編程語言程序的基本模式,不符合該模式的詞法記號的排列被擋在了合法語言程序的大門之外。同時,它也是各種編程語言對於開發者最明顯的差異化特徵。一個有經驗的開發者可以很容易地通過掃視一段代碼,就能分辨出這是哪種編程語言編寫的計算機程序。
編程語言的語義描述了一段符合語言語法的程序,對於計算機而言的真正含義,是開發者最終要傳達給計算機的意願和指令。語言的語義必須是准確的、無二義性的,編譯器也正是通過語義的指導,將計算機程序翻譯為計算機可識別的表達形式。

三、程序的翻譯
計算機程序是用來供人閱讀和修改的,計算機硬體並不能理解程序內的思想和含義。因此,必須有一個翻譯轉換的過程,將人所表達的意願准確無誤地傳遞給計算機,讓計算機明確並執行人下發的指令。實現這種翻譯工作的工具就是編譯器或解釋器。
對於編譯器來說,它的輸入是人類書寫的計算機語言程序,輸出則是計算機可識別的底層表示。首先,它需要識別出程序中的單詞,即詞法分析。然後,根據單詞的組合模式識別出程序的語法結構,即語法分析。最後,根據不同的語法結構對應的語義,將程序按照每個語法模塊的形式轉換為計算機可識別的指令序列,即語義分析和目標代碼生成。
眾所周知編譯器的實現具有一定的復雜度,其根本原因來自於語言語法的結構靈活性和計算機底層表達形式的多樣性,這也是創造一門編程語言最核心的環節。

四、二進制存儲
編譯器將語言程序翻譯轉換後,需要將轉換後的結果存儲起來,以便計算機在需要的時候將其載入、執行。這里不可避免的涉及到兩個問題:
(1)轉換後的結果是什麼樣的形式?
(2)轉換後的結果保存在哪裡?
第一個問題描述的是計算機程序被轉換為怎樣的形式,才是計算機可以識別的。由於計算機中實際運行程序的硬體模塊是CPU,因此計算機程序只有被轉換為CPU的二進制指令格式才能被正確識別、執行。比如常見的Intel體系的CISC指令格式、ARM體系的RISC執行格式等。
第二個問題描述的是計算機程序轉化為二進制指令格式後,以什麼樣的方式保存在計算機的磁碟上。由於絕大多數的計算機程序是需要通過運行在計算機硬體之上的操作系統載入運行的,因此計算機程序的二進製表達形式必須以對應操作系統可識別的文件格式存儲。比如常見的Windows操作系統的PE文件格式、Linux操作系統的ELF文件格式等。

五、運行時環境和標准庫
理論上講,一門編程語言如果能提供出完備的操縱操作系統和硬體的原子性功能就已經成功了。但是不提供強大的運行時環境支持和標准庫,是很難讓一門編程語言真正的好用和流行的。沒有人希望簡單地列印一行字元串,還需要使用編程語言提供的基本特性實現調用操作系統提供的列印介面的邏輯。Java語言之所以久興不衰,正是因為它不僅提供了完善的運行時環境和開發庫支持,甚至提供了更強大的開發框架和工具支持。
因此可見,除了完備的語言特性,為開發者提供更方便好用的庫和框架支持,消除軟體構建過程中復雜和重復的邏輯,才是一門優秀編程語言的長盛之道。

六、自己動手,立即開始!
《自己動手構造編譯系統——編譯、匯編與鏈接》一書詳細闡述了一門編程語言從無到有的過程,從語言的功能特性設計,到詞法、文法、語義分析;從編譯器、匯編器的設計實現,到目標文件的鏈接生成可執行文件;甚至編譯優化器的實現、二進制指令、可執行文件格式以及語言運行時和標准庫的概念,都在書中做了認真細致地剖析。相信對本書的閱讀,將是一次不錯的獲得知識的體驗!

④ 少兒編程都在教什麼

少兒編程一般針對的是小學及以下幼兒設計的編程模式;

把原來復雜的英文代碼編程語言轉換成圖形化的,以指令化,模塊化方式讓游戲,情景動畫,積木構件的形式呈現。

旨在孩子九大能力的培養:觀察力,想像力,創造力,邏輯思維力,問題解決,空間思維,判斷性思維,序列與條件,調試操作能力。

scratch頁面

Scratch的圖形化語言可以很好的幫助學生學習基本的邏輯、關系推理、數學的概念,同時避免過早的接觸到「形式運算階段」之後才能理解的抽象的演繹推理。

Scratch編程語言屬於圖形化編程,也就是孩子不需要敲代碼,只需要拖動滑鼠就可以完成一系列的項目操作。

讓學習的過程不枯燥,並更及時地獲得結果反饋,非常適合他們這個年齡階段的心智水平和認知能力。



⑤ 數控編程怎樣做

教你如何成為數控機床編程高手,建議初學者認真閱讀。
要想成為一個數控高手(金屬切削類),從大學畢業進工廠起,最起碼需要6年以上的時間。他既要有工程師的理論水平,又要有高級技師的實際經驗及動手能力。
第一步:必須是一個優秀的工藝員。數控機床集鑽、銑、鏜、鉸、攻絲等工序於一體。對工藝人員的技術素養要求很高。數控程序是用計算機語言來體現加工工藝的過程。工藝是編程的基礎。不懂工藝,絕不能稱會編程。
其實,當我們選擇了機械切削加工這一職業,也就意味著從業早期是艱辛的,枯糙的。大學里學的一點基礎知識面對工廠里的需要是少得可憐的。機械加工的工程師,從某種程度上說是經驗師。因此,很多時間必須是和工人們在一起,干車床、銑床、磨床,加工中心等;隨後在辦公室里編工藝、估材耗、算定額。你必須熟悉各類機床的性能、車間師傅們的技能水平。這樣經過2-3年的修煉,你基本可成為一個合格的工藝人員。從我個人的經歷來看,我建議剛工作的年輕大學生們,一定要虛心向工人師傅們學習,一旦他們能把數十年的經驗傳授與你,你可少走很多彎路。因為這些經驗書本上
是學不到的,工藝的選擇是綜合考慮設備能力和人員技術能力的選擇。沒有員工的支持和信任,想成為優秀的工藝員是不可能的。通過這么長時間的學習與積累,你應達到下列技術水準和要求:
1、 熟悉鑽、銑、鏜、磨、刨床的結構、工藝特點,
2、 熟悉加工材料的性能。
3、 扎實的刀具理論基礎知識,掌握刀具的常規切削用量等。
4、 熟悉本企業的工藝規范、准則及各種工藝加工能達到的一般要求,常規零件的工藝路線。合理的材料消耗及工時定額等。
5、 收集一定量的刀具、機床、機械標準的資料。特別要熟悉數控機床用的刀具系統。
6、 熟悉冷卻液的選用及維護。
7、 對相關工種要有常識性的了解。比如:鑄造、電加工、熱處理等。
8、 有較好的夾具基礎。
9、 了解被加工零件的裝配要求、使用要求。
10、有較好的測量技術基礎。
第二步:精通數控編程和計算機軟體的應用。
這一點,我覺得比較容易,編程指令也就幾十個,各種系統大同小異。一般花1-2個月就能非常熟悉。自動編程軟體稍復雜些,需學造型。但對於cad基礎好的人來說,不是難事。另外,如果是手工編程,解析幾何基礎也要好!讀書人對這些知識的學習是最適應的。在實踐中,一個好程序的標準是:
1、 易懂,有條理,操作者人人都能看懂。
2、 一個程序段中指令越少越好,以簡單、實用、可靠為目的。從編程角度對指令的理解,我以為指令也就G00和G01,其他都為輔助指令,是方便編程才設置的。
3、 方便調整。零件加工精度需做微調時最好不用改程序。比如,刀具磨損了,要調整,只要改刀具偏置表中的長度、半徑即可。
4、 方便操作。程序編制要根據機床的操作特點來編,有利於觀察、檢查、測量、安全等。例如,同一種零件,同樣的加工內容,在立式加工中心和卧式加工中心分別加工,程序肯定不一樣。在機械加工中,最簡單的方法就是最好的方法。只要有實踐經驗的同行,想必都會同意這句話吧!
第三步:能熟練操作數控機床。
這需要1-2年的學習,操作是講究手感的,初學者、特別是大學生們,心裡明白要怎麼干,可手就是不聽使喚。在這過程中要學:系統的操作方式、夾具的安裝、零件基準的找正、對刀、設置零點偏置、設置刀具長度補償、半徑補償,刀具與刀柄的裝、卸,刀具的刃磨、零件的測量(能熟練使用游標卡尺、千分卡、百分表、千分表、內徑杠桿
表)等。最能體現操作水平的是:卧式加工中心和大型龍門(動粱、頂梁)加工中心。
操作的練習需要悟性!有時真有一種「悠然心會,妙處難與君說」的意境!
在數控車間你就靜下心來好好練吧!
一般來說,從首件零件的加工到加工精度合格這一過程都是要求數控編程工藝員親自
完成。你不能熟練操作機床,這一關是過不了的。
第四步:必須有良好的工裝夾具基礎和測量技術水平。
我這里把工裝夾具及測量技術單列一條是因為:它對零件加工質量起到與機床精度一樣重要的作用,是體現工藝人員水平的標志之一。整個工藝系統:機床精度是機床生產廠保證的,刀具及切削參數是刀具商提供的,一般問題都不大,只有工裝夾具是工藝人員針對具體零件專門設計的,大凡上數控機床的零件都是有一定難度的,因而往往會出現難於預料的問題,我從事數控機床用戶零件切削調試10來年,不要整改的夾具還真沒碰上過。
調試時,首件零件加工不合格,一半以上原因是由於夾具的定位、夾壓點、夾緊力不合理引起的。夾具方面的原因分析難度在於只能定性,很難定量。如對夾具設計、零件裝夾沒有經驗的話,那困難就大了。在這方面的學習,建議向做精密坐標鏜床的高級技師們請教。精準的測量水平時從事機加工的基本功之一,要能熟練使用游標卡尺、千分卡、百分表、千分表、內徑杠桿表、卡鉗等。有時零件加工,三坐標測量儀是指望不上的。必須靠手工測量。試想,零件都量不準確,哪個領導和工人師傅會信任你?
練好測量技術可要花很長時間喲!
第五步 熟悉數控機床。精通數控機床的維護保養。
所謂熟悉數控機床,應做到:
1、 熟悉數控電氣元件及控制原理。能說出電箱里各個元件的名稱及作用,能看懂電氣原理圖。能根據電氣報警號,查出報警內容。
2、 了解滾珠絲桿的結構、傳動原理。清楚哪些因素對機床精度的影響比較大。
3、 了解機床絲桿兩端軸承的結構及對機床精度的影響。
4、 了解機床的潤滑系統(軸承、主軸、各運動副、齒輪箱等),清楚各潤滑點的分布。機床潤滑油的牌號及每周或每月油的正常消耗量。
5、 了解機床的致冷系統:切削(水、氣)冷卻、主軸冷卻、電箱冷卻等
6、 了解機床的主傳動結構,每台機床轉速與扭矩之間具體數據特性。
7、 了解機床導軌副特點:是線軌還是滑軌,剛性(承載能力)如何?
8、 能排除常見操作故障(如:超極限、刀庫刀號出錯等)
9、 精通機床的各項精度(靜態、動態)指標及檢測方法。
10、熟悉刀庫機構及換刀原理。
以上幾條沒有3年以上的時間鍛煉,恐怕是很難達到要求的。而且很多企業還不具備學習的條件。建議多向設備維修部門的師傅請教。
機床的維護保養細節我就不多講了,各企業都有各自的經驗和標准。
機床維護保養重點在於「養」,平時應該注意(應做好長期記錄):
1、 每天開機注意機床各軸的啟動載荷變化是否正常,這點很重要,啟動載荷變化不正常,就意味著運動副或傳動副的阻力變化了,得趕緊停機檢查。否則,時間一長,對機床的損害極大;
2、 注意潤滑油的正常消耗量。過多過少,都必須檢查。
3、 勤清洗電箱空調濾網和通風口濾網。電箱內部電源模塊、驅動模塊的集成電路板一旦粘染含有鐵粉的灰塵,那機床會出現莫名其妙的報警,修都修不好。就等換板子吧!
第六 培養良好的習慣,適應數控加工的特點。
(這一條是我個人所見,是否合理,大家可以討論。)
適合數控加工的高手應該是謙遜、嚴謹,冷靜,思維縝密,做事有條理而又有主見的人。
1、一些大型零件的加工,不但加工內容多,還有空間三維坐標的轉換。加工軌跡的計算非常復雜和難以確定,如果考慮問題不細致、全面,計算不精確,調試時程序修改越改越亂,出錯的概率就大。「三思而後行」用在這里是最恰當不過的了。
2、零件調試過程是多人合作的過程,其中包括操作工、檢驗員、夾具設計、夾具裝配人員等。出現問題時,要多征詢他們的意見,多做試驗,切忌武斷下定論。對出錯的員工不要過多責備,要有「慈悲」的心態。
3、數控機床的工作是靠指令來控制的,調試時,在「啟動」按鈕按下去之前,你必須十分是清楚機床運行的軌跡。要嚴謹、細致,千萬不能讓機床先動了再說。一旦程序有誤或補償參數不正確,或選錯了坐標系。輕則報廢零件,重則出安全事故。脾氣暴糙、做事無頭緒,而且屢教不改者是不適應數控機床操作的。
我告訴大家一個事實:原來我們公司十多位用戶調試切削工藝員,都是見多識廣、經驗老到之輩,可沒有哪一個、哪一年不撞斷過刀具的。
4、調試加工時出現問題,要冷靜,千萬不能慌張,再出現誤操作。心理素質要好。
5、零件調試多次不合格時,做分析要有條理,給出責任要有依據。某些相關部門出於各種原因,會給出各種解釋,這時你要有主見,記住:做錯一件事不要緊,卻不能選錯做事的方法。
6、一個工藝員,因受環境所限,技術能力總是有局限性的。加上技術發展的日新月異,永遠有提高的空間。當工廠內部的技術都已消化後,眼光要放外,緊跟國內外先進的加工技術,學習、消化。在技術方面做好老闆的參謀。
以上是我心目中理想的數控編程高手,其實說到底,應該有高級工藝師、高級技師水平的編程員。

⑥ 軟體開發與編程有什麼區別

基本上算是一回事兒,軟體開發需要通過編程來實現,編程就是製作開發軟體。

⑦ 如何著手學習CNC數控編程如何入門如何精通

一、數控的英文CNC,中文翻譯是計算機數字控制的意思,這里最關鍵的提到控制,控制什麼呢?控制如何切削。切削什麼呢?金屬為主。

所以初學者要想學好cnc數控就要求三種技能:

1.金屬切削

作為編程員,對於金屬材料的了解還是很有必要的。最起碼在編程過程中要知道銑刀對材料的特性、發熱、過載、轉速、每層下刀深度等,需要技能有:金屬材料,銑刀材料和種類。

要知道這把刀切削這塊金屬材料應該給什麼樣的轉速。每分種可以跑多少毫米,每層能加工多深。

2.控制部分 (編程部分)

這部分是純軟體問題,也是重點問題。如何切削,想好了,分析透了,就要軟體去控制,產生想要的切削方式。選擇好要加工的曲面或實體後有很多值依次設置好,如深度控制,從Z高加工到多高,每層加工多深,層與層之間如何提起刀具,加工范圍控制等。

這部分就是軟體,命令學完了,就可以了,這是固定的,想學的都可以學會。順便提到,可惜中國這么大的市場。找不到完整這樣分析的書。很多書只是告訴你這里輸入多少,那裡輸入多少,下一步,下一步,OK。所以好多想學好cnc數控編程的人會買一些書來看,但是就是學不下去,更不用說要學會了。因為書上的東西都是好皮毛的,只能做一個簡單的入門了解。這個時候建議去一些正規的數控培訓機構。

3.加工工藝部分

所謂工藝,就是如何加工,怎麼加工的問題,當熟悉了刀具對材料的切削能力,了解了軟體能控制,接下來就是怎麼樣切削才好的問題。比如想切削(加工)一個模具(零件)的一個平面或者一個角落,怎麼走刀才走的更光,會不會碰到底部的圓角,加工出來漂亮不漂亮,會不會有餘量切削不到,等等。對這種分析要有具備實際加工經驗的師傅以工作經驗對個個形狀的情況逐個分析。真正學好數控核心在第三步,工藝分析。工藝部分也是數控加工中的重點與難點部分。這部分是最能體現一個技術員的技術水平與經驗的環節。也是工資待遇多少的一個秤桿。技術好的,經驗豐富的,能解決生產問題的,工資待遇自然就高。在中國,特別在深圳,一個加工工藝技術好的編程技術員,工藝可以達到8000-15000這個階段。

總之,初學者要想學好cnc數控編程,以上三點必不可少。其實,以上三點只是總的學習方向,其中所包含的東西太多了,涉及到技術的東西也太多了。與其痛苦地看書本,不如找個正規的培訓機構系統地學習與提高一下。

⑧ 初學者學編程如何下手

首先作為一個優秀的程序員,數學是十分重要的。數學是自然科學的基礎,計算機科學實際上是數學的一個分支。數學主要能讓人懂得一種分析問題的方法,然後再通過編程去實現它。計算機內部的許多原理也都牽涉到比較復雜的數學知識。它是我們用來解決現實問題的最高效的工具。很多學習編程的朋友對數學覺得不屑一顧,覺得對於編程沒有什麼關系。實際上優秀程序員和一般程序員拉開檔次很大一個程度上就是取決於對數學的能力。一些項目有時需要很復雜的數學建模和利用數學對於系統效率進行分析,而這些項目對於一般的程序員是很困難的。正確應用數學知識有時候能使你的程序的效率產生質的飛躍。現在的程序員在數學上普遍是薄弱環節,這點是大家應該引起足夠重視的。當別人對於這些項目感到無從下手,而你卻能夠完成,這個時候你的價值也就表現出來了。真正優秀的程序員是能夠最基本的一點就是要能夠通過自己的知識來解決一般程序員所無法完成的問題。而數學能力就是一個很重要的環節。

其次就是要對數據結構引起足夠的重視。如果說計算機專業的學生與非計算機專業的最根本的差別絕對是數據結構(數學大家都一樣學了,主要看你自己學得好壞)。對數據結構的掌握與運用能力是衡量你編程能力的一個很重要的指標。有的人對於看了鏈表,棧,樹,廣義表這些東西就頭痛。然而這些東西往往能使你的程序的效率比別人高出百倍。由於一直搞信息學競賽,到了大學又搞ACM,所以我對數學和數據結構都掌握得相對較好。這使我在應聘與工作中明顯感到勝人一酬。記得自己大學時去一家公司應聘的經歷,當時去應憑的還有3個人,有2個大學畢業,有個也工作了一段時間了。他們幾個都在大講自己的能力如何之強,會使用的語言及編程工具如何之多,經驗如何之豐富。按理說我應該是資質最淺的。當時也是初生牛X不怕虎,也就硬著頭皮去了。當時面試的題目是一個公司的資金管理項目的一個問題,要求每個人都在思考後給出自己的設計方案。其中比較核心的一個問題就是要計算一個資金最小波動值的問題,給出的數據量相當大,對效率要求很高。對於整個程序的面向對象化的分析我們幾個都是差不多的,畢竟這些東西在學校里是很重視的,而且不是真正的難點。然而到了最關鍵的問題時其餘的人都卡殼了,有兩個是用簡單的雙重循環,時間復雜度(N^2),慘不忍睹。還有一個在冥思苦想了好一陣以後說用樹,具體技術細節又講不清楚,效率分析也很馬虎。只有我當時很快就給出了採取AVL樹的方案,並且利用高等數學推導作出了很詳細的效率分析和時空換算,並提出了引入匯編的方法。很自然的我得到了這分工作。在這里大家顯然可以看到數學和數據結構對於一個優秀程序員是多麼重要,它們是和一般的程序員打開檔次的最關鍵的地方。這樣向"棗子"碰到的那種情況應該很輕松的就可以想到。

如果你是一位想學習編程的朋友,我經過多年的學習總結出來了一個學習的線路希望對你有所幫助。要學習編程是要有很大恆心和毅力的,首先你要明確自己的目標,想好自己編程是為了干什麼。如果你學習僅僅只是一時想編出QUAKE和成為比爾蓋次的沖動,那麼我勸你還是應該還是不要開始學習,應為這樣的目標很難支持你日後大量的學習。而且你的年齡不能太大(最好是中學或者大學生)。如果你想好目標並決定開始奮斗,那就讓我們開始吧。如果你一開始對電腦一無所知,那麼你應該先熟悉一些電腦的一些最基本的原理和操作,這個不需要特別細致的學習,只要大概知道二進制和一些基本操作就可以了。接下來你應該先學習BASIC語言,這個語言並不會耽誤你太多的時間,學習它完全是為了入門,讓你對電腦編程有一個比較初步的認識。這時候你應該多編一些小的程序,知道一些最基本每條語句的功能,搞清楚一些基本的數據結構(尤其是數組)對於一些其餘用途的函數最好不要做任何學習,因為這樣只會分散你的注意力。當你能夠可以熟練的運用BASIC編出猴子選大王,以及電腦出題考試之類的程序時,你就可以開始後面的學習了。接下來如果覺得自己接受能力強的話就可以開始學C了(注意不是C++),如果感覺有困難也可以先學Pascal過度一下。還有很重要的一點就是千萬不要一開始就學VB,DELPHI,VC之類的東西,這些東西在一開始學會對你造成很壞的影響。有可能會把你引入另外一個錯誤的學習方向而忽略了真正應該掌握的東西。學C主要是學過程話的程序設計,學會把自己的程序分成許多的函數(或過程),養成良好的編程習慣。這時可以多看一下高人的程序,不一定要懂意思,主要是學會別人程序的格式(比如變數如何起名,怎麼劃分函數)。除開掌握基本的控制流語句外,應該學習一些很簡單的I/O函數和數學函數。C的學習主要是你舍棄原來BASIC程序那種把所有語句積成一大堆的風格,要學會使用函數,提高代碼重用性。對於指針之類的東西如果實在看不懂可以先不去管,到後面會有辦法。當你能夠比較自如的用C編寫一些小的計算程序時,你就可以開始你的數據結構的學習了(數學的學習主要是在學校,自己要多用心)。數據結構你可以一點一點漫漫看,並不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學會用數據結構的知識來規范自己的程序設計和提高程序的效率。學完C我認為接著最好學習匯編。這個或許有許多人都會反對,然而我個人認為這樣是很好的。從最基本的DOS匯編開始,買本《IBM PC匯編程序設計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反復的嚴讀是一定可以看懂的。匯編是一定要掌握的,因為它涉及到很多最基本的知識。掌握了匯編和對I/O有了個很徹底的認識後,應該去學編譯原理。這個東西並不要精通,但是一定要知道,在大腦里要有一個這樣的概念,這對你對程序語言的控制能力都有很大的幫助。這樣最基本的學習就算完成了。一般智力正常的人前一段東西應該都是可以掌握的。接著後面的學習就要看你自身的造化了。這個時候你應該研究一下數據結構,不要分散自己學習的注意力,要知道數據結構是異常重要的(相信我,絕對沒錯)如果你覺得自己已經對於樹,連表,堆棧之類的東西和排序,遞歸之類的演算法已經十分清楚,就可以開始學習C++了。學習前一定要有個正確的認識,那就是C和C++是兩個不同的東西。學習C++是為了學習面向對象的程序設計,這個時候你對於指針應該也能夠掌握了(有匯編的基礎),主要抓住C++和C相比的一些新特性,對於多態之類的特性要注意理解掌握,如果沒有搞懂就堅決不要往下學習。一些基本的概念掌握以後可以看一些別人設計的程序,學習別人怎麼利用面向對象的方法來設計程序的。這個東西也是人之間拉開檔次的一個環節,可以和數據結構放在同等重要的地位。我就見過有的人都大學畢業了還搞不懂virtual到底是怎麼一回事情。其實我認為學到這里你已經為你成為一個優秀的程序員打下了很好的基礎,你已經能夠應用C++,懂得面向對象程序設計,對數據結構掌握很好,掌握匯編和編譯原理。接下來的學習就是基於操作平台的了,一般是先學windows(Microsoft畢竟是老大),先學win32 api,搞請windows基本消息機制和原理,有匯編基礎基本上不會碰到什麼困難。其實只要會了API,其餘什麼MFC,VCL都是囊中之物了,都不過是對於API的封裝而已。VC,C++Builder都可輕松拿下,這只是開發工具的問題。以後的OLE(ActiveX),.NET,資料庫就要看自己的發展方向而定了。我在這里強調的是前面的基本能力的學習,後面操作平台雖然知識體系龐大,然而畢竟比較死,更好掌握。最後編程能力的高低主要還是有以下幾點決定:1。編程的習慣 2。數學能力(包括邏輯思維,分析問題的能力) 3。對數據結構的認識能力 4。經驗的多少(包括多使用語言的掌握能力)
最後,祝你學有所成!

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:582
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:713