Questions tagged «language-agnostic»

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

6
我怎么说编程语言可以编译成其他语言?
我怎么用英语说可以将编程语言编译成其他编程语言? 示例可以是Haxe。在网站上,该语言被称为“ Multiplatform”: 多平台:Haxe可以通过其快速编译器编译为所有流行的编程平台-JavaScript,Flash,NekoVM,PHP,C ++,C#和Java(很快) 但是多平台可能被误解为硬件或软件平台(win,mac,linux)。 那么最能描述这个能力的词是什么?

2
是否可以创建独立于原始解释程序的“自举”解释程序?
根据Wikipedia的说法,在编写编译器的上下文中,“引导”一词的含义是: 在计算机科学中,引导程序是使用要编译的源编程语言编写编译器(或汇编器)的过程。应用此技术将导致自托管编译器。 我可以理解这将如何工作。但是,对于口译员来说,故事似乎有些不同。现在,当然可以编写自托管解释器了。那不是我要的 我实际上要问的是:是否可以使自托管翻译器独立于原始的第一翻译器。为了解释我的意思,请考虑以下示例: 你写在你的语言翻译的第一版本X和解释是为正在创建一个新的语言,称为ÿ。首先,您使用X语言的编译器来创建可执行文件。现在,您可以使用以语言X编写的解释器来解释以您的新语言Y编写的文件。 现在,据我所知,要能够“引导”您使用语言X编写的解释器,您需要使用语言Y重写该解释器。但这很重要:即使您确实使用语言Y重写了整个解释器,仍然需要使用语言X编写的原始解释器。因为要使用语言Y运行解释器,所以您将不得不解释源文件。但是,究竟该如何解释源文件呢?好吧,当然不能没有什么,所以您被迫仍然使用第一个解释器。 不管您用语言Y编写了多少新的解释器,您始终将必须使用用X编写的第一个解释器来解释后续的解释器。仅仅由于口译员的性质,这似乎是一个问题。 但是,另一方面,这篇关于口译员的Wikipedia文章实际上讨论的是自托管口译员。这是一个相关的小摘录: 自解释器是用一种可以解释自身的编程语言编写的编程语言解释器;一个例子是用BASIC编写的BASIC解释器。自解释器与自托管编译器有关。 如果不存在用于要解释的语言的编译器,则创建自解释器需要使用宿主语言(可以是另一种编程语言或汇编程序)来实现该语言。通过拥有这样的第一个解释器,系统将被引导,并且可以使用语言本身开发新版本的解释器 不过,对于我来说仍然不清楚如何完成此操作。看来,无论如何,您总是被迫使用以宿主语言编写的解释器的第一个版本。 现在,上面提到的文章链接到另一篇文章,其中Wikipedia提供了一些假定的自我托管解释器的示例。经过仔细检查,似乎许多这些自托管解释器(尤其是一些较常见的解释器,例如PyPy或Rubinius)的主要“解释”部分实际上是用其他语言编写的,例如C ++或C。 那我上面描述的可能吗?自托管口译员可以独立于其原始主机吗?如果是这样,将如何精确地做到这一点?

5
非平凡的条件语句是否应移至循环的初始化部分?
我从stackoverflow.com上的这个问题中得到了这个主意 以下是常见的模式: final x = 10;//whatever constant value for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) { //...do something } 我要说明的一点是条件语句有些复杂,不会改变。 这样,是否最好在循环的初始化部分中声明它? final x = 10;//whatever constant value for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) { //...do something } 这更清楚吗? 如果条件表达式很简单怎么办 final …



5
Tennent的函授原理有什么好的解释?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我发现自己在努力了解该原理是什么,为什么对语言设计如此重要。 基本上,它指出,对于expr语言中的每个表达式,都应与此结构完全相同: (function () { return expr; })() 另外,我听说Ruby遵循了这一原则,而Python则没有。我不明白为什么这是真的,或者根本不是真的。

