”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Claude Sonnet 将 C# 迁移到 Python。

使用 Claude Sonnet 将 C# 迁移到 Python。

发布于2024-11-03
浏览:342

Migrating C# to Python with Claude  Sonnet.

我承担了一项相当具有挑战性的任务。也就是说,将一些丑陋的企业 C# 代码转换为 Python。在深入研究之前,我觉得我需要做一些解释。

这个 C# 项目充当某些机器学习模型的数据管道层。听到数据,你首先想到的应该是Python。不幸的是,情况并非如此,为了使它更好,它使用了 Apache Spark 的 .NET 扩展。将其迁移到 Python 是有道理的,因为它使用相当非标准的技术来解决问题,这使得招聘未来的人才相当困难。还有其他明显的问题,在其他企业 OOP 语言中也很常见,例如多层抽象、无处不在的继承、控制反转,以及您在数据管道中不做的事情。为了进一步助长魔鬼,原来的承包商/顾问团队(因为除了一些企业顾问之外,还有谁会使用 C#)将于下个月离开。

顺便说一句,我使用 Neovim,自从我拿到预览版本以来,我已经使用 Github Copilot 近两年了,还有 Copilot Chat(技术上是 ChatGPT),所以我绝不是一个完全的新手,当它涉及法学硕士和代码。

肉!

使用 Claude 3.5 编写代码感觉如何,有好的、坏的和丑陋的部分。但大多数情况下,即使您能够从头开始编写相同的功能,您也不知道发生了什么。

好的

Claude 3.5 往往会产生令人惊讶的正确结果,但是,有时它会尝试变得聪明,但会失败,但您可以指导它解决问题。总的来说,它是提问的好伙伴,对我来说,因为我有严格的工作流程,而且我确实付出了很多努力来制作带有大量示例和边缘情况的复杂提示,所以我非常满意。我可以学习 C# 课程并将重要部分翻译成 Python,只需要很少的额外指令。

不好的

我通常可以写 12 个小时的代码,偶尔上厕所,补充我的水壶。是的,当我真正投入其中时,我不会感到饥饿。和克劳德在一起时,我确实进入了心流状态,但大约三个小时后,我感觉死了。在这 3 小时内,我确实生成了很多代码,而且我感觉很有成效,但这就像不停地进行代码审查、要求更改,而且大多数情况下,如果生成的内容有效,则不会查找文档。

丑陋的

如果您是一名编码员,您可能在某种程度上熟悉您编写的代码。这种熟悉感往往会随着时间的推移而消失,但如果您在代码库上工作了足够长的时间,您就会熟悉周围的情况。使用 LLM 生成的代码,这种情况就不会发生。我对发生的事情知之甚少。几天来,我确实编写了很多代码,审查了每一行,时不时地要求进行一些更改,但最终我几乎不知道到底发生了什么。最后,代码库感觉就像一个陌生人,不是我写的。更糟糕的是,实际的代码风格不一致,你可以告诉appart哪些文件是同一天写的,感觉像是不同的人写的。

外卖

我花了很多时间来审查、重新设计、调整这个完整的 LLM 编码方法,但是大多数时候的结果只是代码,这在某种程度上有效,但你不知道为什么或如何。最大的问题是:

最终得到一个你几乎没有依恋的代码库是否值得,它立即感觉就像你一年前与一次想象中的同事一起写的。

总而言之,我确实觉得我生成了更多代码,但质量比平常低。在某些情况下,这种较低的质量是合理的,特别是如果您不在乎的话。但我担心的是,时间即将到来,每个代码库都将在创纪录的时间内成为“遗产”。

