软件工程

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

4
用于Apollo 11任务代码的开发过程?
阿波罗任务的技术并不比袖珍计算器复杂。 在这里的链接中,有有关阿波罗制导计算机(AGC)的信息 机载阿波罗制导计算机(AGC)约为1立方英尺,带有2K的16位RAM和36K的硬线芯绳存储器,铜线穿过或不穿过微小的磁芯。16位字通常是14位数据(或两个操作码),1个符号位和1个奇偶校验位。循环时间为11.7微秒。用反向波兰语用汇编语言和解释性语言进行编程。 因此,当我研究那里的内容时,偶然发现了一些源代码,并且注意到了很多注释(例如,临时,我希望实现希望) VRTSTART TS WCHVERT # Page 801 CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67 TS WCHPHOLD TS WCHPHASE TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE TC DOWNFLAG # PERMIT X-AXIS OVERRIDE ADRES XOVINFLG TC DOWNFLAG ADRES …

7
为什么C ++中没有“最终”构造?
C ++中的异常处理仅限于try / throw / catch。与Object Pascal,Java,C#和Python不同,即使在C ++ 11中,该finally构造也尚未实现。 我已经看到很多有关“异常安全代码”的C ++文献。Lippman写道,异常安全代码是一个重要但高级而又困难的话题,超出了他的Primer的讨论范围-这似乎意味着安全代码不是C ++的基础。赫伯·萨特(Herb Sutter)在他的Exceptional C ++中为该主题投入了10章! 但是在我看来,如果finally实现了该构造,尝试编写“异常安全代码”时遇到的许多问题都可以很好地解决,从而使程序员可以确保即使在发生异常的情况下也可以恢复程序到安全,稳定,无泄漏的状态,接近资源分配和潜在问题代码的地步。作为一个经验丰富的Delphi和C#程序员,我使用try ..最终像大多数使用这些语言的程序员一样,在我的代码中广泛地进行了阻塞。 考虑到C ++ 11中实现的所有“风声”,我惊讶地发现“最终”仍然不存在。 那么,为什么finally从未在C ++中实现该构造呢?实际上,这不是一个很难理解或高级的概念,并且可以帮助程序员编写“异常安全代码”。
57 c++  exceptions 

17
专业版本控制的替代方法
我们正在与一些需要为我们的项目之一做出贡献的非程序员(作家)合作。 现在,他们只是不喜欢使用Git(或与此相关的任何东西)进行版本控制其工作的想法。我认为这是因为他们只是觉得不值得把头放在版本控制的扭曲概念上。(当我第一次向他们介绍分支和合并时-他们看起来像是冒犯了他们。) 现在,我们无法对他们进行教育或说服他们使用它。我们只是在尝试寻找替代方案,以便我们对他们的所有工作进行版本化(这是我们所需要的),并且他们可以轻松地进行工作流并专注于自己的工作。 我想出了一些主意... 告诉他们每次进行不重要的更改时都将工作另存为单独的文件,然后在我们这边使用diff来跟踪更改。 用Python编写一个以某种方式实现CSSEdit中“里程碑”的程序。 关于该项目: 它是一种自然语言处理系统(用C + Python编写)。我们已经聘请了一些作家来用不同的语言为系统准备输入。随着软件的发展,我们需要那些作者来更改他们的输入(文章)。有时变化很小(一两个字),而其他时候变化很大。 我们需要对这些更改进行版本控制的原因是,输入中的每个小/大更改都有可能显着更改系统的输出。

4
有图表可以帮助我在开放源代码许可证之间做出决定吗?[关闭]
开源计划在其“流行且广泛使用的或具有强大社区的许可证”列表中列出了9种不同的许可证。 我想将我的项目许可为开源。不幸的是,我不会讲法文。我可以参考一些图表来帮助我做出正确的选择,或者至少将我指向正确的方向吗?例如,汇总许可证之间差异的表格,或者使用我的要求引导我找到适合我的正确许可证的流程图? 我也打算与律师见面,但是任何开始的信息都会有所帮助。

11
数据库源代码控制
数据库文件(脚本等)应该在源代码控制中吗?如果是这样,保留它并在那里更新的最佳方法是什么? 甚至需要数据库文件进行源代码控制,因为我们可以将其放在开发服务器上,每个人都可以使用它,并在需要时对其进行更改。但是,如果有人把它弄乱了,我们就无法取回它。 哪种方法最适合源代码控制数据库?

16
为什么C和C ++之类的语言没有Java的垃圾回收?[关闭]
好吧,我知道在C ++中有诸如malloc / free和在C ++中用于内存管理的new / using-destructor之类的东西,但是我想知道为什么这些语言没有“新更新”,使用户能够是否可以选择手动管理内存,或让系统自动进行内存管理(垃圾回收)? 有点新奇的问题,但仅在CS中使用了大约一年。