9
有什么好的技术可以保持您在代码中的位置?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我了解使用书签来记住代码中的单个点。但是,如何跟踪他们正在研究的代码流?例如:多个书签及其制作顺序。 例: 错误报告:“碰撞不在墙角上起作用” 错误的再现将其归结为某些不会碰撞的多边形。 冲突代码是由不可用的开发人员编写的。因此调查如下: 在调查期间,尤其是在审查诸如Google之类的非代码项目时,可能会合理地期望人们放弃它们在代码中的位置(我是否已经查看过此代码路径?或者我正在调查哪个代码路径?到此功能等)。不可避免的中断也是如此(老板:我现在需要[Lengthy Pointless Report]等) 拥有一种技术或工具资源来提供一种跟踪代码中位置的方法将非常有用。 编辑:上面的示例仅供参考,而不是需要回答的实际问题。 表达这个问题的另一种方法是: 在学习新系统时,如何跟踪学习代码的方向?这不是要了解代码为什么要执行其工作(即应使用注释),而是要了解其如何执行(仅通过阅读代码而不是注释来学习)。

11
OOP是现实世界中占主导地位的编程模型吗?
对象永不?好吧,几乎没有 在ACM通讯的VIEWPOINT部分中,我找到了一篇有趣的文章,标题为“ Objects Never?Well,Hardever Ever ”。这与“对象优先”或“对象迟”的观点截然不同。他建议“从不设对象”或“由对象开设研究生院”。 作者讨论了OOP,并提出了有关在现实世界编程环境中如何使用OOP的问题。他认为OOP不是主要的编程模型。他声称,例如,有70%的编程是针对OOP不太适合的嵌入式系统完成的。 当一些大学的教授想谈论OOP的好处时,他们谈论的是代码重用。他又说,作为另一个例子,这不是现实世界中的真实情况。重用代码比大学声称的要难: 我声称使用OOP并不像大多数人所相信的那样普遍,它不如其支持者所声称的那样成功,因此,没有理由证明它在CS课程中的中心地位。 我很高兴知道堆栈溢出中的人们对此有何看法?从程序员的角度来看,OOP是占主导地位的编程模型吗? 如果我应该只选择/学习/使用一种方法,那么它是否是面向对象的?为什么?

