软件工程

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

12
行业对热情的程序员没有地方吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我一直在我的经理认为如果您在一个地方的地方实习, 产品公司,那么您通常会花时间调整产品,有时会添加一些功能,或者 服务公司,那么您会继续做重复的事情 这让我感到行业不适合喜欢创造新闻和解决难题的人。 那么,这个行业不是一个充满激情的程序员的地方吗?这会因国家而异吗? 更新以清除某些事情,这些事情与它们的含义不同。 在这里进行调整是确保您的产品具有表,该表具有客户想要的行数和列数,等等。为客户定制它。 新的“功能”在这里不是新功能。只是美学层面的变化。有时候是。 我不确定他所说的重复是什么意思。他就像,您必须一次又一次地创建UI。(不过,我在那儿看不到任何重复。如果需要一个不同的 UI,则需要设计一个不同的 UI。如果可以使用旧的UI,则无论如何都不需要做很多事情。)

9
首先应该是什么:测试或代码审查?
我对编程设计模式和生命周期还很陌生,我想知道,代码检查或测试应该由哪些人来完成,首先应该做什么? 从一方面来看,如果没人检查代码是否有效,为什么还要烦恼代码呢?另一方面,如果您在测试之前进行了检查,则可以及早发现一些错误。 建议使用哪种方法,为什么?

