软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

2
SQL的非官方发音的历史是什么?
SQL的正式发音为/ ˌɛskjuːˈɛl /,就像“ SQL”一样,如 艾伦·博留(2009年4月)。玛丽E. ed。学习SQL(第二版)。美国加利福尼亚州塞巴斯塔波尔:O'Reilly。ISBN 978-0-596-52083-0。 但是通常发音为/ ˈsiˈkwəl /就像“续集”一样,第二个发音背后的历史是什么?
32 sql  history 

16
简单是否会始终提高可读性?
最近,我正在为我们的公司开发一套编码标准。(我们是一个新团队,正在为公司扩展一种新语言。) 在我的初稿中,我设定了编码标准的目的是提高可读性,可维护性,可靠性和性能。(我忽略了可写性,可移植性,成本,与以前的标准的兼容性等) 编写本文档时,我的目标之一是推动代码简化的想法。想法是每行只能有一个函数调用或操作。我希望这将提高可读性。我从以前的语言中继承了这个想法。 但是,我对这种推动背后的假设提出了质疑: 简单是否会始终提高可读性? 是否存在编写更简单的代码会降低可读性的情况? 这很明显,但是“简单”并不是说“易于编写”,而是每行更少的内容。

8
是什么导致消费者应用程序的性能下降?[关闭]
我的Comcast DVR至少需要三秒钟才能响应每次远程控制按键,使看电视的简单任务变成令人沮丧的按钮混搭体验。我的iPhone至少需要15秒才能显示短信,并且在尝试启动iPod应用程序时崩溃1/4。仅接收和阅读电子邮件通常需要一分钟以上的时间。甚至我车中的navcom都具有糊状且反应迟钝的控件,如果我将连续的输入间隔不超过几秒钟,它们通常会吞咽。 这些都是固定硬件最终消费者设备,其可用性应该是最重要的,但是它们都在基本的响应速度和延迟方面都失败了。他们的软件太慢了。 这背后是什么?是技术问题还是社会问题?谁或什么负责? 是否因为它们都是用托管的垃圾收集语言而不是本机代码编写的?是为这些设备编写软件的个人程序员吗?在所有这些情况下,应用程序开发人员都确切知道他们所针对的硬件平台以及其功能是什么。他们没有考虑到这一点吗?难道是那个反复说“优化是万恶之源”的家伙,他使他们误入歧途了吗?直到所有这些毫秒数累加起来才是每次都会“额外增加100毫秒”的心态吗?首先购买这些产品是我的错吗? 这是一个主观的问题,有没有唯一的答案,但我经常受挫在这里看到这么多回答说:“哦,不用担心代码的运行速度,性能并不重要,”在某个时候,当清楚地做事情了陷入缓慢,反应迟钝,糟糕的体验的最终用户。 那么,这些产品在什么时候出问题了?作为程序员,我们如何做才能避免给我们自己的客户造成这种痛苦?

3
合同计费-您将如何处理“学习时间”?
因此,您签订了一份具有75%必要技术经验的合同。您如何处理学习另外25%的时间? 将其用于结算时间吗?将合同中的25%暴露为“研究”?是否按自己的时间学习(不收费)?不接受合同(对我和客户来说都是未知数)? 最极端的是,我不断听到一个关于马克·库班(达拉斯亿万富翁,他开始在broadcast.com上并将其出售给Yahoo!)在印第安纳大学的故事。有人问他是否可以为他们构建业务应用程序,他立即说“是”……他不知道如何。于是他买了一本书,熬夜,研究和编码...他完成了这本书(我敢肯定这是丑陋的),它起作用了,他一直走下去。 我不建议以这种方式进行合同(压力!),但是有中间立场。这是什么,您(或您将如何)为未知物品开票?

