Python编程菜鸟成长记--A1--01--编程语言介绍

1.重点知识

  • 什么是编程?为什么要编程?
  • 理解编程语言是什么?为什么要编程?
  • 编程语言是如何与计算机底层通信的?编程语言有哪些分类?
  • 列举主流编程语言的特点

2.什么是编程?为什么要编程?

  • 编程是个动词,编程=写代码

  • 写代码为的是让计算机做你想做的事。如:马化腾想跟别人聊天,于是他就写了个聊天软件。
    这个软件就是一堆代码的集合,这些代码是什么?这些代码是计算机能理解的语言。

    • 举个🌰:

      你是公司老板,你有一个员工是中国人,你想让他干活就得说中文;还有一个员工是美国人,想让他干活就得说英文;还有一条狗,想让他听话就得汪汪汪~~你现在有台电脑,想让它干活就得用它“听”得懂的语言。

  • 计算机能"听"得懂什么语言呢?

  • 二进制。也就是 0 1组成的代码。但是让人直接输入 0 1给计算机,不仅人理解困难,而且也太慢了。

  • 所以,最好的办法就是输入简单的指令,让计算机把转换成二进制代码执行。

    • 我们再举个🌰
    程序猿想让计算机播放一个教学视频,只需要输入如下指令:
    
    open '波多老师.mp4'
    play
    
    计算机的 CPU 接收到这样的指令后,会把它转换成 CPU “听”得懂的指令,再把这些指令转换成二进制
    
    指令           op           rs            rt      adreess | immediate
    decimal      35           3             8               68
    binary     100011      00011      01000      00000 000001 000100
    
    最终,CPU 去调用硬盘上这个教学视频,通过显示器、音箱播放。
  • 但是示例中 CPU 指令太难理解了,如果让你每天写这种代码,非得疯掉不可。

  • 万幸的是,我们伟大的先驱们,开发了各种编程语言,让我们只需要写一些简单的指令,就能让计算机干活了。👏

3.有哪些编程语言?

  • 编程语言总体分为3类:

    • 机器语言

    • 汇编语言

    • 高级语言

3.1.机器语言

  • 因为计算机只能理解二进制代码0 1,因此用 0 1描述的指令,称为机器指令

  • 机器指令的集合组成了机器语言

  • 机器语言编写的程序称为目标程序。只有目标程序才能被计算机识别、执行。

  • 机器语言属于低级语言。现在,除了计算机生产厂家的专业技术人员外,绝大多数的程序猿已经不再去学习、使用机器语言了。

    • 机器语言示例
    # 指令
    0000		LOAD
    0001		STORE
    
    # 暂存器
    0000		暂存器 A
    0001		暂存器 B
    
    # 存储器
    000000000000		地址为 0 的暂存器
    000000000001		地址为 1 的暂存器
    000000010000		地址为 16 的暂存器
    100000000000		地址为 2^11 的暂存器
    
    # 组合示例
    0000 0000, 000000010000		LOAD A,16
    0000 0001, 000000000001		LOAD B,1
    0001 0001, 000000010000		STORE B,16
    0001 0001, 000000000001		STORE B,1
    

3.2.汇编语言

  • 汇编语言本质上和机器语言是相同的,都是直接操作硬件,只不过指令变成了英文缩写的标识符,更容易识别和记忆。
  • 它同样需要编程者将每一步具体的操作用命令的形式写出来,每一句指令只能对应实际操作过程中的一个很细微的操作。
    • 如:移动、自增等
  • 因此汇编程序一般笔记冗长、复杂、容易出错,而且要求编程者有很深的专业知识。
  • 优点也很明显,它能做高级语言做不了的操作,而且源程序编译的可执行文件不仅小,而且执行速度快。
    • 打印Hello, world!需要 10多行代码,emmmm~~~ 让我们来感受一下:
      (建议:先挡住右边👉注释,感受会更墙裂)
:hello.asm
section .data                                           ; 数据段声明
           msg db "Hello, world!", 0xA                     ; 要输入的字符串
           len equ $ - msg                                  ; 字串长度
section .text                                            ; 代码段声明
global _start                                            ; 指定入口函数
_start:                                                     ; 在屏幕上显示一个字符串
         mov edx, len                                   ; 参数 3:字符串长度
         mov ecx, msg                                 ; 参数 2:要显示的字符串
         mov ebx, 1                                      ; 参数 1:文件描述符(stdout)
         mov eax, 4                                     ; 系统调用号(sys_write)
         int 0x80                                         ; 调用内核功能
                                                              ; 退出程序
         mov ebx, 0                                      ; 参数 1:退出代码
         mov eax, 1                                       ; 系统调用号(sys_exit)
         int 0x80                                          ; 调用内核功能

3.3.高级语言

  • 高级语言是相对低级语言而言,相比汇编语言,它不是特指某一种语言,而是包括了很多编程语言。

    • 如:最简单的编程语言PASCAL,也是高级语言。
  • 它不但将许多相关的机器指令和成为单条指令,并且去掉了与具体某个操作系统相关、但与完成工作无关的细节。

    • 如:使用堆栈、寄存器等。
  • 这样就大大简化了程序中的指令,同时,由于省略了很多细节,编程者也就不需要具备特别深、特别多的专业知识。

  • 高级语言不能直接被计算机识别,必须经过转换才能被执行,按转换方式可分为 2类:

    • 编译型语言
    • 解释型语言

