物联网的开发应该是什么样子?
目前的物联网开发实际上与传统嵌入式开发并无太大的差别,开发人员除了要懂得编程语言之外还需要拥有一定的硬件知识储备,这一点在很长的一段时间内并没有引起我的注意,甚至我认为这是物联网开发该有的样子,这种对于开发人员技术较高的要求曾经一度让我认为可以提高开发门槛,也更提高开发质量。
但是现在我对此有了不同的看法。或者说这在某种程度上改变了我对于开发的看法。
物联网目前的发展可以用“乱世纷争,群雄并起”来形容。各种专为物联网设计的操作系统,开发工具,甚至是新的编程语言纷纷登台。但是在这众多的工具与平台之中,很少有站在开发者角度去设计的,而物联网的开发却与嵌入式开发与互联网开发应该有着显著的不同, 它更加的跨领域. 因此使用这些系统(比如Contiki, Lite OS), 你需要懂得中断, 懂得数模转换, 懂得时钟, 懂得操作系统的细节, 懂得一段代码是如何变成一抹律动的电平, 这些知识对于很多没有嵌入式开发经验的互联网开发者或者桌面开发者是没有接触过的或者早已变成"印象中学过, 不过我忘了". 即使对于有嵌入式开发经验的人员来说, 这些使用这些工具还需要其它他们所不熟悉的知识, 比如懂得无线协议栈, 懂得路由与组网.
很容易看到在传统的互联网开发(PC)中, 程序员数量十分庞大, 社区极其活跃, 而反观物联网开发领域却只有零星的研究人员与发烧友. 没有一个庞大的人员数量基础, 物联网的发展必定会慢下来很多. 而我认为这一切除了技术上的因素之外, 就是没有一个开发者友好的工具平台. 物联网的开发涉及众多领域, 不少各个领域的开发者都被吓退了,或者是因为"听不懂, 看不明白, 没兴趣"的思维所牵绊. 但尴尬的是, 一个技术要想长足的发展, 那么它就必须亲民, 必须让更多普普通通的只是想换一个工作的开发者加入进来, 而不能仅局限于研究人员与发烧友.
那么怎么才是一个开发者友好的工具平台呢?
1. 我觉得首先应该有一个非常优秀的操作系统, 这个操作系统应该对底层做了足够的封装, 操作系统本身与它提供的API应该是开箱即用的. 将底层的工作与上层的工作完全隔离开, 普通应用开发者并不需要去了解他的每一个操作在系统底层是如何工作的. 这一点应该像Android的开发一样.这一点上, 伯克利大学开发的TinyOS表现比较不错, 不过奈何它是新造了一门语言, 工具链也是非常的难用. TinyOS本身是一个科研产物, 没有社区推动, 它的命运必然不会太好, 但是如果它的开发工具更好一些, 移植性与扩展性更好一些, 我觉得它可能会非常有出息的.
2. 其次, 一个物联网的开发平台应该有一个十分傻瓜式的IDE. 目前我所使用过的物联网的开发平台的搭建与使用都非常非常的不友好. 一个功能完备且强大的IDE无疑会大大降低开发门槛, 吸引更多的种子选手入坑.
3. 接着其软硬件架构因当是非常容易扩展与移植的.当如第一条说的将底层与上层完全的隔离开来. 当上层应用开发者不需要关心底层的时候, 物联网平台却面临着应用场景众多, 需求众多的局面, 因此扩展性与移植性可以实现对于场景需求的定制. 而这些是底层开发者的任务.
4. 关于将上层与底层完全隔离中有一个非常重要的地方就是强大的任务管理, 应用开发者将不再自己去对程序的运作方式再三斟酌以此来为了实现高效与节能的目的.
现有物联网平台都是在为物联网的一些特殊需求而设计, 我在这里不探讨这些所谓的"特殊需求"是否成立, 但是忽视开发者感受的开发工具注定不会获得胜利, 甚至我认为在某种程度上是限制了物联网的发展和推广. 不过作为相关行业的人员, 我们也应该看到物联网开发的与众不同之处, 这些与众不同导致了很多目前难以协调的问题, 而这样的局面也正是我们从业者的机遇与挑战.