A. 軟體開發的基礎知識
軟體因計算機而存在,而計算機的實質是數學,所以計算機的知識本質上就是數學知識,
也可以這么說數學知識也是計算機的基礎知識,計算機的基礎知識也是軟體的基礎知識。在。軟體發展的過程中,軟體的知識也在慢慢地積累,很多軟體知識與數學並無直接的聯系,而。在這里我們所要說的就是純軟體的基礎知識。
我們可以把軟體的知識分為兩個部分,專業技能知識和領域知識或說行業知識。
1,專業技能知識
一門編程語言及庫
你可以在書店裡找到各色各樣的關於編程方面的書籍,但是我建議你只需要深入地掌握
一門便可,而且任何程序員都需要熟悉C語言。你所深入掌握的語言可有多種選擇。如果你從事的是驅動程序開發,我想必須要掌握匯編語言,C語言也是個不錯的選擇,而如果是做UI的話C++也許更好,Java語言比較適合網路程序的開發,當然JavaScript在google肯定很受推崇。
對於程序員來說,編程語言就相當於游俠手中的武器,可以是長劍,也可是以是短劍,可以是大刀,也可以是匕首。這些武器各有所長,而要發揮這些武器的長處必須基於一套路數上,那麼對於程序員來說就是基於某一種編程語言的代碼庫。如GNUC的庫就是libc或ulibc。如果你是用C語言,而且你是在類UNIX平台下開發,那麼你就必須正確理解libc的工作原理,你代碼里所調用的每一個函數的輸入與輸出,可能的錯誤,可能的歧義,對系統可能產生的影響。比如某一個函數是否是可再入的,還是不可再入的,如果出現了多線程同時調用的情況會發生什麼錯誤等等細節上的問題。
一種編程思想
全世界都驚嘆於毛澤東的領導和軍事才能,而在他的才能表象之後是什麼,是他的革命
精神,是他的睿智的思想。編程也一樣,如果沒有了編程思想就沒有了指導前進的動力,就沒有了創造的靈感的土壤。軟體知識發展到現在比較常用的編程思想就是結構化(模塊化)和面向對象化(設計模式)。
有些語言是在模塊化大行其道的歷史背景下被發明出來的,如C語言,而有些語言則是為了滿足面向對象的編程思想而構造出來的,如C++。有一部分程序員會認為C語言是結構化的編程語言無法實現面向對象的編程思想。其實不然,C語言同樣可以很好地實現面向對象的編程思想,只不過有些面向對象的工作由程序員來做而已。同樣,面向對象的編程語言也可以用於寫模塊化的程序。
一種信仰
就我所接觸過的系統里,Windows我只會安裝,使用,VC/VB也只能做一些簡單的開發,而MACOS體驗過一次安裝,不過最終還是失敗了,iPhone的系統還沒有機會體驗過。曾經在AIX下做過開發,目前正在Fedora9下做開發,目標板的CPU是SH4,將來也可能是MIPS。
不管是MACOS,Windows,UNIX,Linux等都有各自的追隨著,我把這種現像稱為信仰。就拿我自己來說,我信仰Linux,Linux內核的源代碼對於我來說就是神話。
我覺得在Linux下工作是一件很娛悅的事情。如果你每每解決一些比較棘手的問題,都會
有一種成就感,這是在Windows平台下感受不到的。所以對於這一信仰,我覺得至少需要知道它的安裝,啟動,配置,安全,如引導程序GRUB,ftp,telnet,sshd,smbd,named等等伺服器的配置,網路安全的配置等等。
如果你要在Linux下進行開發,你必須了解Linux的API,標准庫,也就是libc。如果你
的程序是多線程的,你還得掌握libpthread.so里的函數使用方法。GCC,GDB,LD,AS,AR,以
及Makefile和make等等工具的使用。如果你能掌握find,awk,sed,grep,od,nm,objmp
等實用工具的話,將會大大提高你的工作效率。
這,就是我的信仰。
總之一句話,一種編程語言及庫,一種編程思想和一種信仰。一切OK!
2,領域知識/行業知識
我記得我的第一份工作是銀行的交易開發程序員,當時是一家外包公司把我外派到工商
銀行,我對工商銀行的業務一無所知。不過初出茅廬不怕虎,硬是一個人完成了一個我一無所知的項目,而僅憑我對自己技術實力的自信。
但事後我卻有些後怕,因為我並不明白,為什麼那個整數要乘以個0.456存入到資料庫,
也不知道銀行對數據的精確度是多大,等等細節上的問題我一無所知。那我只能求上天保佑,哪天不要多扣了人家的錢,天啊,這事我也做了?!當然不至於那麼嚴重:)
後來我確實發現自己對於銀行這套業務系統了解起來比較吃力,我寧願花點時間寫些小
的C程序也不願花時間去肯那些苦澀的業務流程文檔。所以在那家公司呆満一年後我辭職了。
我想,大部分程序員都想做一些相對技術含量高的開發工作,像那種整天與數據和數據
庫打交道的開發工作,隨便有點志向的程序員也不願意去做,當然如果錢足夠多的話我還是願意的:)
但現在我發現我錯了。因為這部分也是軟體知識的一部分。就拿我目前的工作來說,技術上不會有太大的困難,但是藍光規格以及其涉及到的規格相當的多,恐怕沒有十年時間無法做到精通。這就是領域知識或說是行業知識。有些人一生只做一件事,還不一定能做好,而我現在只做了不到兩年,雖覺時間不長但也不短,縱是一無所獲。
所以,我覺得自己仍不是一名合格的開發者。軟體開發的基礎知識包括專業知識和行業
知識,如果基礎知識不完整,那麼這個程序員不會是一個合格且高效的程序員。
B. 關於手辦 DX是什麼意思 比如DX11 DX12
手辦DX是精裝版或者豪華版的意思。如下圖:
DX版的做工較為精細,其配色,造型的比例,都較為逼真。
C. 赴日程序員的JAVA之路
你什麼專業
去日本建議先學Cobol
學JAVA,除了學習最基礎的程序的語法,還要學
數據結構,演算法,離散專數學,概率論,這都屬是基礎沒這些編不出像樣的程序.
還有學習JAVA前,最好有相當的C語言和C++基礎
JAVA要看的書,除了最基礎的之外,起碼還要看 <JAVA編程思想>
如果做BS開發還要學HTML JSP AJAX和框架(框架精通一兩種就OK)
資料庫起碼要會基礎的SQL語言,甲骨文資料庫和MSSQL資料庫最好都會.
另外關鍵是思想要活,還要有優化的思想,現在學生的編程基本都不考慮效率,就是實現了功能就OK,這到公司里是要挨罵的....
另不建議赴日工作,國內搞對日外包就OK了,何必到日本受氣去?