13
低级编程-对我有什么用?[关闭]
多年以来,我一直在考虑深入研究“低级”语言。对我来说,这意味着C语言和汇编语言。但是,我还没有时间这样做,也从来没有必要。 现在,因为我看不到任何必要,所以我觉得我应该只是安排某个时间点来学习该主题,或者永远放弃该计划。 我的位置 在过去的四年中,我一直专注于可能会发生变化的“ Web技术”,而我是一名应用程序开发人员,这不太可能发生变化。 在应用程序开发中,我认为可用性是最重要的。您编写的应用程序将被用户“消耗”。这些应用程序越有用,您产生的价值就越大。 为了获得良好的可用性,我相信以下是可行的 良好的设计:经过深思熟虑的功能可通过深思熟虑的用户界面访问。 正确性:如果实施不正确,那么最好的设计一文不值。 灵活性:应用程序A应该不断发展,以便其用户不必切换到具有A可以实现的具有新功能的其他应用程序B。解决同一问题的应用程序的功能不应有所不同,而应在原理上有所不同。 性能:性能有助于获得良好的用户体验。理想情况下,应用程序始终具有响应能力,并且可以相当快地执行其任务(基于其频率)。性能优化的价值超出了用户可察觉的范围,这值得怀疑。 我认为除了性能之外,低级编程不会对我有所帮助。但是,出于性能考虑,以低级语言编写整个应用程序对我来说还为时过早。 我的问题 低级编程可以教给我什么,其他语言不能教给我什么?我是否缺少某些东西,或者仅仅是一项技能,而这对于应用程序开发几乎没有用?请理解,我不是在质疑C和汇编的价值。只是,在我的日常生活中,我非常高兴地了解到这个世界的所有错综复杂的东西并为我进行了管理(主要是通过用C / C ++编写的层以及自己进行汇编)。我只是看不到任何新概念,对我而言只是细节。那对我有什么用呢? 我的结论 感谢大家的回答。我必须说,没有人真的让我感到惊讶,但是至少现在我可以肯定,我会放弃对此感兴趣的领域,直到需要它为止。 据我了解,如今为当今的CPU中使用的处理器编写程序集不仅不必要地复杂,而且有可能导致运行时性能比C语言差。由于OOE的原因,手工优化几乎是不可能的,尽管您没有获得编译器可以自动进行的各种优化。而且,该代码是可移植的,因为它使用了一小部分可用命令,或者经过了优化,但可能仅在一种体系结构上工作。 编写C不再像以前那样需要。如果要用C编写应用程序,我将尽可能使用经过测试和建立的库和框架,这将使我免于实现字符串复制例程,排序算法和其他在大学中用作练习的东西。我自己的代码将以类型安全为代价更快地执行。我既不希望在常规应用程序开发过程中重新发明轮子,也不希望通过查看核心转储来进行调试:D 我目前正在尝试语言和解释器,所以我想发布什么内容,我想尽管C ++也可以做到这一点,但可以将一个可行的概念移植到C上。 再次感谢大家的回答和见解。

10
提前发货,从不发货[关闭]
开头是“自我注释”,所以请您原谅我,如果挫败感太明显并且写作不如恒星。 最近我想到的三个主要主题是: 动机 学习(好奇心) 做(做) 我已经研究动机和激励措施已有几个月了。人们似乎在做事情时可能有无数种不同的动机(我意识到这听起来有些陈词滥调,但我会忍受)。我之所以真正被它吸引是因为我迫切地想知道为什么我做我要做的事情,为什么我不做我想做但不做的事情。 我正在阅读Paul Graham出色的Hackers and Painters一书。在这篇文章中,他认为黑客和画家非常相似,因为他们都是“创造者”。画家做画。黑客制造软件。画家不一定需要了解油漆的化学成分即可制成精美的画作。黑客不一定非要知道1和0才能制作出精美的软件。 然后,Graham得出了不同的计算机科学领域之间的区别: 有些人似乎在学习数学 有些人似乎自己在研究计算机 黑客正在制作软件。 差异非常重要。看起来有些动机是为了创造美丽的东西。而其他人的动机是出于好奇心而学习。对我而言,某些动机似乎很明显,但好奇心似乎并不那么明显。我当然会认为自己是个好奇心强的人,渴望学习几乎所有的知识。但这正是问题所在。 的事情,让我害怕这么多的是,我拼命地想使事情。我拼命地想去做的事情。我想写一本书。我想画一幅画。我想写一首歌。我想要做的事情喜欢旅游。但是奇怪的是我也想学习东西。我想学弹吉他。我想了解艺术史。我想了解更多有关哲学和文学的知识。 关键似乎是学习与做事之间...学习与做事之间的平衡。 虽然我不确定在做某件事之前应该了解多少知识,但可以肯定的是,我发现自己经常站在一边,而不是另一边。就目前而言(据我所知,我一直都是这样),我是一个学习者,而不是一个做事的人。我读了好书。我已经练习吉他多年了。我花了无数小时学习编程。 但是我已经写了0本书。我创作了0首歌。我已经编码了0个漂亮的程序。我画了0幅美丽的画。我已经开始了0个可行的企业。 所有这一切的可怕之处在于,世界上可能有无数未完成的艺术品。这是我对社会和文化的厌世报仇,是从不生产或完成我所开始的任何艺术品吗?也许最糟糕的部分(除了这是我的天性),是我更加了解的事实。我刚读完《完成事情》和《实现想法》之类的书。我已经聚集并合成了如何智慧无数的话做的事情,以及如何使事情。 想象一下无法做自己想做的事情而经历人生的恐怖。如果这是您一直在努力(并希望克服)的事情,请分享。如果没有,也许可惜的可怜会让我感觉好些。 [更新:只想对所有分享想法的人致以感谢。我故意让这个问题有些开放性,希望能够鼓励讨论并让其他人重新思考围绕他们类似经历的中心问题,而且我认为它的确很奏效……这里有很多令人惊讶的见解可以与之合作,而且确实如此有帮助的。再次感谢。]




