从事iOS工作这么久了,我觉得对它的认识也越来越深刻。尤其是越发明白自己从事的工作属于“客户端开发”、“软件工程”分类中。

我更喜欢“客户端开发”这个词语,相对“前端开发”而言。因为前者更能充分说明面向的群体是客户,iOS开发也正是为客户使用为目的进行的开发。

之前看到这句话--服务器解决的是“有不有”的问题,客户端解决的是“好不好看的”的问题。

确实让我怀疑了自己的工作性质和意义。难道我从事的工作就是这样的花拳绣腿?装点门面?

直到后面一些事实的联想,给了我一些新的启发。那就是-----

PC时代的到来不正是因为微软的可视化操作界面带动的节奏吗?

如果只是命令行的操作,编程技术人员之类的还好,普通群众可不愿意这样干。后面微软出现了可视化的操作系统。。。主要解决了如下几个场景:

1、服务器的确解决了数据有还是没有的问题。但是客户为了获取到数据还需要使用命令行编程操作,客户肯定不愿意。可视化操作系统中,客户简单到只需要点击一个按钮就能获取到数据。

2、数据是获取到了,然后一堆数据,就算是JSON、XML格式,又怎样,客户想直观的看到数据随时间的变化情况,看一堆数据肯定是不行的。可视化操作系统中,客户看到的是数据可视化,将数据图形化展示。不然股市K线图都没法看。

3、不可能一直都是服务器给出数据,客户也是需要跟服务器有个数据交互的。但是怎么输入数据呢?面对黑色背景的命令行操作?一是输着输着客户都不知道输到哪了,之前输完的数据也很难直观的看到。二来,客户并不是编程的技术人员,在输入源上如何控制有效输入?比如,只让用户输入0到9这10个整数中的一个。可视化操作系统中,提供给客户的是一个有着0到9这10个按钮的View作为输入源,提供给客户的交互控制在一个有效也高效的操作方式中。

说到这里,所以我更喜欢“客户端开发”这个词了。

然后再来说下“软件工程”这个词。

想着我可是数学系的高材生,数学分析、数论、图论、高等代数、几何、离散数学等等。在计算机学科上,数据结构和常用算法上,想当初我学得可带劲了。然而,现在从事iOS开发这么久以来,这些东西都用上了吗?用上了,更准确的说间接的(潜移默化效果)一直在使用,直接的话,很少使用。有时候我在自己思考问题的时候采用离散数学的方法。但是直接用在iOS的平时开发中的机会比较少。说到这里,我突然想到为什么程序员自嘲自己是码农了,自嘲自己是搬砖的。需要什么功能,直接百度、GitHub上搜索、开源框架的搞起。。。为什么会这样,为什么不静下心来自己写功能、自己写框架?我想这就是为什么iOS开发是属于软件开发范畴的原因了。

其实,说到底,自己写?自己造轮子?然后你就认为自己在底层编程了?有成就感了?不不不!

就比如说,我们iOS程序开发,是“面向对象”编程的。面向哪个对象?面向Apple SDK这个对象。Apple SDK的存在不就是让你快速开发一个软件而存在的吗?Apple SDK的存在意味着我所从事的就是软件工程。

软件工程从业者不是研究人员!

软件工程从业者不是研究人员!

软件工程从业者不是研究人员!

我们始终要坚持自己的目的-----快速的完成客户端软件工程。

~暂时这么多。

对iOS开发的一些认识的更多相关文章

  1. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  2. iOS开发系列--打造自己的“美图秀秀”

    --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...

  3. iOS开发之再探多线程编程:Grand Central Dispatch详解

    Swift3.0相关代码已在github上更新.之前关于iOS开发多线程的内容发布过一篇博客,其中介绍了NSThread.操作队列以及GCD,介绍的不够深入.今天就以GCD为主题来全面的总结一下GCD ...

  4. 总结iOS开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

  5. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

  6. iOS开发系列--App扩展开发

    概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...

  7. iOS开发系列--Swift进阶

    概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...

  8. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  9. iOS开发系列--通知与消息机制

    概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...

  10. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

随机推荐

  1. Spring基础篇——通过Java注解和XML配置装配bean(转载)

      作者:陈本布衣 出处:http://www.cnblogs.com/chenbenbuyi 本文版权归作者和博客园共有,欢迎转载分享,但必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留 ...

  2. 什么是Maven? 使用Apache Maven构建和依赖项管理

    通过优锐课java架构学习中,学到了不少干货,整理分享给大家学习. 开始使用最流行的Java构建和依赖管理工具Maven Apache Maven是Java开发的基石,也是Java使用最广泛的构建管理 ...

  3. Perl 笔记

    目录 Perl 学习 常用记录 基础 1. 运行perl 2. 字符串 3. 变量 4. 条件 5. 循环 6. 运算符 7. 时间日期 8. 子程序(函数) 9. 引用 10. 格式化输出 11. ...

  4. ubuntu 允许root用户登录到ssh

    ubuntu的系统太太太麻烦了,我喜欢centos,但是还是要用ubuntu做东西,讨厌,装完系统以后,因为他不让你用root,我新建了一个wqz的用户名. 1.首先更新root的密码 sudo pa ...

  5. Cisco 3702i TX功率图

    有关思科TX Power选择的一些基本信息: 思科使用1到8的等级,其中1是最高功率,8是最低功率虽然比例上升到8,但不是每个band都使用(0-7)8个数据中的所有值.每个数字都有一个相应的dBm值 ...

  6. sqlserver数据库中char、varchar、text与nchar、nvarchar、ntext数据类型使用详解

    很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最开始的一些基本设计理论和原则,这点让我想到了现在的年轻人,大 ...

  7. C++11常用特性介绍——左值引用、右值引用

    一.左值.右值 1)左值:可以放在赋值号左侧.可以被赋值的值:左值必须要在内存中有实体. 2)右值:必须放在赋值号右侧.取出值赋值给其它变量:右值可以在内存中也可以在CPU寄存器中. 二.引用 引用是 ...

  8. 启动named服务报错!

    安装及配置bind服务程序: yum -y install bind 三个关键文件: 主配置文件(/etc/named.conf) 区域配置文件(/etc/named.rfc1912.zones) 数 ...

  9. NFS网络文件共享系统!

    NFS是运行在应用层上的协议,其默认的端口为2049,它适用于linux与linux之间,也适用于linux与unix之间,亦可适用于linux与windows之间 nfs优缺点优点 节省本地硬盘的存 ...

  10. 使用kibana或postman操作Elasticsearch的常用命令

    前言服务器:CentOS-6.7 运行系统:windows10 JDK版本:1.8 Elasticsearch版本:5.6.6 插件:kibana.elasticsearch-head 工具:post ...