网站标签该站未曾设置keywords
网站描述该站未曾设置description
上一篇:南宁丽邕投资发展有限责任公司
seo综合信息
SEO信息 百度来访IP:- | 移动端来访IP:- | 出站链接:0 | 站内链接:0 IP网速: IP地址:101.43.90.24 [中国上海上海 腾讯云] | 网速:158毫秒 ALEXA排名 世界排名:- | 预估IP:- | 预估PV:- 备案信息 闽ICP备2021017928号 | 名称:张智全 | 已创建:4年9个月13天
收录 百度 360 搜狗 谷歌 查询 0 0 0 0
电脑关键词 手机关键词 页面友好 首页位置 索引 近期收录 0 0 电脑端优秀 - 0 0
协议类型HTTP/2.0 200 OK 页面类型text/html 服务器类型- 是否压缩否 原网页大小196522 压缩后大小33398 压缩比83.01%
网站快照高 能 代 码 高 能 代 码 s y s t e m c t l 命 令 完 全 指 南 S y s t e m c t l 是 一 个 s y s t e m d 工 具 , 主 要 负 责 控 制 s y s t e m d 系 统 和 服 务 管 理 器 。 S y s t e m d 是 一 个 系 统 管 理 守 护 进 程 、 工 具 和 库 的 集 合 , 用 于 取 代 S y s t e m V 初 始 进 程 。 S y s t e m d 的 功 能 是 用 于 集 中 管 理 和 配 置 类 U N I X 系 统 。 在 L i n u x 生 态 系 统 中 , S y s t e m d 被 部 署 到 了 大 多 数 的 标 准 L i n u x 发 行 版 中 , 只 有 为 数 不 多 的 几 个 发 行 版 尚 未 部 署 。 S y s t e m d 通 常 是 所 有 其 它 守 护 进 程 的 父 进 程 , 但 并 非 总 是 如 此 。 使 用 S y s t e m c t l 管 理 L i n u x 服 务 本 文 旨 在 阐 明 在 运 行 s y s t e m d 的 系 统 上 “ 如 何 控 制 系 统 和 服 务 ” 。 S y s t e m d 初 体 验 和 S y s t e m c t l 基 础 1 . 首 先 检 查 你 的 系 统 中 是 否 安 装 有 s y s t e m d 并 确 定 当 前 安 装 的 版 本 # s y s t e m c t l v e r s i o n s y s t e m d 2 1 5 + P A M + A U D I T + S E L I N U X + I M A + S Y S V I N I T + L I B C R Y P T S E T U P + G C R Y P T + A C L + X Z S E C C O M P A P P A R M O R 上 例 中 很 清 楚 地 表 明 , 我 们 安 装 了 2 1 5 版 本 的 s y s t e m d 。 2 . 检 查 s y s t e m d 和 s y s t e m c t l 的 二 进 制 文 件 和 库 文 件 的 安 装 位 置 # w h e r e i s s y s t e m d s y s t e m d : / u s r / l i b / s y s t e m d / e t c / s y s t e m d / u s r / s h a r e / s y s t e m d / u s r / s h a r e / m a n / m a n 1 / s y s t e m d . 1 . g z # w h e r e i s s y s t e m c t l s y s t e m c t l : / u s r / b i n / s y s t e m c t l / u s r / s h a r e / m a n / m a n 1 / s y s t e m c t l . 1 . g z 3 . 检 查 s y s t e m d 是 否 运 行 # p s e a f | g r e p [ s ] y s t e m d r o o t 1 0 0 1 6 : 2 7 ? 0 0 : 0 0 : 0 0 / u s r / l i b / s y s t e m d / s y s t e m d s w i t c h e d r o o t s y s t e m d e s e r i a l i z e 2 3 r o o t 4 4 4 1 0 1 6 : 2 7 ? 0 0 : 0 0 : 0 0 / u s r / l i b / s y s t e m d / s y s t e m d j o u r n a l d r o o t 4 6 9 1 0 1 6 : 2 7 ? 0 0 : 0 0 : 0 0 / u s r / l i b / s y s t e m d / s y s t e m d u d e v d r o o t 5 5 5 1 0 1 6 : 2 7 ? 0 0 : 0 0 : 0 0 / u s r / l i b / s y s t e m d / s y s t e m d l o g i n d d b u s 5 5 6 1 0 1 6 : 2 7 ? 0 0 : 0 0 : 0 0 / b i n / d b u s d a e m o n s y s t e m a d d r e s s = s y s t e m d : n o f o r k n o p i d f i l e s y s t e m d a c t i v a t i o n 注 意 : s y s t e m d 是 作 为 父 进 程 ( P I D = 1 ) 运 行 的 。 在 上 面 带 ( e ) 参 数 的 p s 命 令 输 出 中 , 选 择 所 有 进 程 , ( a ) 选 择 除 会 话 前 导 外 的 所 有 进 程 , 并 使 用 ( f ) 参 数 输 出 完 整 格 式 列 表 ( 即 e a f ) 。 也 请 注 意 上 例 中 后 随 的 方 括 号 和 例 子 中 剩 余 部 分 。 方 括 号 表 达 式 是 g r e p 的 字 符 类 表 达 式 的 一 部 分 。 4 . 分 析 s y s t e m d 启 动 进 程 # s y s t e m d a n a l y z e S t a r t u p f i n i s h e d i n 4 8 7 m s ( k e r n e l ) + 2 . 7 7 6 s ( i n i t r d ) + 2 0 . 2 2 9 s ( u s e r s p a c e ) = 2 3 . 4 9 3 s 5 . 分 析 启 动 时 各 个 进 程 花 费 的 时 间 # s y s t e m d a n a l y z e b l a m e 8 . 5 6 5 s m a r i a d b . s e r v i c e 7 . 9 9 1 s w e b m i n . s e r v i c e 6 . 0 9 5 s p o s t f i x . s e r v i c e 4 . 3 1 1 s h t t p d . s e r v i c e 3 . 9 2 6 s f i r e w a l l d . s e r v i c e 3 . 7 8 0 s k d u m p . s e r v i c e 3 . 2 3 8 s t u n e d . s e r v i c e 1 . 7 1 2 s n e t w o r k . s e r v i c e 1 . 3 9 4 s l v m 2 m o n i t o r . s e r v i c e 1 . 1 2 6 s s y s t e m d l o g i n d . s e r v i c e . . . . 6 . 分 析 启 动 时 的 关 键 链 # s y s t e m d a n a l y z e c r i t i c a l c h a i n T h e t i m e a f t e r t h e u n i t i s a c t i v e o r s t a r t e d i s p r i n t e d a f t e r t h e @ c h a r a c t e r . T h e t i m e t h e u n i t t a k e s t o s t a r t i s p r i n t e d a f t e r t h e + c h a r a c t e r . m u l t i u s e r . t a r g e t @ 2 0 . 2 2 2 s └ ─ m a r i a d b . s e r v i c e @ 1 1 . 6 5 7 s + 8 . 5 6 5 s └ ─ n e t w o r k . t a r g e t @ 1 1 . 1 6 8 s └ ─ n e t w o r k . s e r v i c e @ 9 . 4 5 6 s + 1 . 7 1 2 s └ ─ N e t w o r k M a n a g e r . s e r v i c e @ 8 . 8 5 8 s + 5 9 6 m s └ ─ f i r e w a l l d . s e r v i c e @ 4 . 9 3 1 s + 3 . 9 2 6 s └ ─ b a s i c . t a r g e t @ 4 . 9 1 6 s └ ─ s o c k e t s . t a r g e t @ 4 . 9 1 6 s └ ─ d b u s . s o c k e t @ 4 . 9 1 6 s └ ─ s y s i n i t . t a r g e t @ 4 . 9 0 5 s └ ─ s y s t e m d u p d a t e u t m p . s e r v i c e @ 4 . 8 6 4 s + 3 9 m s └ ─ a u d i t d . s e r v i c e @ 4 . 5 6 3 s + 3 0 1 m s └ ─ s y s t e m d t m p f i l e s s e t u p . s e r v i c e @ 4 . 4 8 5 s + 6 9 m s └ ─ r h e l i m p o r t s t a t e . s e r v i c e @ 4 . 3 4 2 s + 1 4 2 m s └ ─ l o c a l f s . t a r g e t @ 4 . 3 2 4 s └ ─ b o o t . m o u n t @ 4 . 2 8 6 s + 3 1 m s └ ─ s y s t e m d f s c k @ d e v d i s k b y \ \ x 2 d u u i d 7 9 f 5 9 4 a d \ \ x 2 d a 3 3 2 \ \ x 2 d 4 7 3 0 \ \ x 2 d b b 5 f \ \ x 2 d 8 5 d 1 9 6 0 8 0 9 6 └ ─ d e v d i s k b y \ \ x 2 d u u i d 7 9 f 5 9 4 a d \ \ x 2 d a 3 3 2 \ \ x 2 d 4 7 3 0 \ \ x 2 d b b 5 f \ \ x 2 d 8 5 d 1 9 6 0 8 0 9 6 4 . d e v i c e @ 4 重 要 : S y s t e m c t l 接 受 服 务 ( . s e r v i c e ) , 挂 载 点 ( . m o u n t ) , 套 接 口 ( . s o c k e t ) 和 设 备 ( . d e v i c e ) 作 为 单 元 。 7 . 列 出 所 有 可 用 单 元 # s y s t e m c t l l i s t u n i t f i l e s U N I T F I L E S T A T E p r o c s y s f s b i n f m t _ m i s c . a u t o m o u n t s t a t i c d e v h u g e p a g e s . m o u n t s t a t i c d e v m q u e u e . m o u n t s t a t i c p r o c s y s f s b i n f m t _ m i s c . m o u n t s t a t i c s y s f s f u s e c o n n e c t i o n s . m o u n t s t a t i c s y s k e r n e l c o n f i g . m o u n t s t a t i c s y s k e r n e l d e b u g . m o u n t s t a t i c t m p . m o u n t d i s a b l e d b r a n d b o t . p a t h d i s a b l e d . . . . . 8 . 列 出 所 有 运 行 中 单 元 # s y s t e m c t l l i s t u n i t s U N I T L O A D A C T I V E S U B D E S C R I P T I O N p r o c s y s f s b i n f m t _ m i s c . a u t o m o u n t l o a d e d a c t i v e w a i t i n g A r b i t r a r y E x e c u t a b l e F i l e F o r m a t s F i l e S y s t e s y s d e v i c e s p c . . . 0 1 : 0 : 0 : 0 b l o c k s r 0 . d e v i c e l o a d e d a c t i v e p l u g g e d V B O X _ C D R O M s y s d e v i c e s p c . . . : 0 0 : 0 3 . 0 n e t e n p 0 s 3 . d e v i c e l o a d e d a c t i v e p l u g g e d P R O / 1 0 0 0 M T D e s k t o p A d a p t e r s y s d e v i c e s p c . . . 0 0 : 0 5 . 0 s o u n d c a r d 0 . d e v i c e l o a d e d a c t i v e p l u g g e d 8 2 8 0 1 A A A C 9 7 A u d i o C o n t r o l l e r s y s d e v i c e s p c . . . : 0 : 0 b l o c k s d a s d a 1 . d e v i c e l o a d e d a c t i v e p l u g g e d V B O X _ H A R D D I S K s y s d e v i c e s p c . . . : 0 : 0 b l o c k s d a s d a 2 . d e v i c e l o a d e d a c t i v e p l u g g e d L V M P V Q z y o 3 l q Y a L u R U a C j u k p l j o q K t X V g B Q 8 s y s d e v i c e s p c . . . 0 2 : 0 : 0 : 0 b l o c k s d a . d e v i c e l o a d e d a c t i v e p l u g g e d V B O X _ H A R D D I S K s y s d e v i c e s p l . . . e r i a l 8 2 5 0 t t y t t y S 0 . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / d e v i c e s / p l a t f o r m / s e r i a l 8 2 5 0 / t t y / t t y S 0 s y s d e v i c e s p l . . . e r i a l 8 2 5 0 t t y t t y S 1 . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / d e v i c e s / p l a t f o r m / s e r i a l 8 2 5 0 / t t y / t t y S 1 s y s d e v i c e s p l . . . e r i a l 8 2 5 0 t t y t t y S 2 . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / d e v i c e s / p l a t f o r m / s e r i a l 8 2 5 0 / t t y / t t y S 2 s y s d e v i c e s p l . . . e r i a l 8 2 5 0 t t y t t y S 3 . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / d e v i c e s / p l a t f o r m / s e r i a l 8 2 5 0 / t t y / t t y S 3 s y s d e v i c e s v i r t u a l b l o c k d m \ \ x 2 d 0 . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / d e v i c e s / v i r t u a l / b l o c k / d m 0 s y s d e v i c e s v i r t u a l b l o c k d m \ \ x 2 d 1 . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / d e v i c e s / v i r t u a l / b l o c k / d m 1 s y s m o d u l e c o n f i g f s . d e v i c e l o a d e d a c t i v e p l u g g e d / s y s / m o d u l e / c o n f i g f s . . . 9 . 列 出 所 有 失 败 单 元 # s y s t e m c t l f a i l e d U N I T L O A D A C T I V E S U B D E S C R I P T I O N k d u m p . s e r v i c e l o a d e d f a i l e d f a i l e d C r a s h r e c o v e r y k e r n e l a r m i n g L O A D = R e f l e c t s w h e t h e r t h e u n i t d e f i n i t i o n w a s p r o p e r l y l o a d e d . A C T I V E = T h e h i g h l e v e l u n i t a c t i v a t i o n s t a t e , i . e . g e n e r a l i z a t i o n o f S U B . S U B = T h e l o w l e v e l u n i t a c t i v a t i o n s t a t e , v a l u e s d e p e n d o n u n i t t y p e . 1 l o a d e d u n i t s l i s t e d . P a s s a l l t o s e e l o a d e d b u t i n a c t i v e u n i t s , t o o . T o s h o w a l l i n s t a l l e d u n i t f i l e s u s e s y s t e m c t l l i s t u n i t f i l e s . 1 0 . 检 查 某 个 单 元 ( 如 c r o n . s e r v i c e ) 是 否 启 用 # s y s t e m c t l i s e n a b l e d c r o n d . s e r v i c e e n a b l e d 1 1 . 检 查 某 个 单 元 或 服 务 是 否 运 行 # s y s t e m c t l s t a t u s f i r e w a l l d . s e r v i c e f i r e w a l l d . s e r v i c e f i r e w a l l d d y n a m i c f i r e w a l l d a e m o n L o a d e d : l o a d e d ( / u s r / l i b / s y s t e m d / s y s t e m / f i r e w a l l d . s e r v i c e ; e n a b l e d ) A c t i v e : a c t i v e ( r u n n i n g ) s i n c e T u e 2 0 1 5 0 4 2 8 1 6 : 2 7 : 5 5 I S T ; 3 4 m i n a g o M a i n P I D : 5 4 9 ( f i r e w a l l d ) C G r o u p : / s y s t e m . s l i c e / f i r e w a l l d . s e r v i c e └ ─ 5 4 9 / u s r / b i n / p y t h o n E s / u s r / s b i n / f i r e w a l l d n o f o r k n o p i d A p r 2 8 1 6 : 2 7 : 5 1 t e c m i n t s y s t e m d [ 1 ] : S t a r t i n g f i r e w a l l d d y n a m i c f i r e w a l l d a e m o n . . . A p r 2 8 1 6 : 2 7 : 5 5 t e c m i n t s y s t e m d [ 1 ] : S t a r t e d f i r e w a l l d d y n a m i c f i r e w a l l d a e m o n . 使 用 S y s t e m c t l 控 制 并 管 理 服 务 1 2 . 列 出 所 有 服 务 ( 包 括 启 用 的 和 禁 用 的 ) # s y s t e m c t l l i s t u n i t f i l e s t y p e = s e r v i c e U N I T F I L E S T A T E a r p e t h e r s . s e r v i c e d i s a b l e d a u d i t d . s e r v i c e e n a b l e d a u t o v t @ . s e r v i c e d i s a b l e d b l k a v a i l a b i l i t y . s e r v i c e d i s a b l e d b r a n d b o t . s e r v i c e s t a t i c c o l l e c t d . s e r v i c e d i s a b l e d c o n s o l e g e t t y . s e r v i c e d i s a b l e d c o n s o l e s h e l l . s e r v i c e d i s a b l e d c p u p o w e r . s e r v i c e d i s a b l e d c r o n d . s e r v i c e e n a b l e d d b u s o r g . f e d o r a p r o j e c t . F i r e w a l l D 1 . s e r v i c e e n a b l e d . . . . 1 3 . L i n u x 中 如 何 启 动 、 重 启 、 停 止 、 重 载 服 务 以 及 检 查 服 务 ( 如 h t t p d . s e r v i c e ) 状 态 # s y s t e m c t l s t a r t h t t p d . s e r v i c e # s y s t e m c t l r e s t a r t h t t p d . s e r v i c e # s y s t e m c t l s t o p h t t p d . s e r v i c e # s y s t e m c t l r e l o a d h t t p d . s e r v i c e # s y s t e m c t l s t a t u s h t t p d . s e r v i c e h t t p d . s e r v i c e T h e A p a c h e H T T P S e r v e r L o a d e d : l o a d e d ( / u s r / l i b / s y s t e m d / s y s t e m / h t t p d . s e r v i c e ; e n a b l e d ) A c t i v e : a c t i v e ( r u n n i n g ) s i n c e T u e 2 0 1 5 0 4 2 8 1 7 : 2 1 : 3 0 I S T ; 6 s a g o P r o c e s s : 2 8 7 6 E x e c S t o p = / b i n / k i l l W I N C H $ ( c o d e = e x i t e d , s t a t u s = 0 / S U C C E S S ) M a i n P I D : 2 8 8 1 ( h t t p d ) S t a t u s : P r o c e s s i n g r e q u e s t s . . . C G r o u p : / s y s t e m . s l i c e / h t t p d . s e r v i c e ├ ─ 2 8 8 1 / u s r / s b i n / h t t p d D F O R E G R O U N D ├ ─ 2 8 8 4 / u s r / s b i n / h t t p d D F O R E G R O U N D ├ ─ 2 8 8 5 / u s r / s b i n / h t t p d D F O R E G R O U N D ├ ─ 2 8 8 6 / u s r / s b i n / h t t p d D F O R E G R O U N D ├ ─ 2 8 8 7 / u s r / s b i n / h t t p d D F O R E G R O U N D └ ─ 2 8 8 8 / u s r / s b i n / h t t p d D F O R E G R O U N D A p r 2 8 1 7 : 2 1 : 3 0 t e c m i n t s y s t e m d [ 1 ] : S t a r t i n g T h e A p a c h e H T T P S e r v e r . . . A p r 2 8 1 7 : 2 1 : 3 0 t e c m i n t h t t p d [ 2 8 8 1 ] : A H 0 0 5 5 8 : h t t p d : C o u l d n o t r e l i a b l y d e t e r m i n e t h e s e r v e r s f u l l y q . . . s s a g e A p r 2 8 1 7 : 2 1 : 3 0 t e c m i n t s y s t e m d [ 1 ] : S t a r t e d T h e A p a c h e H T T P S e r v e r . H i n t : S o m e l i n e s w e r e e l l i p s i z e d , u s e l t o s h o w i n f u l l . 注 意 : 当 我 们 使 用 s y s t e m c t l 的 s t a r t , r e s t a r t , s t o p 和 r e l o a d 命 令 时 , 我 们 不 会 从 终 端 获 取 到 任 何 输 出 内 容 , 只 有 s t a t u s 命 令 可 以 打 印 输 出 。 1 4 . 如 何 激 活 服 务 并 在 启 动 时 启 用 或 禁 用 服 务 ( 即 系 统 启 动 时 自 动 启 动 服 务 ) # s y s t e m c t l i s a c t i v e h t t p d . s e r v i c e # s y s t e m c t l e n a b l e h t t p d . s e r v i c e # s y s t e m c t l d i s a b l e h t t p d . s e r v i c e 1 5 . 如 何 屏 蔽 ( 让 它 不 能 启 动 ) 或 显 示 服 务 ( 如 h t t p d . s e r v i c e ) # s y s t e m c t l m a s k h t t p d . s e r v i c e l n s / d e v / n u l l / e t c / s y s t e m d / s y s t e m / h t t p d . s e r v i c e # s y s t e m c t l u n m a s k h t t p d . s e r v i c e r m / e t c / s y s t e m d / s y s t e m / h t t p d . s e r v i c e 1 6 . 使 用 s y s t e m c t l 命 令 杀 死 服 务 # s y s t e m c t l k i l l h t t p d # s y s t e m c t l s t a t u s h t t p d h t t p d . s e r v i c e T h e A p a c h e H T T P S e r v e r L o a d e d : l o a d e d ( / u s r / l i b / s y s t e m d / s y s t e m / h t t p d . s e r v i c e ; e n a b l e d ) A c t i v e : f a i l e d ( R e s u l t : e x i t c o d e ) s i n c e T u e 2 0 1 5 0 4 2 8 1 8 : 0 1 : 4 2 I S T ; 2 8 m i n a g o M a i n P I D : 2 8 8 1 ( c o d e = e x i t e d , s t a t u s = 0 / S U C C E S S ) S t a t u s : T o t a l r e q u e s t s : 0 ; C u r r e n t r e q u e s t s / s e c : 0 ; C u r r e n t t r a f f i c : 0 B / s e c A p r 2 8 1 7 : 3 7 : 2 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 2 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 3 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 3 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 4 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 4 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 5 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 7 : 3 7 : 5 9 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : G o t n o t i f i c a t i o n m e s s a g e f r o m P I D 2 8 8 1 , b u t r e c e p t i . . . b l e d . A p r 2 8 1 8 : 0 1 : 4 2 t e c m i n t s y s t e m d [ 1 ] : h t t p d . s e r v i c e : c o n t r o l p r o c e s s e x i t e d , c o d e = e x i t e d s t a t u s = 2 2 6 A p r 2 8 1 8 : 0 1 : 4 2 t e c m i n t s y s t e m d [ 1 ] : U n i t h t t p d . s e r v i c e e n t e r e d f a i l e d s t a t e . H i n t : S o m e l i n e s w e r e e l l i p s i z e d , u s e l t o s h o w i n f u l l . 使 用 S y s t e m c t l 控 制 并 管 理 挂 载 点 1 7 . 列 出 所 有 系 统 挂 载 点 # s y s t e m c t l l i s t u n i t f i l e s t y p e = m o u n t U N I T F I L E S T A T E d e v h u g e p a g e s . m o u n t s t a t i c d e v m q u e u e . m o u n t s t a t i c p r o c s y s f s b i n f m t _ m i s c . m o u n t s t a t i c s y s f s f u s e c o n n e c t i o n s . m o u n t s t a t i c s y s k e r n e l c o n f i g . m o u n t s t a t i c s y s k e r n e l d e b u g . m o u n t s t a t i c t m p . m o u n t d i s a b l e d 1 8 . 挂 载 、 卸 载 、 重 新 挂 载 、 重 载 系 统 挂 载 点 并 检 查 系 统 中 挂 载 点 状 态 # s y s t e m c t l s t a r t t m p . m o u n t # s y s t e m c t l s t o p t m p . m o u n t # s y s t e m c t l r e s t a r t t m p . m o u n t # s y s t e m c t l r e l o a d t m p . m o u n t # s y s t e m c t l s t a t u s t m p . m o u n t t m p . m o u n t T e m p o r a r y D i r e c t o r y L o a d e d : l o a d e d ( / u s r / l i b / s y s t e m d / s y s t e m / t m p . m o u n t ; d i s a b l e d ) A c t i v e : a c t i v e ( m o u n t e d ) s i n c e T u e 2 0 1 5 0 4 2 8 1 7 : 4 6 : 0 6 I S T ; 2 m i n 4 8 s a g o W h e r e : / t m p W h a t : t m p f s D o c s : m a n : h i e r ( 7 ) h t t p : / / w w w . f r e e d e s k t o p . o r g / w i k i / S o f t w a r e / s y s t e m d / A P I F i l e S y s t e m s P r o c e s s : 3 9 0 8 E x e c M o u n t = / b i n / m o u n t t m p f s / t m p t t m p f s o m o d e = 1 7 7 7 , s t r i c t a t i m e ( c o d e = e x i t e d , s t a t u s = 0 / S U C C E S S ) A p r 2 8 1 7 : 4 6 : 0 6 t e c m i n t s y s t e m d [ 1 ] : M o u n t i n g T e m p o r a r y D i r e c t o r y . . . A p r 2 8 1 7 : 4 6 : 0 6 t e c m i n t s y s t e m d [ 1 ] : t m p . m o u n t : D i r e c t o r y / t m p t o m o u n t o v e r i s n o t e m p t y , m o u n t i n g a n y w a y . A p r 2 8 1 7 : 4 6 : 0 6 t e c m i n t s y s t e m d [ 1 ] : M o u n t e d T e m p o r a r y D i r e c t o r y . 1 9 . 在 启 动 时 激 活 、 启 用 或 禁 用 挂 载 点 ( 系 统 启 动 时 自 动 挂 载 ) # s y s t e m c t l i s a c t i v e t m p . m o u n t # s y s t e m c t l e n a b l e t m p . m o u n t # s y s t e m c t l d i s a b l e t m p . m o u n t 2 0 . 在 L i n u x 中 屏 蔽 ( 让 它 不 能 启 用 ) 或 可 见 挂 载 点 # s y s t e m c t l m a s k t m p . m o u n t l n s / d e v / n u l l / e t c / s y s t e m d / s y s t e m / t m p . m o u n t # s y s t e m c t l u n m a s k t m p . m o u n t r m / e t c / s y s t e m d / s y s t e m / t m p . m o u n t 使 用 S y s t e m c t l 控 制 并 管 理 套 接 口 2 1 . 列 出 所 有 可 用 系 统 套 接 口 # s y s t e m c t l l i s t u n i t f i l e s t y p e = s o c k e t U N I T F I L E S T A T E d b u s . s o c k e t s t a t i c d m e v e n t . s o c k e t e n a b l e d l v m 2 l v m e t a d . s o c k e t e n a b l e d r s y n c d . s o c k e t d i s a b l e d s s h d . s o c k e t d i s a b l e d s y s l o g . s o c k e t s t a t i c s y s t e m d i n i t c t l . s o c k e t s t a t i c s y s t e m d j o u r n a l d . s o c k e t s t a t i c s y s t e m d s h u t d o w n d . s o c k e t s t a t i c s y s t e m d u d e v d c o n t r o l . s o c k e t s t a t i c s y s t e m d u d e v d k e r n e l . s o c k e t s t a t i c 1 1 u n i t f i l e s l i s t e d . 2 2 . 在 L i n u x 中 启 动 、 重 启 、 停 止 、 重 载 套 接 口 并 检 查 其 状 态 # s y s t e m c t l s t a r t c u p s . s o c k e t # s y s t e m c t l r e s t a r t c u p s . s o c k e t # s y s t e m c t l s t o p c u p s . s o c k e t # s y s t e m c t l r e l o a d c u p s . s o c k e t # s y s t e m c t l s t a t u s c u p s . s o c k e t c u p s . s o c k e t C U P S P r i n t i n g S e r v i c e S o c k e t s L o a d e d : l o a d e d ( / u s r / l i b / s y s t e m d / s y s t e m / c u p s . s o c k e t ; e n a b l e d ) A c t i v e : a c t i v e ( l i s t e n i n g ) s i n c e T u e 2 0 1 5 0 4 2 8 1 8 : 1 0 : 5 9 I S T ; 8 s a g o L i s t e n : / v a r / r u n / c u p s / c u p s . s o c k ( S t r e a m ) A p r 2 8 1 8 : 1 0 : 5 9 t e c m i n t s y s t e m d [ 1 ] : S t a r t i n g C U P S P r i n t i n g S e r v i c e S o c k e t s . A p r 2 8 1 8 : 1 0 : 5 9 t e c m i n t s y s t e m d [ 1 ] : L i s t e n i n g o n C U P S P r i n t i n g S e r v i c e S o c k e t s . 2 3 . 在 启 动 时 激 活 套 接 口 , 并 启 用 或 禁 用 它 ( 系 统 启 动 时 自 启 动 ) # s y s t e m c t l i s a c t i v e c u p s . s o c k e t # s y s t e m c t l e n a b l e c u p s . s o c k e t # s y s t e m c t l d i s a b l e c u p s . s o c k e t 2 4 . 屏 蔽 ( 使 它 不 能 启 动 ) 或 显 示 套 接 口 # s y s t e m c t l m a s k c u p s . s o c k e t l n s / d e v / n u l l / e t c / s y s t e m d / s y s t e m / c u p s . s o c k e t # s y s t e m c t l u n m a s k c u p s . s o c k e t r m / e t c / s y s t e m d / s y s t e m / c u p s . s o c k e t 服 务 的 C P U 利 用 率 ( 分 配 额 ) 2 5 . 获 取 当 前 某 个 服 务 的 C P U 分 配 额 ( 如 h t t p d ) # s y s t e m c t l s h o w p C P U S h a r e s h t t p d . s e r v i c e C P U S h a r e s = 1 0 2 4 注 意 : 各 个 服 务 的 默 认 C P U 分 配 份 额 = 1 0 2 4 , 你 可 以 增 加 / 减 少 某 个 进 程 的 C P U 分 配 份 额 。 2 6 . 将 某 个 服 务 ( h t t p d . s e r v i c e ) 的 C P U 分 配 份 额 限 制 为 2 0 0 0 C P U S h a r e s / # s y s t e m c t l s e t p r o p e r t y h t t p d . s e r v i c e C P U S h a r e s = 2 0 0 0 # s y s t e m c t l s h o w p C P U S h a r e s h t t p d . s e r v i c e C P U S h a r e s = 2 0 0 0 注 意 : 当 你 为 某 个 服 务 设 置 C P U S h a r e s , 会 自 动 创 建 一 个 以 服 务 名 命 名 的 目 录 ( 如 h t t p d . s e r v i c e ) , 里 面 包 含 了 一 个 名 为 9 0 C P U S h a r e s . c o n f 的 文 件 , 该 文 件 含 有 C P U S h a r e 限 制 信 息 , 你 可 以 通 过 以 下 方 式 查 看 该 文 件 : # v i / e t c / s y s t e m d / s y s t e m / h t t p d . s e r v i c e . d / 9 0 C P U S h a r e s . c o n f [ S e r v i c e ] C P U S h a r e s = 2 0 0 0 2 7 . 检 查 某 个 服 务 的 所 有 配 置 细 节 # s y s t e m c t l s h o w h t t p d I d = h t t p d . s e r v i c e N a m e s = h t t p d . s e r v i c e R e q u i r e s = b a s i c . t a r g e t W a n t s = s y s t e m . s l i c e W a n t e d B y = m u l t i u s e r . t a r g e t C o n f l i c t s = s h u t d o w n . t a r g e t B e f o r e = s h u t d o w n . t a r g e t m u l t i u s e r . t a r g e t A f t e r = n e t w o r k . t a r g e t r e m o t e f s . t a r g e t n s s l o o k u p . t a r g e t s y s t e m d j o u r n a l d . s o c k e t b a s i c . t a r g e t s y s t e m . s l i c e D e s c r i p t i o n = T h e A p a c h e H T T P S e r v e r L o a d S t a t e = l o a d e d A c t i v e S t a t e = a c t i v e S u b S t a t e = r u n n i n g F r a g m e n t P a t h = / u s r / l i b / s y s t e m d / s y s t e m / h t t p d . s e r v i c e . . . . 2 8 . 分 析 某 个 服 务 ( h t t p d ) 的 关 键 链 # s y s t e m d a n a l y z e c r i t i c a l c h a i n h t t p d . s e r v i c e T h e t i m e a f t e r t h e u n i t i s a c t i v e o r s t a r t e d i s p r i n t e d a f t e r t h e @ c h a r a c t e r . T h e t i m e t h e u n i t t a k e s t o s t a r t i s p r i n t e d a f t e r t h e + c h a r a c t e r . h t t p d . s e r v i c e + 1 4 2 m s └ ─ n e t w o r k . t a r g e t @ 1 1 . 1 6 8 s └ ─ n e t w o r k . s e r v i c e @ 9 . 4 5 6 s + 1 . 7 1 2 s └ ─ N e t w o r k M a n a g e r . s e r v i c e @ 8 . 8 5 8 s + 5 9 6 m s └ ─ f i r e w a l l d . s e r v i c e @ 4 . 9 3 1 s + 3 . 9 2 6 s └ ─ b a s i c . t a r g e t @ 4 . 9 1 6 s └ ─ s o c k e t s . t a r g e t @ 4 . 9 1 6 s └ ─ d b u s . s o c k e t @ 4 . 9 1 6 s └ ─ s y s i n i t . t a r g e t @ 4 . 9 0 5 s └ ─ s y s t e m d u p d a t e u t m p . s e r v i c e @ 4 . 8 6 4 s + 3 9 m s └ ─ a u d i t d . s e r v i c e @ 4 . 5 6 3 s + 3 0 1 m s └ ─ s y s t e m d t m p f i l e s s e t u p . s e r v i c e @ 4 . 4 8 5 s + 6 9 m s └ ─ r h e l i m p o r t s t a t e . s e r v i c e @ 4 . 3 4 2 s + 1 4 2 m s └ ─ l o c a l f s . t a r g e t @ 4 . 3 2 4 s └ ─ b o o t . m o u n t @ 4 . 2 8 6 s + 3 1 m s └ ─ s y s t e m d f s c k @ d e v d i s k b y \ \ x 2 d u u i d 7 9 f 5 9 4 a d \ \ x 2 d a 3 3 2 \ \ x 2 d 4 7 3 0 \ \ x 2 d b b 5 f \ \ x 2 d 8 5 d 1 9 6 0 8 0 9 6 4 . s e r v i c e @ 4 . 0 9 2 s + 1 4 9 m s └ ─ d e v d i s k b y \ \ x 2 d u u i d 7 9 f 5 9 4 a d \ \ x 2 d a 3 3 2 \ \ x 2 d 4 7 3 0 \ \ x 2 d b b 5 f \ \ x 2 d 8 5 d 1 9 6 0 8 0 9 6 4 . d e v i c e @ 4 . 0 9 2 s 2 9 . 获 取 某 个 服 务 ( h t t p d ) 的 依 赖 性 列 表 # s y s t e m c t l l i s t d e p e n d e n c i e s h t t p d . s e r v i c e h t t p d . s e r v i c e ├ ─ s y s t e m . s l i c e └ ─ b a s i c . t a r g e t ├ ─ f i r e w a l l d . s e r v i c e ├ ─ m i c r o c o d e . s e r v i c e ├ ─ r h e l a u t o r e l a b e l m a r k . s e r v i c e ├ ─ r h e l a u t o r e l a b e l . s e r v i c e ├ ─ r h e l c o n f i g u r e . s e r v i c e ├ ─ r h e l d m e s g . s e r v i c e ├ ─ r h e l l o a d m o d u l e s . s e r v i c e ├ ─ p a t h s . t a r g e t ├ ─ s l i c e s . t a r g e t │ ├ ─ . s l i c e │ └ ─ s y s t e m . s l i c e ├ ─ s o c k e t s . t a r g e t │ ├ ─ d b u s . s o c k e t . . . . 3 0 . 按 等 级 列 出 控 制 组 # s y s t e m d c g l s ├ ─ 1 / u s r / l i b / s y s t e m d / s y s t e m d s w i t c h e d r o o t s y s t e m d e s e r i a l i z e 2 3 ├ ─ u s e r . s l i c e │ └ ─ u s e r 0 . s l i c e │ └ ─ s e s s i o n 1 . s c o p e │ ├ ─ 2 4 9 8 s s h d : r o o t @ p t s / 0 │ ├ ─ 2 5 0 0 b a s h │ ├ ─ 4 5 2 1 s y s t e m d c g l s │ └ ─ 4 5 2 2 s y s t e m d c g l s └ ─ s y s t e m . s l i c e ├ ─ h t t p d . s e r v i c e │ ├ ─ 4 4 4 0 / u s r / s b i n / h t t p d D F O R E G R O U N D │ ├ ─ 4 4 4 2 / u s r / s b i n / h t t p d D F O R E G R O U N D │ ├ ─ 4 4 4 3 / u s r / s b i n / h t t p d D F O R E G R O U N D │ ├ ─ 4 4 4 4 / u s r / s b i n / h t t p d D F O R E G R O U N D │ ├ ─ 4 4 4 5 / u s r / s b i n / h t t p d D F O R E G R O U N D │ └ ─ 4 4 4 6 / u s r / s b i n / h t t p d D F O R E G R O U N D ├ ─ p o l k i t . s e r v i c e │ └ ─ 7 2 1 / u s r / l i b / p o l k i t 1 / p o l k i t d n o d e b u g . . . . 3 1 . 按 C P U 、 内 存 、 输 入 和 输 出 列 出 控 制 组 # s y s t e m d c g t o p P a t h T a s k s % C P U M e m o r y I n p u t / s O u t p u t / s / 8 3 1 . 0 4 3 7 . 8 M / s y s t e m . s l i c e 0 . 1 / s y s t e m . s l i c e / m a r i a d b . s e r v i c e 2 0 . 1 / s y s t e m . s l i c e / t u n e d . s e r v i c e 1 0 . 0 / s y s t e m . s l i c e / h t t p d . s e r v i c e 6 0 . 0 / s y s t e m . s l i c e / N e t w o r k M a n a g e r . s e r v i c e 1 / s y s t e m . s l i c e / a t o p . s e r v i c e 1 / s y s t e m . s l i c e / a t o p a c c t . s e r v i c e 1 / s y s t e m . s l i c e / a u d i t d . s e r v i c e 1 / s y s t e m . s l i c e / c r o n d . s e r v i c e 1 / s y s t e m . s l i c e / d b u s . s e r v i c e 1 / s y s t e m . s l i c e / f i r e w a l l d . s e r v i c e 1 / s y s t e m . s l i c e / l v m 2 l v m e t a d . s e r v i c e 1 / s y s t e m . s l i c e / p o l k i t . s e r v i c e 1 / s y s t e m . s l i c e / p o s t f i x . s e r v i c e 3 / s y s t e m . s l i c e / r s y s l o g . s e r v i c e 1 / s y s t e m . s l i c e / s y s t e m g e t t y . s l i c e / g e t t y @ t t y 1 . s e r v i c e 1 / s y s t e m . s l i c e / s y s t e m d j o u r n a l d . s e r v i c e 1 / s y s t e m . s l i c e / s y s t e m d l o g i n d . s e r v i c e 1 / s y s t e m . s l i c e / s y s t e m d u d e v d . s e r v i c e 1 / s y s t e m . s l i c e / w e b m i n . s e r v i c e 1 / u s e r . s l i c e / u s e r 0 . s l i c e / s e s s i o n 1 . s c o p e 3 控 制 系 统 运 行 等 级 3 2 . 启 动 系 统 救 援 模 式 # s y s t e m c t l r e s c u e B r o a d c a s t m e s s a g e f r o m r o o t @ t e c m i n t o n p t s / 0 ( W e d 2 0 1 5 0 4 2 9 1 1 : 3 1 : 1 8 I S T ) : T h e s y s t e m i s g o i n g d o w n t o r e s c u e m o d e N O W ! 3 3 . 进 入 紧 急 模 式 # s y s t e m c t l e m e r g e n c y W e l c o m e t o e m e r g e n c y m o d e ! A f t e r l o g g i n g i n , t y p e j o u r n a l c t l x b t o v i e w s y s t e m l o g s , s y s t e m c t l r e b o o t t o r e b o o t , s y s t e m c t l d e f a u l t t o t r y a g a i n t o b o o t i n t o d e f a u l t m o d e . 3 4 . 列 出 当 前 使 用 的 运 行 等 级 # s y s t e m c t l g e t d e f a u l t m u l t i u s e r . t a r g e t 3 5 . 启 动 运 行 等 级 5 , 即 图 形 模 式 # s y s t e m c t l i s o l a t e r u n l e v e l 5 . t a r g e t 或 # s y s t e m c t l i s o l a t e g r a p h i c a l . t a r g e t 3 6 . 启 动 运 行 等 级 3 , 即 多 用 户 模 式 ( 命 令 行 ) # s y s t e m c t l i s o l a t e r u n l e v e l 3 . t a r g e t 或 # s y s t e m c t l i s o l a t e m u l t i u s e r . t a r g e t 3 6 . 设 置 多 用 户 模 式 或 图 形 模 式 为 默 认 运 行 等 级 # s y s t e m c t l s e t d e f a u l t r u n l e v e l 3 . t a r g e t # s y s t e m c t l s e t d e f a u l t r u n l e v e l 5 . t a r g e t 3 7 . 重 启 、 停 止 、 挂 起 、 休 眠 系 统 或 使 系 统 进 入 混 合 睡 眠 # s y s t e m c t l r e b o o t # s y s t e m c t l h a l t # s y s t e m c t l s u s p e n d # s y s t e m c t l h i b e r n a t e # s y s t e m c t l h y b r i d s l e e p 对 于 不 知 运 行 等 级 为 何 物 的 人 , 说 明 如 下 。 R u n l e v e l 0 : 关 闭 系 统 R u n l e v e l 1 : 救 援 ? 维 护 模 式 R u n l e v e l 3 : 多 用 户 , 无 图 形 系 统 R u n l e v e l 4 : 多 用 户 , 无 图 形 系 统 R u n l e v e l 5 : 多 用 户 , 图 形 化 系 统 R u n l e v e l 6 : 关 闭 并 重 启 机 器 给 J a v a 说 句 公 道 话 有 些 人 问 我 , 在 现 有 的 语 言 里 面 , 有 什 么 好 的 推 荐 ? 我 说 : “ J a v a 。 ” 他 们 很 惊 讶 : “ 什 么 ? J a v a ! ” 所 以 我 现 在 来 解 释 一 下 。 J a v a 超 越 了 所 有 咒 骂 它 的 “ 动 态 语 言 ” 也 许 是 因 为 年 轻 人 的 逆 反 心 理 , 人 们 都 不 把 自 己 的 入 门 语 言 当 回 事 。 很 早 的 时 候 , 计 算 机 系 的 学 生 用 S c h e m e 或 者 P a s c a l 入 门 , 现 在 大 部 分 学 校 用 J a v a 。 这 也 许 就 是 为 什 么 很 多 人 恨 J a v a , 瞧 不 起 用 J a v a 的 人 。 提 到 J a v a , 感 觉 就 像 是 爷 爷 那 辈 人 用 的 东 西 。 大 家 都 会 用 J a v a , 怎 么 能 显 得 我 优 秀 出 众 呢 ? 于 是 他 们 说 : “ J a v a 老 气 , 庞 大 , 复 杂 , 臃 肿 。 我 更 愿 意 探 索 新 的 语 言 … … ” 某 些 P y t h o n 程 序 员 , 在 论 坛 里 跟 初 学 者 讲 解 P y t h o n 有 什 么 好 , 其 中 一 个 原 因 竟 然 是 : “ 因 为 P y t h o n 不 是 J a v a ! ” 他 们 喜 欢 这 样 宣 传 : “ 看 P y t h o n 多 简 单 清 晰 啊 , 都 不 需 要 写 类 型 … … ” 对 于 J a v a 的 无 缘 无 故 的 恨 , 盲 目 的 否 认 , 导 致 了 他 们 看 不 到 它 很 重 要 的 优 点 , 以 至 于 迷 失 自 己 的 方 向 。 虽 然 气 势 上 占 上 风 , 然 而 其 实 P y t h o n 作 为 一 个 编 程 语 言 , 是 完 全 无 法 和 J a v a 抗 衡 的 。 在 性 能 上 , P y t h o n 比 J a v a 慢 几 十 倍 。 由 于 缺 乏 静 态 类 型 等 重 要 设 施 , P y t h o n 代 码 有 b u g 很 不 容 易 发 现 , 发 现 了 也 不 容 易 d e b u g , 所 以 P y t h o n 无 法 用 于 构 造 大 规 模 的 , 复 杂 的 系 统 。 你 也 许 发 现 某 些 s t a r t u p 公 司 的 主 要 代 码 是 P y t h o n 写 的 , 然 而 这 些 公 司 的 软 件 , 质 量 其 实 相 当 的 低 。 在 成 熟 的 公 司 里 , P y t h o n 最 多 只 用 来 写 工 具 性 质 的 东 西 , 或 者 小 型 的 , 不 会 影 响 系 统 可 靠 性 的 脚 本 。 静 态 类 型 的 缺 乏 , 也 导 致 了 P y t h o n 不 可 能 有 很 好 的 I D E 支 持 , 你 不 能 完 全 可 靠 地 “ 跳 转 到 定 义 ” , 不 可 能 完 全 可 靠 地 重 构 ( r e f a c t o r ) P y t h o n 代 码 。 P y C h a r m 对 于 早 期 的 P y t h o n 编 程 环 境 , 是 一 个 很 大 的 改 进 , 然 而 理 论 决 定 了 , 它 不 可 能 完 全 可 靠 地 进 行 “ 变 量 换 名 ” 等 基 本 的 重 构 操 作 。 就 算 是 比 P y C h a r m 强 大 很 多 的 P y S o n a r , 对 此 也 无 能 为 力 。 由 于 P y t h o n 的 设 计 过 度 的 “ 动 态 ” , 没 有 类 型 标 记 , 使 得 完 全 准 确 的 定 义 查 找 , 成 为 了 不 可 判 定 ( u n d e c i d a b l e ) 的 问 题 。 在 设 计 上 , P y t h o n , R u b y 比 起 J a v a , 其 实 复 杂 很 多 。 缺 少 了 很 多 重 要 的 特 性 , 有 毛 病 的 “ 强 大 特 性 ” 倒 是 多 了 一 堆 。 由 于 盲 目 的 推 崇 所 谓 “ 正 宗 的 面 向 对 象 ” 方 式 , 所 谓 “ l a t e b i n d i n g ” , 这 些 语 言 里 面 有 太 多 可 以 “ 重 载 ” 语 义 的 地 方 , 不 管 什 么 都 可 以 被 重 定 义 , 这 导 致 代 码 具 有 很 大 的 不 确 定 性 和 复 杂 性 , 很 多 b u g 就 是 被 隐 藏 在 这 些 被 重 载 的 语 言 结 构 里 面 了 。 因 此 , P y t h o n 和 R u b y 代 码 很 容 易 被 滥 用 , 不 容 易 理 解 , 容 易 写 得 很 乱 , 容 易 出 问 题 。 很 多 J a v a S c r i p t 程 序 员 也 盲 目 地 鄙 视 J a v a , 而 其 实 J a v a S c r i p t 比 P y t h o n 和 R u b y 还 要 差 。 不 但 具 有 它 们 的 几 乎 所 有 缺 点 , 而 且 缺 乏 一 些 必 要 的 设 施 。 J a v a S c r i p t 的 各 种 “ W E B 框 架 ” , 层 出 不 穷 , 似 乎 一 直 在 推 陈 出 新 , 而 其 实 呢 , 全 都 是 在 黑 暗 里 瞎 蒙 乱 撞 。 J a v a S c r i p t 的 社 区 以 幼 稚 和 愚 昧 著 称 。 你 经 常 发 现 一 些 非 常 基 本 的 常 识 , 被 J a v a S c r i p t “ 专 家 ” 们 当 成 了 不 起 的 发 现 似 的 , 在 大 会 上 宣 讲 。 我 看 不 出 来 J a v a S c r i p t 社 区 开 那 些 会 议 , 到 底 有 什 么 意 义 , 仿 佛 只 是 为 了 拉 关 系 找 工 作 。 P y t h o n 凑 合 可 以 用 在 不 重 要 的 地 方 , R u b y 是 垃 圾 , J a v a S c r i p t 是 垃 圾 中 的 垃 圾 。 原 因 很 简 单 , 因 为 R u b y 和 J a v a S c r i p t 的 设 计 者 , 其 实 都 是 一 知 半 解 的 民 科 。 然 而 世 界 就 是 这 么 奇 怪 , 一 个 彻 底 的 垃 圾 语 言 , 仍 然 可 以 宣 称 是 “ 程 序 员 最 好 的 朋 友 ” , 从 而 得 到 某 些 人 的 爱 戴 … … J a v a 的 “ 继 承 人 ” 没 能 超 越 它 最 近 一 段 时 间 , 很 多 人 热 衷 于 S c a l a , C l o j u r e , G o 等 新 兴 的 语 言 , 他 们 以 为 这 些 是 比 J a v a 更 现 代 , 更 先 进 的 语 言 , 以 为 它 们 最 终 会 取 代 J a v a 。 然 而 这 些 狂 热 分 子 们 逐 渐 发 现 , S c a l a , C l o j u r e 和 G o 其 实 并 没 有 解 决 它 们 声 称 能 解 决 的 问 题 , 反 而 带 来 了 它 们 自 己 的 毛 病 , 而 这 些 毛 病 很 多 是 J a v a 没 有 的 。 然 后 他 们 才 意 识 到 , J a v a 离 寿 终 正 寝 的 时 候 , 还 远 得 很 … … G o 语 言 关 于 G o , 我 已 经 评 论 过 很 多 了 , 有 兴 趣 的 人 可 以 看 这 里 。 总 之 , G o 是 民 科 加 自 大 狂 的 产 物 , 奇 葩 得 不 得 了 。 这 里 我 就 不 多 说 它 了 , 只 谈 谈 S c a l a 和 C l o j u r e 。 S c a l a 我 认 识 一 些 人 , 开 头 很 推 崇 S c a l a , 仿 佛 什 么 救 星 似 的 。 我 建 议 他 们 别 去 折 腾 了 , 老 老 实 实 用 J a v a 。 没 听 我 的 , 结 果 到 后 来 , 成 天 都 在 骂 S c a l a 的 各 种 毛 病 。 但 是 没 办 法 啊 , 项 目 上 了 贼 船 , 不 得 不 继 续 用 下 去 。 我 不 喜 欢 进 行 人 身 攻 击 , 然 而 我 发 现 一 个 语 言 的 好 坏 , 往 往 取 决 于 它 的 设 计 者 的 背 景 , 觉 悟 , 人 品 和 动 机 。 很 多 时 候 我 看 人 的 直 觉 是 异 常 的 准 , 以 至 于 依 据 对 语 言 设 计 者 的 第 一 印 象 , 我 就 能 预 测 到 这 个 语 言 将 来 会 怎 么 发 展 。 在 这 里 , 我 想 谈 一 下 对 S c a l a 和 C l o j u r e 的 设 计 者 的 看 法 。 S c a l a 的 设 计 者 M a r t i n O d e r s k y , 在 P L 领 域 有 所 建 树 , 发 表 了 不 少 学 术 论 文 ( 包 括 著 名 的 《 T h e C a l l b y N e e d L a m b d a C a l c u l u s 》 ) , 而 且 还 是 大 名 鼎 鼎 的 N i k l a u s W i r t h 的 门 徒 , 我 因 此 以 为 他 还 比 较 靠 谱 。 可 是 开 始 接 触 S c a l a 没 多 久 , 我 就 很 惊 讶 的 发 现 , 有 些 非 常 基 本 的 东 西 , S c a l a 都 设 计 错 了 。 这 就 是 为 什 么 我 几 度 试 图 采 用 S c a l a , 最 后 都 不 了 了 之 。 因 为 我 一 边 看 , 一 边 发 现 让 人 跌 眼 镜 的 设 计 失 误 , 而 这 些 问 题 都 是 J a v a 没 有 的 。 这 样 几 次 之 后 , 我 就 对 O d e r s k y 失 去 了 信 心 , 对 S c a l a 失 去 了 兴 趣 。 回 头 看 看 O d e r s k y 那 些 论 文 的 本 质 , 我 发 现 虽 然 理 论 性 貌 似 很 强 , 其 实 很 多 是 在 故 弄 玄 虚 ( 包 括 那 所 谓 的 “ c a l l b y n e e d l a m b d a c a l c u l u s ” ) 。 他 虽 然 对 某 些 特 定 的 问 题 有 一 定 深 度 , 然 而 知 识 面 其 实 不 是 很 广 , 眼 光 比 较 片 面 。 对 于 语 言 的 整 体 设 计 , 把 握 不 够 好 。 感 觉 他 是 把 各 种 语 言 里 的 特 性 , 强 行 拼 凑 在 一 起 , 并 没 有 考 虑 过 它 们 是 否 能 够 “ 和 谐 ” 的 共 存 , 也 很 少 考 虑 “ 可 用 性 ” 。 由 于 O d e r s k y 是 大 学 教 授 , 名 声 在 外 , 很 多 人 想 找 他 拿 个 P h D , 所 以 东 拉 西 扯 , 喜 欢 往 S c a l a 里 面 加 入 一 些 不 明 不 白 , 有 潜 在 问 题 的 “ 特 性 ” , 其 目 的 就 是 发 p a p e r , 混 毕 业 。 这 导 致 S c a l a 不 加 选 择 的 加 入 过 多 的 特 性 , 过 度 繁 复 。 加 入 的 特 性 很 多 后 来 被 证 明 没 有 多 大 用 处 , 反 而 带 来 了 问 题 。 学 生 把 代 码 实 现 加 入 到 S c a l a 的 编 译 器 , 毕 业 就 走 人 不 管 了 , 所 以 S c a l a 编 译 器 里 , 就 留 下 一 堆 堆 的 历 史 遗 留 垃 圾 和 b u g 。 这 也 许 不 是 O d e r s k y 一 个 人 的 错 , 然 而 至 少 说 明 他 把 关 不 严 , 或 者 品 位 确 实 有 问 题 。 最 有 名 的 采 用 S c a l a 的 公 司 , 无 非 是 T w i t t e r 。 其 实 像 T w i t t e r 那 样 的 系 统 , 用 J a v a 照 样 写 得 出 来 。 T w i t t e r 后 来 怎 么 样 了 呢 ? C E O 都 跑 了 : P 新 C E O 上 台 就 裁 员 3 0 0 多 人 , 包 括 工 程 师 在 内 。 我 估 计 T w i t t e r 裁 员 的 一 个 原 因 是 , 有 太 多 的 S c a l a 程 序 员 , 扯 着 各 种 高 大 上 不 实 用 的 口 号 , 比 如 “ 函 数 式 编 程 ” , 进 行 过 度 工 程 , 浪 费 公 司 的 资 源 。 花 着 公 司 的 钱 , 开 着 各 种 会 议 , 组 织 各 种 m e e t u p 和 h a c k a t h o n , 提 高 自 己 在 o p e n s o u r c e 领 域 的 威 望 , 其 实 没 有 为 公 司 创 造 很 多 价 值 … … C l o j u r e 再 来 说 一 下 C l o j u r e 。 当 C l o j u r e 最 初 “ 横 空 面 世 ” 的 时 候 , 有 些 人 热 血 沸 腾 地 向 我 推 荐 。 于 是 我 看 了 一 下 它 的 设 计 者 R i c h H i c k e y 做 的 宣 传 讲 座 视 频 。 当 时 我 就 对 他 一 知 半 解 拍 胸 脯 的 本 事 , 印 象 非 常 的 深 刻 。 R i c h H i c k e y 真 的 是 半 路 出 家 , 连 个 C S 学 位 都 没 有 。 可 他 那 种 气 势 , 仿 佛 其 他 的 语 言 设 计 者 什 么 都 不 懂 , 只 有 他 看 到 了 真 理 似 的 。 不 过 也 只 有 这 样 的 人 , 才 能 创 造 出 “ 宗 教 ” 吧 ? 满 口 热 门 的 名 词 , 什 么 l a z y 啊 , p u r e 啊 , S T M 啊 , 号 称 能 解 决 “ 大 规 模 并 发 ” 的 问 题 , … … 这 就 很 容 易 让 人 上 钩 。 其 实 他 这 些 词 儿 , 都 是 从 别 的 语 言 道 听 途 说 来 , 却 又 没 能 深 刻 理 解 其 精 髓 。 有 些 “ 函 数 式 语 言 ” 的 特 性 , 本 来 就 是 有 问 题 的 , 却 为 了 主 义 正 确 , 为 了 显 得 高 大 上 , 抄 过 来 。 所 以 最 后 你 发 现 这 语 言 是 挂 着 羊 头 卖 狗 肉 , 狗 皮 膏 药 一 样 说 得 头 头 是 道 , 用 起 来 怎 么 就 那 么 蹩 脚 。 C l o j u r e 的 社 区 , 一 直 忙 着 从 S c h e m e 和 R a c k e t 的 项 目 里 抄 袭 思 想 , 却 又 想 标 榜 是 自 己 的 发 明 。 比 如 T y p e d C l o j u r e , 就 是 原 封 不 动 抄 袭 T y p e d R a c k e t 。 有 些 一 模 一 样 的 基 本 概 念 , 在 S c h e m e 里 面 都 几 十 年 了 , 恁 是 要 改 个 不 一 样 的 名 字 , 免 得 你 们 发 现 那 是 S c h e m e 先 有 的 。 甚 至 有 人 把 S I C P , T h e L i t t l e S c h e m e r 等 名 著 里 的 代 码 , 全 都 用 C l o j u r e 改 写 一 遍 , 结 果 完 全 失 去 了 原 作 的 简 单 和 清 晰 。 最 后 你 发 现 , C l o j u r e 里 面 好 的 地 方 , 全 都 是 S c h e m e 已 经 有 的 , C l o j u r e 里 面 新 的 特 性 , 几 乎 全 都 有 问 题 。 我 参 加 过 一 些 C l o j u r e 的 m e e t u p , 可 是 后 来 发 现 , 里 面 竟 是 各 种 喊 着 大 口 号 的 小 白 , 各 种 趾 高 气 昂 的 民 科 , 愚 昧 之 至 。 如 果 现 在 要 做 一 个 系 统 , 真 的 宁 可 用 J a v a , 也 不 要 浪 费 时 间 去 折 腾 什 么 S c a l a 或 者 C l o j u r e 。 错 误 的 人 设 计 了 错 误 的 语 言 , 拿 出 来 浪 费 大 家 的 时 间 。 J a v a 没 有 特 别 讨 厌 的 地 方 我 至 今 不 明 白 , 很 多 人 对 J a v a 的 仇 恨 和 鄙 视 , 从 何 而 来 。 它 也 许 缺 少 一 些 方 便 的 特 性 , 然 而 长 久 以 来 用 J a v a 进 行 教 学 , 用 J a v a 工 作 , 用 J a v a 开 发 P y S o n a r , R u b y S o n a r , Y i n 语 言 , … … 我 发 现 J a v a 其 实 并 不 像 很 多 人 传 说 的 那 么 可 恶 。 我 发 现 自 己 想 要 的 9 5 % 以 上 的 功 能 , 在 J a v a 里 面 都 能 找 到 比 较 直 接 的 用 法 。 剩 下 的 5 % , 用 稍 微 笨 一 点 的 办 法 , 一 样 可 以 解 决 问 题 。 盲 目 推 崇 S c a l a 和 C l o j u r e 的 人 们 , 很 多 最 后 都 发 现 , 这 些 语 言 里 面 的 “ 新 特 性 ” , 几 乎 都 有 毛 病 , 里 面 最 重 要 最 有 用 的 特 性 , 其 实 早 就 已 经 在 J a v a 里 了 。 有 些 人 跟 我 说 : “ 你 看 , J a v a 做 不 了 这 件 事 情 ! ” 后 来 经 我 分 析 , 发 现 他 们 在 潜 意 识 里 早 已 死 板 的 认 定 , 非 得 用 某 种 最 新 最 酷 的 语 言 特 性 , 才 能 达 到 目 的 。 J a v a 没 有 这 些 特 性 , 他 们 就 以 为 非 得 用 另 外 的 语 言 。 其 实 , 如 果 你 换 一 个 角 度 来 看 问 题 , 不 要 钻 牛 角 尖 , 专 注 于 解 决 问 题 , 而 不 是 去 追 求 最 新 最 酷 的 “ 写 法 ” , 你 就 能 用 J a v a 解 决 它 , 而 且 解 决 得 干 净 利 落 。 很 多 人 说 J a v a 复 杂 臃 肿 , 其 实 是 因 为 早 期 的 D e s i g n P a t t e r n s , 试 图 提 出 千 篇 一 律 的 模 板 , 给 程 序 带 来 了 不 必 要 的 复 杂 性 。 然 而 J a v a 语 言 本 身 跟 D e s i g n P a t t e r n s 并 不 是 等 价 的 。 J a v a 的 设 计 者 , 跟 D e s i g n P a t t e r n 的 设 计 者 , 完 全 是 不 同 的 人 。 你 完 全 可 以 使 用 J a v a 写 出 非 常 简 单 的 代 码 , 而 不 使 用 D e s i g n P a t t e r n s 。 J a v a 只 是 一 个 语 言 。 语 言 只 提 供 给 你 基 本 的 机 制 , 至 于 代 码 写 的 复 杂 还 是 简 单 , 取 决 于 人 。 把 对 一 些 滥 用 D e s i g n P a t t e r n s 的 J a v a 程 序 员 的 恨 , 转 移 到 J a v a 语 言 本 身 , 从 而 完 全 抛 弃 它 的 一 切 , 是 不 明 智 的 。 结 论 我 平 时 用 着 J a v a 偷 着 乐 , 本 来 懒 得 评 论 其 它 语 言 的 。 可 是 实 在 不 忍 心 看 着 有 些 人 被 S c a l a 和 C l o j u r e 忽 悠 , 所 以 在 这 里 说 几 句 。 如 果 没 有 超 级 高 的 性 能 和 资 源 需 求 ( 可 能 要 用 C 这 样 的 低 级 语 言 ) , 目 前 我 建 议 就 老 老 实 实 用 J a v a 吧 。 虽 然 不 如 一 些 新 的 语 言 炫 酷 , 然 而 实 际 的 系 统 , 还 真 没 有 什 么 是 J a v a 写 不 出 来 的 。 少 数 地 方 可 能 需 要 绕 过 一 些 限 制 , 或 者 放 宽 一 些 要 求 , 然 而 这 样 的 情 况 不 是 很 多 。 编 程 使 用 什 么 工 具 是 重 要 的 , 然 而 工 具 终 究 不 如 自 己 的 技 术 重 要 。 很 多 人 花 了 太 多 时 间 , 折 腾 各 种 新 的 语 言 , 希 望 它 们 会 奇 迹 一 般 的 改 善 代 码 质 量 , 结 果 最 后 什 么 都 没 做 出 来 。 选 择 语 言 最 重 要 的 条 件 , 应 该 是 “ 够 好 用 ” 就 可 以 , 因 为 项 目 的 成 功 最 终 是 靠 人 , 而 不 是 靠 语 言 。 既 然 J a v a 没 有 特 别 大 的 问 题 , 不 会 让 你 没 法 做 好 项 目 , 为 什 么 要 去 试 一 些 不 靠 谱 的 新 语 言 呢 ? 解 谜 计 算 机 科 学 要 掌 握 一 个 学 科 的 精 髓 , 不 能 从 细 枝 末 节 开 始 。 人 脑 的 能 力 很 大 程 度 上 受 限 于 信 念 。 一 个 人 不 相 信 自 己 的 时 候 , 他 就 做 不 到 本 来 可 能 的 事 。 信 心 是 很 重 要 的 , 信 心 却 容 易 被 挫 败 。 如 果 只 见 树 木 不 见 森 林 , 人 会 失 去 信 心 , 以 为 要 到 猴 年 马 月 才 能 掌 握 一 个 学 科 。 所 以 我 们 不 从 “ 树 木 ” 开 始 , 而 是 引 导 读 者 一 起 来 探 索 这 背 后 的 “ 森 林 ” , 把 计 算 机 科 学 最 根 本 的 概 念 用 浅 显 的 例 子 解 释 , 让 读 者 领 会 到 它 们 的 本 质 。 把 这 些 概 念 稍 作 发 展 , 你 就 得 到 逐 渐 完 整 的 把 握 。 你 一 开 头 就 掌 握 着 整 个 学 科 , 而 且 一 直 掌 握 着 它 , 只 不 过 增 添 更 多 细 节 而 已 。 这 就 像 画 画 , 先 勾 勒 出 轮 廓 , 一 遍 遍 的 增 加 细 节 , 日 臻 完 善 , 却 不 失 去 对 大 局 的 把 握 。 一 般 计 算 机 专 业 的 学 生 学 了 很 多 课 程 , 可 是 直 到 毕 业 都 没 能 回 答 一 个 基 础 问 题 : 什 么 是 计 算 ? 这 一 章 会 引 导 你 去 发 现 这 个 问 题 的 答 案 。 不 要 小 看 这 基 础 的 问 题 , 它 经 常 是 解 决 现 实 问 题 的 重 要 线 索 。 世 界 上 有 太 多 不 理 解 它 的 人 , 他 们 走 了 很 多 的 弯 路 , 掉 进 很 多 的 坑 , 制 造 出 过 度 复 杂 或 者 有 漏 洞 的 理 论 和 技 术 。 接 下 来 , 我 们 就 来 理 解 几 个 关 键 的 概 念 , 由 此 接 触 到 计 算 的 本 质 。 手 指 算 术 每 个 人 都 做 过 计 算 , 只 是 大 部 分 人 都 没 有 理 解 自 己 在 做 什 么 。 回 想 一 下 幼 儿 园 ( 大 概 四 岁 ) 的 时 候 , 妈 妈 问 你 : “ 帮 我 算 一 下 , 4 + 3 等 于 几 ? ” 你 掰 了 一 会 手 指 , 回 答 : 7 。 当 你 掰 手 指 的 时 候 , 你 自 己 就 是 一 台 简 单 的 计 算 机 。 不 要 小 看 了 这 手 指 算 术 , 它 蕴 含 着 深 刻 的 原 理 。 计 算 机 科 学 植 根 于 这 类 非 常 简 单 的 过 程 , 而 不 是 复 杂 的 高 等 数 学 。 现 在 我 们 来 回 忆 一 下 这 个 过 程 。 这 里 应 该 有 一 段 动 画 , 但 现 阶 段 还 没 有 。 请 你 对 每 一 步 发 挥 一 下 想 象 力 , 增 加 点 “ 画 面 感 ” 。 当 妈 妈 问 你 “ 4 + 3 等 于 几 ” 的 时 候 , 她 是 一 个 程 序 员 , 你 是 一 台 计 算 机 。 计 算 机 得 到 程 序 员 的 输 入 : 4 , + , 3 。 听 到 妈 妈 的 问 题 之 后 , 你 拿 出 两 只 手 , 左 手 伸 出 四 个 指 头 , 右 手 伸 出 三 个 指 头 。 接 着 你 开 始 自 己 的 计 算 过 程 。 一 根 根 地 数 那 些 竖 起 来 的 手 指 , 每 数 一 根 你 就 把 它 弯 下 去 , 表 示 它 已 经 被 数 过 了 。 你 念 道 : “ 1 , 2 , 3 , 4 , 5 , 6 , 7 。 ” 现 在 已 经 没 有 手 指 伸 着 , 所 以 你 把 最 后 数 到 的 那 个 数 作 为 答 案 : 7 ! 整 个 计 算 过 程 就 结 束 了 。 符 号 和 模 型 这 里 的 幼 儿 园 手 指 算 术 包 含 着 深 刻 的 哲 学 问 题 , 现 在 我 们 来 初 步 体 会 一 下 这 个 问 题 。 当 妈 妈 说 “ 帮 我 算 4 + 3 ” 的 时 候 , 4 , + , 3 , 三 个 字 符 传 到 你 耳 朵 里 , 它 们 都 是 符 号 ( s y m b o l ) 。 符 号 是 “ 表 面 ” 的 东 西 : 光 是 盯 着 “ 4 ” 和 “ 3 ” 这 两 个 阿 拉 伯 数 字 的 曲 线 , 一 个 像 旗 子 , 一 个 像 耳 朵 , 你 是 不 能 做 什 么 的 。 你 需 要 先 用 脑 子 把 它 们 转 换 成 对 应 的 “ 模 型 ” ( m o d e l ) 。 这 就 是 为 什 么 你 伸 出 两 只 手 , 一 只 手 表 示 4 , 另 一 只 表 示 3 。 这 两 只 手 的 手 势 是 “ 可 操 作 ” 的 。 比 如 , 你 把 左 手 再 多 弯 曲 一 个 手 指 , 它 就 变 成 “ 3 ” 。 你 再 伸 开 一 根 手 指 , 它 就 变 成 “ 5 ” 。 所 以 手 指 是 一 个 相 当 好 的 机 械 模 型 , 它 是 可 以 动 , 可 操 作 的 。 把 符 号 “ 4 ” 和 “ 3 ” 转 换 成 手 指 模 型 之 后 , 你 就 可 以 开 始 计 算 了 。 你 怎 么 知 道 “ 4 ” 和 “ 3 ” 对 应 什 么 样 的 手 指 模 型 呢 ? 因 为 妈 妈 以 前 教 过 你 。 十 根 手 指 , 对 应 着 1 到 1 0 十 个 数 。 这 就 是 为 什 么 人 都 用 十 进 制 数 做 算 术 。 我 们 现 在 没 必 要 深 究 这 个 问 题 。 我 只 是 提 示 你 , 分 清 “ 符 号 ” 和 “ 模 型 ” 是 重 要 的 。 计 算 图 在 计 算 机 领 域 , 我 们 经 常 用 一 些 抽 象 的 图 示 来 表 达 计 算 的 过 程 , 这 样 就 能 直 观 地 看 到 信 息 的 流 动 和 转 换 。 这 种 图 示 看 起 来 是 一 些 形 状 用 箭 头 连 接 起 来 。 我 在 这 里 把 它 叫 做 “ 计 算 图 ” 。 对 于 以 上 的 手 指 算 术 4 + 3 , 我 们 可 以 用 下 图 来 表 示 它 : 图 中 的 箭 头 表 示 信 息 的 流 动 方 向 。 说 到 “ 流 动 ” , 你 可 以 想 象 一 下 水 的 流 动 。 首 先 我 们 看 到 数 字 4 和 3 流 进 了 一 个 圆 圈 , 圆 圈 里 有 一 个 “ + ” 号 。 这 个 圆 圈 就 是 你 , 一 个 会 做 手 指 加 法 的 小 孩 。 妈 妈 给 你 两 个 数 4 和 3 , 你 现 在 把 它 们 加 起 来 , 得 到 7 作 为 结 果 。 注 意 圆 圈 的 输 入 和 输 出 方 向 是 由 箭 头 决 定 的 , 我 们 可 以 根 据 需 要 调 整 那 些 箭 头 的 位 置 , 只 要 箭 头 的 连 接 关 系 和 方 向 不 变 就 行 。 它 们 不 一 定 都 是 从 左 到 右 , 也 可 能 从 右 到 左 或 者 从 上 到 下 , 但 “ 出 入 关 系 ” 都 一 样 : 4 和 3 进 去 , 结 果 7 出 来 。 比 如 它 还 可 以 是 这 样 : 我 们 用 带 加 号 的 圆 圈 表 示 一 个 “ 加 法 器 ” 。 顾 名 思 义 , 加 法 器 可 以 帮 我 们 完 成 加 法 。 在 上 个 例 子 里 , 你 就 是 一 个 加 法 器 。 我 们 也 可 以 用 其 他 装 置 作 为 加 法 器 , 比 如 一 堆 石 头 , 一 个 算 盘 , 某 种 电 子 线 路 … … 只 要 它 能 做 加 法 就 行 。 具 体 要 怎 么 做 加 法 , 就 像 你 具 体 如 何 掰 手 指 , 很 多 时 候 我 们 是 不 关 心 的 , 我 们 只 需 要 知 道 这 个 东 西 能 做 加 法 就 行 。 圆 圈 把 具 体 的 加 法 操 作 给 “ 抽 象 化 ” 了 , 这 个 蓝 色 的 圆 圈 可 以 代 表 很 多 种 东 西 。 抽 象 ( a b s t r a c t i o n ) 是 计 算 机 科 学 至 关 重 要 的 思 维 方 法 , 它 帮 助 我 们 进 行 高 层 面 的 思 考 , 而 不 为 细 节 所 累 。 表 达 式 计 算 机 科 学 当 然 不 止 4 + 3 这 么 简 单 , 但 它 的 基 本 元 素 确 实 是 如 此 简 单 。 我 们 可 以 创 造 出 很 复 杂 的 系 统 , 然 而 归 根 结 底 , 它 们 只 是 在 按 某 种 顺 序 计 算 像 4 + 3 这 样 的 东 西 。 4 + 3 是 一 个 很 简 单 的 表 达 式 ( e x p r e s s i o n ) 。 你 也 许 没 听 说 过 “ 表 达 式 ” 这 个 词 , 但 我 们 先 不 去 定 义 它 。 我 们 先 来 看 一 个 稍 微 复 杂 一 些 的 表 达 式 : 2 * ( 4 + 3 ) 这 个 表 达 式 比 4 + 3 多 了 一 个 运 算 , 我 们 把 它 叫 做 “ 复 合 表 达 式 ” 。 这 个 表 达 式 也 可 以 用 计 算 图 来 表 示 : 你 知 道 它 为 什 么 是 这 个 样 子 吗 ? 它 表 示 的 意 思 是 , 先 计 算 4 + 3 , 然 后 把 结 果 ( 7 ) 传 送 到 一 个 “ 乘 法 器 ” , 跟 2 相 乘 , 得 到 最 后 的 结 果 。 那 正 好 就 是 2 * ( 4 + 3 ) 这 个 表 达 式 的 含 义 , 它 的 结 果 应 该 是 1 4 。 为 什 么 要 先 计 算 4 + 3 呢 ? 因 为 当 我 们 看 到 乘 法 器 2 * . . . 的 时 候 , 其 中 一 个 输 入 ( 2 ) 是 已 知 的 , 而 另 外 一 个 输 入 必 须 通 过 加 法 器 的 输 出 得 到 。 加 法 器 的 结 果 是 由 4 和 3 相 加 得 到 的 , 所 以 我 们 必 须 先 计 算 4 + 3 , 然 后 才 能 与 2 相 乘 。 小 学 的 时 候 , 你 也 许 学 过 : “ 括 号 内 的 内 容 要 先 计 算 ” 。 其 实 括 号 只 是 “ 符 号 层 ” 的 东 西 , 它 并 不 存 在 于 计 算 图 里 面 。 我 这 里 讲 的 “ 计 算 图 ” , 其 实 才 是 本 质 的 东 西 。 数 学 的 括 号 一 类 的 东 西 , 都 只 是 表 象 , 它 们 是 符 号 或 者 叫 “ 语 法 ” 。 从 某 种 意 义 上 讲 , 计 算 图 才 是 表 达 式 的 本 质 或 者 “ 模 型 ” , 而 “ 2 * ( 4 + 3 ) ” 这 串 符 号 , 只 是 对 计 算 图 的 一 种 表 示 或 者 “ 编 码 ” ( c o d i n g ) 。 这 里 我 们 再 次 体 会 到 了 “ 符 号 ” 和 “ 模 型 ” 的 差 别 。 符 号 是 对 模 型 的 “ 表 示 ” 或 者 “ 编 码 ” 。 我 们 必 须 从 符 号 得 到 模 型 , 才 能 进 行 操 作 。 这 种 从 符 号 到 模 型 的 转 换 过 程 , 在 计 算 机 科 学 里 叫 做 “ 语 法 分 析 ” ( p a r s i n g ) 。 我 们 会 在 后 面 的 章 节 理 解 这 个 过 程 。 我 们 现 在 来 给 表 达 式 做 一 个 初 步 的 定 义 。 这 并 不 是 完 整 的 定 义 , 但 你 应 该 试 着 理 解 这 种 定 义 的 方 式 。 稍 后 我 们 会 逐 渐 补 充 这 个 定 义 , 逐 渐 完 善 。 定 义 ( 表 达 式 ) : 表 达 式 可 以 是 如 下 几 种 东 西 。 数 字 是 一 个 表 达 式 。 比 如 1 , 2 , 4 , 1 5 , … … 表 达 式 + 表 达 式 。 两 个 表 达 式 相 加 , 也 是 表 达 式 。 表 达 式 表 达 式 。 两 个 表 达 式 相 减 , 也 是 表 达 式 。 表 达 式 * 表 达 式 。 两 个 表 达 式 相 乘 , 也 是 表 达 式 。 表 达 式 / 表 达 式 。 两 个 表 达 式 相 除 , 也 是 表 达 式 。 注 意 , 由 于 我 们 之 前 讲 过 的 符 号 和 模 型 的 差 别 , 为 了 完 全 忠 于 我 们 的 本 质 认 识 , 这 里 的 “ 表 达 式 + 表 达 式 ” 虽 然 看 起 来 是 一 串 符 号 , 它 必 须 被 想 象 成 它 所 对 应 的 模 型 。 当 你 看 到 “ 表 达 式 ” 的 时 候 , 你 的 脑 子 里 应 该 浮 现 出 它 对 应 的 计 算 图 , 而 不 是 一 串 符 号 。 这 个 计 算 图 的 画 面 大 概 是 这 个 样 子 , 其 中 左 边 的 大 方 框 里 可 以 是 任 意 两 个 表 达 式 。 是 不 是 感 觉 这 个 定 义 有 点 奇 怪 ? 因 为 在 “ 表 达 式 ” 的 定 义 里 , 我 们 用 到 了 “ 表 达 式 ” 自 己 。 这 种 定 义 叫 做 “ 递 归 定 义 ” 。 所 谓 递 归 ( r e c u r s i o n ) , 就 是 在 一 个 东 西 的 定 义 里 引 用 这 个 东 西 自 己 。 看 上 去 很 奇 怪 , 好 像 绕 回 去 了 一 样 。 递 归 是 一 个 重 要 的 概 念 , 我 们 会 在 将 来 深 入 理 解 它 。 现 在 我 们 可 以 来 验 证 一 下 , 根 据 我 们 的 定 义 , 2 * ( 4 + 3 ) 确 实 是 一 个 表 达 式 : 首 先 根 据 第 一 种 形 式 , 我 们 知 道 4 是 表 达 式 , 因 为 它 是 一 个 数 字 。 3 也 是 表 达 式 , 因 为 它 是 一 个 数 字 。 所 以 4 + 3 是 表 达 式 , 因 为 + 的 左 右 都 是 表 达 式 , 它 满 足 表 达 式 定 义 的 第 二 种 形 式 。 所 以 2 * ( 4 + 3 ) 是 表 达 式 , 因 为 * 的 左 右 都 是 表 达 式 , 它 满 足 表 达 式 定 义 的 第 四 种 形 式 。 并 行 计 算 考 虑 这 样 一 个 表 达 式 : ( 4 + 3 ) * ( 1 + 2 ) 它 对 应 一 个 什 么 样 的 计 算 图 呢 ? 大 概 是 这 样 : 如 果 妈 妈 只 有 你 一 个 小 孩 , 你 应 该 如 何 用 手 指 算 出 它 的 结 果 呢 ? 你 大 概 有 两 种 办 法 。 第 一 种 办 法 : 先 算 出 4 + 3 , 结 果 是 7 。 然 后 算 出 1 + 2 , 结 果 是 3 。 然 后 算 7 * 3 , 结 果 是 2 1 。 第 二 种 办 法 : 先 算 出 1 + 2 , 结 果 是 3 。 然 后 算 出 4 + 3 , 结 果 是 7 。 然 后 算 7 * 3 , 结 果 是 2 1 。 注 意 到 没 有 , 你 要 么 先 算 4 + 3 , 要 么 先 算 1 + 2 , 你 不 能 同 时 算 4 + 3 和 1 + 2 。 为 什 么 呢 ? 因 为 你 只 有 两 只 手 , 所 以 算 4 + 3 的 时 候 你 就 没 法 算 1 + 2 , 反 之 也 是 这 样 。 总 之 , 你 妈 妈 只 有 你 一 个 加 法 器 , 所 以 一 次 只 能 做 一 个 加 法 。 现 在 假 设 你 还 有 一 个 妹 妹 , 她 跟 你 差 不 多 年 纪 , 她 也 会 手 指 算 术 。 妈 妈 现 在 就 多 了 一 些 办 法 来 计 算 这 个 表 达 式 。 她 可 以 这 样 做 : 让 你 算 4 + 3 , 不 等 你 算 完 , 马 上 让 妹 妹 算 1 + 2 。 等 到 你 们 的 结 果 ( 7 和 3 ) 都 出 来 之 后 , 让 你 或 者 妹 妹 算 7 * 3 。 发 现 没 有 , 在 某 一 段 时 间 之 内 , 你 和 妹 妹 同 时 在 做 加 法 计 算 。 这 种 时 间 上 重 叠 的 计 算 , 叫 做 并 行 计 算 ( p a r a l l e l c o m p u t i n g ) 。 你 和 妹 妹 同 时 计 算 , 得 到 结 果 的 速 度 可 能 会 比 你 一 个 人 算 更 快 。 如 果 你 妈 妈 还 有 其 它 几 个 孩 子 , 计 算 复 杂 的 式 子 就 可 能 快 很 多 , 这 就 是 并 行 计 算 潜 在 的 好 处 。 所 谓 “ 潜 在 ” 的 意 思 是 , 这 种 好 处 不 一 定 会 实 现 。 比 如 , 如 果 你 的 妹 妹 做 手 指 算 数 的 速 度 比 你 慢 很 多 , 你 做 完 了 4 + 3 , 只 好 等 着 她 慢 慢 的 算 1 + 2 。 这 也 许 比 你 自 己 依 次 算 4 + 3 和 1 + 2 还 要 慢 。 即 使 妹 妹 做 算 术 跟 你 一 样 快 , 这 里 还 有 个 问 题 。 你 和 妹 妹 算 出 结 果 7 和 3 之 后 , 得 把 结 果 传 递 给 下 一 个 计 算 7 * 3 的 那 个 人 ( 也 许 是 你 , 也 许 是 你 妹 妹 ) 。 这 种 “ 通 信 ” 会 带 来 时 间 的 延 迟 , 叫 做 “ 通 信 开 销 ” 。 如 果 你 们 其 中 一 个 说 话 慢 , 这 比 起 一 个 人 来 做 计 算 可 能 还 要 慢 。 如 何 根 据 计 算 单 元 能 力 的 不 同 和 通 信 开 销 的 差 异 , 来 最 大 化 计 算 的 效 率 , 降 低 需 要 的 时 间 , 就 成 为 了 并 行 计 算 领 域 研 究 的 内 容 。 并 行 计 算 虽 然 看 起 来 是 一 个 “ 博 大 精 深 ” 的 领 域 , 可 是 你 如 果 理 解 了 我 这 里 说 的 那 点 东 西 , 就 很 容 易 理 解 其 余 的 内 容 。 变 量 和 赋 值 如 果 你 有 一 个 复 杂 的 表 达 式 , 比 如 ( 5 3 ) * ( 4 + ( 2 * 3 5 ) * 6 ) 由 于 它 有 比 较 多 的 嵌 套 , 人 的 眼 睛 是 难 以 看 清 楚 的 , 它 要 表 达 的 意 义 也 会 难 懂 。 这 时 候 , 你 希 望 可 以 用 一 些 “ 名 字 ” 来 代 表 中 间 结 果 , 这 样 表 达 式 就 更 容 易 理 解 。 打 个 比 方 , 这 就 像 你 有 一 个 亲 戚 , 他 是 你 妈 妈 的 表 姐 的 女 儿 的 丈 夫 。 你 不 想 每 次 都 称 他 “ 我 妈 妈 的 表 姐 的 女 儿 的 丈 夫 ” , 所 以 你 就 用 他 的 名 字 “ 叮 当 ” 来 指 代 他 , 一 下 子 就 简 单 了 。 我 们 来 看 一 个 例 子 。 之 前 的 复 合 表 达 式 2 * ( 4 + 3 ) 其 实 可 以 被 转 换 为 等 价 的 , 含 有 变 量 的 代 码 : 其 中 a 是 一 个 名 字 。 a = 4 + 3 是 一 个 “ 赋 值 语 句 ” , 它 的 意 思 是 : 用 a 来 代 表 4 + 3 的 值 。 这 种 名 字 , 计 算 机 术 语 叫 做 变 量 ( v a r i a b l e ) 。 这 段 代 码 的 意 思 可 以 简 单 地 描 述 为 : 计 算 4 + 3 , 把 它 的 结 果 表 示 为 a , 然 后 计 算 2 * a 作 为 最 后 的 结 果 。 有 些 东 西 可 能 扰 乱 了 你 的 视 线 。 两 根 斜 杠 / / 后 面 一 直 到 行 末 的 文 字 叫 做 “ 注 释 ” , 是 给 人 看 的 说 明 文 字 。 它 们 对 代 码 的 逻 辑 不 产 生 作 用 , 执 行 的 时 候 可 以 忽 略 。 许 多 语 言 都 有 类 似 这 种 注 释 , 它 们 可 以 帮 助 阅 读 的 人 , 但 是 会 被 机 器 忽 略 。 这 段 代 码 执 行 过 程 会 是 这 样 : 先 计 算 4 + 3 得 到 7 , 用 a 记 住 这 个 中 间 结 果 7 。 接 着 计 算 2 * a , 也 就 是 计 算 2 * 7 , 所 以 最 后 结 果 是 1 4 。 很 显 然 , 这 跟 2 * ( 4 + 3 ) 的 结 果 是 一 样 的 。 a 叫 做 一 个 变 量 , 它 是 一 个 符 号 , 可 以 用 来 代 表 任 意 的 值 。 除 了 a , 你 还 有 许 多 的 选 择 , 比 如 b , c , d , x , y , f o o , b a r , u 2 1 … 只 要 它 不 会 被 误 解 成 其 它 东 西 就 行 。 如 果 你 觉 得 这 里 面 的 “ 神 奇 ” 成 分 太 多 , 那 我 们 现 在 来 做 更 深 一 层 的 理 解 … … 再 看 一 遍 上 面 的 代 码 。 这 整 片 代 码 叫 做 一 个 “ 代 码 块 ” ( b l o c k ) , 或 者 叫 一 个 “ 序 列 ” ( s e q u e n c e ) 。 这 个 代 码 块 包 括 两 条 语 句 , 分 别 是 a = 4 + 3 和 2 * a 。 代 码 块 里 的 语 句 会 从 上 到 下 依 次 执 行 。 所 以 我 们 先 执 行 a = 4 + 3 , 然 后 执 行 2 * a 。 最 后 一 条 语 句 2 * a 比 较 特 别 , 它 是 这 个 代 码 块 的 “ 值 ” , 也 就 是 最 后 结 果 。 之 前 的 语 句 都 是 在 为 生 成 这 个 最 后 的 值 做 准 备 。 换 句 话 说 , 这 整 个 代 码 块 的 值 就 是 2 * a 的 值 。 不 光 这 个 例 子 是 这 样 , 这 是 一 个 通 用 的 原 理 : 代 码 块 的 最 后 一 条 语 句 , 总 是 这 个 代 码 块 的 值 。 我 们 在 代 码 块 的 前 后 加 上 花 括 号 进 行 标 注 , 这 样 里 面 的 语 句 就 不 会 跟 外 面 的 代 码 混 在 一 起 。 这 两 个 花 括 号 叫 做 “ 边 界 符 ” 。 我 们 今 后 会 经 常 遇 到 代 码 块 , 它 存 在 于 几 乎 所 有 的 程 序 语 言 里 , 只 是 语 法 稍 有 不 同 。 比 如 有 些 语 言 可 能 用 括 号 ( . . . ) 或 者 B E G I N . . . E N D 来 表 示 边 界 , 而 不 是 用 花 括 号 。 这 片 代 码 已 经 有 点 像 常 用 的 编 程 语 言 了 , 但 我 们 暂 时 不 把 它 具 体 化 到 某 一 种 语 言 。 我 不 想 固 化 你 的 思 维 方 式 。 在 稍 后 的 章 节 , 我 们 会 把 这 种 抽 象 的 表 达 法 对 应 到 几 种 常 见 的 语 言 , 这 样 一 来 你 就 能 理 解 几 乎 所 有 的 程 序 语 言 。 另 外 还 有 一 点 需 要 注 意 , 同 一 个 变 量 可 以 被 多 次 赋 值 。 它 的 值 会 随 着 赋 值 语 句 而 改 变 。 举 个 例 子 : 这 段 代 码 执 行 之 后 , b 的 值 是 7 , 而 c 的 值 是 1 0 。 你 知 道 为 什 么 吗 ? 因 为 a = 4 + 3 之 后 , a 的 值 是 7 。 b = a 使 得 b 得 到 值 7 。 然 后 a = 2 * 5 把 a 的 值 改 变 了 , 它 现 在 是 1 0 。 所 以 c = a 使 得 c 得 到 1 0 。 对 同 一 个 变 量 多 次 赋 值 虽 然 是 可 以 的 , 但 通 常 来 说 这 不 是 一 种 好 的 写 法 , 它 可 能 引 起 程 序 的 混 淆 , 应 该 尽 量 避 免 。 只 有 当 变 量 表 示 的 “ 意 义 ” 相 同 的 时 候 , 你 才 应 该 对 它 重 复 赋 值 。 编 译 一 旦 引 入 了 变 量 , 我 们 就 可 以 不 用 复 合 表 达 式 。 因 为 你 可 以 把 任 意 复 杂 的 复 合 表 达 式 拆 开 成 “ 单 操 作 算 术 表 达 式 ” ( 像 4 + 3 这 样 的 ) , 使 用 一 些 变 量 记 住 中 间 结 果 , 一 步 一 步 算 下 去 , 得 到 最 后 的 结 果 。 举 一 个 复 杂 点 的 例 子 , 也 就 是 这 一 节 最 开 头 的 那 个 表 达 式 : ( 5 3 ) * ( 4 + ( 2 * 3 5 ) * 6 ) 它 可 以 被 转 化 为 一 串 语 句 : 最 后 的 表 达 式 e * d , 算 出 来 就 是 原 来 的 表 达 式 的 值 。 你 观 察 一 下 , 是 不 是 每 个 操 作 都 非 常 简 单 , 不 包 含 嵌 套 的 复 合 表 达 式 ? 你 可 以 自 己 验 算 一 下 , 它 确 实 算 出 跟 原 表 达 式 一 样 的 结 果 。 在 这 里 , 我 们 自 己 动 手 做 了 “ 编 译 器 ” ( c o m p i l e r ) 的 工 作 。 通 常 来 说 , 编 译 器 是 一 种 程 序 , 它 的 任 务 是 把 一 片 代 码 “ 翻 译 ” 成 另 外 一 种 等 价 形 式 。 这 里 我 们 没 有 写 编 译 器 , 可 是 我 们 自 己 做 了 编 译 器 的 工 作 。 我 们 手 动 地 把 一 个 嵌 套 的 复 合 表 达 式 , 编 译 成 了 一 系 列 的 简 单 算 术 语 句 。 这 些 语 句 的 结 果 与 原 来 的 表 达 式 完 全 一 致 。 这 种 保 留 原 来 语 义 的 翻 译 过 程 , 叫 做 编 译 ( c o m p i l e ) 。 我 们 为 什 么 需 要 编 译 呢 ? 原 因 有 好 几 种 。 我 不 想 在 这 里 做 完 整 的 解 释 , 但 从 这 个 例 子 我 们 可 以 看 到 , 编 译 之 后 我 们 就 不 再 需 要 复 杂 的 嵌 套 表 达 式 了 。 我 们 只 需 要 设 计 很 简 单 的 , 只 会 做 单 操 作 算 术 的 机 器 , 就 可 以 算 出 复 杂 的 嵌 套 的 表 达 式 。 实 际 上 最 后 这 段 代 码 已 经 非 常 接 近 现 代 处 理 器 ( C P U ) 的 汇 编 代 码 ( a s s e m b l y ) 。 我 们 只 需 要 多 加 一 些 转 换 , 它 就 可 以 变 成 机 器 指 令 。 我 们 暂 时 不 写 编 译 器 , 因 为 你 还 缺 少 一 些 必 要 的 知 识 。 这 当 然 也 不 是 编 译 技 术 的 所 有 内 容 , 它 还 包 含 另 外 一 些 东 西 。 但 从 这 一 开 头 , 你 就 已 经 初 步 理 解 了 编 译 器 是 什 么 , 你 只 需 要 在 将 来 加 深 这 种 理 解 。 函 数 到 目 前 为 止 , 我 们 做 的 计 算 都 是 在 已 知 的 数 字 之 上 , 而 在 现 实 的 计 算 中 我 们 往 往 有 一 些 未 知 数 。 比 如 我 们 想 要 表 达 一 个 “ 风 扇 控 制 器 ” , 有 了 它 之 后 , 风 扇 的 转 速 总 是 当 前 气 温 的 两 倍 。 这 个 “ 当 前 气 温 ” 就 是 一 个 未 知 数 。 我 们 的 “ 风 扇 控 制 器 ” 必 须 要 有 一 个 “ 输 入 ” ( i n p u t ) , 用 于 得 到 当 前 的 温 度 t , 它 是 一 个 温 度 传 感 器 的 读 数 。 它 还 要 有 一 个 输 出 , 就 是 温 度 的 两 倍 。 那 么 我 们 可 以 用 这 样 的 方 式 来 表 达 我 们 的 风 扇 控 制 器 : t t * 2 不 要 把 这 想 成 任 何 一 种 程 序 语 言 , 这 只 是 我 们 自 己 的 表 达 法 。 箭 头 的 左 边 表 示 输 入 , 右 边 表 示 输 出 , 够 简 单 吧 。 你 可 以 把 t 想 象 成 从 温 度 传 感 器 出 来 的 一 根 电 线 , 它 连 接 到 风 扇 控 制 器 上 , 风 扇 控 制 器 会 把 它 的 输 入 ( t ) 乘 以 2 。 这 个 画 面 像 这 个 样 子 : 我 们 谈 论 风 扇 控 制 器 的 时 候 , 其 实 不 关 心 它 的 输 入 是 哪 里 来 的 , 输 出 到 哪 里 去 。 如 果 我 们 把 温 度 传 感 器 和 风 扇 从 画 面 里 拿 掉 , 就 变 成 这 个 样 子 : 这 幅 图 才 是 你 需 要 认 真 理 解 的 函 数 的 计 算 图 。 你 发 现 了 吗 , 这 幅 图 画 正 好 对 应 了 之 前 的 风 扇 控 制 器 的 符 号 表 示 : t t * 2 。 看 到 符 号 就 想 象 出 画 面 , 你 就 得 到 了 符 号 背 后 的 模 型 。 像 t t * 2 这 样 具 有 未 知 数 作 为 输 入 的 构 造 , 我 们 把 它 叫 做 函 数 ( f u n c t i o n ) 。 其 中 t 这 个 符 号 , 叫 做 这 个 函 数 的 参 数 。 参 数 , 变 量 和 电 线 你 可 能 发 现 了 , 函 数 的 参 数 和 我 们 之 前 了 解 的 “ 变 量 ” 是 很 类 似 的 , 它 们 都 是 一 个 符 号 。 之 前 我 们 用 了 a , b , c , d , e 现 在 我 们 有 一 个 t , 这 些 名 字 我 们 都 是 随 便 起 的 , 只 要 它 们 不 要 重 复 就 好 。 如 果 名 字 重 复 的 话 , 可 能 会 带 来 混 淆 和 干 扰 。 其 实 参 数 和 变 量 这 两 种 概 念 不 只 是 相 似 , 它 们 的 本 质 就 是 一 样 的 。 如 果 你 深 刻 理 解 它 们 的 相 同 本 质 , 你 的 脑 子 就 可 以 少 记 忆 很 多 东 西 , 而 且 它 可 能 帮 助 你 对 代 码 做 出 一 些 有 趣 而 有 益 的 转 化 。 在 上 一 节 你 已 经 看 到 , 我 用 “ 电 线 ” 作 为 比 方 来 帮 助 你 理 解 参 数 。 你 也 可 以 用 同 样 的 方 法 来 理 解 变 量 。 比 如 我 们 之 前 的 变 量 a : 它 可 以 被 想 象 成 什 么 样 的 画 面 呢 ? 我 故 意 把 箭 头 方 向 画 成 从 右 往 左 , 这 样 它 就 更 像 上 面 的 代 码 。 从 这 个 图 画 里 , 你 也 许 可 以 看 到 变 量 a 和 风 扇 控 制 器 图 里 的 参 数 t , 其 实 没 有 任 何 本 质 差 别 。 它 们 都 表 示 一 根 电 线 , 那 根 电 线 进 入 乘 法 器 , 将 会 被 乘 以 2 , 然 后 输 出 。 如 果 你 把 这 些 都 看 成 是 电 路 , 那 么 变 量 a 和 参 数 t 都 代 表 一 根 电 线 而 已 。 然 后 你 还 发 现 一 个 现 象 , 那 就 是 你 可 以 把 a 这 个 名 字 换 成 任 何 其 它 名 字 ( 比 如 b ) , 而 这 幅 图 不 会 产 生 实 质 的 改 变 。 这 说 明 什 么 问 题 呢 ? 这 说 明 以 下 的 代 码 ( 把 a 换 成 了 b ) 跟 之 前 的 是 等 价 的 : 根 据 几 乎 一 样 的 电 线 命 名 变 化 , 你 也 可 以 对 之 前 的 函 数 得 到 一 样 的 结 论 : t t * 2 和 u u * 2 , 和 x x * 2 都 是 一 回 事 。 名 字 是 很 重 要 的 东 西 , 但 它 们 具 体 叫 什 么 , 对 于 机 器 并 没 有 实 质 的 意 义 , 只 要 它 们 不 要 相 互 混 淆 就 可 以 。 但 名 字 对 于 人 是 很 重 要 的 , 因 为 人 脑 没 有 机 器 那 么 精 确 。 不 好 的 变 量 和 参 数 名 会 导 致 代 码 难 以 理 解 , 引 起 程 序 员 的 混 乱 和 错 误 。 所 以 通 常 说 来 , 你 需 要 给 变 量 和 参 数 起 好 的 名 字 。 什 么 样 的 名 字 好 呢 ? 我 会 在 后 面 集 中 讲 解 。 有 名 字 的 函 数 既 然 变 量 可 以 代 表 “ 值 ” , 那 么 一 个 自 然 的 想 法 , 就 是 让 变 量 代 表 函 数 。 所 以 就 像 我 们 可 以 写 a = 4 + 3 我 们 似 乎 也 应 该 可 以 写 f = t t * 2 对 的 , 你 可 以 这 么 做 。 f = t t * 2 还 有 一 个 更 加 传 统 的 写 法 , 就 像 数 学 里 的 函 数 写 法 : f ( t ) = t * 2 请 仔 细 观 察 t 的 位 置 变 化 。 我 们 在 函 数 名 字 的 右 边 写 一 对 括 号 , 在 里 面 放 上 参 数 的 名 字 。 注 意 , 你 不 可 以 只 写 f = t * 2 你 必 须 明 确 的 指 出 函 数 的 参 数 是 什 么 , 否 则 你 就 不 会 明 白 函 数 定 义 里 的 t 是 什 么 东 西 。 明 确 指 出 t 是 一 个 “ 输 入 ” , 你 才 会 知 道 它 是 函 数 的 输 入 , 是 一 个 未 知 数 , 而 不 是 在 函 数 外 面 定 义 的 其 它 变 量 。 这 个 看 似 简 单 的 道 理 , 很 多 数 学 家 都 不 明 白 , 所 以 他 们 经 常 这 样 写 书 : 有 一 个 函 数 y = x * 2 这 是 错 误 的 , 因 为 他 没 有 明 确 指 出 “ x 是 函 数 y 的 参 数 ” 。 如 果 这 句 话 之 前 他 们 又 定 义 过 x , 你 就 会 疑 惑 这 是 不 是 之 前 那 个 x 。 很 多 人 就 是 因 为 这 些 糊 里 糊 涂 的 写 法 而 看 不 懂 数 学 书 。 这 不 怪 他 们 , 只 怪 数 学 家 自 己 对 于 语 言 不 严 谨 。 函 数 调 用 有 了 函 数 , 我 们 可 以 给 它 起 名 字 , 可 是 我 们 怎 么 使 用 它 的 值 呢 ? 由 于 函 数 里 面 有 未 知 数 ( 参 数 ) , 所 以 你 必 须 告 诉 它 这 些 未 知 数 , 它 里 面 的 代 码 才 会 执 行 , 给 你 结 果 。 比 如 之 前 的 风 扇 控 制 器 函 数 f ( t ) = t * 2 它 需 要 一 个 温 度 作 为 输 入 , 才 会 给 你 一 个 输 出 。 于 是 你 就 这 样 给 它 一 个 输 入 : f ( 2 ) 你 把 输 入 写 在 函 数 名 字 后 面 的 括 号 里 。 那 么 你 就 会 得 到 输 出 : 4 。 也 就 是 说 f ( 2 ) 的 值 是 4 。 如 果 你 没 有 调 用 一 个 函 数 , 函 数 体 是 不 会 被 执 行 的 。 因 为 它 不 知 道 未 知 数 是 什 么 , 所 以 什 么 事 也 做 不 了 。 那 么 我 们 定 义 函 数 的 时 候 , 比 如 f ( t ) = t * 2 当 看 到 这 个 定 义 的 时 候 , 机 器 应 该 做 什 么 呢 ? 它 只 是 记 录 下 : 有 这 么 一 个 函 数 , 它 的 参 数 是 t , 它 需 要 计 算 t * 2 , 它 的 名 字 叫 f 。 但 是 机 器 不 会 立 即 计 算 t * 2 , 因 为 它 不 知 道 t 是 多 少 。 分 支 直 到 现 在 , 我 们 的 代 码 都 是 从 头 到 尾 , 闷 头 闷 脑 地 执 行 , 不 问 任 何 问 题 。 我 们 缺 少 一 种 “ 问 问 题 ” 的 方 法 。 比 如 , 如 果 我 想 表 达 这 样 一 个 “ 食 物 选 择 器 ” : 如 果 气 温 低 于 2 2 度 , 就 返 回 “ h o t p o t ” 表 示 今 天 吃 火 锅 , 否 则 返 回 “ i c e c r e a m ” 表 示 今 天 吃 冰 激 凌 。 我 们 可 以 把 它 图 示 如 下 : 中 间 这 种 判 断 结 构 叫 做 “ 分 支 ” ( b r a n c h i n g ) , 它 一 般 用 菱 形 表 示 。 为 什 么 叫 分 支 呢 ? 你 想 象 一 下 , 代 码 就 像 一 条 小 溪 , 平 时 它 沿 着 一 条 路 线 流 淌 。 当 它 遇 到 一 个 棱 角 分 明 的 大 石 头 , 就 分 成 两 个 支 流 , 分 开 流 淌 。 我 们 的 判 断 条 件 t 就 像 一 块 大 石 头 , 我 们 的 “ 代 码 流 ” 碰 到 它 就 会 分 开 成 两 支 , 分 别 做 不 同 的 事 情 。 跟 溪 流 不 同 的 是 , 这 种 分 支 不 是 随 机 的 , 而 是 根 据 条 件 来 决 定 , 而 且 分 支 之 后 只 有 一 支 继 续 执 行 , 而 另 外 一 边 不 会 被 执 行 。 我 们 现 在 看 到 的 都 是 图 形 化 表 示 的 模 型 , 为 了 书 写 方 便 , 现 在 我 们 要 从 符 号 的 层 面 来 表 示 这 个 模 型 。 我 们 需 要 一 种 符 号 表 示 法 来 表 达 分 支 , 我 们 把 它 叫 做 i f ( 如 果 ) 。 我 们 的 饮 料 选 择 器 代 码 可 以 这 样 写 : t i f ( t 2 2 ) e l s e 它 是 一 个 函 数 , 输 入 是 一 个 温 度 。 i f 后 面 的 括 号 里 放 我 们 的 判 断 条 件 。 后 面 接 着 条 件 成 立 时 执 行 的 代 码 块 , 然 后 是 一 个 e l s e , 然 后 是 条 件 不 成 立 时 执 行 的 代 码 。 它 说 : 如 果 温 度 低 于 2 2 度 , 我 们 就 吃 火 锅 , 否 则 就 吃 冰 激 凌 。 其 中 的 e l s e 是 一 个 特 殊 的 符 号 , 它 表 示 “ 否 则 ” 。 看 起 来 不 知 道 为 什 么 e l s e 要 在 那 里 ? 对 的 , 它 只 是 一 个 装 饰 品 。 我 们 已 经 有 足 够 的 表 达 力 来 分 辨 两 个 分 支 , 不 过 有 了 e l s e 似 乎 更 加 好 看 一 些 。 很 多 语 言 里 面 都 有 e l s e 这 个 标 记 词 在 那 里 , 所 以 我 也 把 它 放 在 那 里 。 这 只 是 一 个 最 简 单 的 例 子 , 其 实 那 两 个 代 码 块 里 面 不 止 可 以 写 一 条 语 句 。 你 可 以 有 任 意 多 的 语 句 , 就 像 这 样 : t i f ( t 2 2 ) e l s e 这 段 代 码 和 之 前 是 等 价 的 , 你 知 道 为 什 么 吗 ? 字 符 串 上 面 一 节 出 现 了 一 种 我 们 之 前 没 见 过 的 东 西 , 我 为 了 简 洁 而 没 有 介 绍 它 。 这 两 个 分 支 的 结 果 , 也 就 是 加 上 引 号 的 “ h o t p o t ” 和 “ i c e c r e a m ” , 它 们 并 不 是 数 字 , 也 不 是 其 它 语 言 构 造 , 而 是 一 种 跟 数 字 处 于 几 乎 同 等 地 位 的 “ 数 据 类 型 ” , 叫 做 字 符 串 ( s t r i n g ) 。 字 符 串 是 我 们 在 计 算 机 里 面 表 示 人 类 语 言 的 基 本 数 据 类 型 。 关 于 字 符 串 , 在 这 里 我 不 想 讲 述 更 加 细 节 的 内 容 , 我 把 对 它 的 各 种 操 作 留 到 以 后 再 讲 , 因 为 虽 然 字 符 串 对 于 应 用 程 序 很 重 要 , 它 却 并 不 是 计 算 机 科 学 最 关 键 最 本 质 的 内 容 。 很 多 计 算 机 书 籍 一 开 头 就 讲 很 多 对 字 符 串 的 操 作 , 导 致 初 学 者 费 很 大 功 夫 去 做 很 多 打 印 字 符 串 的 练 习 , 结 果 几 个 星 期 之 后 还 没 学 到 “ 函 数 ” 之 类 最 根 本 的 概 念 。 这 是 非 常 可 惜 的 。 布 尔 值 我 们 之 前 的 i f 语 句 的 条 件 t 其 实 也 是 一 个 表 达 式 , 它 叫 做 “ 布 尔 表 达 式 ” 。 你 可 以 把 小 于 号 看 成 是 跟 加 法 一 类 的 “ 操 作 符 ” 。 它 的 输 入 是 两 个 数 值 , 输 出 是 一 个 “ 布 尔 值 ” 。 什 么 是 布 尔 值 呢 ? 布 尔 值 只 有 两 个 : t r u e 和 f a l s e , 也 就 是 “ 真 ” 和 “ 假 ” 。 举 个 例 子 , 如 果 t 的 值 是 1 5 , 那 么 t 是 成 立 的 , 那 么 它 的 值 就 是 t r u e 。 如 果 t 的 值 是 2 3 , 那 么 t 就 不 成 立 , 那 么 它 的 值 就 是 f a l s e 。 是 不 是 很 好 理 解 呢 ? 我 们 为 什 么 需 要 “ 布 尔 值 ” 这 种 东 西 呢 ? 因 为 它 的 存 在 可 以 简 化 我 们 的 思 维 。 对 于 布 尔 值 也 有 一 些 操 作 , 这 个 我 也 不 在 这 一 章 赘 述 , 放 到 以 后 细 讲 。 计 算 的 要 素 好 了 , 现 在 你 已 经 掌 握 了 计 算 机 科 学 的 几 乎 所 有 基 本 要 素 。 每 一 个 编 程 语 言 都 包 括 这 些 构 造 : 基 础 的 数 值 。 比 如 整 数 , 字 符 串 , 布 尔 值 等 。 表 达 式 。 包 括 基 本 的 算 术 表 达 式 , 嵌 套 的 表 达 式 。 变 量 和 赋 值 语 句 。 分 支 语 句 。 函 数 和 函 数 调 用 。 你 也 许 可 以 感 觉 到 , 我 是 把 这 些 构 造 按 照 “ 从 小 到 大 ” 的 顺 序 排 列 的 。 这 也 许 可 以 帮 助 你 的 理 解 。 现 在 你 可 以 回 想 一 下 你 对 它 们 的 印 象 。 每 当 学 习 一 种 新 的 语 言 或 者 系 统 , 你 只 需 要 在 里 面 找 到 对 应 的 构 造 , 而 不 需 要 从 头 学 习 。 这 就 是 掌 握 所 有 程 序 语 言 的 秘 诀 。 这 就 像 学 开 车 一 样 , 一 旦 你 掌 握 了 油 门 , 刹 车 , 换 挡 器 , 方 向 盘 , 速 度 表 的 功 能 和 用 法 , 你 就 学 会 了 开 所 有 的 汽 车 , 不 管 它 是 什 么 型 号 的 汽 车 。 我 们 在 这 一 章 不 仅 理 解 了 这 些 要 素 , 而 且 为 它 们 定 义 了 一 种 我 们 自 己 的 “ 语 言 ” 。 显 然 这 个 语 言 只 能 在 我 们 的 头 脑 里 运 行 , 因 为 我 们 没 有 实 现 这 个 语 言 的 系 统 。 在 后 面 的 章 节 , 我 会 逐 渐 的 把 我 们 这 种 语 言 映 射 到 现 有 的 多 种 语 言 里 面 , 然 后 你 就 能 掌 握 这 些 语 言 了 。 但 是 请 不 要 以 为 掌 握 了 语 言 就 学 会 了 编 程 或 者 学 会 了 计 算 机 科 学 。 掌 握 语 言 就 像 学 会 了 各 种 汽 车 部 件 的 工 作 原 理 。 几 分 钟 之 内 , 初 学 者 就 能 让 车 子 移 动 , 转 弯 , 停 止 。 可 是 完 了 之 后 你 还 需 要 学 习 交 通 规 则 , 你 需 要 许 许 多 多 的 实 战 练 习 和 经 验 , 掌 握 各 种 复 杂 情 况 下 的 策 略 , 才 能 成 为 一 个 合 格 的 驾 驶 员 。 如 果 你 想 成 为 赛 车 手 , 那 就 还 需 要 很 多 倍 的 努 力 。 但 是 请 不 要 被 我 这 些 话 吓 到 了 , 你 没 有 那 么 多 的 竞 争 者 。 现 在 的 情 况 是 , 世 界 上 就 没 有 很 多 合 格 的 计 算 机 科 学 驾 驶 员 , 更 不 要 说 把 车 开 得 流 畅 的 赛 车 手 。 绝 大 部 分 的 “ 程 序 员 ” 连 最 基 本 的 引 擎 , 油 门 , 刹 车 , 方 向 盘 的 工 作 原 理 都 不 明 白 , 思 维 方 式 就 不 对 , 所 以 根 本 没 法 独 自 上 路 , 一 上 路 就 出 车 祸 。 很 多 人 把 过 错 归 结 在 自 己 的 车 身 上 , 以 为 换 一 辆 车 马 上 就 能 成 为 好 的 驾 驶 员 。 这 是 一 种 世 界 范 围 的 计 算 机 教 育 的 失 败 。 在 后 面 的 章 节 , 我 会 引 导 你 成 为 一 个 合 格 的 驾 驶 员 , 随 便 拿 一 辆 车 就 能 开 好 。 什 么 是 计 算 现 在 你 掌 握 了 计 算 所 需 要 的 基 本 元 素 , 可 是 什 么 是 计 算 呢 ? 我 好 像 仍 然 没 有 告 诉 你 。 这 是 一 个 很 哲 学 的 问 题 , 不 同 的 人 可 能 会 告 诉 你 不 同 的 结 果 。 我 试 图 从 最 广 义 的 角 度 来 告 诉 你 这 个 问 题 的 答 案 。 当 你 小 时 候 用 手 指 算 4 + 3 , 那 是 计 算 。 如 果 后 来 你 学 会 了 打 算 盘 , 你 用 算 盘 算 4 + 3 , 那 也 是 计 算 。 后 来 你 从 我 这 里 学 到 了 表 达 式 , 变 量 , 函 数 , 调 用 , 分 支 语 句 … … 在 每 一 新 的 构 造 加 入 的 过 程 中 , 你 都 在 了 解 不 同 的 计 算 。 所 以 从 最 广 义 来 讲 , 计 算 就 是 “ 机 械 化 的 信 息 处 理 ” 。 所 谓 机 械 化 , 你 可 以 用 手 指 算 , 可 以 用 算 盘 , 可 以 用 计 算 器 , 或 者 计 算 机 。 这 些 机 器 里 面 可 以 有 代 码 , 也 可 以 没 有 代 码 , 全 是 电 子 线 路 , 甚 至 可 以 是 生 物 活 动 或 者 化 学 反 应 。 不 同 的 机 器 也 可 以 有 不 同 的 计 算 功 能 , 不 同 的 速 度 和 性 能 … … 有 这 么 多 种 计 算 的 事 实 不 免 让 人 困 惑 , 总 害 怕 少 了 点 什 么 , 其 实 你 可 以 安 心 。 如 果 你 掌 握 了 上 一 节 的 “ 计 算 要 素 ” , 那 么 你 就 掌 握 了 几 乎 所 有 类 型 的 计 算 系 统 所 需 要 的 东 西 。 你 在 后 面 所 需 要 做 的 只 是 加 深 这 种 理 解 , 并 且 把 它 “ 对 应 ” 到 现 实 世 界 遇 到 的 各 种 计 算 机 器 里 面 。 为 什 么 你 可 以 相 信 计 算 机 科 学 的 精 华 就 只 有 这 些 呢 ? 因 为 计 算 就 是 处 理 信 息 , 信 息 有 它 诞 生 的 位 置 ( 输 入 设 备 , 固 定 数 值 ) , 它 传 输 的 方 式 ( 赋 值 , 函 数 调 用 , 返 回 值 ) , 它 被 查 看 的 地 方 ( 分 支 ) 。 你 想 不 出 对 于 信 息 还 有 什 么 其 它 的 操 作 , 所 以 你 就 很 安 心 的 相 信 了 , 这 就 是 计 算 机 科 学 这 种 “ 棋 类 游 戏 ” 的 全 部 规 则 。 闽 公 网 安 备 3 5 0 1 8 1 0 2 0 0 0 2 4 9 号 闽 I C P 备 2 0 2 1 0 1 7 9 2 8 号 2
站点概括关于gndm.top说明:
gndm.top由网友主动性提交被0401导航库整理收录的,0401导航库仅提供gndm.top的基础信息并免费向大众网友展示,gndm.top的是IP地址:101.43.90.24 [中国上海上海 腾讯云],gndm.top的百度权重为0、百度手机权重为0、百度收录为0条、360收录为0条、搜狗收录为0条、谷歌收录为0条、百度来访流量大约在-之间、百度手机端来访流量大约在-之间、gndm.top的备案号是闽ICP备2021017928号、备案人叫张智全、被百度收录的关键词有0个、手机端关键词有0个、该站点迄今为止已经创建4年9个月13天。
内容声明:1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:https://www.dhk0401.com/wangluodh/260947.html,复制请保留版权链接!
美食菜谱网,每天为大家分享世界各地美食做法,美食攻略!
免烧砖机设备网-提供免烧砖机|制砖机|砌块砖机|压砖机|托板
免烧砖机设备网打造免烧砖机、制砖机、空心砖机、水泥制砖机、砌块成型机以及煤矸石等制砖原料生产企业商贸第一站,提供全自动免烧砖机,多功能免烧砖机等免烧砖机产品供求。
利达机电有限公司成立于1987年5月,是一家专业生产电动工具和电机换向器的民营企业,公司位于温州瑞安经济开发区,占地面积3万多平方米,现公司建有现代化的厂房和产业基础设施,拥有先进的配套检验设备,测试中心和产品研发中心,具备优秀团结的管理人才和技术娴熟的车间工人,确保了产品品质的不断稳定提高,公司立足于国内市场,积极开拓国际市场,是一家充满生机蓬勃向上的无区域企业。
该站暂未设置description...
智多帮租演员网-租友网,租女友网,租女友,租男友,租父母,租爸爸,租妈妈,专业正规真实靠谱的租友网站
智多帮租临时演员网,专业正规安全靠谱的租演员网站。承接扮演生活临时演员,租演员,租男友,租女友,租父母,租家长,租爸爸,租妈妈、等生活中各种角色。是一家专为特殊人群提供婚恋交友,协议结婚,形婚,形式婚姻,的平台。
PET包胶设备_PET包胶钢丝_文具专用包胶设备-青岛辰安机械有限公司
青岛辰安机械有限公司是一家专做文具专用PET包胶设备及文具专用PET包胶钢丝的高新企业,公司以安全,健康环保,绿色,美感为公司核心理念。致力于为全球高质量用户.
该站暂未设置description...
该站暂未设置description...