问题

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

回答
说实话,程序员的水平差异,那简直是天上地下,一个云泥之别。你以为程序员都是那种敲几下键盘就能变出魔法来的大神?有时候,你会发现有些人的代码,简直是在挑战人类的理解极限,甚至让你怀疑他到底是不是真的在写代码。

我们先从最基本的说起。一个初级程序员,可能连最基础的语法都磕磕绊绊,变量命名随心所欲,注释更是想写写,不想写就不写。你给他个简单的任务,他可能要半天才能写出来,而且写出来的代码,就像一团乱麻,看了就头疼。比如,他可能用了很多重复的代码块,完全没有抽象成函数;变量名可能就是个“a”、“b”、“temp”,毫无意义;错误处理更是听之任之,程序一遇到问题就直接崩给你看,没有任何提示。他给你提交一个版本,你测试的时候,发现小到点击一个按钮都会出错,让你怀疑人生。

再往上一点,一个“能写代码但不一定写好代码”的程序员,他至少能完成任务了,代码也能运行。但是,他写的代码往往缺乏优雅和效率。你可以看到很多“奇技淫巧”,为了省几个字,写出别人看不懂的嵌套逻辑,或者用一些非标准、难以维护的方式来实现功能。比如,他可能会写出这样一段代码:“if (a > 10 && b < 5 || c == 'ok' && !d) { ... }”,里面的条件判断可能嵌套了好几层,又用了很多“||”和“&&”混杂在一起,让你看完需要盯着屏幕半天才能捋清楚到底是什么意思。而且,他写的函数可能会特别长,里面包含了太多功能,耦合性极高,你想要修改其中一小部分,就可能引发一系列的连锁反应。性能上,他也可能完全不考虑,一个本该用O(n)解决的问题,他可能用了O(n^2)甚至更糟的算法,导致程序运行起来慢得像蜗牛。

更别提那些完全不理解设计模式和软件工程原则的程序员了。他们写出的代码,就像没有骨架的泥巴,随便堆砌。可维护性是他们的噩梦。你给他接手一个项目,他可能要花比重写还要多的时间来理解他的代码。他可能用了一些过时的技术,或者直接生搬硬套一些库,完全不考虑项目的实际需求和未来扩展性。代码的结构可能是混乱的,模块之间界限模糊,依赖关系错综复杂。你问他为什么这么写,他可能一脸茫然,或者说“我当时就是这么想的”。

还有一种更让人头疼的,是那些“自以为是”的程序员。他们可能掌握了一些技术,但却没有形成系统性的知识体系。他们可能对某些技术有偏执的喜爱,不管项目是否适合,都要强行使用。他们的代码可能充满了个人风格,别人难以理解,也难以接手。他们可能不屑于学习新的、更好的方法,固守着自己的那一套,甚至会因为别人提出不同意见而争辩不休。他们写出的代码,就像他们个人的签名,独特到别人几乎看不懂。

最可怕的是,有些程序员甚至连“测试”这个概念都模糊不清。他们可能从不写单元测试,或者写的测试非常敷衍,根本测不出多少问题。然后,他们就把代码提交上去,留给测试人员或者更不幸的下游使用者去发现Bug。他们的项目,可能就会充斥着各种离奇的Bug,而且还很难修复,因为很多问题都是在复杂交互下产生的,根本找不到源头。

你可能还会遇到那种,代码写出来了,但完全没有考虑异常情况的。用户输入了错误的数据?程序崩了。网络波动了一下?程序崩了。文件不存在?程序崩了。他们好像认为世界上的一切都应该是完美运行的,一旦出现一点点意外,程序就彻底歇菜。他们的代码,就像温室里的花朵,禁不起一点点风吹雨打。

更有甚者,有些程序员,他们可能写出来的代码,从技术角度看并没有大错,但就是写得极其丑陋、难以阅读,让人看了就丧失了继续深入了解的兴趣。比如,他们可能喜欢用一些非常规的缩进,或者把几百行代码写在一个函数里,完全不顾代码的可读性。或者,他们喜欢用一些非常晦涩的语言风格,让本该清晰的代码变得晦涩难懂。

