6
回答
哈,喷下个人对跨平台编程语言的观点
华为云实践训练营,热门技术免费实践!>>>   

正好参与个关于跨平台编程语言的讨论, 觉得回复空间不够,所以单独水一篇帖子。

先针对  @eechen 提的两个名词,结合跨平台编程语言,我水下个人观点。

1、跨平台 ,这个应该是针对产品,或开发成型的东西,有的是不同平台上做个虚拟机来跨,有的是移植。

2、posix ,这个是个协议,不存在跨不跨平台,只存在不同平台是否支持的问题。

3、跨平台编程语言,这是个工具。当然如果它可以在多个平台上运行,自身也算跨平台,但与“作为构建跨平台开发产品的一个工具”没什么关系。

先回答 @eechen 的观点。哈。你的大多数句子,拆开来我都不反对。不过合起来,就觉得有点对不上频道了。例如,“移植”到别的平台,让一个“应用”系统存在于不同平台,这事是可以算“跨平台”了,但和那帖子谈类java的虚拟机没啥关系。

这里约束下含义,“跨平台编程语言”,还是延续那个帖子,实际是针对帖子题目中“做相应的虚拟机实现跨平台性”。 如果通过虚拟机方式实现跨平台,那么认为这种开发环境为“跨平台编程语言”。反之则不是此处所定义的“跨平台编程语言”。哈。

回到正题,谈下我的观点,为啥说,这种虚拟机实现的跨平台,不会是个趋势。

1、为什么要跨平台?很简单,底层支持不同,为了降低重复开发的劳动。其实跨平台有多种实现方式。java的虚拟机,这叫“一次编写,到处解析运行”,对应的还有c语言,这叫“一次编写,到处编译链接”。

2、产品开发方便重要,还是产品体验度重要? 就不说底层,就谈应用界面的开发。不同平台支持不一样,屏幕分辨率不一样,一个好的产品,是统一分辨率呢,还是针对不同屏幕情况做对应设计?如果是后者,那么如果虚拟机实现跨平台的方式,降低了用户体验度时,你打算怎么办?哈。

3、体验度和什么有关?曾经有个论调,浏览器时代的到来,不需要考虑操作系统,不需要考虑本地硬件特性,用浏览器统一平台,这也是跨平台思想。哈。然后呢。。不用扯它了。再例如微信的小程序,一开始浩浩荡荡的声势,不谈其有价值的地方,确实有价值,只问一点“它能替代所有app吗?”。

简单说,跨平台的思想是一种纯软思维才提出来的思想,希望软件开发尽可能脱离硬件特性。有些时候靠谱,但有些时候不靠谱。计算不是很复杂,无需体现过多的硬件特性时,自然靠谱。 其实我觉得网页就算真正的跨平台。哈。不过网页上打游戏,网页上办公真靠谱吗?休闲的小玩意可以,恐怕很多专业的(游戏也有专业的嘛),你通过网页搞不定吧。

那么虚拟机能否把硬件特性发挥出来?我就不哈了,只“呵呵”。而从另外一个趋势,it技术发展到现在,硬件架构已经越来越统一的,底层操作系统,也就那么几家。真打算赚钱的软件团队,是体验度优先还是开发便易优先?哈。如果是前者,针对几个有限的平台,做“移植”的开发,体验度会比在虚拟机上跑要好很多吧。

这里说一句,走虚拟机的,真心能“到处解析运行吗”,至少c语言,还敢说,到处“编译链接”,捯饬后能不能运行另说,例如这个片子明明没有某个设备,你对应驱动的代码编译过了,链接进去了也没屁用。哈。当然正常都会 #ifdef 的过滤掉。 

“到处”不“到处”不是某个开发工具自己说的,而是要底层支撑的,如果所有操作系统都说我百分百支持啥,其实也就用不到“虚拟机”这个玩意了,否则只是“意思意思”的支持。之所以c语言还敢说“到处”, 也仅仅是因为,很多芯片厂家出产品时,会选择c语言作为其上的基本开发工具,而不是c标准的那群专家,用刀架脖子上,或攒着开发厂商的裸照,逼别人支持。哈。

上面都是虚谈,下面说句“实在”的话。工具不工具的都不是首先要考虑的。做件事情有价值,不是自己说的,是客户说的。所以满足需求增加体验度,是目标,依据目标选择更专业的工具来开发,是原则。有些时候,bash也是很棒的开发工具嘛。专业不专业,不是根据用的人多人生好来看的,不是根据里面是否有“高大上”的名词来决定的,而是由,是否针对特定开发目标具有特定优势来决定的。 

最后说个“断句”,“ 真正专业的开发工具,一定在很多其他场景中不专业。但凡号称什么都能干的工具,一定在各种开发中不专业”。你想“牛逼”的学习到一个啥都能干的开发工具及其对应方法,其结果就是你啥都做不成。哈。

 

 

 

 

<无标签>
举报
中山野鬼
发帖于6个月前 6回/464阅
顶部