Re: [麥書] 用mac寫程式的好處

看板MAC作者 (殺人貓™)時間13年前 (2012/04/07 07:37), 編輯推噓7(7060)
留言67則, 9人參與, 最新討論串3/8 (看更多)
→ Killercat:ram吃得凶跟OS底層API策略比較有關係,很難說好還是不好 04/07 06:57 → Killercat:OSX本來就是傾向於"盡可能放記憶體給程式吃" 04/07 06:57 → Killercat:你記憶體充足那就會無敵順(這應該就是前面同配備osx會比 04/07 06:58 → Killercat:win7表現好的重要原因之一) 不過記憶體不夠就很麻煩 04/07 06:58 → Killercat:尤其osx的swap其實並沒有win的pagefile效率那麼好 :Q 04/07 06:59 → Killercat:不過我選mac當開發用機有幾個很重要的原因分享一下好了 04/07 07:00 → Killercat:1. android device幾乎不用灌driver就能正確驅動 04/07 07:00 → Killercat:2. 相對好用許多許多的unix based terminal 04/07 07:00 → Killercat:3. 最重要的,這trackpad真是讚阿 XDDDDD 04/07 07:00 → Killercat:4. xcode 5. 強迫自己用POSIX標準寫東西 04/07 07:01 → Killercat:不然老實講我是.net c#派的 這個語言真的太棒了 XD 04/07 07:02 → Killercat:算了回一篇好了 XD 04/07 07:08 來分享一下我自己為什麼選擇mac當開發機好了, 順便聊一下普通人對osx記憶體策略的誤解 OSX從10.3以來(我沒記錯的話)記憶體策略一直都是盡可能的最大化使用 他們的想法是"Unused memory is useless memory" 這策略理論上是正確的,至少在大部分的情況下 OSX記憶體策略來講,讓我們打開Activity Manager看一下 他記憶體一共分成四大區塊 : Free, Actived, Inactived, Wired 其中我們"真正"吃到的是Wired跟Actived,差別在於Wired不會被Paged or swapped (也就是不會被寫入硬碟:在WIN的說法叫做虛擬記憶體或者PageFile) 而inactived則是最近quit的一些application占用的記憶體,雖然跟free有點差 但是在大多數的情況你可以當作他等同free 所以其實OSX吃的記憶體恐怕沒有大多數人想的那麼多 XD 但是事實上一個程式吃的wired+actived來講,osx的確是比win7來的多 (尤其VM系列 更是多上不少) 前面提過他的策略是盡可能多吃記憶體換取比較順暢的使用者體驗 這種策略不能說好或者不好,但是優點很明顯,缺點卻一樣明顯 在記憶體充足的場合中這樣是很讚的,但是記憶體不夠的場合就會出現問題 OSX也是吃swap(他的swap檔案在/private/var/vm/ 有興趣的人自己去翻一下) 但是他的swap事實上校能比linux的swap FS差一點 (linux swap吃自家的FS所以... 另外我不知道他跟mkswap搞出的swap效能高低) 而且也比windows的pagefile來的差 加上這種記憶體策略下,很容易就會讓部分常常執行到的東西掉進swap 然後他的swap不良造成速度低下 -- 更慘的是有時候wired不夠就會開始靈異現象 (osx的記憶體吃光光靈異現象在開發上不算少見,lion以後好一點) win7很少有記憶體不夠造成當機或者靈異現象 我家的電腦以前4g, 有一條記憶體偷偷壞掉了所以變成2g我卻不知道 但是雙開VS+TES5只是覺得ㄟ奇怪怎麼電腦便那麼慢 硬碟怎麼老是狂轉 但是就是不會當機或者靈異現象 XD 後來才注意到阿娘威怎麼記憶體剩下2g... osx其實比win7還需要重開機阿(經驗談)... 只是次數都不多就是了 ok上面聊到了OSX的記憶體策略,有優點也有缺點。下面分享一下為什麼我喜歡用osx開發 1. android device幾乎不用灌driver就能正確驅動 我自己是開發android為主的,他對於每支手機或者device幾乎都是插上就能用 linux的話要自己寫usb定義檔(煩) windows的話要灌每家不同廠商的USB Driver 當然,google是有提供一個公版的win usb driver 但是那個不是每隻手機都能用 :Q 2. 相對好用許多許多的unix based terminal 這個不用多說,這幾乎就是我選擇linux/osx而非windows的最大理由 但是osx又有一點比linux好的地方,在terminal裡面,事實上ctrl-v / ctrl-c 這兩個是有特殊意義的,所以linux的terminal剪下貼上非常麻煩 但是osx用cmd-c/cmd-v取代了ctrl,讓terminal方便度增加相當多 3. Trackpad 這可能不是很多人選擇的理由,但是對我這個喜歡拎個電腦到處跑的人來說 有一個能讓我完全不會想外接滑鼠的好cursor操作介面是一個非常亮眼的亮點 即使是我現在我都仍然是買Magic Trackpad外接我的mac 而非mouse 4. xcode 這個不用說,開發iOS非這個不可。不過老實講我自己是很討厭objc的 XD 只是剛好工作也需要開發一些lib for iOS 5. 強迫自己跟別人POSIX標準 這個應該很多人有這種經驗,接手一組code想要重複利用結果發現編譯錯誤一堆 仔細一看裡面居然充斥了一堆win32 api像是CreateThread(...) CSocket... 為什麼不乖乖用POSIX標準的__beginThreadEx跟SOCKET呢(怒吼) 6. (這是設計比較碰的到的問題) OSX的色彩比較正確 這篇前面剛好有人推文提過,請在本版搜尋"螢幕" 老話一句,我個人是C#派,非常喜愛.net。但是即使如此,我還是選擇mac當開發機 雖然在osx不能跑visual studio,不過大不了VM或者用TeamViewer/VNC連線回家寫阿 反正工作來講大多數都還是碰objc跟java比較多 XD 這些經驗跟大家分享一下參考一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.252.25 ※ 編輯: Killercat 來自: 123.192.252.25 (04/07 07:39)

