ios和android一并学习的体会
如果说为什么要同时学习这两种不同的移动平台,其实有一定的“闲”的因素在里面。
相对于ios,android我是早半年接触的。最开始学习的时候也就是j2ee学习的延续,通过看视频连带看书学了大概一个月的时间,对android有了一个基本的了解。本来是想做个小项目练练手的,由于各种原因没有实现,就把android搁在边上了。
后来自己买了一个MacBook,于是就看起了ios。最开始学习Objective-C的基本语法以及ios初级编程的时候,因为之前的基础还可以,我用了大概4天的时间,说起来也不算是多了,然后又是各种原因放下了。
这两段学习经历使我对移动开发的架构有了更加深入地认识。于是上个月开始,我又重新开始学习这俩。
当我再次搭起android的开发环境的时候,我竟然不知所措,我几乎忘记了android是什么东西,于是用了几天的时候从新从头开始找了基本android入门的书看起来。然而手头上的书确实很out的,无法赶上时代。对于像我这样“盲目”追求最新的程序员来讲这是无法忍受的。于是我找到了最根本的文档,android的官方文档。由于英语能力有限之前没有好好地看过这些东西,为了阅读和学习英语,我就做起了翻译官方文档的工作。用了一周了时间看并使用各种工具翻译了几篇base的文章,结果重新建立了android在我心中的体系结构。(说真的其实android的文档太难翻译,主要是没有想java的那样都是一些比较容易理解的段句子,android的文档编辑者仿佛是为了炫耀自己的文字能力使用各种长句子,让像我这样的非母语者很伤神,有时还要推测一些作者的意思。但是后来发现ios没有这么系统由结构性的文档,我就感谢google的厚道了)。之后,我用一些我新学到的技术做了几个小的demo。感觉学着无趣,就又开始学习ios了。
我本想用同样的方法去学习ios,毕竟ios7一来变化的比android大的多得多。而且Xcode5之后原来熟悉的东西都不见了,原来学ios内存管理是一个重点,Xcode5之前还可以手动选择是否自己来干了内存,现在是必须交给Xcode,你一用release什么的就报错。还好之前学习内存管理还是学的不错不然现在都无法做相关的测试了。(但是从发展的角度讲这些改变对于一个语言或者是ios这个系统来讲都是不错的,这样的强制改变避免了像java这样的碎片化)
我们不妨比较一下这俩的开发区别:
1.开发工具(IDE)的区别
android作为一个开源的系统,它的首选的是最为著名的开源IDE——eclipse。作为几乎是万能的ide,eclipse也为开发android提供了类似开发web的插件。这使原来的开发者能够快速地切换到android的开发。最早进行android开发的程序员都有过没android搭建开环境的痛苦经历,周来android官网上提供了打包定制的android版的eclipse下载,再次降低了android的入手难度。另说一句,google还真为android开发了一个新的ide,我下下来用了一下,结果果断抛弃,正是比javabean还不如的官方ide。
而ios果断自负的使用了自己的Xcode,而且开发ios还非得Xcode,至少我还没有发现其他的。如果eclipse是一个现代的ide,Xcode在某些方面更像是后现代的ide。而且随着ios以及Xcode的发展,有时候会觉得自己写的代码带了一些伪代码的影子,比如里面的一些带“@”的关键字的语法,就像是伪代码。Xcode值得一提的是不让我们去注意View后面的XMl,而是直接给一个谁都看得明白的页面,而eclipse则还很专业地提供源码,以至于学习android不少人都是手动编辑xml开始的。还有就是Xcode引入了“连线”,将代码与图形通过连线的方式关联起来,相当MVC的感觉。完全将开发者从神降为了凡人,可谓是让人人都能编程的后现代之作。
我总觉得eclipse的灵魂是“Alt+/”给人的快感,在这方面强大的提示功能是Xcode所没有的,而eclipse的跨平台性也是值得称道的。
2.java和Objective-C的区别
从历史来讲Objective-C更为悠久。java舍弃了指针的概念,以及卓越的垃圾处理、内存管理机制为人称道且简单易学使它能够花了不到十年时间就能成为最受欢迎的语言。然而太多人的关注与奉献使网络上出现了各种各样的开源框架,而令人难以选择。再这java版本的更新却不真正抛弃一些落后的包或工具类,使初学者学习的时候难以区分。而且java的维护者始终缺乏大版本更新的勇气,使开发者面对而有难以想说明的痛楚,于是关注度渐渐降低。
而Objective-C,它的诞生时间几乎和C++差不多。但是,几年前基本没几个人听过。直到iphone的兴起,它的关注度迅速升到前三超过c++,仅次与java,C。但是Objective-C太过于奇葩,带有一些古老语言的特性,[],@的使用是作为特别的或许也是为了表现出它的与众不同。如果没有Xcode的辅助性,Objective-C的开发效率不比VC高多少。但从语言来讲如今可能是不合事宜了,但Xcode的卓越使我们不能仅仅从语言的本身来看待,而相反有了一些独特之处。毕竟OC运行起来比java快得多,而在移动开发领域,这点是很重要的。
3.开发文档、资料的比较
看过ios的文档之后,才能体会到android开发文档的良心之作。相对于android开发文档的深入浅出,面对ios我不知道从那入手。android文档的一部分,显然是一个很好的教程。比一些市面上能买的书还要讲的好。而反观ios,就是开发文档,你有什么问题,不清楚什么方法的使用就找吧。
而网络上的资料显然也没有android的丰富多彩。
综合来讲,我个人还是比较喜欢ios的。基于对美的热爱,我无法相信一个ide也能做的这样的漂亮。例外iphone给人的高富帅的感觉,令人想到ios的开发者也是一个高富帅,基于这样的向往,给我内心扎下了很好的印象。
ios和android一并学习的体会的更多相关文章
- WebSocket学习笔记IE,IOS,Android等设备的兼容性问
WebSocket学习笔记IE,IOS,Android等设备的兼容性问 一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏 ...
- 简谈WP,IOS,Android智能手机OS
什么是智能手机? 相信到现在这个已经是傻瓜到不能再傻瓜的问题了 智能手机都不懂? 那你活着还有什么意思= = 但是为了谈论今天的三大主角:wp,ios,android 不得不回答一下这个笨笨的问题 如 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- 开园第一篇 - 论移动开发环境 IOS与Android的差异
首先,在真正写技术之前做个自我简介.本人08年开始学c语言 一年后,转vc++.开始接触MFC MFC做了两年.转眼11年了我考上了一个不知名的大专.搞C++发现没有市场了因为当时酷狗腾讯的软件已经日 ...
- javascript开发 ios和android app的简单介绍
先看几个名词解释: nodejs ionic,Cordova,phoneGap,anjularjs react-native,reactjs nodeJs 的介绍参见这里,写的很好http://www ...
- Android:学习AIDL,这一篇文章就够了(下)
前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...
- 创业公司求IOS、Android攻城狮一枚
地点:北京CBD附近(地铁1号线大望路) 魅力值:送珍贵期权 你要会: 1. IOS或者Android开发 2.可以处理类似微视/秒拍的视频录制功能 3.熟悉jso ...
- 如何在macox下面配置集成ios和android游戏教程
教程截图: 1.准备工作,配置开发环境: 开发环境:mac ox 10.7.3 + xcode4.2 + ndk r7 + eclipse helios 部署环境:中兴v880 root过了 ...
随机推荐
- erl0008 - unicode 和 utf-8之间的关系
转载:http://blog.jobbole.com/84903/ 原文出处: 卢钧轶 欢迎分享原创到伯乐头条 本文将简述字符集,字符编码的概念.以及在遭遇乱码时的一些常用诊断技巧. 背景:字符集 ...
- 一起学CUDA(一)
前提是电脑的显卡支持CUDA,N卡一般是支持的,如果是A卡就没办法了.主要针对Windows环境,Linux和Mac也有相应的安装包.CUDA环境搭建:Step1:安装代码环境VS2010:Step2 ...
- 给新centos系统虚拟机配置网络服务
记录下今天新建虚拟机的过程吧. 镜像:CentOS-6.3-x86_64-minimal; 虚拟机版本: vm 8.0 LET'S----------------------->GO 手动新建一 ...
- 批量迁移Oracle数据文件,日志文件及控制文件
有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当 ...
- RIA+REST架构实现完美WEB开发
记得第一次看到REST的身影,是在InfoQ上的一篇介绍,随后又翻阅了后面的参考文章和Developerwork上一些资料,甚至随手翻了翻Roy博士的论文.所幸,在不少人还在体会REST到底是何方神圣 ...
- Excel 绘制图表,如何显示横轴的数据范围
右键点击X坐标轴,然后选中“设置图表区域格式”,然后在“坐标轴选项”--“区域”处设置X轴范围. 备注,这种方式仅使用与第一列时日期时间类型的数据. 应用场景 当,选择有两列数据,第一列为横轴数据,第 ...
- Oracle数据库“Specified cast is农田valid”
这种错误是笔者在执行一条计算符合条件的行有多少个,用OracleDataReader读取计算出的行数时发生. 查询语句为: Select Count(1) FROM HP_TS Where TS_ID ...
- 怎样学法学?——民法学泰斗王利明教授的演讲 z
今晚我讲“怎样学习法律”,但不是讲一般的学习法学的方法,而是主要从法学.法律的特征讲起.(因为)我们学习任何东西,都首先要搞清楚我们的学习对象有什么特征.性质. 我们要了解法律.法学本身的性质,要了解 ...
- 设置UIImage 圆角
//设置UIImage圆角 @interface UIImage(UIRoundedRectImage) + (id) createRoundedRectImage:(UIImage*)image s ...
- php常用正则
平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^[0-9]*[1 ...