zoukankan      html  css  js  c++  java
  • 编程语言类型

    编译型和解释型

    编译型:编译器一次把所有的代码编译成机器语言,然后写成可执行文件;

    解释型:程序运行中,由解释器不断地把源码解释,执行,并不断地解释,执行;

    优缺点:

        编译型执行速度较快(C/C++、VB)更适合开发操作系统、大型应用程序、数据库系统等;

        解释型对不同系统平台间的兼容性较高(Java、JavaScript、Python)更适合做一些网页脚本、服务器脚本及辅助开发接口。

           既然编译型与解释型各有优缺点又相互对立,所以一批新兴的语言都有把两者折中起来的趋势。例如Java语言虽然比较接近解释型语言的特征,但在执行之前已经预先进行了一次预编译,生成的代码是介于机器码和Java源代码之间的中介代码,运行的时候有JVM解释执行。它既保留了源码的高抽象、可移植的特点,又已经完成了对源码的大部分预编译工作,所以执行起来比“纯解释型”程序 要快许多,C#也类似。随着设计技术与硬件的不断发展,编译型与解释型两种方式的界限正在不断变得模糊。

           其实Python也是一门先编译后解释的语言:

                  当Python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当Python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程(pyc文件其实是PyCodeObject的一种持久化保存方式)。

    动态语言和静态语言

    动态语言:指在运行期间才去做数据类型检查的语言(所以永远不用给任何变量指定数据类型,Python、Ruby)

    静态语言:数据类型是在编译期间检查的(所以写程序时要声明所有变量的数据类型,C/C++、C#、Java)

    强类型语言和弱类型语言

    是否可以不同类型之间对使用者透明地隐式转换

    强类型语言:强制数据类型定义的语言(一个变量一旦被指定了某个数据类型,如果不经过强制转换,那么它永远就是这个数据类型),强类型定义语言是类型安全的语言;

    弱类型语言:数据类型可以被忽略的语言,一个变量可以赋不同数据类型的值,速度略快于强类型语言。

    个人理解:弱类型语言应该都有“===”符号(像PHP,JavaScript),而且它们允许字符串跟数字相加,可见它们定义的变量的数据类型不固定。

  • 相关阅读:
    docker 安装mysql
    Java web项目搭建系列之二 Jetty下运行项目
    Java web项目搭建系列之一 Eclipse中新建Maven项目
    Maven 添加其他Maven组件配置问题
    C# 中定义扩展方法
    Oracle 函数
    【Webservice】2 counts of IllegalAnnotationExceptions Two classes have the same XML type name
    Linux精简版系统安装网络配置问题解决
    Rsync 故障排查整理
    Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/8313475.html
Copyright © 2011-2022 走看看