04/07 08:27, , 1F
推這篇
04/07 08:27, 1F

04/07 08:52, , 2F
推這篇+1
04/07 08:52, 2F

04/07 08:53, , 3F
教我寫ui+1
04/07 08:53, 3F

04/07 09:52, , 4F
推這篇++
04/07 09:52, 4F

04/07 09:54, , 5F
Terminal 環境對我而言真的是最重要的
04/07 09:54, 5F

04/07 09:54, , 6F
盡量把記憶體用光不是理由,同樣2G RAM的機器不跑其他東西
04/07 09:54, 6F

04/07 09:54, , 7F
Win 7 64-bit和Lion的順暢程度就有差,所以本身OS在記憶體
04/07 09:54, 7F

04/07 09:55, , 8F
管理上我不覺得OSX比較優秀.....
04/07 09:55, 8F

04/07 09:55, , 9F
裝個 cygwin 什麼的總是讓人感覺很累贅
04/07 09:55, 9F

04/07 09:55, , 10F
另外OSX的unix環境只是相對好用,比不上原版的Linux...
04/07 09:55, 10F

04/07 09:56, , 11F
以我的工作環境來說,需要build android image,OSX很麻煩
04/07 09:56, 11F

04/07 09:57, , 12F
某些Linux可以用的套件就算給你Mac port也沒救.....XD
04/07 09:57, 12F

04/07 09:57, , 13F
這樣我不如直接用Linux就好, 說真的除了XCode以外Mac對我來
04/07 09:57, 13F

04/07 09:58, , 14F
說就是拿來收信上網專用.......
04/07 09:58, 14F

04/07 09:59, , 15F
除了那個Apple Logo,寫程式弄台Thinkpad灌Linux簡單一點
04/07 09:59, 15F

04/07 10:11, , 16F
C# .net 真的做得很好寫...
04/07 10:11, 16F

04/07 10:11, , 17F
三樓教我寫ui+1 (咦)
04/07 10:11, 17F

04/07 10:37, , 18F
@lincho,OSX的unix環境是bsd體系的,與linux的gnu體系有差
04/07 10:37, 18F

04/07 10:37, , 19F
還是要看工作性質,如果要做底層的工作還是Linux比較好
04/07 10:37, 19F

04/07 10:40, , 20F
什麼叫原版的linux? 你知道linux是什麼東西嗎?
04/07 10:40, 20F

04/07 11:00, , 21F
maa... build Android image on non-case-sensive
04/07 11:00, 21F

04/07 11:00, , 22F
的問題在android前陣子不只是麻煩 根本是bugged...
04/07 11:00, 22F

04/07 11:01, , 23F
不知道現在休的怎樣就是。這個我也是弄個ubuntu在開發
04/07 11:01, 23F

04/07 11:01, , 24F
反正也不常寫這東西 睜隻眼閉隻眼嚕
04/07 11:01, 24F

04/07 11:01, , 25F
嘿..有人問我之不知道什麼是Linux...:p
04/07 11:01, 25F

04/07 11:01, , 26F
其實不只啦,minicom在iTerm底下也怪怪的,總之小問題很多
04/07 11:01, 26F

04/07 11:02, , 27F
我朋友做底層的買了一台MBP之後還是乖乖換回Thinkpad....
04/07 11:02, 27F

04/07 11:02, , 28F
不過說真的 常用的東西port跟homebrew找不到還滿難的
04/07 11:02, 28F

04/07 11:02, , 29F
連冷門到不行的wireshark都有人幫port了....
04/07 11:02, 29F

04/07 11:02, , 30F
說Mac寫程式好用的大概就是寫App的吧,其實我覺得你說寫
04/07 11:02, 30F

