对于一门语言的历史,我认为写一本书可能都不为过,关键是看你如何介绍和表达。当然每一个人的理解也大相径庭。本文阐述也仅仅只是冰山一角,如果需要深入了解,自己可能需要多花费一些心思。

这里也不会给大家说太多的背景,对于编程来说好像也不是必须,所以我认为大概了解就可以。

说起Objective-C,它是苹果公司用于开发MAC OS X 和IOS 设备的主要编程语言。从语言命名来理解,必然会想到C语言,苹果官方定义是:superset of the C(超集) 其实可以理解为C语言的一种扩展,大家都知道C语言是面向过程的,一堆函数,可阅读性不好。而Objective-C则是面向对象的(object-oriented)语言,它在C语言的基础上扩展,继承了很多C语言的特性,比如一个很重要的概念:指针。当然Objective-C的诞生,还有一种语言的功劳,那就是SmallTalk-80,Objective-C也是借鉴了它的很多语法风格。有兴趣的可以去详细了解下。

我们再来看看苹果公司是如何发展Objective-C语言,先给大家看一张图:

这是NeXT(NeXT也是上任苹果计算机CEO,Steve Jobs在1985年离开苹果计算机后所创立的公司)研发的一种操作系统NeXTSTEP。后来,在1996年,苹果公司出于战略考虑收购了NeXT公司,自然乔帮主又回到了苹果公司。基于NeXTSTEP code library,苹果公司把它集成到了自己的系统中去,也就是现在的MAC OS X,可以说NeXTSTEP 为苹果mac系统的发展奠定了基础。有了MAC 这个强大系统的支持,苹果的手机系统也发展起来,也就是现在的IOS,其实它是MAC 系统延伸出来的,所以它的大部分code还是来自于NeXTSTEP code libary。那NeXTSTEP 核心code是什么呢? 就是我们今天我们说的Objective-C。苹果对OC语言开始扩展重写,增强了OC的语法功能,定义了OC版本2.0,即Objective-C 2.0。由于苹果产品的火热,后来OC便很快成为了开发MAC 和IOS 应用的编程语言,越来越多的开发者学习了该语言,老实说,OC的火热完全是苹果产品带动起来的,用户量大,开发者才去投入。个人感觉OC的语法风格相对于Java C#还是不够简洁。

题外话:有人说,学习Objective-C之前是不是需要学习C语言?我觉得这个还是有必要去了解的。当然也不一定非要从头到尾把C看一遍,做项目等。可以这样说,你可以初期只学习Objective-C,不看C语言,也同样可以。为什么这么说呢,学习本身就是一件很漫长的事情,关注的点太多,容易打消积极性,不知道大家有没有这种感觉,当你去尝试做一件事情的时候,发现做这件事情有很多条件,然后当你在去一个一个去完成这些条件的时候,时间已经很长了,精力也消耗很多,最后可能也不知道自己到底要做什么,容易迷茫,最终会有一种挫败感,久而久之自信心也就没了。当然,主要还是看你自己的实际情况,比如时间,精力等等。

建议还是直接去看Objective-C,在学习的过程中,有些概念不清楚的,可以再去看C语言。即用既查,反复交错进行。

后续我会一章一节的把OC语法详细的介绍一遍,如环境准备,Xcode等。基本上快的两周就可以掌握个大概,至少你能看懂code吧。还是那句话,写代码的捷径就是多练习。

像上面提的,一门语言的历史是很难三言两语说清楚的,大家如果有兴趣可以自己查阅。

这里我提供一些链接供大家参考:

Objective-C (维基百科比较全面) Apple Objective-C(苹果官方文档) 建议还是多看官网文档,比较全面系统。

