入门-编程语言了解

我们先来了解一下编程语言,编程语言主要从以下几个角度为进行分类:

编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言。

编译型

编译型语言其实和其他汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码,这个过程就称为编译(Compile), 而负责编译的程序自然就称为编译器(Compiler)。如果我们写的程序代码都包含在一个源文件中,那么通常编译之后就会直接生成一个可执行文件,我们就可以直接运行了。但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Object file)而不是前面说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上已经是可执行代码了,但由于只是整个项目的一部分,所以我们还不能直接运行。待所有的源文件的编译都大功告成,我们就可以最后把这些半成品的目标文件”打包”成一个可执行文件了, 这个工作由另一个程序负责完成,由于此过程好像是把包含可执行代码的目标文件连接装配起来,所以又称为链接(Link),而负责链接的程序就叫链接程序(Linker)。链接程序除了链接目标文件外,可能还有各种资源,像图标文件啊、声音文件啊什么的,还要负责去除目标文件之间的冗余重复代码,等等。链接完成之后,一般就可以得到我们想要的可执行文件了。

解释型

从字面上看,“编译”和 “解释”的确都有“翻译”的意思,它们的区别则在于翻译的时机安排不大一样。打个比方:假 如你打算阅读一本外文书,而你不知道这门外语,那么你可以找一名翻译,给他足够的时间 让他从头到尾把整本书翻译好,然后把书的母语版交给你阅读;或者,你也立刻让这名翻译 辅助你阅读,让他一句一句给你翻译,如果你想往回看某个章节,他也得重新给你翻译。

两种方式,前者就相当于我们刚才所说的编译型:一次把所有的代码转换成机器语言,然后 写成可执行文件;而后者就相当于我们要说的解释型:在程序运行的前一刻,还只有源程序 而没有可执行程序;而程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外 壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行...... 所以,解释型程序是离不开解释程序的。像早期的 BASIC 就是一门经典的解释型语言,要 执行 BASIC 程序,就得进入 BASIC 环境,然后才能加载程序源文件、运行。解释型程序中, 由于程序总是以源代码的形式出现,因此只要有相应的解释器,移植几乎不成问题。编译型 程序虽然源代码也可以移植,但前 是必须针对不同的系统分别进行编译,对于复杂的工程 来说,的确是一件不小的时间消耗,况且很可能一些细节的地方还是要修改源代码。而且, 解释型程序省却了编译的步骤,修改调试也非常方便,编辑完毕之后即可立即运行,不必像 编译型程序一样每次进行小小改动都要耐心等待漫长的 Compiling...Linking...这样的编译 链接过程。不过凡事有利有弊,由于解释型程序是将编译的过程放到执行过程中,这就决定 了解释型程序注定要比编译型慢上一大截,像几百倍的速度差距也是不足为奇的。

编译型与解释型,两者各有利弊

前者由于程序执行速度快,同等条件下对系统要求较低, 因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像 C/C++、 Pascal/Object Pascal(Delphi)、VB 等基本都可视为编译语言,而一些网页脚本、服务 器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程 序则通常使用解释性语言,如 Java、JavaScript、VBScript、Perl、Python 等等。

动态语言和静态语言

通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说, 在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋 值给变量时,在内部将数据类型记录下来。Python 和 Ruby 就是一种典型的动态类型语言, 其他的各种脚本语言如 VBScript 也多少属于动态类型语言。

