Questions tagged «language-agnostic»

该标签用于非特定于编程语言或环境的问题。


14
脚本语言对初级程序员有什么影响?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 前几天,我和一位老师进行了讨论。 我们讨论了更简单的脚本语言(如Python或Ruby)对初级程序员的影响。 他认为脚本语言会带来草率的编码技术,因为初学者不了解“引擎盖下”发生了什么。他还列举了脚本语言通常如何导致程序员忽略效率,内存管理,操作复杂性等问题的其他示例。 我认为低级语言对于某些人来说可能太多了,他们可能会在对编程产生浓厚兴趣之前就放弃了。当我开始学习我的第一门编程语言(C)时,我转向了指针并放弃了,因为概念太难了(以我的辩护,我才14岁)。如果不是Java,那么我可能还没有成为程序员!如果我从简单的语言开始,然后再深入研究,我会感到自己不会放弃,而且我会学到与C一样多的东西。 全班讨论之前,课程结束。 至此,我一直在鼓吹说,初学者应该从脚本语言开始,然后再深入研究。但是在讨论之后,我开始怀疑这是否是错误的想法。 那么,脚本语言对初级程序员有什么影响?

14
编程语言的性能降低真的是一件坏事吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 这是我的看法。 有机器码,这是计算机运行某件事所需要的全部。计算机不在乎编程语言。对他们来说,机器代码来自Perl,Python还是PHP都无关紧要。编程语言不适用于计算机。他们为程序员服务。 一些编程语言的运行速度比其他语言慢,但这不一定是因为它们有问题。在许多情况下,这是因为它们可以执行程序员原本必须要做的更多工作(即内存管理),并且通过执行这些事情,他们在应做的工作中会更好-为程序员服务。 那么,编程语言的性能降低真的是一件坏事吗?


3
修改第三方代码后,我是否应该将自己纳入作者范围?
在第三方代码(无论是简单的要领还是整个库)中进行一些调整或修正是一种常见的做法。但是,其中许多代码都有自己的许可规则,并最终在每个文件上带有版权信息的标头上也很常见。 进行了这些修改之后,下一步该怎么做?保持许可证信息不变,还是尝试使用诸如@author或@revision标签之类的内容来更新它? 另一个常见的问题是更改第3方名称空间/程序包以使其适合您的项目约定。某些许可证类型在其许可证栏中包含此类信息,我可以自由更改吗? 我知道这些问题的答案取决于每种许可证类型,因此让我的问题更具体... 考虑到通用许可规则(通常它们在次要方面是不同的,对吗?),在道德上(或至少允许)我自由地向许可块添加有关修改的信息,也许还修改了我在代码中如何引用它(例如YACorp.YALib用作Utils.YALib)?

