programming-languages相关内容

检查是否为空是一种好的做法还是坏的做法?

我见过这样的代码,其中几乎所有应用层中的每个变量都被检查为不是null。我也看到过几乎没有这个的代码。 if(object != null){} 检查变量是否为空的最佳实践是什么?得到NullPointerException真的是一件坏事吗?这一切null检查是否可能是您的应用程序运行状况不佳的症状? 推荐答案 最好显式检查是否为空,因为: 您可以更早地捕获错误。 您 ..
发布时间:2022-07-15 09:06:14 Java开发

为什么有些语言要求在调用之前在代码中声明函数?

假设您有这个伪代码 do_something(); function do_something(){ print "I am saying hello."; } 为什么某些编程语言要求对do_omething()的调用出现在函数声明的下方才能运行代码? 推荐答案 编程语言使用符号表保存源代码中使用的各种类、函数等。一些语言在一次循环中编译,因此一旦符号被使用,就会从符 ..

语境敏感的标记化是否需要词汇语法中的多个目标符号?

根据ECMAScript spec: 在几种情况下,词汇输入的识别 元素对句法语法上下文敏感,即 使用输入元素。这需要多个目标符号 词汇语法。 两个这样的符号是InputElementDiv和InputElementRegExp。 在ECMAScript中,/的含义取决于它出现的上下文。根据上下文的不同,/可以是除法运算符、正则表达式文字的开始或注释分隔符。词法分析器本身无法区分 ..

作为运算符的邻接--任何lexer都可以处理它吗?

假设一种语言将两个数学Unicode字母数字符号的邻接定义为一个运算符。比方说,𝑥𝑦+1表示𝑥%adj𝑦+1,其中%adj表示运算符邻接定义的任何内容,在本例中为乘法。我在想,现有的任何词汇分析工具都能处理这个问题吗? 推荐答案 不可见运算符无法通过词法分析识别,原因应该或多或少是显而易见的。您只能通过分析语法上下文来推断是否存在不可见运算符,这是解析器的角色。 当然,大多数 ..
发布时间:2022-04-10 18:00:20 其他开发

PHP中看起来像多态的东西真的是多态吗?

试图弄清楚 PHP 是否支持方法重载、继承和多态等特性,我发现: 不支持方法重载 它确实支持继承 但我不确定多态性.我在网上搜索到了这个: 我应该注意到,在 PHP多态性不是它的方式应该.我的意思是它确实有效,但由于我们有一个弱数据类型,它的不正确. 那么真的是多态吗? 编辑只是不能在 PHP 支持多态 旁边放置一个明确的“是"或“否".我不愿意说:“PHP 不支持 ..
发布时间:2022-01-24 16:20:32 PHP

所有的迭代算法都可以递归表达吗?

如果没有,是否有一个很好的反例来说明不存在递归对应的迭代算法? 如果是所有迭代算法都可以递归表示的情况,有没有更难做到的情况? 另外,编程语言在这一切中扮演什么角色?我可以想象,与纯 Java 程序员相比,Scheme 程序员对迭代(=尾递归)和堆栈使用有不同的看法. 解决方案 对此有一个简单的临时证明.由于您可以使用严格的迭代结构构建图灵完备语言,而仅使用递归结构构建图灵完备 ..

VB 和 VB.NET 有什么区别?

