脚本从前限于职业使用,一向给我低效、低能的形象,但凡事总有个破例,我作业顶用到了脚本言语。
所以让我思索终究这个脚本在嵌入式体系上。特别是工业体系上,能有多大的作为?终究能走多远。
脚本言语不是什么别致的东西,自打有了编译型的言语天然就有了解说型的言语。限于核算机硬件,解说型的言语初期没有编译型的言语强手。后来核算机硬件越来越强了,解说型言语,这样的易于学习,编程简略的言语逐渐盛行,代表的便是Basic。
再后来,横空出世了Java。这样的介于解说型和编译型言语之间的言语。代表了一个时期的技能走向。90年代前后诞生了许多有影响力的言语,如站点类的PHP。Ruby等。万能高效的Python。细巧灵动,在游戏界大显神通的Lua。Linux下的 Bash 脚本……太多了。
脚本言语特别像开展时刻比較长的,如Python。其合作库很多巨大,现已涉及到各个职业范畴。
可以轻松的用Python做一个Windows、Linux下的使用程序。也可以用来写浏览器的Web界面,也可以写server的CGI乃至server自身。这都难不倒Python。
类似的还有Ruby,Perl。PHP,在站点后台专业范畴,都有独特的当地。
然而在嵌入式里。这些脚本言语如同都失去了踪迹。特别是一些可靠性高,实时性好的范畴,对脚本言语往往敬而远之。广阔的嵌入式从业者。特别是单片机编程程序猿们,对这个东西仍是比較抵抗的。
原因十分easy,原生的Python集成到单片机上得挨近900KB的代码空间,除此之外,还需要支付很多的内存开支。嵌入式体系,往往内存办理是粗陋的。乃至是没有。这对脚本言语这样的内存大户来说。真实难以承受。
有十分多嵌入式的有志之士,干了十分多有意思的测验,比方说将Lua弄到单片机上。用Lua开发单片机程序。
不失为一个有意思的立异。如Python的python-on-a-chip。micropython,这些项目都是十分有价值的探究。脚本和C言语比。终究能为咱们带来什么?脚本的呈现并非偶尔。程序实际上便是一套施加在一些数据上的一些算法。核算结束后,输出数据罢了。没有输出数据的程序是无意义的。 脚本。如Python中的表、元表、字典等数据结构,十分easy的几十行代码能构建出用C言语成百上千行才华写出来的杂乱数据结构。简略的迭代方法遍历杂乱数据结构的方法,也是C言语无法简略的仿照。
就连用C++的迭代器,比较也是罗嗦费事。停止的引证收回机制。使得脚本根本不考虑内存的走漏问题。这些特色,决议了脚本合适杂乱的数据处理。
天然生成的不需要编译的特色,也使得在履行时刻也可以便利的改动代码。
嵌入式有几类使用,是十分合适脚本处理的:
1.杂乱的数据结构完成。用C/C++写,诚心的欠好,仍是用脚本去完成吧。比方说,uC/OS和FreeRTOS这样的跑一个比如sqlite的数据库,数据库的查询,刺进等等。挑选脚本是正确的。往往Linux太大,团队施行起来,需要较多的精力,而且,网上东找西找的Linux下的代码,稳定性可靠性难以确保。短时刻搞出产品来真实是太难了。
要是烂在了现场。愈加是悔不当初。
这时,细巧的脚本,如Lua便是个十分抱负的挑选。
2.灵活性的挑选,体系规划没有上到Linux这样的水平。但在体系里又想保存灵活性。希望能像载入可履行文件相同,敏捷的让体系取得新的特性。
脚本是这样的小体系的不贰之选。
3.測试,一般做嵌入式的公司,时刻都十分的严重,没时刻做十分细心的白盒測试。
在进展和质量的两层压力下,白盒測试往往成了走过场,咱们都心照不宣。那就根本不走。导致后来的集成測试中问题扎堆。事实上使用脚本言语可以十分轻松的构建測试用例,測试代码,进行模块间的測试。和首要的单元測试。
时刻紧了。就多做些模块间的測试。操控一下測试的粒度。时刻宽松了,用脚本可以測得再细些。
特别关于嵌入式中需要的杂乱数据,或许需要其它体系。比如PC渠道的软件合作。都可以在脚本里轻松的模仿出来。
或许有些朋友操心速度问题,Lua 有 LuaJIT,Python的PyPy,处理器的不断进步。我以为这都不是问题,问题是你迈出了这步没有?脚本和C,就像当年的 C与ASM。
全然代替不是意图,合理的在嵌入式中优化现有的完成结构。才是咱们需要的。
我深信,脚本在嵌入式中一定会大放异彩。