3.3.1.编译型语言

  • 编译型语言程序在执行之前需要一个专门的编译过程,把程序编译成为二进制(机器语言)文件,运行时不需要重新翻译,直接使用编译的文件就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。
  • 同等条件下,编译型语言程序对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时,都采用它。
  • 优点:
    • 执行速度快。
    • 不依赖语言环境。
  • 缺点:
    • 不如解释型语言跨平台性好。
    • 调试、修改程序时,需要先修改源码,再次编译成目标文件才能执行。

3.3.2.解释型语言

  • 解释型语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释型语言必须先解释再运行
  • 一般来说,现有的解释型语言都是采用的逐行解释,逐行执行这样的方式来构建的。这样解释型语言每执行一次就要翻译一次,效率比较低。
  • 优点:
    • 可以跨平台。
    • 调试方便。
    • 开发效率高。
  • 缺点:
    • 执行时依赖解释器才能运行。
    • 执行速度比编译型语言慢,但是在计算机性能飞速升级迭代的今天,开发效率至上已经成了绝大多数开发者的共识。

3.4.小结

  1. 机器语言

    • 优点:最底层、执行速度最快。
    • 缺点:最复杂、开发效率最低。
  2. 汇编语言

    • 优点:较底层、速度最快。
    • 缺点:较复杂,开发效率最低。
  3. 高级语言

    • 编译型
      • 优点:执行速度快、不依赖语言环境运行。
      • 缺点:跨平台性差。
    • 解释型
      • 优点:跨平台性好。
      • 缺点:执行速度慢、依赖解释器才能运行。

4.主流编程语言介绍

  • 世界上有 600 多种编程语言,但是主流的最多只有二三十种,不同的语言有自己的特点和擅长领域。

  • 随着技术发展、新语言的诞生,很多老旧语言慢慢被人抛弃。

  • 业界有个权威网站对编程语言流行度进行了排名

    • 语言流行度排名网站-TIOBE

      由上图可见,Python整体呈上升趋势,截止2019年6月9日已跃居第3,Python应用越来越广泛并且也逐渐得到业内的认可!

4.1.主流编程语言介绍

4.1.1.C 语言

  • C 语言时一种计算机程序设计语言,它既有高级语言的特点,又有汇编语言的特点。
  • 它由美国贝尔实验室的[Dennis M.Ritchie](https://baike.baidu.com/item/Dennis M.Ritchie)于1972年设计完成。
  • 1978年后,C 语言已先后被移植到大中小及微型机上,它可以作为应用操作系统设计语言、编写系统应用程序,还可以作为应用程序设计语言,编写不易烂计算机硬件的应用程序。
  • 它应用官方,具备很强的数据处理能力,不仅在软件开发上,而且各类科研都要用到 C 语言,单片机及嵌入式系统开发也会使用 C 语言。

4.1.2.C ++

  • C++ 是 C 语言的继承和扩展,它既可以进行 C 语言的面向过程编程,也可以进行面向对象编程。
  • C++不仅拥有计算机搞笑运行的使用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
  • windows 上的软件和游戏大都是用C++编写的。

4.1.3.JAVA

  • Java 是一种可编写跨平台应用程序的面向对象的程序设计语言。
  • 它是 Sun 公司在 1995年5月推出的 Java 语言和 Java 平台(JaveSE、JavaEE、JavaME)的总称。
  • 它具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于 PC、DC、游戏控制台、科学超级计算机、移动电话、互联网,同时还有全球最大的专业开发着社群。

4.1.4.PHP

  • PHP 即 Hypertext Preprocessor,超文本预处理器。
  • 它是一种通用开源脚本语言。它的语法吸收了 C 语言、Java、Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。
  • 被 PHP 开发者称为"世界上最好的编程语言(没有之一)"。😄

4.1.5.Ruby

  • 它是一种简单快捷的面向对象的脚本语言,在20世纪90年代由日本人松本行弘开发,遵守GPL协议和Ruby License。

4.1.6.Go

  • Go 是一个开源的编程语言,它能编写构造简单、可靠、高效的软件。
  • Go 是在 2007年末,由 Robert Griesemer、Rob Pike、Ken Thompson 主持开发的,后来 Ian Lance Taylor、Russ Cox 等人相继加入,最终在 2009年11月开源。2012年发布了 Go 1稳定版本。
  • 现在 Go 的开发已经是完全开放的,并且拥有一个活跃的社区。

4.1.7.Python

  • Python 是一门优秀的综合语言,Python 的宗旨是简明、优雅、强大。
  • 在人工智能、云计算、金融分析、大数据开发、Web 开发、自动化运维、自动化测试等领域应用广泛。
  • 已是全球第 3 大主流语言
posted @ 2019-06-14 18:26  指弹小能手  阅读(351)  评论(0编辑  收藏  举报

关于作者:专注数据库、Python 开发、ROS、深度学习,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(iamkuboy@163.com)咨询.