跳转到主要内容
HPO Software 分步式 4D 数据库与低代码应用构建指南 —— 从创建首张表到打造可运行的商业应用。

本站部分链接为联盟营销链接:如果您通过这些链接购买,我们可能会获得佣金,且不会增加您的成本。这绝不会影响我们的推荐建议。详情请参阅我们的联盟披露声明。 联盟营销披露.

第四维度学习基础知识

要点

  • 4D (4th Dimension) 是由 4D SAS 推出的一款关系数据库和低代码应用程序平台,数十年来一直被用于在无需大型工程团队的情况下构建自定义业务应用。
  • 与历史上不带真正编译器的 FileMaker Pro 不同,4D 提供了编译步骤,可以显著提高执行速度并保护您的设计免受随意检查。
  • 4D 中的编译是一个独立的产品问题:编译器不属于基础标准版 (Standard Edition),必须通过高级套件 (Advanced Kit) 或开发人员版 (Developer Edition) 获取。
  • 编译通过嵌入 4D Engine 来生成运行时应用程序,从而产生一个可双击、可分发的程序。
  • 核心权衡在于开发便利性(解释模式)与部署性能/保护(编译模式)之间。

简介:“4D 学习基础”涵盖的内容

本页面是关于 4D(第四代关系数据库和快速应用程序开发环境)更广泛学习系列的一部分。该系列介绍了新 4D 开发人员所需的基础主题:系统要求、程序结构、网络差异、运行时差异、编译器、Web 托管、数据图表、插件、工具和实用程序,以及在哪里可以找到更多资源。

本页的主题——编译器——是您作为 4D 开发人员将做出的最重要的决定之一,因为它处于“构建”应用程序与“交付”应用程序的边界。在确定部署策略之前,了解编译的作用、何时需要它以及它在资金和工作流程方面的成本至关重要。

简史和背景

4D 最初由 Laurent Ribardière 开发,并于 20 世纪 80 年代中期首次发布,使其成为目前仍在活跃使用的寿命最长的数据库开发平台之一。它诞生于产生其他第四代语言和关系系统的同一时代,并不断演进——从经典的 4D 结构/编译器模型,发展到 4D Server,以及最近的 ORDA (Object Relational Data Access) 架构和 4D 的现代低代码工具。这种漫长的演变是 4D 现在能与现代低代码无代码应用开发平台并肩而行的原因之一,尽管其根源要古老得多。

这段悠久的历史具有实际意义:您将遇到的许多文档、教程和社区知识(包括本系列)都反映了经典模型,即设计结构文件、构建表单和方法,然后选择性地编译以进行部署。即使 4D 在现代化,概念构建块(结构、方法、表单、值列表、运行时)仍然是您需要掌握的心智模型。

有关第四代语言和关系数据库这一更广泛类别的背景信息,请参阅维基百科关于第四代编程语言的概述和关系数据库文章。

编译器:4D vs. FileMaker Pro

本页上的原始对比值得清楚地重申,因为它捕捉到了两个经常被同时提及的平台之间真正的架构差异。

Related: — A spreadsheet-simple interface sitting on top of a real , with automations, views, and shareable interfaces..

FileMaker Pro (FMP) 历史上没有编译器。您以解释方式构建并运行解决方案,由 FileMaker 为您处理运行时。这很方便——无需单独的编译步骤,无需购买单独的编译器产品——但这意味着设计本质上更加开放,且执行是解释性的。

相比之下,4D 允许您编译程序。编译是您选择采取的一个明确步骤,且并非免费:它需要 4D Compiler,这是一个与 4D 基础标准版不同的独立产品。

这种区别是本页的核心。如果您来自 FileMaker,编译步骤的概念可能很陌生,而围绕它的许可结构可能会让您感到惊讶。

If you are shopping: — A that plugs into the wider Zoho suite and prices per user rather than per app..

编译实际上能为您带来什么

原文列出了编译 4D 结构文件的两个优点,两者都值得详细分析,因为它们反映了真实的工程权衡。

1. 性能。 某些函数在编译后运行速度可提高多达 1,000 倍。其原因在于解释器和编译器的根本区别:在解释模式下,4D 引擎在运行时读取并评估您的方法,随之翻译每条指令。在编译模式下,您的方法会被提前翻译成机器可以直接执行的形式,从而消除了每条指令的解释开销。循环、计算和密集的数据处理例程(即解释开销累积的地方)正是收益最大的地方。并非每个操作都会以相同的倍数加速;“最高 1,000 倍”的数字反映了计算密集型代码的最佳情况,而非整个应用程序的统一乘数。

