Java 安装

阅读(1870)

在开始 Java 学习之前,你需要先下载并安装好 JDK。

导航到 Java 下载页面

导航到最新 Java 版本的 Java下载页面

单击按钮 “JDK Downloads” 进入到下载详情页。单击任何下载链接后,将出现一个弹出窗口,接受Oracle Java SE 的 Oracle 技术网许可协议以下载此软件。单击复选框,然后继续下载。

这里需要注意的是,Java 在最开始是完全开源的,被 Oracle 收购以后,因为商业化的需要,于2019年对上述发行版本进行了商业限制。

上面下载的 JDK 只能用于个人开发使用,如果商业化使用需要订阅付费。

要是你不想付费,Orcale 也提供了下面的开源 jdk 开源JDK地址

也就是 OpenJDK ,OpenJDK 官网

个人开发的话,下载 Oracle JDK 更好一些,因为它提供了 msi 的傻瓜式安装文件,可以帮助我们配置环境变量等。

Oracke JDK 与 OpenJDK

二者提供的能力几乎一致,大部分时候我们不需要关注他们的差异。

下图大致说明了 OpenJDK 与 Oracle JDK 底层实现的区别,两者共同的代码远大于差异化部分。

目前,业界普遍认为两者性能、功能和执行逻辑没有本质区别。

可以使用命令 java -version 查看JDK的版本,如果是Oracle JDK,会显示

C:\Users\develop>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

而OpenJDK,会显示

[root@localhost ~]# java -version
openjdk version "11-ea" 2018-09-25
OpenJDK Runtime Environment (build 11-ea+28)
OpenJDK 64-Bit Server VM (build 11-ea+28, mixed mode, sharing)

Java 是 Oracle 持有的商标,所以开源版本,不能出现 Java 字样。

OpenJDK is an open source version of sun JDK. Oracle JDK is Sun's official JDK.

此外,二者有不同的 logo,Oracle JDK 是经典的冒气咖啡杯,OpenJDK为Duke图标。

该选择什么 JDK 版本

下表展示了 Oracle 对各个版本的支持情况。

Release GA Date Premier Support Until Extended Support Until
7 July 2011 July 2019 July 2022*
8** March 2014 March 2022 December 2030*
9 (non‑LTS) September 2017 March 2018 Not Available
10 (non‑LTS) March 2018 September 2018 Not Available
11 (LTS) September 2018 September 2023 September 2026
12 (non‑LTS) March 2019 September 2019 Not Available
13 (non‑LTS) September 2019 March 2020 Not Available
14 (non‑LTS) March 2020 September 2020 Not Available
15 (non‑LTS) September 2020 March 2021 Not Available
16 (non-LTS) March 2021 September 2021 Not Available
17 (LTS) September 2021* September 2026* September 2029*

从 Java 9 开始,Oracle 宣布,之后本半年更新一次Java 版本,但是会分长期支持版 LTS 和 非长期支持版 non-LTS 。

你可以通过浏览 Java发展时间线,了解 Java 的变迁史。

如果是想尝试 Java 的各种特性,下载最新版就是了,但是要想正真在生产环境使用,当然还是下载 LTS 版。

下面这张图显示了在2020年,Java 各个版本的使用占比情况。


目前,有两个版本值得关注,Java 8 和 Java 11 ,如果没有特别的需要,那么 Java 8 一般是足够用了。

下载zip或exe包

这里你有两个选择:下载zip或exe包。

Windows x64 安装程序

一个.exe它安装了Java在64位的Windows机器,使所有必要的环境文件。

在64位的Windows机器,使用 .exe或者 .msi 文件安装 Java 最为省心,它可以帮你在无感知状态下完成配置。

对于普通用户来说,这是最好的方法。

使用 exe 安装包,只需要一直点击下一步,即可完成安装。

Windows x64 压缩存档

.zip 文件的好处是,你可以将其解压到计算机的任何位置。在这种情况下,你需要自己更新所有必需的环境变量(例如 PATH、JAVA_HOME 等)。

