散文说python半篇——景观三元论与盖茨比的对话

今天,

天气晴朗,风和日丽;

我其实在说谎……

爱说谎其实是我的天性

上个礼拜四我就用景观三元论说了很多谎话,然后一头大象自己上吊了,

了不起的大象啊,盖茨比也要从坟墓里爬出来了吧,

陈年旧事,

紫露凝烟,

没有了盖茨比的坟墓依然是遗址公园,景观三元论如是说。

景观三元论问:盖茨比,你为何不用C++写代码?非要用ruby或者python这种运行很慢的语言呢?

盖茨比说:

老兄,你要求快,干脆直接用汇编语言去写吧。

举个例子吧,

你用C++写一个实现某个功能的程序,这个程序的运行速度确实很快,只要0.0001s即可,

而我用python或者ruby写同样一个程序,它的运行速度确实慢很多,需要0.01s,确实慢了很多很多倍。

但是,

你写那段C++的程序,你花了一天的时间,

而我用python或者ruby写这段同样的代码,只要10分钟,

而0.01s已经绰绰有余地满足了我的功能需求,它和0.0001s对我来说都是一眨眼的功夫。

所以人生苦短,我用python/ruby

接下来我就说python了

因为是散文,所以不会那么系统地说,

主要就点到为止地说说如何像一个pythonic一样去写python

a, b = b, a

在以前写排序代码的循环体内,经常会需要单独搞个中间变量,然后z=a,a=b,b=z

现在一句话优雅的搞定了,如上。

[ i*2 for i in xrange(3) ]

列表推导式式这类语法糖可谓凶器啊,不仅简单优雅,而且威力很大。(同样适用于元组、集合、字典)

>>> isinstance(1, (float, int))
True
>>> isinstance(1.3, (float, int))
True
>>> isinstance("1.3", (float, int))
False

请不要适用type(1.3)去看变量类型,这样不专业,用isinstance吧,isinstance(1.3, float),而且isinstance还可以接受类型的元组从而适用多个类型,很优雅吧。

>>> print "Hello %(name)s !" % {'name': 'James'}
Hello James !
>>> print "I am years %(age)i years old" % {'age': 18}
I am years 18 years old
>>> print "Hello {name} !".format(name="James")
Hello James !

带关键词的格式化。有点模板引擎的味道。

def add(x, y):
    return x + y

lst1 = [1, 2, 3, 4, 5]
lst2 = [6, 7, 8, 9, 10]
lst_sum = map(add, lst1, lst2)

# lst_sum == [7, 9, 11, 13, 15]

python对Haskell这种有趣的函数式编程语言的继承借鉴还是很多的,在此就点到为止地提一下filter(),reduce(),map(),lambda...因为是散文,就不说细了。。。。

写代码的习惯,排版上,空格上,注意一些,也很重要,虽说推荐似乎名叫pep8规则,但是我觉得基本上注意到一些这些细节就够了

看过一排how to use python as a pythonic,好像叫这个名字的网页。

其实我觉得最有用的就是注意括号中参数的空格,以及等于号前后加个空格,看起来舒服清爽点

注意即可

在此推荐一些关于python的好的参考网站:

https://pyzh.readthedocs.org/en/latest/

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

不推荐多,就推荐者两个,一个中文的,一个英文的。

至于面向科学计算的,建议学numpy和scipy,忘了还推荐目前只有4个api的jerkpy,博客中的另一篇文章介绍了。

做图像识别 建议opencv,骨骼识别openNI

对于网络编程,建议用request取代urllib和urllib2

异步的twisted我还没看。

网络框架嘛,python的网络框架还是有很多的,比较白话开放,从plone、django(这个词的d不发音,读“江go”,但是在中国,入乡随俗也没问题)、flask、bottle、tornado

基本上都接触过,但是我最终选定了优雅的异步框架tornado

说说吧

django虽然很多人用,也很全,很快,但是太重、耦合性相对较高,不适合做大型网站,用来给普通公司做私活可以;

flask是个比较新的框架,也很轻,很新,社区也比较团结新锐,我本来也用这个,但是后来还是决定不用它,原因是综合的,一个是自身喜好吧,我其实挺喜欢flask的,但是还是似乎觉得他位于一个不轻不重的位置,虽然社区很不错,是牛B团队开发的,但是感觉稍微还是有那么一点乱,有种逐步从webpy的量级向django发展的趋势。

web.py是个不可逾越的轻量级鼻祖,虽然创始人挂了,但是这个经典的框架非常经典。不过似乎又太轻了,以及缺乏创始人维护。

