我正在研究初级(也许是高级)软件工程师的常见错误和不良假设.
你最久以来最终纠正的假设是什么?
例如,我误解了整数的大小不是标准,而是取决于语言和目标.国家有点尴尬,但确实如此.
坦率地说; 你有什么坚定的信念,大致你维持这个假设多久了?它可以是关于编程,编程语言或计算机科学的算法,语言,编程概念,测试或其他任何内容.
1> JohnFx..:
很长一段时间,我认为其他人都掌握了所有编程概念(设计模式,最新的新语言,计算复杂性,lambda表达式,你的名字).
阅读博客,Stack Overflow和编程书籍似乎总让我觉得我在所有程序员必须直观地了解的事情上落后于曲线.
随着时间的推移,我意识到我有效地将我的知识与许多人的集体知识进行了比较,而不是一个人,这对任何人来说都是一个相当高的标准.现实世界中的大多数程序员都拥有完成工作所需的知识库,并且他们有一些以上的领域,他们要么很弱,要么完全不知道.
如此真实!这就是这个时代的问题.信息也令人沮丧.几个星期前,当我在研究中所做的一切(不是第一次)感觉完全失败时,我就有了这个启示.将他们的论文发表在IEEE Transactions中的人不一定具有与在谷歌工作的人相同的技能,在StackOverflow中吹嘘,是优秀的教授,或者写出优秀的编程博客.当然,最好的家伙比我们指数级的要低,但他们并不知道你不知道的一切.所以,保持冷静.
我每天都在思考我没有时间阅读和学习的东西.它有时给我留下了可怕的内疚感.
这也有助于理解那些博客作者并没有把所有东西都写下来.优秀博主在撰写文章时研究他们的主题并学习新事物.
@Zilupe:阿门.我发表了一些国际会议论文和期刊.在一些人看来,这听起来很酷.直到你意识到发表论文并不需要花费太多精力.我们不是天才.我们就像其他人一样.我们犯了错误,我们发布了废话纸.好吧,除了一些真正天才的少数群体......
+1我读过这件好事.我以为我是唯一一个.
完全!谢谢你这样说,当我开始阅读这个网站时,我感到很疏远,认为"狗屎,我什么都不知道!".
也许正是那种内疚/遗憾促使我们在我们的手艺上变得更好.我想这最终是一件好事.
我知道你的感受.我非常努力地跟上这些东西,但毕竟我确实有一份日常工作!
绝对同意!! 大多数从事商业项目的开发人员都有望在艰难的期限内完成任务.我想知道有多少人遵循面向对象的做法,良好的编码指南,测试驱动的开发等.我看到许多.NET项目没有遵循适当的分层架构,主要是由于时间和资源的限制.
这使我的大脑免于油炸.最近我一直在想更多关于我不知道的事情以及看起来每个人都知道如此完美而不是真正学到的东西!很高兴看到我不是唯一一个!
2> Instantsoup..:
人们知道他们想要什么.
在我认为我会与人交谈的最长时间内,他们会描述一个问题或工作流程,我会把它放入代码并自动化.每当发生这种情况时,他们认为他们想要的并不是他们想要的.
编辑:我同意大多数评论.这不是技术上的答案,可能不是提问者所寻求的.它不仅适用于编程.我敢肯定这不是我最长时间的假设,但这是我在过去10年中所学到的最引人注目的事情.我确信这对我来说是纯粹的天真,但是我的大脑是这样的,并且我进入商业世界之前的教学和经历让我相信我会做我所回答的事情.我将能够使用代码和计算机来解决人们的问题.
我想这个答案类似于Robin关于非程序员理解/关心我正在谈论的内容.它是关于将业务学习为敏捷,迭代,交互的过程.它是关于学习编程代码猴子和软件开发人员之间的区别.它是关于意识到两者之间存在差异,并且在该领域非常好,它不仅仅是语法和打字速度.
编辑:这个答案现在是社区维基,以安抚人们对这个答案感到不满,给我代表.
为什么枯燥无争议的无答案起来 - 投票如此过分?!
哇.听起来有人需要一个拥抱.
我的上帝@人们抱怨,stackoverflow代表不是竞争对手.如果你喜欢这个答案的话,请不要投票,不要因为你嫉妒你没有先发布它.
你给了他们所要求的东西,而不是他们想要的东西.
或者看到他们以前想要的东西后改变他们想要的东西.人们喜欢改变主意.我知道,因为我是一个人.
@ niko-这是一个很好的答案..即使我赞成它,我的答案也必须参与竞争;)
这绝对值得成为最高评价的答案.天真地询问用户他们想要什么的想法将产生最好的产品是普遍的,非常非常错误的.在构建"shrinkwrap"或网络软件时要特别注意:提供反馈的用户只是总用户的一部分,这会扭曲您的观点.
我最喜欢的是当你看到客户要求的东西出了问题时,并指出它."当我像这样构建它时,它会做X,我几乎可以肯定你不想这样做".它们告诉你无论如何都要构建它,然后6个月之后因释放被推回而感到恐慌,因为它需要"修复".
3> lothar..:
我知道性能问题在哪里没有分析
我认为这就是为什么过早优化是如此普遍的地方.
+1哇,有人包括一个不是微不足道或偏离主题的答案.
我有一些应该帮助过早优化的平板电脑......
4> Dug..:
我应该只有一个函数/方法的退出点.
出色的实现; 必要时经常退出.一旦没有任何意义继续进入它,就应该摆出一个功能.这样做可以降低复杂性并提高可读性,例如,当它们是方法正常运行所需的先决条件时,避免深度嵌套的条件.在具有内存管理的现代语言和像使用/ finally这样的资源构造中,一直延续到方法的结尾是没有意义的.
那些必须调试其他人代码的人是谁想出来的.
从像C这样的语言,你需要手动释放资源.多个退出点是泄漏资源的好机会.IMO在有例外的语言中没有任何意义,因为你经常不知道你的退出点,或者是在声明的中间. - 在这些语言中,剩下的就是"可读性结构".
顺便说一句,谁想出了这个?这就像一个编程都市传奇.
我认为这种常见但错误的想法是基于一种误解.退出函数时,应始终*返回*到同一点.这是像BASIC这样没有强制执行的语言的一个重要规则:例如,规则意味着你应该使用GOSUB而不是GOTO.在调用方法的C#或Java语言中,它是自动的.但是因为它是自动的,我认为它从逻辑"只有一个回归点"转变为荒谬的"只有一个出口点".
@Adrian McCarthy - 只有当你使用C.大多数其他语言都有类似try/finally的东西,一些语言/平台内置支持后置条件.
我认为这个*规则*是由流程图导向的人组成的(就像我大学里的一些愚蠢的教师:-P)
-1.单个退出点是强制执行后置条件的唯一合理方式.
如果您的代码嵌套得太深,以至于您无法尝试创建一个退出点,那么请重构代码.将内容移动到名称描述正在发生的事情的方法等等......当然,你必须遵循每个方法来准确理解每个方法正在做什么,但至少你可以通过查看调用哪些方法来获得全局,在哪种条件下.那么你不能放入很多出口点吗?因此,通过所有退出点,您可以让某些人完全重新组织您的代码,这样他们就可以将大量嵌套条件重构为单独的方法.
人们经常会混淆*糟糕的节目*与*违反规则*.所以他们试图在全球范围内执行像"一个退出点"这样的规则,因为他们认为它会消除糟糕的编程.当您需要使用方法进行清理时,OEP才有意义.在其他95%的情况下,它会导致可怕的嵌套和*可读性较低的代码.这就是为工作使用正确的工具.对于某些语言中的某些功能,OEP是一个非常好的主意.
我的数据结构老师曾经教过它.我一直认为这是令人困惑和不必要的,但是,他的考试是基于这个假设的.
只要负责任地使用它,我就不会遇到多个出口的问题.在函数顶部使用它们可以提前返回意外的参数(通常为null)或逻辑中的if/switch/try-catch语句.只是不要到处隐藏它们.
'return','continue'和'exit'是我最喜欢的关键字.
5> Robin Day..:
非程序员明白我在说什么.
理解/护理..
我有时候还有这个......我想至少我的妻子现在已经开始理解了:P
亲爱的,我担心我可能还没学到这个!
是的,有时候我会忘记我的观众,最终会遇到一群人,他们脸上的空白表情在我身边,当人们表现出兴趣时,这很好.
这是我对这个职业最大的挫败感.
6> JaredPar..:
那个无错误的软件是可能的.
是的,但"几乎"花费了几百万美元:)
+1,虽然NASA几乎管理它
@Triynko你的"可能"和@JaredPar的"可能"是不一样的.理论和实践在理论上可能是相同的,但在实践中却是非常不同的.
@Joseph,问题的一部分是人们认为Hello World程序是无bug的.他们不是.例如,大多数不检查printf中的错误或其他失败的IO尝试的帐户.
@RussellH,没有.您未能指定返回值,结果进程将返回随机垃圾内存.
它尚未实现,但它绝对可能(只要我们继续使用确定性数字硬件).我们必须从头开始使用经过精心设计的全新操作系统和硬件,不存在严重的设计缺陷.
你永远不会有无错误的软件,只是没有发现任何错误的软件.
我不得不向下投票.它*可能有无错误的软件,并且有一个不断发展的科学来实现这一目标.让自己认识到没有无错误的软件只是一个借口,所以你不必关心.这有助于在软件工程中停滞一个重要的研究课题.
@JaredPar我见过很多Hello World应用程序完全没有错误= P事实上,我接下来的很多编程书都有这样一个或那个时代的小家伙,我想不出一个有这样的人它中的错误= P.
使用Autoland系统的飞机自动驾驶仪必须能够进行超过100万次着陆而不会发生事故.大多数人使用三台并行工作的计算机,一台飞机飞行,另外两台检查错误.这就像你将得到的那样接近无bug.为了记录我在这些系统上工作,但我没有编程,
取决于你的意思是算法的正确性还是'做了用户想做的事'.前者当然是可能的.
我知道一个 - TeX.每个bug都有一个价格.
7> Dave Webb..:
私有成员变量对实例是私有的,而不是类.
我一直坚持这个假设直到......
这对我来说是正常的,这个答案在我读它的前几次没有意义.现在我想学习Ruby,所以它可以让我混淆另一种方式.:)
@Kiewic如果你的类中有一个名为myVar的私有成员变量,你可以直接在你的代码中引用other.myVar,如果other是这个类的一个实例的话.我曾经假设因为它是"私有的"你甚至必须在类中使用other.getMyVar().
他们是Ruby.
@ebrown我通常只在编写equals()方法时发现它很有用
有些人认为他们应该.请参阅http://gbracha.blogspot.com/2009/03/subsuming-packages-and-other-stories.html中的"案例4"
我想我的大脑刚破了......我现在需要修理它
你在说什么?有人有例子吗?:P
这是一个常见的问题.在人们相信我之前,我通常必须提供测试用例.
@Dave Webb现在一切都有意义,谢谢!
这取决于语言.在C#中是正确的,但我不确定每种支持封装的语言都是如此.
关于这个答案的讨论可以在这里找到:http://stackoverflow.com/questions/1357496/can-you-explain-this-thing-about-encapsulation
@Dave Webb,你的*错误假设不应该是"私有成员变量是实例*和*类的私有".换句话说,如果该对象与我是同一个类,我可以直接访问另一个对象上的私有变量.我糊涂了.
这个对我来说很新!虽然我想不出这个过去对我有用的情况.
有一会儿,我认为这说的是"价值",而不是"变量",这让我想知道到目前为止我所写的任何代码是如何运作的.
8> edralph..:
我认为静态打字在你的键盘上非常稳定.
真诚与否,这让我在漫长的一天工作结束时大笑.:P
+1!我认为鸭子打字也涉及打字.还是鸭子.或两者.
++为了好笑.听起来像我(非技术性)的丈夫想出的东西.
9> Jeffrey Hine..:
在开始开发之前,您可以完全理解问题.
这个,我的朋友,应该是:"你可以完全理解一个问题." 但它是如此真实.并且有点难以理解甚至接受的难以理解的概念.
你无法"完全"理解这个问题,但在你开始开发之前,你必须明白这个问题(在某种程度上).http://bit.ly/kLXgL
10> Rob Cooper..:
聪明人总比我聪明.
当我犯错误时,我真的可以打败自己,并经常被告知要自我贬低.我曾经对很多开发人员敬畏,并且经常认为,因为他们在X上比我更了解,所以他们比我更了解.
随着我不断获得经验并结识更多人,我开始意识到,虽然他们在特定主题中比我更了解,但他们并不一定比我/你聪明.
故事的道德:永远不要低估你能带到桌上的东西.
而另一方面,我比其他人更了解.事实证明,他们只知道不同的东西.另一种道德观点:永远不要低估别人可以带来的东西.
你只需担心愚蠢的人,比你更聪明.
11> Sam Axe..:
在最长的时间里,我认为糟糕编程是发生在边缘的事情......正确地做事是常态.这些天我不是那么天真.
我以前认为Bad Programming只是由其他程序员完成,直到我完成了一个坏程序.现在我正确地做事!(你这次相信我吧?)
@corlettk:你的意思是猴子编码是常态,不是吗?黑客是一门艺术,一种高水平的艺术思维,我远离实现.
完全.我已经从"从未发生过"变为"除了*这个*工作之外永远不会发生"到"每个地方都有错误的代码".
@Hasen:不,黑客是一个类比,不熟练地把斧头砍到一棵树上,在没有真正计划的疯狂恐慌中凿掉小碎片,然后制造一个血腥的混乱,直到树终于落到你的头上."黑客"是"为了获得商业成功而产生平庸和平庸的工作的人".为什么计算机领域改变"黑客"意味着"熟练",我永远不会知道.
12> Evert..:
我想我应该尽可能地抽象.由于太多交织在一起的功能,我受到了主要的打击.
现在我尝试尽可能保持简单和分离.重构以使抽象的东西比预测我需要抽象的东西容易得多.
因此,我从开发统一它们的框架开始,转向完成工作的功能片段.从来没有回头,除非我想起我天真以为我会成为下一个大事的人.
Decoupled = true抽象.摘要本身就是......过早优化.
抽象和泛化是强大的工具,遗憾地用于通过一个单独的实现来概括抽象用例.有趣的是,每当需要改变实现时,抽象和概括也必须改变......
13> 小智..:
女人觉得计算机程序员性感......
等一等???
"哦,宝贝!是啊,说'如果' - 给我一些例外......是的,你知道我想要它":P
什么?程序员有钱吗?这是什么时候发生的?
他他是他......哦,我正在寻找一些东西来保持我一天剩下的时间的笑容.我想我找到了!!! :)
一些女性(合适的女性)被富有洞察力的聪明人吸引.除了典型的颈部胡须和香肠外,它们是程序员非常常见的特征.关注自我形象/卫生以及偶尔的极限运动的刺激/兴奋,你很顺利.
我只是不知道他们发现我们不性感.我以为我们和其他人一样.
我的女朋友不是真正的技术,她发现我的编程性感:)
女性找到性感稳重的男性.这个群体的一个重要子集是"程序员"
14> Ian Ringrose..:
软件的质量将导致更大的销售额.有时它会但不总是如此.
卖软件?那是1999年.
我希望将提高软件质量/性能作为一项功能
微软肯定会扼杀它.
可悲的是,音乐也是如此.
15> Overhed..:
所有语言(大多数)都是平等的.
很长一段时间以来,我认为选择的语言并没有对开发过程的难度和项目成功的潜力产生太大的影响.这绝对不是真的.
选择正确的工作语言与任何其他单一项目决策一样重要/至关重要.
我觉得选择正确的图书馆才是最重要的.事实上,语言和图书馆之间经常存在一对一的对应关系......
BrainFu**就像python一样完美.
图灵完整语言在某种程度上同样适用是一种常见的误解.图灵完整语言可以计算图灵机所能达到的一切(并且通常也反过来暗示).对性能绝对没有任何影响.在一种语言中采用线性时间的操作很可能在另一种语言上采用指数时间,并且它们仍然可以是图灵完成的.什么是理论上可计算的和实际可行的之间存在巨大差异.
我不同意,决定使用什么语言比实际执行项目的人更重要.仅作为许多其他更重要决策的一个例子.
但如果两种编程语言都是图灵完成那么有什么区别呢?你可以用任何一种语言编写任何程序!;)
通常的看法是,每单位时间调试代码行的生产率在不同语言中大致相同,而给定数量的功能所需的行数可能会有很大差异.
@TrayMan,我只是假设比尔蜥蜴的评论是一个笑话.
16> Clay Nichols..:
大评论/代码比率是一件好事.
我花了一段时间才意识到代码应该是自我记录的.当然,如果代码不能更清楚,或者有一个重要的原因,为什么要做的事情,这里和那里的评论是有用的.但是,一般来说,最好将评论时间用于重命名变量.它更清晰,更清晰,注释不会与代码"不同步".
+1,甚至没有让我开始撰写我曾经为10行函数编写的论文
17> Ólafur Waage..:
编程是不可能的.
不开玩笑,我一直认为编程是一件不可思议的事情,我总是远离它.当我接近代码时,我永远无法理解它.
然后有一天,我坐下来阅读一些基本的初学者教程,并从那里开始工作.今天我作为程序员工作,我喜欢它的每一分钟.
另外,我不认为编程很容易,这是一个挑战,我喜欢学习更多,没有什么比解决一些编程问题更有趣了.
MasterPeter:当我们来到这里提问时,它会给我们更多的饲料来增加我们的代表.
阿门!但是,嘿,不要从屋顶宣布这个观点.我们不希望*每个人*都知道编程很有趣,现在我们呢?;); P
我会说编程*很难*做正确*.然而,这似乎是你的观点.
@Olafur:你为什么要问这个问题是wiki,而不是你的答案?
这完全反映了我的经历.我希望我现在能早点开始:P
18> Paulo Guedes..:
"On Error Resume Next"是一种错误处理方式
我觉得你......但是在vbscript(特别是asp)中,它是唯一可用的"错误处理"选项,结合明智地检查错误是否实际发生,以及相当多的祷告.
好?!但它是.你启动你的错误处理块与On Error Resume Next,尝试一下,然后If(err.number <> 0)然后
是的......它是某种......我们很高兴能够摆脱它
19> ChiperSoft..:
该编程软件需要更高的数学基础.
在我开始编码之前的几年里,我总是被告知要成为一名优秀的程序员,你必须擅长高级代数,几何,微积分,三角等.
十年后,我只有一次不得不做八年级学生不能做的事情.
我觉得你被误导了.当然,要成为一名优秀的*程序员*,您并不需要使用更高级别的数学,但要真正理解和应用某些计算机科学概念,您将需要的不仅仅是八年级的数学.
理解高级数学所需的抽象类型与创建软件所需的抽象非常相似.
我认为对数学的重视是教授批判性思维技能和解决问题,而不是将其用于日常计算机编程中.
我认为如果你在数学方面有更强的基础,那么函数式编程概念就更容易理解了,只是因为你没有被语法所吓倒.看起来很熟悉.我错误地使用简单的数学函数来演示C#新增的函数式编程概念.有些人立即宣称它太复杂了.
非常的.在大多数情况下,您不需要成为数学专家.我真正需要知道任何高级数学的唯一一次是当我将3D编程作为一种爱好时.事实上,实际上高中时期的3D编程激发了我在三角级和前级课程中更好地关注.除此之外,非常基本的数学通常是你所需要的.
我会说对二进制逻辑感觉很舒服(这不是那么多数学)以及CPU实际如何工作(内存分配,设备通信,ALU以及与平台上的任何寄存器的交互)更重要的是优秀的程序员比对高等数学的透彻理解.
20> danio..:
优化==用汇编语言重写.
当我第一次真正理解汇编(来自BASIC)时,似乎使代码运行得更快的唯一方法是在汇编中重写它.花了不少时间才意识到编译器可以非常擅长优化,特别是对于具有分支预测等的CPU,它们可能比人类在合理的时间内做得更好.此外,花时间优化算法可能会比花时间从高级语言转换为低级语言更有利.此外,过早的优化是所有邪恶的根源......
Peek和Poke是你的朋友:)
变态!对法官说!
21> Trampas Kirk..:
公司高管关心代码的质量.
线路越少越好.
线路越少越好!我不喜欢java作为一种语言的部分原因是,做任何事都会占用很多行代码.更少的代码行意味着更容易更改代码.
如果您的行结束于)))))并且您没有编写Lisp,那么您的行数太少了.
这取决于您要删除的内容以减少线路数量.如果代码仍然可以用更少的行读取,那么它是好的.但是,有很多方法可以减少使代码变得更糟的代码行数.
他们关心,但你必须将艺术家技能与工人技能结合起来.每一块算法都不能成为一件艺术品.其中一些将是丰富的,所以重用"少用".记住旧的80/20规则.80%的程序在20%的时间内使用.因此,将80%的注意力集中在20%的代码上并制作真正的艺术品!:OP
除非人们采用链接方法调用"深度较少的线条更好"的心态,所以当其中一个抛出空指针时,你不知道它是什么.或者他们将这么多动作压缩成一行,它的长度为150个字符并执行4次操作.这使得它既难以阅读又难以调试,但不是更快,也不会在执行期间使用更少的内存.
22> MikeJ..:
我会说将日期的年元素存储为2位数是一个折磨整整一代开发人员的假设.在Y2K上吹来的钱非常可怕.
可悲的是...... Unix将在2038年进行第二轮比赛
IIRC的一些系统早在60年代,也许70年代仅使用一位数,因为它使用的内存较少.我甚至看过"196_"和"197_"预印的纸质表格.
@Billy只是因为机器架构的变化并不意味着数据格式会.以int格式存储2位数的分辨率会产生一个字节(8位)的日期格式,然而,它影响了2k的大量32位硬件架构机器.这只是为什么你不让低级硬件人员指定数据格式的另一个例子.他们知道在遥远的未来将有一个预定的SNAFU,他们会吝啬.
我仍然看到200_的表格,并且可能有一些现在有201_印刷.
23> Robin Day..:
插入/冒泡排序以外的任何东西都非常简单.
我是排序算法的研究员!他们仍然感觉像黑暗魔法.
我曾经在我的程序中有一行代码很长很复杂而且我不想破解或解释它(这是一些复杂的照明公式),所以我把它全部放在一行并且#define'它是DARK_MAGICK,唯一的评论是警告不要试图解开黑暗魔法的奥秘
Bogosort是他们中最神秘的.
24> Alex. S...:
该XML将是一种真正可互操作且可读的数据格式.
XML不是灵丹妙药,但我不想回到我经常看到应用程序试图将关系数据压缩成单个csv文件的日子.
我喜欢XML,因为它为数据格式带来了标准化,并且能够正确处理字符编码.我讨厌有时使用*XML做的事情.
它是一种可互操作的语法,毫无疑问.它的语法通常是任何解决方案中最不重要的方面.
+1,你也可以添加小而快的愿望清单.
25> Binary Worri..:
那个C++本质上比其他所有语言都要好.
这是我在大学提前几年从朋友那里收到的.我和我一起度过了一段令人尴尬的时光(我现在脸红了).只有在与它合作2年左右之后才能看到它们的裂缝.
没有人 - 没有 - 是完美的,总有改进的余地.
我一直认为C++比直接使用ANSI C更糟糕,仅仅因为我看到C++程序员遇到的那种麻烦比我见过C程序员遇到的那种麻烦要复杂得多.
"更好"会给你带来大量不那么可恨的评论.但我认为这是最快速,最灵活,最无障碍的障碍之一.这也是让你的青少年正确学习它,但却发现你可以或多或少做同样的应用程序.(尽管需要一些额外的吨或两个发电煤)与java或C#.
不是?!哦哦......
26> Aaron..:
我相信创建程序就像课堂上讲的那样...你和一群人坐下来,解决问题,提出解决方案等等.相反,现实世界是"这里是我的问题,我需要它解决,"十分钟后你会得到另一个,让你没有时间有效地规划你的解决方案.
我认为这就是生活.
嗯..是时候你拯救那家公司了...
@ jpinto3912:不会.因为下一家公司也将成为生活的一部分(参见之前的评论).
27> egaga..:
当他们被引入CS课程时,我认为主流设计模式非常棒.在此之前,我已经编程了大约8年的业余爱好,而且我对如何创建良好的抽象我真的没有充分的理解.
设计模式感觉像魔术; 你可以做真正的东西.后来我发现了函数式编程(通过Mozart/Oz,OCaml,后来的Scala,Haskell和Clojure),然后我才明白许多模式只是样板,或者是额外的复杂性,因为语言不够表达.
当然,几乎总有某种模式,但它们在表达语言中处于更高的层次.现在我一直在用Java做一些专业编码,当我必须使用访问者或命令模式等约定而不是模式匹配和高阶函数时,我真的感到痛苦.
事实并非如此,如何获得一流的东西而不是限制程序员的能力,就像在高阶函数的情况下一样.Lisps就是很好的例子.
28> gnovice..:
在最初几年我编程时我没有注意到1 Kbyte在技术上是1024字节,而不是1000.我的数据文件的大小似乎与我的预期略有不同,我总是有点困惑.是.
硬盘制造商仍然没有流行......
没有人会这样做?真的吗?好的,我会做的...... http://xkcd.com/394/
Kilo意味着1000,Mega意味着1000000,Giga意味着1000000000.它是RAM和OS制造商弄错了,而不是驱动器制造商.
嘿,停止kibi讨厌.MeBi和KiBi至少是unbambiguobus.
@mmyers我认为你的意思是硬盘营销人员吧?或者驱动器实际上是这样构建的?
在有人试图将它们改编为二进制数之前很久,这些前缀就有了明确的含义.您不需要知道上下文来破译前缀含义.我理解它是如何产生的,但我认为这是一个错误导致混乱太久了.
@Mark Ransom:实际上并不是RAM/OS制造商弄错了.在二进制中,1024是10位全部设置为1,它是一个很好的圆形图[10000000000],因为所有数据都以二进制形式存储,因此将KB用作1024是有意义的.延迟的是每个人都使用不同的标准.他们都应该使用其中一个,无论他们选择哪一个,并且停止混淆每个人的地狱......
有一个愚蠢(很少使用)的"正式"1024定义:"kibi-".如"Commodore 64有64 Kibibytes的记忆".啊.在某些情况下令人困惑.某些特定的计算领域使用K = 1000,比如网络比特率(Kbit/s),而其他领域则出于营销原因(主要是HD)使用它.内存和文件大小通常以K = 1024 /等引用.
@BenAlabaster:实际上1024(1 KiB)是2 ^ 10或二进制10000000000,这肯定是*不是*10位全部设置为1.而且Mark非常正确,Kilo和Mega的定义是围绕并在工程界长定义的在计算机专家为自己(不精确)的用途借用它们之前.是时候让像我们这样的电脑爱好者放手,承认是错的,并开始使用正确的符号来表示正确的事情.
我可以约会自己这个陈述,但每当我看到/听到"Kibibytes"这个词时,我都会想到"Fat Albert"(我认为是Mushmouth)中的那个角色,他将B添加到他说的所有内容中."Probagrambing是重生的."
29> User..:
那个条件检查如下:
if (condition1 && condition2 && condition3)
以未指定的顺序执行......
@Clint:是的,因此"结果证明是不正确的".
用什么语言?C/C++,Java和Python等语言保证从左到右评估条件,并且评估在返回false的第一个条件下停止.这是langauge规范的一部分.我认为大多数其他语言都有同样的保证.
实际上,这个取决于语言,并且将评估所有条件(而不是快捷方式).我见过很多人在VB中使用And(&)代替AndAlso(&&)
...实际上它也会在VB.net中崩溃,除非你使用AndAlso re Lucas的评论
30> bzlm..:
如果我单独执行它,我的编程会更快更好.
这一切都取决于对方.=)
31> Marc..:
"该项目将在2周内完成"
和
"这将花费2个小时来实施"
是的,然后你花了3个小时来对抗一个愚蠢的bug,他们认为你什么也没做.告诉我怎么回事儿.
32> Pratik Deogh..:
我没有评论就能理解我自己的代码!
在类似的说明:"我能理解我的评论"
当你意识到你无法理解它时会很痛!
多数民众赞成,当你知道你做了一个糟糕的工作写它;)但是,它伤害:(
33> MrValdez..:
我以为我需要它.
我一直认为应该有一个相反的原则:BWIIDNI?
笑话解释:这条线与YAGNI相反(你不需要它).从本质上讲,我认为在完成程序之前我需要一个类/模块/功能/等.
34> FogleBird..:
像Python或Ruby这样的动态类型语言在某些方面不太适合在大型项目中使用.
我在大约2000年也有同样的觉醒.我在www.c2.com的原始维基上阅读了一些内容并最终开始了这个页面:http://www.c2.com/cgi/wiki?UnificationOfStaticTypesAndUnitTests并且即将到来得出的结论是,我非常依赖于静态类型.但是我已经开始使用一个环境(C#),其中静态类型确实在编辑过程中使IDE生动,我现在相信静态类型语言更好,因为它们更容易使用.没有动态类型的语言,某些静态类型信息无法改进!:)
35> Arcturus..:
那个时候我作为新秀的一个假设是,在该领域有更多年份的人自动成为更好的开发者.
+1,但反过来说,我更好地理解了问题,并且可以提出比高级开发人员更好的解决方案.
36> Aaron Daniel..:
这很令人尴尬,但是最长的时间我并没有真正掌握参考类型和价值类型之间的区别.我想你必须使用ref关键字来改变另一种方法中的对象.
这是我应该知道的C#最基本的概念之一.
37> MrHus..:
这真的很尴尬但是当我开始学习如何编程时,什么都不能让我满意.我想写电子游戏.所有这些书都要我写的不是那些琐碎的小程序.所以我决定我可以轻松地跳过10章而忽略基础知识.
所以我基本上忽略了变量!
问题是我没有识别约定中的关键字:
Car car = new Car(); //good
Car test = new Car(); //wrong must be lowercase car!
for (int i = 0; i < 10; i++) //good
for (int test = 0; test < 10; test++)//wrong must be i
我这样做了一年多,甚至做了3000行的tic-tac-to游戏!那时我非常高兴,直到我在互联网上找到了150行的井字游戏.然后意识到我是个白痴,重新开始.
法律上的tica tac toe 3000行
38> RedFilter..:
编程很简单.
编程很简单.编程好或编程正确,这些都不是那么容易.
39> mike g..:
Unix和Linux操作系统设计得很好......我应该有资格这个(!)
首先,这种观点得到了以下反反对的强化:
开发的每一个后续操作系统最终都很难重新设计Unix(关于Lisp也是如此,其中更为真实).
制定'Unix哲学'的规则列表.并不是说他们错了,这就是Unix本身密切关注他们的含义.
可能更确切地说,它们设计得很好/做得很好,而且肯定是它们的一部分,但即使这只是一个相对判断,相对于一些可怕的Windows版本.以下是一些做得很差的例子:
配置是一个烂摊子,ad-hoc平面文件配置不好
很久以前,C编程语言应该被替换(比如D)
shell脚本是精神分裂症.它不适合开发,因为它是快速打字的速记.
目录结构命名错误
GNU工具链是不必要的奥术
相信通用目的总是胜过特殊目的
总的来说,他们需要不必要的专业知 或者说很多知识只有适度的理解.
这并不全是坏事.Linux在政治上更好,而且没有受到业务需求的破坏,但遗憾的是,在很大程度上,许多技术领域已经失去了.
它的设计比Windows更好......
我仍然认为平面文件配置更好,但ad-hoc是一个灾难.在我看来,MacOS X plist机制做出了很好的妥协
我认为一般的观点是:Linux有点像Windows一样残留.但你的具体要点并没有真正说服我,配置适用于大多数事情(取决于配置文件的实现方式),shell脚本现在用python做了很多,目录结构很细,...有点弱真
我们中的一些人认为Unix重新设计了Multics.Unix是故意设计的,以避免成为Multics的所有内容,然后其余部分被黑客攻击而不是被设计为.
40> nes1983..:
好的,我很早就学会了编程.我14岁左右.我持有各种疯狂的信念,但不要问我精确的时间,因为那是......很久以前.
好的,所以,我相信一段时间,如果你在Java中使用术语同步,那么Java为你解决这个同步的问题
我相信至少半年,可能更多,静态打字会提高性能.
我相信释放一些东西会将内存返回给操作系统.
我相信malloc调用可以归结为检查操作系统上是否有足够的可用空间,因此malloc会很便宜.
我想很长一段时间,Java的构建充分考虑了其他语言的所有优点和缺陷,成为一种"完美融合",可以获得其他语言的最佳属性并拒绝错误.
我极为高估了LinkedLists胜过ArrayLists的案例数.
我认为NP-hardness是一个证据,证明无法有效地解决INSTANCE,这在一段时间内是微不足道的.
我认为在旅行社网站上找到最好的飞行计划需要很长时间,因为"旅行推销员问题",因为我自豪地向我的亲戚笑了(当我小的时候,好吧?!)
可以拿出更多.不知道我坚持了多久.抱歉.
PS:
啊,好吧,这个问题得到的解决不是那么缓慢,但是我看到新手时不时地这样做,所以我觉得你可能会感兴趣:我还认为要存储不确定数量的东西,你需要为每个声明一个新变量.所以我创建变量a1,a2,a3,...,而不是使用一个变量a,我将其声明为一个向量.
那位旅行推销员刚刚度过了我的一天.:d
等等,半年后你的静态类型程序运行得慢一些?当你释放它时,记忆会变得"长"吗?操作系统上的可用空间?...?!
不,不 - 你应该创建a1,a2,a3等,但他们都应该是矢量.
41> Mark..:
当我从大学毕业后第一次开始时,我预计更多的高级开发人员会知道他们在做什么.男孩我错了....
这很有趣,我成为高级开发人员时最大的误解是我希望大学毕业生知道他们在做什么.:-)
42> Atilio Jobso..:
我曾经相信应用程序的大多数工作实际上都是编程.我确信在某些情况下这是正确的,但根据我的经验,我花费更多的时间来研究,记录,讨论和分析,而不是实际编码.(我研究的是运行基于激光的传感器的软件,确定如何最好地控制硬件比编写代码更具挑战性.)
我也常常认为开放的环境是程序员可以看到他们的肩膀,并问他们(通常)旁边的人一个问题是一个程序员团队制定解决方案的最佳环境.事实证明,一个黑暗的孤独的房间更有效率,团队或没有团队.
当我毕业时,我认为专业编程就像在大学编程一样,这意味着我将获得输入和预期输出,并要求填写进行转换的黑盒子.实际上,我必须弄清楚输入,输出和黑匣子.
我不习惯认为营销和销售人员是人类的祸害,如此天真.
我个人最喜欢的是这种对话:BA:"系统需要这些输出.||我:好的,我们需要这些输入.|| BA:但数据输入将花费数百万!||我:是的,你希望系统在哪里得到这些数据?|| BA:你不能弥补吗?"
43> Nir..:
这是一个9-5的工作
44> TStamper..:
在上线之前没有缺陷是可能的.
这绝对不是真的,即使P2缺陷有时会被打开.
如果假设您的优先级内部名称是我的优先级内部名称?在这里,您所谓的TPS报告称为SRP报告!;)
45> James..:
代码审查是浪费时间.
从一家完全可选的公司搬到强制性公司(甚至是经过审计的公司)后,我开始了解它们的用处.对代码有第二眼,即使是最琐碎的部分,也可以:
A)当你搞砸了一些微不足道的事情时,你会感到尴尬(例如,一个简单的代码审查会阻止我们在我以前的工作中向我们的客户发送数百封电子邮件)
B)可以教你一开始就不知道的事情(我现在正在学习新图书馆 - 不可避免地在一家大公司,有人已经无意中遇到了你所遇到的问题并且做得更好它 - 只是知道在哪里看的问题)
C)至少要确保自己以外的人知道事情是如何运作的.
最后,我对我提交的代码感到高兴,而不是我以前的工作,尽管那时我认为我知道一切:)
46> MiffTheFox..:
如果条件是每行评估的,如果你编写这样的代码:
Dim a as Boolean = True
If a Then
Console.WriteLine("1")
a = False
Console.WriteLine("2")
Else
Console.WriteLine("3")
End If
然后输出将是:
1
3
这是我从未听说过的一种误解.
我的一些朋友曾经玩这种机器人编程游戏,实际情况就是用你编写"机器人"的半语言.
当你第一次使用调试器时,你难道不会发现这不是真的吗?
47> Martin P. He..:
与UNIX相比,NT操作系统的设计存在缺陷.事实证明,NT内核和设计决策与任何类似现代UNIX的系统都非常相似,而且你在内核中遇到的大多数问题都是由有缺陷的公司编写的第三方错误驱动程序造成的.
反正这是错的.相关的窗口机制是页表.他建议Windows VirtualAlloc()是一切,你只需要VirtualProtect就可以获得权限.对VirtualAlloc()的全部需求几乎证明了他的错误.
我抗议.无论是unix还是unix的窗户都有一个基本的东西.内存管理.Windows检测到试图闯入.Unix会检测到试图爆发......所以Windows程序可以并且确实使用未分配的内存.Yeck!
@corlettk - 你有什么参考意思吗?
48> Binary Worri..:
.NET结构(C#和VB.NET)是引用类型,就像类一样.
在.NET 1.0到达现场之前或之后的某个时刻,我"收到"了那段智慧(我不知道从哪里来,它可能从我脑海中浮现出来,就像宙斯的眉头上的雅典娜一样),以及保持它直到大约4个月前Jon Skeet对概念的消除.
谢谢乔恩.
PS没有相关的编程,但我也相信(直到大约5分钟前)"阿波罗从宙斯的眉头中蹦出来".
雅典娜来自宙斯的额头.阿波罗诞生了老式的方式
如果你使用Vb.Net,你每天都在研究经典.
49> Cybis..:
字节和字符实际上是相同的 - "ASCII"只是一种将字节值映射到屏幕上的字形的方法.
阅读关于Unicode真的让我大开眼界(虽然我还是不完全理解它).
好文章:http://www.joelonsoftware.com/articles/Unicode.html
50> ddd..:
我是一个优秀的程序员!
欢迎来到俱乐部!
51> Peter Perháč..:
我曾经认为它足以编写Win32应用程序.
此外,每个程序都必须带有GUI,因为命令行是"过时的".
52> DarkSquid..:
有一天,我有一个现实的想法,需要多长时间来构建一些非常重要的代码/系统/无论如何.
53> FastAl..:
我可以阅读SO并完成任何工作.
如此真实.幽默+1.
54> Oorang..:
我认为我需要做的就是提高数据库性能,将数据库置于第3范式.
55> Viktor Sehr..:
那个面向对象始终是设计源代码的最佳方式,而且永远都是.
56> Kristopher J..:
这个:
SomeClass object(initialValue);
还有这个:
SomeClass object = initialValue;
保证在C++中是等效的.我认为第二种形式被保证被解释为好像它已被写成第一种形式.不是这样:请参阅C++初始化语法.
57> BenAlabaster..:
我仍然遇到麻烦的一些事情是以下误解 - 即使我知道更好,我仍然试着坚持下去:
所有的利益相关者做出关于软件设计客观决策.那些没有编写代码的人会做出各种各样的决定,完全基于对我们开发人员来说并不总是有意义的情感.
项目预算总是有意义的 - 我看到很多公司非常乐意多年来每月减少5万美元,而不是花费25万美元让项目在6个月内完成.一个政府如果不花钱就会失去年度预算 - 所以要花费它们,地狱或高水.令我惊讶的是,有多少项目资金被浪费在这样的事情上.
你应该总是使用合适的工具来做正确的工作 - 有时这个决定不在你手中.有时它从高处"你将使用X技术" 归结为这个项目,让你想到"WTF!谁想出了那个荒谬的想法?"......那个付钱给你的人,那个人,现在完成了它.
编程意识形态首先出现,其他一切都是次要的. 实际上,需要满足最后期限和业务目标才能获得薪水.有时候你做出最糟糕的决定是因为你没有时间以正确的方式做到这一点......正如有时候这个词在你的舌尖上,但是回忆起它所花费的时间会让你选择一个不同而且更少的理想的词.没有时间做正确的事情,有时候只有时间去做 - 不过可能会这样做.因此,所谓的反模式被所谓的经验丰富的开发人员使用,他们必须在明天将软件交付给您最好的客户的演示截止日期前10分钟淘汰问题解决方案.
58> Chris Lutz..:
当我在TI-83上编程时,我以为你无法为自己分配一个变量.所以(忽略这是C代码,而不是TI-BASIC)而不是写作
c = c + 1;
我会写的
d = c + 1;
c = d;
当我了解+=
并且++
它引起了我的注意.
然后你了解到某些语言没有这些语言,时钟会被取消.
我梦想建立一个具有这种精确脑损伤的BASIC解释器.
59> Anirudh..:
IDE会变得更快.
60> Jimmy..:
我应该始终优化我的代码.这并不是说我在编写它之前不应该考虑它,但是我应该认真考虑如何从每个语句中挤出所有性能,甚至是牺牲可读性.
61> Simon Gibbs..:
XML命名空间(或更糟糕的是,良好的形成)在某种程度上比没有它们时更难.
一个非常常见的错误,即使在W3C!
62> Paul Holling..:
我的错误假设是:虽然总有一些改进的余地,但就我而言,我和我一样好.
当我第一次上大学的时候,我已经为C编程了6年,对"结构化编程"一无所知,认为"OO"只是一种时尚,并认为"男人,我很好!"
10年后,我在想"好吧,那时候我离我想象的那么远...... 现在我得到了多态性的想法以及如何编写干净的OO程序...... 现在我真的很好" .
所以在某种程度上,我总是真的很好,但也总是得到这样比我之前更好.
在那之后,便士不久就下降了,我终于有了"一些"的谦逊.总是有更多需要学习的东西(尚未用像Haskell这样的纯函数语言编写适当的程序).
63> Shalom Craim..:
我想我已经10岁了,当有人说服我有一台计算机能够在3秒内运行无限循环时.
64> yves Baumes..:
在C++中,在很长一段时间,我tkinking该编译器拒绝你给一个当定义为纯虚方法.
当我意识到自己错了时,我感到很惊讶.
很多时候,当我告诉别人为其抽象类提供纯虚拟析构函数的默认实现时,他/她会用大眼睛回顾我.我从这里知道,随后会进行长时间的讨论......似乎一种普遍的看法在C++初学者中有所传播(我也认为自己也是如此......我现在还在学习!)
维基百科链接到c ++的纯虚方法
65> Kim Reece..:
至少6年来,我确信每个问题都有一个解决方案.
完全没有意识到具有不同复杂性,空间/时间权衡,OOP与功能与命令,抽象级别和不可判定问题的多种算法.当那幸福的天真破灭时,它开辟了一个充满无限可能的世界,只是坐下来建造东西,猛烈砸门.花了很长时间才弄清楚如何选择一个并运行它.
66> Anon..:
作为一个古老的程序程序员,当我第一次开始用Java编写业余爱好项目时,我并没有真正理解OO.在没有真正理解接口点的情况下编写了大量代码,尝试通过将所有内容强制转换为继承层次结构来最大化代码重用 - 希望Java在事物不适合清理到一个层次结构时具有多重继承.我的代码工作正常,但我现在对那些早期的东西感到畏缩.
当我开始阅读关于动态语言并试图找出一个好学习的语言时,阅读Python的重要空白让我失望 - 我确信我会讨厌它.但是当我最终学习Python时,它变成了我真正喜欢的东西.我们通常使用任何语言来努力以获得一致的缩进级别,但不会得到任何回报(视觉可读性除外).在Python中,我发现在缩进级别方面我没有比以前更多的努力,并且Python处理了我在其他语言中使用大括号或其他任何东西时所做的事情.它让Python现在感觉更干净.
67> Rob Wells..:
天儿真好,
我只是在设计和编写代码.
没有要求收集,文档或支持.
干杯,
68> João Marcus..:
我的同事正在制作据称糟糕的代码,因为他们吸吮/吮吸.我花了一段时间才知道我应该先检查一下到底发生了什么.大多数时候,糟糕的代码是由于缺乏管理,客户不想检查他们真正想要的东西而开始改变他们的想法,就像没有明天一样,或其他任何人无法控制的环境,比如经济上的孤岛危机.
客户要求"为昨天"功能,因为他们是愚蠢的:不是真的.这是关于沟通.如果有人告诉他们一切都可以在一周内完成,猜猜是什么?他们会在一周内想要它.
"永远不要改变有效的代码".这不是IMO的好事.你显然不必改变真正有用的东西.但是,如果您从未更改过一段代码,因为它可能正常工作而且太复杂而无法更改,您最终可能会发现代码并没有真正按照预期的方式执行.例如:我看到销售佣金计算软件在两年内进行了错误的计算,因为没有人想要维护软件.销售人员都不知道.公式太复杂了,他们真的不知道如何查看数字.
69> Andrey..:
从来没有遇到整数提升...并认为'z'在这段代码中将保持255:
unsigned char x = 1;
unsigned char y = 2;
unsigned char z = abs(x - y);
z的正确值是1
70> sean riley..:
OO不一定比非OO好.
我认为OO总是更好..然后我发现了其他技术,比如函数式编程,并且意识到OO并不总是更好.
对不起,那是暧昧的.我认为OO总是更好..然后我发现了其他技术,比如函数式编程,并且意识到OO并不总是更好.
71> hWorks..:
那个goto是有害的.
现在我们继续或休息.
@Zack,所以GOTO无害 - 程序员是有害的.
这就像说在机器代码中编写程序是好的,因为所有计算机都使用机器代码.Goto是有害的,因为它们鼓励程序员创建难以阅读和调试的代码.
72> 小智..:
我刚刚发现在Hello World中执行了超过一百万条指令!我写的c ++程序.对于像单个cout声明一样简单的事情,我从来没有想过这么多
73> hasen..:
C++是那里最酷的语言!
-1.C++中的模板元编程是最酷的事情.
74> Martin DeMel..:
不要使用高级特定于实现的功能,因为您可能希望"有时"切换实现.我已经一次又一次地做了,而且几乎总是从未发生过切换.
75> Crippledsmur..:
我是一个年轻的初出茅庐的开发人员,希望能够做到这一点,因为这是我喜欢的,这是我曾经认为我通过我的简短经验学到的一系列观点是错误的
当你根本没有从逻辑中分离用户界面时,你最终得到的可怕混乱是可以接受的,也是每个人写软件的方式
没有太复杂或抽象的东西
一级一级的责任 - 我从来没有真正拥有这个概念,它对我来说非常有用
当我在卧室里编码时,测试是我不需要做的
我不需要源代码控制,因为它对我所做的项目来说太过分了
开发人员会做所有事情,我们应该知道如何设计图标并制作出令人敬畏的外观布局
处置并不总是需要终结者
发生任何类型的错误时都应抛出异常
例外是针对错误情况,并且很多时候只返回指示失败的值是可以的.我最近才明白这一点,我一直在说它并且仍然会抛出异常更长时间
我写了一个没有bug的应用程序
76> Jim Evans..:
我们作为软件工程师可以理解用户真正想要的东西.
77> hythlodayr..:
更多评论更好.我一直试图让我的代码尽可能可读 - 主要是因为我几乎可以肯定是那个能解决这个问题的人.所以在过去的几年里,我曾经在评论段落之后有段落.
最终我突然意识到,有一点需要更多评论 - 无论结构如何整洁 - 没有增加任何价值,实际上变得很难维持.这些天,我采用目录+脚注的方法,每个人都更高兴.
78> theosp..:
我以前认为Internet Explorer 6盒子模型是一个邪恶的愚蠢想法MS想出来只是为了打破与其他浏览器的兼容性.
很多CSS确信我更合乎逻辑,并且可以使页面设计维护(更改块填充/边框/边距)变得更加容易.
想想物理世界:改变A4页面的填充或边框宽度不会改变页面宽度,只会减少内容的空间.
它可能有一个逻辑基础,但它仍然违反CSS规范,因此是一个错误.
79> Daniel Trebb..:
唯一的本地化/国际化问题是翻译消息.
我以前认为所有其他语言(我没有语言环境的概念)在所有方面都像英语,除了单词和语法.因此,要对一个软件进行本地化/国际化,您只需要让翻译人员将显示的字符串翻译给用户.然后我开始意识到:
有些语言是从右到左书写的.
一些脚本使用上下文整形.
日期,时间,数字等的格式变化很大.
程序图标和图形对某些人群来说可能毫无意义或令人反感.
有些语言有多个"复数形式".
...
即使在今天,我有时也会读到让我感到惊讶的国际化问题.
80> Tahir Akhtar..:
编程语言==编译器/解释器
编程语言== IDE
编程语言==标准库
81> Zee Spencer..:
我曾经认为我是一个非常优秀的程序员.担任该职位2年.
当你在真空中工作时,很容易填满房间:-D
82> Hannes de Ja..:
现在流行的$符号作为java/javascript标识符的一部分是非法的.
83> Dmitri Farko..:
认为我对编程中的某个语言/主题了如指掌.只是不可能.
84> JCCyC..:
由于性能问题,除了玩具项目之外,像Java和.NET这样的虚拟机架构基本上没有价值.
(嗯,公平地说,也许在某些时候是真的.)
85> Shaw..:
订阅许多RSS提要,阅读许多博客并参与开源项目非常重要.
我意识到,真正重要的是我花了更多时间进行编码.我有阅读和关注许多博客的习惯,虽然它们是丰富的信息来源,但却无法吸收所有内容.平衡阅读非常重要,更重视练习.
注册.开源,我恐怕不会受欢迎.我曾尝试参与开源,其中大多数都是在.NET中.我很震惊地看到许多开源项目甚至没有遵循适当的架构.我在.NET中看到一个系统没有使用分层架构,而且数据库连接代码遍布整个地方,包括代码背后,我放弃了.
86> zvolkov..:
经理们知道他们在谈论什么.
87> Steven Evers..:
我的学校教育将为我在该领域的工作做好准备.
88> Macha..:
学习语言只是学习语法,以及标准库的最常见部分.
89> Turing Compl..:
字节码解释语言(如C#或F#)比那些直接编译为机器代码的reset - button-hog慢.
好吧,当我开始相信(在80年代),这是真的.然而,即使在C#中,我有时也会想知道"将内循环放入.cpp文件会不会让我的应用更快").
幸运的是,没有.
可悲的是,几年前我才意识到这一点.
这是另一个:C#不是字节码解释语言.IL中有一个"字节码"模拟,但在程序开始运行之前,C#IL会在完全本机代码之前编译.
90> Jeffrey Gree..:
"这次会工作"