VB 和 VB.NET 有什么区别? 最好有例子说明. 解决方案 如果您正在为一个新项目做出选择,那么相关点是: VB6 是旧版(1998 年发布,不再支持 IDE,并且运行时仅支持 Win8 的生命周期) VS2008 不支持 VB6 VB.NET 是一种现代语言,在 VS2008 中得到支持 我想说选择 VB.OLD 而不是 VB.NET 的理由很少(如果有的话! ..
发布时间:2022-01-20 19:12:01 C#/.NET

Java - 为什么没有基于返回类型的方法重载?

我知道这是不可能的,但是谁能提供一个理论来解释为什么 Java 选择不支持这个?我之所以问,是因为我刚刚遇到了一种情况,我认为拥有它会很好. 解决方案 因为Java中不需要捕获方法的返回值,在这种情况下编译器无法决定使用哪个重载.例如 boolean doSomething() { ... }int doSomething() { ... }做一点事();//调用哪一个??? ..
发布时间:2022-01-19 14:36:49 Java开发

MS Access 编程概述

我是一名 Java EE 开发人员,刚刚有人联系我,希望我为他的业务应用程序提供报价,该应用程序可以与他们的 MS Access“后端"集成. 我希望发表这篇文章,只是对 MS Access 编程所涉及的最佳实践进行一般高级概述.我假设该程序将完全在 VB 中,但不知道我是否可以选择在 VB.NET 或(最好)C# 中编写一些东西. 另外,我鄙视表示层:任何用于 Access 应用程序 ..
发布时间:2022-01-19 12:31:56 其他开发

switch 语句的运行时复杂度是多少?

假设您有 n 个案例,我想知道 switch 语句的最坏情况运行时复杂度是多少. 我一直认为它是 O(n).不过,我不知道编译器是否会做任何聪明的事情.如果答案是特定于实现的,我想知道以下语言: Java C/C++ C# PHP Javascript 解决方案 最坏的情况是 O(n).有时(这取决于语言和编译器),它转换为跳转表查找(对于没有太大大小写范围的“好"开关 ..

没有“编译语言"之类的东西.或“解释语言"

“没有所谓的“编译语言"或“解释语言".语言实现者选择编写编译器、解释器还是两者之间的任何东西都是实现细节,与语言无关." 以上说法属实吗? 解决方案 是的,严格的解释是正确的.您可以找到 C++ 解释器 和 Javascript 编译器,例如.但是,您会发现某些类型的语言(例如静态类型)非常适合本机代码编译.其他语言(例如动态类型)通常使用字节码编译结合虚拟机执行环境来实现. ..

为什么我们需要前缀、后缀表示法

我知道如何将它们相互转换,但从未真正了解它们的应用程序是什么.通常的中缀操作可读性很强,但是它在哪里失败导致了前缀和后缀表示法的开始 解决方案 中缀表示法对于人类来说很容易阅读,而前/后缀表示法对于机器来说更容易解析.前置/后置表示法的一大优势是永远不会出现诸如运算符优先级之类的问题. 例如,考虑中缀表达式1 # 2 $ 3.现在,我们不知道这些运算符的含义,因此有两种可能的对应后缀 ..

为什么解释的语言大多是鸭式的,而编译的语言有强类型?

我只是不知道,这有什么技术原因吗?为弱类型的语言实现编译器是否更难?这是什么? 解决方案 问题背后的前提有点狡猾.解释语言大多是鸭式的,这是不正确的.编译语言大多具有强类型是不正确的.类型系统是一种语言的属性.编译与解释是实现的属性. 例子: Scheme 是动态类型的编程语言(又名鸭子类型),它有许多解释实现,但也有一些优秀的本地代码编译器,包括 Larceny、Gambit ..

.NET 中类加载器的等价物

有谁知道是否可以在 .NET 中定义等效的“java 自定义类加载器"? 提供一点背景: 我正在开发一种以 CLR 为目标的新编程语言,称为“Liberty".该语言的特点之一是它能够定义“类型构造函数",这是由编译器在编译时执行并生成类型作为输出的方法.它们是泛型的一种概括(该语言中确实有普通的泛型),并允许编写这样的代码(以“Liberty"语法): var t as tuple ..

无意中使用 = 而不是 ==

好像 if (x=y) { .... } 而不是 if (x==y) { ... } 是万恶之源. 为什么不所有编译器将其标记为错误而不是可配置的警告? 我有兴趣找出构造 if (x=y) 有用的情况. 解决方案 大多数时候,编译器都在努力保持向后兼容. 改变他们在这件事上的行为以引发错误将破坏现有的合法代码,甚至开始引发有关它的警告也会导致自动系统出现问题,这些 ..
发布时间:2022-01-17 08:08:40 C/C++开发

C# 空语句

C# 语言规范定义了 empty-statement 语法产生,它允许我做这样的事情: static void Main(string[] args){;;;} 为什么 Microsoft 会在 C# 语言中包含这种语法生成?它有什么有用的用途吗? 解决方案 while (GetWhitespace(textStream)); ..
发布时间:2022-01-17 00:08:10 C#/.NET

“引擎"和“引擎"有什么区别?和“框架"?

我听说这些术语似乎可以互换使用,所以我有点不清楚.请举出例子. 解决方案 这些术语和其他术语看起来非常相似.它们是从概念的角度命名的,因此可以定义如下: “框架"是您构建实际应用程序的“基础"或“支撑结构"..NET Framework 不仅包括一个基础(CLR),还包括一系列提供标准化功能的库,否则您必须自己实现这些功能.其他框架或基础提供更具体的支持领域,例如 UI、数据存储、客 ..
发布时间:2022-01-16 20:28:35 其他开发

如何创建文件格式?

我一直在阅读一些文件格式方面的内容,并且对它们非常感兴趣.我想知道创建格式的过程是什么.例如,.jpeg、.gif 或音频格式.你会使用什么编程语言(如果你使用编程语言的话)? 该网站警告我,这个问题可能会被关闭,但这只是我在追求知识时会冒的风险.:) 解决方案 您不需要编程语言来编写文件格式的规范,尽管文字处理器可能被证明是一种方便的工具. 基本上,您需要决定如何将文件的信息 ..
发布时间:2022-01-15 10:47:46 其他开发