當前位置:
首頁 > 科技 > 離開 PC,在 iPad Pro 上也能編程了?

離開 PC,在 iPad Pro 上也能編程了?

論基於 iPad Pro 平台編碼的可行性。

作者 |Andrew Brookins

譯者 |彎月

責編 | 屠敏

出品 |CSDN(ID:CSDNNews)

2017年我曾提出過一個問題,「你能在iPad上寫代碼嗎?」(https://andrewbrookins.com/tech/can-you-write-code-on-an-ipad/)時至2019年的今天,答案基本上一樣:不太可行。不過如今的事態有點意思了。

註:這篇帖子大部分的內容講的都是Web應用開發。

在iOS上「編程」:Shortcuts應用

iPad依然缺乏任何原生編程的能力。也就是說,沒有任何辦法訪問Unix shell,也無法安裝homebrew和C編譯器。

iOS 上唯一接近編程的原生功能就是Shortcuts應用,這個應用能將小型任務自動化,並將應用連接到一起。

Shortcuts是流行的Workflow應用的蘋果貼牌版本。你可以使用Shortcuts將一系列動作連接到一起,比如打開免打擾模式、播放特定的專輯(我推薦The Algorithm的《Brute Force》),並打開SSH客戶端或文本編輯器。

Shortcuts可能對某些人有用,但我不怎麼用,它也不是編程!

使用原生iOS文本編輯器編輯文件

但並不是完全沒有希望。首先,如果你肯退一步,把iPad Pro看成一個瘦客戶端,與伺服器配合使用,那還有點可能。有一些很不錯的SSH應用,比如Blink。但你不一定需要直接連到伺服器上。如果你更喜歡在iPad上原生地進行編輯,並弄一套流程將代碼上傳到雲伺服器上,那也是能做到的。我們來看看這兩種方式。

你不太可能在iOS上運行代碼,除非是Python代碼。

如果你是個Python開發者,那麼在iPad上直接運行程序還有點可能。Pythonista應用已經從一個純粹的、致力於iOS自動化的Python文本編輯器成長為一個可定製的Python開發環境,自帶了許多主要的庫,如NumPy等,自帶一個用Python實現的類似bash的shell,還支持插件。

至於Python之外的其他語言,我還沒有找到任何能在iOS上用的編譯器或解釋器。

原生iOS編輯器變得越來越好

現在出現了很多很不錯的不帶解釋器或編譯器的文本編輯器。比如GoCoEdit和Textastic提供了許多基本編輯操作之外的功能,比如模糊查找等,已經接近桌面編輯器了。

這些編輯器可以通過Git和Working Copy應用以及蘋果自帶的Files應用來配合使用,從而產生一些有趣的效果。Working Copy可以檢出一個Git代碼倉庫,並能夠使用GoCoEdit之類的應用進行編輯;在編輯器里作出的修改會自動反饋回Working Copy,然後就可以進行提交了。

iOS文本編輯器缺失的功能

但是,沒有任何編輯器自身能夠提供真正的軟體開發需要的體驗。我說的是類似於Dreamweaver的體驗,而不是像Emacs那種體驗。

缺失的重要功能之一就是項目搜索,即給定一個目錄或一組目錄,允許用戶在其中搜索所有文本。如果你使用GoCoEdit或iVim,那麼可以利用Working Copy的搜索工具達到類似的效果,該搜索工具能提供該功能,查找文件並從分享菜單中選擇「open in GoCoEdit」之類的選項來編輯。Textastic出於某種原因並沒有提供功能。總之,這個功能「能用」,但估計你達不到想要但效果。

關於iVim的邊註:它現在越來越好了。現在可以支持.vimrc文件,也可以在應用本身的文件系統中下載插件。用Vimscript編寫的插件應該都能正常工作。還要注意,因為它是Vim 7,所以沒有非同步功能。

但是,使用iOS文本編輯器時,就不要考慮Web應用開發中的常見模式了。除非你是用Pythonista,否則iPad上不可能用伺服器來運行代碼,所以你需要一些機制將文件傳到其他地方運行,比如傳到伺服器上,或者無伺服器平台上。2019年有許多方式可以實現這一點,比如通過Pythonista、Zapier、IFTTT或在Shortcuts中使用Siri語音命令。如果你喜歡在iPad上寫代碼,那你可以花大把的時間來試試這些方式。

這些編輯器也都不提供任何linter或代碼格式化功能。iOS的設計導致了在編輯應用之外使用linter或格式化工具只能通過另一個接受文本作為輸入且支持linting和格式化的應用進行。否則,編輯器必須提供二進位文件,比如gofmt。對於使用解釋語言編寫的工具,估計編輯器必須自帶整個編程語言,或者模仿Pythonista的做法。

iOS本身的消息傳遞機制非常酷

如果嘗試用iOS做一些重要的事情,做得越多,你就越能體會到它的消息傳遞機制。iOS上的應用程序不會通過文件或系統調用互相交互,或與操作系統交互,而是所有應用程序都會互相(以及與操作系統)發送消息並接收消息。

因此,你在Files應用中查找文件,但實際上找的並不是一組文件。更像是一個能發送並接收有關文件的消息的地方,該消息可以在iPad上的所有應用中使用,包括iCloud Drive。

任何需要使用文件的應用都添加了更多高級功能,來利用其他應用支持的文件相關的消息操作,所以許多文本文件現在都可以打開另一個應用暴露的目錄或文件(這是iOS在2019年的一個「進步」)。這種方式打開的目錄通常會出現在應用的側邊欄中,如果這些文件是本地文件,那就可以一直訪問。

最終你會覺得這種功能非常好用、非常自然;回到桌面電腦上,你就會覺得缺少一個一致的「分享」按鈕。要是iOS上有專業的文本編輯器、編譯器、解釋器、Web伺服器就更好了。

利用SSH連接到真正的計算機上

你也可以使用Blink或其他SSH應用連接到伺服器上,執行任何代碼,並在伺服器上使用Vim或Emacs,那麼通常的Web應用的開發方式——編輯文件用動態語言寫代碼,等待應用伺服器載入編輯後的文件,再刷新網頁——依然可以使用。

當然,你需要在iOS中刷新網頁。我推薦使用iCab,因為它提供許多自定義選項,最值得一提的就是它提供了iOS上最好的鍵盤快捷鍵。

2019年,我應該在哪裡運行伺服器?

如果你需要遠程伺服器的強大功能和靈活性,以及像Vim這種真正的編輯器,那麼現在有更多的選擇。

當然,你可以使用Linode、Digital Ocean等VPS。這些很好用,但缺點就是它們在可再生能源方面不太好。

Google使用100%可再生能源,Google Cloud Shell也能為你提供微型伺服器,帶有持久化的存儲,還自帶了開發工具,一切都是免費的。Google Cloud Shell應用可以在iOS上原生地打開Cloud Shell會話。但是,向該應用里粘貼代碼時要注意!你還需要在iOS瀏覽器中啟動Cloud Shell來進行一些設置,比如字體大小等。而且該應用無法接收鍵盤按鍵,至少在屏幕虛擬鍵盤上不行。

除了使用Cloud Console應用之外,還可以連接到跳板伺服器上,使用gcloud命令行工具。可以從終端上使用最近新加的命令 gcloud alpha cloud-shell ssh來連接到Cloud Shell中。GCP的「永久免費」功能包括一個f1-micro實例,可以用作跳板……它也可以直接當作VM使用。

另一種方法是用一台舊的Mac電腦當作伺服器,這樣可以進行許多有趣的事情,比如在iPad上使用iCloud Drive,還可以使用osascript給自己發送文本消息。這樣一切都在掌控之中了。蘋果復活了Mac Mini,它可以作為很不錯的家用伺服器或桌面電腦,與iPad配合使用。(或者可以買一台真正的便攜電腦。)

從iOS瀏覽器中訪問開發用的Web伺服器

幾年前如果你要在遠程伺服器上開發Web應用程序,你可能需要在能公開訪問的埠上運行開發伺服器。現在,有個應用能夠支持SSH隧道了!

如果想訪問應用伺服器(如Django的開發伺服器),首先你要使用SSH Tunnel應用,建立到伺服器(你的計算機)的隧道。先在伺服器的/etc/hosts上定義一個「localhost」之外的主機名,指向127.0.0.1。然後依照SSH Tunnel網站上的指南,在你手頭的iOS的網路設置中配置正確的代理設置。

在經歷一番痛苦的設置後,就能在iOS瀏覽器中輸入你指定的主機名(如old-faithful)和你的應用伺服器使用的埠,比如http://old-faithful:4000,來載入應用了。

瀏覽器開發工具怎麼辦?

如果需要調試Web應用,那麼可以使用一個名為Inspect的開發工具。它挺好用,儘管沒有像桌面瀏覽器那樣健壯的JavaScript調試功能。但是除了JS調試器之外,Inspect有大多數你需要的功能:CSS/HTML查看,JS控制台,所以至少能夠使用console.log調試。

2018年以前,在iPad上開發Web應用的最大障礙之一就是缺乏像Inspect這種開發工具。使用這些工具就能在iPad上開發Web應用。是不是很不錯?我也不知道。可能並沒有。

總結

與2017年相比,2019年的iPad和iOS基本上沒太大變化,至少在編程方面如此。真正發生變化的是開發者們為那些想在iOS上寫代碼的人做了越來越多的應用。

考慮到iOS已經12歲了,直到現在才出現能比得上Dreamweaver的文本編輯器,以及幾乎沒有任何能真正編程的應用,我估計真正實現在iPad上寫程序需要等到2037年。

對此,你怎麼看?

鏈接:https://andrewbrookins.com/technology/coding-on-ipad-pro-2019/

作者:Andrew Brookins,Ruby和JavaScript雲架構工程師@IBM。

熱 文推 薦


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

程序員面試 IT 公司,這些細節一定要注意!
5G 爆發前夕,這些科技巨頭們聚在一起「密謀」了些什麼!

TAG:CSDN |