@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 上慢慢开始写程序,慢慢练手。
我也来回一下,因为我刚刚是去年6月开始学Mac开发,然后今年1月7号上架了一款Mac软件,并且也有一款自用的小软件和目前正在开发另一款。如果你是从objc开始,可以参考我下边的大概过程。
首先我觉得Mac开发入门不难,因为我才高中学历,然后因为是农村类的学校,英文很渣!我这样都可以学会,而且是半年就学会并上架了一款软件,所以说Mac开发入门并不难。当然也有可能是我有用过PHP和C#做过几年网站的原因,但是对于没有编程经验的人,我的渣英文和学历可以和编程经验相抵消。
然后说说我的学习过程。
一开始就是了解官方文档了,官方文档一定是最好的学习的地方,这点不用再说了。我是参考了tiny的苹果Xcode帮助文档阅读指南,看完这篇后,你应该就知道怎么用官方文档了。当然时不时看看会有特别的收获。
再就是看一些中文书。因为我英文不大好,所以要看中文书。我开始看的是: Objective-C 程序设计,大概看完并做一小些练习之后,就看 苹果开发之Cocoa编程 和 Objective-C高级编程-iOS与OS X多线程和内存管理 再加上 Effective Objective-C 2.0 - 编写高质量iOS和OS X代码的52个有效方法。 主要是看 苹果开发之Cocoa编程 这本,另外两本做参考一并理解,看完,做完练习后,算是小小入门了。如果还有不了解的地方,可能是我比较笨,一定要看视频才会有一些概念,所以我那时又看了iTunes里的 Developing iOS 7 Apps for iPhone and iPad 的个课程。因为我找不到Mac编程的视频课程,所以就看这过个了。当然也看了WWDC的一些自己有兴趣的视频。 觉得自己可以了之后,就可以规划一个自己想做的软件了。
我是规划好功能之后,然后分析所有技术难点,然后就用google, github找找看这些技术难点如何突破,同时也对所有技术难点,找出官方文档里的所有相关的文档,慢慢啃。大概是一边学,一边试。等你难点解决了,你的软件的功能也弄好了。有个软件是Dash,非常好用,比如说你要用到NSTableView,直接打进去,马上可以找到一些 Companion guides 和 Related sample code,算是神器了!
然后是软件上架(假如你要做小软件出来买的话)我现在有个经验就是要出免费+内购的,这样比较好积累用户。然后如果收费的,开始定价不要太高,比如说心理价格是RMB68,建议开始先定18,然后功能完善再定为68,这样的话,首先你的老用户会比较高兴,然后你的新用户也会比较满足。我的第一个软件因为直接定目标价格68,现在买的人好少,然后也不好降价了,因为这样的话买了的用户会不高兴了。
不知不觉得写了这么多,汗。。
正在看Cocoa Programming for Mac OS X第四版,快看完了,所有例子和练习都做了一遍。10.10的API还有新的Xcode改了不少地方,这样看到有问题的地方查文档,查Stackoverflow,遇到不明白的地方或者想知道更多的就读文档,(虽然这本书讲的还是非常明白的,但也不能涵盖所有相关内容)感觉还是不错的。这本书第五版快出了,如果是用swift写的到时候就快速过一遍。