它最适合希望在其计算机上运行多个 Java 版本的 Java 开发人员。

由于不同的 windows 版本,配置环境变量的步骤稍有不同,这里不再详细演示。

验证Java安装

要验证计算机上是否安装了 Java,请打开一个新的cmd 命令提示符。键入以下命令,它将打印您计算机上安装的 Java 版本。

命令 java -version

控制台如果有类似如下输出,则表明安装成功。

java version "14" 2020-03-17
Java(TM) SE Runtime Environment (build 14+36-1461)
Java HotSpot(TM) 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)

Java 简介

阅读(1735)


Java 是一种非常流行的面向对象的计算机编程语言。

什么是Java编程语言

Java 具有简单性,它是并发的、基于类的、面向对象的,并且专门设计为具有尽可能少的实现依赖性。

它旨在让应用程序开发人员 write once, run anywhere(WORA)即:“编写一次,随处运行”,这意味着编译后的 Java 代码可以在所有支持 Java 的平台上运行,而无需重新编译。

例如,你可以在 UNIX 上编写和编译 Java 程序,然后在 Microsoft Windows、Mac 或 LINUX 机器上运行它,而无需对源代码进行任何修改。

WORA是通过将 Java 程序编译成称为字节码的中间语言来实现的。 字节码的格式是平台无关的,Java 虚拟机 (JVM) 用于在每个平台上运行字节码。

需要注意的是,JVM 虚拟机是区分平台(操作系统)的。

Java 的历史

Java是最初由开发詹姆斯·高斯林在 Sun Microsystems 公司(这已经被甲骨文公司收购),并于1995年发布了作为Sun Microsystems的Java平台的核心组件。

该语言从 C 和 C++ 派生出大部分语法,但它的底层复杂度比它们中的任何一个都少。

在 2010 年 1 月 27 日收购 Sun Microsystems 之后,Oracle 公司是 Java SE 平台正式实现的当前所有者。
该实现基于 Sun 对 Java 的原始实现。Oracle 实现可用于 Microsoft Windows、Mac OS X、Linux 和 Solaris。

Oracle 实现被打包到两个不同的发行版中:

  • Java 运行时环境 (JRE),其中包含运行 Java 程序所需的 Java SE 平台部分,供最终用户使用。
  • Java 开发工具包 (JDK),面向软件开发人员,包括 Java 编译器、Javadoc、Jar 和调试器等开发工具。

Java的特点

Java 具有多种特性。其中一些是 Java 独有的,还有一些在其他语言中很常见。

  • 面向对象——在 Java 中,一切都表示为对象。对象是一种封装数据及其相关行为的包装器,Java 支持所有主要的面向对象原则。
  • 平台独立——用 Java 编写的程序首先由 Java 编译器转换为字节码。该字节码可以在任何具有 Java 运行时环境 (JRE) 的机器上运行。它使 Java 应用程序独立于平台。它与 C 或 C++ 应用程序非常不同,后者将程序编译为特定于操作系统的二进制文件。
  • 安全——Java 应用程序在 Java 运行时环境 (JRE) 中运行,几乎不与系统操作系统交互。它使 Java 比其他语言更安全。
  • 多线程——Java 支持编写可以在单独线程中执行多个任务的应用程序。所有任务都使用操作系统线程的时间切片技术进行。
  • 高性能——Java 是一种解释型语言,因此它可能永远不会像 C 或 C++ 这样的编译型语言一样快。但是,Java 通过使用即时编译器实现了高性能。
  • 操作系统架构中立——Java 编译器生成操作系统架构中立的类文件或字节码。例如,在 C 编程中,int数据类型在 32 位体系结构中占用 2 字节内存,在 64 位体系结构中占用 4 字节内存。但是,对于 Java 中的 32 位和 64 位结构,它都占用 4 字节的内存。

Java 中的垃圾回收

Java 使用自动垃圾收集器来管理对象生命周期中的内存。程序员确定何时创建对象,一旦对象不再使用,Java 运行时负责回收内存。一旦没有对对象的引用,垃圾收集器就会自动释放无法访问的内存。