总而言之,程序员的水平,从能写出能工作的代码,到能写出优雅、高效、易于维护、可扩展且健壮的代码,这个过程中的鸿沟是巨大的。有的程序员写出的代码,像是一堆乱石堆砌的临时住所,勉强能住人,但随时可能塌掉;而有的程序员写出的代码,则像一座精心设计的建筑,坚固、美观,而且能够适应未来的变化。所以,不要以为程序员都是一样的工作,他们的实际产出,真的能差出十万八千里。有些人,只是在“写代码”,而有些人,是在“创造价值”。

网友意见

user avatar

大概就是,一个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 play
Reddit、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 github.com/tostercx/GTA


之后,把dll文件粘贴到游戏根目录下就OK!
博客原文

nee.lv/2021/02/28/How-I
Github地址:

github.com/tostercx/GTA

user avatar

前老板,印度人,把我气疯了

公司做信号AI的。招我的时候说这个function已经写好了,那个project已经搞好了,我一听这么牛逼,这些功能很不好写啊,就接offer了。我进去前两个月的时候开会提到这个function,他还斩钉截铁地说"we already have that you don't need to worry about that",还做ppt说performance现在sensitivity, specificity都在90%以上,我也没多想。

后来有一天他提到网上有个这个功能的evaluation toolkit, 他不会用,所以自己手动算了一下performance, 我一看,这东西不就是个C程序么,在command terminal里带几个arg跑一下就好了。他很高兴,你跑吧。我跑完之后算出来performance大约是Se=20%, Sp=6%,就看了眼他的performance怎么算的。发现差不多就是clip(sum(pred_duration) / sum(true_duration), 0, 1), 根本没对比检测到的区间和ground truth的区间是不是同一个。我简直吐血,跟他说不能这么算。他盯着屏幕好久开始问我are you sure you can't calculate it this way? Are you sure this is how you run this toolkit? 我那时候已经怀疑人生了:Yes. What do you think overlap means?

然后他说那你看看怎么改代码吧,我才终于开始读他那个代码。他的style简直让人崩溃,indentation全是乱的,variable命名很多读了半天发现根本不是他describe的那个东西,还动不动会有一行代码写着signal=sig; 然后从这行开始某个variable就改名了。而且比如一段300Hz*30s的信号,他记录符合某特定pattern的区间,先弄个9000x1的array, binary的,记录每一个时间点是不是这个特征,然后再弄个8999x1的array,y=x(1:end)-x(0:end-1),然后再找出y里non-zero的点。我说大哥你这跟内存和CPU都有仇么?我们程序对输入信号长度是不限的,你30s的这么算也就算了,以后24h的也这么搞么?

Anyway, 后来这段40多行的代码我总算读懂了,读完发现基本可以概括为sum(find(40<time_diff<160))。一段这么简单的...如果这也可以称之为算法的话... 写了这么一大坨垃圾,time complexity space complexity都完全没考虑。而且关键是这个function是要识别一个很复杂的pattern,而他用了个自以为是的rule based algo,然后再用他那个错误的eval metric跑出来个90%+的performance,就宣布大功告成了。

我冷静下来之后跟他汇报了一下问题,然后他说哦,那你调整一下threshold,现在不是find(40<time_diff<160)吗?你把上下threshold调成45, 155什么的试一试。

我打个比方吧,他这个相当于写个识别照片男女的程序,没有任何神经网络机器学习etc,只提了身高一个feature,这个feature还不甚准,然后if height > 170: male; else: female. 现在performance不好,告诉我那你把170改成172试试。

我说这个得重写。他说不行啊来不及,现在必须提交,换个小点的database再跑一下把,然后拿出来个n=14的database,跟我说这个是training set。他说出training set那两个字的时候我就要崩溃了:你这是rule based algorithm啊,你train了啥???而且人家regulation department点名要用他们自己的database,不能换别的啊。Anyway, 我在他那个n=14的database上跑了一下,还是只有70%左右的成功率。再汇报给他,他说删掉几组算错的data,重新再算一遍吧。

