如何学习编程——希望自己开始学习编程拥有指南

PapayaHUANG
译者:PapayaHUANG <https://www.freecodecamp.org/chinese/news/author/
papayahuang/>

Jacob Stopak
作者:Jacob Stopak (英语) <https://www.freecodecamp.org/news/author/
initialcommit/>

如何学习编程——希望自己开始学习编程拥有指南

*
原文:* How to Learn Programming – The Guide I Wish I Had When I
Started Learning to Code <https://www.freecodecamp.org/news/how-to-
learn-programming/>

仅仅只是想到学习编程这个概念畏惧,*代码*非常神秘仿佛一种机器
交流不是理解技术

大多数采用学习编程方式流行编程语言然后一头进去具体
表现形式可以线上编程课程教学项目或者随机购买编程话题
相关书籍

极少开发者路线图开始路线图相当于编码世界鸟瞰图梳理
一些相关编程概念语言以及几乎 100% 开发者每天都会使用工具

文章提出一种路线图梳理出来专业开发者用来编写代码
创建专业项目 14 步骤步骤探讨关键概念语言或者
)。

精心挑选出来 14 步骤基于长达 20 个人学习代码经历

这么时间使自己开发时候感觉自在一部分原因曾经专注
具体的话没有广阔角度整个编码世界

本文步骤讨论代码重点开始编程*起码知道*概念

正式开始之前最后强调一点肯定不会因为文章成为编程专家
文章本意并非如此文章目的为了知道这些内容以及这些
背后运行逻辑继续前行打下基础


初级开发者 14 路线图

1.
熟悉计算机系统结构数据基础 <#1-familiarize-yourself-with-computer-
architecture-and-data-basics>
2.
了解编程语言运作 <#2-learn-how-programming-languages-work>
3.
理解互联网运作 <#3-understand-how-the-internet-works>
4.
练习基本命令行 <#4-practice-some-command-line-basics>
5.
使用 Vim 培养文本编辑器技能 <#5-build-up-your-text-editor-
skills-with-vim>
6.
学习一点 HTML <#6-take-up-some-html>
7.
处理一些 CSS <#7-tackle-some-css>
8.
JavaScript 开始编程 <#8-start-programming-with-javascript>
9.
使用 Python 继续编程 <#9-continue-programming-with-python>
10.
进一步了解 Java <#10-further-your-knowledge-with-java>
11.
使用 Git 跟踪代码 <#11-track-your-code-using-git>
12.
使用数据库 SQL 存储数据 <#12-store-data-using-databases-and-sql>
13.
阅读 Web 框架 MVC <#13-read-about-web-frameworks-and-mvc>
14.
玩转管理工具 <#14-play-with-package-managers>

我们开始


1)
熟悉计算机系统结构数据基础

现代编程语言美妙原因之一创建精美应用时候它们帮助我们幕后
繁琐硬件细节。(大部分情况这样

这种能力称为*抽象*——使用高级工具这里编程语言能力可以简化
缩小所需掌握技能范围

并不意味着了解机器本身一无是处至少可以帮助工作场所同事畅谈
CPU
内存使用

以下计算机基础基本知识

计算机重要部分位于*芯片*(称为*集成电路*)。

芯片依靠*晶体管*电子元件发挥作用晶体管小的电子开关定时
处于(0)或者(1)状态单个芯片嵌入百万甚至十亿晶体管

大部分现代计算机叫做**中央处理器(CPU)**芯片可以这个
计算机大脑处理大部分数字运算逻辑任务

CPU *指令集*, CPU 理解二进制(0 1)指令合集
作为软件开发人员我们并不需要担心自己理解这些指令就是抽象
力量

如果说 CPU 大脑逻辑中心的话那么我们需要存储器短期长期
存储记忆

计算机拥有*随机存取存储器(RAM)* 作为工作存储器“(或者叫做短期存储器
存储程序运行时使用信息

RAM
*内存地址*组成用于存储数据C语言这样历史久远
计算机语言程序员确实可以使用*指针*直接处理内存地址但是现代
言中少见

最后这个组件肯定熟悉——硬盘驱动硬盘相当于人类大脑长期记忆硬盘
数据内部外部设备即便关机这些数据仍然存在

我们正式介绍编程语言细节之前我们时间了解一下数据,*数据*这个
到底代表什么

表面我们想到文本文件图像视频电子邮件文件文件夹这些
我们每天计算机创建存储高级数据结构

位于底层计算机芯片(CPU 或者 RAM 芯片并不知道什么图片或者视频”。

芯片角度这些数据结构作为 0 1 存储起来这些 0
1
称为**。

通常形式存储称为*字节*。 字节就是简单
序列例如 |00000001|、 |01100110| |00001111|。这样表示信息方法
*二进制表示*。


2)
了解编程语言运作

章节我们到了大部分计算机依赖 CPU,CPU 可以理解特定 0
1。

因此理论我们可以编写 0 1 组成代码告诉 CPU 什么
形式编写指令称为*机器*。

这样代码听上去相当可怕反正因为使用高级编程语言
JavaScript、Python
Java。

*
高级编程语言*提供人类可以读取关键字声明语法规则使得人们可以
更加容易学习 bug 使用

编程语言提供桥梁连接人类大脑计算机大脑(CPU)。

我们编写代码最终转换 CPU 理解二进制指令机器)。

根据选择语言我们可以认为代码要么*编译*,要么*解释*可以
CPU
执行机器大多数编程语言包含*编译器*或者*解释器*执行这个
翻译步骤

几个例子——JavaScript Python 解释语言然而 Java 编译语言
语言是否编译或者解释语言或者两者结合对开编写便利
处理错误方法程序性能造成影响这里我们赘述


3)
理解互联网运作