如果程序员的代码持有对不再需要的对象的引用,则可能仍会发生类似于内存泄漏的情况,通常是当不再需要的对象存储在仍在使用的容器中时。如果调用不存在对象的方法,则会抛出NullPointerException

垃圾收集可能随时发生。理想情况下,它会在程序空闲时发生。如果堆上没有足够的空闲内存来分配新对象,则会即可触发,这可能会导致程序暂时停止。显式内存管理在 Java 中是不可能的。

离开Java新手村

阅读(1932)

Java新手村的内容主要是各种理论,再加少量实践。
从计算机基础,到初识Java,再到第一个Java程序 Hello world。有的只需了解,有的需要理解,还有些会跟随整个Java程序员的“一生”。

尝试回顾一下这些内容

  • 计算机包括硬件软件两部分。
  • 计算机程序,也就是通常所说的软件,是一些不可见的指令,它们控制硬件完成任务。
  • 计算机使用0或1,是因为数字设备有两个稳定的状态,习惯上就是指0和1。
  • 一个比特是指二进制数0或1,一个字节是指8比特的序列。
  • 千字节大约是1000字节,兆字节大约是100万字节,千兆字节大约是10亿字节。
  • 内存中存放CPU要执行的数据和程序指令。
  • 内存是不能长久保存数据的,因为断电时信息就会丢失。
  • 机器语言是一套内嵌在每台计算机的基本指令集。
  • 汇编语言是一种低级程序设计语言,它用助记符表示每一条机器语言的指令。
  • 高级语言类似于英语,易于学习和编写程序。
  • 用高级语言编写的程序称为源程序
  • 编译器是将源程序翻译成机器语言程序的软件。
  • Java是平台无关的,这意味着只需编写一次程序,就可以在任何计算机上运行。
  • Java源程序文件名必须和程序中的公共类名一致,并且以扩展名.java结束。
  • 每个类都被编译成一个独立的字节码文件,该文件名与类名相同,扩展名为.class
  • 使用 javac 命令可以从命令行编译Java源代码文件。
  • 使用 java 命令可以从命令行运行Java类。
  • 一个块以左花括号{开始,以右花括号}结束。
  • 方法包含在类中。每个可执行的Java程序必须有一个main方法。main方法是程序开始执行的入口
  • Java中的每条语句都是以分号;结束的,也称该符号为语句结束符。
  • 保留字或者称关键字,对编译器而言有特殊含义,在程序中不能用于其他目的。
  • 在Java中,在一行上用两个斜杠//引导注释,称为行注释;在一行或多行用/**/包含注释,称为块注释或者段注释。编译器会忽略注释。
  • Java源程序是区分大小写的。
  • 编程错误可以分为三类:语法错误运行时错误逻辑错误

进入下一个篇章前,确保上面的回顾内容都不在陌生,并且已经:

  • 了解计算机与程序设计
  • 安装了JDK,之后所有的内容都将基于Java1.8
  • 安装了IDE,之后所有的示例代码都使用 Intellij IDEA
  • 顺利输出了 Hello world

一切就绪,证明可以离开新手村,继续下一个征途。

第一个Java程序Hello World

阅读(2588)

Hello World程序,几乎是每一个编程语言入门的经典第一课。

Hello World

Hello World程序

在记事本或者 Notepad++ 中编写如下Java代码:

public class Welcome {
    public static void main(String []args) {
        System.out.println("Hello World");
    }
}

该程序在控制台上显示消息 “Hello World”。
控制台(console)是一个老的计算机词汇,指计机的文本输人和显示设备。控制台输入是指从键盘上接收输入,而控制台输出是指在显示器上显示输出。

例子中,除了双引号中的内容外,其他单词,字母大小写,标点符号都不能写错或者遗漏。
显示行号( line number)是为了引用方便,它们并不是程序的一部分。所以,不要在程序中敲入行号。
第1行定义了一个类