10
根据诺基亚与微软的合作关系,Qt的未来
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 万一您错过了它,最近两天发生了很多事情,可能会影响Qt框架,甚至更糟。:-(肯定会以几种可能尚未得到认可的方式影响移动领域。 从昨天开始,诺基亚首席执行官斯蒂芬·埃洛普(Stephen Elop)在内部致辞中描述了诺基亚正处在燃烧的平台上,并且需要进行大规模而激进的业务转变。 一天后,在诺基亚世界大会上,诺基亚宣布与微软建立合作关系,此刻诺基亚重新采用Windows Phone 7平台和开发环境,将Symbian抛在了身后,并将Meego标记为R&D(你问我),关于Maemo / N900系列,我想这是再见了。我知道您在想什么,但是不,Qt 不会移植到Window Phone平台。而我也吓得关于这个。您可以在此处观看Elop&Ballmer联合新闻稿。 现在,看完之后这个庞大的线程 Qt的利益邮件列表我不禁纳闷时,在什么Qt是Qt的在诺基亚未来,现在他们不关注(所有?)了(还记得满焦点早在10月就将Qt用作所有诺基亚产品(包括Symbian,是的)的主要开发框架? 我爱Qt,在我看来,它是唯一真正的跨平台应用程序开发框架,并且是使C ++开发(在可能的范围内)变得令​​人愉悦的少数几个框架,并且在诺基亚统治下,该框架发生了很多事,并且发展势头良好,因此,我想知道,此后Qt在诺基亚遭受缓慢死亡的机会是什么?是的,我知道KDE.org和Qt很容易产生的事实,但我仍然感到不安。 对于诺基亚员工或第三方参与Symbian以及Ovi商店中所有Symbian / Qt内容和业务的所有努力,而且对于Maemo / Meego为何如此,这也必须是可怕的。我还计划进行大规模裁员,我怀疑Symbian技术人员和Qt? 我想听听您的意见吗?Qt未来安全可靠吗? LE:这个问题已被逐步修订,改进和更好地引用,因此您可能希望快速阅读一遍,以了解您可能错过的内容。

7
调试死锁时您会寻找什么?
最近,我一直在从事大量使用线程的项目。我认为我可以设计它们。尽可能使用无状态设计,锁定对一个线程以上需求的所有资源的访问,等等。我在函数式编程中的经验对此提供了极大的帮助。 但是,在阅读别人的线程代码时,我会感到困惑。我现在正在调试死锁,并且由于编码样式和设计与我的个人风格不同,因此我很难看到潜在的死锁情况。 调试死锁时您会寻找什么?


12
同事不愿使用单元测试“因为要编写更多代码”
一位同事不愿使用单元测试,而是选择快速测试,然后将其传递给用户,如果一切顺利,它会实时发布。毋庸置疑,某些错误确实可以解决。 我提到我们应该考虑使用单元测试-但是一旦意识到必须编写更多代码,她全都反对。这使我无法修改某些内容,并且不确定输出是否相同,尤其是因为她的代码是意大利细面条,因此我会在有机会时尝试对其进行重构。 那么对我来说最好的前进方向是什么?

22
学习成为一名优秀(优秀)程序员的必备条件是学习如何使用C(或C ++)吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 当我第一次开始学习如何编程时,真正的程序员可以在睡眠中编写汇编。计算机科学方面的任何认真教育都将包括大量使用汇编进行编程的培训和实践。从那以后,情况发生了变化,以至于我看到带有汇编的计算机科学学位(如果有的话)被降级为一项任务和一章,从四年制学习中总共进行了两周的工作。 C / C ++编程似乎遵循了类似的路径。采访那些花了不超过两周的C ++编程并且只在某本书中读过C的大学毕业生,我不再感到惊讶。虽然最严重的CS学位似乎仍包括大量的时间学习和使用其中一种或两种语言,但显然趋势是学校中C / C ++的执行较少。 显然,无需阅读或编写任何C或C ++代码行就能从事出色的工作。 考虑到所有这些,学习这两种语言值得吗?他们是否必须要出类拔萃?(除了显而易见的,非语言的建议,例如“语言的选择对于全面的教育可能很重要”,以及“在程序员的整个职业生涯中不断尝试和学习新语言可能是一个好主意,伸展灰色细胞”)

6
幸存的MATLAB和R作为顽固的程序员[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我喜欢用似乎适合硬核程序员的语言进行编程。(我最喜欢的是Python和D。)MATLAB是为工程师而设计的,R是为统计学家设计的,看来这些语言是为那些不是硬核程序员并且不像硬核程序员那样思考的人设计的。我总是觉得它们使用起来有些尴尬,在某种程度上,我无法理解为什么。这是我设法确定的一些问题: (两者):在没有真正原语的情况下,极端强调向量和矩阵。 (两者):基本字符串操作的难度。 (两者):对基本数据结构(如哈希表和“实数”,即类型参数和可嵌套数组)的支持缺乏或尴尬。 (两者):即使按照解释语言标准,它们也确实非常慢,除非您向后弯腰以对代码进行矢量化处理。 (两者):它们似乎并非旨在与外界互动。例如,这两个程序都是相当庞大的程序,需要一些时间才能启动,并且似乎没有设计成使简单的文本过滤器程序易于编写。此外,缺乏良好的字符串处理能力使得文件I / O几乎不可能以任何非常标准的形式出现。 (两者):面向对象似乎具有很强的固定感觉。是的,您可以做到,但是在C语言中,它比OO更加习惯。 (两者):没有明显,简单的方法来获取引用类型。没有指针或类引用。例如,我不知道您如何使用这两种语言滚动自己的链接列表。 (MATLAB):您不能将多个顶级函数放在一个文件中,因此建议使用很长的函数并进行剪切和粘贴编码。 (MATLAB):整数显然不存在为一流的类型。 (R):基本的内置数据结构似乎太高级了,文档却很少,并且鉴于我在类似但较低级别的数据结构上的经验,似乎从未达到我期望的效果。 (R):该文档散布在各处,几乎无法浏览或搜索。就我所知,即使D通常因不良的文档而被淘汰,但仍然相当残破。 (R):至少据我所知,没有好的IDE。同样,即使是D,这是一个社区规模较小的相当Alpha的语言,其效果也更好。 总的来说,如果存在足够全面的库,我还希望可以用通用语言将普通的旧库轻松替换为MATLAB和R。在更新的通用语言中尤其如此,其中包括许多面向库作者的功能。 为什么R和MATLAB在我看来如此奇怪?您是否注意到其他任何主要问题,可能会使这些语言对铁杆程序员变得陌生?当需要使用它们时,有哪些好的生存技巧? 编辑:从我得到的一些答案中我看到一个问题。当我分析数据时,我强烈希望拥有一个包含整个管道的脚本。这意味着需要使用通用语言。我讨厌不得不编写一个脚本来“清理”数据并将其吐出,然后再编写一个脚本以在完全不同的环境中将其读回,等等。我发现在某些工作中使用MATLAB / R和一个完全不同的语言具有完全不同的地址空间和思维方式,其他语言将成为巨大的摩擦源。此外,我知道存在胶合层,但是它们似乎总是非常复杂并且是摩擦的根源。
25 languages  r  matlab 

5
如果我讨厌C ++头文件怎么办?
我总是对头文件感到困惑。它们是如此奇怪:您包含的.h文件不包含.cpp,但.cpp也已通过某种方式进行编译。 最近,我加入了一个团队项目,并且当然使用.h和.cpp。 我知道这非常重要,但是我不能忍受复制粘贴我们拥有的多个类中的每个类中的每个函数声明。 如何有效处理2个文件的约定? 是否有任何工具可以帮助您解决此问题,或自动将以下示例中的一个文件更改为.h和.cpp?(特定于MS VC ++ 2010) class A { ... Type f(Type a,Type b) { //implementation here, not in another file! } ... }; Type f(Type a) { //implementation here } ...

10
为什么我的团队需要SCRUM而不是非正式的,更轻量级的流程?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 首先,我想知道我理解SCRUM或它的某些派生词可能是管理软件开发的好方法。似乎所有大公司和我的经理都在使用或曾经使用过它,而我不能以所有这些经验来争论。但是,我一直在努力理解“为什么”,所有阅读甚至我在工作中的SCRUM官方培训都对我没有帮助。只是说辞而已。所以我来这里寻求答案。 到现在为止,我已经由4-5名成员组成的团队非常有效地发展,完全是自组织的,不需要任何培训,方法论或特殊软件。只是在多维数据集中进行讨论,临时会议和一对一代码审查。我现在在工作中被告知SCRUM是必经之路,以及随之而来的一切。当他们向我描述SCRUM时,我读到了以下内容: 个人与流程和工具之间的互动 工作软件超过全面的文档 客户合作而非合同谈判 响应计划变更 很好,但是对我来说,所有这些似乎都是常识。为什么需要将其编纂?然后我被告知方法论可以帮助我们应对变化。具体什么SCRUM的各个方面使我变得如此灵活,以至于以前我无法通过临时会议,多维数据集讨论和开发人员计划会议来实现?他们解释了每两周或进行一次冲刺的工作成果的必要性。在我的特定项目中,没有“客户端”,该软件将无法使用一年或一年以上的时间,与此同时,我大概只会每个月或更短时间向高级管理层进行降级。那么,为什么每两周就需要交付产品呢?他们强调了Sprint计划会议的重要性,整个团队将为下一个Sprint安排故事和任务。这与我过去的即席计划会议没有什么不同。为什么每隔一个星期一就要发生一次 为什么要整个团队参与其中?我了解“拥有”该产品的每个成员的概念,但事实是,只有极少数人能够真正地将每个故事分解为任务,而其他人则只是闲着看。 再一次,我了解到大多数人都在此过程背后,因此它必须有效,我需要加入进来。我只想了解为什么。我的问题是我已经练习了这些东西,只是不喜欢不必要地编纂它们吗?也许我还没有看到这些技术的优势,因为它们做得不正确?与我惯于接受的尖锐做法相反,任何关于此的真实,个人信息或建议,将不胜感激。
25 scrum 

10
有限状态机的例子
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我正在寻找有限状态机的好例子。语言并不是特别重要,只是很好的例子。 代码实现很有用(通用伪代码),但是收集FSM的各种用法也非常有用。 示例不一定需要基于计算机,例如Mike Dunlavey的Railroad网络示例非常有用。

8
为什么最终确定HTML 5规范需要这么长时间?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在读这篇文章,一句话引起了我的注意(我的重点是): 因此,XHTML的最大批评家伊恩·希克森(Ian Hickson)继承了HTML 5,这是一种面向行动的幼儿规范,直到2022年才能成年,尽管其中有些如今可以使用。 真的吗?那真的是HTML 5开发周期吗?为什么要花这么长时间?是什么使正确的事情变得如此困难,以至于直到11年后才能最终确定?
25 html5 

12
如何查看您不理解的代码?
我被赋予改善公司发展的作用。我想开始的第一件事是代码审查,因为以前从未在这里进行过代码审查。 我们公司有3位程序员。我是一名网络程序员,我的已知语言主要是PHP,ActionScript和JavaScript。另外2个开发人员在VB.net中编写内部应用程序 我们已经进行了几周的代码审查。我发现很难理解VB代码。因此,当他们说出自己的所作所为时,在大多数情况下,我只需要信守诺言。 如果确实发现有问题,请解释我的意见,并说明我将如何使用我所知道的一种语言解决该问题。 有时我的建议会受到欢迎,但是很多时候我会被告知诸如“这是使用这种语言的最佳方式”或“不适用于该语言”之类的事情。 这可能是正确的,但我不知道该用哪种语言,我不确定如何确认或反驳这些主张。 我知道一种可能的解决方案是学习vb,这样我可以进行更好的代码审查。我对学习vb确实没有兴趣(特别是因为我有一系列我正在尝试为自己的项目学习的技术),并且希望保留此作为最后的选择,但这是一个选择。 我想到的另一个想法是,他们俩都对C#感兴趣,我也对C#感兴趣。它相对于他们是因为它的.net和相对于我来说是因为它与我所知道的语言更相似。但这对我们所有人来说都是新的。我想到了我们所有人在一个宠物C#.net项目上进行协作并从中互相检查代码的好处。 我想也有可能聘请顾问来给我们做一些代码审查。 在这种情况下,您会建议我做什么。

8
您如何在非工作时间保持生产力?(节目表)[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我喜欢编程,但是工作中的编程就是工作。我想进一步发展自己的编程兴趣。我想象整周都在周末完成一个小项目或完成与编程相关的书。但是,实际上,我经常达不到我的期望。我经常只会阅读一两章,甚至更少的编码。实际上,我会花时间在网上冲浪,看电视或拜访朋友并放松一下……因为那是周末。但是,当周日傍晚转瞬即逝时,我常常会反思自己的周末,我对时间的使用感到非常失望。 所以我的问题是,您如何在工作之外保持生产率?我敢肯定,有些程序员在业余时间会不太在意编程。虽然,我认为大多数程序员,尤其是stackexchange的程序员都对编程充满热情。 我应该度过周末的节目,还是如果花那么多时间来消磨节目并讨厌它? 我应该如何在业余时间进行编程?我应该设定时间表吗?我应该花多少时间?最重要的是,我如何遵守该时间表?它只有拖延的人性。 我知道这里有很多问题。随意回答与您如何在工作之外保持专注有关的问题。我对编程充满热情,但经过40个小时的编程,可能很难保持这种热情。

15
如何处理需要了解多种编程语言的需求?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我是一个相对年轻的程序员。我今年23岁,从事专业编程大约已有5年了。 作为大多数程序员,我从C入手,学习了一些x86汇编的乐趣,然后我发现C ++成为了我对编程界的最大热情。使用C和C ++进行编程会迫使您学习特定于平台的API,库和框架,所有这些都需要不断的研究和实验。一段时间后,我不得不继续使用Java和C#,因为我所在地区的需求基本上是这些语言的需求。使用这些语言,我进入了Web开发领域,然后我不得不学习javascript。最初为.NET Framework开发很令人兴奋,但是当我被Microsoft束缚时,我不断感到(当然,.NET Framework使我脱离Linux)。对于桌面开发,我几乎可以使用Qt与C ++一起使用.NET进行所有操作,但是对于Web开发,我不得不寻找替代方法。很快我找到了Django,然后继续学习Python,因此可以使用Django。如今,我正在学习使用Objective-C开发iOS。 到目前为止,学习所有这些语言非常容易(C ++很好地训练了我),但是我担心有一天我无法跟踪所有这些语言。只是为了澄清。我必须学习的唯一语言是C#和Java。我学习的所有其他乐趣都是因为我喜欢编程和学习新事物。我也想在台式机,Web和移动开发方面保持精湛的技能。 我的问题是:如何跟踪多种编程语言?(我的意思是,请跟踪这些语言的变化并保持技巧的敏锐性)和:是否存在足够的编程语言?

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.