10
语言不可知编程书籍[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 是否有任何与语言无关的优秀编程或软件开发书籍?我为什么要读它?

1
如何测试文件阅读器?
我正在一个具有几种文件格式的项目。某些格式由.xsds指定,其他格式由各自网站上的文档指定,而某些格式是自定义的内部格式,没有文档。姆哈哈哈哈哈 有什么问题? 我想测试我的文件阅读器,但是我不确定如何去做。应用程序的流程是这样的: file.___ ===> read by FileReader.java ===> which creates a Model object FileReader接口在哪里 public interface FileReader { public Model read(String filename); } 在Model拥有一批在读文件已填充属性。看起来像 public class Model { List<String> as; List<String> bs; boolean isAPain = true; // ... } 我尝试了什么? 我唯一的想法是为每种文件格式创建文件“生成器”。这些生成器基本上是生成器,它们接受一些变量(例如,要在文件中生成的注释数量),并输出一个样本文件,然后我将其读入并将结果Model与我最初用于生成文件的变量进行比较。 但是,这有一些问题: 它生成的文件看起来不像真实文件。生成器绝不了解上下文。 由于我是手动设置变量的生成器,因此很难识别生成器是否针对边缘情况生成了。这种方法仅比我创建十几个示例文件更好。 有没有更好的方法可以做到这一点? 编辑:将单元更改为集成,因为这实际上是我的意思。 EDIT2:这是我提到的边缘案例的示例。 每个文件代表一个由顶点和边组成的图形。这些顶点和边可以以不同的方式连接,因此: v1 …

4
为您雇用的软件创建开源替代品是否合乎道德?
假设您被雇用来创建教育软件,该软件将出售给特定学术机构的学生。您是唯一从事此项目的开发人员,并且已经编写了所有代码。该项目的开源替代方案有潜力使世界各地的贫困学生受益。简而言之,一种自由的选择将有助于人类的更大利益。为您要付费开发的软件创建开源替代方案是否“ OK”? PS该软件仅由该机构的学生使用。没有计划将其商业发行。该应用程序不利用他人的知识产权。

6
2011年的C编程
已关闭。这个问题需要更加集中。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 许多个月前,我削减了C代码为生,主要是在维护支持各种操作系统(Linux,* BSD,HPUX,VMS等)的POP3服务器的同时。 我计划通过使用C语言编写简单的FORTH来提高我的C语言技能,并学习一些有关语言实现的知识。 但是我想知道自2000年以来C世界中的事情如何(或是否发生了变化)。当我想到C时,我认为... comp.lang.c 尽可能使用ANSI C(但C89和C99并未得到广泛支持) gcc -Wall -ansi -pedantic 代替静态分析工具 埃马克斯 标签 Autoconf + make(有关VMS,HP-UX等优点,请参见第2点) 在过去的11年中一直用C编写的任何人都可以让我知道这些年来发生了什么变化(如果有的话,-)。 (在其他新闻中,我已经做了十多年了)。

6
我们如何将(分层)文件系统作为基本数据结构?
我是自学成才的,没有CS学位。在这个时代,我对数据结构的了解越多,我就越想知道,我们如何仍将文件系统,目录和文件作为OS上的基本数据存储结构? 我了解它的简单性,但如今看来,可能会有更多本机可用的选项。据我所知,唯一改善文件系统基本功能的项目是ReiserFS,您可以在其中知道文件的哪一行由谁以及何时更改。 例如,如果我可以对文件进行本机标记,则可以在其中标记图像,图表,文字处理文档,整个代码存储库,这些都属于一个项目,这对我真的很有帮助。由于我陷入了文件系统范式中,所以我知道可以将所有这些文件放到一个文件夹/目录中,但是如果它们已经存在于不同的目录中并且需要留在那儿呢?我知道那里有可以做到这一点的程序,但是为什么它们不在文件系统上? 很好的东西是文件系统中的某种关系功能,就像使用RDBMSes一样。我知道那应该是Vista / 7的一部分,但是那也不属于功能列表。 当然,任何程序都可以存储二进制文件并在其中具有任何数据结构,为什么操作系统除了文件系统的简单体系结构之外,不能提供更复杂的数据存储方式?

6
我真的需要一个单元测试框架吗?
目前,我的工作是为C ++应用程序提供大量的单元测试。但是,我们不使用单元测试框架。他们只是利用了一个C宏,它基本上包装了一个断言和一个cout。就像是: VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << __FILE__ << "," << __LINE__; asserst(false)} 然后,我们只需为每个测试创建函数,例如 void CheckBehaviorYWhenXHappens() { // a bunch of code to run the test // VERIFY(blah != blah2); // more VERIFY's as needed } 我们的CI服务器会选择“单元测试失败”,并且构建失败,并通过电子邮件将消息发送给开发人员。 如果我们有重复的设置代码,我们可以像在生产中使用的任何其他重复代码一样简单地对其进行重构。我们将其包装在辅助函数的后面,使一些测试类包装设置常用的场景。 我知道那里有CppUnit和boost单元测试之类的框架。我想知道这些增加了什么价值?我想念这些带来的好处吗?我可以从中受益吗?我不愿意添加一个依赖项,除非它增加了实际价值,尤其是因为看起来我们拥有的东西简直太简单了并且运作良好。

8
以图形方式布置GUI是否应视为“作弊”?
我有一个朋友,我的编程经验略多。我们谈论的是我们使用的所有不同编程技术,而Interface Builder也在讨论中。 作为的,除了我所教自己没有编程背景下,我个人认为,IB和它所有的功能(IBOutlets,IBActions)我的技术水平的帮助编码器(和所有的技能水平,对于这个问题),在更短的时间他们的完整的项目。 他对IB的看法有点热情。他认为,使用Interface Builder的编码人员在“作弊”,因为他们不必手工布置接口。 题: 使用GUI构建器布置界面元素是否应该被认为是“作弊”(因为大多数程序最初都要求通过手工编写界面布置界面)?为什么?

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.