每个Java程序至少应该有一个类,每个类都有一个名字。按照惯例,类名都是以大写字母开头的。本例中,类名(class name)为 Welcome。

对大多数计算机语言,包含程序源代码的文件名是任意的,但对于Java就不行。
这个例子中,源程序文件名应该是 Welcome.java

第2行定义main方法

Java是从类中的main方法开始执行的。

方法是包含语句的结构体。

第3行定义方法体

本程序中的方法体包括了 System.out.println 语句。
该语句在控制台上打印消息“Hello World”字符串。
字符串(String)是一个编程术语表示一个字符序列,一个字符串必须放入双引号中。
Java中的每条语句都以分号(;)结束,也称为语句结束符(statement terminator)。

关键宇( keyword)对编译器而言都是有特定含义的,所以不能在程序中用于其他目的。
例如,当编译器看到字class 时,它便知道class后面的词就是这个类的名字。这个程序中的其他保留字还有publicstaticvoid等。

关于Java中所有的关键字及含义,可以参考 Java关键字

程序中的一对花括号将程序的一些组成部分组合起来,形成一个(block)。
在Java中,每个块以左花括号{开始,以右花括号}结束。
每个类都有一个将该类的数据和方法放在一起的类块(class block)。
每个方法都有一个将该方法中的语句放在一起的方法块(method block)。块是可以嵌套的,即一个块可以放到另一个块内。

运行Hello World

在编译和运行程序前必须先安装和配置JDK

运行这段程序,可能需要如下步骤:

  • ①在文本文件中输入上述代码
  • ②保存文件名为 Welocme.java
  • ③打开 cmd 命令窗口,进入目标文件所在的位置
  • ④测试Java环境是否正常,输入 java -version 后回车
  • ⑤输入javac Welocme.java 后回车
  • ⑥输入java Welocme 后回车

java-javac

Java程序的开发过程,就是重复地创建、修改源代码,然后编译和执行的过程。

D:\>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

D:\>javac Welocme.java
D:\>java Welocme
Hello World

如果看到Hello World,则整个程序完美运行。

当然,在顺利输出Hello World前,可能会遇到各种奇奇怪怪的问题,在 Java程序设计错误 ,详细解释了这些错误。

命令解释

java -version

这句代码只是来测试Java在当前环境是否可用,它不是程序运行的组成部分。

javac Welcome.java

运行完这行命令,如果没有语法错误,编译器( compiler)就会生成一个扩展名为. class的字节码文件(Welcome.class)。

Java语言是高级语言,而Java字节码是低级语言。字节码类似于机器指令,但它是体系结构中立的,可以在任何带Java虚拟机(JM)的平台上运行。

虚拟机不是物理机器,而是个解释JaVa字节码的程序。这正是Java的主要优点之一:Java字节码可以在不同的硬件平台和操作系统上运行,一次编写,到处运行(Write once, run anywhere)。
Java源代码编译成Java字节码,然后Java字节码被JVM解释执行。

它们之间的关系可以用下图表示:

java-class

执行Java程序就是运行程序的字节码,可以在任何一个装有VM的平台上运行字节,JVM就是解释器。
它一次只将字节码中的一个指令翻译为目标机器语言代码,而不是整个程序作为一个单元。翻译完一步之后就立即执行这一步。

java Welcome

使用该命令来运行程序。

该命令运行的是Welcome.class文件,但是请不要在命令中加.class后缀。

Java程序设计错误

阅读(2449)

Java提供了完善的错误处理机制,在深入理解这些错误之前,先认识一下它们。
Java程序设计错误可以分为三类:语法错误运行时错误逻辑错误

语法错误

在编译过程中由编译器检测出来的错误称为语法错误syntax error或编译错误compile error
语法错误是由创建代码时的错误引起的,例如:拼错关键字,忽略了一些必要的标点符号,或者左花括号没有对应的右花括号。
这些错误通常很容易检测到,因为编译器会告诉你这些错误在哪里,以及是什么原因造成的。

