`

Shell脚本语言与编译型语言的差异

阅读更多
大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。
编译型语言

很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。

运行程序时,直接读取目标代码(object code)。由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点。

但是,由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。例如,在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。
解释型语言

解释型语言也被称作“脚本语言”。执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降。

使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象;缺点是它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的简单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。脚本编程语言的例子有awk、Perl、Python、Ruby与Shell。


     
什么时候使用Shell



因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。因此,之所以要使用Shell脚本是基于:
简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。
可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
开发容易:可以在短时间内完成一个功能强大又妤用的脚本。

但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:
资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等)。
需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理)。
有跨平台(操作系统)移植需求(一般使用C 或Java)。
复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。
对于影响系统全局性的关键任务应用。
对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。
项目由连串的依赖的各个部分组成。
需要大规模的文件操作。
需要多维数组的支持。
需要数据结构的支持,比如链表或数等数据结构。
需要产生或操作图形化界面 GUI。
需要直接操作系统硬件。
需要 I/O 或socket 接口。
需要使用库或者遗留下来的老代码的接口。
私人的、闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)。

如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧——或许是Perl、Tcl、Python、Ruby——或者是更高层次的编译语言比如C/C++,或者是Java。即使如此,你会发现,使用shell来原型开发你的应用,在开发步骤中也是非常有用的。
分享到:
评论

相关推荐

    shell脚本语言.pdf

    Shell 脚本语言与编译型语言的差异: * 编译型语言需要预编译,而 Shell 脚本语言不需要编译 * 编译型语言需要链接,而 Shell 脚本语言不需要链接 * 编译型语言需要加载,而 Shell 脚本语言不需要加载 Shell ...

    30分钟学会shell.docx

    3. **Shell脚本与编译型语言的差异**: - **编译型语言**:如C、C++,需要先编译成机器码才能执行,运行速度快,但编译过程复杂,不便于修改和调试。 - **解释型语言**:如Shell脚本,直接由解释器逐行执行,无需...

    Shell编程基础教程

    二、Shell与编译型语言的差异 Shell属于解释型语言,与编译型语言(如C、C++)相比有以下不同: 1. 编译型语言:代码先被编译成机器码,然后执行,运行速度快,但编译过程较为繁琐。 2. 解释型语言:代码在运行时...

    什么是Shell?Shell脚本基础知识详细介绍

    编译型语言如C++、Java等需要先通过编译器将源代码转化为机器码,然后运行,这种方式执行速度快但编译过程较为繁琐。而Shell脚本属于解释型语言,每次执行时都会逐行解释并执行,这使得编写和调试脚本更加方便,但...

    Shell开发教程.docx

    Shell脚本语言与编译型语言的差异 **Shell脚本与编译型语言的主要区别**: - **解释执行 vs 编译执行**:Shell脚本是逐行解释执行的,而编译型语言如C/C++需要先编译成二进制代码再执行。 - **动态类型 vs 静态...

    opencv各版本编译自动化脚本

    通过运行特定版本的shell脚本,用户可以一键完成所有操作,极大地简化了OpenCV的安装流程。 **脚本编译流程** 1. **下载依赖**:脚本首先会检查并下载必要的依赖库,这些可能包括编译工具(如cmake)、库文件(如...

    linux utility tools for shell and make

    在Linux操作系统中,shell脚本和`make`是两种非常重要的工具,用于自动化任务和构建项目。本资源包"linux utility tools for shell and make"包含了几个经典的Linux实用工具,它们对于编写高效、跨平台的shell脚本和...

    python学习总结(最新可编辑文档).doc

    与C等编译型语言不同,Python代码不需要预编译成机器码,而是直接由Python解释器执行。解释器将Python代码转换成机器可理解的指令,使得代码的修改和执行更为灵活。 【Python与C语言的对比】 1. 语法层面:C语言和...

    74列文本重排工具源码.txt

    这可能是因为C语言是一种低级编程语言,它更接近机器指令,编译后的程序运行效率更高,而Shell脚本则是一种解释型语言,执行效率相对较低。然而,对于较小的文本处理任务,这种性能差异可能并不明显,但对于大量数据...

    braievaluck:使用其他语言的Brainf * ck实现

    6. **脚本语言与编译语言**:Ruby、Python、Perl、Lua 和 Bash 属于脚本语言,它们的实现可能更依赖于解释器,而 Golang 是编译语言,其执行效率可能更高。 7. **文本处理与系统编程**:Perl 在文本处理方面强大,而...

    小甲鱼python课后题.doc

    - 开发效率高,但运行效率可能不如编译型语言。 #### 二、Python环境与工具 - **IDLE介绍**:IDLE是Python自带的集成开发环境(IDE),它提供了一个简单的图形界面供用户编写和测试Python代码。 - IDLE作为一个...

    《零基础学习python》全套课后题.doc

    它们在开发速度上优于编译型语言,但运行效率可能相对较低。 IDLE是Python的集成开发环境(IDE)自带的一个Python Shell,它提供了一个交互式的环境,让用户可以直接输入Python代码并立即看到结果。Shell是用户与...

    python课后题及答案-python全书课后习题答案.doc

    与系统编程语言如C、C++或Java相比,Python的学习曲线较平缓,其解释执行的方式允许程序员快速开发和调试程序,而不必像编译型语言那样经历编译过程。 IDLE是Python的标准集成开发环境(IDE),它包含了一个Python ...

    tcl学习资料 tcl学习资料

    在代码量上,TCL比Motif或Win32 API需要编写更少的代码,因为它是解释型语言,可以直接执行,无需编译或链接。TCL语言是高度可扩展的,允许用户在TCL或C语言中定义新的命令。此外,TCL还具有嵌入性,可以将TCL解释器...

    uv_mmrs.rar_matlab例程_Unix_Linux_

    在Unix或Linux环境中,程序员经常需要处理命令行工具、脚本语言和编译型语言,MATLAB作为一个交互式的数值计算和可视化环境,它提供了在这些操作系统上运行的版本。MATLAB例程通常涉及到矩阵运算、数据处理、图形...

    m1-test:Java编译速度对比测试:M1 MacBook Air与Intel Core i9 MacBook Pro

    这可能是一个Java程序,或者是使用Shell脚本或其他语言编写的,用于启动和时间测量Java编译过程。 总的来说,这个测试揭示了在新的硬件架构下,尤其是从传统的x86转向ARM架构时,开发者可能面临的性能变化。对于...

    lnmp-ubuntu:ubuntu下源码shell编译安装lnmp

    **PHP** 是一种常用的服务器端脚本语言,用于动态网页开发。这里以PHP 7.4为例: 1. 下载PHP源码: ```bash wget https://www.php.net/distributions/php-7.4.28.tar.gz tar -zxf php-7.4.28.tar.gz cd php-7.4.28 ...

    写给Python程序员的Scala入门教程1

    /bin/sh`和`exec scala "$0" "$@"`,可以将Scala脚本作为shell脚本执行。 7. **Scala的依赖管理和构建工具**: 类似于Python的pip和setuptools,Scala有Maven、Gradle和SBT等构建工具来管理项目依赖和构建流程。...

    Autotools.A.Practioner's.Guide.to.GNU.Autoconf.Automake.and.Libtool

    - **简介**:GNU Autoconf是一个用于生成自动配置脚本(通常是名为`configure`的Shell脚本)的工具。这些脚本会检测目标系统的特性并据此调整编译选项。 - **工作原理**: - **M4宏处理器**:Autoconf内部使用M4宏...

Global site tag (gtag.js) - Google Analytics