递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1309|回复: 14
打印 上一主题 下一主题

[类库封装] 使用AI来创建火山代码尝试!貌似是可以的,ai为deepseek

[复制链接]

2

主题

38

帖子

811

积分

高级会员

Rank: 4

积分
811
跳转到指定楼层
楼主
发表于 2024-10-15 14:09:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:噜阿噜
先说结果,是成功了!!!:噜阿噜:噜阿噜:噜阿噜
AI厉害了,貌似成功了,
第一步,打开能免费对话的AI,比如deepseek.
第二步,选左上角的代码助手.
第三步,输入框输入如下信息(注意,下面都是编辑框要输入的信息):
已知下面的类似c++代码的自用编程语言,此代码实现了一个线程类,请根据当前代码格式,写一个在Windows下使用api创建窗口的类似代码,自用编程语言的代码为(然后从火山类库中复制了一段代码):<火山程序 类型 = "通常" 版本 = 1 />

类 线程类 <公开 基础类 = 参考对象类 注释 = "  用作封装一个单独的线程." 注释 = "  注意: 当本类对象被销毁(譬如离开其作用域)时,将自动调用本对象的\"停止\"方法通知"
        注释 = "本对象中的线程结束运行并等待对应的\"线程运行\"事件处理方法执行完毕.如果此时对应"
        注释 = "的\"线程运行\"事件处理方法中没有及时检查处理本对象的\"是否需要退出\"方法,程序将进" 注释 = "入死锁状态." 折叠2>
{
    方法 启动 <公开 类型 = 逻辑型 注释 = "启动本对象中的线程,开始执行其\"线程运行\"事件的处理方法." 注释 = "如果线程当前正在运行,将会直接返回真."
            返回值注释 = "成功返回真,失败返回假." @禁止流程检查 = 真>
    参数 堆栈尺寸 <类型 = 整数 注释 = "提供线程所使用的堆栈尺寸,单位字节.为0表示使用默认尺寸." @默认值 = 0>
    {
        @ return (BOOL)data ().Start ((VOL_THREAD_FUNC)@sn<current_class>::sThreadFunc, this, @<堆栈尺寸>);
    }

    方法 是否正在运行 <公开 类型 = 逻辑型 注释 = "返回本对象中的线程是否处于正在运行状态" @嵌入式方法 = "">
    {
        @ (BOOL)@sn<this>.data ().IsRunning ()
    }

    方法 停止 <公开 注释 = "  本方法只能在本对象中线程以外的线程(譬如主线程)中执行,用作通知并等待本对象的对" 注释 = "应\"线程运行\"事件处理方法执行完毕退出."
            注释 = "  为了支持本方法,本对象的对应\"线程运行\"事件处理方法中必须尽可能快地频繁调用本对"
            注释 = "象的\"是否需要退出\"方法,一旦发现该方法返回真,则需要尽快结束执行并返回,否则本方法" 注释 = "将进入死等状态." @嵌入式方法 = "">
    {
        @ @sn<this>.data ().Exit ()
    }

    方法 通知停止 <公开 注释 = "  本方法只能在本对象中线程以外的线程(譬如主线程)中执行,用作通知本对象的对应" 注释 = "\"线程运行\"事件处理方法执行完毕退出."
            注释 = "  本方法与\"停止\"方法不同之处在于,本方法仅仅发出退出通知而不会一直等待其退出." @嵌入式方法 = "">
    {
        @ @sn<this>.data ().PostExitNotify ()
    }

    方法 是否需要退出 <公开 类型 = 逻辑型 注释 = "  本方法只能在本对象的线程(即对应\"线程运行\"事件处理方法)中执行,一旦"
            注释 = "发现本方法返回真,必须尽快结束\"线程运行\"事件处理方法的执行并返回,否" 注释 = "则将导致另一线程中的\"停止\"方法调用进入死等状态."
            返回值注释 = "返回线程是否需要尽快退出" @嵌入式方法 = "">
    参数 最大检查等待时间 <类型 = 整数 注释 = "  指定检查线程退出通知(由\"停止\"或\"通知停止\"方法发出)的最大等待" 注释 = "时间(单位毫秒),为0表示不等待,为-1表示一直等待."
            @默认值 = 10>
    {
        @ (BOOL)@sn<this>.data ().IsNeedExit (@<最大检查等待时间>)
    }

    方法 线程运行 <公开 定义事件 类型 = 整数 注释 = "用户需要接收并处理本事件以执行所需要的功能,该事件处理方法将在一个单独的线程中运行." 注释 = "注意:"
            注释 = "  1. 在本事件的接收处理方法中,必须尽可能快地频繁调用本对象的\"是否需要退出\"方法,"
            注释 = "一旦发现该方法返回真,则需要尽快结束执行并返回,否则将导致另一线程中的\"停止\"方法调用" 注释 = "进入死等状态;"
            注释 = "  2. 在本事件的接收处理方法中不允许对窗口界面直接进行操作,否则可能导致死锁.">

    # @begin
    # @m<DECLARE_DERIVED_REF_OBJECT_CLASS_WITH_DATA> (CVolThread)
    # <> <include>
    # static void sThreadFunc (void* param, volatile const BOOL_P* pblpExit, HANDLE hExitEventOnWindows)  { ((@sn<current_class>*)param)->@<线程运行> (); }
    # void @an<_OnBeforeCleanup> ()  { data ().PostExitNotify (); }
    # <> </include>
    # @end
}





