當前位置:編程學習大全網 - 編程語言 - Web 前端和 iOS 開發,妳會選哪個?

Web 前端和 iOS 開發,妳會選哪個?

前端和終端作為面向用戶端的程序,有個***同特點:需要依賴用戶機器的運行環境,所以開發語言基本上是沒有選擇的,不像後臺想用什麽就用什麽,iOS只能用Objective-C,前端只能javascript,當然iOS還可以用RubyMotion,前端還能用GWT/CoffieScript,但不是主流,用的人很少,真正用了也會多出很多麻煩。

這兩者有個有意思的對比:變量/方法命名的風格正好相反。蘋果壹直鼓吹用戶體驗,寫代碼也不例外,程序命名都是用英文全稱並且要多詳細有多詳細,力求看變量和方法名就能知道是幹嘛的,例如application:didFinishLaunchingWithOptions:。而js因為每次都要從網絡下載,要力求減少代碼體積,所以變量方法名是盡量用縮寫,實際上有代碼壓縮工具,無論變量名寫多長最終上線的效果是壹樣的,但大家也都習慣了用短的命名,例如上述objc的application:didFinishLaunchingWithOptions:方法在js裏習慣的命名是:$()。

objc與js都是動態語言,使用起來還蠻像,但objc是編譯型,速度快,很多錯誤也能在編譯過程中被發現,js是解釋型,性能依賴於解釋引擎,即使在強勁的v8引擎下性能也趕不上編譯型語言,語言太動態,變量完全沒有類型,寫起來爽,debug起來稍微費點勁。壹直感覺js輕巧靈活放蕩不羈充滿各種奇技淫巧,objc中規中矩沒c++ java那麽嚴肅也沒有js那麽靈活。

線程

前端開發幾乎不需要線程這個概念,瀏覽器實現上頁面HTML和CSS解析渲染可能與js不在同壹個線程,但所有js代碼只執行在壹條線程上,不會並發執行,也就不需要考慮各種並發編程的問題。在新的JS特性中可以創建worker任務,這樣的任務是可以另起壹條線程並行執行的,但由於並不是所有瀏覽器都支持,不同線程傳遞數據各個標準定的還不壹樣,使用場景也少,似乎沒有大規模用起來。對於數據庫操作/發送網絡請求這樣的任務是在不同於js代碼執行線程的,不過這些都由瀏覽器管理,前端無需關心也無法影響這些線程,只需接收事件回調,不需要處理任何並發問題。

終端開發需要大量使用多線程,iOS有壹條主線程,UI渲染都在這個線程,其他耗時長的邏輯或者數據庫IO/網絡請求都需要自己另開線程執行,否則會占用主線程的時間,導致界面無法響應用戶交互事件,或者渲染慢導致滾動卡頓。程序邏輯分布在多個線程裏跑,需要處理好各種代碼並發執行可能帶來的數據不壹致/時序錯亂之類的問題,並發也導致有些bug難以排查,壹不留神就掉坑,需要適當用壹些隊列/鎖保證程序的執行順序。iOS提供了壹套多線程管理的方法GCD,已經把線程和隊列封裝得非常簡單易用功能強大,比其他端或後臺是好很多了,但還是會花大量功夫在處理多線程問題上。

  • 上一篇:銑邊機怎麽使用方法_銑邊機安全操作規程
  • 下一篇:斯坦福畢業生遭矽谷爭搶:高薪就業或自主創業
  • copyright 2024編程學習大全網