主页 > 程序员中山人才网

程序员技术差做不下去?

69 2023-10-26 18:15

一、程序员技术差做不下去?

程序员本来就是个技术活儿,技术差怎么做得下去呢?不过由于现代编程方法与工具相对简便,学习的时间与效率都可以获得较大的提升。

建议要根据自己目前的能力,选择合适的“场景”,比如说基础架构运维,或是行业数据处理等,明确的应用需求,可以在学习中获得实战经验,更容易存活!浅见分享。

二、程序员业务能力差怎么办?

程序员业务能力差。那是你能力不行。技术不到位。没事儿多给自己充充电,多参加一些培训。私底下多向、多向优秀员工请教。向他们多多学习。让自己变得越来越优秀,。万事开头难。每个人都是从不知道变成知道。谁上来都不是什么都会的。一些工作能力也需要慢慢积累

三、一个程序员的水平能差到什么程度?

大概就是,一个if循环19.8亿次,而且7年没人敢动....

真事,就出现在知名游戏大厂R星的知名大作 GTA 5 中。

而且,19.8亿次的if循环,今天仍然在世界各地的玩家cpu上跑着。

————————————————————————————————————————————3月16日更新:

GTA 5“屎山”代码后续来了。

R星终于官宣准备修复了!

主动改善玩家游戏体验?不存在的。

要主动,哪里还要等七年?

这篇揭R星老底的帖子在全网大火后,R星不得不出面应对。

在和黑客大哥联系后,R星认可了他的改进方法,宣布在后续更新中修复相关问题,并且还慷慨的给他付了一笔1万美元的奖金。

鉴于R星失误实在太低级太离谱,而这位老哥的方法又太有效,以致无数玩家称他“功德无量”。

如果平均给每个玩家节省10秒,全球500万玩家一天就能节约5000万秒,一年中,节约的总时间大概能有数十年。相当于挽救了十多个人的生命!

“事了拂衣去,不留功与名”,这位黑客大哥被无数玩家膜拜。当然大家也不忘再把R星拖出来“鞭尸”。

有人吐槽,GTA 5仅2020年就买了2000万份,累计销量更是达到1.4亿份,R星每年都能从这个项目上赚数亿美元,但是却不肯花几分钟去解决这么一个低级错误,实在可耻。

还有人抨击R星几乎从不与玩家社区互动,玩家提的意见也从来充耳不闻,直到这次被被黑客嘲讽打脸,才不得不出来表态。

事后,黑客大哥还透露了一丝身份信息,原来他人在拉脱维亚。

拉脱维亚是波罗的海国家,原来是前苏联加盟国之一。在网上搜索相关信息,可以发现“拉脱维亚黑客”,几乎是和俄罗斯黑客一样传奇神秘的存在。

有网友爆料,在拉脱维亚,普通程序员工资平均3-4k欧元(23000-31000人民币)。

而他领到的这1万美元奖金,相当于三四个月工资了。

提前领了一笔“年终奖”,黑客大哥表示很开心。同时他也说,将密切关注GTA 5未来更新,一丝不苟的检查修复情况。

不知道他还能不能从R星领走更多奖金

(注:所谓“屎山”,是程序员间流传的一个梗,指陈年累月且复杂低效的代码,因为改动成本巨大,所有人避之不及。)

——————————————————————————————————————————

GTA 5“屎山代码”前情回顾:

一支烟的功夫,GTA 5联机版终于打开了。

「7年了!GTA 5联机版加载还是这么慢??」

Please wait forever to playReddit、Steam、HackerNews上,无数玩家吐槽抱怨……进游戏少则等5、6分钟,多则20分钟。终于,一个黑客大哥实在忍不了,用逆编译器逐条查看运行情况,终于找到原因。原来,R星(游戏开发商RockStar)写的代码太低效,加载时,一个if语句竟然循环了19.8亿次….幕后黑手:谁占用大量时间?加载GTA 5 Online到底有多慢?