2. 设计保护。 编译可保护您的设计成果不被窥视。在解释模式下,结构和方法更容易被检查。当您编译时,生成的代码不再是以同样方式可读的,这保护了您的知识产权——您的业务逻辑、精心调整的方法、数据模型——免于被任何拥有部署应用的人员复制或随意逆向工程。

还有一个经常被忽视的第三个好处:作为独立运行时部署。 当您编译 4D 结构文件时,您可以嵌入另一个名为 4D Engine 的产品(需在 4D Compiler 之外另行购买)。编译完成后,这将产生一个可双击的、已编译的运行时应用程序。换句话说,编译是使 4D 解决方案成为最终用户无需完整 4D 开发环境即可启动的可分发产品的机制。

许可与版本:如何决定

原页面清晰地列出了购买结构,将其作为决策框架呈现是有价值的,因为选择取决于您所处的阶段。

情况您需要什么备注
学习 4D,构建原型4D 标准版 (Standard Edition)不含编译器;解释式开发
已拥有标准版,现在需要编译高级套件 (Advanced Kit)包含 4D Compiler 和其他几个程序
从零开始且已知需要编译开发人员版 (Developer Edition)包含标准版和高级套件中的所有内容
向最终用户分发独立应用4D Compiler 加上 4D EngineEngine 需在 Compiler 之外另行购买

原始价格:如果您已拥有标准版,高级套件的购买价格为 549 美元;开发人员版的初始购买价格为 799 美元,包含标准版和高级套件中的所有内容。

Related: — A builder aimed at portals, directories, and internal tools — with flat-rate pricing instead of per-user fees..

如何决定:

  • 如果您纯粹处于学习和原型制作模式,标准版就足够了。您无需编译即可开发、测试和完善您的结构和方法。
  • 如果您已经投资了标准版,并且现在达到了需要性能或设计保护的阶段,高级套件是增量升级路径。
  • 如果您从头开始且已知将交付编译后的应用程序,预先购买开发人员版是更经济的路线,因为它捆绑了两者。
  • 如果您的目标是向最终用户提供可双击的应用程序,请同时为 4D Engine 预留预算——它是编译器之上的单独购买项。

请注意,这些价格反映了编写本材料的时代(版权行显示为 1994–2000)。当前的 4D 定价和版本名称已经演变,因此在购买前请务必对照 4D SAS 的官方当前产品进行确认。决策的结构——基础版本、编译器插件、分发引擎——仍然是一个有用的心智模型。

解释型 vs. 编译型:实际比较

了解权衡有助于您为项目的每个阶段选择正确的模式。

Our pick: — The long-running relational database platform for teams that need custom apps on desktop, web, and mobile from a single file..

  • 开发速度: 解释模式获胜。您可以更改方法并立即重新运行,无需编译周期中断流程。
  • 运行时速度: 编译模式获胜,对于计算密集型代码提升显著。
  • 调试: 解释模式通常更容易单步执行和检查,因为运行的代码与您编写的内容紧密对应。
  • 设计保密性: 编译模式获胜;解释型结构更容易暴露。
  • 分发: 只有编译模式(配合 4D Engine)能产生独立的、可双击的运行时应用程序。
  • 成本: 解释式开发仅需基础版本;编译部署需要 Compiler,分发则需要 Engine。

一个常见且合理的流程是解释式开发,编译式部署。您在开发期间快速迭代,然后在解决方案稳定并准备交付后进行编译。这镜像了许多编译语言开发者的工作方式:在构建时利用快速反馈循环,在发布时支付编译成本。

编译在更广泛的 4D 工具链中的位置

编译器并非孤立存在。它与本学习系列中的其他主题并列,了解它们之间的联系有助于您规划实际项目:

  • 程序结构定义您的表、字段、关系、表单和方法——这是编译器处理的原材料。
  • 网络差异和运行时差异决定了您的应用程序在跨 4D Server 和客户端机器部署与单用户设置时的行为方式。
  • Web 托管能力让您可以通过 Web 公开 4D 数据和逻辑,这会改变您的部署和性能概况。
  • 数据图表和插件扩展了应用程序的功能,尤其是插件会影响编译,因为编译后的代码和插件必须兼容。
  • 工具和实用程序帮助您管理、维护并排除编译结果的故障。

简而言之,编译器是结构和方法的设计时世界与已部署应用程序的运行时世界之间的桥梁。该系列中的所有其他内容都为其提供支持。

给新 4D 开发人员的实用指南

