程序員真的需要一台 Mac 嗎?
網上很多教學視頻,那些教編程語言的大多用的 Mac,難道程序員一定需要一台 Mac 才能做好開發嗎?
標準答案不是因為MAC玩不了遊戲而大大提高了工作效率么?
————————
注意!想交流分享商(賺)業(錢)規(方)律(法),工薪族實現財務自由乾貨(騙人是小狗),自我提升、個人成長方法論的朋友——請關注我的公眾號:
話嘮不過了了曾經使用了兩年mac編程,現在換回了win10,我覺得可以說下自己的看法。
很多國外的視頻教程確實都使用的mac,我覺得這個主要還是mac在國外買的挺好的原因。不像國內上萬,在美帝1000多美元並不算特別大的花銷。
再來說說mac的實際開發體驗,除非是純粹的windows開發者,在現今的環境下,linux基本上是無法迴避的,但linux讓人津津樂道的是他的命令行,他對伺服器的支持,但熟悉了圖形界面的開發者會感到不習慣。有人會說什麼vim、emacs大法好,說真的編程是思想,邏輯的表達,又不是打字員,糾結編輯器沒什麼意義,提高自己的效率,把心思放在思想上才是正解。但Linux在圖形界面上沒花什麼心思(全去研究那內核了),這是Linux對開發者不友好的地方。
windwos雖然有vs這個大殺器,但對於linux開發者不夠友好,而且許多社區裡面的工具,只有在linux上才能完美的工作,這也是讓人不爽的地方。
mac的優勢就來了,良好的圖形界面,不會讓人陌生,甚至有超過windows的體驗,除開編程,日常使用也很舒心。具備類似linux的命令行工具,對於Linux 開發者也更加友好,同樣的東西,基本可以直接往linux上般。
但mac真的如此完美嗎?不是的
真正在mac上做linux開發了就知道,這還是有許多區別的,尤其mac畢竟與linux是兩套系統,許多細微的差異很讓人抓狂。這也是為什麼許多項目,都會有單獨的linux和mac教程。再補充一點,作為一個完美主義,我不喜歡把系統搞得亂糟糟的,所以還是虛擬機大法好……
最後,我還是換回了win10,因為可以玩遊戲啊!如果只做開發,我喜歡 Linux。然而我還要做音樂 orz 於是 Mac 是用一個系統能完成所有事情的唯一選擇了。
0:如果你是土豪程序員,請移到最下方
普通程序員1:程序員需要一台好電腦2:買你能負擔的性能最好的電腦3:一般來說,如果只考慮一台電腦,請選擇筆記本4:如果經常出差,請考慮包括電源線2公斤以下的,續航能力也在考量之中5:如果要開發MAC, IOS相關的,請直接選擇水果公司,不要考慮黑蘋果6:其他開發工具鏈,可以任意選擇
7:不管如何,你還是需要有虛擬機,因此建議硬碟要選大一些的。對於土豪程序員,只有買買買!建議是:1. 高速網路2. 有一台自己的工作站可接入,上面系統可隨意虛擬3. MBP 1台
4. X1 Yoga/XPS 任選1台沒見到國什麼教程要求用mac的,一般入門教程不都是用ubuntu嗎?雖然ubuntu不適合長期作為桌面,但是學習成本遠低於mac和windows。mac的主要優點是用起來穩定,缺點是功能少,一般程序員都是一個mac和一個win10 1607吧?而工作的時候一般都不會在這兩台機器上的啊,要麼本地虛擬機要麼遠程。如果是理科專業的,mac最好選1.8w人民幣的那個版本,各種入門級專業軟體都帶得動。如果是學生,可以暫時先不買mac,大部分的學生大二一年的實習收入不足以買個好用的電腦。而對於我這種學渣,就用不上mac或者windows了,ubuntu就夠大學期間使用了。mac和windows是給真正學習的人用的,刷acm的弱菜根本用不到的。
個人認為:
Windows
?支持Adobe等其他常用工具?能很方便的使用IE瀏覽器(進行測試)?不支持常用Linux命令
?文件路徑結構與Linux不一致?國內流氓軟體Linux
?較好的開發環境?支持命令行?不支持Adobe等其他工具?無官方微信客戶端,QQ客戶端(最好用的截屏工具)?不支持微信開發?遊戲有限程序員品種多了,絕對不是所有程序員都適合用MAC吧,以我來說Windows平台要方便得多。
不一定,像我就需要兩台。(奸笑臉)
處女答。看到回答里沒有前端程序猿的身影,忍不住想從前端的角度來回答一下。
總得來說,Mac還是非常受前端歡迎的,前端界的大神例如尤雨溪和TJ等等,用的都是Mac,在很多前端技術產品網站上放的都是Mac系統下的例子。
我用Windows、Linux和Mac都做過前端開發,現在身在一個全員Mac的公司,用了一年多的Mac,我來說說用Mac寫代碼(特別是前端)的優勢吧。
一、更好的命令行支持
隨著Node.js的發展,大量命令行工具出現,前端們有很大一部分時間是在命令行下工作的,好用的命令行可以提高工作效率。1. Mac自帶bash和zsh相比Windows的cmd,bash更加強大,這個基本上不需要討論了。然後Mac還自帶了zsh,通過oh-my-zsh進行配置以後,就很棒了,他有如下功能:- 智能的tab補全:不僅輸入路徑以後按tab可以方便切換,更好用的是,輸入npm run 按tab,可以自動補全當前package.json中定義的script;輸入git checkout 按tab可以列出當前倉庫的分支和提交進行補全等等。
- 強大的插件機制:支持各種插件,例如autojump,輸入一個「j"加目錄名的一部分,就會根據訪問頻率自動跳到你要的目錄,一鍵切換。
- 多樣的主題:zsh的主題可以實現在命令提示符中顯示各類信息,非常直觀,例如顯示git分支,可以防止提交到錯誤的分支。
更多參考:為什麼說 zsh 是 shell 中的極品?
另外Windows下要裝zsh也是可以的,有個叫babun,用著的確很舒服,可是在babun上根本跑不了node.js啊,所有前端工具統統作廢,即使有人跑起來了問題也一大堆,因為node.js官方已經宣布不再支持cygwin了(見node wiki)。而且早期的node.js對Windows兼容很差,後來有了微軟加入才好轉。
2. Mac下可以跑shell腳本
用shell編寫工程化腳本非常方便,由於很多前端工具都是在*nix環境下開發的,相關的支持做的很好,另外Mac自帶的各類命令行工具也可以很方便的在shell腳本中調用。我去看了一下幾個主流前端框架的源碼,都只有shell腳本,並沒有見到bat腳本,例如Vue.js的 build目錄下有三個shell腳本,分別用來跑ci、打普通包和Weex包;React的script目錄下有shell腳本進行自動化處理;Angular的源碼中就更多了,遍布在各個地方,可以在File Finder中輸入「.sh」查找到。3. Command(?)鍵
在Windows 10 之前,要想在命令行中粘貼東西,只能通過滑鼠右鍵,甚至在有些命令行窗口中,只能右擊標題欄才行,右擊屏幕黑色區域無效。Windows 10 改進了這一點,能夠使用Ctrl+C複製和Ctrl+V粘貼,但僅僅這樣子是不夠的。在Mac終端下,我們可以用command組合鍵進行文本操作,ctrl組合鍵進行命令控制。加上各類終端軟體都會基於command鍵,建立一系列快捷鍵,例如iTerm2可以按?D拆分窗口,?T新建標籤,十分方便,又不會和ctrl鍵衝突。二、更容易維護
1. 垃圾軟體少2. Homebrew3. Time MachineMac不需要安裝殺毒軟體,也沒有XX全家桶,更不需要安裝各類驅動,維護起來非常方便,很大的提高了工作效率,也為我們公司的IT部門節約了工作量。另外有homebrew,很多開發工具都可以一條命令安裝、更新和卸載。另外Mac有個Time Machine,可以對文件進行備份,並且單獨查看、還原每個文件,就像git版本管理一樣。最佳的用法是,我實習結束回校,要歸還MacBook給公司,由於我一直有用Time Machine的習慣,正式入職第一天領到新的MacBook後,插上帶有備份的移動硬碟,選擇從Time Machine還原電腦,然後玩2個小時手機(捂臉,主管你看不到對吧),什麼都不用做,我的開發環境又回來了,和走之前一模一樣,立馬開始工作。那天其他人都花了一整天來配置環境,好辛苦。。三、圖形設計軟體支持
說了上面幾點,其實很多Linux也可以做到,但是對於一個前端程序猿來說,圖形設計軟體的支持很重要,不然怎麼愉快的切圖啊!Linux下沒有Photoshop,沒有Fireworks,曾經用wine模擬過,但是經常遇到切圖切到一半卡死的情況,然後UI在一旁笑而不語,留下一臉尷尬的我。在Mac下可以安裝Adobe全系列軟體,還有很好用的sketch,這個只在Mac才有。現在我們公司的UI已經不用Photoshop,全都用sketch了,我也試著用sketch做過一些東西,方便高效,有很多前端css的思想在裡面,而且可以直接複製矢量圖為svg,相比之下感覺Photoshop更適合修照片,不適合做UI。總結一下,我認為對於一個前端程序猿,最需要Mac的地方是他強大的命令行支持,帶來了更高的效率和更好的體驗,其次是擁有優秀的圖形設計軟體。
其實Mac也有很多不好的地方,就像其他知友說的一樣,不合適做Windows軟體開發,性能也不是很好。我也絕對不會告訴你們,我入職第一天領到的全新MacBook Pro是不能開機的,就像那個帶了條死魚來觀察的幼兒園小朋友,其他人的都是活的,就我的黑著屏幕什麼都不能做,後來IT部門馬上給我換了一台新的。你需要一個桌面工作站,起碼得能30分鐘編譯個android出來吧?
來, 我給你個配置清單:主機: P710, 聯想(ThinkStation)P710圖形工作站(P700升級款) 含鍵鼠 雙顆E5-2690V4 128G+512G+2T*2+M6000顯卡【圖片 價格 品牌 報價】-京東顯示器: 雙顯示器的黑邊很難受的. 來這款吧: 三星(SAMSUNG)C34F791WQ 34英寸1500R震撼曲率100Hz量子點技術曲面顯示器(三星大法)鍵盤: 講真我不燒鍵盤的, 這個留給 @開源哥 推薦, 我這裡只推薦一款: https://www.trulyergonomic.com/store/truly-ergonomic-mechanical-keyboard-soft-tactile-kailh-cherry-mx-compatible-brown-keyswitches-227-english打不開鏈接的自己準備梯子.滑鼠: 我現在用M570.當然這只是桌面機, 你還需要一個移動工作站, 我推薦P51.
你還需要一個輕薄本, 方便開會/出差之類的瑣事, 我推薦X1 5th.=========================怎麼總有人跟我提只有mac的文字渲染好? 現在應該是只有win10的文字渲染差才對吧?來個默認的ubuntu 1604下不修改任何渲染選項, 不安裝fontconfig-infinality的4k屏幕截圖吧:
然後說jre在linux下沒有好的字體表現:截圖工具對畫面有壓縮.是的。workflow好用的一筆,默認字體好看,沒藍過屏,各種developer tools也更流暢最重要的是假期在床上不用滑鼠就可以隨時高效率工作
日常使用 MacBook Pro 15", 短期旅遊等情況攜帶 MacBook Air 13", 還有一個高配置 workstation (Windows 10) 打遊戲用。說公司發的什麼的就別來添亂了,我這好歹都是自己買的。
堅決反對高票 @BennyBao 等。說 Windows 更好用還舉出種種例子說 macOS 上面效率不高的,都是不知道怎麼高效率的用 mac.
首先要說的是 Alfred 大法好。Alfred 不僅替代 spotlight, 還可以自己寫一些 workflow 來 automate your tasks. 如果一個程序員不去寫自己的 workflow 的話那麼還真的不是一個好程序員。
舉個例子,我想直接在 Terminal 裡面打開一個 folder, 我根本不用先開一個 Terminal 然後 cd cd, 我直接 command + space, 然後 "ter &
", 如下圖:
同理我要是想用 Intellij 打開一個 project, 直接靠 keyword ("int") + partial folder name, 如下圖:
類似的還有直接去搜索 Maven Artifact, e.g. JUnit4
諸如此類有很多,我寫的 workflow 其實比較少,如下圖:
還有上面答案里寫的不能 copy path? 我直接 command + shift + C, 而且這個 hotkey 只有在 Finder 裡面起作用。怎麼做到的,還是 Alfred:
然後 MacDown 是我見過最好用的 Markdown editor, 可以 customize CSS, real-time rendering, etc., 只支持 mac:
其他的神器還有 TextExpander, Dash, etc. 單說 Developer Tools 我就能給你截一屏:
而且可以隨意換 App icon, 比如那個 Sublime Text 和 Transmit 都是我自己換的。
其他的包括 mac 和 iOS devices 之間的協作。蘋果的 Photos 有一個 Desktop app, 這可是 Google Photos 都比不了的。所以我似乎是白買了一個高配置的 Windows desktop 因為只有每半年打幾次遊戲用。
所以總結一下,說 Mac 不好用的都是因為自己不會用。
===============================================================
更新一個神器 Go2Shell - ZipZapMac
在 Finder 裡面任何一個位置,只要點下圖中那個東西,就可以 "open a terminal window to the current directory in Finder".
另一個神器 Yoink - Improved Drag and Drop File Management on the Mac App Store
上面那個抱怨拖拽的時候必須把兩個窗口並排?並不用啊,這個 Yoink 在每次你開始拖拽的時候會在右邊出現一個臨時存放的地方,你可以放在里,再拖到別的地方去。或者從 Chrome 裡面也可以直接拖圖片過去。如下圖
不做ios、macos的開發,要mac來幹嘛?要做ios、macos的開發,難道不該配一台mac?個人不贊同用MAC電腦裝windows的做法,實在是有點2。就好像買了個網球拍去打羽毛球一樣。另外,個人認為,真正有品位的程序員,應該買工作站!
用一個mac就能被你們罵成那樣,其實怎麼用才能好呢,我覺得吧,習慣,習慣就好。
貧完講正工作上便利,16年11月用上air,不pk性能強弱,TouchPad各種手指組合操作,看資料,回復郵件,爽歪歪。後經@高爺 @瀟澗 輔導,讀了池老師大作,池老師可是堅持用原生,word天,我拿到新版mac統統換掉,所以嘛,找出自己最舒服的姿勢,表怕麻煩。我就在知乎里看過ubuntu配置MLdonkey的兄弟,自個試了下,那個蛋疼啊,一邊配置一邊噴。主流三大OS Desktop有各自非常好用的tools,對於寫Android App的同學推薦mac, 別的不說,GDD大會上,Googl的工程師標配。最後,利息相關,女友是忠(nao)實(can)果粉 , kekeMacBook Air輕薄的特性現在無數超極本也差不多了,基本算是不算特性的東西了。。。反正我所謂的寫代碼就是ssh到一台Linux機器上寫代碼,在哪都差不多,在Windows要專門的軟體,Mac直接用terminal,而且字體好看很多。。。所以究竟好不好用,還是要看場景的,反正我覺得蠻好用的。。。
我現在用一台MBP2015
之前裡面裝了macOS,外掛的SSD(質量不太好)里有一個WinToGO但是因為最近回家,MBP2015成了我唯一一台性能足夠強的電腦(之前有台式機)於是現在本機裝了單系統Win10,macOS放到外掛SSD上了因為在使用的時候遇到了這些問題:1、macOS對miniDP轉VGA轉介面的支持很差(高度懷疑水果故意製造不兼容),同樣的轉介面和顯示器,在macOS下只能用1024X768,在Win下就是正常的(同一台電腦)。類似的情況還在其他同事的電腦上(其他顯示器和VGA轉介面)也見過,想正確輸出解析度只能用DP轉HDMI2、Finder還是一如既往地難用——Win下使用TotoriseGit配合FileExplorer操作效率極高,大多數情況下顯著高於命令行3、窗口管理器難用得簡直受不了,弱智一樣的分屏功能在10.12中沒有任何改進4、對於C++開發者來說,macOS對Linux環境的模擬程度甚至不如WSL——至少後者沒有封鎖Linux網路相關的系統調用,直接導致我的程序根本就編譯不通過。在Win10下大部分工作可以在本機完成,而在macOS下就必須得開虛擬機了,另外valgrind在WSL下不能運行的bug目前正在修復,並且已經有了workaround的方法,而在macOS下通過Homebrew安裝的valgrind行為非常奇怪,即使是一個全程沒有堆對象的Hello World它都會給你報「possibly lost」……這直接導致我的內存泄漏檢測器不能正常工作直接結果就是同樣是開發Linux上運行的C++程序,Win的開發效率比macOS高得多……
順便,還有一條不是理由的理由——MBP2015的硬體性能是跑得動守望屁股的,雖然畫質糙了點但也綽綽有餘了,然而macOS……
對了,所謂的開箱即用基本上也是胡說八道——一個只有白板VIM和Python 2.7,連編譯器都沒有的系統能用來幹活?要知道,macOS自帶的原生VIM不做配置的話甚至連最基本的語法高亮都沒有(正常情況下Linux版VIM就算什麼插件都不裝也是支持語法高亮的),果廚有什麼臉去指責Win記事本不好用?嫌IDE太大的話Win下MinGW 和Visual C++ 2015也同樣可以單獨安裝…老碼農了,用了macbook pro大半年。說真的mac系統絕逼降低了我的工作效率。
1. Finder太難用了,跟資源管理器完全不在一個等級上。作為一個碼農竟找不到合適的方法複製出當前文件夾的路徑。
2. 鍵盤沒有del,home,end鍵簡直不能忍。3. 對壓縮文件的支持就是點一下以後自動整體解壓??4. 批量查看查找圖片十分不方便。5. 我用滑鼠去拖拽應用程序里最右邊的滾動條,一不小心就會把這個整個應用窗體拖走。6. 想在兩個應用之間拖拽文件就是一場災難,你得先把兩個應用的窗體調整到合適的大小和位置才能開始操作。總之,我感覺mac和ios在某一點上是比較相似的——適合處理單任務場景。政府機關 + .NET程序員 + 資料庫程序員看了那麼多回答,我可能寫了假程序…
然而,作為後台開發,我覺得就算Mac不是必須的,但是Linux絕對是必備的,然而Mac支持大多數的Linux命令,而且軟體的支持率高於Linux的各種發行版,最後 屏幕也是非常養眼
不
推薦閱讀:
※為什麼 Mac 適合編程?
※在前端開發中,你曾經遇到過什麼大坑,很久才跳出來?
※程序編譯器是否存在這種機制?
※如何評價《AWS S3 雲存儲莫名消失:各大網站和 Docker 紛紛中招!》?
※初學 C/C++ 時有哪些需要掌握的好習慣?