结果,服务器返回成功.下面为代码,厉害了,太猛了,我在做梦吗?:

根据你提供的自用编程语言的代码格式,以下是一个在 Windows 下使用 API 创建窗口的类似代码示例。这个示例展示了如何使用 Windows API 创建一个简单的窗口,并处理窗口消息。

xml
复制
<火山程序 类型 = "通常" 版本 = 1 />

类 窗口类 <公开 基础类 = 参考对象类 注释 = "  用作封装一个窗口." 折叠2>
{
    方法 创建窗口 <公开 类型 = 逻辑型 注释 = "创建一个窗口."
            返回值注释 = "成功返回真,失败返回假." @禁止流程检查 = 真>
    参数 窗口标题 <类型 = 文本型 注释 = "窗口的标题." @默认值 = "我的窗口">
    参数 窗口宽度 <类型 = 整数 注释 = "窗口的宽度." @默认值 = 800>
    参数 窗口高度 <类型 = 整数 注释 = "窗口的高度." @默认值 = 600>
    {
        @ return (BOOL)data ().CreateWindow (@<窗口标题>, @<窗口宽度>, @<窗口高度>);
    }

    方法 显示窗口 <公开 注释 = "显示窗口." @嵌入式方法 = "">
    {
        @ @sn<this>.data ().ShowWindow ()
    }

    方法 销毁窗口 <公开 注释 = "销毁窗口." @嵌入式方法 = "">
    {
        @ @sn<this>.data ().DestroyWindow ()
    }

    方法 窗口消息处理 <公开 定义事件 类型 = 整数 注释 = "用户需要接收并处理本事件以执行所需要的功能,该事件处理方法将在窗口消息循环中运行." 注释 = "注意:"
            注释 = "  1. 在本事件的接收处理方法中,必须尽可能快地处理窗口消息;"
            注释 = "  2. 在本事件的接收处理方法中不允许对窗口界面直接进行操作,否则可能导致死锁.">

    # @begin
    # @m<DECLARE_DERIVED_REF_OBJECT_CLASS_WITH_DATA> (CVolWindow)
    # <> <include>
    # static LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  {
    #     @sn<current_class>* pThis = (@sn<current_class>*)GetWindowLongPtr (hwnd, GWLP_USERDATA);
    #     if (pThis) {
    #         return pThis->@<窗口消息处理> (hwnd, uMsg, wParam, lParam);
    #     }
    #     return DefWindowProc (hwnd, uMsg, wParam, lParam);
    # }
    # BOOL CreateWindow (const char* title, int width, int height) {
    #     WNDCLASS wc = {0};
    #     wc.lpfnWndProc = WindowProc;
    #     wc.hInstance = GetModuleHandle (NULL);
    #     wc.lpszClassName = "VolcanoWindowClass";
    #     RegisterClass (&wc);
    #     HWND hwnd = CreateWindowEx (
    #         0, "VolcanoWindowClass", title, WS_OVERLAPPEDWINDOW,
    #         CW_USEDEFAULT, CW_USEDEFAULT, width, height,
    #         NULL, NULL, GetModuleHandle (NULL), NULL
    #     );
    #     if (hwnd) {
    #         SetWindowLongPtr (hwnd, GWLP_USERDATA, (LONG_PTR)this);
    #         return TRUE;
    #     }
    #     return FALSE;
    # }
    # void ShowWindow () {
    #     ShowWindow (hwnd, SW_SHOW);
    # }
    # void DestroyWindow () {
    #     DestroyWindow (hwnd);
    # }
    # <> </include>
    # @end
}
运行 HTML
解释
类定义:

定义了一个名为 窗口类 的类,继承自 参考对象类。

