是一个无依赖性的Python SQL分析器、转置器、优化器和引擎。它可以用来格式化SQL或在18种不同的方言之间进行翻译,如Du

是一个无依赖性的Python SQL分析器、转置器、优化器和引擎。它可以用来格式化SQL或在18种不同的方言之间进行翻译,如DuckDB、Presto、Spark、Snowflake和BigQuery。它的目的是读取各种各样的SQL输入并在目标方言中输出语法正确的SQL。 它是一个非常全面的通用SQL分析器,有一个强大的测试套件。它在纯粹用Python编写的同时,还具有相当高的性能。 你可以轻松地定制解析器,分析查询,遍历表达式树,并以编程方式构建SQL。 语法错误会被高亮显示,方言不兼容会根据配置的不同而发出警告或提示。然而,应该注意的是,解析器在检测错误时是非常宽松的,因为它的目的是尽可能多地消耗SQL。一方面,这使得它的实现更简单,从而更容易被理解,但另一方面,这意味着语法错误有时可能会被忽略。

相关推荐

封面图片

注重性能的Python版SQL解析器,适用于SQL格式化、执行和分析,致力于成为性能最优的解析工具

注重性能的Python版SQL解析器,适用于SQL格式化、执行和分析,致力于成为性能最优的解析工具 具有如下 3 个主要特性: 1.词法解析器与语法解析器相互独立,支持插件开发 2.使用单一状态机实现词法解析,避免大量正则表达式的复杂逻辑 3.除包含并列关系的节点外(例如 ORDER BY 多个字段),抽象语法树为完全的、根据计算优先级嵌套的一元和二元表达式结构 metasequoia-sql 包含词法树解析(lexical 模块)、语法树解析(core 模块)和语法树分析(analyzer 模块)等主要功能。 | #工具

封面图片

《Beyond the Basic Stuff with Python》

《Beyond the Basic Stuff with Python》 超越 Python 的基本内容:编写简洁代码的最佳实践 内容包含编码风格、常见错误、Cookiecutter 模板工具、函数式编程技术、Big-O 算法分析等等 ​​​ 你会学到: 编码风格,以及如何使用 Python 的 Black 自动格式化工具来获得更清晰的代码 错误的常见来源,以及如何使用静态分析器检测它们 如何使用 Cookiecutter 模板工具构建代码项目中的文件 函数式编程技术,如 lambda 和高阶函数 如何使用 Python 的内置 timeit 和 cProfile 模块分析代码的速度 Big-O 算法分析背后的计算机科学 如何让你的评论和文档字符串提供信息,以及多久写一次 如何在面向对象编程中创建类,以及为什么使用它们来组织代码 在本书的末尾,你将阅读两个经典命令行游戏的详细源代码分解,汉诺塔(逻辑谜题)和四人行(两人游戏) ),以及他们的代码如何遵循本书最佳实践的细目。你将通过自己实施该程序来测试你的技能。 当然,没有任何一本书可以使您成为专业的软件开发人员。但是,《Beyond the Basic Stuff with Python》会让你在这条道路上走得更远,并在学习编写易于调试且完美 Pythonic 的可读代码的过程中使你成为更好的程序员。 | #电子书 #Python

封面图片

《python编译器v10.3.1免费版_.apk》

《python编译器v10.3.1免费版_.apk》 简介:Python编译器v10.3.1免费版是一款功能强大的移动端Python开发工具,支持代码编辑、调试和运行,适合初学者和开发者随时随地学习和实践Python编程。 亮点:轻量高效,支持多种Python库,提供智能代码提示和错误检测,让编程更便捷。 标签:#Python编程 #移动开发 #代码调试 #Python编译器 #安卓应用 更新日期:2025-04-28 23:41:21 链接:https://pan.quark.cn/s/8844dca57bfa

封面图片

新技术让N64游戏轻松移植原生PC 不再需要模拟器

