此情可待成追忆,只是当时已惘然.

东八区深夜长放送(LCL P3)

接口的最终用户(LCL——终末之诗,如流星划过)

如果我是使用者,那么我对这些东西要求:好看,好用,不占内存(RAM&&DISK)

Lazarus:
相较于Webview-Like很遗憾,严格来说只有第三点可以做到;
对比 Qt/GTK 那简直就是爆杀,再见了您嘞C++!

那么和iced框架?我(使用者角度!!!不是三色角度!!!)倒觉得这俩差不多,
只不过一个是统一一种架构,一个是多后端技术

如果我是开发者...那么...我觉得在我认知之中的...恐怕就没有对手了
那么,让我们看看Lazarus核心LCL实现部分...

LCL: 花人生1/4时间干没人知道的事情

先来一张依赖图Snipaste_2025-04-12_20-27-31.jpeg
怎么说呢...LCL这玩意是整个IDE核心,数一数线段就知道了qwq;

那我们看看LCL里面都有什么Snipaste_2025-04-12_20-31-49.jpeg 差不多是抽象出来的小组件之类的东西

我们走进如图所示的D:\fpcupdeluxe\lazarus\lcl\interfaces
Snipaste_2025-04-12_20-44-51.jpeg 诶?好像重点找到了:对应编译时选择的框架
我们打开qt6看看
Snipaste_2025-04-12_20-47-46.jpeg
以我们的认知:至少有一个Lazarus Pascal 接口 + Qt库函数集合 Snipaste_2025-04-12_20-51-18.jpeg
Snipaste_2025-04-12_20-52-07.jpeg
确实是这样
既然有SRC,那么不然我们看看C++代码?


qwq,估计看到这都要睡着了 不过坚持住朋友们

// Copyright (c) 2005-2013 by Jan Van hijfte
#include "qcheckbox_c.h"

QCheckBoxH QCheckBox_Create(QWidgetH parent)
{
	return (QCheckBoxH) new QCheckBox((QWidget*)parent);
}

void QCheckBox_Destroy(QCheckBoxH handle)
{
	delete (QCheckBox *)handle;
}

QCheckBoxH QCheckBox_Create2(PWideString text, QWidgetH parent)
{
	QString t_text;
	copyPWideStringToQString(text, t_text);
	return (QCheckBoxH) new QCheckBox(t_text, (QWidget*)parent);
}

void QCheckBox_sizeHint(QCheckBoxH handle, PSize retval)
{
	*(QSize *)retval = ((QCheckBox *)handle)->sizeHint();
}

void QCheckBox_minimumSizeHint(QCheckBoxH handle, PSize retval)
{
	*(QSize *)retval = ((QCheckBox *)handle)->minimumSizeHint();
}

void QCheckBox_setTristate(QCheckBoxH handle, bool y)
{
	((QCheckBox *)handle)->setTristate(y);
}

bool QCheckBox_isTristate(QCheckBoxH handle)
{
	return (bool) ((QCheckBox *)handle)->isTristate();
}

Qt::CheckState QCheckBox_checkState(QCheckBoxH handle)
{
	return (Qt::CheckState) ((QCheckBox *)handle)->checkState();
}

void QCheckBox_setCheckState(QCheckBoxH handle, Qt::CheckState state)
{
	((QCheckBox *)handle)->setCheckState(state);
}

似乎就是一个导出函数,把Qt能够支持的所有都导出一遍到Pascal...
不过这工程量也挺大的...

现在看起来....LCL做的事情其实也就一个: FFI(多语言互调用)
不过,要是做跨全平台...即使使用软件代替手工构造...也不一定那么简单...
就Qt而言.... Mac上属性与Windows/Linux就有很多冲突...
要做到完全兼容?那是真的天方夜谈...
所以..

大家都想解决,但是无能为力.

我一般的口头禅:使用一个底层语言+脚本语言就可以解决大多数问题了.

eg.Unity 核心,一个是渲染器,一个我觉得就是il2cpp,其实这样子也就和MS强绑定上了,但是也没办法,因为可以吃掉Windows份额
只不过后面MS把Csharp大改嘿嘿...这下有的他们好受了

可是我都水了三篇小文章,那么,从功利的角度来看,学这样一个有意思的技术的意义何在? 其实...就是开头/中间/结尾 都提到了

谁都知道,谁都想改,谁都改不了,谁都懒得改

短期来看甚至是对我们百害而无一利,

可是万一哪一天得维护一个xxLinux Win7 甚至是 XP 的GUI小项目,我相信这已经不证自明了.

不仅是跨OS,实际上Pascal支持MIPS/RISCV 还能把JVM当成后端用...
真就全能型选手


总结语:

Delphi倒下之后...
我们又如何回到85年?
汉城奥运会....那时候的人们真的以为未来大家都可以一起发展...
希望与命运交织.