广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >静态语言和动态语言,解释和编译
  • 835
分享到

静态语言和动态语言,解释和编译

rubyphp开发语言 2023-09-05 20:09:16 835人浏览 泡泡鱼
摘要

前提 通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令,也就是由 0 和 1 组成的机

前提

通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。
所谓二进制指令,也就是由 0 和 1 组成的机器码,能被计算机直接识别并执行。

定义

先来看一下各种名词的定义

静态类型语言(Statically Typed Language)

静态类型语言是C,c++,Java等语言,在这种类型的语言中,变量的数据类型在编译时是已知的,这意味着程序员必须在声明变量时指定变量的数据类型。我们必须预先定义函数的返回类型,以及它正在接受或接受的变量类型,以便进一步评估。

动态类型语言(Dynamically Typed Language)

这些语言不需要任何变量的任何预定义数据类型,因为它在运行时由机器本身解释。在这些语言中,解释器在运行时根据其值将数据类型分配给变量。我们甚至不需要指定函数在这些语言中返回或接受的变量类型。 javascript, python, Ruby, Perl 等是动态类型语言的例子。

脚本语言(Scripting language)

脚本语言是一种被解释的编程语言。它在代码运行时(而不是事先)转换为机器代码。脚本语言通常用于完整计算机程序上的短脚本。JavaScript, Python, Ruby 都是脚本语言的例子。

脚本语言一定是动态语言。

解释执行(interpretation)

有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序,比如 Python、JavaScript、PHPshell 等,这类编程语言称为解释型语言,使用的转换工具称为解释器。

编译执行(compilation )

有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(比如 windows 下的 .exe 文件),比如C语言、C++、golang、汇编语言等,它们都属于编译型语言,使用的转换工具称为编译器。

讨论

动态/静态语言和解释/编译执行之间有必然的对应关系吗?

结论:没有
Java是解释型语言但是不是动态语言,Java不能在运行的时候改变自己结构。反之成立吗?动态语言都是解释型语言。也是错的!Object-C是编译型语言,但是他是动态语言。得益于特有的run time机制(准确说run time不是语法特性是运行时环境,这里不展开)OC代码是可以在运行的时候插入、替换方法的。

脚本语言和动态语言是一回事儿吗?

关于这个问题,我觉得这篇文章写的很好:动态语言——披着彩衣飞舞的脚本语言

为什么会出现编译执行和解释执行两种方式?

参考

编程语言傻傻分不清:弱类型、强类型、动态类型、静态类型

编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

编译和解释的区别是什么?

来源地址:https://blog.csdn.net/u013036688/article/details/127429169

--结束END--

本文标题: 静态语言和动态语言,解释和编译