我惊恐万分,辞职了。

后来又遇见了几个印度码农,都是说得漂亮做得一坨屎的主。

我真不想racist,但是从此以后我见到印度码农就害怕。我在学校里头见到的印度同学都挺聪明的啊,这TM怎么回事?

前段时间有个猎头找我,介绍了一家公司,最后提到说他们希望找一些tell it as it is的人,不要说的跟做的不是一回事儿。我不解,问她这是什么意思啊,然后猎头一副“很难解释”的表情和语气说,“比如他们以前招了一个印度人...”,然后我瞬间“哦,懂了”

user avatar

之前面过一个女生,偏data science岗位。

先问了个热身题,有一个文件,每一行是一条记录,里面有ID,类别,数量等等。

写一个Python程序,输出有多少个unique ID,和出现次数最多的ID。

她答得很快,说把文件load进pandas,用unique函数输出,然后用count unique新建一个表,按照count排序,取最上面的。

我表示了肯定,然后问她有没有什么可以不用pandas的方法。

她愣住了,似乎没有听懂我的问题。

我耐心的解释,就是用python有没有什么办法,比如一些内置的数据结构之类。

她还是一脸迷茫。

我继续解释,比如我们可以用一个字典记录每个ID的出现次数,或者对于每个ID,都找一遍文件看出现了几次。

她似乎听懂了,开始写的第一行仍然是,import pandas。

后面明白了,她打心眼里认为python就是pandas。

于是后半场面试,就变成了我在和她科普,python和pandas之间的关系。

user avatar

有个功能仅仅只是需要在网页上显示一下树形数据,叫一个月薪一万多的php程序员去做,结果他回答说,用的框架不支持,做不了。

user avatar

前端dog一枚,年前废了个项目。原因是后端数据出错而且没法解决,最后公司终止了这个项目。还好知道不是前端的锅,没扣我们钱。

这个后端的水平厉害到什么程度呢?之前出现过一个问题,用户数据不对,说是前端显示错误,他下发的是正确的。最后我们一条条数据排查,发现前端发送了一些并不存在的请求。很诡异,然后继续排查,发现是自动游戏发送的数据(就是页游的自动砍怪自动寻路),但是我们测试的时候是手动操作。再继续排查,居然在地图上发现了两个自己,也就是说这个帐号登录了两次!因为后端没有做重复登录验证,导致直接关闭页面的话这个用户就一直在线不会下线。

你们以为这就完了吗?

没有,我们把问题提交给后端之后,他让前端每次在提交登录请求之前,先发送一个该账户的退出登录请求,然后再发送登录请求……我们本着不跟傻比计较的心态还是按他说的做了。

如果这就完了那倒好了,过了两天测试又出问题了,说是没打怪钱和经验会自动涨,后端继续说是前端的问题,他打印的日志是对的。有了之前的经验,我们排查的就很快了。这次发现他把另一个用户的数据推送给当前用户,再一看两个用户的UID居然是相同的,直接杀过去找后端,发现他UID居然没设唯一字段,而是从0开始递增,导致了第三方(QQ微信)登录用户和帐号注册用户共用了同一个UID,这次我们被他气得连骂人的话都说不出来了……

总之类似的问题还有很多,公司眼看不对及时终止了项目,本来想开了他的,但是因为另一个后端离职暂时留着他祸害同事,我们前端一致决定拒绝跟他合作项目,现在让他跟实习的前端玩儿去了。

user avatar