public class Welcome {
    public static main(String[] args) {
        System.out.println("Hello world");
    }
}

观察一下上面这段代码,发现了什么问题?

运行 javac Welcome.java

D:\mapull>javac Welcome.java
Welcome.java:2: 错误: 方法声明无效; 需要返回类型
public static main(String[] args) {
^
1 个错误
我用的Win10中文系统,命令行提示为中文,不同的操作系统,不同的JDK版本,可能有不一样的提示信息。

从错误提示可以看出,第2行main方法前遗漏关键字void。

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Hello world);
    }
}

观察一下上面这段代码,发现了什么问题?

运行 javac Welcome.java

D:\mapull>javac Welcome.java
Welcome.java:3: 错误: 未结束的字符串文字
System.out.println(“Hello world);

从错误提示可以看出,第3行字符串应该加上引号。

有时候,提示会显示多个错误信息,一个错误会显示很多行的编译错误,因此,从最上面的行开始向下纠正错误。

D:\mapull>javac Welcome.java
Welcome.java:3: 错误: 未结束的字符串文字
        System.out.println("Hello world);
                           ^
Welcome.java:3: 错误: 需要';'
        System.out.println("Hello world);
                                         ^
Welcome.java:5: 错误: 解析时已到达文件结尾
}
看着有好多错误提示,其实,只需要修改一处地方:字符串加上引号
public class Welcome {
    public static void main(String[] args) {
        System.out.println("Hello world");
        System.out.println("码谱");
    }
}
代码中是允许出现中文的,但是一定要注意,中文的分号和英文的分号是不同的。

观察一下上面这段代码,发现了什么问题?

运行 javac Welcome.java

D:\mapull>javac Welcome.java
Welcome.java:4: 错误: 非法字符: ‘\uff1b’
System.out.println(“码谱”);
^
1 个错误

很容易出现的错误,在输入完中文以后,往往在最后添加的是中文分号,导致程序出现非法字符

如果你不知道如何纠正错误,将你的程序一个字符一个字符地仔细对照示例代码。在初期,你可能要花许多时间纠正语法错误,但是很快你会熟悉Java语法,并快速纠正语法错误。

运行时错误

运行时错误runtime error是引起程序非正常终止的错误。运行应用程序时,当环境检测到一个不可能执行的操作时,就会出现运行时错误。输入错误是典型的运行时错误。当程序等待用户输入一个值,而用户输入了一个程序不能处理的值时,就会发生输入错误。
例如:如果程序希望读入的是一个数值,而用户输入的却是一个字符串,就会导致程序出现数据类型错误。
另一个常见的运行时错误是将 0 作为除数。当整数除法中除数为 0 时可能引发这种况。

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Hello world");
        System.out.println(1/0);
    }
}

运行 javac Welcome.java,不会有任何输出,证明程序被正确编译。

运行 java Welcome

D:\mapull>javac Welcome.java

D:\mapull>java Welcome
Hello world
Exception in thread “main” java.lang.ArithmeticException: / by zero
at Welcome.main(Welcome.java:4)

运行时错误只在程序运行时报错,能正确通过编译。

逻辑错误

当程序没有按预期的方式执行时就会发生逻辑错误logic error
这种错误发生的原因有很多种。
下面有一个除法的例子,我希望计算 3 除以 2 的结果,理想结果应该是 1.5

public class Welcome {
    public static void main(String[] args) {
        System.out.println(3/2);
    }
}
D:\mapull>javac Welcome.java

D:\mapull>java Welcome
1

你将得到结果1,而这是不符合预期的,结果应该是1.5。
Java中,整数相除是返回除法的整数部分,即小数部分被截掉。
要得到正确的结果,需要使用’3.0/2’,这样得到结果1.5。

通常情况下,因为编译器可以明确指出错误的位置以及出错的原因,所以语法错误是很容易发现和纠正的。
运行时错误也不难找,因为在程序异常终止时,错误的原因和位置都会显示在控制台上。
然而,查找逻辑错误就很有挑战性了。
之后,我们将学习跟踪程序 debug 以找到逻辑错误。查错能力将是一个程序员厉不厉害重要的指标。

