进入代码世界的目瞪口呆是高度惊艳的

论坛 期权论坛 期权     
莫昭的日常学习   2019-7-14 23:36   3059   0
《大教堂与集市》


这本书被称作开源文化的独立宣言。大教堂与集市,对应传统与开源两种开发模式,前者封闭、自上而下;后者协作、松散,进行高频的测试、改进、发布循环。作者作为Linux等开源项目的亲历者,其开垦心智层、魔法锅两章写得相当精彩。也能完美移植到项目管理、知识创造等领域。

作者认为计件工资对创造性劳动会造成损害,只有当工作动机中不包含寻求奖励时,才是唯一应给予奖励的时候。

传统的封闭软件销售实行一次性收费。对开发者最有利的情况是“尽可能多的购买者、尽可能少的实际使用者”,这种经济模型下,用户能获得支持相当匮乏。他认为在软件行业成熟后,通过售后咨询赚钱会成为主流。在他写下这些文字十几年后,APP的订阅模式渐成主流。

人们在社群中分享、开源的回报可能不是经济上,而是在自我效能、黑客声望、“玩”之乐趣上。开源文化中的充裕性,让权威命令、资源占有失去意义,社会地位取决于你给与了什么,赠送源码,就像拥有一辆跑车那样奢华——通过昂贵而没有明显回报的行为展示吸引力。

《算法图解》


10年前F给我推荐的入门读物是《算法导论》,于是直接从入门到放弃。这本真的是入门级,把复杂事情讲简单很厉害,虽然我不是视觉学习者,也翻小说一样翻完。还配合用了“算法动画图解”APP。阅读过程中充满快感,有几个很基本的点,捅破了窗户纸。太热爱那种知晓事物背后原理的快乐了,看过一段网页缓存的代码,打开浏览器都很开心,懂了就跟我有关系了。

1 大O法与二分查找
从10亿条记录中查找一条记录要进行几次查询?二分查找仅需要32次,指数的力量。为何用大O法表示算法效率?为什么取对数等多层变换后,数据的核心特征仍能保留?选择数组、链表、散列表等结构的理由是什么?以前没想过why,豁然开朗了。

2 递归、栈与队列
第一次学python时,我用的廖雪峰的在线教程,学到递归与斐波拉切数列放弃了。本书一句话解释:递归函数分为基线条件和递归条件。基线条件,即函数不再调用自己。以前没理解,豁然开朗,基线条件我原以为是开始,其实是最内层。

这次是真把栈与队列内化了。因为看到两个简写,栈LIFO,队列FIFO。我做梦都能熟练背出的会计学名词,和存货管理相通啊。知识迁移,很有意思。

3 生活中的问题
  • 一块1680*640m的地,均匀把它分成尽可能大的方块——分而治之算法D&C
  • 在朋友(的朋友)中寻找关系最近的芒果销售商——广度优先搜索BFS
  • 寻找从A到B地的最短路线——狄克斯特拉算法
  • 用尽可能少的电台覆盖所有区域——贪婪算法
  • 安排度假行程,兼顾时间限制和想去程度;单词输入预测,文件差异比较等——动态规划与最长公共子序列
  • 分类推荐系统;回归预测股价与电影评分;OCR识别;垃圾邮件过滤——KNN算法与机器学习

4 万能的费曼算法
分为三步:将问题写下来;好好思考;将答案写下来。我真是超爱吃程序员的梗。

《对比Excel,轻松学习Python数据分析》


以下几本都是入门读物。本书重点明确,介绍了数据清洗、Pandas、Numpy,Python制图。不求深,接地气。适用于平时深度使用Excel做数据分析,又不想花过多时间学习编程的群体。

为什么要学一点编程语言呢:10%的场景,Python等的确处理数据比Excel灵活性更高,大幅缩减机械劳动效率,学的时候不必求全,知道框架,有需求图索骥也可以;一门语言是一个接口,增加一种对数据的思考框架,未来也许可以拓展。

《Python编程无师自通 : 专业程序员的养成》


前一本书适合将Python作为Excel补充的人,这本适合Python编程初步入门,每一章非常的短,点到为止,但框架不错。入门时我困惑过的概念:容器,面向对象编程中的封装、抽象、多态和继承,正则表达式,版本控制,这本书也简单介绍。