04/07 11:03, , 31F
寫linux(如kernel層級的東西)當然還是用linux 包含\
04/07 11:03, 31F

04/07 11:03, , 32F
POSIX程式,反過來說這種程式在Windows上也是難用的要命...
04/07 11:03, 32F

04/07 11:03, , 33F
dalvik VM :Q 這個沒話講,不過畢竟開發者app層占多數
04/07 11:03, 33F

04/07 11:04, , 34F
現在移植性越來越重要了 沒POSIX很多東西都沒辦法移植
04/07 11:04, 34F

04/07 11:04, , 35F
我的習慣是自己包Middleware,哪個平台就用那個平台的API..
04/07 11:04, 35F

04/07 11:04, , 36F
想移植到JNI-Android不行 移植到objc不行 什麼都麻煩orz
04/07 11:04, 36F

04/07 11:05, , 37F
而且重點是 已經幾乎沒有人用win32 api了...
04/07 11:05, 37F

04/07 11:06, , 38F
BTW, 我前兩天寫Python才碰到MySQLdb安裝的問題...
04/07 11:06, 38F

04/07 11:06, , 39F
網上找了一下OSX底下安裝那種長長一串步驟只能說..@%#@%
04/07 11:06, 39F

04/07 11:07, , 40F
寫這種東西碰到這種麻煩 直接去ec2開個免費的instance
04/07 11:07, 40F

04/07 11:07, , 41F
ssh進去寫就好了 XD
04/07 11:07, 41F

04/07 11:07, , 42F
像我就是直接去ec2開 還有一個免費的public ip 多好
04/07 11:07, 42F

04/07 11:08, , 43F
你說真的純底層coding osx畢竟不是linux 也不用勉強自己
04/07 11:08, 43F

04/07 11:09, , 44F
去用他就是,上次要改個ia32-libs source code都不知道
04/07 11:09, 44F

04/07 11:09, , 45F
OSX在寫App上也沒有講的那麼神就是了,最多是看起來爽一點
04/07 11:09, 45F

04/07 11:09, , 46F
怎麼下手 後來靈光一閃 靠杯 去ec2改不就好了
04/07 11:09, 46F

04/07 11:09, , 47F
我沒神話他吧 就只是好用而已
04/07 11:09, 47F

04/07 11:10, , 48F
不過你說的好處基本上和Linux一模一樣啊..XD
04/07 11:10, 48F

04/07 11:10, , 49F
除了那個trackpad以外想不出有什麼獨特的地方...
04/07 11:10, 49F

04/07 11:11, , 50F
友嗎 1 2 3 4 6都是osx才有的阿
04/07 11:11, 50F

04/07 11:11, , 51F
我自己在MBP上大概就iTerm+Eclipse混用,但是相對來說
04/07 11:11, 51F

04/07 11:12, , 52F
6我不敢說linux有沒有 不過ps等軟體沒linux版倒是真的
04/07 11:12, 52F

04/07 11:12, , 53F
我在Linux上完全可以做一樣的事,而且機器還比較便宜...
04/07 11:12, 53F

04/07 11:12, , 54F
花錢買來就是用3年阿 吃飯東西爽度不能省 真的
04/07 11:12, 54F

04/07 11:13, , 55F
3, 4, 6算OS獨有的,但是程式設計師通常不管6, 4你要寫OSX
04/07 11:13, 55F

04/07 11:13, , 56F
對我來講生財工具多付一點讓自己工作爽一點 就是讚
04/07 11:13, 56F

04/07 11:13, , 57F
6是osx的好處,比較不算在osx寫code的好處XD
04/07 11:13, 57F

04/07 11:13, , 58F
或是iOS才用得到, 3的話基本上我根本不大動滑鼠...
04/07 11:13, 58F

04/07 11:14, , 59F
我知道有些人很習慣用terminal + vim寫code(我以前就是)
04/07 11:14, 59F

04/07 11:14, , 60F
我回一篇好了..XD
04/07 11:14, 60F

04/07 11:14, , 61F
以前還geek到用lynx去看網頁 XD
04/07 11:14, 61F

04/07 11:14, , 62F
但是後來想想幹嘛那麼類 orz
04/07 11:14, 62F

04/07 11:15, , 63F
看網頁要用w3m才是王道啊
04/07 11:15, 63F

04/07 11:16, , 64F
現在的網頁資訊很圖像化,用純文字看會很難吸收
04/07 11:16, 64F

04/07 11:17, , 65F
不過裝個vimperator或是vimium倒是不錯用--如果習慣的話XD
04/07 11:17, 65F

04/07 12:44, , 66F
原po別再戰了 快交我寫ui啊 你們這些職業級的coder
04/07 12:44, 66F

04/07 14:19, , 67F
等等為什麼我變成很會寫UI的人了(汗)
04/07 14:19, 67F
文章代碼(AID): #1FVtuqu9 (MAC)
討論串 (同標題文章)
文章代碼(AID): #1FVtuqu9 (MAC)