常见错误

对于编程初学者来说,遗漏右括号遗漏分号遗漏字符串的引号名称拼写错误是常见的错误。

遗漏右括号

括号用来标识程序中的。每个左括号必须有一个右括号与之匹配。常见的错误是遗漏右括号。
为避免这个错误,任何时候输入左括号的时候就输入右括号,如下面的例子:
public class Welcome{ 立刻输入此右括号}以匹配左括号。
如果使用 Eclipse 和 IDEA 这样的IDE,在输入左括号时会自动插入一个右括号。

遗漏分号

每个语句都以一个语句结束符;结束。
通常,编程初学者会忘了在一个块的最后行语句后加上语句结束符,如下面例子所示:

public class Welcome {
    public static void main(String[] args) {
        System.out.println("Hello world")
        System.out.println(1/0);
    }
}
遗漏引号

字符串必须放在引号中。通常,编程初学者会忘记在字符串结尾处加上一个引号,如下面例子所示:
System.out.printIn("Study in Mapull); 遗漏一个引号
如果使用 Eclipse 和 IDEA 这样的IDE,在输入左引号时会自动插入一个右引号。

名称拼写错误
Java是大小写敏感的。

编程初学者常将名称拼写错。
例如,下面的代码中main错误拼写成Main,System 错误拼写成 system

public class Welcome {
    public static void Main(String[] args) {
        system.out.println("Hello world")
    }
}

在之后,会接触到更多更复杂的错误,Java提供了完善的错误机制。
在 异常处理 部分,会有更多的处理异常的手段。

Java发展时间线

阅读(4297)

如果能了解Java发展史,对于深入认知Java有很大帮助。
为此,码谱整理了Java的发展时间线。
发展时间轴包括Java各个版本的发布时间,每个版本的代号,从JDK1.0到JDK22的主要版本特性,子版本的发布时间,每个版本最终release版发布日期,虚拟机版本,重要更新公告。

此外,还包含所有JDK版本,官方下载地址(官方下载需要Oracle账号[免费])。

所有版本的JDK都可以在Oracle网站上下载:
https://www.oracle.com/technetwork/java/archive-139210.html

编程语言

阅读(2021)

计算机不理解人类的语言,因此,需要用计算机认识的语言指挥它执行命令。编程语言Programming language可以简单的理解为一种计算机和人都能识别的语言。

目前,已经存在上千种编程语言。这么多编程语言大致分为3类:

机器语言

机器语言machine language是计算机的原生语言,它基本上是二进制代码形式的指令集。计算机理解这种语言的成本低,因而执行速度快,但是人类很难理解这种语言。

两个数相加的一段机器语言的代码,可以表示为:

110110101010010

汇编语言

能用机器写代码的都是天才,那种枯燥无味的事情正常人是不愿意干的。因此,出现了汇编语言。汇编语言assembly language使用顾名思义的单词来表示一条常见的操作指令。

例如,计算 1+2 的代码,可以简单表示为:

add 1,2,result

要执行两个数相加,一个完整的汇编程序代码:

main PROC                    ;标记程序入口
    mov eax, 5               ;将数字 5 送入 eax 寄存器
    add eax, 6               ;eax 寄存器加 6
    INVOKE ExitProcess, 0    ;调用终止函数,退出程序
main ENDP                    ;标记程序结束

汇编语言的确降低了编写代码的难度,但是汇编语言依旧很难编写,需要记忆的指令非常多,并且需要对CPU等硬件的工作机制比较熟悉。

高级语言

高级语言是对多条指令的整合,屏蔽了很多底层的复杂度,使得整个程序更为简洁,人们理解也更为容易。

计算两个数相加的高级语言代码,可以表示为:

result = 1+2;

从第一个高级语言诞生到现在,已经有2000多种高级编程语言,它们都为特定的目的而设计,有的流行至今,有的则逐渐消亡。

程序设计与Java

阅读(1857)

这是一个图片

这一部分是程序设计的基石,学习任何一门编程语言之前,都应该先了解整个计算机体系。

预期目标

  • 了解计算机基础知识、操作系统基本概念
  • 机器语言、汇编语言、高级语言
  • 编程风格与习惯养成
  • 安装JDK
  • 开发工具IDE

适合群体

  • 没有计算机教育背景
  • 初次接触编程小白
  • 如果你了解编程,并且已经在电脑上安装好了JDK,请直接过渡到下一节。

理解计算机与编程

阅读(1888)

计算机Computer包括硬件Hardware和软Software件两部分。通常,硬件是计算中可见的物理部分,而软件是让这些硬件协调工作的指令。

计算机硬件

我们目前接触到的计算机,大都基于冯·诺依曼结构实现的,该结构模型将计算机硬件分成五大组件:

  • 存储器:  实现记忆功能的部件用来存放计算程序及参与运算的各种数据
  • 运算器:  负责数据的算术运算和逻辑运算即数据的加工处理
  • 控制器:  负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问
  • 输入设备: 实现计算程序和原始数据的输入
  • 输出设备: 实现计算结果输出

更直观地讲,由下面几个主要组件构成:

  • 中央处理器CPU
  • 内存
  • 存储设备 (光盘,硬盘)
  • 输入设备 (键盘,鼠标)
  • 输出设备 (显示器,打印机)
  • 通信设备 (调制解调器,网卡)

此外,冯·诺依曼结构还规定了用二进制替代十进制运算。

编程

程序设计又称编程,实质就是开发软件,软件包含了指令,指挥计算机硬件该做什么。

编辑程序让电脑执行的过程就叫编程,但是这个词比较书面化,很多人还是不理解,于是有了通俗易懂的软件开发,但是这样又显得不上档次,于是有了高逼格的词程序设计

程序=数据结构+算法

到底怎么理解编程这点事儿,作为一个还不懂编程,或者刚入行的人,一般就认为,编程就是写代码。但是站在更高的层面,会把程序理解为数据结构+算法,数据结构指的是数据与数据之间的逻辑关系,算法指的是用来解决特定问题的步骤和方法.

码农?程序员??工程师!

程序员既是一个职业,也指一类群体,从事程序开发的人都可以称之为程序员。码农顾名思义为编码的农民,是很多程序员对自己的一个“戏称”。由于社会的需求,大量‘IT农民工’投入到基础的编码工作当中,虽然他们很多高学历,高收入,但是常常996,从事低级的复制粘贴工作。

对内可以自称码农,但是对外必须有个高逼格的称谓-工程师,或者说软件开发工程师。去各大招聘网站搜索 ‘程序员’,结果全是清一色的xx工程师。

有时候,我们也这样定义:学术界的技术人员多称为工程师,工业界的技术人员多称为程序员,技术含量低、工作量大的应用级程序员称自己为“码农”。

程序员还有很多称号:

  • IT领袖:年入过亿(例如任正非、马化腾、李彦宏、丁磊、马云等,包括期权股票以及投资理财等收入。)
  • IT大哥:年入千万(级别次于以上几位大佬的公司老板,不缺钱,普遍对上一条里的人物羡慕嫉妒恨。)
  • IT精英:年入百万(各IT公司副总裁级别人物,包括COO、CTO等,大多为职业经理人,赚够前就跑。)
  • IT人才:年入50万(各IT公司总监级别人物,有房有车,生活压力相对较小)
  • IT工程师:年入20万(高级经理级别,有房贷,生活压力大)
  • IT民工:年入10万(经理级别,基本无房,学会装波一,生活压力大)
  • 码农:年入6万到10万(工作三四年,租房,继续混日子)
  • 码奴:年入3万到6万(工作一两年,租房,混日子)
  • 码畜:年入低于3万(刚毕业的,租房,傻乐)

当然,入行程序员,你还多一个节日 10·24