学习 Object-C: 简史的更多相关文章

  1. JDK1.8源码学习-Object

    JDK1.8源码学习-Object 目录 一.方法简介 1.一个本地方法,主要作用是将本地方法注册到虚拟机中. private static native void registerNatives() ...

  2. 学习Object.assign()

    Object.assign()用于将所有可枚举的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法 Object.assign(target, ...source); var obj = { ...

  3. ES6学习--Object.assign()

    ES6提供了Object.assign(),用于合并/复制对象的属性. Object.assign(target, source_1, ..., source_n) 1. 初始化对象属性 构造器正是为 ...

  4. 源码学习-Object类

    1.Object类是Java所有类的超类 2.查看Object的属性和方法,发现Object类没有属性,只有13个方法,其中7个本地方法. 3.接下来看具体的方法 3.1 Object() 默认的构造 ...

  5. 第一天:python学习-基础-计算机简史

    第一天:计算机简史 1.元始的计算方式 : 1.1:数手指头,结绳记事.符号记事.算筹(祖冲之-圆周率).算盘:计算效率较低. 1.2:15世纪航海活动各天文需求 计算比较繁重,出现计算尺工具,奥特雷 ...

  6. PHP学习 Object Oriented 面向对象 OO

    定义类class class_name [extends partclass_name]{public private protected var property_name = value;publ ...

  7. Object C学习笔记24-关键字总结

    学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1.  #import #import <> 从syste ...

  8. Object C学习笔记20-结构体

    在学习Object C中的过程中,关于struct的资料貌似非常少,查阅了C方面的资料总结了一些学习心得! 一. 定义结构 结构体是一种数据类型的组合和数据抽象.结构体的定义语法如下: struct ...

  9. Object C学习笔记17-动态判断和选择器

    当时学习Object C的时被人鄙视了一顿,说使用.NET的思想来学Object C就是狗屎:不过也挺感谢这位仁兄的,这让我学习的时候更加的谨慎.今天的学习笔记主要记录Object C中的动态类型相关 ...

随机推荐

  1. 个人永久性免费-Excel催化剂功能第43波-文本处理类函数增强

    Excel的函数有400多个,真正常用的50多个,而常有的文本处理类函数也不多,不是因为文本类处理简单,而是Excel真的有点挤牙膏式的每个版本更新那么几个小函数,普通用户等得急切,但实际上这些小函数 ...

  2. 人事管理系统为你解剖JSP

    人事管理系统为你解剖JSP 前言: 之前写过两篇学习JSP的博客,<Java匹马行天下之JavaWeb核心技术——JSP>https://www.cnblogs.com/zyx110/p/ ...

  3. Node + js实现大文件分片上传基本原理及实践(一)

    _ 阅读目录 一:什么是分片上传? 二:理解Blob对象中的slice方法对文件进行分割及其他知识点 三. 使用 spark-md5 生成 md5文件 四. 使用koa+js实现大文件分片上传实践 回 ...

  4. 【iOS】Ineligible Devices || “无法下载应用程序”

    今天遇到了这个问题,Xcode 显示如图所示: 还有真机测试无法安装的问题,如图: 究其原因,都是 版本不匹配 的问题!在 Xcode 中的 PROJECT 和 TARGETS 设置下版本就行了,如下 ...

  5. ubuntu .deb .tar.gz .tar.bz2 .rmp 和命令方式安装软件的方法

    今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的".deb"格式的安装文件google-chrome-stable.deb双击后或者右键快捷 ...

  6. 从windows平台转战ubuntu

    说到ubuntu,可能很多人会有些陌生,但对于有些人很熟悉.ubuntu是linux里面最为流行的一版,以下来自百度百科.       Ubuntu(乌班图)是基于Debian GNU/Linux,支 ...

  7. ue4使用SceneCapture2D创建小地图示例 蓝图

    做C++项目的时候遇到了一个小地图的问题,从网上找了个蓝图的思路,转载一下. 原文:https://www.engineworld.cn/thread-3835-1-1.html 本文使用ue4提供的 ...

  8. 【vue】------ 路由创建 ------ 【William】

    路由常用的配置项: path:路由请求的路径 component:路由匹配成功后需要渲染的组件或者页面 tag:改变组件内部渲染的元素 假设组件内部渲染的是a标签 tag="li" ...

  9. 基于vue2.0搭建项目流程

    搭建vue2.0项目--myproject 一. 环境搭建: 1 打开命令行(cmd) 2 安装node node官网 3 安装 vue-cli步骤如下: npm install -g vue-cli ...

  10. 疯子的算法总结(二) STL Ⅰ 算法 ( algorithm )

    写在前面: 为了能够使后续的代码具有高效简洁的特点,在这里讲一下STL,就不用自己写堆,写队列,但是做为ACMer不用学的很全面,我认为够用就好,我只写我用的比较多的. 什么是STL(STl内容): ...