硬件拉满的土豪玩家请无视Reddit相关板块发起的调查中,超过80%的玩家,都要等3分钟以上,有的甚至超过15分钟。而且,从7年前Online上线到今天,这个情况丝毫没有改善。暴躁的,已经骂起了脏话……

但奇怪的是,如果你选择是故事模式(单机版),加载就会快很多,感觉甚至像两个不同的工作室开发的游戏。具体到这位黑客大哥的例子,他自己的硬件配置如下:

CPU,是老而弥坚的AMD FX-8350,2012年上市,采用“推土机”架构,超频潜力惊人。显卡还是GTX 1070。这样今天看起来老旧的配置,打开单机版GTA 5需要1分10秒,而加载联机版则6分钟起。黑客大哥用了最简单的Windows任务管理器,来判断联机版GTA 5在启动时,都调用了哪些计算机资源。

在1分钟的时间分界线上,之前是加载的是单机和联机版通用的基础内容,之后是联机版独有的内容。可以看到,联机版GTA 5,加载时调用大量CPU资源至少长达4分钟之久。而同时,内存、GPU、硬盘的使用情况几乎没有明显变化。所以,问题大概率出在代码上。“R星代码写太烂!”黑客大哥在开扒R星代码之前,就说:我闻到一股烂代码的味道…..为了找出到底那一部分程序卡住了CPU,他使用了工具Luke Stackwalker,对CPU任务堆栈进行采样分析。Luke Stackwalker对于闭源应用程序,可以转存正在运行的进程堆栈,和当前指令指针的位置,以一定时间间隔建立一个调用树。最后将数据整合,就可以得到程序运行统计数据。从结果上看,一共有两个函数“卡住”了CPU:

于是他使用专业的代码拆解工具,给GTA 5来了一个“开膛破肚”。沿着调用栈往下走,发现问题出在一个sscanf函数上。

sscanf的功能是读取格式化的字符串中的数据,而在GTA 5中,它正在读取的是一个10M左右,有63000多个条目的JSON文件。这个文件到底是干什么用的?黑客大哥推测,这可能是游戏内购商店的相关内容。

在具体运行时,sscanf对于每个有效值,逐个读取每一个字符,然后返回结果,之后指针移向下一个值,循环往复……直到把10M文件全部扫一遍。再看第二个问题,这是一个存储命令,对象是item,具体是什么不得而知。但是保存前,有一个if语句,逐一比较item内项目的哈希值,检查它们是否出现在某一列表中。按照他的计算,这一步if,要执行(63000^2+63000)/2 = 1984531500次!没错,等待加载前的十多分钟里,GTA 5用你的CPU,执行了19.8亿次if命令。

如此简单粗暴的编程思路,让这位老哥哭笑不得:既然对象有唯一哈希值,那为什么不用hash map???

(hashmap根据hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序不确定。)

至于为什么这样,有网友推测最开始,if的循环次数并没有这么多,而是随着开发,条目不断增多,最后到了积重难返的地步。

而之前的代码结构,谁也不愿意去动。

就这样,19.8亿次if,一遍遍在世界各地玩家cpu上上演。。。

这是不是堪称游戏开发史上最意外的“屎山”代码?

问题解决,加载时间节省70%至于第一个问题,黑客大哥采用hook大法,不一一读取字符串,而是:hook strlen“缓存 “字符串起始和当前长度。如果在字符串范围内函数在此被调用,返回缓存的值至于if语句问题,就更直接了——完全跳过重复检查,利用hash map插入项目,因为这些值是唯一的。最后的结果如下:

现在,GTA 5联机版加载,从原来的6分钟,下降到现在的1分50秒!而且,用的还是七八年前的硬件配置。在此,应该手动@R星:你学废了吗?

这位黑客大哥在博文中没有留下任何身份信息,也没有透露用的反编译工具,但是做好事不留名的他,把打好包的工具上传到了Github,玩家通过一行代码就能下载:

git clone —recurse-submodules https://github.com/tostercx/GTAO_Booster_PoC

之后,把dll文件粘贴到游戏根目录下就OK!博客原文https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/Github地址:https://github.com/tostercx/GTAO_Booster_PoC

