Skip to content

Commit 5458f89

Browse files
committed
根据@ictar 的意见做了一些修改
1 parent 2f46755 commit 5458f89

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

Others/为什么用python重写shell-script.org

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#+DATE: [2016-06-07 二 19:04]
66
#+OPTIONS: ^:{}
77

8-
Here's the actual quote:
8+
这里是实际上的原文:
99
#+BEGIN_QUOTE
1010
什么情况下你会需要用python重写工作脚本呢? 是否有任何商业上的原因?
1111
#+END_QUOTE
@@ -16,16 +16,16 @@ Here's the actual quote:
1616

1717
详细来说,有下面几个理由:
1818

19-
+ 我手头上的项目中(至少)有三个ksh脚本是相互引用的,其中有两个脚本操作了1000行. 而且我还不是特别清楚他们之间的引用关系. 这是ksh. 所引用的代码可能来自任何莫名其妙的地方;例如source命令以及它的同义词`.'命令.
19+
+ 我手头上的项目中(至少)有三个ksh脚本是相互引用的,其中有两个脚本操作了1000行. 而且我还不是特别清楚他们之间的引用关系. 这是ksh. 代码可能来自各种各样的地方,并具有含糊不清的路径;例如source命令以及它的同义词`.'命令.
2020
+ 脚本中,除了#!/usr/bin/ksh外,没有任何注释. 而且有些地方的代码被注释掉了但是没有写明为什么要注释掉.
2121
+ 没有任何参考文档. 作者虽然有写过一封email来描述github仓库,但这个仓库本身缺少README. 很难让他们明白在仓库添加README的重要性. 仓库中甚至缺少命令行说明. (最终我是通过查看命令行选项的解析器来推测出该说明的)
2222
+ 没有任何的测试.
2323

2424
最后一点尤其让我震惊. And I find it shocking on a regular basis.
2525

26-
人们可能会并且原因编写一个上千行的脚本而不带任何单元测试, 集成测试, 系统测试, 性能测试甚至是任意一种测试. 我不能理解他们怎么知道这个脚本到底是否能正常工作? 我该如何相信这个脚本?
26+
人们能够并且愿意编写一个上千行的脚本而不带任何单元测试, 集成测试, 系统测试, 性能测试甚至是任意一种测试. 我不能理解他们怎么知道这个脚本到底是否能正常工作? 我该如何相信这个脚本?
2727

28-
更重要的是,在都不知道命令行接口的情况,我怎么可能将之包装成一个RESTful API呢? shell还可能使用未说明的环境变量,这可能导致程序在运行时崩溃. 程序崩溃会引发一个HTTP 500 状态码的错误,并在日志中记录下错误信息.
28+
更重要的是,在都不知道命令行接口的情况,我怎么可能将之包装成一个RESTful API呢? shell还可能使用未说明的环境变量,且只有当他们引发程序运行崩溃后才可能发现他们. 程序崩溃会引发一个HTTP 500 状态码的错误,并在日志中记录下错误信息.
2929

3030
"商务导向"尝试从商务上成本与收益的角度来讨论技术方案. 从这个角度来说,这种1000行的shell脚本代码很明显是一种技术负债.
3131

@@ -37,4 +37,4 @@ Here's the actual quote:
3737

3838
哈哈哈.
3939

40-
最终重写的结果是只需250行或更少的python代码. 而且能实时地自动执行8个步骤. 摆脱垃圾的bash语言很有挑战性,但是却是必须的.
40+
(我认为)最好的替代是250行或更少的python代码. 而且能实时地自动执行8个步骤. 摆脱bash语言的糟粕很有挑战性,但是却是必须的.

Others/为何我选择python,python擅长什么,python的特点是什么.org

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99

1010
When I push back, 人们常常为了一个特定的目的而发明一门语言.
1111

12-
"你知道的. PHP是专为web而生的, JavaScript则仅仅在浏览器中执行. 那么Python是用来作什么的?"
12+
"你知道的. PHP是专为web而生的, 而JavaScript浏览器中运行. 那么Python是用来作什么的?"
1313

1414
举PHP和JavaScript的例子并没有什么意义. 这两个例子并不意味着Python只适用于解决Web领域的问题,它们只能说明PHP和JavaScript只适用于Web领域的开发.
1515

16-
"你知道的. Objective-C 和 Swift 运行在 iOS上. 那么Python主要运行在哪个平台上呢?"
16+
"你知道的. Objective-C 和 Swift 用于 iOS. 那么Python在哪个平台上占主要地位呢?"
1717

1818
Python也可以运行在iOS上. 我不确定用Python创建app是否足够便利, 但即使足够便利, 我的答案也不会变: Python擅长于编程.
1919

@@ -28,16 +28,16 @@ Python也可以运行在iOS上. 我不确定用Python创建app是否足够便利
2828
http://web.eecs.umich.edu/~bchandra/courses/papers/Wirth_Design.pdf
2929

3030
是的,这是一篇1974年写的文章,里面的有些观点已经有些过时了, 但是其中大部分的观点依然有用.
31-
例如,虽然有争议,但强类型指针的设计已经几乎成为业界标准了. Wirth的观点依然影像着程序语言的设计.
31+
例如,虽然有争议,但强类型指针的设计已经几乎成为业界标准了. Wirth的观点依然影响着程序语言的设计.
3232

3333
该文的第28页中,Pascal,Modula,Oberon以及其他程序语言的发明人列举了一个程序语言的特征列表.
3434

3535
列表中的某些特征已经过时了,例如关于多字符集的描述,由于Unicode的出现已经不重要了
3636

3737
另外,这张特征列表也仅仅是针对编译语言来说的. 而Python是一门动态语言,它是解释型的. 虽然Python也有一个编译器,但是它的作用基本上也只是优化源代码而已. 若你将列表中的"编译器"替代为"运行时",则这个列表所描述的就是一个好语言应该具有哪些特性.
3838

39-
我喜欢这张列表因为它能解释Python以及其他许多语言为什么如此优秀. 它也解释了为什么像JavaScript(甚至也包括Ruby)这样的语言看起来那么奇怪. 此外,其中一些关于效率的观点are important topics for further discussion.
39+
我喜欢这张列表因为它能解释Python以及其他许多语言为什么如此优秀. 它也解释了为什么像JavaScript(甚至也包括Ruby)这样的语言看起来那么奇怪. 此外,关于效率的一些观点是一些值得深入讨论的重要主题.
4040

41-
我常常提醒哪些搞大数据的家伙,处理大数据时最影响效率的地方在于I/O. Python在等待数据库结果时要比java稍微有效率一些. 为什么会这样呢? 这是因为Python消耗的内存更少.
41+
我常常提醒那些搞大数据的家伙,处理大数据时最影响效率的地方在于I/O. Python在等待数据库结果时要比java稍微有效率一些. 为什么会这样呢? 这是因为Python消耗的内存更少.
4242

4343
我们不要再提关于通用语言的愚蠢问题了. 我们所要做的是对各解决方案作基准测试.然后基于实际的代码来对比性能.

0 commit comments

Comments
 (0)