- 浏览: 50349 次
- 性别:
文章分类
- 全部博客 (103)
- 一致性哈希算法 (1)
- 云计算 (2)
- Cassandra学习 (2)
- Java网络通信与笔记 (14)
- ZooKeeper学习 (1)
- HBase学习 (1)
- Sqoop学习 (1)
- Java网页开发之 (2)
- Java网络通信框架 (5)
- (memcached)分布式内存对象缓存系统 (1)
- Redis学习 (5)
- Shell学习 (14)
- Linux学习 (10)
- MySQL优化 (17)
- C++ (7)
- HTML5 (5)
- Android学习 (5)
- 网络 (2)
- Node.js (1)
- D3.js (1)
- R语言学习 (3)
- Spark (1)
- CAN协议 (2)
- 解决方案 (0)
最新评论
大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言。
编译型语言
很多传统的程序设计语言,例如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似乎是各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来原型开发你的应用,在开发步骤中也是非常有用的。
编译型语言
很多传统的程序设计语言,例如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文件包含
2015-09-05 14:20 0像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内 ... -
Shell输入输出重定向:Shell Here Document,/dev/null文件
2015-09-05 14:16 0Unix 命令默认从标准输 ... -
Shell函数参数
2015-09-05 14:10 0在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 ... -
Shell函数:Shell函数返回值、删除函数、在终端调用函数
2015-09-05 14:07 0函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰 ... -
Shell break和continue命令
2015-09-05 14:05 0在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像 ... -
Shell until循环
2015-09-05 14:03 0until 循环执行一系列命令直至条件为 true 时停止。u ... -
Shell while循环
2015-09-05 14:00 0while循环用于不断执行一系列命令,也用于从输入文件中读取数 ... -
Shell for循环
2015-09-08 22:58 467与其他编程语言类似,Shell支持for循环。 for循环一 ... -
Shell case esac语句
2015-09-05 13:57 0case ... esac 与其他语言中的 switch .. ... -
Shell if else语句
2015-09-05 13:54 0if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。S ... -
shell printf命令:格式化输出语句
2015-09-13 16:01 546printf 命令用于格式化输出, 是echo命令的增强版。它 ... -
Shell echo命令
2015-09-13 16:00 1023echo是Shell的一个内部指令,用于在屏幕上打印出指定的字 ... -
Shell数组:shell数组的定义、数组长度
2015-09-12 10:17 602Shell在编程方面比Windows批处理强大很多,无论是在循 ... -
Shell字符串
2015-09-11 22:00 301字符串是shell编程中最常用最有用的数据类型(除了数字和字符 ... -
Shell注释
2015-09-11 22:00 372以“#”开头的行就是注释,会被解释器忽略。 sh里没有多行注 ... -
Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
2015-09-06 20:19 455Bash 支持很多运算符, ... -
Shell替换:Shell变量替换,命令替换,转义字符
2015-09-06 20:18 850如果表达式中包含特殊 ... -
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
2015-09-06 20:18 365前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其 ... -
Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
2015-09-05 13:09 607Shell支持自定义变量。 定义变量 定义变量时,变量名不加 ... -
第一个Shell脚本
2015-09-05 13:02 301打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell ...
相关推荐
Shell 脚本语言与编译型语言的差异: * 编译型语言需要预编译,而 Shell 脚本语言不需要编译 * 编译型语言需要链接,而 Shell 脚本语言不需要链接 * 编译型语言需要加载,而 Shell 脚本语言不需要加载 Shell ...
3. **Shell脚本与编译型语言的差异**: - **编译型语言**:如C、C++,需要先编译成机器码才能执行,运行速度快,但编译过程复杂,不便于修改和调试。 - **解释型语言**:如Shell脚本,直接由解释器逐行执行,无需...
二、Shell与编译型语言的差异 Shell属于解释型语言,与编译型语言(如C、C++)相比有以下不同: 1. 编译型语言:代码先被编译成机器码,然后执行,运行速度快,但编译过程较为繁琐。 2. 解释型语言:代码在运行时...
编译型语言如C++、Java等需要先通过编译器将源代码转化为机器码,然后运行,这种方式执行速度快但编译过程较为繁琐。而Shell脚本属于解释型语言,每次执行时都会逐行解释并执行,这使得编写和调试脚本更加方便,但...
Shell脚本语言与编译型语言的差异 **Shell脚本与编译型语言的主要区别**: - **解释执行 vs 编译执行**:Shell脚本是逐行解释执行的,而编译型语言如C/C++需要先编译成二进制代码再执行。 - **动态类型 vs 静态...
通过运行特定版本的shell脚本,用户可以一键完成所有操作,极大地简化了OpenCV的安装流程。 **脚本编译流程** 1. **下载依赖**:脚本首先会检查并下载必要的依赖库,这些可能包括编译工具(如cmake)、库文件(如...
在Linux操作系统中,shell脚本和`make`是两种非常重要的工具,用于自动化任务和构建项目。本资源包"linux utility tools for shell and make"包含了几个经典的Linux实用工具,它们对于编写高效、跨平台的shell脚本和...
与C等编译型语言不同,Python代码不需要预编译成机器码,而是直接由Python解释器执行。解释器将Python代码转换成机器可理解的指令,使得代码的修改和执行更为灵活。 【Python与C语言的对比】 1. 语法层面:C语言和...
这可能是因为C语言是一种低级编程语言,它更接近机器指令,编译后的程序运行效率更高,而Shell脚本则是一种解释型语言,执行效率相对较低。然而,对于较小的文本处理任务,这种性能差异可能并不明显,但对于大量数据...
6. **脚本语言与编译语言**:Ruby、Python、Perl、Lua 和 Bash 属于脚本语言,它们的实现可能更依赖于解释器,而 Golang 是编译语言,其执行效率可能更高。 7. **文本处理与系统编程**:Perl 在文本处理方面强大,而...
- 开发效率高,但运行效率可能不如编译型语言。 #### 二、Python环境与工具 - **IDLE介绍**:IDLE是Python自带的集成开发环境(IDE),它提供了一个简单的图形界面供用户编写和测试Python代码。 - IDLE作为一个...
它们在开发速度上优于编译型语言,但运行效率可能相对较低。 IDLE是Python的集成开发环境(IDE)自带的一个Python Shell,它提供了一个交互式的环境,让用户可以直接输入Python代码并立即看到结果。Shell是用户与...
与系统编程语言如C、C++或Java相比,Python的学习曲线较平缓,其解释执行的方式允许程序员快速开发和调试程序,而不必像编译型语言那样经历编译过程。 IDLE是Python的标准集成开发环境(IDE),它包含了一个Python ...
在代码量上,TCL比Motif或Win32 API需要编写更少的代码,因为它是解释型语言,可以直接执行,无需编译或链接。TCL语言是高度可扩展的,允许用户在TCL或C语言中定义新的命令。此外,TCL还具有嵌入性,可以将TCL解释器...
在Unix或Linux环境中,程序员经常需要处理命令行工具、脚本语言和编译型语言,MATLAB作为一个交互式的数值计算和可视化环境,它提供了在这些操作系统上运行的版本。MATLAB例程通常涉及到矩阵运算、数据处理、图形...
这可能是一个Java程序,或者是使用Shell脚本或其他语言编写的,用于启动和时间测量Java编译过程。 总的来说,这个测试揭示了在新的硬件架构下,尤其是从传统的x86转向ARM架构时,开发者可能面临的性能变化。对于...
**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 ...
/bin/sh`和`exec scala "$0" "$@"`,可以将Scala脚本作为shell脚本执行。 7. **Scala的依赖管理和构建工具**: 类似于Python的pip和setuptools,Scala有Maven、Gradle和SBT等构建工具来管理项目依赖和构建流程。...
- **简介**:GNU Autoconf是一个用于生成自动配置脚本(通常是名为`configure`的Shell脚本)的工具。这些脚本会检测目标系统的特性并据此调整编译选项。 - **工作原理**: - **M4宏处理器**:Autoconf内部使用M4宏...