9
哪些静态类型的语言支持函数返回值的交集类型?
初步说明: 经过几次修改后,这个问题才得以解决,因为我缺乏适当的术语来准确说明我要寻找的内容。然后,Sam Tobin-Hochstadt发表了一条评论,这使我确切地知道了这是什么:支持函数返回值的交集类型的编程语言。 既然问题已经重新提出,我已经决定通过(希望)更精确的方式重写它来改进它。因此,下面的某些答案和注释可能不再有意义,因为它们是指先前的编辑。(在这种情况下,请参阅问题的编辑历史记录。) 是否有支持功能返回值的交集类型的流行的静态和强类型编程语言(例如Haskell,通用Java,C#,F#等)?如果是这样,那又如何? (老实说,我真的很希望看到有人演示一种如何使用主流语言(例如C#或Java)来表示交集类型的方法。) 我将使用一些类似于C#的伪代码给出一个简短的示例,说明交集类型的外观: interface IX { … } interface IY { … } interface IB { … } class A : IX, IY { … } class B : IX, IY, IB { … } T fn() where T : IX, IY { return … ? …

3
等待需求时对草率代码进行低影响的重构和代码清理
我继承了一个草率的产品的现有代码库。基本设计严重不足,不幸的是,如果没有完整的重构,我将无能为力(高耦合,低内聚,猖ramp的代码重复,没有技术设计文档,集成测试而不是单元测试)。该产品具有悠久的历史,对关键的“现金牛”客户敞口高,对风险的承受力最小,将使希腊人脸红的技术债务,非常庞大的代码库和复杂性,以及之前团队疲于奔命的错误解决方法我。 老团队跳船到另一个部门,以便他们有机会毁掉另一个项目。我很少遇到技术上无能力的项目失败,而不是项目管理失败,但这确实是其中一种。 就目前而言,我自己一个人,但我有很多时间,决定权和未来方向的自由,并且有能力从头开始建立团队来帮助我。 我的问题是,当您在功能需求收集阶段有一些空闲时间时,就对这样的项目的低影响重构收集意见。有成千上万的编译器警告,几乎所有警告都未使用的导入,未读的局部变量,没有类型检查和不安全的强制转换。代码格式是如此的难以理解和草率,以至于编码人员患有帕金森氏病,无法控制在任何给定行上按下空格键的次数。通常会打开其他数据库和文件资源,并且永远不会安全关闭它们。无意义的方法参数,执行相同操作的重复方法等。 在等待下一个功能的要求时,我一直在清理低冲击力,低风险的物品,并想知道自己是在浪费时间还是在做正确的事情。如果新功能意味着删除我之前花费时间的代码怎么办?我将开始一种敏捷方法,并且我知道这在敏捷开发过程中不断重构是可以接受和正常的。 您能想到我要添加的任何正面或负面影响吗?

8
“您将不需要它”和“现在总比没有好”如何一起玩?
当我提高设计的干燥度时,我经常发现自己拥抱“现在比没有更好”。通常,我发现我需要在其他知识体系的背景下,对一种知识建立对一个权威位置的理解。因此,我倾向于将系统设计为“现在”。 相反,尽管有一定的机会我不需要它,但这种做法仍使我提前建立了。 这两种模式如何相符? 您使用什么方法来确保它们表现良好? 您如何一起教他们又不引起混乱?

2
如何编写HTTP服务器?
如标题所示,我想编写一个HTTP服务器。我的问题是,我该怎么做?我知道这听起来很笼统,而且太“高级”,但是有一种疯狂的方法。我认为,这个问题的答案应该与语言无关。含义,无论我使用哪种语言(例如C,C ++,Java等),答案都应该相同。我对这应该如何工作有一个大致的了解: 打开端口80上的套接字。 等待客户提出请求。 阅读请求(即此人想要页面“ contact-us.html”)。 查找并阅读“ contact-us.html”。 发送html标头,然后发送“ contact-us.html”的内容 完成 就像我说的那样,我相信这是过程,但是我不确定100%。这使我想到了问题的核心。一个人如何或在哪里找到此信息? 如果我不想只写HTTP服务器怎么办,如果我不想写FTP服务器,聊天服务器,图像查看器等怎么办?一个人如何找到创建可用的HTTP服务器所需的确切步骤/过程? 一位同事告诉我有关html标头的信息,所以没有他我再也不会知道这一点。他还说了一些有关将每个请求移交给新线程的内容。是否有一些有关工作原理的大书?是否有使用HTTP服务器所需的一些手册? 我尝试谷歌搜索“ HTTP服务器如何工作”,但我只能找到针对普通百姓的答案,而不是针对希望对HTTP服务器进行编程的人。

4
如何为GUI编写可维护的而不是脆弱的单元测试?
我尝试为我的GUI应用程序编写UI单元测试,但我遇到的问题是,尽管在我最初编写它们时它们可以很好地工作,但是它们却很脆弱,并且每当设计更改时(即经常)它们就会损坏。我正在努力寻找一套指导方针,以使我能够进行GUI的可维护单元测试。 就目前而言,我发现的一件事是,测试表明“该组件应在某处显示其输入数据”是很好的(并且使用HTML非常容易)。检查组件特定部分的特定状态的测试通常很脆弱。试图遵循用户行为和基本业务逻辑(这是最重要的部分)的测试,如单击-单击-单击-预期,通常会变得很脆弱。如何编写好的测试? 更精确地说,我想了解一些模式有什么可我在UI测试,不完全是如何对其进行测试。命名约定和固定标识符很好,但是不能解决核心问题,即GUI发生了很大变化。我想测试最不可能改变的行为。如何找到合适的东西进行测试?


8
Chromebook-程序员有兴趣吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 Google 昨天(2011年5月11日)发布了Chromebook。虽然这当然是一件好事,但我不知道为(非JavaScript)程序员买一个是否有趣。 你怎么看?例如,云中是否会有Java IDE?命令行,甚至?

8
在大型编程团队中工作感觉如何?
我一直很幸运能在一个小型编程团队中工作。我认为与我合作最多的是11位程序员。与数百名开发人员一起进行项目是什么感觉?几千?什么可以缩放,什么不可以? 编辑:感谢您的所有答复!似乎很少有积极的方面: 可以在大型代码库上工作 更好的内部职业发展 员工免受滥用管理的保护(小级别上的-ve大于大级别上的+ ve) 大型团队还有其他好处吗?

5
否则-重复代码逻辑
老板给了我一个具有特定逻辑的项目。我必须开发一个网页,该网页必须带领导航员处理很多情况,直到他/她找到产品为止。 这是站点中导航的路径方案: 重要! 在产品页面中,导航器可以选择他想要的过滤器。 如果是A,则他/她必须通过B(然后是C)或C,然后到达产品。 如果是B,则他/她必须经过C并到达产品。 如果为C,则他/她直接到达产品。 当然,如果我从AI开始走的是最长的路,当我到达产品时,我将拥有3个有源滤波器。 到目前为止,我开发了下面的代码,效果很好。 if filter_A if filter_B filter_C() .. else .. else filter_C .. else .. else if filter_B filter_C() .. else .. else filter_C() .. else .. 我在这里问一个更专业的程序员在这种情况下会做什么。我不尊重DRY原理,我不喜欢它,我想知道开发这种逻辑的另一种方法。 我曾考虑过将代码的每个部分拆分为函数,但是在这种情况下,这是一个好主意吗?

2
哪个更好:一堆吸气剂或带有选择字符串参数的1个方法?
我们的知识领域涉及人们赤脚行走在压力记录板上。如果在传感器数据中识别出人脚,我们会进行图像识别,从而产生“脚”类对象。 必须对脚的数据执行一些计算。 现在,哪种API更好: class Foot : public RecognizedObject { MaxPressureFrame getMaxPressureFrame(); FootAxis getFootAxis(); AnatomicalZones getAnatomicalZones(); // + similar getters for other calculations // ... } 要么: class Foot : public RecognizedObject { virtual CalculationBase getCalculation(QString aName); // ... } 现在,我可以提出很多优点和缺点,但是我不能真正决定哪个最重要。请注意,这是最终用户应用程序,而不是我们出售的软件库。 有什么建议吗? 第一种方法的一些专家可能是: 吻-一切都非常具体。API,但实施也是如此。 强类型返回值。 从此类继承是万无一失的。什么都不能覆盖,只能添加。 API是非常封闭的,什么都不会进入,什么都不能被覆盖,所以更少的地方会出错。 一些缺点: 随着我们发明的每一项新计算都被添加到列表中,吸气剂的数量将会增加 API更可能会更改,如果引入了重大更改,我们需要一个新的API版本,即Foot2。 如果在其他项目中重复使用该类,我们可能不需要进行所有计算 …

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.