新技术让N64游戏轻松移植原生PC 不再需要模拟器 现在,据称一项新技术能够轻松将 N64 游戏移植为原生 PC 的 .exe 运行文件。目前最成功的就是经典的游戏《塞尔达传说:梅祖拉的面具》已经被成功移植,原生支持 Windows 和 Linux 系统。不仅不需要模拟器,而且更高帧率还能支持高刷新率屏幕和超宽屏,可自定义按键、可调节分辨率,以及自动存档!不仅仅是这一款游戏,未来几乎所有 N64 游戏都将可以通过这个由 Wiseguy 的新工具变为原生 Linux 和 Windows 应用!该工具的原理是将 N64 二进制文件静态重新编译为 C 代码,然后就可以将其移植至任何平台原生支持。他甚至让臭名昭著的“粪作”《超人64》都能在 PC 上运行。而且需要注意的是,虽然你现在就可以前往 GitHub 下载 N64 重新编译工具,但是它依然是需要 ROM 的,因为它并不包含游戏本体。不过另一方面来说,这也是件好事,因为它避免了任天堂法务部的警告信。Wiseguy 还表示,N64 的光线追踪和纹理升级包也即将推出。 ... PC版: 手机版:

封面图片

ChatGPT无法取代人类程序员:IEEE35页论文测出困难编码正确率仅为0.66%