18
开发团队如何防止消费者应用程序的性能下降?
当我之前询问造成缓慢软件的原因是什么时,我收到的一些答案表明这是一个社会和管理问题: 这不是技术问题,而是市场营销和管理问题。...最好,产品经理负责编写用户应获取的规格。许多事情可能会出错:产品经理无法在规范中添加按钮响应...质量检查人员会根据该规范进行中等程度的测试...如果产品管理人员和质量检查人员都睡着了,我们程序员无法弥补这一点。- 鲍勃·墨菲 人们使用大型应用程序工作。当它们起作用时,就像漏洞一样,性能问题会逐渐蔓延。区别在于-错误是“不好的”-他们大喊“发现我并修复我”。性能问题只会摆在那儿,并且变得更糟。程序员经常认为“好吧,我的代码不会出现性能问题。相反,管理层需要给我买一台更新/更大/更快的机器。” 事实是,如果开发人员定期只是寻找性能问题(这实际上很容易),他们可以简单地将其清除。— Mike Dunlavey 因此,如果这是一个社会问题,那么组织可以采用哪些社会机制来避免将缓慢的软件交付给客户?
32 performance  ui 

16
您是否认为接触BASIC会损害您的思维?[关闭]
向以前接触过BASIC的学生教授良好的编程几乎是不可能的:作为潜在的程序员,他们在精神上被肢解,无法重生。 埃德斯·迪克斯特拉(Edsger W.Dijkstra) 我对Dijkstra表示敬意,但我不同意他所说/写的一切。我特别不同意35年前写的有关Dartmouth BASIC实现的链接纸上的这句话。 我的许多同事或朋友都是从BASIC开始的程序员,下面的问题给出的答案表明,许多程序员都有在BASIC进行编程的第一次经验。AFAIK的许多优秀程序员都是从BASIC编程开始的。 我不是在谈论Visual Basic或在充满资源的计算机上运行的BASIC的其他“现代”方言。我说的是在“玩具”计算机上运行的BASIC的过去,程序员不得不担心保存小的数字,这些数字不需要计算为字符串即可保存一个可观的字节,因为计算机只有几百个,或者由于缺少更强大的功能,必须使用计算后的goto以及许多其他事情,这些问题要求程序员在做某事并迫使程序员具有创造力之前要三思而行。 如果您曾经在资源有限的机器上使用过往的BASIC经验(请记住,当今的简单微控制器比1975年的计算机拥有更多的资源,您是否认为BASIC可以帮助您的头脑找到更好的解决方案,像工程师或BASIC一样,将您拖到编程的阴暗面,使您在精神上残废? 学会在充满资源的计算机上运行的编程语言,在这种计算机上,新手程序员可以做所有的事情,并且程序运行时没有大问题吗?还是更好地了解程序员在哪里不能出错? 您对BASIC的评价如何帮助您成为更好/更差的程序员? 您是否会向即将到来的程序员教授在2KB(虚拟)计算机上运行的旧BASIC? 当然,仅接触BASIC是有害的。也许您同意我的观点,即现代BASIC并不能提供太多帮助,因为现代BASIC(与其他编程语言一样)提供了使程序员没有更深入思考的功能。 附加信息:为什么选择BASIC?

25
作为程序员,您需要做时间表吗?[关闭]
时间表是我从未喜欢过的东西,但对公司而言仍然是必需的东西。他们并没有打扰我太多,但是他们似乎真的在磨弄其他人的齿轮。我想我有几个问题,反馈会很棒。 假设您不是承包商,是否需要制作时间表?(这对我来说是可以理解的)。 您会习惯或使用的时间表的粒度是多少?(例如:所有条目必须在两个小时内)。 时间表是否会成为您不接受工作或留下当前工作的原因? 如果您不向客户付款,组织内部的管理层如何证明时间表合理?
32 management 


6
您如何学习设计美观的网站?[关闭]
我是一个中等能力的Web开发人员。我可以将东西放到想要的地方,如果需要,可以在其中放一些JQuery东西。但是,如果我要创建自己的网站(我将开始这样做),我将不知道如何设计它。如果有人坐在我旁边指向屏幕,然后说“在那儿放图片,在那儿发短信”,我可以很容易地做到这一点。但是,用我选择的颜色和文字来设计自己的网站似乎就像一个小孩发明了它。 有谁知道我可以浏览的任何网站/书籍,或者有没有人获得有关非幼儿网页设计基础的提示?

16
您有自己的“杂项工具”库吗?您最为哪一部分感到骄傲?[关闭]
我知道我们许多人使用经常使用的工具和实用程序来维护自己的小型个人图书馆。 我从16岁起就拥有我的,所以它的规模已经发展到相当可观的水平。此后,我写的一些内容已添加到框架中。我在LINQ之前就编写了自己的表达树的小实现,用于遗传算法,这在当时我很喜欢,并为此感到自豪-当然,现在它已经毫无用处了。但是最近我一直在研究它并升级到.NET 4.0,并重新引起了人们的兴趣。 所以我很好奇您使用库的目的。也许我们可以得到一些有用的小片段的好主意,并在我们自己之间分享。 所以我的问题是: 您是否有其他实用程序库? 您最为哪一部分感到自豪,为什么? 如果您愿意,请提供代码示例 :-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.