不论渴望开发什么类型程序都会遇到计算机之间相互交流场景这个
发生互联网

互联网连接全球计算机集合可以认为全球性网络互联
内部计算机遵循特定规则达成彼此交流对于计算机
,“交流就是交换数据

我们之前章节介绍那样所有数据类型网页图像视频电子邮件
可以 0 1 表示

因此可以互联网当作巨大计算机集合这些计算机之间相互传输 0
1,数据 0 1 形式存储互联网就是数字对话媒介

如果互联网巨大对话场所我们定义一下对话参与者

首先我们引入类比大部分人类对话需要至少参与者发起
回应对话假设个人在场并且有空

互联网角度发起对话计算机称为*客户端*,回应或者应答对话
计算机称为*服务器*。

假设打开浏览器并且搜索 “www.google.com” 。 这个场景
就是客户端宽泛可以正在使用计算机当作客户端

抽象一点,**就是客户端因为开启对话搜索输入
“www.google.com” ,
点击回车键电脑谷歌计算器发出对话
请求

谷歌计算机称为服务器通过发送请求数据并且数据浏览
显示回应然后眼前出现谷歌网页所有互联网数据传输使用
客户端/服务器关系


4)
练习基本命令行

,*命令行*可能人生命令行往往出现电影画面黑色屏幕
滚动无法理解文字数字符号人们往往邪恶黑客或者天才
技术伙伴联系一起

骑士需要多么天才头脑能够理解并且使用命令行命令行可以执行我们习惯
鼠标勾选点击一些日常任务

主要区别在于命令行主要通过键盘输入一旦掌握可以大大提高效率

可以使用命令行浏览文件夹列出文件夹内容创建文件夹复制移动
文件删除文件执行程序等等输入命令行窗口称为*终端*。

我们通过基础导航命令行教程了解如何使用命令行

打开终端时候首先问题“/在哪儿”?/ 我们可以使用 |
pwd|
命令行打印正在工作目录(Print Working Directory))解决这个
这个命令行打印当前所在文件夹位于整个文件系统位置

起手


如何使用命令行

如果 Mac 用户打开终端应用本质上 Unix 命令行终端

如果使用 GUI(图形用户界面操作系统例如 Linux Unix,默认
情况启动计算机就是命令行如果 Linux 或者 Unix 系统 GUI,
手动打开终端

提示输入|pwd|按下回车命令行打印当前文件夹路径

默认情况打开命令行激活文件夹登陆用户目录如果别的
开始可以自定义

方便起见可以使用波浪号|~|字符表示目录我们接下来几个示例
使用

现在我们知道我们在哪儿可以使用 |ls| 命令列出当前目录内容。 |
ls|
命令代表清单(list)”。

输入|ls|点击回车当前目录名下所有内容文件目录都会显示


输入|ls -al|重新运行上面命令点击回车得到有关当前目录
包括文件大小修改时间文件权限

上面命令中的连字符|-|使得我们可以通过添加改变命令行为上述例子
我们添加|-a|标记显示目录所有内容包括隐藏文件),同时|-l|标记显示
文件其他信息

然后我们通过|mkdir|命令创建文件夹这个命令 “Make Directory”(创建
目录)。我们创建叫做 “testdir” 目录

输入|mkdir testdir|点击回车然后输入|ls|点击回车清单看到
创建目录

一次性创造嵌套目录可以使用|-p|标记创建整个目录:|mkdir -p
directory1/directory2/directory3|。

如果固定位置使用命令行的话用处不大所以我们接下来学习如何
文件系统不同目录切换我们可以通过|cd|命令实现代表 “Change
Directory”(
更改目录)。

首先输入|cd testdir|然后点击回车输入|pwd| 点击回车注意此时
告诉我们正在 “testdir” 目录我们进入这个目录

输入|cd ..|点击回车,|..|告诉命令行回到目录

输入|pwd|点击回车注意此时输出告诉我们到了目录我们回去

接下来我们学习如何当前目录创建全新文件

输入|touch newfile1.txt|点击回车可以使用|ls|检查文件是否已经创建

接下来我们使用|cp|命令文件文件夹复制另一文件夹

输入|cp newfile1.txt testdir|点击回车使用|ls||ls testdir|检查这个
文件是否当前文件夹以及是否复制到了 “testdir” 目录

我们可以使用|mv|命令移动文件

输入|touch newfile2.txt|点击回车创建文件
然后输入|mv newfile2.txt testdir|点击回车文件移动 “testdir” 文件夹

使用|ls||ls testdir|检查文件是否已经移动 “testdir” 文件夹文件
应该存在原始目录因为 /移动/ 并非复制)。

|mv|
可以用来重命名文件

输入|touch newfile3.txt|点击回车创建文件然后输入 |mv
newfile3.txt cheese.txt|
点击回车更新文件使用|ls|检查文件是否重命名

最后我们可以使用|rm|命令删除文件

输入|rm cheese.txt|点击回车删除文件使用|ls|检查文件是否除了

输入|rm -rf testdir|点击回车删除 “testdir” 目录名下文件使用|ls|
是否删除

注意我们必须使用|-rf|标记删除目录这样可以彻底清空文件夹


5)
使用 Vim 培养文本编辑器技能

我们已经学习命令行基本知识并且练习如果使用鼠标控制文件

虽然我们已经知道如何使用命令行创建复制移动重命名以及删除文件但是
我们知道如果使用终端编辑文本内容

