go语言被称作互联网时代的c语言,用来开发嵌入式linux是一种享受。
希望能否带来开发工作效率的提升,产品质量稳定性方面的提升,产品功能上的增强。
物联网时代,就是要有所“变革”。而我理解的“变革”一词,有两层含义,“改变”和“革命”。一是要有所改变,不能守旧。守旧就是退步,就会逐渐跟不让步伐。二是要敢于改变,敢于坚持,敢于尝试新事物,排除非议,即敢于“革命”。
选用go语言开发嵌入式linux的理由?
一、go调c的驱动,太容易了,有先天的优势。
二、go做的应用,执行效率高,甚至接近c语言或超过c语言。甚至可以在电脑环境下去跑,去仿真。调试完后很容易就切换到嵌入式系统上。超过c语言有些人可能不信。但是,举个例子吧,你用c自己造的轮子,调用socket通信,有使用go的net官方库稳定吗?
三、c语言的指针操作,空指针异常等,在应用里监测不到,容易造成应用崩溃。
四、遇到跟第三方对接的,如银联https通信,用c处理起来特别费劲。
五、c不可能把 https的整个细节如tls链路层握手都自己去实现,只能是调用开源库如OpenSSL等,效率低下且稳定性难以保证。啥轮子都需要自己造,且不一定稳定。而go,好多开源的软件库和包供使用,有很多现成的轮子。
六、有时需要跟平台对接,http的json协议格式或者是webservice接口。让c去处理这些吗?一个个拼接http报文头拼接字符串?效率太低了。能一天完成的两天去做就是浪费资源。
总之,问题太多。c是很强大,但不适合未来智能设备的发展要求。
曾经因为android应用大行其道,感觉linux的空间越来越窄了而退缩。既要会c,又要懂go,估计我会是个独行者而迷茫。
但是现在想通了,一切皆有可能。物联网时代已经来临,不一定全是Android的天下。
物联网时代同硬件交互,android再方便好用也免不了找人给它封装c的jni吧。但是用go一人就搞定了。
如果界面不是主要的,android的速度和效率比不过go,因此嵌入式linux还是有价值的,用go开发是一种选择。可以坚持一下,多做些尝试与研究。
质量和效率,是每个人都要考虑的。
质量和效率才能保证产品在市场竞争中立于不败之地。
应以产品在市场上获得好评而感到骄傲,以产品受到客户批评而感到羞愧。
选择哪种语言不是目的,语言都只是工具。
但要用合适的工具做合适的事,追求质量和高效率,选哪种语言就值得考虑了。
你会用c去开发web,会去用php开发嵌入式吗?
若环境是Android系统,首选java毫无疑问,因为有优势。
目前的尝试只针对嵌入式linux。
为啥不在嵌入式linux上搞java? linux系统肯定能支持java的啊。
因为不想折腾。
java若撇开强大的第三方库,撇开Android的SDK底子的支持,撇开华丽的Android界面,在嵌入式上不占优势。
还要去给java层封装JNI才能调c的驱动吗?太麻烦了。且一般跑嵌入式linux系统的CPU主频和资源不太高。
若把java的虚拟机再装上去,运行速度也不会快。Android上是专门优化过的Dalvik虚拟机。有折腾的时间用c早搞完了。java还是在J2EE和Android上发功吧。
即便系统是Adnroid的,如果界面不占主要地位,注意是若界面不是主要的!比如车载pos。则go做出来的应用和Adnroid的应用,不一定谁更具优势。
做事难,推动难,难在坚持,难在携手共进,这里面是需要信念的!
微信公众号:aazhen1987,欢迎交流!