本文链接: https://www.lsjlt.com/news/396121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 静态语言和动态语言,解释和编译
    前提 通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令,也就是由 0 和 1 组成的机...
    99+
    2023-09-05
    ruby php 开发语言
  • c语言静态库如何反编译
    在C语言中,静态库是以二进制形式存储的,因此无法直接进行反编译。静态库是由编译器将多个目标文件打包成一个文件,其中包含了目标文件的机...
    99+
    2023-09-29
    c语言
  • Java和C语言如何使用静态语言实现动态数组
    这篇文章将为大家详细讲解有关Java和C语言如何使用静态语言实现动态数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JAVA版JAVA自带了一个集合类ArrayList,可以实现动态数组的功能,相比原生...
    99+
    2023-05-31
    java c语言
  • C#是编译语言还是解释语言
    本篇内容主要讲解“C#是编译语言还是解释语言”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#是编译语言还是解释语言”吧!“C# Java是解释型语言?Oh my god”“引用vls:C# J...
    99+
    2023-06-17
  • java动态和静态语言的区别是什么
    今天就跟大家聊聊有关java动态和静态语言的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、动态语言在运行中可以改变结构的语言。例如,新函数、对象、代码可以引进,现有函数...
    99+
    2023-06-15
  • php是编译型语言还是解释性语言
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php是解释型语言。每个平台都有对应的php解释器版本,指针对不同平台均编译出目标平台的二进制码;php解释器会将PHP代码解释为opcode之后再交由Zend引擎执行...
    99+
    2015-08-16
    php 编译型语言 解释性语言
  • java是编译型语言还是解释型语言
    java语言看似是编译型的,因为Java程序代码的确是需要经过编译的。还记得在cmd中用javac的命令吗?没错,javac就是用来编译Java程序代码的(把.java源程序编译为.class文件),不经过编译,.java文件运行不了!Ja...
    99+
    2018-01-17
    java入门 java 编译型 解释型 语言
  • web开发中静态和动态语言怎么选择
    这篇文章主要讲解了“web开发中静态和动态语言怎么选择”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web开发中静态和动态语言怎么选择”吧!动态型  VS  静态型动态语...
    99+
    2023-06-17
  • PHP指的是解释型语言还是编译型语言
    这篇文章主要介绍PHP指的是解释型语言还是编译型语言,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!编译型语言使用专门的编译器(类似于Windows下的Visual Studio)、针对特定平台(操作系统)将某种高级语...
    99+
    2023-06-15
  • C语言编程gcc如何生成静态库.a和动态库.so示例详解
    目录一、什么是静态库和动态库二、gcc生成.a静态库和.so动态库1.生成静态库(.a)1.1编辑生成例子程序hello.h、hello.c和main.c1.2将hello.c编译成...
    99+
    2022-11-12
  • Go语言非main包如何编译为静态库并使用
    这篇文章主要介绍“Go语言非main包如何编译为静态库并使用”,在日常操作中,相信很多人在Go语言非main包如何编译为静态库并使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言非main包如何编译为...
    99+
    2023-06-20
  • C语言之详解静态变量static
    目录关键字static    修饰局部变量运行结果:调用静态变量static运行结果:结论: 修饰全局变量 代码执行:代码执行:结论...
    99+
    2023-05-15
    C语言详解static关键字 C语言static关键字 详解static关键字
  • C语言静态与动态通讯录的实现流程详解
    目录静态通讯录contact.hcontact.ctest.c动态通讯录contact.hcontact.cqsort.ctest.c本次通讯录的代码已经放到我的Gitee仓库中,感...
    99+
    2022-11-12
  • 怎么理解Python动态语言
    本篇文章给大家分享的是有关怎么理解Python动态语言,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。有人说Python动态语言是一种解释性的语言,但是这种说法是不正确的,其实P...
    99+
    2023-06-17
  • C语言动态数组详解
    目录内存分配函数malloc calloc realloc free内存操作函数 memset memcpy memmove二维动态数组的建立和释放总结内存分配函数malloc ca...
    99+
    2022-11-12
  • Go语言非main包编译为静态库并使用的示例代码
    Go语言项目中基本上都是以源码的形式提供包,对公司或者企业而言,如果想要隐藏关键代码怎么办? 我们可以将Go的非main包编译为静态库提供给用户使用。下面以Windows为例,介绍一...
    99+
    2022-11-12
  • C语言静态动态两版本通讯录实战源码
    目录正片开始静态版本头文件( phonebook.h)接口(test.c)功能板块(phonebook.c)1. 初始化:2. 增添:3.查找4.删除5.修改6.排序7.全览静态版全...
    99+
    2022-11-13
  • C语言实现通讯录的方法(包括静态版本和动态版本)
    目录1.静态通讯录的实现实现的方法:2.动态通讯录的实现实现的方法:3.总结1.静态通讯录的实现 实现的方法: 我们采用的方法就是工程形势,实现将功能和定义以及测试分成三个文件,其中...
    99+
    2022-11-12
  • C语言栈、堆和静态存储区怎么使用
    本文小编为大家详细介绍“C语言栈、堆和静态存储区怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言栈、堆和静态存储区怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、程序中的栈栈是现代计算机程...
    99+
    2023-06-30
  • C语言动态与静态分别实现通讯录的方法
    这篇文章主要讲解了“C语言动态与静态分别实现通讯录的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言动态与静态分别实现通讯录的方法”吧!一.静态通讯录的实现1.环境的分工逻辑由于过程...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作