最后一部分列举了一些最佳编程实践。例如:写代码是最后手段,碰到问题时,先看是否有人已解决了类似的问题,而不是“我应该怎么解决这个问题”;如果耗费时间太长,做法可能就是错的;尽可能多花时间阅读别人的代码。很像《大教堂与集市》中的建设性懒惰:“优秀的程序员知道写些什么,卓越的程序员知道改写(和重用)什么”。

程序员是个很有意思的群体,程序员的学习与生活哲学总是能有效的迁移到其他领域。再比如优雅的The Zen of Python。

《用图表说话 : 麦肯锡商务沟通全新解读》


看数据可视化前迅速翻的一本,有启发。制图属于因过基础,反容易被忽视的部分。这本围绕几种最基本的图表,但好图和坏图对比太鲜明了。比起how,why最重要的;比起复杂,简单最重要。书中有几个利用视错觉制图、误导读者的案例。会心一笑,挺常见。

《SQL必知必会 : (第4版)》

大学计算机公选课学过SQL,适用范围很广,例如论文库和各种数据库查询,Access等。这本书原名SQL in 10 Minutes,的确适合通勤路上看。不求偏求怪,集中篇幅在检索、排序、过渡、分组、联接等最常见的基础操作上,可涵盖日常需求的80%以上。对事务管理、存储过程、游标等也做了简单介绍。

家里另有两本Mick著的《SQL基础教程》 《SQL进阶教程》,厚实很多,读起来不算愉悦,但细节更详实,我用于按需查询。据说“必知必会”难度介于二者之间。

以下内容来自《大教堂与集市》附录:“如何成为一名黑客”。
黑客精神并不局限在软件文化中。事实上,对任何科学和艺术,在其最高水平的活动中都可以发现黑客精神。

黑客的态度:
1 这个世界充满了迷人的问题等待人们去解决。你必须要对解决问题、磨砺技能和智力挑战有着基本的兴奋感。培养出一种对自己学习能力的信心——你要相信,即便你没有掌握解决某个问题所需的全部知识,如果你成功处理了其中一小部分而且从中学到东西,你将会学到足够多的知识去解决下一小部分——如此往复,最终你会解决整个问题。
2 不要一个问题解决两次。
3 无聊和乏味是有害的。尽可能将那些无趣的事情自动化。为自己,也为其他人。
4 自由是好事。滥用权威者靠审查和保密而强大。对此类行为有一种自觉上的反感,必须愿意与之抗争。
5 态度不能代替能力。持怀疑态度并尊敬每种能力。在任何事情上的能力都是好的。那种只有极少数人才能驾驭的技术能力尤其好,而那种需要思维敏锐、动手能力强和全神贯注的技术能力更好。从动手开发中获得乐趣——辛苦的工作和投入将成为紧张的比赛而不是苦工。

学会以一种独立于任何语言的一般方式来思考编程问题。能够把手册上的东西和你已经知道的东西联系起来,从而可以在几天内学会一门新语言。学习编程就像学习如何写好自然语言。最好的方式是阅读大师写的东西,然后写自己的东西,多读多写,如此反复,直到你写的东西中开始发展出你在经典中体会的力量与简洁。

黑客与书呆子的关系:做一个不食人间烟火的人有助于你将精力集中在真正重要的事情上,比如思考和编程。如果你是因为没有生活而被编程吸引,那么没什么——至少不会茫然无措。然后,也许你会因此找到生活。

符合黑客格调的事情:写一手好文章,阅读科幻小说与参加科幻小说集会,禅修与学习武术,学习乐器,培养对双关语和俏皮话的欣赏能力。

至于正文部分,有更多、更密的真知灼见,都不忍断章取义出来。曾经我的理想伴侣就是程序员物种,结果嫁给了一位纯纯的文科生,家里有几架大块头都是经济学、历史学。好在他现在也开始奋力码代码,不知是否为了把我套牢。这一本,加上《人月神话》 《黑客与画家》 ,部分构建了我对一种生活哲学的想象。“通常,那些最优突破性和最有创新力的解决方案来自于你认识到你对问题的基本观念是错的”。这种目瞪口呆是高度惊艳的。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP