宋朝的美学语言,叫极简。
老子曾言:“万物之始,大道至简。”
极简,是一种哲学态度,更是一种美学语言
宋人喜欢自然朴素的美,不喜欢大肆雕琢,瓷器多以釉色、器形取胜。
南宋画家马远,又被称为“马一角”。最著名的当属这幅《寒江独钓图》。
一叶扁舟,渔翁一人,四周一片空白。可是,从渔翁微倾的身体,稍弯的鱼竿,翘起的船尾,仿佛望得见浩浩渺渺的江水,能感受到他一望无际的孤独。
空白之处,并非无一物,而是蕴含着深邃的孤独,辽远的时空。
中国的山水画,亦是从马远和夏圭开启了新的格局,夏圭又称“夏半边”。山水不再是全景式,而是取一景、一角、半边,却以小见大,以无胜有。
留白之处,自有气象万千,自有时空无限。
月满则亏,水满则溢,花不可太盛,话不说太满,含蓄是一种隽永,美在半半之间。
宋人的极简,是含蓄。
宋徽宗自创了瘦金体,笔法瘦劲,运笔灵动,如一枝枝瘦梅,在清冷的月夜里,自在地挺立、飘逸着。
瘦,是山寒水瘦。金,却是人间最贵、最亮的色。
有人说:“内心越是丰盈,生活越是素简。”
不同于唐朝的张扬外放,更不同于明清的繁复华贵,宋人在美学上如一叶扁舟,往青草更青处漫溯,又似一路孤行,往悬崖孤岭处登极。
唐朝讲究华美富贵,讲究大气排场,是当时唐代盛极一时的社会现状的产物,而宋代更讲究意境,讲究留白,更注重心灵上的沉淀。
唐朝以富贵胖为美,宋朝以清瘦为美,大唐的开放包容,大宋低调内敛。
没有抽象思维,就没有人类光辉灿烂的现代文明。
赫拉利在《人类简史》里说,人类之所以成为人类,是因为人类能够想象。这里的想象,作者认为很大程度上也是指抽象能力。正是这样的抽象思维帮助人类能够从具体事物中,抽象出各种概念,然后再用这些概念去构筑种种虚构故事。这些概念,包括政治(例如民族、国家)、经济(例如货币、证券)、文学、艺术和科学等,都是建立在抽象的基础之上。
怎么样? 是不是够抽象,只是几根线条,不过这几根线条是做了高度抽象之后的线条,过滤了绝大部分水牛的细节,只保留了牛的最主要的一些特征,正因为其抽象层次更高,因此,其泛化能力更强,不仅可以表示水牛,什么黄牛、奶牛、野牦牛只要是牛都逃不过这几根线。
在设计和编码的过程中,我么往往追求简单、清晰、易读、明了,以极少的元素表达复杂的事物。
抽象就是应对事物复杂之道,抽象意味着简单、容易理解、以少胜多、给人以美的感受,不同层次的抽象有不同的表达能力,犹如宋氏美学中的含蓄与留白。
Spring Data的设计是典型的宋氏极简美学的应用,通过一个极简的抽象Repository
开始,构筑了非常统一的、简洁明了的所有持久数据库的访问,以一个非常简单的范式统一了所有的关系型、非关系型等各种数据仓储。
万物之始,大道至简
@Indexed
public interface Repository<T, ID> {
}
下面是spring-data-jpa的继承图,非常的简单清晰,
下面是spring-data-mongodb的继承图,非常的简单清晰而且风格与JPA高度统一。
上面的设计极简、易用、结构化、好理解,能给人以美的享受。
在举一个例子,Java中的List删除特定的元素。可以看到宋氏美学的编码风格简单明了。
// 正常写法
public static void remove1(List<String> list, String target) {
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String item = iter.next();
if (item.equals(target)) {
iter.remove();
}
}
}
// 宋氏美学的极简编码风格
public static void remove2(List<String> list, String target) {
list.removeIf(Predicate.isEqual(target));
}
最后一个例子,直观的感受就是:简单就是美,少及是多,给人以易读、美个感受。
public static long count1(List<Integer> list) {
// 正常写法
long count = 0;
for (Integer item : list) {
if (item > 20) {
count++;
}
}
return count;
}
public static long count2(List<Integer> list) {
// 宋氏美学的极简编码风格
return list.stream()
.filter(item -> item > 20)
.count();
}