似乎只有一个人说到了比较明确的原因:线上生产机的升级不归研发管。
因为新的C/C++版本,往往需要新的编译器。而升级新的编译器,往往需要连带glibc/libstdc++等一堆底层库一起升级。
对于研发自己的机器,升不升,折不折腾,都是自己说了算的,无所谓。然而对于线上的生产环境,尤其这种底层库底层包,升不升,研发最多只能提建议。甚至很多严格点的公司,研发根本没有直接接触生产机的权限,代码提交到仓库之后,就是统一编译后自动部署,而这套编译系统和自动部署系统,本身的环境研发是控制不了的。
所以,研发要想升级线上编译机和生产机的编译器版本,就需要跨部门协作。而在这个过程中,往往会有很多问题,尤其是阐述升级的必要性上,往往会有一个灵魂拷问:“能带来多大的收益”——问题在于,升级编译器到底能带来多少收益?谁能说得清?写代码更快了?还是bug更少了?就算真的是,那具体提升多少?有数据支持吗?
反过来,这么升级,老代码的兼容性如何?源码兼容还是二进制兼容?线上正在跑的老二进制需不需要全部拿来重编一遍?能保证在新版本的编译器上0 error 0 warning编过吗?重编完了要不要重测一遍?测试方案、实施方案、切换方案、回滚方案有没有?评审过了没?
上面的都没有?只是你们研发自己想爽一点?那行,这就是非关键非业务非紧急需求,慢慢排期吧,大家手上都一堆活呢。
最后,这种步骤会重复的在每一次需要升级的时候都要重来一遍。
归根结底,这个问题的本质就是大公司里的部门墙太高,以至于很多人懒得为了这么点“小需求”去走一遍流程。所以,谁说搞IT搞互联网的没有办公室政治的?这就是典型的办公室政治。
C++并不是完全前向兼容的。一个最简单的问题:添加新的关键字的时候,之前用了这个单词的旧代码自然会崩了无法编译。
一些细节也多有变化。比如你给定一个值去初始化一个vector中的所有元素时,老版C++会给vector中的每一个元素调用构造函数,用你给的值初始化。而新版C++会先用你给的值初始化一个元素,然后将这个元素复制到vector中的所有元素头上。当你的拷贝构造函数不幸在这种情况下语义不那么一致时,就会产生行为上的变化。
还有各种旧版特性被deprecate,然后过几年被移除的情况。
这是语言层面上的问题。
另一半问题是工程层面上的。
一直跟进最新版的编译器是需要付出成本的。需要了解新版语言和编译器的特性,并且要在代码中注意规避已经deprecate的、已经不是最佳实践的特性。虽然这些成本未必高,但是要必须持之以恒地不断付出。一旦停下,工程的语言版本也随之凝固了。
节省这些成本是很自然的考虑,甚至很多项目启动时开发人员都未必会有这个意识。等到项目已经积累到一定规模了,有可能已经和语言/编译器版本高度绑定,更新编译器的成本欠帐积累得非常大,那自然更不想更新。毕竟旧版语言/编译器又不是不能用。
不过,工程上的问题也有工程上的办法解决。比如将大项目模块化,每个子模块规模足够小,更新成本足够低,逐步替换。即使出问题,规模也可控。
但是这些办法并不会降低更新的成本,只是将一次付清改成分期支付。只要项目决策者认为新版语言带来的新特性不值得付出成本 ,那就不会有解决。
再继续深究下去就会离开工程和技术上的领域,进入管理层面:技术,或者说技术带来的更佳的开发效率,到底有多重要?
有人觉得提高技术更重要,技术可以提高开发效率,进而带来更高的产出。
也有人觉得技术不重要,差不多就行。效率低无所谓,堆人加班就行了。甚至技术水平高了还有可能是坏事,会不好招人。
如果只是改编译选项的标准,那当然简单。
只要当前编译器支持,升高支持级别那根本就不叫事儿,我们这哪怕一个项目组员,自己偷偷改了编译器选项,比如从 -std=c++11 改成 -std=c++14,然后只要他自己编译过了,下回的测试不崩,以后不出事,基本就没人会来问责。
问题就是,当前使用的编译器很可能就不支持你想要的新版本标准。那就得换编译器。
而换编译器,就是大事了。
我们很多项目往往都是直接把编译器放进版本管理系统内的。也就是说项目跟编译器一起走,严格避免未来找不到能编译对应项目的编译器的问题。
所以你要真想换编译器,那你就把整个编译器提供好,整理一个能直接提交进版本管理的工具链,你负责维护新的工具链,那你只管升。
所以你问为什么有些公司无法轻松使用更新的C++版本?
答:因为他们无人维护编译器。
但凡有专人维护编译器,那么升级编译器对他来说就会是一项业绩,那么,自然就有人愿意升级了。
这是聪明的CTO玩法,傻蛋笨才完全相信人家PPT上写的东西。
我用VC6盖了一栋摩天大楼,支撑了行业半壁,形成了一个生态系统。你现在用最新的编译器build一下,理论上没问题,但是代码一大,意外太多了,包括负负得正。
什么时候可以搞新技术,得有松耦合的业务,时间要求不高,可以慢慢折腾的项目出来驱动。用技术驱动业务是Google,IBM的事情。大多数吃饭的公司不等客户掏钱来驱动技术升级,自己想通过技术引导业务,要么蠢死,要么饿死。
知乎上傻白甜的程序员特别多,整天在鄙视xx公司技术多落后,似乎换上最新的技术他就能指点江山一样了,幼稚的一匹。这种人通常也没有技术定心,发展高度有限。不看实际情况的追求新技术都是傻X,没有例外。
以上都是针对千人以上的做行业应用公司,几十条枪,或者少数技术驱动的公司就别来杠了,杠烦。
————————————————————
看到评论区有人说屎山的,统一回复。
对于大公司来说,新人谓之屎山的代码,大多都支撑了公司的主营业务,是公司的核心价值所在。别动不动就屎山,自己hold不住的就是屎。别说,这种屎大多数现在的程序员还不一定拉得出来。如果老一辈人他们真的屎,公司也发展不成大公司,大公司之所以是大公司,天时地利人和都不可或缺,所以技术绝对不会是最差的。而且按照技术发展趋势,程序员的专业水平是逐渐下降的,20年前的程序员跟现在的程序员完全是两种职业要求。我有时看着我们招的985欲哭无泪,什么时候高等教育衰退的这么厉害了。现在程序员对工具,对框架,对外部的依赖比以前高的太多太多,对基础的掌握又低了太多。打一个不恰当的比方,就像打完解放战争的战士跟和平时期的战士的区别,战斗意志,战斗技巧,资源使用,职业精神,都差别非常的大。新生代程序员脑袋里只有一堆所谓的优秀开源组件,框架,工具集。去哪家每家公司都是打的一个套路。这个饭越吃越傻,对人的依赖也越来越小,所以知乎上经常动不动来个:我30了,准备上个培训班转行程序员行不行之类的话题。
技术的发展方向就是逐渐脱离技术,从这个角度来说,能力的弱化是必然的,就像计算机以前是科学家的玩具,后来成为程序员的玩具,再现在普通人也能玩的很溜,技术的发展总有一天,什么都不懂的人也能写程序,你们这些程序员就可以下岗了。迟早的事。而且不会很远。
趁着最后的时间窗口,赶紧把屎拉了,把钱挣了,早点退休才是正道。折腾啥狗屁技术,为了研究螺丝刀是不是最好的,连航空母舰都不造了,你说这是不是傻。
请转告他,理解他理财的初衷,成家之后确实更需要理财观念,很有丈夫的担当。但是,观点是对的,实施的措施是错的,买金条才能保值,买黄金首饰并不能。
千万不要为了省钱不买钻戒而硬要买黄金首饰,殊途同归。
钻石和黄金首饰都不算保值,买到手就是二手价了。只是相对于钻石,黄金首饰更容易回收变现,作为原材料上哪儿都能回收,还有统一的价格体系。
但黄金零售价和回收价是两码事,不是同一个价格体系,而且没有绝对联动关系。
比如连锁品牌的金价为500+多的时候,回收价400+起起伏伏,可能回收价跌到300+的时候,零售均价依然坚挺在500+。
回收价格是按照国际走势走的,零售价格是根据国际走势+每个品牌自己价格体系决定的。回收时还要自损当年的手工费。
买珠宝,除非买得起拍卖行那种的,才会保值(不亏本),被名人用过还能增值。这不是什么珠宝人利益相关我才这么说,这是经济学,和每个人都息息相关。
总而言之,买首饰最大的价值是佩戴时获得愉悦感的价值,不是变现价值。
如果还是各自坚持,闹的不愉快,那就不是买什么的问题了,而是三观不合的问题:你们在想法有出入的情况下,无法有效沟通达成一致的立场,解决生活的挑战,那就需要重新考虑下要不要结婚。
你想买钻戒,他不想买,这不是三观不合。你想买,他非但不想买还要1234567pua你,这才叫三观不合。
适合进入婚姻的状态是求同存异,和谐共处。
婚前,双方还没有求同的共识,真的不适合草率地进入婚姻。
以上。
图文并茂的详细版本请参见:
相信钻石是骗局、智商税的,可以继续相信,我无意改变别人的想法,但非要杠的话,就是你对。
不管是什么行业,都要学会独立思考。先去行业最权威的书籍、学术网站了解一下客观事实,再判断别人说的话,是专家还是砖家,才能不被营销文章所左右。
那篇钻石是骗局的文章就是莫桑钻的营销文案。后来又被卖培育钻石的拿来做文章。
产品本身没有错,错的是宣传的人:宣传时踹着明白装糊涂,一半对一半错地歪曲事实,故意踩低别人拉高自己,主动引战扩大影响力。
这种行为,对于消费者而言,洗脑有效但耍人可耻,毕竟没有人喜欢不知情,更没有人喜欢别人把自己当韭菜。
我相信每个消费者都希望得到事实真相,并且有能力做出适合自己的选择。
随夫姓不局限于发达国家,但全世界都大差不差。
婚后随夫姓,确实是体现了一种从属关系。如果按今天的政治正确,尤其是按女权思想,简直不可救药。而实际上,把目光放在历史长河当中,能随夫姓简直相当于进了体制内,属于铁饭碗待遇的体现!
苏轼牛不牛?其最爱的小妾,也就是被谪至黄州[1]都没有卖掉[2]的王朝云[3],坟头上也只能写着王氏,而非苏王氏[4]。
另外,关于姓氏,咱中国还略好一些,像日本,姓氏取的那么随意,也实在是没有办法!毕竟天皇到今天还没有姓氏[5],而平民拥有姓氏也只是近150年的事情[6]。姓氏上由于太随意,留下了很多奇葩的存在,例如"一二三、我孙子、肛门、猪鼻、上床、浮気[7]、土肥"……
名字就更随意了,男娃就叫大郎、次郎、三郎,至于山本五十六[8],咱也不敢说,咱也不敢问;女娃就是花子、美子、优子、菜子……并不比我们的大柱、二牛、小凤、翠花更高雅……
欧洲也没好到哪去,别看有些人名字里带个"Von/de/Don"之类的很显洋贵,其实11世纪之前这些贵族连姓都没有[9]。至于平民,那就更好办了,要么领个教姓/名[10],要么干脆看情况起一个,比如Fisher(鱼夫),Smith(铁匠),Hunter(猎人),Johnson(约翰之子),苹果CEO cook祖上大概率是厨子……
但毫无疑问的是,家庭作为社会中最基本的利益共同体,能否成为正式的家庭成员当然是极重要的硬指标。
在长久的旧时代,宗族/家族出身是极重要的,这是不分国界的。于女性而言,几乎不可能独立生存,如果再得不到家族的实名认证,人生大都是悲惨的。如果说有所区别,大概也只是悲惨的程度和花样。
现在回归问题身本:为什么如今在很多发达国家同样以随夫姓为主流呢?
先说,我国是破了四旧[11],烧了不知多少本家/族谱,否则也不会出现争冠姓权这种事。
一方面是惯性使然。这可不只是习惯问题,更不是简单的一句"传统观念"就能解释的。这种惯性,更多的是一种力量,是利益集团的一个标致,其中并非只有男权,而是整个家族的权力征徽,更类似于一家大企业的名号,其庇护作用是显而易见的。
而平民阶层随夫姓的主要原因是效仿权贵阶层,除了自觉拿到了"皇帝的金锄头",再就是"话事人[12]"原则的体现,也就是每家每户,都要有个撑门面的最强者,而普遍上兼具暴力与理性的男性显然更适合这个位置。就普通家庭而言,其实这个位置并没有多爽,责权一体不是说着玩的!如果放在中国,这个位置就更难坐了,很多中国家庭中享有冠姓权的男性,责任与实权、收益并不成正比。
这里面还有个逻辑推导,既从妻子的角度出发“我随他姓是因为他很强,也比我强,如果反过来,他随我姓就说明我比他强,反推就是他比我弱,如果我还不如多数随夫姓的女子,那则说明我们一家子都还不如别人家最弱的那个,那就没法混了呀!”
所以,姓氏对于小家庭意义并不大,但对家庭某一成员的意义很大。且随夫姓并不见得就亏,反而很可能是赚的,无利不起早,这符合人性中的趋利特点。
那一定有人问“为什么现在很多女性/女权还要争冠姓权呢?”
答案就是:不是姓氏有问题,而是人品有问题!
以上。