ChatGPT无法取代人类程序员:IEEE35页论文测出困难编码正确率仅为0.66% 其成功率从0.66%到89%不等,这主要取决于任务的难度、编程语言等多种因素。论文地址: Tang指出,“AI代码生成一定程度上,可以提升开发效率,自动化软件工程。然而,我们必须认识这类模型优势和不足,以便合理应用”。“通过全面的分析,可以发现ChatGPT生成代码过程中,出现的潜在问题和局限性,进而改进生成技术”。有网友庆幸地发出疑问,所以我还没有被解雇?另一人对此表示,至少不是今天。还有人指出,这项研究是关于GPT-3.5的评估。要是GPT-4早就在编码能力上大幅提升,Claude 3.5更是如此。确实,现在我们有了更好的模型,对于GPT-3.5模型的评估,并没有太大的意义。0.66%-89%,惊人反差率总体而言,ChatGPT在不同编程语言的问题上表现相当不错特别是在尝试解决2021年之前LeetCode上的编码问题时。例如,它能够为简单、中等和困难的问题生成可运行代码,成功率分别约为89%、71%和40%。然而,当涉及到2021年之后的算法问题时,ChatGPT生成正确运行代码的能力受到影响。即使是简单级别的问题,它有时也无法理解问题的含义。比如,ChatGPT在生成“简单”编码问题的可运行代码方面的能力,在2021年后从89%下降到52%。而它在生成“困难”问题的可运行代码方面的能力也在此时间后从40%下降到0.66%。Tang对比表示,“一个合理的假设是,ChatGPT在2021年之前的算法问题上表现更好的原因是这些问题在训练数据集中经常出现”。接下里,具体看看研究者们对ChatGPT进行了哪些方面的评估。实验评估评估的整体流程如图2所示。首先为给定的LeetCode问题或CWE场景构造合适的提示并发送给ChatGPT,让它根据提示和上一轮对话的上下文信息给出响应。之后,研究人员将模型响应中的代码片段提交给LeetCode平台,利用其在线判断功能来检验代码的正确性,CWE漏洞则使用CodeQL进行手动分析。如果测试结果通过,则生成结束,否则就需要利用LeetCode和CodeQL的反馈继续建立新的提示、输入给ChatGPT,再次进行代码生成。如果ChatGPT在对话轮数限制(5轮)之内始终没有生成出通过测试的代码,则认为生成任务失败。功能性正确代码生成ChatGPT生成的代码在功能上是否正确?研究动机:给定提示,ChatGPT生成相应的文本,这种能力可能会提高开发者的生产力。首先去评估ChatGPT在单轮对话中,自动生成功能正确代码的能力。研究方法:- 让ChatGPT阅读问题描述,在单轮对话中生成相应代码。(最大对话轮数设为1)- 使用LeetCode平台上的编程问题作为数据集,截止研究时,有2500个难度不等的问题。- 将LeetCode所有问题分为2021年之前(Bef.problems)和2021年之后(Aft.problems)两类,因为ChatGPT的训练数据截止于2021年。- 考虑到2021年之前的问题可能已存在于ChatGPT的训练集中,这可能使代码生成任务退化为简单的数据库查询(即代码复用)。为了进行全面评估,研究中同时考虑了这两类问题。具体而言,研究人员重点关注LeetCode上的算法问题,因为算法问题是该平台上最重要、最多和最多样化的问题。Bef.problems和Aft.problems的总数分别为1624个和354个。此外,两者的难度分布为难、中、易,比例为1:2:1。在所有Bef.problems中,作者随机抽取了374个问题,其数量与Aft.problems相似,难度分布也与Aft.problems相同。同样,在354个Aft.problems和Bef.problems中,难、中、易问题的数量比例也是1:2:1,与LeetCode平台上所有问题的难度分布一致。此外,研究人员还检查了Bef.problems和Aft.problems之间是否存在显著差异。如果Aft.problems只是Bef.problems的重构,那么ChatGPT很可能可以轻松解决这些问题,这可能会影响实验结果在区分时间段方面的可靠性。论文中,作者总共找到了142对问题。然后,再让2名研究生独立检查这些问题对。通过仔细核对和讨论,结果发现这些相似的问题要么情景相似,但求解目标完全不同;要么情景和条件不同,但可以使用类似的算法(如动态编程)求解。经过仔细的人工分析,作者没有发现在任何情况下,Bef.problems可以很容易地重新表述为Aft.problems。因此,作者认为Aft.problems和Bef.problems之外,对于每个问题,都要求ChatGPT用5种不同的语言生成代码:C、C++、Java、Python3和JavaScript。此外,他们还使用相同的提示模板为每个 < 问题、语言> 对创建了相应的提示。Bef.problems和Aft.problems分别共有1,870和1,770个提示。由于ChatGPT的查询速度有限,研究者将每条提示输入一次,要求生成代码。然后,研究者将解析后的解决方案,提交给LeetCode进行功能正确性判断,并得到提交状态,包括接受、回答错误、编译错误、超过时间限制和运行错误。它们分别对应于A.、W.A.、C.E.、T.L.E.和R.E.。一个问题对应一个唯一的对话,以避免从其他问题触发ChatGPT的推理。实验中,作者以状态率(SR)来评估 ChatGPT 的代码生成能力。其中和分别是根据状态生成的代码片段数和输入的提示数。提示:所设计的提示模板由4个部分组成:它们分别是<Content>、<Examples>、<Template>和<Command>。<Content> 用自然语言描述问题,<Examples> 显示功能正确的代码 <input, output> 对,<Template> 指定生成代码的方法签名(method signature),<Command> 要求用特定语言生成代码。结果:表1和表2显示,LeetCode对五种编程语言在两个时间段、两种形式下的代码生成结果、SR以及相应的相对频率柱形图。由于Python3和JavaScript都是动态编程语言,因此这两列不包含C.E.。从总体结果来看,ChatGPT为Bef.problems生成的功能正确代码的A.率明显高于Aft.problems。具体来说,Bef.problems的五种语言平均正确率(68.41%)比Aft.problems的(20.27%)高出 48.14%。五种语言在不同阶段的代码生成性能差异显著,P值为0.008,效应大小值为1。对于Aft.problems,总体正确率低于25%,其中难、中、易问题的正确率分别为0.66%、13.90%和52.47%。用Holm-Bonferroni校正程序调整的P值和五种语言不同难度之间的效应大小值分别小于0.05和等于1。结果表明,面对Aft.problems,随着问题难度的增加,ChatGPT在功能上正确生成代码的能力明显下降。此外,即使是简单的问题,它也只能正确回答一半。在这五项/四项指标中,W.A.率是所有语言中最高的一项,达到58%。此外,每个W.A.代码片段平均有109个测试用例,而ChatGPT生成的代码只能通过其中的25%。难题、中难题和简单难题的测试用例通过率分别为20.90%、21.03%和38.41%。因此,无论难度如何,生成代码的语义都与相应问题描述的逻辑有很大差异。此外,C.E.率和R.E.率也都达到了16%,而且难题和中难题的C.E.率明显高于简单难题。ChatGPT生成的中难题代码,更容易出现编译和运行时错误。比如,图4中显示生成的函数cmpfunc,在调用前没有声明。语法错误只占这些错误的一小部分(3.7%)。至于T.L.E.率,虽然数值不高(6%),但测试用例的平均通过率为51%,高于W.A.代码片段。T.L.E.问题的难、中、易三个难度级别的测试用例,平均通过率分别为68%、50%和1%(易问题由于其T.L.E.率接近0%,可以忽略不计)。由于T.L.E.代码片段的测试用例通过率是部分的,不过生成的代码中最多还有6%在功能上... PC版: 手机版:

封面图片

C++创始人回敬白宫安全警告

C++创始人回敬白宫安全警告 C++ 创始人 Bjarne Stroustrup 为这种已经广泛使用的编程语言进行了辩护,回应拜登政府的发布的语言安全报告,这份报告呼吁开发人员使用内存安全语言,并避免使用C++和C等易受攻击的编程语言。就在 3 月 15 日,在对技术媒体的访谈回复中,Stroustrup 指出了 1979 年设计的 C++ 的优势,包括安全保证。Stroustrup 说:“在某一方面,他们似乎已经意识到编程语言只是工具链的一部分,因此改进的工具和开发流程至关重要。”Stroustrup 还强调,安全性改进始终是 C++ 开发工作的目标。“从第一天起以及整个发展过程中,提高安全性一直是 C++ 的目标。人们只要将K&R C语言与最早的C++,拿早期的C++与当代的C++进行比较即可。他还在CppCon 2023 主题演讲中描述了这一演变:“许多高质量的 C++ 都是使用基于 RAII(资源获取初始化)、容器与资源管理指针等技术编写,而不是传统的 C 风格的混乱指针。”美国白宫在2 月 26 日发布的报告中,呼吁开发人员通过使用不存在内存安全漏洞的编程语言来降低网络攻击的风险。报告中未明确指明,但C++ 和 C 被认为是存在内存安全漏洞的语言的两个典型。美国国家安全局 (NSA)于 2022 年 11 月发布网络安全信息表,已经将 C#、Go、Java、Python 和 Rust 列为被认为内存安全的语言。美国国家安全局 (NSA) 的技术总监尼尔·齐林 (Neal Ziring)一直在投一些"真相炸弹":“内存管理问题已经被利用了几十年,并且在今天仍然非常普遍”。类似于如下代码:int main() {int *memory;// Allocate 200 ints.memory = malloc(200 * sizeof(int));// Allocate 100 more ints.// ERROR: This will compile, but will leave the previously// allocated memory hanging, with no way to access it.memory = malloc(100 * sizeof(int));// Free second block of 100 ints.// The first block is not (memory);return 0;}malloc函数的功能是分配内存。第一次使用时分配的内存永远不会被释放。如果像这样不断分配内存且从不释放,则攻击者可能能够使用它来对软件执行拒绝服务攻击,导致服务器的内存不足。在面临这样的安全报告,Stroustrup 列举了许多提高 C++ 在安全性方面的努力。“事实上存在两个与安全相关的问题。在数十亿行 C++ 代码中,很少有完全遵循现代准则的,而且人们对安全的某些重要方面的看法也不尽相同。我和 C++ 标准委员会正在努力解决这个问题。”Stroustrup说:“配置文件是一个框架,用来指定一段代码需要什么保证,并启用实现来验证它们。在C++委员会网站上有描述这一点的文件(关键字:WG21),并且还会有更多文件的可以查阅。但是,我们中的一些人没有心情等待委员会有一些缓慢的进展。”Stroustrup 还表示,“Profiles 是一个框架,它允许我们逐步改进质量与安全保证。例如,相对较快地消除大多数范围错误,并通过本地静态分析和最少的运行时检查,逐步将安全保证引入大型代码库。我对 C++ 的长期目标是,让 C++ 在需要的时间和地点提供类型和资源安全性。也许当前对内存安全的推动是我想要保证的一个子集,也将证明我的努力将会有帮助,C++ 标准委员会的许多合作伙伴也认同这一点。”Stroustrup此前针对 NSA 捍卫了 C++ 的安全性表示赞赏,但之后 NSA 在2022 年 11 月的公告中,建议开发者使用内存安全语言,而不是 C++ 和 C。内存安全且能自动管理内存的编程语言,众所周知的有:C#、Go、Java、Ruby、Rust 和 Swift等。 ... PC版: 手机版:

🔍 发送关键词来寻找群组、频道或视频。

启动SOSO机器人