四、差的差怎么组词?

差是个多音字,有四种读音分别是chā,chāi,cī,chà。组词如下:

chà:差生、差事、差劲、差补、较差、跑差、差阑、差第、舛差、徭差、差注、房差、冥差。

chā:差距、反差、差异、差错、差额、差失、视差、有差、种差、顺差、级差。

chāi:差使、差遣、听差、出差、专差、撤差、差事、美差、差役、肥差、官差、交差、解差。

cī:参差、差肩、差互、差序、参差竹。

五、黑程序员的都是程序员,为什么?

1、自黑既是一种境界,也是一种沟通方式。在娱乐圈比较常见,在程序员圈也能经常看到程序员们通过自黑来缓解工作压力和表达一种工作状态,这也是他们的一种独特的幽默方式。但某些吃瓜群众信以为真,误会就再所难免。

2、他们熟知程序员的工作内容,且近距离接触,或为朋友,或为同事。在接触过程中,程序员的言行逐渐形成了他们所认为的形象,接触久了,形象就固定了下来,以为大部分程序员都是这样的。以后他们在谈到程序员的时候,就会联想到他们接触到的程序员,脱口而出的便是之前形成的固有印象,实则是某一小撮程序员的形象,并不能代表大部分程序员。

3、多重误会叠加,日复一日,年复一年,程序员就这样被“屌丝”化了。于是经常成为被调侃的对象。

六、此程序员与彼程序员的区别?

此程序员与彼程序员应该没有实质性区别。因为两个人都是程序员,从事同一工作,专业技术都一样,只是在介绍程序员时一种区分。

七、什么是差差差?

差,汉语常用字,读音chā,chāi,cī,chà,最早见于商代甲骨文时代。

基本字义

差chà(ㄔㄚˋ)

1、错误:话说差了。

2、不相当,不相合:差不多。

3、缺欠:还差十元钱。

4、不好,不够标准:差等。成绩差。

差chā(ㄔㄚ)

1、不同,不同之点:差别。差距。差额。差价。

2、大致还可以:差可。

3、错误:差错。偏差。差池。

4、数学上指减法运算中的得数:差数。四减二的差是二。

差chāi(ㄔㄞ)

1、派遣去做事:差遣。

2、旧时称被派遣的人:差人。解差。

3、被派遣去做的事:差事。公差。出差。

差cī(ㄘ)

1、〔参(cēn)差〕见“参”。

八、差差的读音是什么?

差差的读音是chà chà 释义: 差差是一个汉语词汇,拼音是chà chà,指参差。

不齐貌。《荀子·正名》:“君子之言,涉然而精,俛然而类,差差然而齐。” 杨倞 注:“差差,不齐貌。谓论列是非似若不齐,然终归於齐一也。” 唐 温庭筠《东郊行》:“绿诸幽香注白苹,差差小浪吹鱼鳞。” 清 钱谦益 《书石屋语录》诗:“神剑光差差,飞矢锋镞镞。”

九、光线差 差读音的声调?

光线差差读音的声调?汉字差的读音和声调是,cha,声调是四声。汉字的读音,就是用汉语拼音中字母相拼组成的音节,音节上注上声调就是读音。cha它是这个字的音节,四声是声调。而拼音音节一般情况下是由声母和韵母相拼组成的,但也有特殊情况下的单韵母可自成音节。拼音是我们学汉字读音的基础。我们要学好拼音。

十、差七差八的成语?

1、 七手八脚  

解释: 原指比一般人多好几个手脚。形容人多手杂;动作忙乱。出处:宋·释普济《五灯会元》第二十卷

2、 七拼八凑  

解释:指把零碎的东西拼凑起来。形容随意拼凑;多而杂乱。出处:清·李观海《歧路灯》第四十一回

3、七上八下  

解释:形容心神不安的惊惶样子。出处:宋·宗杲说《大慧普觉禅师语录》

4、七零八落   解释: 零:零碎。形容零散稀疏的样子。特指原来又多又整齐的东西现在零散了。出处:宋·释惟白《续传灯录·有文禅师》第四十二卷