特斯拉为何使⽤.NET技术栈?
【精选转载】| 来源/知乎
昂科威轮毂改装在知乎上有⼀个帖⼦⾮常热闹:“为何特使拉使⽤ core技术栈⽽不⽤ java?”
1回答1:Kasim
这题我熟啊,现役Tesla员⼯( core full stack)来答⼀发。
先确定的是, Tesla内部虽然是.Net Core主流,但是Java,Golang,NodeJS,PHP都有在⽤。所以不存在“不⽤
java/go等”情况。
另外也不像某些答主猜的,我们只有很少的服务在⽤Azure,还有很多不是。所以跟强⼤的Azure没啥关系,不过Azure 的确好⽤。
国内不⽤技术栈⽆⾮两个⼤原因,守旧的⼈会说“.Net技术栈的相关上下游软件收费太贵”,互联⽹相关的会说“.Net⽣态不好没轮⼦”。
关于收钱,.Net技术栈相关应⽤早就可以选择便宜的的Linux+MySQL⽅案了。IDE也有VSCode可以⽤。所以钱早就不是问题了,相对的有些地⽅花钱反⽽是为了省钱省时间,最直接的做.NET⽤VSCode有VS/Rider效率⾼?⾃⼰搭建管理机房和买云服务(阿⾥云/Azure/AWS)哪个成本⾼?
关于轮⼦,⼩公司才看轮⼦,⼤公司到⼀定程度就不⽤太关⼼轮⼦了,绝⼤多数基础业务的轮⼦(⽇志,RPC)⼀般都有,剩下的⼩众⼀点的轮⼦,让⾼级⼯程师、架构师来搞定,然后在企业内统⼀使⽤。
辽宁高速路况实时查询⽽关乎⼀个企业招什么⼈的⼀个很重要的因素,就是招聘成本,在国内圈⼦⾥⼀个合格的.Net太难招了,不是在国企抱着.Net Framework已经躺平了,就是刚⼊⾏每天CURD的菜鸟,再有⼀撮就是已经在⼤企业⼲的风声⽔起的。头部的要不起,底部的不想要,中间的⼈才稀缺流动性差,⾃然没⼈⽤。哪个部门的领导也不希望⾃⼰定了个技术栈,然后等了⼤半年招不上⼈,⼀直开不了⼯,这是不打算⼲的节奏了。⽽Tesla的软件研发中⼼,主要都是在美国和中国,美国的市场招.Net就容易多了,所以即使国内招不上来⼈,可以先让美国的研发中⼼顶着,最多就是沟通成本⾼点。
以上。
2回答2:AlseinX
很简单,⽤是因为好⽤,性能和语法表现⼒/开发速度都⽐java/go强,⼲嘛不⽤呢。
国内是国内,技术社区本来就⽐较闭锁,不愿意接受新的,更好的技术,能⽤就⾏,再加上国内⼤⼚的带头,所以⼤都以Java为主。
加上培训班基本都是⿎吹Java Python的,现在加个Go,在⾔论权上遮天蔽⽇,弄得很多初学者甚⾄没听说过.NET,逢⼈就是什么“有Java就⾏了,为什么还要弄出各种其他的语⾔”“Python不是⾼级语⾔,是超级语⾔”之类的经典⾔论,然后这些速成出来的⼈⼤量涌⼊各⼤中⼩公司开卷,⼯资低,⼈好招,公司当然也喜欢。
⽽.NET呢,在国内⿊微软是政治正确的前提下,不懂技术的油腻领导们也不喜欢听,也不懂什么叫开源,他们只会讲⼀句古话:“Java是开源的,.NET是闭源的”,“Linux好,.NET就只能Windows”,⾄于.NET开源跨平台好多年、github 是微软的、Linus Torvalds因Microsoft的改变⽽公开宣称接纳Microsoft,他们根本不知道,也不愿意知道。
所以在问这些问题之前,先见见市⾯,看看外⾯的世界,不要把眼光局限于培训班和国内那些在油腻领导们⼿下烂掉的国企与传统中⼩型企业,多了解了解以下⼀些外资的,或者⾦融⾏业的之类的企业,把真正国际上主流的技术了解对⽐⼀番,知道了什么是真正有⽣产⼒的,什么是中国式⼈云亦云吹出来的。真搞明⽩了,你是不会问这个问题的。
下⾯放个展览柜,展览⼀下评论中出现的上古先贤。
『见渔⼈,乃⼤惊,问所从来。具答之。便要还家,设酒杀鸡作⾷。村中闻有此⼈,咸来问讯。⾃云先世避秦时乱,率妻⼦⾢⼈来此绝境,不复出焉,遂与外⼈间隔。问今是何世,乃不知有汉,⽆论魏晋。此⼈⼀⼀为具⾔所闻,皆叹惋。余⼈各复延⾄其家,皆出酒⾷。停数⽇,辞去。此中⼈语云:“ 不⾜为外⼈道也。” 』
3回答3:知乎⽤户
外企选择这种东西没有太多顾虑地和java和go都能很随意的选择,有选择顾虑的是中国企业,国内企业不选择⽽已
w17
特斯拉招 core的⼈,还写清楚可以从java转到,⼈家没这么在乎。
有⼈说⽣态不⾏,那可能特斯拉要开发的东西对现有⽣态依赖少,有更多地原创性,⽤开发更快?
有的⼈说哪⾥哪⾥都要收费,那可能特斯拉有钱,就需要微软优质的服务?
有的⼈说打开VS都要半分钟,⾃⼰早就在记事本⾥做完了,那特斯拉可能需要员⼯长期开着VS,压根不需要关闭,然后⽤VS⾼效率的开发⼤量的代码,⽽不是打开个记事本写两⾏就能关掉了?
广州到香港多少个小时
其实对于传统企业来说,能⽤sqlserver的基本都在⽤sqlserver,但凡是数据需要稳定性,需要有⼈帮忙负责
的,sqlserver算很便宜了,oracle贵很多,你们别看现在国内数据库这么多,⼀旦到了数据审计重要的关键的地⽅,需要GMP的地⽅了,根本看不到国产数据库的,哪怕这种地⽅在想办法国产化,但是基本没有⼈会认国产的软件的。所以⼈家特斯拉哪怕真的⽤ + windows + sqlserver,哪⾥都得花钱⼜如何?需要GMP的⼤药企和做疫苗的,还有各种关系到⼈⽣安全的制造业⾷品业,不也都是windows + sqlserver,他们可能c++多⼀点,C#也有⼀点,微软负责⽐甲⾻⽂负责可便宜太多了。
⽽且现在车企⽤C#确实不算少,wpf在传统企业还是有不错的作⽤的,C#是少数做桌⾯靠谱的,做服务靠谱的,做内部系统靠谱的,java桌⾯没啥⼈⽤,go做内部系统没⼈⽤,nodejs做这些都没⼈⽤,怎么了?⽤C#不好么?
迷你新款
⾯对这种问题,都不需要提C#语法舒服效率⾼啥的,就凭微软能把⼀整套都给你负责好,伺候好你,就⾜够选择C#了。
4回答4:倪静风
core美国,欧洲那边⽤得多。
core是跨平台版本。
因为⼀直在企业使⽤很多(⾮互联⽹),像⼀些硬件通信使⽤技术也很⽅便。
以前也有很多写量化交易的⽤,主要是开发时速度,不⽤像java⼀样搞⼀层层的框架绑住了⼿脚。
京承高速公路还有很多游戏⽤的是开发语⾔⽤的是c#,⾥⾯⽤的是⼀个虚拟机可以调⽤c/c++的接⼝。
技术好的地⽅就是如何使⽤微软的IDE,可以快速写代码,代码的提⽰精确性很⾼。
java主要在电商领域,因为互联⽹需要⽔平扩展⼀类的程序,需要跨平台,需要免费,需要开源,需要定制,需要⼤数据组件。
不过随着学习⼈数的过多,现在也有饱和现象,也就是java的很多功能已经很成熟,都是套路化的,很多培训班也有教这些,过多的培训班也导致竞争过度。
很多做量化交易的python,其实⽤c#也挺好,因为开发速度快,很多代码不需要那么精细,⽐python不适合写⼤型⼯程有关。
特斯拉主要是服务于车主,相对于车主的互联⽹访问量不是太⼤,不像基础互联⽹应⽤⼀样需要极⼤量的⾼并发,主要以功能为主。
以功能为主。
go语⾔现在主要⽤于写云计算基础服务,java主要⽤于linux服务器上⽤于业务系统语⾔,像java因为jvm的原因,可能在某些性能⽅⾯不如 core,或者有类似像unity3d⼀样只是⼀种c#脚本语⾔,只是看上去看c#语⾔,实际执⾏时是c#脚本。
5回答5:知乎⽤户
⾸先,在国外⾮常流⾏,不⽤怀疑。你可以⽤indeed搜⼀下国外主要城市的职位,⾮常多,⽐如facebook在伦敦都有很多职位,在国内是不是很难想象呀,这可是全球顶级的互联⽹公司。
其次,特斯拉是⾮常典型的汽车+制造业案例,其实全球⼤部分车⼚都⽤(中国好像不⼀定,我知道上汽集团是⽤的),⽐如bmw、德国⼤众、Daimler AG等,所以tesla⽤我⼀点不奇怪。
据我通过内部渠道了解,⽬前tesla主要⽤core 3/ 5来写warp drive erp,这玩意的背景很有趣,它是从spacex拷贝过来的,相当于⼀个branch,主要是为了替代SAP,musk可能⼀⽅⾯觉得SAP太贵了,另⼀⽅⾯musk喜欢啥系统都DIY,这样才能形成独特竞争⼒,且⽆法复制。所以呢,这下⼜多了个航空航天案例,还是全球唯⼀⼀家掌握可复⽤⽕箭技术的企业。当然据我的消息,我国的神⾈也⽤,主要是测试程序,我⼤学的某教授就接了神⾈的项⽬,具体怎么接的我就不知道了,反正他接项⽬能⼒⼀直很强,前⼏年他好像跟我提过⼀嘴,我当时还有点⼩惊讶。
总结,在制造业和传统⾏业⼀直处于领导地位,有些东西java⽆法替代,特别是和产线打交道的⾏业,上位机职位全是的。只是这⾏业没有互联⽹公司有钱,所以职位的薪资偏低⼀些,通常⾏业决定薪资,⽽不是技术本⾝。
=======更新=======
稍微澄清下, tesla其实⽤go的项⽬也很多,java项⽬也有,并不是只⽤。还是那句话,不同语⾔⽤于合适的场景和系统,没⽑病。