使用终端编辑文件非常重要因为计算机代码就是存储组织文件中的文本

我们当然可以使用一些华丽文本编辑器微软 word(或者适合代码
Sublime Atom)编写我们代码不是必须我们已经使用
运行命令行显然终端方便编辑代码地方

优秀文本编辑器但是推荐通过 Vim 基础 <https://
www.freecodecamp.org/news/vimrc-configuration-guide-customize-your-vim-
editor/>。

Vim
编辑器并且经受时间考验。Vim <https://
zh.wikipedia.org/zh-tw/Vim>
代表 “*/VI/* i**/M/*proved”,因为*/Vi/**
发展

上文,Vim 可以直接终端运行编辑器所以我们需要额外打开
窗口使用鼠标操作。Vim 提供命令行模式使得我们可以直接使用键盘
创建编辑文本

Vim
一定学习曲线 <https://www.freecodecamp.org/news/how-not-to-be-
afraid-of-vim-anymore-ec0b7264b0ae/>,
但是只要稍微练习整个程序员职业
生涯都会受益

许多系统预装Vim,检查计算机是否安装 Vim,可以使用命令|vim
-v|。

如果终端打开 Vim 并且显示版本可以开始使用如果没有需要
手动安装注意可以通过输入|:!q|点击回车退出 Vim)。安装 Vim
信息可以查看 https://vim.org <https://vim.org/>。

认为学习 Vim 快速简单方法使用内置 *VimTutor*。运行确认系统
安装 Vim,打开命令行输入|vimtutor|点击回车

这个教程已经非常所以这里不再赘述现在打开 VimTutor 开始学习
我们章节

如果完成 VimTutor 之后还有精力学习内容的话欢迎查看7 大幅提升
效率 Vim 命令 <https://initialcommit.com/blog/7-versatile-vim-commands>。


6)
学习一点 HTML

可以 HTML(*H*yper*T*ext *M*arkup *L*anguage(超文本标记语言
视为网页骨骼通过指定应该显示元素显示顺序确定页面结构

浏览所有页面 HTML 多少有点关系每当浏览网页托管网页
服务器传输一些 HTML 到达浏览器浏览器读取这些 HTML 展示出来

大多数网页包含相当标准内容包括标题文本内容图像链接导航
等等所有这些信息存储 HTML,定义页面结构

需要注意 HTML 实际上不是一种编程语言虽然我们常常 “HTML 代码”。

在后面的文章我们看到其他编程语言具备*行为*,执行一系列指令。HTML
**任何我们运行执行 HTML,HTML 在那儿发送浏览器
显示用户

事实上,HTML 基本上只是数据定义网页应该什么样子数据仅此而已

如何编写 HTML ?HTML 使用*标签*(基本标记对应可以标记网页
元素标签使用尖括号标记

比方说,*title(标题)* 标签写作|<title>My Page Title</title>|以及
*paragraph(
段落)* 标签写作|<p>A bunch of random text content.</p>|。

HTML 元素起始标签结束标签起始标签尖括号
签名组成

|<tagname>|

结束标签起始标签类似只是斜杠表示结束标签

|</tagname>|

尖括号之间任意文本就是网页显示内容

我们认识一下常见几个标签首先|<html>|标签定义 HTML 页面
开始对应|</html>| 标签注意斜杠定义 HTML 页面结束标签
之间任意内容属于页面

第二介绍|<head>|标签定义浏览器读取页面需要额外信息这里
大部分内容不会展现用户对应|</head>|标签定义 HEAD 部分结束

上文到了|<title>|标签定义页面标题浏览器选择
这个标签|<head>...</head>|内部使用

接下来|<body>|标签标签内部所有内容就是网页主要内容
放置在一起结构如下

|<html>

<head>
<title>My Page Title</title>
</head>

<body>
<p>A bunch of random text content.</p>
</body>

</html>
|

上面简单 HTML 代码展现包含标题段落网页

这个例子我们可以看出 HTML 标签可以相互嵌套也就是 HTML 标签可以放置
其他标签内部

HTML
提供一系列标签用户使用我们不会逐一讲解列举一部分

* |<p>|:
开启一行段落
* |<h1>|:
页面标题(heading)通常用作页面标题(title)
* |<h2>|:
段落标题(heading)通常用作段落标题(title)
* |<hx>|: /x/
表示 3 6 之间数字代表级别小的标题(heading)
* |<img>|:
图片
* |<a>|:
链接
* |<form>|:
表单包含用户填写提交字段输入
* |<input>|:
用户输入信息输入字段通常表单
* |<div>|:
内容划分用于几个其他类型元素组合在一起一定间距
* |<span>|:
另一分组元素用于文本短语包装另一元素通常
限于应用文本内容特定部分特定格式


7)
处理一些 CSS

缺少 CSS(*C*ascading *S*tyle *S*heets,层叠样式网页没有
虽然可以但是索然无味

CSS
使得我们可以样式属性背景字号宽度长度HTML元素关联
起来

样式属性告知浏览器如何渲染对应效果 HTML 一样,CSS 不是编程
并不具备行为但是可以 HTML 骨骼添加样式

我们看看如何 HTML 添加 CSS 样式重要部分

*CSS
选择:* 标记我们需要添加样式 HTML 元素

*CSS
属性:* 我们添加响应 HTML 元素特定样式属性名称

*CSS
属性:* 我们应用样式属性

以下部分组合在一起定义段落颜色字体大小

|p {
color: red;
font-size: 12px;
}
|

我们从头开始花括号之前 CSS 选择示例*p*代表|<p>|
(paragraph)
这个 HTML 标记也就是说网页所有|<p>|标签应用这个样式

我们看看花括号里面发生什么——我们想要应用目标元素样式

CSS
属性冒号属性示例中的 “color” “font-size”)左手
属性示例中的 “red”“12px”)右手属性/
结尾

应该已经出来如何运作,CSS 代码告诉浏览器使用红色字号
12px
样式修饰|<p>|内容

HTML 如何包含这些 CSS 样式使用|<link>| HTML 标签通常
独立 CSS 文件(*.css*文件)。意味着我们需要引入 HTML 文件
浏览器知道 CSS 文件存在

|<link>|
标签服务这个目的我们|<head>|部分加入|<link>|元素特指
引入 CCS 文件

|<head>

<title>My Page Title</title>

<link rel="stylesheet" type="text/css" href="/home/style.css">

</head>
|

这个示例我们使用 *href* 标签引入 CSS 文件://home/style.css/。

接下来部分我们终于进入编程语言

我们大概介绍 JavaScript、Python Java 以及一些重要编程概念
通过代码示例比较语言相同不同进一步了解语言打下
基础


8)
JavaScript 开始编程

我们回答这个问题如果 HTML 网页骨架、CSS 样式我们需要
JavaScript
什么

答案我们可以需要 JavaScript,样式好看静态网站已经足够所以
需要 HTML CSS

这个答案关键词静态”,如果想要网页添加一些动态效果的话改变文本
或者添加更为复杂用户交互我们需要使用 JavaScript。


什么 JavaScript?

JavaScript
到底什么?JavaScript 互联网网站创建编程语言
第二部分我们提到大多数编程语言要么就是编译要么就是解释程序
独立运行

JavaScript
有些与众不同设计直接网络浏览器内部运行
可以编写代表行为代码直接网页执行使得网站更加动态

可以使用后缀|.js|文件编写 JavaScript 代码或者直接 HTML |
<script>|
标签编写 JavaScript。

JavaScript
时间只能浏览器内部运行但是 *Node.js* 改变
运行范式之后JavaScript 拥有独立运行环境

除了浏览器内部客户端运行,Node.js 可以安装任何计算机创建
JavaScript 环境可以网络服务器安装 Node,这样 JavaScript
可以编写前端代码可以编写后端代码

讲解 JavaScript 基础之后我们看看 JavaScript 一些主要概念


JavaScript
中的变量赋值

变量或许编程最为基础概念变量用来引用特定名称或者占位符

*
变量*这个名称意味着程序执行过程变量内部存储可以发生改变

可以使用变量存储数字字符串列表以及其他数据结构我们之后详细说明

所有编程语言包含变量只是语法有些不同

我们可以整个代码引用变量所以变量十分有用我们可以检查我们需要
变量根据变量改变执行不同行为

JavaScript 我们使用|let|关键字声明变量:|let x;|。

这样|x|这个变量可以代码使用注意我们末尾添加分号结束
JavaScript(
以及其他一些语言分号代表声明结束

我们已经创建变量 /x/,可以使用等号这个变量赋值等号可以称为 *
操作符*:|x = 10;|

我们数字 10 赋值名为 /x/ 变量无论何时我们代码使用 /x/ ,
得到 10。

变量声明赋值可以一行进行

|let x = 10;
|


JavaScript
数据类型

一部分我们整数存储到了名为 /x/ 变量我们可以存储十进制
或者*浮点数*。我们可以这样:|let x = 6.6;|。

能够存储不同称为*数据类型*。现在我们看到数字类型整数
点数),我们触及表面我们可以变量存储文本

代码术语文本称为 *字符串*。我们可以字符串存储变量x使
单引号或者双引号字符串

|let x = 'Hello there!';

let y = "Hey bud!";
|

接下来我们讨论*布尔*。布尔只有|true||false|必须小写
JavaScript
,true false 专门用于表示布尔关键字

|let x = true;

let y = false;
|

注意|true||false|没有字符串那种引号如果使用引号不是布尔
而是字符串

我们经常使用布尔控制条件(if/else)语句中的程序接下来我们学习
程序


JavaScript
中的程序控制语句

现在我们已经了解变量基本 JavaScript 数据类型我们看看我们可以
它们什么

如果告诉程序我们变量什么变量用处我们可以使用*语句*
变量事情

语句特殊关键字允许我们代码执行某些操作这些操作通常基于我们定义
变量语句我们定义程序逻辑流程执行许多有用操作这些操作
决定我们程序如何工作


If / Else
语句

我们首先讨论 |if|语句如果条件,|if|语句允许我们某事如下

|let x = 10;

if ( x > 5 ) {
console.log('X is GREATER than 5!');
} else {
console.log('X is NOT GREATER than 5!');
}
|

我们创建名为 /x/ 变量赋值 10, 然后使用 |if|语句 |if|
之后括号括号内部有待评估条件示例|x > 5|。 /x/
赋值 10,所以示例中的条件

因为条件所以花括号中的代码执行我们看到 “X is GREATER than
5!”
打印出来。(我们尚未讨论 |console.log()|意思现在我们知道
打印括号内容)。

示例我们使用|else|语句条件|false|,执行内部代码


While
循环

我们接下来讨论 *while 循环*。 循环使得我们需要赋值粘贴代码情况
反复执行同一代码

假设我们想要打印一句话我们可以这样操作

|console.log('This is a very important message!');
console.log('This is a very important message!');
console.log('This is a very important message!');
console.log('This is a very important message!');
console.log('This is a very important message!');
|

这样可以打印 5 如果 100 、1000 我们需要方式
循环派上用场代码术语重复代码称为*遍历*。

|while|
循环条件真的时候不断循环

|let x = 1;

while ( x <= 100 ) {

console.log('This is a very important message!');

x = x + 1;

}
|

示例我们 /x/ 初始设定 1, 然后编写|while|循环|
if|
语句一样我们条件括号示例中的条件|x <= 100|。 只要 /x/
小于等于 100,条件一直|true|。

然后我们花括号内部需要执行代码首先控制台打印信息然后使 /x/
增加 1。

循环再次评估条件是否|true|。此时 /x/ 2,因为第一次循环结束
1。2 小于 100,所以条件|true|。

循环中的代码不断执行直到 /x/ 101。这时,/x/ 100 条件 |
false|。
循环停止执行


HTML
|<script>|标签

我们已经介绍 JavaScript,如何 JavaScript 添加 HTML 页面我们可以
使用之前讨论|<script>|标签

|<link>|类似,|<link>|用于 CSS 添加 HTML,|<script>|专门用于添加
JavaScript。

假设我们上述代码保存|customscript.js|文件放置 HTML 同一
我们可以 HTML |<head>...</head>| 部分添加 JavaScript 文件

|<script type="text/javascript" src="customscript.js"></script>
|

网页浏览器显示执行这个文件加载 JavaScript 代码

一旦熟悉 JavaScript 技巧可以尝试搭建一些简单初学者项目
<https://www.freecodecamp.org/news/javascript-projects-for-beginners/>

进一步练习


9)
使用 Python 继续编程

我们已经学习基础 JavaScript 知识这时开启语言十分有用
语言就是—— Python。

大多数语言具备一套同样功能包含变量算术运算、if/else 语句
函数

比较不同语言如何实现同样功能对于我们学习十分有帮助概念通常相似
但是语法如何编写代码有些不同


什么 Python?

我们介绍一下 Python 背景知识 JavaScript 一样,Python 一种
高级编程语言并且设计上将开发优先执行”。

认为 Python 适合初学者学习编程语言之一。Python 语法十分简洁
符合直觉。Python 开源商业领域非常受欢迎

我们对比编译语言解释语言,Python 解释语言运行 Python
程序时候,*Python 解释器*主动处理逐行机器执行代码

编译语言不通地方在于编译语言使用编译器代码优化容易
形式然后执行

JavaScript 不同,Python 不是直接浏览器运行代码。Python
创建一种便捷 /脚本语言/——一种用于执行任意任务代码通常用户
本地计算机执行

Python
代码可以任何安装 Python 解释器计算机执行一种常用
脚本语言广泛用于数据科学和服端的应用程序


Python
中的变量赋值

JavaScript 一样,Python 可以声明变量可以直接使用等号进行声明
赋值

|x = 10
y = "cheese"
|

Python
JavaScript 定义变量时候不同 Python 需要使用|
let|
关键字需要结尾添加分号

Python
使用基于空格缩进语法规则需要终止字符分号
使用花括号代表代码


Python
数据类型

Python
数据类型我们可以它们分配变量这些包括整数浮点数
小数)、字符串列表字典

整数浮点数字符串 JavaScript 相同所以赘述

Python
中的布尔 JavaScript 非常相似只是关键字 True False 必须大写

|x = True

y = False
|


程序控制声明

JavaScript 一样,Python 控制语句语法不同


If / Else
语句

JavaScript |if/else|
示例等价 Python 示例如下

|x = 10

if ( x > 5 ):
print('X is GREATER than 5!')

else:
print('X is NOT GREATER than 5!')
|

我们定义名为 /x/ 变量赋值 10,紧接着|if|语句因为括号
条件评估|True|,|if|语句缩进代码执行我们便看到屏幕打印
“X is GREATER than 5!”。

Python |print()|函数打印内容

同时注意|else|语句如果 /x/ 条件|False|,打印另外语句

Python
代码我们之前看到 JavaScript 代码不同:Python 使用冒号
不是花括号指示|if|语句开始

另外 Python |print()|函数缩进代码效果有影响 JavaScript
语句之间缩进空格无关紧要因为JavaScript使用花括号标识代码使
分号标识语句结尾但是这个Python 示例没有分号没有大括号

因为 Python 实际上使用空格换行标识语句代码结尾

冒号告诉 Python 解释器,|if|引导代码开始。|if|之后代码必须
。(通常 1 tab = 4 空格这样 Python 解释器知道 |if| 代码
下一个缩进意味着|if|代码结束


While
循环

接下来讨论 Python 中的 while 循环。Python 中的 |while|循环大体
JavaScript
中的一致但是语法有所不同

|x = 1

while ( x <= 100 ):
print('This is a very important message!')
x = x + 1

print('This is not in the loop!')
|

JavaScript|while|循环不同地方在于

*
定义变量时候没有使用|let|
*
没有使用分号结束
*
冒号取代花括号
*
循环代码必须缩进

我们循环之外打印附加消息表明缩进代码不是循环一部分
不会重复

推荐 Python 初学者一下Python <https://initialcommit.com/blog/
zen-of-python>,
文章介绍编写 Python 代码 20 重要规则

如果已经掌握 Python 基础可以尝试搭建一些初学者 Python 项目
<https://www.freecodecamp.org/news/python-projects-for-beginners/>。


10)
进一步了解 Java

我们已经了解高级编程语言我们往后退 Java。

JavaScript
Python 实时通过解释器执行源码 Java 编译
需要编译器不是解释器 Java 源码转换计算机可以理解代码

大多数编译器生成多个机器组成可执行文件这些代码可以编译
它们特定操作系统硬件台上运行

Java特殊地方在于源码转换*字节* <https://
zh.m.wikipedia.org/zh/Java%E5%AD%97%E8%8A%82%E7%A0%81>,
其他编译
生成机器一样,Java 字节需要 *Java 虚拟(JVM)* 执行

可以 JVM 想象安装电脑程序这个程序允许执行 Java 字节
人们谈论 “/是否电脑安装 Java/”,他们是否电脑安装
*JVM*。

JVM
我们前面章节讨论解释器功能类似但是没有源码存储
.java 文件当作输入而是编译字节作为输入

这种设置好处允许特定操作系统和平台上编译字节任何其他平台
JVM 执行

假设我们 Java 代码文件文件运行 Windows 操作系统计算机
编译字节这个字节可以 JVM 任何平台执行程序运行),
包括 Windows、Mac OS、Linux

大多数编程语言并非如此它们只能编译它们环境执行


Java
中的变量赋值

Java
我们之前讨论语言(Python JavaScript)主要区别在于
Java
*静态*语言

意味着我们变量数据类型必须程序编译之前建立理解

每次我们 Java 代码创建变量需要指定变量数据类型例如
字符串称为变量*声明*。

一旦我们声明变量数据类型只能整个程序执行过程保存类型
数据

JavaScript Python 非常不同它们数据类型程序执行期间建立
称为*运行时*。因此 JavaScript Python 这样语言称为*动态
类型语言*——我们不会源码明确声明变量数据类型可以轻松变量动态
重新分配任何类型

Java 声明变量

|Datatype name = value;
|

|Datatype|
我们需要存储变量类型整数字符串。|name|代表
名称我们之后代码使用。|value|我们赋值变量注意
JavaScript 一样所有 Java 声明结尾使用分号


Java
中的数据类型

Java 内置数据类型称为*原始*数据类型因为 Python
JavaScript
基础这些数据类型对于我们看起来非常熟悉主要原始
类型

*
整数 |int|:存储 −2,147,483,648 2,147,483,647之间整数
*
浮点数 |float|:存储 3.4x10^−038 3.4x10^038之间浮点数
*
布尔 |bool|:存储|true||false|。

注意还有一些其他原始类型(short、long、byte double)我们不会
这里介绍因为经常使用以下展示我们如何初始化这些数据类型

整数: |int x = 100;|

浮点数: |float pi = 3.14;|

字符: |char middleInitial = 'T';|

布尔: |bool isHuman = true;|

必须重申一旦声明变量数据类型变量只能保存指定数据类型

例如如果我们程序试图字符存储声明整数变量引发错误
在前面的示例我们不能字符 “S” 分配整数变量 /x/。

我们讨论下一个数据类型字符串——表示文本数据一系列字符数字符号

Java
中的字符串一种原始数据类型意味着它们小的部分组成
声明字符串变量我们使用 String 数据类型分配双引号

|String name = "Harry Potter";
|


Java
中的程序控制语句

JavaScript 一样,Java 使用花括号定义|if|语句循环函数代码
我们使用程序控制语句改写 Java 语法


If / Else
语句

Java 语句编写 if/ else:

|int x = 10;

if ( x > 5 ) {
System.out.println("X is GREATER than 5!");
} else {
System.out.println("X is NOT GREATER than 5!");
}
|

这里|if|例子几乎 JavaScript一样不同我们声明 /x/ 数据类型
|int|以及我们使用 |System.out.println()| 不是 |console.log()|
消息

接下来我们讨论 Java 中的循环。Java JavaScript 语法非常相似所以
Java
中的|while|循环我们 JavaScript 看到基本相同

|int x = 1;

while ( x <= 100 ) {

System.out.println("This is a very important message!");

x = x + 1;

}
|

这个|while|循环打印指定消息 100

我们介绍编程语言部分到此结束由于我们使用相同概念介绍3语言
可能重复希望有助于打下坚实基础

接下来介绍一些其他相关话题需要立刻开始学习这些主题

我们讨论名为 Git 重要协作工具然后我们学习数据库存储访
数据接下来我们简要介绍 Web 开发框架最后我们稍微解包管理


11)
使用 Git 跟踪代码

Git
流行版本控制系统(VCS)。允许多个开发人员一起协作开发
我们了解 Git 什么如何工作以及如何操作基本
命令

直接进入 Git 之前我们补充一些编程项目共有概念

软件项目全部目录文件称为*代码*。*项目*项目目录高级
别的文件夹代码文件可以直接项目可以组织多个别的文件夹

代码准备进行测试部署可以*构建*计算机运行
。*构建过程*可以包括多个步骤这些步骤人类编写代码转换可以
计算机处理芯片可执行文件

构建代码程序可以特定操作系统运行例如 Linux、Mac OS Windows。

随着时间推移开发人员更新项目代码添加功能修复错误实施安全
一般来说开发人员可以通过方式软件项目更改

1.
文件文件夹添加项目
2.
编辑现有文件文件夹中的代码
3.
删除现有文件文件夹

随着项目壮大功能添加文件文件夹数量以及其中代码
增加大型项目可以壮大包含数百万代码十万文件

为了支持这种增长项目团队开发人员数量通常增加大型软件项目可能有数
甚至开发人员协同工作

这就引出问题:“/这些分布在世各地开发人员到底如何跟踪他们软件
代码以便他们可以项目一起工作?/”

开发团队需要准确跟踪代码进行哪些更改哪些文件文件夹到了影响
进行每次更改开发人员能够获得其他开发人员更新

过程称为*版本管理(versioning)**版本控制(version control)*。开发
人员使用称为*版本控制系统*(VCS)特殊工具跟踪管理共享软件项目
版本以下一些流行版本控制系统

* Git
* Subversion(SVN)
* Mercurial(Hg)

Git
赢得 VCS 桂冠迄今为止全球政府商业开源社区使用

Git
成了基于 Web VCS 平台 GitHub Bitbucket)流行对于任何
全面发展开发人员,Git 必须添加技能必不可少工具


基本 Git 命令

Git
*Git 仓库*创建存储有关我们软件项目信息。Git 仓库只是计算机
隐藏文件夹,Git 使用存储有关软件项目代码文件数据

我们使用软件项目通常自己 Git 仓库用于存储项目相关
这样可以单独跟踪单个计算机不同项目相关代码

计算机创建 Git 仓库主要方法第一文件系统现有文件夹
创建全新 Git 仓库

打开命令行桌面创建文件夹然后进入

|cd ~/Desktop

mkdir testgit

cd testgit/
|

现在我们创建文件夹进入我们可以使用以下命令初始化
Git
仓库

|git init
|

应该看到类似以下内容输出

|Initialized empty Git repository in /Users/me/Desktop/testgit/.git/
|

我们运行所有 Git 命令|git|开头接着空格然后我们运行
具体Git命令有时我们 Git 命令后面添加标志参数

|git init|
命令当前目录创建名为|.git|隐藏文件夹这个文件夹就是
我们上面提到 Git 仓库可以通过运行|ls -al|命令查看

获取 Git 仓库第二方法其他地方下载例如 Bitbucket GitHub。

Bitbucket
Github 允许人们托管开源项目网站可以项目下载电脑

如果 Bitbucket GitHub浏览感兴趣项目看到
Clone
按钮这个按钮提供命令 URL,可以复制粘贴
终端

|git clone https://jacobstopak@bitbucket.org/jacobstopak/baby-git.git
|

|git clone|
命令指定 URL 下载版本电脑文件夹这个 URL
可以上面例子中的网页 URL,可以 SSH URL,如下

|git clone git@bitbucket.org:jacobstopak/baby-git.git
|

运行|git clone|命令应该看到创建文件夹如果浏览
下载项目所有文件文件夹

接下来我们提到命令|git add <filename.ext>|。|git add|命令用来告诉
Git
我们跟踪哪些文件已经跟踪文件改动添加 Git *
*。

一旦文件更改文件可以`git commit -m "Commit message"
它们提交仓库 Git 仓库存储所有文件更改

使用|git status||git log|命令可以查看工作目录当前状态项目提交历史

我们这里触及表面,Git 还有必要命令 <https://
initialcommit.com/blog/Git-Cheat-Sheet-Beginner>
值得我们熟悉


12)
使用数据库 SQL 存储数据

数据库专门用于有效存储更新检索删除大量数据程序简而言之我们
可以数据库看成表格容器

可能使用 Microsoft Excel 中的表格只是包含数据我们
可以数据库设置表格存储我们程序正常工作所需信息

无论我们 JavaScript、Python、Java 还是其他语言编写程序我们可以
需要告诉我们程序数据库交互

我们可以数据库检索数据网页显示我们用户我们可以接受
网络注册表用户信息存储数据库以后使用

程序可以运行时数据库进行实时互动做到一点大多数数据库使用一种
叫做 *SQL* 语言*结构查询语言*简称

SQL
一种专门为数创建编程语言可以通过 SQL 告诉数据库什么

SQL代码称为*查询(query)*。我们可以编写 SQL 查询获取我们特定
需要数据或者数据插入特定粗略主要 SQL
查询类型:*read-SQL* *write-SQL*。

read-SQL
一种简单数据库获取数据我们查看使用查询完全
改变数据库中的数据

write-SQL
要么插入数据要么更新现有数据要么删除现有数据我们
学习如何编写一些基本 read-SQL 查询

编写查询之前我们知道我们编写查询什么! 传统数据库
组成**。我们 read-SQL 查询我们目标通常检索这些
个子

例如假设我们名为|PERSON|4,|FIRST_NAME||LAST_NAME|。
我们可以使用下面查询|FIRST_NAME|选择所有数据

|SELECT FIRST_NAME FROM PERSON;
|

SELECT
关键字告诉数据库我们检索数据后面接着我们想要查询FIRST_NAME。

然后我们使用 FROM 关键字告诉数据库哪个获取数据
PERSON
另外注意所有 SQL 命令分号结尾

我们数据常见要求之一进行过滤过滤意味着根据指定条件限制
结果

例如我们可能|PERSON|选择名为 “PHIL” 记录我们可以使
|WHERE|关键字 SQL 查询应用过滤器

|SELECT * FROM PERSON WHERE FIRST_NAME = 'PHIL';
|

这个查询返回|PERSON|中的所有因为我们|SELECT|子句使用星号|
*|,
没有列出具体只有|PERSON||FIRST_NAME|设置 “PHIL”
记录检索出来

最后我们谈谈排序问题时候我们希望看到查询结果特定顺序
排序可以使用|ORDER BY|子句实现一点

|SELECT *
FROM PERSON
ORDER BY LAST_NAME;
|

返回|PERSON|中的所有姓氏字母顺序排序

默认情况结果升序排序 A Z。我们可以添加可选|ASC||DESC|
关键字指定升序还是降序排序

|SELECT *
FROM PERSON
ORDER BY LAST_NAME DESC;
|


13)
阅读 Web 框架 MVC

时候我们非常常见应用程序类型编写代码。Web 应用程序或称
*Web Apps*)
依靠互联网运作应用程序。Web 应用程序便是常见软件
程序类型之一

Web
应用程序本质上功能强大网站大多数 Web 应用程序实现一些
网络服务器后端代码幕后执行逻辑支持应用程序功能

Web
应用程序后端代码使用常见编程语言包括 Python、Java JavaScript

Web
应用程序共有一些功能包括

*
提供一种方便方式动态更改网页内容
*
通过登录页面执行安全用户身份验证
*
提供强大应用程序安全功能
*
读取数据数据库

Web
框架代码其中包含所有 Web 应用程序可以开箱常用功能
Web
框架开发人员提供系统构建他们应用程序使用框架不必担心
Web
应用程序常见许多幕后任务编写代码

我们需要利用框架满足 Web 应用程序需求部分即可

例如如果我们需要连接特定 Web 应用程序中的数据库我们可以忽略数据
功能使用我们确实需要其他功能

我们可以定制应用程序网页用户业务逻辑可以 Web 框架看成
编程工具我们可以构建 Web 应用

本文涉及编程语言多个流行 Web 框架开发团队可以灵活
使用他们精通语言框架

Java
Spring 框架通过 *Spring Boot* 使得开发变得方便。Python
*Django*
框架。JavaScript *Node.js* 运行环境包括 *Express.js*
*Meteor.js*
多个框架选项这些框架免费开源


14)
玩转管理工具

指南最后主题*软件包管理*。根据环境不同,**可以代表
安装计算机独立程序可以代表我们软件项目利用
代码

我们应用程序经常依赖这些外部代码因此我们它们称为*依赖*。

管理帮助我们维护系统软件目的依赖程序。“维护根据需要
更新列出卸载依赖

我们讨论管理可以用于维护我们操作系统安装程序可以用于
软件项目依赖


Mac OS X:Homebrew

*Homebrew*
Mac OS X 操作系统流行管理提供 Mac 安装
更新跟踪列出卸载软件包应用程序便捷方式

许多可以通过 .dmg 文件下载安装应用程序可以使用 Homebrew 下载安装

以下通过 Homebrew 安装|wget|示例

|brew install wget
|


Linux:Apt
Yum

Linux
围绕命令行构建管理安装程序默认方式不足为奇

大多数主流版本 Linux 带有内置管理。*Advanced Package Tool*
(APT)
Debian 基于 Ubuntu Linux 发行本地管理
*Yellowdog Updater, Modified*(YUM)
RedHat Linux 发行本地管理

下面使用 APT 安装 Vim 例子

|sudo apt-get install vim
|

And using Yum:

|sudo yum install vim
|


JavaScript:Node Package Manager(NPM)

现在我们已经了解一些操作系统别的管理如何工作我们看看
语言管理这些可以帮助我们管理项目依赖软件。 *Node Package
Manager(NPM)*
默认 Node.js 一起安装

NPM
我们之前看到管理之间区别 NPM 可以*本地**全局*
运行本地模式用于我们正在处理特定项目/目录全局模式用于
系统安装

默认情况软件包安装本地可以使用|-g|标志全局安装软件包

|npm install request -g
|


Python:Pip

Python
名为*Pip*管理系统可能已经安装Pip,因为最新
版本Python打包在一起我们可以轻松*Python索引安装*使用|pip
install <package-name>|
命令安装Pip:

|pip install requests
|


Java:Apache Maven

*Apache Maven*(
通常称为** Maven**)免费开源工具套件包括依赖
管理

尽管支持其他语言,Maven主要用于Java项目。 Maven可以事情使
稍微复杂一些我们这里不再赘述


总结

本文介绍一些基本编码概念工具旨在展示软件开发鸟瞰图希望
当初开始学习编程时候鸟瞰图

涵盖主题包括互联网编程语言版本控制系统和数尝试描述这些
拼图如何组合在一起


未来规划

如果喜欢文章名为面向开发人员 Coding Essentials
Guidebook》 <https://initialcommit.com/store/coding-essentials-
guidebook-for-developers>
一共 14 涵盖本文讨论
主题

14 主题进行深入研究因此检验是否
文章有所收获途径

可能因为文章某种特定语言工具概念吸引鼓励深入研究
进一步学习

如果任何问题建议疑虑乐意听取意见可以邮件
jacob@initialcommit.io <mailto:jacob@initialcommit.io>。

------------------------------------------------------------------------
PapayaHUANG
译者:PapayaHUANG <https://www.freecodecamp.org/chinese/news/author/
papayahuang/>

阅读 文章 <https://www.freecodecamp.org/chinese/news/author/
papayahuang/>。

Jacob Stopak
作者:Jacob Stopak (英语) <https://www.freecodecamp.org/news/author/
initialcommit/>

阅读 文章 <https://www.freecodecamp.org/news/author/initialcommit/>。

------------------------------------------------------------------------

freeCodeCamp 免费学习编程。 freeCodeCamp 开源课程帮助 40,000
获得开发者工作开始学习 <https://www.freecodecamp.org/chinese/learn/>

freeCodeCamp
捐助支持 501(c)(3) 条款具有免税资格慈善组织
:82-0779546)。

我们使命帮助人们免费学习编程我们通过创建成千上万视频文章交互
编程课程——所有内容公众免费开放——实现目标

所有 freeCodeCamp 捐款用于我们教育项目购买服务器其他服务
以及聘用员工

可以点击此处免税捐款 <https://www.freecodecamp.org/chinese/donate>。


精选文章