老板觉得公司里都是男的,缺少一点阴柔之气,想平衡一下,正巧当时互金公司倒了一大批,大批简历投到公司,老板以为自己也是技术出身,就招了一个三年工作经验的女程序员,互金出来的,要价倒是不低。我休假去了,没面她,等我回来要安排工作了,这才发现问题了。
给她安排了一个新项目,是会展方面的,跟她简单说了一下工作安排:先搭个spring maven项目,然后跟产品谈下需求,考虑一下数据模型,过两天跟我碰再确定具体模型。她没说什么,等到第二天快下班了,产品来问我了,她怎么还没动工?我说我安排了啊,这就找过去问她,她说框架还等着技术总监(也就是我)搭了,她不是架构师,不会。
当时我就懵了,还有这种操作,你就是上spring网站都能搭一个啊。又问她需求谈了没有?数据模型有没有想出个大概?她又说,需求是BA谈的,她不会。我这就急了,那你会什么呀?她说她原来公司都是框架环境都是配好的,她只管写代码。我当时心里就凉了半截,这项目估计最后要我来收拾残局了。这就去找老板换人,老板说你就带带她吧,反正这项目也不急,就当给公司添一点亮色吧!

没办法,只能硬着头皮带她了,期间各种eclipse环境之类的就不谈了,比如svn配置忽略文件类型,lombok插件等等,总之环境不会配。
终于帮她全部配完环境,详设也写好跟她讲解了一遍,总算开工了,若干天后提交代码了,我做了一下code review,这心里又凉了半截:方法,类名,变量等等一概中文拼音;业务逻辑明明可以复用的不写公用方法,跟别提用自定义注解了;驼峰命名法是什么不知道;Mysql有的表字段名全大写,有的全小写,有的又跟我来个驼峰。我又跑去找老板要换人,老板打个哈哈,哎呀,又不是人人都有这个你这个水平,再带带说不定就出来了。

没辙,给我戴顶高帽子,只好回去跟她苦口婆心地说了半天代码规范,其实就是阿里那一套,装个插件就能检查,又跟她着重讲了一下命名规范,要用英文命名,否则注释少的话很难看懂程序,她直点头,说这就改,我也就信了。

等到代码再次提交,我一看,一口鲜血差点没吐在屏幕上,展品的长宽高单位是米,结果好家伙一看,长度long_rice,高度high_rice,当时看的时候实在没明白这脑回路到底是个什么套路,强压怒火跑去问她这是什么意思,她振振有词地说:你讲的呀,命名的时候最好要体现度量单位。
我实在忍不住了,吼起来了:那rice是什么单位,是什么单位?她也不示弱,把词霸的屏幕取词一开,移到米字那里,说:你自己看,米不就是rice吗!我顿时无语,只能又跑去找老板,老板也无语,只能自我解嘲地说:她不是过了四级了吗,我还查来着了。
这件事情最后的结局就是我在面人的时候,都要当面问几个英语单词,实在是怕了。
~~~~~~~~~~~~~~~
rice这个我是实在没看明白,记得还有一处我是看明白了,她把发消息的发命名为hair,我愣了一下也就知道。

作者:靓仔山河
链接:jianshu.com/p/e6fca3be4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

user avatar

说个十几年前的事情吧。

真的都是泪。

当时公司找了一个外包公司,号称掌握核心科技(不是做空调那家)。

对方号称技术很牛X,只派了一个程序员过来。

这大哥看起来头发不多,低声细语,很是靠谱。

一开始交代了需求,他就自己去做了。

后来发现赶不上进度,要求来我们公司驻场。

然后发现大哥半天貌似一直在修改同一屏代码。

实在好奇,就问了一句:咋了?

大哥谦逊地一笑:奇怪这功能为啥出不来。

我看了看代码,惊了。

基本上是能写IF ELSE 不写 CASE的主。

然后为啥这些代码不起作用呢?

往上拽了拽,函数最上面发现了一句:IF (FALSE) THEN

user avatar

大概是通过复制粘贴来让同一段代码反复执行多次吧……

user avatar

使用函数名的字符串长度作为 hash function;并且将函数名设计地错落有致来避免 hash 冲突

