软件工程

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

3
存在类型与接口有何不同?
给定存在类型 T = ∃X.{op₁:X, op₂:X→boolean} 这个通用的Java接口: interface T<X> { X op₁(); boolean op₂(X something); } 存在类型和Java接口之间的根本区别是什么? 显然,在语法上存在差异,并且Java的面向对象(还包括诸如隐藏this参数等详细信息)。我对这些方面的兴趣不大,对概念和语义上的区别不那么感兴趣-尽管如果有人想阐明一些更好的观点(例如Tvs 之间的符号差异T<X>),也将不胜感激。


3
在网格上随机生成有向图
我试图随机生成一个有向图,目的是制作类似于口袋妖怪的滑冰拼图游戏的拼图游戏。 本质上,这就是我希望能够随机生成的内容:http : //bulbanews.bulbagarden.net/wiki/Crunching_the_numbers : _Graph_theory。 我需要能够在x和y维度上限制图形的大小。在链接中给出的示例中,它将限于8x4网格。 我遇到的问题不是随机生成图,而是随机生成图,我可以在2d空间中正确地绘制它,因为我需要在节点的另一侧做一些事情(例如岩石)来制作它停止滑动时在视觉上有意义。这样做的问题是,岩石有时会终止于两个其他节点之间或可能位于另一个节点本身的路径中,这会导致整个图形损坏。 与几个我认识的人讨论了这个问题之后,我们得出了两个结论,可能会得出一个解决方案。 构造网格时,将网格中的障碍物包括在图中。 从一个完全填充的网格开始,然后绘制一条随机路径并删除将使该路径起作用的块。 然后问题就变成了要删除哪些,以避免引入额外的较短路径。我们还认为动态规划算法可能是有益的,尽管我们每个人都不擅长从零开始创建动态规划算法。关于此问题被正式称为(如果是官方图形问题)的任何想法或参考将是最有帮助的。 这是到目前为止我已经完成的一些示例,仅通过随机放置块并从选定的开始/结束位置生成导航图即可。想法(如上一链接所述)是从绿色S开始并想要到达绿色F。您可以通过向上/向下/向左/向右移动来实现此目的,并继续沿选定的方向移动,直到碰到一个壁。在这些图片中,灰色是墙,白色是地板,紫色线是从头到尾的最小长度,黑色线和灰色点表示可能的路径。 以下是一些随机生成图的不良示例: 以下是随机生成(或手动调整)图的一些好示例: 我似乎还注意到,实际上在玩拼图游戏时更具挑战性的是那些在最小路径上具有很多高次节点的游戏。

3
我可以使用Ruby来自动化一切吗?
我在各种平台(Windows,Linux等)上面对每天运行的各种类型的应用程序(基于Web,基于GUI,命令行等)。我有很大的机会通过脚本来自动化任务。但是几乎每种类型的应用程序和平台都有其本机脚本语言或工具(例如Windows的VBScript和PowerShell,Linux的Bash脚本,Web应用程序的Selenium和GUI应用程序的AutoIt等)。学习和维护如此多的脚本语言使我丧命。 我觉得Ruby可以轻松地与各种平台进行互操作,并且表达能力很强。所以我的问题是: 可以使用Ruby编写所有脚本吗? 如果是的话,与每个平台的本机脚本语言相比,主要缺点是什么?

5
当可以通过Java脚本或CSS完成任务时,使用CSS更好吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我总是尽可能多地使用CSS来否决JavaScript。 即我使用CSS而不是JavaScript创建选项卡和过渡按钮。 我已经看到了一些支持JavaScript的解决方案,特别是Wt Web框架。但如果浏览器不支持/禁用js,则可以降级到CSS。 我知道CSS和JavaScript具有不同的用途,但是有重叠之处。这是这个问题的源泉。 是否应该继续通过JavaScript继续使用CSS?
11 javascript  css 


3
CRTP是否使用了很多?以及为什么是/不是?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我正在考虑奇怪地重复使用模板模式。 我发现它非常有用,并且对于许多任务来说都可以很好地调整。但是我必须承认,我没有看到很多CRTP代码。 很难把握吗?虚拟功能总体上是否更容易?90%出现虚拟关键字的情况下,是否应该使用它?

5
我可以在我的应用程序中使用GPL,LGPL,MPL许可包,并使其成为封闭源吗?
我看到一家公司正在使用BusyBox,并且还在上面使用Gpl + Lgpl + Mpl软件包,然后他们在上面运行了自己的应用程序。他们的应用程序是一个封闭的源代码包。 您购买了该设备,但其封闭源。混合LGPL + MPL的GPL如何成为封闭源代码? 我以为规则是??还是我错了或者以下信息错了?: GPL:如果您在应用程序中使用它,则必须根据GPL发布您的应用程序。这并不意味着您也不能出售它(就像他们出售Linux CD一样),但是您还必须免费发布源代码。这可能对您有用,但可能无效。 LGPL:如果在应用程序中使用它,那么您仍然可以拥有封闭源专有许可的应用程序。但是,如果您修改LGPL库,那么即使您的应用程序可以保持封闭源代码,也必须在LGPL下发布您的修改。
11 licensing  gpl  lgpl  mpl 