13
您何时不向经验不足的程序员提供帮助?[关闭]
当初级程序员需要帮助以始终加入并尝试对其进行培训时,您认为这是一个好主意吗?还是他们会忽略您给他们的所有“教鱼”建议,而只关注您刚给他们带来的“鱼”?知道错误是最好的学习方法,您是否让他们总是自己解决问题?还是您担心他们会变得如此沮丧和沮丧,以至于他们失去了加快速度的渴望? 您何时选择何时帮助比您更初级的人,何时退缩并让他们从错误中吸取教训?

17
如何使重构成为我团队的优先事项?
我每天使用的代码库没有自动测试,命名不一致以及大量注释,例如“为什么在这里?”,“不确定是否需要此方法”或“此方法的名称不正确”,并且代码乱七八糟尽管我们使用源代码控制,但仍存在“ Changelogs”。可以说,我们的代码库可以使用重构。 我们总是有修复错误或添加新功能的任务,因此没有时间将代码重构为更好和更模块化的代码,而且似乎也不是优先考虑的事情。 我如何证明重构的价值,以便将其添加到我们的任务列表中?在我进行重构时,请求宽恕而不是允许是值得的吗?

16
从Windows迁移到Linux [关闭]
我需要调和这两个事实: 在Linux上工作时,我感到不舒服。 我需要为Linux开发软件。 背景知识:我在Windows上有10年以上的编程经验(几乎全部是C / C ++,但也有一些.NET),我在家里使用FreeBSD大约3年左右(然后不得不回到Windows),而我从来没有对Linux感到过运。现在,我必须为Linux开发软件。我需要一个计划。 在Windows上,您只需要了解一种编程语言,要针对其进行编码的API,您的IDE(VisualStudio)以及一些非常基本的故障排除工具(Depends,ProcessExplorer,DebugView,WinDbg)就可以摆脱困境。其他一切都是自然而然的。 在Linux上,这是一个非常不同的故事。如果我从Firefox插件链接到哪个DLL(抱歉,共享库),我怎么会知道呢?在Linux中相当于在源中插入__asm int 3 / DebugBreak()并运行程序,然后让OS调用调试器,这等效于Linux?为什么地狱版本的构建使用称为appLoader的东西,而调试版本的工作却有所不同?最糟糕的是:如何配置Linux开发环境? 因此,考虑到仇恨通常与不够了解有关,您会建议什么?我对Emacs和GCC没问题。我需要以Linux管理员/用户的身份接受教育,并且需要学习适当的故障排除工具(strace很酷,顺便说一句),与我上面提到的工具相当。 我需要从头开始做Linux吗?还是我只需要阅读一些书籍(我已经阅读了Kernighan的“ UNIX编程环境”和Stevens的“ Advanced Programming ...”,但我需要学习一些更实际的东西)?还是我需要在家用计算机上安装一些Linux发行版?

10
SMART目标对程序员有用吗?[关闭]
我认识的几个组织都为他们的程序员使用SMART目标。SMART是“特定”,“可测量”,“可实现”,“相关”和“时间限制”的首字母缩写。它们在大型公司中相当普遍。 我以前在SMART目标方面的经验并没有那么积极。是否有其他程序员发现它们是衡量性能的有效方法?对于程序员而言,良好的SMART目标的一些示例是什么(如果存在)。



30
您做出的最令人遗憾的设计或编程决策?[关闭]
我想听听您做出什么样的设计决策,以及它们如何适得其反。由于一个错误的设计决定,我最终不得不永远支持这个错误的决定(我也参与其中)。这使我意识到一个设计错误会永远困扰着您。我想向经验丰富的人们学习,他们经历了什么样的错误,以及从中学到了什么。 我确信这将通过帮助其他程序员不再重复这些决定而对他们有很大帮助。 感谢您分享您的体验。
57 mistakes 

6
我们是否应该为所有请求创建一个新的HttpClient单一实例?
最近,我从asp.net monsters上看到了此博客文章,该文章讨论了HttpClient以下使用方式的问题: using(var client = new HttpClient()) { } 根据博客文章,如果我们HttpClient在每个请求之后都处理掉它,则可以使TCP连接保持打开状态。这有可能导致System.Net.Sockets.SocketException。 每个帖子的正确方法是创建一个实例,HttpClient因为它有助于减少套接字的浪费。 从帖子: 如果我们共享HttpClient的单个实例,则可以通过重用套接字来减少套接字的浪费: namespace ConsoleApplication { public class Program { private static HttpClient Client = new HttpClient(); public static void Main(string[] args) { Console.WriteLine("Starting connections"); for(int i = 0; i<10; i++) { var result = Client.GetAsync("http://aspnetmonsters.com").Result; Console.WriteLine(result.StatusCode); } Console.WriteLine("Connections done"); …
57 c#  http-request 

1
纤维,协程和绿线之间有区别吗?
今天,我在互联网上阅读了几篇有关纤维,协程和绿色线程的文章,看来这些概念有很多共通之处,但还是存在细微的差异,尤其是当我们谈论纤维和协程时。 是否有一个简洁,正确的摘要来使它们彼此不同? 更新:我发现区分协程和纤维(N4024 C ++草案)文档特别擅长区分纤维和协程。

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.