方法定义:

创建窗口:用于创建一个窗口,并返回创建是否成功。

显示窗口:用于显示已创建的窗口。

销毁窗口:用于销毁已创建的窗口。

窗口消息处理:定义了一个事件,用户需要接收并处理该事件以执行窗口消息处理功能。

嵌入式代码:

使用 DECLARE_DERIVED_REF_OBJECT_CLASS_WITH_DATA 宏定义了一个 CVolWindow 类。

WindowProc:定义了一个窗口过程函数,用于处理窗口消息。

CreateWindow:使用 Windows API 创建一个窗口,并设置窗口过程函数。

ShowWindow:显示窗口。

DestroyWindow:销毁窗口。

总结
定义了一个 窗口类,用于封装窗口的创建、显示和销毁功能。

使用 Windows API 创建窗口,并处理窗口消息。

用户需要实现 窗口消息处理 事件以处理窗口消息。

这样,你就可以在自用编程语言中使用类似 C++ 的代码格式,实现一个在 Windows 下创建窗口的功能。
回复

使用道具 举报

2

主题

38

帖子

811

积分

高级会员

Rank: 4

积分
811
沙发
 楼主| 发表于 2024-10-15 14:10:57 | 只看该作者
AI网址为这个,https://chat.deepseek.com/coder
这不是广告,这是主题相关内容.

我在做梦吗?
回复

使用道具 举报

2

主题

38

帖子

811

积分

高级会员

Rank: 4

积分
811
板凳
 楼主| 发表于 2024-10-15 14:19:42 | 只看该作者
:噜阿噜
如此看来,AI是能写火山代码的,如果不能,那一定是AI不够强大,或者自己的姿势不对!!!
回复

使用道具 举报

2

主题

38

帖子

811

积分

高级会员

Rank: 4

积分
811
地板
 楼主| 发表于 2024-10-15 15:12:10 | 只看该作者
运行起来有点难,得自己想!!!
回复

使用道具 举报

42

主题

368

帖子

2209

积分

金牌会员

Rank: 6Rank: 6

积分
2209
5#
发表于 2024-10-15 15:43:23 | 只看该作者
厉害了,厉害了
回复

使用道具 举报

29

主题

305

帖子

2590

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2590
6#
发表于 2024-10-15 17:00:35 | 只看该作者
望吴总将AI集成到IDE中去,以后写代码就是一句话的事了.
回复

使用道具 举报

50

主题

566

帖子

2469

积分

金牌会员

Rank: 6Rank: 6

积分
2469
7#
发表于 2024-10-15 18:00:18 | 只看该作者
AI自动封库?
回复

使用道具 举报

13

主题

247

帖子

1379

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1379
8#
发表于 2024-10-15 18:07:39 来自手机 | 只看该作者
火山兼容原生是成本最低的接入AI的方式,生成原生代码就能嵌入;如果生成火山代码,就要经济成本了。
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40505
9#
发表于 2024-10-15 21:52:29 | 只看该作者
2767944492 发表于 2024-10-15 18:07
火山兼容原生是成本最低的接入AI的方式,生成原生代码就能嵌入;如果生成火山代码,就要经济成本了。 ...

问题是没钱来训练大模型。。这玩意烧钱。不是随便买两个显卡就行的。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

13

主题

247

帖子

1379

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1379
10#
发表于 2024-10-16 00:40:56 | 只看该作者
本帖最后由 2767944492 于 2024-10-16 00:47 编辑
创世魂 发表于 2024-10-15 21:52
问题是没钱来训练大模型。。这玩意烧钱。不是随便买两个显卡就行的。

设备不是问题,又不是从零开始自己跑模型、本地训练。文心一言、通义千问、智谱ai、openai等等大厂一般都提供在线训练微调平台(在对应模型的开放平台中有入口),基于他们的模型平台扔数据集进去,就可以在线训练;调用也是通过api接口的方式;因此,训练、使用完全不需要基于自己的服务器(自己的服务器就是起到中转站的作用),这种方式已经把训练、部署的金钱成本降到很低了;所以,真正的难点在于,谁来整理数据集、整理哪些数据集,火山现在的资源很零散、文档也存在些问题,这可需要花大功夫和精力整理成规范化的数据集;由于完全不用基于自己的机器,所以优劣点也很明显,优点是对服务器没啥要求(在线训练、接口方式调用、不需要本地训练和本地部署),缺点就是每次调用都会产生调用的费用(这个费用可以向需要使用ai写代码的用户收取)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-22 02:40 , Processed in 0.094615 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表