主页

泛型编程

起源泛型编程是一种编程风格,其中算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式。 泛型这个词并不是通用的,在不同的语言实现中,具有不同的命名。在Java/Kotlin/C#中称为泛型(Generics),在ML/Scala/Haskell中称为Parametric Polymorphism,而在C++中被叫做模板(Template),比如最负盛名的C++中的STL。任何编程

我是怎样学习新编程语言的

说服自己学习新的编程语言的最终目的是解决实际问题。掌握编程语言的过程,在某种程度上近似学习一种新的工程实践。不仅解决问题固然可乐,学习的过程也同样充满了新鲜感,不过需要谨防的是新鲜感带来的胜任力错觉。 胜任力错觉指的是反复接触新东西,发现不用花费什么气力就理解了其中所有的内容。说的简单点,就是自以为是。这种胜任力错觉导致最常见的后果是以为掌握了某种技能,真正开始解决问题时,要么是半天摸不着头绪,

怎样才算学会Python

Python 实践基础起源假如你已经有了编程基础,那么学习一门新语言的困难点绝对不在语法、语义和风格等代码层面上的,而在于语言范式(OO,FP还是Logic),语言的生态(如:依赖管理和包发布等)和工具(编辑器,编译器或者解释器)这些方面,请参看如何高效地学习编程语言。再假如你已经对各类语言范式都有一定的了解,那么最后的困难之处就是…细节,它是魔鬼。 我相信真正拥抱一门新语言,花在工具和语言生态

代数定义- idris

关于环境和数据类型简介 Emacs集成 Idris 开发环境 Idris repl 使用说明 Idris 代数类型定义 1. Emacs 安装 idris-mode1234567(use-package idris-mode :mode (("\\.idr$" . idris-mode) ("\\.lidr$" . idris-mode)) :ensure t :defer

技术简史

太长不读篇《技术简史》原著Ruling the wave, From the Compass to the Internet, a History of Business and Politics along the Technological Frontier)。依书中的视角,从15世纪的地理大发现到21世纪的网络音乐,每一次技术的创新和商业发展都大致遵循4个阶段规律: 创新 市场化 创造性的

Tree command 的多重实现

解题思路 利用递归,将目录转换成 {:name: ".", :children: []} 结构 对于第一层目录名,前缀装饰成 T_branch = "├── "或者 L_branch = "└── " 对于子目录,前缀装饰成 I_branch = "│ "或者SPACER = " "举

函数式编程简介

函数式编程是什么 函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。 – wiki 例子一 累加运算12345678910111213// sumList<Integer> nums = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10);public s

维多利亚时代的互联网

人类互相交流的欲望从未减弱过。 作者和书这本书是汤姆·斯坦迪奇(Tom Standage)于1997年完成,1998年9月第一次出版。中文版是后浪|江西出版社于2017-8年出版。作者毕业于牛津大学,主修工程学和电脑科技,在《经济学人》杂志科技版担任主编。出版过的图书作品有《从莎草纸到互联网》、《六个瓶子里的世界史》等,本书是其代表作和畅销之作,已被拍成纪录片。 电报简史脑图见文末。本书的概述

系统之美

世界是普遍联系、永恒发展的,这是我很欣赏的一名大学马原老师奉为圭臬的话,也是给我很大触动的金玉良言。世界是一个大系统,其中有纷繁复杂的事物,用独特的行为方式互相影响,或直接或间接,要么直截了当因果相连,要么兜兜转转蝴蝶效应。如果持不可知论,世界将永存混沌。系统总是比看上去复杂,但是其中玄妙又遵循因果。依照系统思考的基本原则,系统的行为总是由系统的结构决定。我们不愿意看到的很多现象,归根结底都是系统

验收条件

特征 日常语言描述 捕获系统行为 个数有限 在故事基础部分,我提到用户故事通常是日常或者商务语言写成的句子,这些句子描述了用户在其工作职责范围内想要达成的某个目的以及达成该目的需要的功能(手段)。所以书写用户的故事的句式一般都是:As(用户的角色)… I Want(功能或手段)… So That(目的)。根据用户故事的 INVEST 划分原则中 N (Negotiated 可协商的) 原则,故事