织梦免费企业网站,大连网络营销公司排名,专业的深圳电商app开发,2022织梦cms侵权开庭赖勇浩#xff08;http://laiyonghao.com#xff09;CC 在 2011 年其实风头甚劲#xff0c;C2011 标准出台#xff0c;gcc/msvc/clang 都很快速地支持了许多新特性#xff0c;新兴的移动设备的性能较差#xff0c;更是 C 的新舞台#xff0c;在这个时候唱衰 C#xff0… 赖勇浩http://laiyonghao.comCC 在 2011 年其实风头甚劲C2011 标准出台gcc/msvc/clang 都很快速地支持了许多新特性新兴的移动设备的性能较差更是 C 的新舞台在这个时候唱衰 C压力很大。我使用 C 年头不少但除了在校的时候写过两个小游戏参加过两个比赛分别是面向社会和面向大学生的弄些证书好找工作以外在工作中只用过大概不到一年半做《斩魂》http://zh.163.com的早期版本写了服务器端的几条进程和客户端的 GameAI 部分。经验少而且写得不好所以基本上有人在 weibo 上问我 C 的问题我都是转发给 bnu_chenshuo 和 miloyip 等真正的行家去回答的。所以实际上今天写这一篇我底气很是不足但是朋友们给前两篇很大面子弄得我骑虎难下只好硬着头皮写了。前文提到 C 的新标准很有必要提一下标准化对 C 的影响。首先我们要肯定标准定制对 C 的积极作用但标准化过程中的超长流程一次次将 C 推向深渊。C 的第一个标准是 1998 年的 ISO/IEC 14882:1998距离整个 90 年代最流行的 C 程序库 MFCMicrosoft Foundation Class Library的第一个版本发行时间已经整整  6 年。1998 年MFC 版本号为 6.0与其一起发布的 Visual C 6.0 占有了巨大的市场。因为 MFC 发布得标准制定的时间早所以 MFC 内部实现了许多后来标准库里也有的组件比如各种数据结构容器。VC6 的市场占有率让 windows 平台下开发的许多 C 程序员甚至不知道有 STL同时也无视 C98 标准从更兼容标准的 VC2002/2003 的市场占有率就可以看出来直到今天我知道国内不少公司还是只用 VC6 的。其实在 90 年代计算机的运算能力有限市场上非常需要一款性能较高、抽象较强的编程语言C 获得了成功但它标准化的时间过长造成各种编译器有各自互不兼容的“方言”成了它的第一个软肋。第一个瞄准这个软肋的就是 javajava 在 1995 年推出虽然性能稍逊但它有更高的抽象能力、也更安全并且更容易跨平台所以迅速获得了成功第二个瞄准这个软肋的是 C#微软不能推动 C 发展又不愿 C 的市场被 java 鲸吞于是在 2001 年推出了 C#经过 10 年的发展和微软大量的金钱推广C# 已经成功获得了它应有的江湖地位。虽然 java/c# 都不是善类但 C 在 21 世纪的第一个十年里仍然地位稳固这是因为 Linux 和 MacOS X 大获成功在这两个平台上 C 都是非常有竞争力的编程语言C 自然水涨船高。但随着 web2.0 和 web app 概念的兴起以及 CPU 的主频进一步提升服务器端编程语言渐渐地对执行效率不再敏感而是更在意程序员的开发效率众多的脚本语言开始蚕食 C 的市场份额从早期的 perl 到后期的 python/php/ruby在 2005 年以后C/java/C# 等静态类型的编译型语言的市场份额都下降了新兴的贵族是动态语言。面对动态语言在开发效率上的强劲挑战C 社区除了在 2003 年对 C98 做了小小的 patch基本上睡着了完全没有应对之策哦不连应用的姿态都没有。进入 21 世纪的第二个十年市场又发生了变化云计算越走越近也许我们中的大部分人今天还可以说只闻其声不见其形但 The Data Center Is the Computer 这句话大家应该觉得很务实完成一个用户操作在服务器端的进程间通信次数前所未有地多。在这个十年我们需要这样的编程语言1、能充分利用现代 CPU 的计算能力不仅仅是多个核心更是巨大的 L1/L2/L3 Cache、超线程等2、能够大量减小异步 I/O 的性能提升的同时带来的副作用异步编程的复杂性以及对可维护性的伤害两句话其实也可以压缩为一句需要有更好的并发模型的语言。一开始大家都在已有的编程语言中寻找然后找到了 erlang实践证明 erlang 自有其局限所以 google go/scala/rust 等新语言如同雨后春笋般拨地而出。C2011 标准努力降低 C 的编程难度并提供了线程库以支持现代 CPU如果在 2005 年这个标准绝对有竞争力但在今天它只能成为新的编程语言的垫脚石。正如 IE 最大的用处是用来下载其它浏览器不久之后也许会流行新的冷笑话C 最大的用处就是用来实现其它编程语言。市场一直在寻找一门中间的高级语言它上承 C 语言和汇编语言下启脚本语言。C 最先抢占了高地并在与 java/c# 的争斗中不落下风但新的十年它的对手又增加了 google go/scala/rust 等新锐并且新的标准不可能在两三年内再次出台两三年内新锐成长起来后留给它的位置就不多了。上文讨论的基本上都是服务器编程有必要再来看一下桌面和移动设备领域。首先看桌面软件rust 是 mozilla 基金会开发系统程序语言的它的定位是部分取代 C 开发 firefox 的浏览器所以 rust 会进入桌面开发google go 肯定会顺道啃一口。移动设备方面主要是 android、ios 和 windows phone随着移动设备性能增强编译型语言加脚本的模式就会占大头编译型语言方面主要是 C 和 Objective-C 在竞争C 会占上风但需求量远远小于脚本从 lua 在 2011 年的增长速度可以印证但是谁知道 rust 之类的会不会进入移动设备呢毕竟移动设备的 CPU 核心也越来越多了呀C 还是前景堪忧。回首 C 的 30 年展望它的未来总结起来可能就是标准化流程拖死人了。如果不是 15 年不能标准化java/c# 的搅局可能不会出现如果在 2005 年能够应对动态语言……如果云时代有更好的并发模型……题外话java/c# 不会有 C 的问题因为它们有自己的平台有巨大的财富支撑。特别是平台的作用非常巨大你可以想像一下如果 Adobe 有自己的浏览器或手机操作系统 ActionScript/MXML 会不会是今天的境地也可以想像一下 google go 的飞速发展动力是什么。两点解释1、我觉得有必要解释“不宜进入”一下这四个字我想要表达的意思就是如果你现在不是这三个技术点的专家并且手上没有使用这三个技术点的项目进入这三个技术点仅为技术储备那么就“不宜进入”。另外我不是说用了这三个技术点的项目就死学了这三个技术点的人就找不到工作或者这三个技术点明天或明年就 game over渣都没得剩不是这样的意思它们还会存在很长一段时间。本文不是叫专家自废武功也不是叫已经做好技术造型的项目赶紧儿换技术举例说如果你选择了用 java 做服务器端flash 做客户端开发一个 webgame那你最好玩命儿地把 ActionScript/MXML 和 java 多线程编程及异步 I/O给钻透不然可能随时掉陷阱里。2、新年新气象工作和家庭都有很重要的事情压在肩上大家的评论我不逐条回复了我会在一两个星期后再统一写一篇《2012 不宜进入的三个技术点QA》统一回答还请见谅。转载于:https://www.cnblogs.com/aiwz/archive/2012/02/01/6154316.html