(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间 检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代 表,其他的静态类型语言还有 C#、JAVA 等。

对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。

强类型定义语言和弱类型定义语言

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量 a,那么程序根本不可能将 a 当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量 可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性 能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python 是动态语言,是强类型定义语言(类型安全的语言); VBScript 是动态语言,
是弱类型定义语言(类型不安全的语言); JAVA 是静态语言,是强类型定义语言(类型安全的语言)。

时间: 2024-10-25 03:53:49

入门-编程语言了解的相关文章

入门编程语言的选择问题

目前国内很多学校计算机学科各专业(注意没有考虑其他专业)学习的第一门编程语言大部分是C/C++,但是国外许多大学有选择Java,Python等作为入门语言. 大体来说,我赞成C语言一定要学,但是否作为入门语言值得进一步尝试. 一般来说,反对C语言作为第一门编程语言的理由比较难学,更贴近机器而不是贴近人. 而支持的理由也非常明显:因为贴近机器,C语言可以把计算机专业的课程体系贯穿起来,例如数据结构,操作系统,网络编程,编译等课程采用C语言来实现是非常自然的事情. 参见下面的讨论 C语言和Pytho

Linux bash编程入门

一.bash编程入门 编程语言: 编译型语言:编译器  c,c++ 解释型语言:解释器 解释器可独立运行 变量:保持数据的载体,命令的内存空间 本地变量: 环境变量 局部变量: 位置参数变量:$1,$2..., 特殊变量: $0 当前脚本的名字 shell脚本:shebang #!/bin/bash         #解释此脚本的shell路径,内核调用对应的解释器来解释脚本 #Description: #Version: #Author: #License: #Datetime: 脚本文件,其

准备踏入IT编程的学子们,你们第一门编程语言选谁? Are You Ready? Go!

Are You Ready? Go! ——第一门编程语言选谁? 金旭亮 说明: 这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹,希望这篇文章能够帮助他们少走弯路,顺利地迈入软件开发的大门:如果您是一位有经验的软件开发者,或者是关注计算机教育的同行,也敬请提出宝贵意见. 发表看法请在本贴评论,或者在我的新浪微博“北理工教师金旭亮(http://weibo.com/jinxuliang)”上相互沟通. 本文仅代表个人

c语言应该怎么学

现在学习C语言的人有很多,但是c语言应该怎么学习才能学好呢?有人去培训.有人自学,而去培训的人就比较少了,应为有人认为培训浪费的时间多,难道自学就真的很省时间吗? 像现在大学教的语言里要说学习最多的一种编程语言那就数C语言了.这门编程语言,不但计算机相关专业的同学需要学习,机械,电子,自动化等很多专业也需要学习这门编程语言.为了帮助初学者学习c语言,我们给大家分享这部C语言编程入门教程.学习C语言,就要当成去学习一门外语那样去学习.因为C语言,对我们来讲,也像一门新的外语一样.只不过这是计算机使

深圳python提醒需注意这5点

作为美国主流大学最受欢迎的入门编程语言Python,诞生至今已经过了25个年头.相对于其他语言,它更加易学.易读,非常适合快速开发.Python编程简单直接,难度甚至低于Java,十分适合初学编程者,让初学者可以专注于编程逻辑,而不是困惑于晦涩的语法细节上.基于这些优势,Python课程成为了市场上IT培训班上,不少小白者的首选.面对市场上层出不穷的IT培训机构,我们又应该避免哪些坑,才不会被那些不够专业的IT机构所蒙骗呢?小编为大家总结了以下五点. 1.课程框架 一些机构打着Python全栈工

Python基础开发 day1

Python开发基础-Day1-python入门 编程语言分类 机器语言 使用二进制代码直接编程,直接与硬件交互,执行速度非常快,灵活,但是开发难度高,开发效率低下,缺乏移植性. 汇编语言 对机器语言指令进行了英文封装,较机器语言容易记忆,直接与硬件交互,执行速度快,执行文件小,但是开发难度相对也很高,开发效率低 高级语言 语法简单,容易理解,开发难度低效率高,开发后测试方便,但是开发的程序需要经过转换才能执行,所以执行效率相对慢,可移植性高. 解释执行:代码执行时候,解释器按照源代码文件中的内

为什么会有这么多种程序设计语言?

传说人类建造通天塔触怒上帝,上帝施法使人类语言混乱彼此之间无法交流.这就是说各种各样的语言其实就是祸乱之源——只会导致交流的不便.可是看看如今的程序设计语言的数量,你会怀疑人类是否又在造“通天塔”了?真的有这么多语言的必要吗?我到底要学习多少种程序设计语言才够用呢? 根据维基的资料,可以称得上相对“主流”(有人用.有文档)的程序设计语言至少有600种,还有大量的商业化失败.实用性不高.语言小众(这里的“语言”指的是编码的语言,一般的程序设计语言都习惯用拉丁字母集合或其超集来作为源码的字符集,也有

atitit.印度教与java宗教的特点与观念对比 attilax总结

atitit.印度教与java宗教的特点与观念对比 attilax总结 1. Java就是一种宗教 1 2. Java的教义思想,社区理念,价值观念 2 2.1. 教学语言,类似与印度教的祭祀万能 2 2.2. vm 2 2.3. 大杀器,重型框架   无所不能 2 2.4. Crossplatform 2 2.5. 功能齐全 2 2.6. 继承c++,万世一系 2 2.7. 开放精神 2 2.8. 重视设计,轮回理论..因果报应 2 2.9. 组织机构层次分明 3 2.10. 软件不是一时之建

脚本语言script

编程初学者,在学习的时候总会听人说到或者看到"脚本"这个词汇,我初学的时候也不清楚脚本是什么,所以每每看到有人说你会写"脚本"的时候,总以为是一些高深深奥的编程技术.然而事实正好相反,脚本语言是一种比编程语言更为简单,轻便,快捷的语言,下面我们来谈一下什么是脚本. 在谈脚本之前,我们先谈一下什么是编程,一般入门编程语言多多少少会有所了解,编程就是把人想要让计算机做的事情告诉计算机. 计算机所能理解的命令其实只有 0和1 组成的序列,但是要是让我们通过各种 0和1 组