做大型网站就应该松耦合,用轻量级的框架来干事,用密斯凡德罗的话,少即是多,以小打大。

bottle可谓一个玩具,上手很快,非常适合给小学生玩。也算经典吧。

tornado我最推崇,非常优雅的一个基于web.py发展而来的异步框架,即使不用他的异步,他也是一个值得推崇的东东,不仅仅是因为其能承受高并发、异步、安全cookie、防止xsrf攻击等,而更是因为这个框架的架构高明,优雅。 在此之前,我实践了ruby on rails,django, flask, web.py, nodejs ,虽然这些都是杰出的框架,但是自从我遇到了tornado,我已经决定tornado是我的归宿。一把利器啊,经过大半年的实践,我总结到centos+nginx+tornado+memercached+nosql+mysql+python,为何没人从一开始就告诉我这个,这样就不用走弯路了,所以天才都不是凭爹的,而是拼哥的,我真羡慕我堂弟有我这样一个哥哥,等他中考后就去教他这个,瞬间觉得自己高中三年,大学四年,研究生两年半真是糊里糊涂地走了好多弯路啊,被三元论这类。。。。其实三元论还不错,是一个不错的思想。但是如果称同济景观为中国最好的景观学,那太不够了,目前中国根本没有景观学专业,回过头,发现被骗了好多年啊。。。如果上天在给我一次机会,我会在高一后就退学,然后自行软硬兼修外加学规划设计;现在老了。。。。幸亏去年受到了松本行弘的思想的感染,让我断筋再续,虽然不用ruby了,但是这种思想已然扔不掉了。。。。

以前写的都是技术博客,今天写了一篇技术散文,

正所谓形散而神不散,松耦合,强内聚。我又说谎了,其实想到什么写什么吧,为所欲为。。。

python上手很快,未来每个人都必须会编程,而python和ruby是非常人性化的语言,所以会有大部分人都会python或者ruby的

python上手很快,但是代码质量以及把代码写得跟机器合二为一还是需要境界的,要充分《深入了解计算机系统》,其实讲简单点,不说套话,最基础的一个步骤就是充分利用cpu的运算能力,注意内存,异步的核心我原以为只是释放cpu资源,后来发现非阻塞不仅仅是释放cpu,也同时释放网络资源,说的比较土,原因很简单,没学过计算机系统那门课,那本书也没看完。。。。不过,换句话说点到为止,慢慢看完那本书足以,汇编语言真的没必要学了,compilers这种都是有追求的码农去学的,从一个景观设计师的角度来说如何像松本所说的那样从人的角度出发,如何让人更舒服地编码。——给码农捶背,让码农更舒服地编码。这当让是说笑,事实是前一段时间,从一个播客上听了一个腾讯的产品经理说他们团队的敏捷开发,本来看中了腾讯的产品经理的薪资高,但是还没听完那个产品经理的播客,我彻底失望了,打消了去腾讯的念头了——他妈的,就是个工头,当你与什么样的人共事,则意味着未来的高度,我宁愿与一群无业游民共事也不愿与一群号称敏捷开发的包工头共事,工头只知道工程,而不关心战略,也不关心产品,更不关心如何码农地死活与生活。松本行弘作为一个技术大牛的角度,他已经诠释了如何让程序员更舒服地编程,而我,作为一名“未知方面”的“自封大牛”也将要诠释如何让程序员更舒服地编码“?谷歌一样地舒服的环境,是物质基础,但是真正牛B的方法是少写代码,不写代码。谨慎需求提出,用心的架构设计,从产品设计层面就思考如何尽量少写代码,把时间花在精心设计一个api,让这个api精到可以考虑到后期的迭代开发。从产品设计层面就考虑到代码架构,从而花时间在画“草图”上,而不是直接拿着“cad来画草图”。虽然是景观与建筑设计的经验,但是这是通用的。

松本行弘,他让程序员更加舒服地编程。

弓长一苇,他让程序员更少乃至不用编程。

跳出圈圈看世界,无所谓你是码农,还是建筑师,无所谓你是vc还是cto,无所谓你是教授还是学生,

那些都不重要。

重要的是生活。

生活乃天赋人权,

所谓名利乃身外之物,

无法舍弃追求的不是名利,

而是那种自我的成就感,

但是,我时常提醒朕,

生死由命

富贵在天

人之生,

乃天赋人权,

我并非生来为了写论文,

我生来也并非为了写代码,

我生来也并非为了做设计画图,

这些不是必须的,

这些是没有必要的,

关键在于你是否有勇气去选择,

选择在于每个人的自己手中。

发现写的太直白了,

不能这样,

