如果說為什麼要同時學習這兩種不同的移動平臺,其實有一定的“閑”的因素在裡面。
相對於ios,android我是早半年接觸的。最開始學習的時候也就是j2ee學習的延續,通過看視頻連帶看書學瞭大概一個月的時間,對android有瞭一個基本的瞭解。本來是想做個小項目練練手的,由於各種原因沒有實現,就把android擱在邊上瞭。
後來自己買瞭一個MacBook,於是就看起瞭ios。最開始學習Objective-C的基本語法以及ios初級編程的時候,因為之前的基礎還可以,我用瞭大概4天的時間,說起來也不算是多瞭,然後又是各種原因放下瞭。
這兩段學習經歷使我對移動開發的架構有瞭更加深入地認識。於是上個月開始,我又重新開始學習這倆。
當我再次搭起android的開發環境的時候,我竟然不知所措,我幾乎忘記瞭android是什麼東西,於是用瞭幾天的時候從新從頭開始找瞭基本android入門的書看起來。然而手頭上的書確實很out的,無法趕上時代。對於像我這樣“盲目”追求最新的程序員來講這是無法忍受的。於是我找到瞭最根本的文檔,android的官方文檔。由於英語能力有限之前沒有好好地看過這些東西,為瞭閱讀和學習英語,我就做起瞭翻譯官方文檔的工作。用瞭一周瞭時間看並使用各種工具翻譯瞭幾篇base的文章,結果重新建立瞭android在我心中的體系結構。(說真的其實android的文檔太難翻譯,主要是沒有想java的那樣都是一些比較容易理解的段句子,android的文檔編輯者仿佛是為瞭炫耀自己的文字能力使用各種長句子,讓像我這樣的非母語者很傷神,有時還要推測一些作者的意思。但是後來發現ios沒有這麼系統由結構性的文檔,我就感謝google的厚道瞭)。之後,我用一些我新學到的技術做瞭幾個小的demo。感覺學著無趣,就又開始學習ios瞭。
我本想用同樣的方法去學習ios,畢竟ios7一來變化的比android大的多得多。而且Xcode5之後原來熟悉的東西都不見瞭,原來學ios內存管理是一個重點,Xcode5之前還可以手動選擇是否自己來幹瞭內存,現在是必須交給Xcode,你一用release什麼的就報錯。還好之前學習內存管理還是學的不錯不然現在都無法做相關的測試瞭。(但是從發展的角度講這些改變對於一個語言或者是ios這個系統來講都是不錯的,這樣的強制改變避免瞭像java這樣的碎片化)
我們不妨比較一下這倆的開發區別:
1.開發工具(IDE)的區別
android作為一個開源的系統,它的首選的是最為著名的開源IDE——eclipse。作為幾乎是萬能的ide,eclipse也為開發android提供瞭類似開發web的插件。這使原來的開發者能夠快速地切換到android的開發。最早進行android開發的程序員都有過沒android搭建開環境的痛苦經歷,周來android官網上提供瞭打包定制的android版的eclipse下載,再次降低瞭android的入手難度。另說一句,google還真為android開發瞭一個新的ide,我下下來用瞭一下,結果果斷拋棄,正是比javabean還不如的官方ide。
而ios果斷自負的使用瞭自己的Xcode,而且開發ios還非得Xcode,至少我還沒有發現其他的。如果eclipse是一個現代的ide,Xcode在某些方面更像是後現代的ide。而且隨著ios以及Xcode的發展,有時候會覺得自己寫的代碼帶瞭一些偽代碼的影子,比如裡面的一些帶“@”的關鍵字的語法,就像是偽代碼。Xcode值得一提的是不讓我們去註意View後面的XMl,而是直接給一個誰都看得明白的頁面,而eclipse則還很專業地提供源碼,以至於學習android不少人都是手動編輯xml開始的。還有就是Xcode引入瞭“連線”,將代碼與圖形通過連線的方式關聯起來,相當MVC的感覺。完全將開發者從神降為瞭凡人,可謂是讓人人都能編程的後現代之作。
我總覺得eclipse的靈魂是“Alt+/”給人的快感,在這方面強大的提示功能是Xcode所沒有的,而eclipse的跨平臺性也是值得稱道的。
2.java和Objective-C的區別
從歷史來講Objective-C更為悠久。java舍棄瞭指針的概念,以及卓越的垃圾處理、內存管理機制為人稱道且簡單易學使它能夠花瞭不到十年時間就能成為最受歡迎的語言。然而太多人的關註與奉獻使網絡上出現瞭各種各樣的開源框架,而令人難以選擇。再這java版本的更新卻不真正拋棄一些落後的包或工具類,使初學者學習的時候難以區分。而且java的維護者始終缺乏大版本更新的勇氣,使開發者面對而有難以想說明的痛楚,於是關註度漸漸降低。
而Objective-C,它的誕生時間幾乎和C++差不多。但是,幾年前基本沒幾個人聽過。直到iphone的興起,它的關註度迅速升到前三超過c++,僅次與java,C。但是Objective-C太過於奇葩,帶有一些古老語言的特性,[],@的使用是作為特別的或許也是為瞭表現出它的與眾不同。如果沒有Xcode的輔助性,Objective-C的開發效率不比VC高多少。但從語言來講如今可能是不合事宜瞭,但Xcode的卓越使我們不能僅僅從語言的本身來看待,而相反有瞭一些獨特之處。畢竟OC運行起來比java快得多,而在移動開發領域,這點是很重要的。
3.開發文檔、資料的比較
看過ios的文檔之後,才能體會到android開發文檔的良心之作。相對於android開發文檔的深入淺出,面對ios我不知道從那入手。android文檔的一部分,顯然是一個很好的教程。比一些市面上能買的書還要講的好。而反觀ios,就是開發文檔,你有什麼問題,不清楚什麼方法的使用就找吧。
而網絡上的資料顯然也沒有android的豐富多彩。
綜合來講,我個人還是比較喜歡ios的。基於對美的熱愛,我無法相信一個ide也能做的這樣的漂亮。例外iphone給人的高富帥的感覺,令人想到ios的開發者也是一個高富帥,基於這樣的向往,給我內心紮下瞭很好的印象。