時空變幻有感

  玩遊戲的時候,魔獸世界,用得獵人。在70的時候,獸王比較好。後來的版本,有生存比較好,各項收益獸王輸出沒法比。再後來版本射擊獵人比較好,也是由於遊戲平衡趨向的原因,不得不用。

  想起來生存的時候,各項操作比較喫力,還有些技能需要自己卡準時間釋放,精確一點要考慮網絡延遲。在這個版本之前,根本沒有願意去看生存相關的東西,當然覺得之前會生存的人都很牛。後來從一直用獸王切換到生存。也沒有感覺出來太多的不適。想過繼續用獸王,可是很多技能沒有傷害,狂按了半天按得手不舒服也在團隊裏沒有作用。再後來射擊好的時候也想去用獸王,可實際上真的沒辦法比。

  有一些固定的輸出計算公式,告訴着等裝備達到怎樣的等級,用哪種天賦好。沒想到玩個遊戲也只能隨着時空變換,不能說感覺某樣是好的,喜歡某個 樣式就去用那個樣式。大概是自己玩的不夠利索。

  有時候想編程語言的事也是差不多,可能需要換一種編程語言。根據“裝備等級”,在不同的時代用不同的語言。

  比較喜歡java,雖然沒怎麼用它來開發過。最開始用的php,因爲速度確實快,項目小根本沒瓶頸問題。再後來用c#,感覺開啓了另一扇大門。

  java需要配置好多框架,包括maven的使用都比較彆扭,SSH/M,需要自己手動配置。還有各方面的原理在學習的時候也要理清,加上中間語言的解釋執行還有垃圾回收機制,有太多內容需要明白纔可以開發。感覺是這樣。C#的話這些全部被語言包了,連IED都不用選,全部被包辦,免費使用。創建個項目直接能運行,web項目連啥是web容器根部不需要過多理解,用就可以了。沒有說需要下載,需要配置什麼文件。C#有一套自己的框架,而且直接拿來用,也有很多別人開發的包,直接下載,並且不需要考慮下載速度 是否要提前下載後臺下載設置那些。不清楚java現在是否好些,剛學maven下載國外的包會很慢。C#的包基本上秒安裝好。

  接着是配置文件,框架之間的交互最原始的有XML配置。這些在C#中都用最簡便的方式自動配置好。C#有很多便捷的方法和工具,這些工具像是經過很多人長時間堆積出來的,然後合併到C#語言的功能本身。在JAVA裏要自行處理的很多步驟,在C#中可以便捷完成,並且效率普遍比JAVA高。基本上想用什麼功能,那個功能就在手邊。C#和java或許相互學習,不過C#對Java一些繁瑣步驟的簡化出現在很多地方。

  C#相對java來說,面向對象並不強。一些功能的實現實際上是面向過程。方便好用的同時這些功能並沒有明確的分類。更多隻是爲了有這個功能,於是做了這種處理。像string.IsNullOrEmpty()這種方法,初次看到的時候感覺很詫異。如果在Java中不會出現這種思考,因爲它(個人觀察)更多思考業務過程需要什麼,而不是編碼過程需要什麼。

  經常在引用C#訪問http的時候直接拋出異常,系統包不給爲什麼會出現異常,出現了怎樣的異常,直接給了個訪問出錯。可其實訪問出錯是個正常流程,比如沒有找到服務器或者傳入參數不正確對方給了一個錯誤state標識。居然把異常設計進用來處理正常的業務流程。Java中所有的異常都不會是業務流程的一部分,異常只負責處理出現代碼錯誤的情況,個人自己寫的除外。

  還是比較期望能用java,雖然處理速度慢了一些,編程也不方便了一些。它的市場可能在於安全性或者已經有的生態。最近沒有用過java,不過java的框架知識過於龐大,一直沒能用起來過。C#用便捷換取對功能的明確分類,實現功能就可以了,並沒有很去理功能的劃分。有許多編程功能背後的思想都是面向過程,並沒有全部面向對象的氛圍中編程的舒適感。可是系統功能並不是那麼容易劃分到相應的籃子裏,特別當出現新的語言功能需求的時候。C#可以快速實現這個語言功能,並且根據用戶反饋及時做一些小的補丁來方便使用。更多地直接面對了 計算機能做什麼。有很大的靈活性的同時,需要記憶很多零碎的內容。在JAVA編程的時候,所有對當前有用的元素都在附近,設計的思考和封裝都在手邊。C#就快速完成功能,並不那麼在乎這個功能在面向對象的劃分上需要放到哪個地方。

  java需要知道的東西太多了,並且沒有什麼靈活性。想像C一樣操控機器功能,需要了解的知識和各種封裝太多,以及爲什麼要那麼封裝。C#很多時候可以直接做到那些,並且想去比較規範得面向對象的話,自己的代碼也可以那樣寫。

  java中的功能經過一層層包裝,通過包裝使得這個功能有了更清晰的劃分,同時也加深了這個功能的理解難度,實現過程經過層層包裝之後很難簡單透明。畢竟包裝的過程是一種面向對象的思考,每個人對這種思考的處理能力參差不齊。C#沒有那麼多對包裝的思考,只有對機器實現的簡單處理。這種處理方式更多是純粹的算法知識,很容易讓編程人員看明白。或者直接裝進一個黑箱子裏讓人用就行,語言本來來維護這個黑箱子的安全和健壯性。

  使用java需要熟悉包裝規則,並且信任開發包的人能做好包裝。使用C#需要了解一些試用工具的處理,一些編譯器的處理,並且相信編譯器能把自己負責的那一塊在任何壓力下處理好。當設計到很特殊的業務邏輯時候,c#作爲一個常用功能大集合,可用性降低。當設計到常用業務處理的時候,C#能有很快的速度把這些功能實現並確保穩定性。

 在常用業務的區域,java的代碼顯得每一步都平等的艱難,c#卻可以很快實現並穩定。在不常規的業務區域,java的代碼同樣顯得每一步都平等的艱難,C#就已經不可信。不能確定這個語言已經對相應的底層做了及時的更新,如編譯器等,因爲它是遇到什麼再去做什麼,可能需要一個優化穩定的過程。

  當前業務平鋪的環境,大多是常用業務。於是小規模的php或者中大規模的c#開發起來就很有益,用少量的代碼就能做出高效的輸出(大部分實現都被語言本身給完成了)。用java的話,就需要更多的付出實現同樣的功能,同時製造出或許用不到的穩定性和擴展性。可是在安全性要求比較高的領域,還是隻能用java,知識龐大,卻最大程度可控。底層實現過程可控。

  在現在大部分團隊裏,或許用C#就很好。有些即使沒有那麼多安全要求的也在用java,因爲他的積累的拓展包帶來的相對便捷和跨平臺。或許C#已經縮小了這個差距。

  我想用java ,卻也覺得在現有裝等和團隊環境下,沒有必要 “狂按還沒有輸出”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章