西西河

主题:Adobe停止开发移动平台上的Flash版本 -- holycow

共:💬72 🌺116
分页树展主题 · 全看首页 上页
/ 5
下页 末页
            • 家园 手持设备为啥都用GC语言做开发

              ios是objective-c, 带自动回收机制的C

              android是java

              wp7是.net

              为什么?

              • 家园 因为它们不能脱离它们所处的年代

                而它们的经历显现它们问题,比如电池的续航,从而促进了它们时代的消亡。IOS的续航性能最好恰恰在于它最接近native。

                另外,上面只是与GC相关部分的纯技术角度的分析。任何一个现实生活中的结果都由多种原因促成,实际上是很难归结到某一个原因的。乔布斯也不一定掌握国粉遍天下的真正原因。虽然事情也许是他干的,虽然他也许自以为知道,虽然很多人也认为他最知道,虽然还有人以为自己知道...所以才没有人能repo。

                往大了看,人类社会生活中的的大多失败和成功都是没有人能完全解释的,所以才没有完全一样的成功和失败。用控制系统的观点这些是MIMO系统,太复杂,既难建模,更难求解,惶论重现。

                • 家园 ios的续航性好因为他不是真正多线程

                  android续航性是渣是因为每个app都可以在后台吃掉电池.

                  人类社会这种复杂系统的失败和成功当然不好解释, 但是有很多事情还是可以找出规律.

                  现实社会的多种原因恰恰导致了GC语言不会消亡, 并且保持是主流. C++的辉煌只是过去式, 用C++/脚本语言/标记语言描叙这个复杂的世界?

                  语言越来越多,但他们都将共存.

                  • 家园 android续航差并不是多线程

                    android用java虚拟机这才是最要命的,效率低,耗电多。同样一个app用c写和用java写,运行效率,耗电差别很大

                    • 家园 这个比较,似乎要同时跑几个相同的应用来比较测试一下

                      否则定性分析不容易讲清楚。我个人直观感觉上倾向于JAVA的低效率是吃电池的主要原因

            • 家园 .net退出不是虚拟机的退出,c++能否担负native

              的领导者角色也未必

              • 家园 愿闻其详
                • 家园 随便说说而已

                  计算机语言出现大约70多年了吧,有什么理论上的重大突破吗?看Tiobe的趋势图,命令式语言函数式语言,静态语言动态语言,强类型语言弱类型语言,总的趋势是逐渐靠近,各自吸收利用彼此的优点。

                  现在在项目中混用各种开发语言的现象很多,比如底层驱动用c开发,中间件选java,表现使用css/html/javascript,管理使用脚本语言。甚至在同一层混用各类语言,python+c, java+c++, java + 脚本语言等等。

                  .net代表的虚拟机上的强类型语言,相比解释型语言依然有性能上的优势,而且JIT技术至少给了虚拟机与native语言比较的机会。而其他脚本语言在解释器上,还有很多向java/.net虚拟器学习的地方。未来可能有通用虚拟机的出现。

                  C++语言有点复杂,C/GP/Template...各种风格塞进一个语言里,词法形式上就不简洁。看那Template,和LISP里的宏有什么区别,不好用。只是现在在这个层面上,没有其他语言能替代它。C不行,D不行,Go似乎也不行。另外,C++也想加GC,这和java有什么太大区别呢,内置GC库的静态语言?

                  而且,随着并行技术的成熟,虚拟机技术反而更有机会扩张范围,毕竟把并行计算放到虚拟机中比每个应用自己内置更经济些。

                  说来说去,(工程类)程序员最好还是从底层到系统层到应用层都有所了解,掌握几种各自代表性语言。

                  • 家园 其实是想知道你为什么说c++不能担负native的重担

                    因为到目前为止一直是C/C++在干这些活,而且还在更努力干得更好, 刚通过的C++1X标准里的右值引用就是为了更好的榨取Native潜力。可以遇见的将来也没有其它语言能揽这活,D或者Go或许有此意愿,要成长到能证明自己前面的路很长很长...,无论从语言本身的成熟度,库的丰富度,业界的接纳度还应用的检验度都可以被 safely ignored。

                    另外C++,至少标准委员会的那帮人,一直很拒绝GC, 而不是想加入,想加的是一些外围的人。因为GC,以目前已知的各种实现方法而言(哪怕Sun或是MS以强大的公司资源来推动),与C++追求极致性能的设计目标(Do not pay for what you do not need)是不一致的。

                    另外,我们说的虚拟机不是同一个。我指的是经典意义上GC为核心的应用程序运行库(GC based runtime),而不是云时代的虚拟平台。后者只是一个操作系统,一组应用程序集,属于计算机技术的应用范畴,即对别的工业领域的影响,与计算机技术内部构建具体应用程序的计算机语言已经没啥关系了。

                    • 家园 没有说C++不能担负native的重任

                      而是说感觉会有,与C++类似,但语法更简洁,生产率更高的语言来取代c++的位置。比如,会不会有c+oo+native concurrent的语言出现,以适应未来多核的开发模型呢。当然,从目前看来,C++在native的地位仍然很稳固,能与之竞争的似乎还没有。

                      另外GC based runtime也可以跨设备啊,当然也可以说是应用技术,不是语言本身。(个人感觉至少从语言层面,GC并不是jvm这类虚拟机的核心)

                    • 家园 继续花。
            • 家园 一张嘴,就知道你是个行家。花。
            • 家园 高效率当然是好事

              但是我觉得现在似乎也不是渴求效率的时代

              对于个人用户而言,桌面PC上性能过剩打从四年前进入酷睿时代就很明显了.移动设备看似还在挖性能,事实上对比IPAD1和IPAD2的使用体验,IPHONE4和IPHONE4S的使用对比,几倍性能的提升对于用户来说,不能说感觉不到,但也无关紧要.

              这种环境下,便捷开发貌似比高效率更重要吧

              • 家园 开发效率与运行效率之争是永恒的

                谁更重要没有超脱具体环境的普适答案。人们总是鱼和熊掌都想要,在二者来回摆动而已,尽力融合。

                我上面提到的趋势就是最新的融合努力和目前摆的位置所在。

                我个人认为虚拟机有两个阶段:

                第一阶段是编译型的,如JAVA, .NET。程序员直接针对虚拟机编程。

                第二阶段,是解释型的,程序员针对应用编程。如Python,Ruby,Javascript。

                前者是开发效率与运行效率的折衷,是一个技术成长成熟过程的过渡性半成品。其对资源的回收需要程序员的帮助(比如.NET的using关键字),也需要程序员对GC的理解才能正确使用。比Native语言(C/C++/D)他们还有效率问题。比起第二种语言,他们又是强类型,因此还需要编译,开发效率远远落后,地位尴尬。

                所以才会有新的趋势:高运行效率的Native编译型语言 + 高开发效率的脚本语言(Python,Ruby,Javascript,HTML+CSS)

                在Windows平台: C/C++ + HTML5/Javascript/XAML,

                Linux平台:QT5 + QML(Javascript的变种)都是当前的趋势。WebOS的编程模型也如此。

                虚拟机+上内存里等待被唤醒的用户编译代码(C#, JAVA) PK 虚拟机+磁盘上待解析的文本文件(HTML)。在资源浪费和回收上也不占优势。用户也不会知道你的界面是早就编译好的,还是临时解释画出来的。

                所谓基于浏览器上的操作系统,本质上正是如此。

分页树展主题 · 全看首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河