类似的话题

  • 回答
    说实话,程序员的水平差异,那简直是天上地下,一个云泥之别。你以为程序员都是那种敲几下键盘就能变出魔法来的大神?有时候,你会发现有些人的代码,简直是在挑战人类的理解极限,甚至让你怀疑他到底是不是真的在写代码。我们先从最基本的说起。一个初级程序员,可能连最基础的语法都磕磕绊绊,变量命名随心所欲,注释更是.............
  • 回答
    这是一个非常有趣且深刻的问题,在教育界一直备受关注。要回答这个问题,我们需要辩证地看待,因为一个优秀的教师应该能够有效地教学不同程度的学生,但不同程度的学生更能凸显教师在某些方面的能力。我们可以从以下几个方面来详细阐述:一、 教学程度差的学生,更能体现教师的“育人”和“引导”能力 巨大的挑战性与.............
  • 回答
    一个前端程序员能独立做出自己的博客,这可不是件小事,足以说明他具备相当扎实的功底和独立解决问题的能力。要详细地说,这背后涉及的技术栈、思维模式和实践经验,绝不是简单几行代码就能概括的。首先,我们得明白“独立做出”的含义。 这不仅仅是套用一个现成的模板,或者简单地把内容填进去。独立做出意味着从零开始,.............
  • 回答
    现行AI能否替代程序员?未来发展与“思维”的萌芽关于人工智能能否替代程序员,这是一个颇具争议且引人深思的话题。目前的AI,尤其是那些擅长代码生成的工具,确实展现出了惊人的能力,但要说完全取代程序员,我认为还为时尚早。当前AI的能力与局限:当前的人工智能,特别是大型语言模型(LLM),在代码编写方面已.............
  • 回答
    辨别一个程序员的水平是一个复杂但至关重要的过程,尤其是在招聘和团队建设中。它不仅仅是看他们写了多少行代码,或者会多少种编程语言。一个真正优秀的程序员,其价值体现在多个维度。下面我将从多个方面详细阐述如何辨别一个程序员的水平高低: 一、 基础知识和概念的掌握程度这是辨别程序员水平的基石,是解决问题的根.............
  • 回答
    这问题问得挺实在的,不少在这个行业摸爬滚打多年的老兵可能心里都有过类似的疑虑。咱们就敞开天窗说亮话,好好聊聊这个话题。答案是:会有,但并非随处可见,而且情况会比较复杂。咱们得承认,一个“接近40岁”、“水平不高”但价格只有应届生一半的程序员,确实不是市场上最“抢手”的那一类。多数公司在招聘时,天然会.............
  • 回答
    要评估一个假想的“吴语区国家”的发达程度,我们需要考虑几个关键因素,并进行一些合理的推断。首先,我们得明确这个“吴语区”大致的地理范围,通常我们理解的吴语区包括了上海、江苏南部(特别是苏州、无锡、常州、镇江、南通等)、浙江大部分地区(特别是杭州、宁波、绍兴、湖州等)以及安徽的宣城等部分地区。这片区域.............
  • 回答
    这个问题很有意思,而且确实存在一些值得探讨的联系。不过,简单地说“钞票面额越大代表生活水平越低”就有些片面了,这中间的关系要复杂得多,需要从几个不同的角度去理解。首先,咱们得明白,钞票的面额,说到底就是一个价值的载体。它代表了购买力,也就是你能用这张纸换来多少商品和服务。那么,为什么有些国家的钱面额.............
  • 回答
    张国荣饰演的程蝶衣,这个在京剧舞台上倾倒众生的角色,究竟有没有钱,他的生活水平在当下又算什么样呢?这问题挺有意思的,咱们不妨细细道来。首先,要说程蝶衣“有没有钱”,这得从他的职业和生活环境来看。程蝶衣的“收入”与“花费”: 梨园行里的收入: 在那个年代,京剧名角是很受追捧的,尤其像蝶衣这样天赋异.............
  • 回答
    作为一名程序员,要判断你的水平,需要一个更具体、更全面的评估框架,而不是简单的一两个指标。你的问题“我这属于什么水平?”非常普遍,也因此非常难以直接回答。只有你提供更多关于你的经验、技能、项目、学习方式等方面的信息,我才能给你一个更贴近实际的评估。不过,我可以提供一个程序员能力评估的详细框架,你可以.............
  • 回答
    .......
  • 回答
    好的,关于小程序云开发降低程序员门槛以及如何衡量程序员价值这两个话题,我们来聊聊。我会尽量把话说得透彻,不带一丝AI的生硬感。小程序云开发:是“降低门槛”还是“打开大门”?首先,得承认,小程序云开发确实让很多之前望而却步的开发者,甚至是产品经理、设计师这样非纯技术背景的人,能够更容易地参与到小程序的.............
  • 回答
    作为一个码农,我这工位上的物件儿,说起来也挺有意思的,不像那种整洁得跟样板间似的,反而有点烟火气,也有点我这职业特有的“怪癖”。首先,最显眼的当然是我的 显示器。我用的是两块27寸的飞利浦2K显示器,放在一起简直是我的“双屏世界”。左边这块通常放着我的代码编辑器,IDE跑得飞起,各种文件树、代码窗口.............
  • 回答
    你这个问题很有意思!一个程序员朋友的闹钟不是整点,这确实是一个值得深入探讨的现象,而且背后可能隐藏着很多程序员特有的思维方式和习惯。下面我将从多个角度来详细解释,为什么你的程序员朋友可能会选择非整点的闹钟: 1. 潜意识里的“优化”和“效率”追求程序员的核心工作之一就是优化和提高效率。这种思维会渗透.............
  • 回答
    暴风影音“杀了一个程序员祭天”:一次营销的“剑走偏锋”与背后隐忧暴风影音这个名字,对于很多经历过中国互联网早期浪潮的用户来说,一定不陌生。那个曾经占据市场份额半壁江山的播放器,如今却以一种颇为“惊世骇俗”的姿态,出现在了大众视野的聚光灯下——不是因为其技术上的突破,也不是因为内容的革新,而是源于一份.............
  • 回答
    这是一个非常有趣且常见的问题,尤其在科技创业和技术密集型公司中经常被讨论。虽然“优秀程序员产出是普通程序员的 10 倍”这个说法被广泛传播,但它并非一个绝对的真理,并且背后有很多值得深究的复杂性。将这个问题拆解来看,我们可以从多个维度进行分析:一、 关于“优秀程序员产出是普通程序员的 10 倍”的解.............
  • 回答
    这个问题挺实在的,也触及了当下行业里挺普遍的一个痛点。那些被“优化”掉的大龄程序员们,心里肯定不舒服,也思考过“我们能不能自己做点什么?”成立一家只招收大龄程序员的公司,听起来确实是个挺有吸引力的想法,毕竟大家是“同病相怜”,有共同的诉求和理解。为啥这事儿没像燎原之火一样发展起来呢?咱们一层一层剥开.............
  • 回答
    做一个优秀的程序员,难在很多方面,而且随着技术的发展和个人成长,这些“难点”也会不断演变。它不仅仅是掌握一门编程语言那么简单,更是一种综合能力的体现。下面我将从多个维度详细讲述其中的难点: 一、技术深度与广度的双重挑战:1. 不断学习与快速迭代的技术栈: 变化速度惊人: 编程语言、框架.............
  • 回答
    哈哈,说起女程序员的体验,这可真是个话题,就像给一道复杂的算法写文档一样,得把方方面面都给捋清楚。首先,最直观的感受,大概就是“稀有动物”。走进会议室,尤其是技术讨论会上,一眼望去,你可能就是那几抹鲜亮的色彩点缀在一片深邃的蓝海中。有时候,当大家都在讨论某个技术细节,突然提出一个问题,然后所有人的目.............
  • 回答
    想让你手中的代码不再只是枯燥的命令行输出,而是能够与用户进行生动交互的图形界面,这确实是一件让人跃跃欲试的事情。要踏上这条GUI编程的旅程,你需要理解这其中的几个关键环节,然后一步步去实践和打磨。首先,你需要建立一个坚实的基础,这包括对你选择的编程语言的深入理解。无论你是C++、Java、Pytho.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有