版本声明 本文转载于:https://dev.to/n1o_c0rtx/migrating-c-to-python-with-claude-35-sonnet-4676?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Wasp:Web 开发中 Django 的 JavaScript 答案
    Wasp:Web 开发中 Django 的 JavaScript 答案
    Wasp v Django: Building a full stack application just got a lot easier Hey, I’m Sam, a backend engineer with a lot of experience with Django....
    编程 发布于2024-11-08
  • 如何在没有键盘中断的情况下通过按键中断 While 循环?
    如何在没有键盘中断的情况下通过按键中断 While 循环?
    通过按键中断 While 循环在使用 while 循环读取串行数据并将其写入 CSV 文件的场景中,您可能希望为用户提供终止循环以停止数据收集的选项。本文探讨了在不显式使用键盘中断的情况下实现此类功能的技术。一种简单的方法是利用 try- except 块来处理 KeyboardInterrupt ...
    编程 发布于2024-11-08
  • 周 oot 训练营学习
    周 oot 训练营学习
    我决定迈出大胆的一步,参加由 LuxDevHQ 组织的我的第一个数据职业训练营。这是一个为期 5 周的训练营,旨在培养实践数据技能。该训练营旨在让人们接触至少 4 个专业领域的各种数据技能。 第一周以信息会议开始,我进行了项目定向,并​​向我介绍了该项目并了解了整个项目的期望。 在这第一周,我学到了...
    编程 发布于2024-11-08
  • 如何使用 Homebrew 和 jenv 在 Mac OS X 上管理多个 Java 版本?
    如何使用 Homebrew 和 jenv 在 Mac OS X 上管理多个 Java 版本?
    在 Mac OS X 上管理多个 Java 版本由于 Java 管理其安装的方式,在 Mac OS X 上安装多个 Java 版本可能是一项挑战。不过,有一个解决方案可以让您轻松安装和管理不同的 Java 版本:Homebrew。使用 Homebrew 和 jenvHomebrew 是一个包管理器,...
    编程 发布于2024-11-08
  • 如何创建 React 应用程序?安装与环境设置
    如何创建 React 应用程序?安装与环境设置
    在开始使用 React 构建应用程序之前,拥有正确的开发环境非常重要。以下是帮助您入门的分步指南: 步骤 1. 安装 Node.js 和 npm 设置 React 环境的第一步是安装 Node.js,因为它提供了在浏览器外部执行代码所需的 JavaScript 运行时。当您安装 Node.js 时,...
    编程 发布于2024-11-08
  • python 并发.futures
    python 并发.futures
    未来 Future 是一个容器,可以保存计算结果或计算期间发生的错误。创建 future 时,它​​以 PENDING 状态开始。该库不打算手动创建此对象,除非出于测试目的。 import concurrent.futures as futures f = futures.Futu...
    编程 发布于2024-11-08
  • 使用纯 Javascript 只需几行即可实现飞向购物车的动画。
    使用纯 Javascript 只需几行即可实现飞向购物车的动画。
    最近,我偶然发现了一个旧教程,展示了使用 jQuery 实现飞行到购物车的动画。我想通过使用纯 JavaScript 实现相同的效果来挑战自己。 我创建了一个包含产品和购物车图标的简单布局。样式并不重要,所以我们不会在这里讨论它。 诀窍是克隆产品图像,将其添加到产品元素之前。然后计算克隆图像和购物车...
    编程 发布于2024-11-08
  • Bokeh 是一个有趣的 Python 数据可视化数据工具
    Bokeh 是一个有趣的 Python 数据可视化数据工具
    数据可视化在解释大量信息方面发挥着关键作用。 Bokeh 等工具已成为构建交互式仪表板和报告的流行解决方案。每个工具都具有独特的优势,具体取决于您项目的复杂性和您首选的编程语言。在本文中,我们将深入研究每个工具,然后重点关注 Bokeh,包括实践示例和云中的部署。 以便... 什么是散景? Boke...
    编程 发布于2024-11-08
  • django-components v 模板现在与 Vue 或 React 相当
    django-components v 模板现在与 Vue 或 React 相当
    嘿,我是 Juro,我是 django-components 的维护者之一。在 v0.90-0.94 版本中,我们添加了一些功能,使模板中的组件使用更加灵活,类似于 JSX / Vue。 (此信息已经有点过时了(一个月前发布;最新的是 v0.101),因为我正忙着添加对 JS / CSS 变量、Ty...
    编程 发布于2024-11-08
  • 在 GitHub-echo 中实现 TOML 配置支持
    在 GitHub-echo 中实现 TOML 配置支持
    介绍 最近,我有机会通过添加对 TOML 配置文件的支持来增强 github-echo 命令行工具。此功能允许用户在 .github-echo-config.toml 文件中设置持久默认选项,从而减少每次使用该工具时手动输入重复配置的需要。在这篇文章中,我将向您介绍我在该功能上的经...
    编程 发布于2024-11-08
  • 如何使用 SimpleXML 和 DOMDocument 删除 XPath 节点?
    如何使用 SimpleXML 和 DOMDocument 删除 XPath 节点?
    SimpleXML:删除 XPath 节点在本文中,我们将探讨如何使用以下方法有效地从 XML 文档中删除父节点: SimpleXML 和 XPath。了解 SimpleXML限制提供的代码尝试使用 SimpleXML 在通过 XPath 找到父节点后删除它。然而,SimpleXML 的 unset...
    编程 发布于2024-11-08
  • 创建一个 React Hook 以任意角度旋转图像
    创建一个 React Hook 以任意角度旋转图像
    在Web开发中,您可能需要旋转图像,这在CSS中很容易做到。像这样的简单代码变换:rotate(90deg);。但是如果我们想用 JS 来做呢? TLDR 将图像绘制到浏览器环境中的画布上并旋转它。但在此之前,我们需要做一些数学运算来保持原始图像的长宽比。 核 假设我...
    编程 发布于2024-11-08
  • Lithe 中间件:它是如何工作的以及如何创建自己的中间件
    Lithe 中间件:它是如何工作的以及如何创建自己的中间件
    中间件提供了一种方便的机制来检查和过滤进入应用程序的 HTTP 请求。 例如,Lithe 包含检查用户是否经过身份验证的中间件。如果没有,中间件会将用户重定向到登录屏幕。如果用户通过身份验证,中间件将允许请求继续。 中间件如何在 Lithe 中工作 在 Lithe 中,中间件是能够访...
    编程 发布于2024-11-08
  • 如何在 JavaScript 中创建具有重复元素的数组?
    如何在 JavaScript 中创建具有重复元素的数组?
    JavaScript 中重复元素的数组创建具有多次重复的相同元素的数组在各种编程场景中至关重要。在 Python 中,这可以通过列表乘法来实现,如 [2] * 5 中所示。但是,此功能在 JavaScript 数组中不能直接使用。自定义函数方法为了满足这种需求,一种方法是创建自定义函数,例如问题中提...
    编程 发布于2024-11-08
  • ## MySQL 中的 LIKE 与 LOCATE:哪个运算符是性能之王?
    ## MySQL 中的 LIKE 与 LOCATE:哪个运算符是性能之王?
    MySQL LIKE 与 LOCATE 性能比较在 MySQL 中查找数据时,你可能想知道 LIKE 和 LOCATE 哪个运算符效率更高?本文探讨了这两个运算符之间的性能差异。在典型的使用场景中,LIKE 比 LOCATE 稍快。这主要是因为 LIKE 不像 LOCATE 那样执行与 0 的额外比...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3