[Mac A]如何學習Mac編程?


http://ourcoders.com/thread/show/5550/

@tinyfool 看了您在quora上回答的『為什么說程序員是最好的職業』,加上本來就想學編程(但是一直以來因為各種借口...到現在都還沒開始學。。)。現在決心要行動了...買了台RMBP回來。

希望您給點建議...開始該如何學習...看到quora上您說,從閱讀像Linux內核這樣的大型開源軟件代碼開始學習編程是最不好的。怕自己隨便開始學習很容易進入誤區...所以很想得到您的建議。

希望看到這個帖子的大家都能給點建議^_^

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

@tinyfool brought me here, I will give you some advices about programming on OS X.

In my opinion, programming on OS X is more easier than it is on iOS, because you have more choices on it.

OS X has five native APIs for you to write and build native apps, they are Carbon, Cocoa, Java, POSIX and X11.

1: First of all, OS X Kernel Programming mainly uses C, C++ (Embedded C++ for IOKit) and assembly language. In China, it is barely to see an OS X's kernel programmer because the Kernel programming has the most steep learning curve. Although OS X's kernel is open source, the lack of documents will be the biggest barrel on you way to be a kernel programmer. OS X has a special part called IOKit, this is a framework for hardware drivers. It is uses Embedded C++.

2: Carbon and Cocoa use C, C++, ObjC and Swift as the main programming languages. Most even all of the Apps you see on the Mac App Store and iOS App Store are based on them. I think you'd better start here. ObjC is good start for Object-Oriented Programming, as well as the Swift is the one of best language for you to learn Functional Programing. No matter which one you will choose, you can learn and get the most advanced programming experience with them.

3: POSIX, it is the abbreviations for Portable Operating System Interfaces. It is the de-facto standard for those Unix, Unix-like and Linux systems. It bases on C language APIs. If you want your program can be easily ported to those Pan-Unix OS, the POSIX is the best choice.

4: Java, oh fuck Java , Java sucked. As a more than ten years Java programmer, I beg you not to learn Java language. For native application, Java App has poor performance and ugly user interfaces. For web application, those apps based on Python and Ruby will kick your ass. For that famous Ad of Java "Write once, Run anywhere" is a piece of shit, actually we call it "Write once, fuck up anywhere". So, do not to be stupid, do not fuck around.

5: X11, it has something to do with X Windows, which is de-facto standard of GUI apps in the Pan-Unix OS. If you want your GUI app can be easily ported and running on Unix and Linux, you will use this.

6: Well, OS X is Unix, Unix is invincible, you can do what you wanna do on an Unix system, so you also can learn all kinds of programming languages on OS X.

7: Comments and Advice, star your leaning from ObjC or Swift, good luck.

@Tinyfool 點我來,我來說說我個人的看法,

首先,默認你的問題是如何學習 OS X 編程

OS X 編程我個人感覺比 iOS 要容易上手,特別是對於新手來說,更加自由,選擇也更為多樣。

OS X 自己就有五大編程框架,Carbon, Cocoa,Java,POSIX 和 X11,其中:

1: 一般來說,OS X 內核級別編程,使用三種語言,C C++ (Embedded C++ IOKIt) 和 匯編,這個跟以上編程框架中的 POSIX 有一定關系。這一塊國內基本沒有人做,國外不少,這部分的 OS X 是開源的,想學習這部分編程,那么就要從 C / C++ 開始,慢慢的看內核代碼。這部分的缺點是文檔少,資料少,優點是有源代碼,你不會用一個 API 沒關系,看 OS X 內核源代碼總能找到。另外,這里還有一套特殊的東西,就是 IOKit,這個框架是 Embedded C++ 接口,用於編寫驅動程序,如果你想要給 OS X 編寫驅動,那么你要學這里。如果不想搞這塊 (當然,這塊學着苦,也沒什么可預見的前途,除非你向我一樣寫書,沒辦法只能逼着自己看),你接着往下看。