3
冲刺之间会发生什么?
我正在按照Scrum模型松散地进行一个项目。我们正在做两个星期的冲刺。我尚不清楚的东西(也没有书可以参考)正是冲刺之间应该发生的事情:应该有一些“包装”过程,产品在这里生产和交付,但是: 这通常需要多长时间? 整个团队都应该参与吗? 在开发人员开始处理下一个冲刺项目之前,它是否必须严格完成? 进行代码审查和测试时,这是什么? 一共有三个开发人员,总共约有1个FTE。因此,冲刺确实非常短。
11 agile  scrum  sprint 

7
我需要IDE来开发Android应用程序吗?
阅读了Google的一些文章之后,我决定开始使用Android应用程序,因为它是Google的开源平台。 所以我想创建一些应用程序。我有Android 2.2 OS,所以我用谷歌搜索它,然后终于找到了创建Android应用程序的链接。 这是使我能够创建应用程序的链接还是我们需要任何其他IDE?就像我们有c的gcc和c的VC ++一样。要进行此操作,我还需要设置其他哪些内容?
11 android 

7
如果您的算法是正确的,那么您花了多长时间编写它是否重要?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我最近发现,Facebook面临编程方面的挑战,如果正确完成,您将自动获得电话面试。 有一个示例挑战,要求您编写一种可以解决“河内之塔”类型问题的算法。给定许多钉子和圆盘,进行初始和最终配置;您的算法必须确定可能的最少步骤,以进行最终配置并输出步骤。 该示例挑战为您提供了45分钟的时间限制,但允许您仍然测试您的代码,以查看时间限制是否过期。 我不知道有什么可爱的数学解决方案可以解决该问题,而且我也不想寻找一个数学解决方案,因为我认为这样做会很欺骗。因此,我试图独自解决最大的挑战。 我能够制定出行之有效的算法。但是,我花了4个多小时才完成制作,比45分钟的要求要长得多。由于花费的时间比分配的时间长得多,因此我没有尝试实际的挑战。 这让我感到奇怪,实际上,花了我这么长时间真的很重要吗?我的意思是这表明我将无法在这样的地方(不仅是Facebook,而且是Google,Fog Creek等)找到工作,需要降低自己的抱负,或者我实际上已经过世了在我的第一次尝试上,即使花了太长时间才被认为是好的?
11 algorithms 

6
在面试期间提供有关以前雇主的敏感信息[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 当您受到潜在的未来雇主的面试时,讨论您先前的工作(即您过去几年的工作)对双方当然都是有益的。如果您正在研究的技术(及其背后的思想)是敏感和机密的,该怎么办? 目前,我正在研究一些很酷的东西,这些东西会打动面试官,可以表达出我的热情和理解力,但是与此同时,我不能不透露太多内容就直接说明它的本质。关于我目前的雇主。另一方面,如果我在不解释细微之处的情况下保持含糊其词,似乎就好像我在从事相当基本的应用程序一样。关键是在中间立场(即应用程序的构建方式),这使我目前所做的事情既特殊又困难。但是,即使承认这一中间立场,也可以提供有关我的雇主如何竞争的重要信息。 希望这有道理。我在面试中该怎么办?是否有像2向NDA那样的面试方式,以便我可以对自己的过去经历进行深入的解释,或者我需要故意模糊不清并为无法详细介绍而道歉?
11 interview 

4
我应该更新博客文章还是随着技术(和我)的变化而重写它们?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我在今年初开设了一个编程博客,自从开始以来,有些事情发生了变化。有些更改是由于技术的变化而引起的,有些更改是由于我的代码库的改进而引起的,还有一些(可能是大多数)是由于我在学习更多的知识而发生的变化。 我想返回并完全重写某些博客文章。重写帖子以删除旧信息并用新内容更新它们,还是创建全新的帖子并可能删除旧的帖子,这样更好吗? 我不是在谈论对代码的小改动或额外的几句话,而是要用新的代码,新的信息等完全重写。 需要考虑的一些事情包括对帖子的评论,在创建新帖子时接收更新的订阅者以及用户书签。

5
一次性变量的惯用名称是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 Velocity Template Language的set指令在左侧需要一个变量。这行不通。 #set ( $entries.add("d") ) 即使我没有用的返回值add("d"),我也必须将其分配给变量。 #set ( $x = $entries.add("d") ) 我想说明该变量是必需的,但我无意以后再使用它。是否有命名约定来仅存在于安抚编译器中的变量?
11 naming  syntax 

3
为什么scanf称为scanf?(与printf相同。)
我很好奇,为什么在C编程语言中读取格式化输入的函数称为“ scanf”而不是“ readf”。我假设它是从较早的语言派生的,那么在那种情况下为什么要用较早的语言命名呢?(递归) 另外,为什么选择“ printf”而不是“ writef”?在非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.