我应该写的高深一点,

清晨,我撞死一辆卡车。

可惜这首我的成名诗,失传了,可惜。。。我自己也忘了当年怎么写的。

散文说python半篇——景观三元论与盖茨比的对话,布布扣,bubuko.com

时间: 2024-10-23 02:27:52

散文说python半篇——景观三元论与盖茨比的对话的相关文章

python基础篇(五)

python基础篇(五) 算法初识 什么是算法 二分查找算法 ?一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大量计算机资源,而且耗时,这个时候就有人对这类计算编写了一些策略,这些策略就是算法.这些策略会加快数据计算时间,大大减少计算机的资源消耗. 在长时间人们编写代码的工作中,一些优秀的算法就被流传下来,但是不是所有的算法都能实现目的一步到位的工作,它只能减少你的代码,提高工作效率,随着知识的不断积累,你会

【Python五篇慢慢弹(5)】‘类’过依然继续前行,直至ending再出发

‘类’过依然继续前行,直至ending再出发 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础.本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一<快速上手学python>先接触下python怎样安装与运行,以及pychar

Python基础篇(八)

key words:私有变量,类静态变量,生成器,导入Python模块,r查看模块可以使用的函数,查看帮助信息,启动外部程序,集合,堆,时间模块,random模块,shelve模块,文件读取等 >>> class Rectangle: ...     def __init__(self): ...         self.__width = 0 ...         self.__height = 0 ...     def setSize(self,width,height): .

老王python基础篇--python, 视频, 教程, 视频教程, 基础

老王python基础篇 基础篇11-python基本数据结构-元组和集合.rar 基础篇19-python语句与数据结构应用.rar 基础篇21-文本操作应用.rar 基础篇3-虚拟机安装xubuntu开发环境.rar 基础篇17-python语句1.2.rar 基础篇10-python基本数据结构-列表应用.rar 基础篇9-python基本数据结构-列表.rar 基础篇5-python基本数据类型讲解1.1.rar 基础篇18-基础篇综合习题.rar 基础篇8-python基本数据类型习题解

Python入门篇之列表

一.声明 本教程所使用的是Python版本是3.4.2. 二.Python列表介绍 Python列表(List)使用简单而且功能强大,其具有很好的可伸缩性,为开发者编程提供了巨大的便利. [列表变量声明] 列表变量的声明和C语言中声明数组的方式差不多.下图中声明了一个名为 list 的列表变量. [列表元素的索引方式] 笔者在<Python入门篇之字符串使用>一文中介绍过字符串中字符的索引方式.列表元素的索引方式和字符串字符的索引方式是一样的,都是根据元素间隙位置来切割出元素内容.下面做详细说

python第一篇

python第一篇 1.python简介 python是一门简单易学而且功能强大的编程语言,它有高效的内置数据结构,并且能够用简洁的语法进行面向对象编程.python简洁的语法和良好的编译解释性,使得它能够成为大多数领域的使用语言,如web开发,科学运算,人工智能,系统运维,金融分析,图形GUI等,很多领域都可以看到python的影子.既然python这么厉害,那为什么不学起来呢?come body!  life is short ,you need python! 2.基本数据类型 首先介绍的

python基础篇

python基础篇 变量命名 >>> name_value='freddy' 1 >>> name_value=freddy 2 Traceback (most recent call last): 3 File "<stdin>", line 1, in <module> 4 NameError: name 'freddy' is not defined **变量的值如果是字符串必须要加引号,否则定义变量会报错 (因为他把变

怒学Python——完结篇——I/O

好吧,没想到居然这么快,才两天我就把入门看完了,当然只是入门,以后如果用到,会把那些各个类型的细化都总结一下例如数学函数,或者总结一下一些框架的应用如Scarpy(爬虫框架,听着就很兴奋呢,很多人都是了解有,但是没用过......),笔者写完这段暂时先开心的看电影去,回学校再说. Python的屏幕I/O:如果是交互式编程,直接输入就好,这里的是在脚本式编程才用到,用到的方法是input和raw_input,下面给出例子 #!/usr/bin/python print raw_input() #

Python基础篇(三)

元组是序列的一种,与列表的区别是,元组是不能修改的. 元组一般是用圆括号括起来进行定义,如下: >>> (1,2,3)[1:2]     (2,) 如果元组中只有一个元素,元组的表示有些奇怪,末尾需要加上一个逗号: >>> (1,2,3)[1:2]     (2,) >>> 3*(3)      9      >>> 3*(3,)      (3, 3, 3) tuple函数 tuple函数用于将任意类型的序列转换为元组: >&