【问题标题】:What is the difference between a language and a framework?语言和框架有什么区别?
【发布时间】:2011-04-15 08:25:37
【问题描述】:

有人可以给我一个清晰、简洁的编程语言和框架之间区别的定义吗?我在网上搜索过,但找不到合适的定义。

为了额外的荣誉,语言和框架是否有可能变得如此紧密相连以至于没有区别,或者它们之间是否存在如此清晰的界限以至于这是不可能的?

【问题讨论】:

  • 也许您的 EC 问题的一个示例是作为 Objective-C 一部分的 NextStep 框架。并非完全不可分割,但非常接近......
  • 如果一种语言以任何方式与某个框架“密不可分”,那么根据定义,该框架就是该语言的一部分。
  • NeXTStep/OpenStep/Cocoa 可以用于多种语言:Objective-C++、Objective-Modula-2、Ruby、Nu、FScript ...... NeXTStep/OpenStep/可可。 Objective-C 和 NeXTStep 之间的关系类似于 C 和 POSIX 之间的关系:它们是一起发明的并且很好地集成,但是你可以在没有 C 的情况下使用 POSIX(例如,使用 C++、OCaml、Perl),你可以在没有 POSIX 的情况下使用 C(例如,使用 Win32、NeXTStep 或没有环境根本,例如在嵌入式设备上或在编写 OS 内核时。)
  • @Jorg,绝对的。根据定义,一种语言必须是独立的。然而,我唯一的观点是,在没有 NS 库的情况下编写 Objective-c 代码要困难几个数量级,因为它提供了许多核心数据抽象。

标签: frameworks programming-languages definition


【解决方案1】:

应用程序框架是任何应用程序代码的组织结构,包括文件/文件夹、类/函数等约定的选择。

应用程序框架产品是任何有助于为应用程序生成框架的工具。

应用程序设计模式是在应用程序级别组织代码的任何概念方法。

软件语言是一种基于语言的工具,可用于构建应用程序、实用程序、库、框架等。

是一种语言的本地编译功能的任何功能扩展。

标准库是与语言产品本身打包在一起的库。

外部库是语言产品本身之外的库,可以远程调用或本地安装。

代码生成器是根据开发人员的输入动态生成永久运行时代码的任何工具。


【讨论】:

    【解决方案2】:

    在我看来,编程语言看起来像是一堆东西(语法、语法、语义等),人们已经将它们组合成一个更方便、更有用、更容易使用和更有趣的东西 - 一个框架,并且我喜欢在开始制作程序之前有一个框架。

    我了解一些编程语言,如 C、PHP、ASP、Python、Java,以及一些框架,如 Yii、Zend、Pygame、Struts。我所看到的只是一种编程语言可以构建许多框架,但一个框架只能由编程语言构建。

    【讨论】:

      【解决方案3】:

      我希望我能用一个例子来解释。

      Dot net 是一个由大型库组成并支持许多 编程语言.. C# 是一种编程语言,您可以通过它提供 对主要是计算机的机器的指令..现在如果您的源代码是 C# 您可以使用 Dot net 框架库和其他编写的源代码 语言..

      【讨论】:

        【解决方案4】:

        语言是需要实现者支持的句法、语法、语义(也许是核心库)。框架是一组内聚的库代码,它们共同简化了任何给定语言的编程。

        【讨论】:

        • 框架不必用语言编写。它必须对语言可用。
        • @Jorg - 在这种情况下,你能指定库和框架之间的区别吗?
        • @Ender:区别在于控制反转:您调用库,但框架调用您。顺便说一句:这个问题已经在 SO 上广泛讨论过。
        • @Ender:区别在于凝聚力。是的,框架是一组库,但这些库可以很好地协同工作,并且具有一致的句法和语义。
        • @Jorg:我不同意你所描述的是一个重要的区别,更不用说库和框架之间的区别了(这对我来说似乎是一个非常虚无缥缈的区别——一个框架只是一种库。)我更同意 Frederick 的用法,我不介意他对我的回答进行编辑(尽管我想强调一个框架完全由代码组成,而不是规范。)随意尝试以其他方式说服我。
        【解决方案5】:

        编程语言是程序员和计算机之间指定的、标准化的通信方法(在现代语言中,从技术上讲,它是在程序员和编译器之间,它将您的代码“解释”成计算机可以使用的更简单的指令)。它是一个纯粹的抽象,指定了它的结构、句法和语义;该语言的实现通常被认为是程序员开发环境的一部分,并结合了编译器和任何虚拟机实现。

        框架是一组标准化的预先编写的代码库,旨在供开发人员使用和重用,并且与环境的联系更加紧密。环境是语言、框架、虚拟机或运行时(托管或解释代码从与机器无关的形式转换为本机代码的抽象层)和机器(执行本机指令的硬件层)的交集.

        【讨论】:

          【解决方案6】:

          关于语言和框架之间的明确界限,我想您可以将 DSL(领域特定语言)视为既是语言又是框架的结构(因为它是构建在原始语言中的框架)。

          Lisp 是我现在能想到的唯一一种可能会模糊这种区别的语言:

          “LISP 的名称来源于“LISt 处理”。链表是 Lisp 语言的主要数据结构之一,而 Lisp 源代码本身就是由列表组成的。因此,Lisp 程序可以将源代码作为数据来操作结构,产生了允许程序员创建新语法甚至新的领域特定语言嵌入到 Lisp 中的宏系统。”

          http://en.wikipedia.org/wiki/Lisp_(programming_language)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-05
            • 2011-02-09
            • 2022-10-13
            • 2015-04-30
            • 1970-01-01
            • 2017-04-26
            • 2010-10-17
            • 2014-07-13
            相关资源
            最近更新 更多