如果您现在正在学习 4D,这里有一条务实的路径:

  1. 从解释模式开始。 在基础版本中构建您的结构、表单和方法。在担心性能之前,先专注于确保数据模型和业务逻辑正确。
  2. 彻底学习结构/方法模型。 编译器奖励简洁、组织良好的方法;它无法拯救糟糕的设计。
  3. 识别性能关键代码。 当您最终编译时,最大的收益来自循环、计算和数据处理例程——请明确它们在应用中的位置。
  4. 尽早规划部署目标。 如果您要分发独立应用,请从一开始就在预算和构建流程中考虑 Compiler 和 4D Engine。
  5. 确认当前版本和定价。 经典文档中的版本名称和数字可能与 4D SAS 目前提供的不同;购买前请核实。

如需权威的最新信息,请直接查阅官方 4D 开发人员文档和 4D SAS 网站,并依靠活跃的 4D 开发人员社区解决特定于平台的问题。

常见问题

FileMaker Pro 有编译器吗?

历史上没有——FileMaker Pro 不包含编译器,解决方案以解释方式运行,由 FileMaker 处理运行时。这是与 4D 的一个关键架构差异,4D 提供了显式的编译步骤。如果您从 FileMaker 迁移,请做好接受编译概念是新事物的准备。

4D 标准版中包含 4D Compiler 吗?

不包含。4D 标准版中不含 4D Compiler。要进行编译,您需要单独获取它——如果您已拥有标准版,可通过购买高级套件获取,或直接购买捆绑了标准版和高级套件的开发人员版。

编译后的 4D 代码速度快多少?

最初的指南指出,某些函数在编译后运行速度可提高多达 1,000 倍。这是计算密集型代码的最佳情况数值,而非整个应用程序的统一加速。循环、计算和数据处理例程受益最多,因为编译消除了在紧凑代码中累积的每条指令的解释开销。

什么是 4D Engine,我需要它吗?

4D Engine 是一个独立产品,您可以在编译 4D 结构文件时将其嵌入。它必须在 4D Compiler 之外另行购买。编译完成后,嵌入 Engine 将产生一个可双击的、已编译的运行时应用程序——如果您打算向最终用户分发独立程序,这就是您所需要的。

编译会保护我的源代码吗?

是的 - 编译的两个主要优点之一是您的设计成果得以保密。解释的结构和方法更容易检查,而编译的代码则不以同样的方式供人类阅读。这可以保护您的业务逻辑和数据模型免遭复制或随意逆向工程。

我应该在解释模式还是编译模式下开发?

一种常见且有效的方法是在解释模式下开发,在编译模式下部署。解释模式为您提供快速编辑和运行反馈循环,并更轻松地进行调试,而编译模式则提供您在交付产品中所需的性能和设计保护。一旦您的解决方案稳定并准备好发布,就进行编译。

Frequently asked questions

FileMaker Pro 有编译器吗?

从历史上看,没有 - FileMaker Pro 不包含编译器,解决方案以解释方式运行,由 FileMaker 处理运行时。这是与 4D 的一个关键架构差异,4D 提供了显式编译步骤。如果您要从 FileMaker 迁移,预计编译概念对您来说是新的。

4D 标准版中包含 4D 编译器吗?

否。4D 标准版中不包含 4D 编译器。要进行编译,您需要单独获取它 - 如果您已经拥有标准版,则可以通过购买高级套件,或者购买捆绑了标准版和高级套件的开发人员版。

编译 4D 代码的速度有多快?

最初的指南指出,某些函数在编译后运行速度将提高 1,000 倍。这是计算量大的代码的最佳情况数字,而不是整个应用程序的统一加速。循环、计算和数据处理例程受益最多,因为编译消除了紧凑代码中复合的每条指令的解释开销。

什么是 4D 引擎?我需要它吗?

4D 引擎是一个单独的产品,您可以在编译 4D 结构文件时嵌入该产品。除了 4D 编译器之外,还必须购买它。编译完成后,嵌入引擎会生成一个可双击的、已编译的运行时应用程序 - 如果您打算将独立程序分发给最终用户,这就是您所需要的。

编译会保护我的源代码吗?

是的 - 编译的两个主要优点之一是您的设计工作不会受到影响。解释的结构和方法更容易检查,而编译的代码则不以同样的方式供人类阅读。这可以保护您的业务逻辑和数据模型免遭复制或随意逆向工程。

我应该以解释模式还是编译模式进行开发?

一种常见且有效的方法是开发解释型并部署编译型。解释模式为您提供快速编辑和运行反馈循环,并更轻松地进行调试,而编译模式则提供您在发货产品中所需的性能和设计保护。一旦您的解决方案稳定并准备好发布,就进行编译。


Try FileMaker Free for 45 Days

The long-running relational database platform for teams that need custom apps on desktop, web, and mobile from a single file.