2: Carbon,Cocoa 這兩個可以使用,C, C++,Obj-C (AppleScript-ObjC) 和 Swift 四種語言,這些相信夠你學一大陣的了。那么搞 Cocoa 學着寫應用層的軟件要好很多,這里主要就是 ObjC 和 Swift,當然你要用 C 我不攔着。你看到的 Mac App Store,iOS App Store 上的,都是這類,相對容易上手,也可以自己去賣錢,容易出成績,也容易有成就感。這塊兒的資料什么的太多了,一堆堆的。不過呢,Carbon 少用,一定要搞 Cocoa,Carbon 這東西不知道什么時候就被咔嚓了,但是有些時候你繞不開它。

3: POSIX,OS X 是一個標准的 UNIX 系統這個你知道吧,UNIX 系統的一個特點是都支持 POSIX API,這也是 OS X ,Linux 和 Unix 都能互相移植代碼的原因所在。POSIX 就是一套 API 的集合,C 語言接口。OS X 上以 libSystem 庫 也就是其他平台的 libc 為基礎。實際上這套東西也是 Cocoa 的底層基礎。如果你想要做跨平台的開發,那么學習 POSIX 再好不過,問題在於你要用 POSIX,你就要學 C,學 C ,你就要學指針,學了指針就等於進了坑,學好了還則罷了,學不好就完蛋了。C 這種東西,原子彈類型的語言,啥都能干,干啥都行,就是不好控制,跟 ObjC,Swift 這樣的比,看着很土。學好了用處很大,你學完它基本上高級語言你看什么也都無所謂了,當然 C++ 除外,那是另一個噩夢,我至今也看不懂。

4: Java,怎么說呢,我雖然學 Java 出身,Tiny 好像也是,但是這東西我沒啥好感,本地性能不行,做服務器端現在也能被 Python Ruby 等虐出翔。我實在不知道這個東西現在還有啥好。不要相信一次編譯,到處運行這種鬼話,那都是騙鬼聽的,真正形容 Java 的是,一次編譯,處處不行。當然,這個東西也是有好處的,很多企業還就喜歡他,你要是找工作,這倒是個好選擇,不過你記着,一板兒磚砸死10個程序員,9個半會寫 Java。

5: X11,我也不太懂這里了,這個是跟 Unix,Linux 界的 X Window 環境有關,使用 X Window 的應用程序,Port 到 OS X 上,或者在 OS X 上開發基於 X Window 的程序,要用到它。比如你在 OS X 上給其他 Unix 和 Linux 開發 GUI 程序,就要用這個東西,不然你就要搞 QT,QT 是啥,別問我,問我我也瘋。

6: 要知道 OS X 就是 Unix,Unix 是萬能的,沒有啥不能干的,除了以上的東西以外,Python,PHP,Ruby,JavaScript,C# (如果你想的話,這屬於自虐一族) 什么都能行,什么都能寫就看你喜歡了。

我個人給你的建議,學 ObjC,或 Swift,開始上手,理解編程,然后在 OS X 上慢慢開始寫程序,慢慢練手。

回復 2樓
chronos 回復於 5小時前

1樓 @ibuick 非常感謝!

回復 3樓
dark 回復於 4小時前

1樓 @ibuick 對照了一下中文和英文,還是中文信息多啊!

回復 4樓
ibuick 回復於 4小時前

3樓 @dark 先用中文寫的,英文就沒心氣兒了,,,以后直接先用英文寫完,,中文就可以不寫了。

回復 5樓
chronos 回復於 3小時前

4樓 @ibuick Wow...大別還用英文寫了一遍!特別寫Java那段,英文寫出來的看起來比中文寫的還好玩兒~

大別能不能給個SSLEdge的邀請碼?(O_O)

回復 6樓
Lucius_Chen 回復於 8分鍾前

Java 找工作好找,但后續發展怎么樣?我現在就在學 Java,本身是希望能夠做 Web 前端開發。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM