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 前端开发。

 

[Mac A]如何学习Mac编程?的更多相关文章

  1. 【Xamarin挖墙脚系列:mac 终端 常用命令+Mac OS X的快捷键+beamoff 】

    原文:[Xamarin挖墙脚系列:mac 终端 常用命令+Mac OS X的快捷键+beamoff ] 基本命令 1.列出文件 ls 参数 目录名        例: 看看驱动目录下有什么:ls /S ...

  2. Mac新手入门:mac操作技巧

    面对全新的mac电脑,你是不是一脸的迷茫,一些原来windows上的基本操作在mac上都不知道从何入手了,下面小编就为大家整理了一些基本的操作.相信一定会方便你的学习和工作的. 如何压缩与解压缩 在M ...

  3. Linux运维人员如何学习python编程

    Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...

  4. 学习kernel编程的建议

    我把我学习kernel编程的过程介绍给大家,希望大家有个参考. 学习kernel编程需要阅读大量的kernel方面的书籍,在此我列举一下我读过的kernel书籍(按时间先后顺序),并给一些建议. 1. ...

  5. 新手学习.net编程计划-1

    .NET是一个庞大的学习体系,对于新手来说会感觉无从下手.学习知识必须从入门的基础学起,才能更好地掌握.学习.net也是如此,最基础的莫过于了解.net平台,以及掌握.net的基础语法C#. 本计划是 ...

  6. 有一定基础的 C++ 学习者该怎样学习 Windows 编程?

    人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...

  7. Haskell学习-函数式编程初探

    原文地址:Haskell学习-函数式编程初探   为什么要学习函数式编程?为什么要学习Haskell?   .net到前端,C#和JavaScript对我来说如果谈不上精通,最起码也算是到了非常熟悉的 ...

  8. Mac 电脑如何安装mac os 和win7双系统(win7多分区)

    转载:Mac 电脑如何安装mac os 和win7双系统(win7多分区) 本文主要参考了2篇博文,并通过自己的亲身实践总结的.参考的2篇博文地址: http://wenku.baidu.com/li ...

  9. [蛙蛙推荐]SICP第一章学习笔记-编程入门

    本书简介 <计算机程序的构造与解释>这本书是MIT计算机科学学科的入门课程, 大部分学生在学这门课程前都没有接触过程序设计,也就是说这本书是针对编程新手写的. 虽然是入门课程,但起点比较高 ...

随机推荐

  1. C# T4使用

    最近升级我们的框架到微服务了,而且是dotnetcore 2.0. 然后一个新的框架,最基本的Model和与数据库交互的Repository,我们都是要利用T4自动生成的. 首先这个是代码结构,在这个 ...

  2. “pip failed to create process”的问题

    增加python -m的方法能完美解决pip,easy_install 安装时报错:“pip failed to create process”的问题,据推测应该是64bit操作系统下会是如此. Wi ...

  3. 数位dp模版(dp)

    #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...

  4. Gitlab运维

    安装Gitlab 新建 /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.t ...

  5. 【动态规划】【二分】【最长不下降子序列】洛谷 P1020 导弹拦截

    最长不下降子序列的nlogn算法 见 http://www.cnblogs.com/mengxm-lincf/archive/2011/07/12/2104745.html 这题是最长不上升子序列,倒 ...

  6. 工作流Activiti新手入门学习路线整理

    写在前面: 最近项目中使用到了工作流,虽然此部分不是自己需要完成的,但是也涉及到了要调用写的接口.正好有时间,就了解下,以便之后能在其他项目中用到时,不至于什么都不知道什么都不了解. 这里就主要整理下 ...

  7. STL之priority_queue2

    描述 使用STL中的优先队列,将一个字符串中的各个字符按照ASCII从小到大顺序排列. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { int n; cin&g ...

  8. jQuery判断一个元素是否为另一个元素的子元素

    判断:当前元素是否是被筛选元素的子元素 jQuery.fn.isChildOf = function(b){ return (this.parents(b).length > 0); }; 判断 ...

  9. canvas的一些问题记录

    canvas当被设置width时,原来绘制的内容,将会清空.

  10. 扩展gridview轻松实现冻结行和列(增强型)

    上一篇说过,还可以扩展gridview的分页功能以及实现导出结果为EXCEL/PDF的功能.实现好后应该封装起来,以方便后续的项目简单使用.至于要如何实现,我想不必过多的说了.下面是显示结果和主要的代 ...