作者: yylogo

  • 我和大多数人的缘分朝生暮死犹如露水

    不断告别,不断遇见,我和大多数人的缘分朝生暮死犹如露水。

    有遗憾吗?有的。

    遗憾是人对于过往的不甘,但纵使回到那个刹那,补足了遗憾也不见得会推演出我们所期盼的结局,我们总是太在意自己的行为和想法,向往那个美好的结果,而认为只差一点点,当时如果再向前一点或者当时如果再真诚一点,也许就能… 哎呀,好可惜,只是毫厘谬以千里。

    但蝴蝶效应才是这世间真正的法则,人的大脑是没办法演练出这个世间的种种因果。

    修正了那个遗憾或者弥补了某句言不由衷的话,鲁莽的行为,接下来所有的一切都会被脑补成最美好的果,但事实不是这样的,即使回到那个时刻,你不开口也不会和她在一起;即使回到那个时刻,你抱上去了,也不能和怀里的她共度那么长那么长的余生。

    该做的都做了,幼稚的想法不成熟的行为就是那个时候我的必然。既然这是必然,何必用更成熟的自己去告诉过去的自己要是那个时候你再怎么样,如果怎么样…

    其实也不是更成熟的自己,只是观测到结果的自己想再要一次机会,这是遗憾或者不甘心的本质。知道了此路不通,坐时光机回到过去再来一次,再来一次,就像电影里夏洛特说“你要不在最后一天再来”,“你应该在第一天再来”,要接受重来也改变不了什么。

    把如果当作理由,只是不认可现实并且在逃避现实。

    时间是一条不断向前的路径,你要一直向前走不要回头,我们都会在某些时刻会遇到很多美好的事情,会有很多悸动的心情…我们都想要拼命永远的把美好拽在手里,从而付出许多努力,很多时候这种追求会让自己得失心变得很重,在乎得失心反倒忘了初衷。人应该从喜欢里得到力量和快乐,而不是花光所有的力量和快乐去喜欢。

    我是养玫瑰的小王子,我是被驯服的狐狸。我们要承认我们的生活注定会伤心,我们的生活一定不会像我们想象的那么美好,这个世界上许多剧本都特别的不如人意,因为我不是小王子,我是狐狸,而我不是被驯服的那一个,我是世间这四万万亿芸芸众生里的分母。我们是自己的主角,但在这世间不过一粒尘埃,可是作为尘埃,我也想释放出绚烂的烟花,我也想在开出花来啊,做一只努力生长的迎春花。人各有悲伤,我想有一个满眼是我的人,我此刻只是难过于没能让你我成为彼此尘埃里开出的花。

    所以,有遗憾吗?有不甘心,但该做的都做的,表达足够清晰、用力,没什么好遗憾的。

    一定要说,只能说这个结果是必然,是基于每个人前二十多年的累计出来的因的必然。

    留下开心的事其实挺多,过程也有不少离谱的事情,但不负这段时间。

    我和大多数人的缘分朝生暮死犹如露水,不断告别,不断遇见。

    啧,以上。

  • 何为良好生活:行之于途而应于心 读书笔记

    • 评价

      读这本书是因为看到标题,何谓良好的生活,期待一个标准的答案。
      当然我没有得到一个标准的答案,引用书中一句话:
      “伦理学的宗旨不是找到或发明一种最高的价值,功效、义务、自由、爱情或什么,把其他价值加以统摄,使所有价值在这个理论体系中各安其位,其乐融融。这类理论都是纸上谈兵。”
      书中对伦理的推断都十分严谨有趣,引用论据也是中西融会贯通,既有中国古代的哲人,也有希腊古典哲人;对于所剧之例也是通俗易懂,在前面接近一半的内容中,书里都没有提到太多专有名词,始终在剥离伦理学之于学科、之于科学的位置,以及之于生活中如何思考算是伦理学的范畴。
      非常有趣的一本书!
      没有一条放之四海而皆准的人生伦理路径,每个人都是个殊体,但我们会努力向善,我们会追求自我实现,我们会从健康向上的活动中获得快乐,我们会向别人学习,但不会想成为别人。要始终为自己而活,不要为了满足别人社会的期待。

    • 序言

      • 天下的道理差不多早都被前人讲过
    • 第一章 伦理与伦理学

      • §1 伦理学这个名称
        • 中国思想一向侧重于伦理领域,可说是伦理本位的。孔子的思想一般被视作伦理学说。老子一般被解释为政治—伦理学说。宋明理学因应佛教挑战,吸收某些佛学和道家因素,发展出一套本体论—宇宙论—知识论,但一般认为其核心仍然是伦理—政治关怀,尊德性也始终被置于道问学之上。
      • §2 伦理与道德
        • 伦理更多关涉社会人伦关系,morality更多和个人有关
        • 我们该怎样确定一件事情涉及道德与否?
        • 伦理学是在一般社会生活的背景下来探究道德善恶——从社会生活出发来看待伦理关系,进而从伦理关系来看待道德要求
        • 伦理学从道德善恶维度来探究社会生活。
        • 总之,在我看来,道德植根于伦理并与伦理生活交织在一起,伦理则植根于一般社会生活并与一般社会生活交织在一起。
      • §4 人该怎样生活
        • 具体的考虑有时不仅是在决策论意义上做一个决定,不仅是在特定条件下盘算、权衡,而是要连同我是个什么样的人,即我的整体生活旨趣一起来考虑。这时候,考虑的内容就不再只是在一件具体的事情上我该怎样做,而是连到了我该怎样生活这个更一般的问题上。
      • §6 伦理学内的分科
        • 理论伦理学不关教人为善的事,教人为善的是实践伦理学。
        • 元伦理学的旨趣不在提供道德规范,甚至也不在提供道德问题的思考方法,而在于澄清伦理学这个学科本身的性质
        • 对各种各样的道德规范进行反思进行论证才是伦理学的任务
      • §8 说理与劝求
        • 科学求真在群众那里没有很大市场。我们不必太多为事实和逻辑抱屈——人们本来不是要为正确生活,而是要生活得热热闹闹忽忽悠悠,而且,细节之真本来与正确判断关系不大
        • 晓之以理蕴含“我比你高明”的意思:我有道理而你没道理,或,我比你更有道理。
        • 虽然人们依据一般道德感做出道德判断,但他不一定明确知道自己依据的是何种道理,所谓“我乃行之,反而求之,不得吾心”,而有时他却要知道这种道理,要讲清楚这种道理,例如他可能需要为自己辩护,也可能需要说服别人
    • 第二章 功效主义与自私的基因

      • §1 功效主义简介

        • 功效主义与自私的基因

        • 在伦理维度上反思生活,通常会先来到功效主义类型的见解。

        • 功效主义理论是后果论的,什么行为是善好的,要看这个行为带来什么后果。

        • 从功效出发,多是冷静的,但易失于计较;从道义出发,则多带强烈的感情。

        • 功效主义并非不谈目的单谈手段,只是它所设想的人生目的是个老生常谈:人皆避祸求福,或每个人都追求自己的利益

        • 不过,功效主义理论并不停留在这个起点上,依这种理论,最重要的不是这一个人或那一个人的幸福,而是人类幸福总量。

        • 如果能用一个特点来概括功效主义者,那就是“对社会公正的深切关怀”

      • §2 幸福计算
        • 我们的确关心社会的总福利,但同时也必须关心是哪些人获得了这些福利,以及他们怎么获得这些福利。除了最大幸福之外,至少还必须引进权利、合理性、合法性等等。
      • §3 经济学帝国主义
        • 经济利益只能支撑经济学,支撑不住伦理学,因为是生存定义利益而不是利益定义生存。
      • §6 看不见的手
        • 实际上,“看不见的手”在《国富论》里只出现过一次,还有权威研究者认为斯密只是用这话开个反讽的玩笑。我们也知道,斯密不只写过《国富论》,还写过《道德情操论》,这部著作开篇就说:“无论我们认为人多么自私,人的本性中显然有一些原则,使他关心别人的运道,把别人的福乐视作自己的一部分,虽然除了因看到这些而快乐,他从中一无所得。”
      • §7 “自私的基因”
        • 人皆追求自己的利益这一功效主义原理也是经济学、社会生物学等科学的基本预设。
        • 凡是经过自然选择进化而产生的任何东西都会是自私的
        • 人的仁慈大度很难用自私来解释,人的贪婪、残暴、阴险又何尝能用自私解释清楚?
        • 跟残暴狠毒大奸大恶比,自私不过是些小奸小恶
      • §8 自利与自私
        • 自利——自利比自私少一点儿道德评价的意味。
        • 巴勒斯坦青年身缚炸药闯进平民人群之中,这是利他还是自利?是英勇就义还是滥杀无辜?无论你怎样回答这个问题,它都不是一个科学问题。
    • 第三章 事实与价值

      • §2 “是”与“应当”

        • 在这些适当的周边环境下,对怀有某种欲望或愿望的生物来说,实然导向应然。
      • §2 从借钱这个事实能够推出应当还钱吗?

        • 从借钱这个事实能够推出应当还钱吗?
      • §3 自然而然的存在是实然与应然未分之处

        • 伦理学分析的中心问题——甚至可以说‘真正的’问题——就是详细地阐明看法与态度是怎样发生相互关系的。
        • 在康德那里,逃生出自欲望,欲望属于因果世界,这里只有实然,没有应然
      • §4 简论社会研究与自然科学的区别

        • 化学家只要找到了某种溴化物发生反应的规律就止步了,而社会学家找到人的某种反应模式时,他的工作刚刚开始,因为他需要知道他们为什么这么反应,他要在价值、动机、意图中探索“为什么”。
        • 并非所有社会科学都无法建构实验,最典型的如心理学——实验心理学是这门科学中的大国。
        • 人与人为事物的存在与活动是由意义指引的

          无论人体运作的底层机制是什么,器官系统之间如何协作,人是有思想的,研究人的问题就得是基于人的三观,看法,回忆,防御机制…>一个讲解员向我们讲解流星为什么会发光,另一个讲解员向我们讲解人为什么会自杀,前者只要解释清楚流星发光的机制就够了,后者却不能只向我们讲解肾上腺素等腺体的工作原理。一个讲解员向我们讲解流星为什么会发光,另一个讲解员向我们讲解人为什么会自杀,前者只要解释清楚流星发光的机制就够了,后者却不能只向我们讲解肾上腺素等腺体的工作原理。

      • §5 人文/社会研究的科学化

        • 社会科学的研究对象包含自我理解和互相理解,他的行为涉及价值、动机、意图,就此而言,社会科学与人文学科的确连成一片。
        • 在多数情况下,就客体化程度而言,一门社会科学内部存在着巨大的差异,其一端接近于自然科学,另一端接近于人文学

          经济学里,前者如计量经济学,后者如贫困研究;
          心理学里,前者如大脑区域定位研究,后者如弗洛伊德自我、本我、超我的理论或马斯洛的自我实现理论;
          语言学里,前者如音位研究,后者如语义研究。

      • §6 伦理学是有我之知

        • 社会科学努力把研究对象所包含的意义与价值本身客体化,而在人文学科这里,价值/意义不是作为客体得到研究,而是与我和我们的价值和意义连在一起得到领会、评价、评判。
        • 而伦理学问题,突出的如何为良好生活这样的问题,不仅是从我们自己的生活出发才产生出来,而且始终与我们自己的生活相联系:我过的是不是良好生活?
        • 宽泛说来,哲学探究何为实在、何为知识、何为历史,都不是在探究纯粹客体的属性与结构,而是在探究跟我们自己相连的道理。简单说,伦理学之知是有我之知。
      • §7 评价与“主观”

        • 另有一些语词,本来用作中性的描述,农民、共产党、保守派、革命党、法西斯,在特定社会环境中却生出强烈的评价意味,是褒是贬则视社会环境的演变而定。
        • 世界不是由赤裸裸的事实组成,然后我们把评价投射到事实上去。
      • §8 伦理学重在论理

        • 主观评价差不多是个熟语,与客观描述对照。

        • 科学是客观的,因此可以论理,“科学为论理的方法所支配”,因为可以论理,所以是普遍的,“推诸四海而准焉”

        • 人生观是主观的,因此“是非各执”,孔子倡健行有为而老子倡无为,无法论证孰是孰非。

        • 美国正在发生的事情算是伦理学的范畴。但如果划到法律里,就需要自由社会在一定程度上达成共识。

          争论妇女是否有自行选择堕胎的权利。

        • 海德格尔等思想家指出,我们对世界的认识本来就是有情有感的认识

        • 伦理学固不免善恶的评价,却主要着力于细密的描述和分析。无论逻辑分析还是列述事实,显然都不是主观的东西。而且,既然重在说理,论者自然而然会多取中性的、描述性的语词。

      • §9 伦理道德方面的实证研究

        • 伦理学所关注的始终是人类生活的目的,或广泛意义上的善好,以及与目的内在关联的规范与实现途径。

        • 关乎与人的科学好像在这本书里都是一端连着物质一端连着灵魂或精神。

          心理学是一个幅员极大的学科,一端连在生理学上,另一端伸入我们的日常思考和哲学辨析。

        • 心理学是一个幅员极大的学科,一端连在生理学上,另一端伸入我们的日常思考和哲学辨析。

        • 其实,所有社会科学学科都是一端连于实证、一端连在人文学科上,只不过心理学在这一点上更加突出。

        • 圣洁/恶心也是道德感里的一个重要维度,虽然它通常不涉及或不明显地涉及是否对他人造成伤害。

    • 第四章 实践中的目的

      • §2 目的—手段
        • 我们做一件事,重要的是目的,所做的事情则是为了达到这个目的不得不做的手段
        • 伦理学所关注的,一般说来总是与目的相连的人类活动。
        • “革命要求革命的阶级为达到自己目的可以采取它拥有的一切手段:如果需要——武装起义,如果需要——实施恐怖。”
        • 谈论整体人生的目的或人生的意义与谈论做某件事的目的和意义有不同的含义,如果坚持从目的来谈论整体人生,那么,人生的总目的大概应当被理解为各种行为所含诸目的之间的协调一致。
      • §2 下棋不是好玩的手段
        • 与其说我们为了赢棋去下棋,不如说我们是为了要下棋才设置了赢棋的目的。
        • 我们最好把挖土要挣钱这类目的跟下棋要赢棋这类目的区分开来。前者不妨称之为外在目的
        • 所以我们也不妨把赢棋这类目的称作内置目的。
      • §3 目的与用途
        • 我们也可以说,挣工钱是我的目的,埋光缆、种树是挖沟挖坑的用途。为整齐起见,我们也可以把这两种回答分别称为主观目的和客观目的,或主观意义和客观意义。
        • 在挖沟这件事上,我们先有挖沟的目的才去挖沟,下棋这个游戏却不同,我们设置赢棋这个目的,是为了进行这个游戏。
      • §5 创造性与自主性

        • 这本书作者很有意思,到现在为止没有提出一个高深的抽象概念,而是始终在聊挖土,下棋和画画,对应的应该是是客观目的主管目的,内外目的外在目的等…但有意思的是作者阐述高深的概念只用浅显的事物

          我们常说绘画之类是创造性的活动,这是什么意思呢?挖土方,你也可能发明一种新方法,从而提高了挖土方的效率,下围棋,你也可能发明一种新的布局法,为什么我们格外突出绘画之类的创造性?

        • 实践活动的目的无法完全独立于实践活动本身加以界定,在极端情况下,“良好的实践本身就是目的”。

      • §6 行医也并非尽于取效
        • 治疗效果还牵涉到其他很多事情。尽量保住乳腺癌患者的乳房,是不是疗效的一部分?该冒致死之险把一个病人治愈还是取“保守疗法”听任病人落个终身残疾?为此还得考虑病人是老人还是少年,而不能“见病不见人”——折腾个天翻地覆,把个风烛残年身上的某种病根除了,有啥意义?
        • 无论得个大病小病,都要玩了命把它治好,这是相当晚近的习俗,由患者、医生、医疗制度合力造成,在现代医院里,医学能做到什么医生就去做什么,这倒有点儿“为行医而行医”的意思。
      • §7 德与才
        • 粗说,每个业行有它突出的德性。政治家需要大度,俗话说“宰相肚里能撑船”。学问家需要自甘寂寞。说得远一点儿,盗亦有道。
        • 医生更应具备的德性是富有同情心、冷静和审慎,这还包括,富有同情心与冷静审慎的相当困难的结合。
        • 贪婪在哪里都是恶品,但比起商人,医生身上更容它不得
      • §8 内向效用
        • 人类活动有些靠近纯粹取效一端,有些靠近游戏一端。
        • 我们都在不同程度上希望把自己正在做的事情做好。
        • 麦金太尔把从业者的收益分成“外在收益”和“内在收益”
        • 在不健康的社会环境里,内向效用甚至根本得不到外在收益,久而久之,绝大多数从业者会放弃为提升自己的业行而努力,一味追求外向效用,当今中国的“学术界”为此提供了极佳的脚注。
        • 这些考证对我们太过繁琐,但它们恰恰是专业里面的“知识增量”
        • 优秀的才德在很大程度上是通过一个特定的业行展现出来的,从业者是否优秀在很大程度上要由业内人来评价。
      • §9 学医是为了悬壶济世吗?

        • 我们可以把人生的一些部分抽离出来用别的方法看待和操作,但不能本末倒置,把认识单一地看成是某种东西或者类比

          人生不是股票市场,可以站在它外面来权衡得失。

        • 我们并不是先有个与自己的现实无关的理想,然后面对一个与理想无关的现实,我们生长在相当具体的现实里,理想一开始就是在这个现实里呈现的。

        • 学医行医的漫长岁月里,我们多半时候想的不是怎么悬壶济世,而是学习枯燥的生化学,记住成百上千种药物的名称和成分,一遍一遍重复这种那种操作程序。但也正是这些本领和操作在治病救人,而不是你悬壶济世的理想。

        • 你一开始怀抱的那个理想本来只是个抽象的理想,只要去做事

        • 待到你学会了把事情做成的时候,你的理想,连同你自己,无可逃避地被改变了。

        • 这个问题,主要不是选择人生道路的问题,不是选对或选错人生道路的问题,而是行路的问题

        • 才能、感受力、际遇,会把同样的动机引向很不一样的道路。

      • §10 实践传统的式微
        • 传统的约束力是最为强大的,彼甚至似乎只为个人的创造留下一个非常微不足道的余地
        • 因为意义不是想出来的,不是论证出来的,而是被感受到的,通过生存和劳作的直接性感受到。
        • “生活的意义”渐渐成为一件主观的事情,而一旦意义成了主观的事情,就等于没有意义了。
    • 第五章 知行关系

      • §1 知行合一

        • 知行关系是伦理学的核心内容之一。
        • 知之匪艰行之维艰
        • 万事皆在穷理后,经不正,理不明,看他如何履践?也只是空!
        • 知而不能行,只是知得浅
        • 未有知而不行者,知而不行只是未知。
        • 知者行之始,行者知之成。
        • 知行合一说的是知行原本就是一事;
      • §2 贺麟论知行合一

        • 如果知行实际上必然是一回事,知行合一之说就失去了任何道德含义。
        • 知行关系中的知,指的是明理,知道处世的道理,而贺麟这里所讲的主要是对某种事境的感知。
        • 知是永远的目的,但如果做不到,那便是没有做到知,所以知行才能合一。

          等你做了几番,自己就能悟出其中的一些道理,教练再讲这样做的道理时,你也比较容易领会。贺麟尝试把道德问题“与行为相关的知识,与善相关的真”连在一起来探讨知行关系,的确是一次可贵的努力,但他后面的分析完全偏离了知行关系的一般论旨,结果却不能让人满意。贺麟所要论证的是知行合一,只不过“先根据常识或为方便起见将知行分为两事”,但细察他的具体阐论,他始终是把知行视作两事,而且在这两者之中,“‘知’永远是目的”。例如,他从因果来看待知行,而这个因果,显然不是必然的因果,若知必然导致行,就谈不上努力“使知行合一,求两事兼有”

      • §4 深知而与行合一

        • 知 分为见闻之知和体会之知。

          人生的道理,我们听说了,也知道了,但可能没有什么体会——这一点人们常常说到。生离死别这话,小学生当作一个新成语学来,朗朗念得起劲,直到他长大,恋人离他而去,直到他的父亲离世,他才深有感悟深有体会地知道。先前的知和后来的知,不在一个知是对的一个知是错的,而在知的深度不同。

        • 我知道什么是对的,但我就是不去做,不是因为太难了(闻香识女人),而是因为我不够知道,我的知道之前停留在见闻而不是深切到体会。

          第一节还说到,朱熹多半持知先行后的常识看法,但有时又在主张知行合一甚至行先知后。这些语录看似互相矛盾,其实关键也在浅知深知之别,不行只是不知或不切知——“只争个知与不知,争个知得切与不切。如人要做好事,到得见不好事,也似乎可做。方要做好事,又似乎有个做不好事的心,从后面牵转去。这只是知不切”。知得切了,自是事父不得不孝,交朋友不得不信。就公共知识系统来说知,惟当一个片断通过可推导关系契合于这个系统,才算正确的知。说到实践之知,则惟当一个道理深深契入行动者的身心,才算真知。

        • 知行两分与知行合一的区别不在于一个是表面上的,一个是实际上的,而在于在某一个维度上,知行合一体现了对知行的深层理解

        • 知行合一也不是脱离了实际理解的道德劝诫

        • 伦理学不是修身书,不是“专为下愚立法”,把一套自认为正确的规范罗列出来要人遵循,而是始终致力于贯通实然与应然,在我们的既有理解之中挖掘更深层次的理解。

        • 它们意在打断我们的流俗思路,启发我们更深入一层去思考知行关系。

      • §5 心理与心性

        • 我们看来可以对人类行为提供两种解释,一种常情常理的解释,一种是“大脑神经中的生理活动”类型的生理—心理因果解释。
      • §7 “理论指导实践”

        • 理论可以指导制作,却没有理论指导实践这回事。
        • 指望伦理学来指导伦理生活,指望“道德哲学”来提高“道德水平”,这些都是错误的想法,因为“理论”做不到这一点而责备它无能则是错置的责备。
      • §8 示范

        • 热爱民主制和民主文化的朋友,多半不是因为比较了各种政治制度理论之后挑选了民主制度,而是直接受到良好民主国家的吸引

        • 唏嘘,到处都在说这个

          在权力的指挥棒下,“学术成果”仍在一批批生产出来,学术人却渐失对学术的热情和敬畏。

        • 在权力的指挥棒下,“学术成果”仍在一批批生产出来,学术人却渐失对学术的热情和敬畏。

        • 臣服于权力完全意在取效,如果不服从权力也能获得同样的收益,没有人愿意服从权力。而我们服从权威,缘于我们对一个业行的热情,缘于我们想要在这个业行中做得优秀的荣誉感。

        • 一个人的权力来自他在制度中所处的位置,而威望则来自他的成就

        • 威望在威望者身上,权力则在权力者所占的位置上。威望者凝聚传统,保障传统的自主性,而权力则瓦解传统。

    • 第六章 快乐、幸福、良好生活

      • §1 快乐是不是好的

        • 我们说快乐是主要的善,并不指肉体享受的快乐;使生活愉快的乃是清醒的静观。

        • 没错,这是我对活着就是要开心的主要论证的想法!!

          常见的论证套路是:声色犬马之乐虽然乐于一时,却不能长久快乐。我们是有远见的动物,不能只看眼下是苦是乐,快乐不快乐还须从长计议。

        • 我们规劝当下只顾玩乐,不能只谈论输赢这种功效,也要去谈论未来的快乐

          我们一般只谈论未来的赢利亏损,很少会谈论“未来的快乐”。

      • §2 目的与欲望

        • 我们有时被目的领着走,更多的时候被欲望推着走。还有的时候,我们被欲望搅得晕头转向,转来转去,生活失去了目的。
      • §3 快乐内融在活动中

        • 要正确领会这些道理并不容易;尤其当我们要构建自己心爱的理论,更可能有意无意间乐于被字词释义误导。
        • 欲望得到了满足,我们会快乐,但我们本来是被欲望驱动去满足它,而不是追求欲望满足后的快乐。快乐主义这种初级反思把快乐当成了行为的结果,再进一步当成了生活的目的,由此产生了不少似是而非的议论。
        • 一般说来,所做的事情是核心,而快乐,如亚里士多德早就指出,“像是一种伴随物”。
        • 我们做所乐为之事,快乐融嵌在行为中。快乐可能完全融化在行为里,乃至除了行为,情绪是否快乐全无所谓。为了区别于情绪上的快乐,我曾把这种融化在所事之中的快乐称作“志意之乐”。
        • 快乐作为一种情绪有来有去,笑容时间长了会僵在脸上,志意之乐却是长久的——并非我们会在这里找到一种持久的情绪,孔子也会生气、发火、哀叹,但孔颜之乐根本不是一种情绪,而是志意之乐。
        • 志意之乐是健康向上的快乐,有别于溺欲之乐
        • 快乐伴随或内嵌在活动中,这样想来,快乐是不是好的,要看与该快乐联系在一起的活动好不好,高尚活动带来的快乐是好的,可鄙活动带来的快乐是坏的。
        • 亚里士多德多次说:没有活动,快乐就不能生成,但唯有快乐才能使每一种活动变得完满。
      • §4 求乐

        • “快乐的行为”,所为之事是核心,快乐内融在行为中,“追求快乐的行为”,快乐成为目的,其他种种,都是求乐的手段。
        • 如果我们的生活变得那么不健康,整日苦苦营生挣钱,恭迎上级检查工作,算计别人压抑自己,不再能从日常活动中得到一点儿快乐,那谁都会忍不住高喊一句:我们要为快乐生活!
      • §5 苦乐交织与以苦为乐

        • 苦提升了乐的品质。大快乐是经历了痛苦的快乐,被苦难提升了的快乐。带苦的快乐实际上差不多是高等级快乐的一个标志。
        • 细计较起来,让人英雄的不是苦难,而是对苦难的担当,是战胜苦难,是虽经了苦难仍腰杆挺直,甚至乐在其中
      • §7 幸福

        • 快乐、幸福、良好生活,这三者相互联系,但不尽相同。
        • 我们倒是体会得到一种需求:被需求的需求。我有时甚至会想,这是人最大的需求。
        • 其实,你总是被需要的。孩子需要你,只要你肯带他上公园,老人需要你,只要你肯听他唠叨唠叨。怕只怕你自己的需要太多,要钱,要享乐,要脸面,要人尊重你,不再有时间有心境让人需要你。
      • §8 自我实现

        • 温饱之后,物质条件对幸福的边际效用迅速降低,幸福主要不靠吃得更多或穿得更厚。

        • 真说起来,倒不是小康本身让人幸福,而是小康给了我们为事的自由,自由地做这做那,尤其是做点儿于己快乐、于人有益的事儿——这让人幸福。

        • 生活旨趣不是刻板的规划,它不仅体现在丰富的旨趣中,而且点点滴滴的旨趣也在不断重塑着生活旨趣。

        • 笑死!太拥挤了,似乎到自我实现这一层的人就是完美人类了。依然是一个在满足欲望追求快乐行为的人。

          马斯洛列举“自我实现者”的一些特点,例如独立自主、坦率自然、博大宽宥,生机饱满而富有创造力,还有其他等等,这些特点固然都是好品质好性情,但堆到一个人身上,显得有点儿拥挤。

        • 拒绝标准化自我实现,每个人有一个有个性的小目标就足够了

          简言之,说到自我实现,本来应该是形形色色的人去实现其形形色色的自我,而在马斯洛那里,实现自我更像有个标准流程。

        • 简言之,说到自我实现,本来应该是形形色色的人去实现其形形色色的自我,而在马斯洛那里,实现自我更像有个标准流程。

      • §9 良好生活

        • 有所作为跟成功学没多大关系。今人把有所成就的人统称为“成功人士”,实则,成功人士和不成功人士一样,有的过着良好生活,有的品格低下、灵魂干瘪。
        • 我只敢说,不管好坏,你生存的社会就是这个样子,你要是有心好好生活下去,就得在这个社会现实里建设你自己的良好生活——毫无疑问,这种建设包括批判与改造。
        • 但也只有在偶然、不公和悖谬的世界里,才谈得上品性。如果一份品性定可换来这个世界的一份福报,那拥有品性就太合算了——你既得了品性又得了世俗好处,得了个双份。
        • 良好生活的提法,着眼于不那么极端的人物,不那么极端的处境。在极端的环境里,良好生活这个概念会失效,
        • 确实,都是俗人,我只是想应有些许特殊性,过上一个有点点特别的良好生活。

          我们还想在最通俗的意义上过上好日子

    • 第七章 性善与向善

      • §1 善(好)这个词

        • 惟由于我们能把善好与我喜欢区分开来,才可能发展出教化。
      • §2 孟子的性善论

        • 性善论有两个主要的困难。其一,人性中或许有善,但人性中似乎也有恶。其二,性善论怎么解释恶的起源?
        • 性不是固有的乃至已经完成的东西,而是苗端,这是一个重要的思想。
        • “所谓恶,就是生命缺乏时候,即吾人偷懒的时候发出来的。”以这种方式坚持性善论,同时也就说明了恶的性质:恶是善的阙失。
      • §4 性有善有恶论与性无善无恶论

        • 人之性也,善恶混。修其善则为善人,修其恶则为恶人。
      • §5 善“不与恶做对”

        • 这本书到目前为止给我最大的感触就是,人的思维无法跳脱语言的划定的界线,当我们谈论物质时,语言是准确的;但我们谈论思想时,思想大概是能超脱于语言的,但又受限于语言的表达。即使是我们在思考时,颅内也是在使用语言行进这件事情,依然会受制于语言的表达。很多哲学家、心理学家在行文中会反复推敲词语的语意和边界,像这一章的善恶、真假,上一章的好坏,应该是为了能够在语言的限制界限内在最大程度上准确地传递出思想。

          这些反义词在一个意义上是相对的、对称的,但在另一个意义上却不是。

        • 这些反义词在一个意义上是相对的、对称的,但在另一个意义上却不是。

        • 真品独立于摹本存在,摹本却不独立于真品——非得先有真品,才能有摹本。真币与假币亦如是,真假一般也大致如是。

        • 无须什么眼光,我们人人都能看到善恶相对,但须有相当眼力,才能洞见善恶的不对称

        • 惟当人求善,生活才是可理解的,有意义的。

        • 性不是固有不变的东西,而是在不断自我完成的过程中所成就者。崩解、堕落、下流谈不上完成,惟登临可谓完成。

      • §6 成心输棋与有意为恶

        • 惟当你能赢下这局棋,才谈得上你把它成心输掉。
        • 诚心失败的心态会有一种优越感:我只是没去做,我去做一定能做好。

          “成心选择失败”还可以隐约带来一种优越感。

      • §8 德性与本能

        • 为了避免混淆,我们最好把这些最初习而后得、日后得心应手极为娴熟的活动称为习性而不称之为本能——即使称之为“获得性本能”
      • §9 “道德考量”

        • 他们德性不同使他们的考虑不同,而不是他们的考虑造就了他们的不同德性
        • 人们各自出于其性向做出不同的举动。而我们依乎本性去考虑事情,颇近乎我们依乎本性去行事。
      • §10 向善与虚伪

        • 虚伪的吝啬鬼是在保护吝啬,以便自己始终是个吝啬鬼。

        • 逐渐意识到于我而言可能23岁之前的人生不过是学习基础知识和如何获取工作所需的技能,人生真正的成长是从这之后开始的,并且永无止尽。

          思想深刻的人当然一般地思想深刻,但每次遇上新问题,他仍然需要认真思考才能思考得深刻。我们一直达不到自我与有德的完全融合,由此我们可以说,人的一生是不断学习成长的过程。

        • 思想深刻的人当然一般地思想深刻,但每次遇上新问题,他仍然需要认真思考才能思考得深刻。我们一直达不到自我与有德的完全融合,由此我们可以说,人的一生是不断学习成长的过程。

        • 向善者不只是把各种道德律令刻录到自己身上,他要在伦理层面上过上一种整体的生活。惟为事能执之一贯,才算有性格。惟把种种本能、感觉、欲望加以协调,才称得上本性。真性情人不是朝三暮四之人,率性不是颠三倒四。那些或善或恶的本能不是这里所论的性,性贯穿在一生的努力之中——继之者善也,成之者性也。这种一贯性是性的深义,连系着始与终。无论向善索求多少努力和修为,索求多少改变,万变不离其本。

    • 第八章个殊者与普遍性

      • §1 不同的立身之本
        • 人权是一种价值,但那是西方价值,朝鲜人就不把那视作价值,或者——在现实中有时与上面这个说法没多大差别——西方有西方的人权观,朝鲜有朝鲜的人权观。
      • §2 相对主义

        • 相对主义的一种经典表述是:不存在绝对真理;那么,不存在绝对真理这个命题本身是不是绝对真理?这一问似乎显出相对主义是自相矛盾或自我驳斥的

        • 这一段辩驳真的很牛,文化冲突三观冲突落到尘埃一样的个体身上,是一种必然、不可避免的事情,

          不论无差别境界是多么高妙的境界,我们俗人到不了那儿。你真的对那个强奸者和那个舍身保护幼女者同样说是的好的?实际上,你对救人者和害人者都说好的好的,你就什么都没说。你既赞成自由政体也赞成专制政体,你就没有赞成什么。

        • 弱国无外交,甚至弱国无文化。

          中国文化明显比布隆迪文化优越。中国积弱时,文化无优劣,中国貌似成为强国了,中国文化就有了优越性,甚至有了可以为全世界都接纳的普遍性。

        • 中国文化明显比布隆迪文化优越。中国积弱时,文化无优劣,中国貌似成为强国了,中国文化就有了优越性,甚至有了可以为全世界都接纳的普遍性。

      • §4 汉斯·昆的“真正的宗教”
        • 这种开明态度反过来带来一个疑问:“如果在教会和基督教之外已经存在着拯救,那教会和基督教还有什么必要存在?”
        • 普遍性高于特殊性,特殊性实现普遍性
        • 如果存在着最高的也是最普遍的一层,普遍人性的伦理标准,我何不直接依这些标准行事,却要假道基督教或其他任何特殊的标准?
      • §5 家族相似与重叠共识
        • 基督教、佛教、青阳教都叫做宗教
      • §6 环境之为内在制约
        • 个殊者是一切伦理生活和伦理思考的出发点与归宿。然而,个殊者从来不是剥离了普遍性的存在。
      • §7 普遍与会通
        • 哲学的努力本在于:把陌生领域的真理——它们来自遥远的时代、边缘文化、物理学或者心理学——翻译成我们的母语,从而我们能够感知这些真理的意义。
        • 我们平常探讨民主制有没有普遍性,探讨的是它能不能有效地从一种历史—社会环境翻译到另一种历史—社会环境中来,而不是通过不断向更高层次抽象来达到普遍性。
      • §8 个殊者实现自身

        • 伦理学的宗旨不是找到或发明一种最高的价值,功效、义务、自由、爱情或什么,把其他价值加以统摄,使所有价值在这个理论体系中各安其位,其乐融融。这类理论都是纸上谈兵。

        • 惟具体和特定才使学习成为可能——学习是从典范学习,而不是掌握一种本质的东西,把它应用到自己身上。

        • 我向一个优秀的人学习,本来不是想要变成这个人,甚至,弟子不必不如师。

        • 没有一条放之四海而皆准的人生伦理路径,每个人都是个殊体,我们会向别人学习,但不会想成为别人。

          早有智者指出,关于生活的事,没有人愿被说服,而且我们还恨那些说服了我们的人。

        • 早有智者指出,关于生活的事,没有人愿被说服,而且我们还恨那些说服了我们的人。

        • 朋友间互相影响、批评、砥砺,这些,使得各自不断加深自我理解,加深对他者的支持,从而在自己的生活旨趣中变得更加优秀、更加深厚。个殊性不是普遍性的实现,个殊者通过互相理解和互相支持实现自身。

        • 始终为自己而活,不要为了满足别人满足社会满足到的的期待而活。

          无论取何种生活,包括信奉基督,信佛,都不能让我们免于批评。批评不仅来自外部,而且也来自内部。

        • 无论取何种生活,包括信奉基督,信佛,都不能让我们免于批评。批评不仅来自外部,而且也来自内部。

        • 我们只能以一种特殊的方式得到救赎。有人由基督教的上帝救赎,有人由华夏文明救赎。有谁竟由普世宗教或普适伦理救赎,那仍然是一种特定的救赎,而不是更高的救赎。

  • 置身事内:中国政府与经济发展 笔记

    总结

    这本书讲述的东西真的非常之多,中国部分的经济发展史,政府的特色模式,政府与经济过去的关系,现在的问题和难题。

    作者摒弃传统的经济学框架,认为用一套放诸四海皆准的框架是不能应用在特定场景去想办法解决问题的,尤其在经济学家理解最透、共识最大的问题上,他们对政策的影响力最小;在经济学家理解最浅、分歧最大的问题上,他们对政策的影响力最大。

    涉及到的问题从土地、到税改、到城市化、到债务危机、到发展失衡、到国际竞争、到内外失衡。

    前面说的很多一方面是科普,另外一方面也是铺垫,但我觉得整本书最主要的观点是,

    在过去政府重生产、重投资,相对轻民生、轻消费的模式下,中国经济发展迅速,成为了世界工厂,我们的产品有竞争力,同时也动到了许多外国势力的蛋糕,又因为外部局势无法完全掌控,接下来要继续发展,就要“逐步形成以国内大循环为主体、国内国际双循环相互促进的新发展格局”。

    而形成这个格局的核心在于人,“以人为本”是经济和政策需要偏向的方向。

    还有一个印象深刻的,集中力量办大事,对于特定行业的政策补贴,这些都不是中国特色,是全球都有的。中国特色在哪呢?是“地方分权竞争+中央协调”与“官场+商场”的模式属于中国特色…

    整本书介绍到的观点和政策真的非常多,很难全部简短的复述出来。

    十分推荐这本书!通俗易懂地同时对问题的分析也足够深入,真的很适合中国人读!

    读书笔记

    ◆ 献言

    社会进程本是整体,密不可分。所谓经济,不过是研究者从这洪流中人工提炼出的部分事实。何谓经济,本身已然是种抽象,而之后大脑还须经过若干抽象,方能复刻现实。没有什么事是纯粹经济的,其他维度永远存在,且往往更为重要。

    一套严格的概念框架无疑有助于厘清问题,但也经常让人错把问题当成答案。社会科学总渴望发现一套“放之四海而皆准”的方法和规律,但这种心态需要成熟起来。不要低估经济现实的复杂性,也不要高估科学工具的质量。

    ◆ 前言 从了解现状开始

    在我国,政府不但影响“蛋糕”的分配,也参与“蛋糕”的生产,所以我们不可能脱离政府谈经济。

    要避免把舶来的理论化成先入为主的判断

    我国的政治经济现象非常复杂,不同的理论和信息都只能反映现象的不同侧面,至于哪个侧面有用,由读者决定。

    ◆ 第一章 地方政府的权力与事务

    要理解政府治理和运作的模式,首先要了解权力和资源在政府体系中的分布规则,既包括上下级政府间的纵向分布,也包括同级政府间的横向分布。

    了解招商引资,是理解地方政府深度融入经济发展过程的起点。

    ◆ 第一节 政府治理的特点

    一方面,维持大一统的国家必然要求维护中央权威和统一领导;另一方面,中国之大又决定了政治体系的日常运作要以地方政府为主。

    简单说来,党负责重大决策和人事任免,政府负责执行,但二者在组织上紧密交织、人员上高度重叠,很难严格区分。

    我国政治体系的一个鲜明特点是“层层复制”:中央的主要政治架构,即党委、政府、人大、政协等,省、市、县三级都完全复制,即所谓“四套班子”。

    在复杂的行政体系中,权力高度分散在各部门,往往没有清晰的法律界限,所以一旦涉及跨部门或跨地区事务,办起来就比较复杂,常常理不清头绪,甚至面对相互矛盾的信息。

    制度设计的一大任务就是要避免把过多决策推给上级,减轻上级负担,提高决策效率

    同样的制度在不同的人手里会因为文化的差异,历史阶段的不同,社会现状和意识形态的不同,以及人本身的人性的不同而产生巨大的蝴蝶效应

    所有规章制度都必须由人来执行和运作。同样的制度在不同的人手中,效果可能完全不同,所以无论是国家还是公司,人事制度都是组织机构的核心。

    科举选拔出的官僚,既为政治领导,也为道德表率,不仅是政治体制的核心,也是维护国家和社会统一的文化与意识形态载体。

    在任何体制下,权力运作都受到两种约束:做事的能力及做事的意愿。前者取决于掌握的资源,后者取决于各方的积极性和主动性。

    ◆ 第二节 外部性与规模经济

    一件事情该不该由地方自主决定,可以从外部性的角度来考虑。若此事只影响本地,没有外部性,就该由本地全权处理;若还影响其他地方,那上级就该出面协调。

    因此行政区域大小应该跟政策影响范围一致。若因行政区域太小而导致影响外溢、需要上级协调的事情过多,本级政府也就失去了存在的意义。反过来讲,行政区划也限定了地方可调配的资源,限制了其政策的影响范围。

    第一个重要因素是人口密度。

    第二个重要因素是地理条件。

    第三个重要因素是语言文化差异。

    世界范围内,一国若地形或适耕土地分布变异大,人口分布就比较分散,国内的语言变异往往也就更丰富。

    浙江以吴语方言复杂多变闻名,而吴语方言的分布与省内地市的划分高度重合:台州属于吴语台州片,温州属于瓯江片,金华则属于婺州片。同一市内,语言文化分布也会影响到区县划分。杭州下辖的淳安和建德两县,属于皖南的徽文化和徽语区,而其他县及杭州市区,则属于吴语区的太湖片。

    把各个地方的人都写作中国人,把所有地区文化的故事都写进一个大的故事里,保留差异提取共同点,将我的祖先变成我们的祖先,这样打破文化壁垒,实现意识形态下的大一统。

    理解了方言和文化的多样性,也就理解了推广普通话和共同的文化历史教育对维护国家统一的重要性。

    我国经济中有个现象:处在行政交界(尤其是省交界处)的地区,经济发展普遍比较落后。

    反过来看,各级政府的权力都是由上级赋予的,而下放哪些权力也和外部性有关。

    在市管县体制下,随着城市化的发展,以工业和服务业为经济支柱的市区和以农业为主的县城之间,对公共服务需求的差别会越来越大。调和不同需求、利用好有限的公共资源,就成了一大难题。

    ◆ 第三节 复杂信息

    比如上级视察工作,都要听取下级汇报,内容是否可靠,上级不见得知道。如果上级没有独立的信息来源,就可能被下级牵着鼻子走。

    所以上级虽然名义上有最终决定权,拥有“形式权威”,但由于信息复杂、不易处理,下级实际上自主性很大,拥有“实际权威”。

    信息复杂性和权力分配是个普遍性的问题,不是中国特色。在各国政府中,资深技术官僚都有信息优势,在诸多事务上比频繁更换的领导实权更大。

    所谓权力,实质就是在说不清楚的情况下由谁来拍板决策的问题。

    ◆ 第四节 激励相容

    事权划分的三大原则:公共服务的规模经济、信息复杂性、激励相容。

    ◆ 第五节 招商引资

    很多地方政府都采用“全民招商”策略,即几乎所有部门(包括教育和卫生部门)都要熟悉本地招商政策,要在工作和社交中注意招商机会。

    地方政府是城市土地的所有者,为了招商引资发展经济,会把工业用地以非常优惠的价格转让给企业使用,并负责对土地进行一系列初期开发,比如“七通一平”(通电、通路、通暖、通气、给水、排水、通信,以及平整场地)。

    创造就业是地方经济工作的重点,也是维护社会稳定不可或缺的条件。

    总的来说,对企业至关重要的生产要素,地方政府几乎都有很强的干预能力。其中土地直接归政府所有,资金则大多来自国有银行主导的金融体系和政府控制的其他渠道,比如国有投融资平台。对于劳动力,政府控制着户口,也掌握着教育和医疗等基本服务的供给,还掌握着土地供应,直接影响住房分配。而生产中的科技投入,也有相当大一部分来自公立大学和科研院所。除此之外,地方政府还有财税政策、产业政策、进出口政策等工具,都可能对企业产生重大影响。

    ◆ 结语

    本章讨论了事权划分的三种理论:公共服务的规模经济与边界、信息复杂性、激励相容。

    地方政府不止提供公共服务,也深度参与生产和分配。

    不能脱离政府来谈经济,是理解中国经济的基本出发点。

    ◆ 扩展阅读

    有一种情况例外,即一些重要地区的书记也是上级党委常委,如省会城市的书记也是省委常委。

    斯坦福大学政治学教授福山在其著作(2014)中阐述了现代政治秩序的三大基石:政府、法治、民主。其中的“政府”,也就是脱离血缘关系、由专门人才主导的管理机构,起源于中国。

    具有统一意识形态的官僚和儒生,是该结构日常运作的关键,也是在结构破裂和王朝崩溃之后修复机制的关键。世界历史上,王朝崩溃并不罕见,但只有中国能在崩溃后不断修复和延续,历经千年。

    2020年,受新冠肺炎疫情影响,国务院没有设定GDP增长目标,属20余年来首次。

    除环保之外,其他领域内也有类似冲突:上级重视质量而下级重视成本,下级为了降低成本会不惜损害质量。这种冲突并不总是因为双方信息不对称。即便没有信息问题,也有能力问题。只要上级没有能力完全取代下级,这种冲突就可能会发生。此时放权会降低质量,收权又会降低工作效率,就需要妥协和平衡。

    ◆ 第二章 财税与政府行为

    要想把握政府的真实意图和动向,不能光读文件,还要看政府资金的流向和数量,所以财政从来不是一个纯粹的经济问题。

    财政是国家治理的基础和重要支柱,科学的财税体制是优化资源配置、维护市场统一、促进社会公平、实现国家长治久安的制度保障。

    ◆ 第一节 分税制改革

    如果中央没钱,甚至要向地方借钱,那也就谈不上宏观调控的能力。

    这个做法一方面可以平衡地方短期的抗拒,另一方面也相信经济增长在未来能够迅速填补现在的数额

    为防止地方收入急剧下跌,中央设立了“税收返还”机制:保证改革后地方增值税收入与改革前一样,新增部分才和中央分。

    因为只有朱总理去才能够和第一把手省委书记、省长面对面地交谈,交换意见。有的时候,书记、省长都拿不了主意的,后面还有很多老同志、老省长、老省委书记啊。如果是我们去,可能连面都见不上。

    广东当年提的要求中有一条,“以1993年为基数”。这条看似不起眼,实则大有文章。地方能从“税收返还”中收到多少钱,取决于它在“基年”的增值税收入,所以这个“基年”究竟应该是哪一年,差别很大。中央与广东的谈判是在1993年9月,所以财政部很自然地想把“基年”定为1992年。时光不能倒流,地方做不了假。可一旦把“基年”定在1993年,那到年底还有三个多月,地方可能突击收税,甚至把明年的税都挪到今年来收,大大抬高税收基数,以增加未来的税收返还。

    当2001年推行所得税分成改革时,突击征税现象再次出现。

    分税制是20世纪90年代推行的根本性改革之一,也是最为成功的改革之一。改革扭转了“两个比重”不断下滑的趋势(图2-2):中央占全国预算收入的比重从改革前的22%一跃变成55%,并长期稳定在这一水平;国家预算收入占GDP的比重也从改革前的11%逐渐增加到了20%以上。

    ◆ 第二节 土地财政

    因为绝大多数税收征收自企业,且多在生产环节征收,所以地方政府重视企业而相对轻视民生,重视生产而相对轻视消费。

    我国实行土地公有制,城市土地归国家所有,农村土地归集体所有。农地要转为建设用地,必须先经过征地变成国有土地,然后才可以用于发展工商业或建造住宅

    为什么会有这种城乡割裂的土地制度?追根溯源,其实也没有什么惊天动地的大道理和顶层设计,不过是从1982年宪法开始一步步演变成今天这样罢了。(18)虽说每一步变化都有道理,针对的都是当时亟待解决的问题,但演变到今天,已经造成了巨大的城乡差别、飞涨的城市房价以及各种棘手问题。

    土地的资本化运作,本质是把未来的收益抵押到今天去借钱,如果借来的钱投资质量很高,转化成了有价值的资产和未来更高的收入,那债务就不是大问题。

    功是留在当代了,利是不是有千秋,就是下任领导的事了。

    最近几年实施了一系列财政和金融改革,实际上已经遏制住了债务的迅猛增长。但经济增速随之放缓,说明资源的使用效率仍然不高。

    ◆ 第三节 纵向不平衡与横向不平衡

    分税制改革之后,中央拿走了收入的大头,但事情还是要地方办,所以支出的大头仍留在地方,地方收支差距由中央转移支付来填补。

    浙江省市县拉到同级管理对经济发展的效果很好,但是放在全国就把很多县和市的合作关系为主改成了竞争关系为主,滋生了腐败同时增加了孤岛小城,市和县的关系可能要因省制宜,这大概就是中国特色的一个写照

    总体来看,分税制改革后,基层财政出现了不少困难,引发了一系列后续改革,最终涉及了财税体制的层级问题。

    1995年至2018年,转移支付总额从665亿元增加到了61649亿元,增加了93倍,远高于地方财政收入的增长率,占GDP的比重也从1%升至7%。(32)80%以上的转移支付都到了中西部地区,这保障了地区间人均财政支出的均等化。

    经济情况越好、财力越雄厚的地区,反而可能拿到更多的专项转移支付项目,原因有三。第一,上级分配项目时一般不会“撒胡椒面儿”,而是倾向于集中财力投资大项目,并且交给有能力和条件的地区来做,所谓“突出重点,择优支持”。第二,2015年之前,许多项目都要求地方政府提供配套资金,只有有能力配套的地方才有能力承接大项目,拿到更多转移支付。(37)第三,项目审批过程中人情关系在所难免。很多专项资金是由财政部先拨款给各部委后再层层下拨,所以就有了“跑部钱进”的现象,而经济发达地区往往与中央部委的关系也更好。

    ◆ 结语

    所以土地真正的力量还不在“土地财政”,而在以土地为抵押而撬动的银行信贷与其他各路资金。“土地财政”一旦嫁接了资本市场,加上了杠杆,就成了“土地金融”,能像滚雪球般越滚越大,推动经济飞速扩张,也造就了地方政府越滚越多的债务,引发了一系列宏观经济问题。

    ◆ 扩展阅读

    央地之间囚徒困境式的博弈:地方政府预料到中央在重新谈判中可能“鞭打快牛”,所以不愿意努力征税。这个理论只是猜测,很难验证。

    ◆ 第三章 政府投融资与债务

    再穷的国家也有大片土地,土地本身并不值钱,值钱的是土地之上的经济活动。

    土地资本化的魔力,在于可以挣脱物理属性,在抽象的意义上交易承诺和希望,将过去的储蓄、现在的收入、未来的前途,统统汇聚和封存在一小片土地上,使其价值暴增。

    ◆ 第一节 城投公司与土地金融

    我国政府不但拥有城市土地,也掌控着金融系统,自然会以各种方式参与实业投资,不可能置身事外。

    融资平台公司投资的大多数项目都有基础设施属性,项目本身盈利能力不强,否则也就无需政府来做了。

    一块划出来的“生地”,平整清理后才能成为向市场供应的“熟地”,这个过程称为“土地一级开发”。“一级开发”投入大、利润低,且涉及拆迁等复杂问题,一般由政府融资平台公司完成。之后的建设和运营称为“二级开发”,大都由房地产公司来做。

    这种模式叫“政府和社会资本合作”(Public-Private Partnership, PPP),源于海外,不是中国的发明。如果非要说中国特色,可能有二。第一是项目多,规模大。

    现实世界中没有定义,只有现象,只有环环相扣的权责关系。

    ◆ 第二节 地方政府债务

    这就是土地金融给中国带来了过去二十年的繁荣,遗留给现在这一届政府和人民的问题…

    这套模式的关键是土地价格。只要不断地投资和建设能带来持续的经济增长,城市就会扩张,地价就会上涨,就可以偿还连本带利越滚越多的债务。可经济增速一旦放缓,地价下跌,土地出让收入减少,累积的债务就会成为沉重的负担,可能压垮融资平台甚至地方政府。

    要想在城市建设开发中引入银行资金,需要解决三个技术问题。第一,需要一个能借款的公司,因为政府不能直接从银行贷款;第二,城建开发项目繁复,包括自来水、道路、公园、防洪,等等,有的赚钱,有的赔钱,但缺了哪个都不行,所以不能以单个项目分头借款,最好捆绑在一起,以赚钱的项目带动不赚钱的项目;第三,仅靠财政预算收入不够还债,要能把跟土地有关的收益用起来。

    国开行是世界上最大的开发性银行,2018年资产规模超过16万亿元人民币,约为世界银行的5倍。

    2008年“4万亿”财政金融刺激之后,各种商业银行包括“工农中建”四大行和城市商业银行(以下简称“城商行”),才开始大规模贷款给城投公司。2010年,在地方融资平台公司的所有贷款中,国开行约2万亿元,四大行2万亿元,城商行2.2万亿元,其他股份制银行与农村合作金融机构合计1万亿元,城商行已经和国开行、四大行平起平坐。

    2017年,除了北京、上海、广东、福建、四川和安徽等六省市外,其他省份的融资平台公司的平均收入,若扣除政府补贴,都无法覆盖债务利息支出。

    在这时城投提高了整个贷款的阈值,其他的公司很难给这么高的利率同时还能够有这样低的风险,回看过去余额宝能有7%的利率,也是得益于由政府兜底的城投公司发行的债券吧。
    再看城投的发展,根源就还是地方政府卖地和引资推高了整个理财的利率。

    银行(既是贷款主体,也是城投债主要买家)当然乐于做大这个低风险高收益的业务,不愿意冒险借钱给其他企业,市场平均利率和融资成本也因此被推高。

    这种数量管制的好处是限额不能突破,是硬约束;坏处是比较僵硬,不够灵活。经济发达地区可能有更多更好的项目,但因为超过了限额而无法融资,而欠发达地区一些不怎么样的项目,却因为在限额之内就能借到钱

    ◆ 第三节 招商引资中的地方官员

    出于政绩考虑,地方官员在基础设施投资方面常常偏重“看得见”的工程建设,比如城市道路、桥梁、地铁、绿地等,相对忽视“看不见”的工程,比如地下管网。所以每逢暴雨,“看海”的城市就很多。

    因此绝大多数政府工作人员最在意的激励并不是晋升,而是实际收入以及一些工作福利,包括工资、奖金、补助、补贴、实惠的食堂、舒适的办公条件,等等。

    第一,腐败与经济高速增长长期并存。这与“腐败危害经济”这一过度简单化的主流观念冲突,以腐败为由唱空中国经济的预测屡屡落空。第二,随着改革的深入,政府和市场间关系在不断变化,腐败形式也在不断变化。

    20世纪80年代的腐败案件大多与价格双轨制下的“官倒”和各种“投机倒把”有关;90年代的案件则多与国企改革和国有资产流失有关;21世纪以来,与土地开发相关的案件成了主流。

    从长期来看,反腐败是国家治理能力建设的一部分,除了专门针对腐败的制度建设之外,更为根本的措施还是简政放权、转变政府角色。

    ◆ 结语

    可见政府债务问题根源不在收入不够,而在支出太多,因为承担了发展经济的任务,要扮演的角色太多。因此债务问题不是简单的预算“软约束”问题,也不是简单修改政府预算框架的问题,而是涉及政府角色的根本性问题。改革之道在于简政放权,从生产投资型政府向服务型政府逐步转型。

    ◆ 第四章 工业化中的政府角色

    这是中国特色的一部分,政府深度参与市场,市场并不是完全自由。

    现实世界没有黑白分明的“市场”和“政府”分界,只有利益关系环环相扣的各种组合。

    因此,讨论和分析政府干预和产业政策,不能脱离具体行业细节,否则易流于空泛。

    财务数据也无法捕捉大企业的关键特征:大企业不仅是技术的汇聚点和创新平台,也是行业标准的制定者和产业链核心,与政府关系历来深厚复杂,在资本主义世界也是如此。

    ◆ 第一节 京东方与政府投资

    大陆花了近20年才让彩电工业价值链的95%实现了本土化,但由于没跟上液晶显示的技术变迁,一夜之间价值链的80%又需要依赖进口。

    2008年的合肥,财政预算收入301亿元,归属地方的只有161亿元,想建一条投资175亿元的6代线,非常困难,经济和政治决策风险都很大。但当时的合肥亟待产业升级、提振经济发展,领导班子下了很大决心,甚至传说一度要停了地铁项目来建设这条6代线。

    企业之间,地方政府之间的竞争可见一斑,夏普多次阻挠京东方建厂,当真的建成,立马放开技术壁垒,在中国建厂:“在你京东方实现量产之前,我用已有的技术和工厂击垮你”
    如果京东方输了,同时输的还有合肥市政府和投了几十亿的社会投资渠道背后的人…
    在这样的背景下,南京,广州苏州依然为了地方政府的业绩和这些工厂签署和协议开厂的协议。

    接下来的一两个月内,坐不住的境外厂商开始迅速推进与大陆的实质性合作。夏普和南京的熊猫集团开始合资建线,LG和广州签约建设8代线,三星则和苏州签约建设7.5代线。

    若本国企业能以更低的价格生产(不一定非要有技术优势,能够拉低国际厂商的漫天要价也可以),政府就可以考虑扶持本国企业进入,这不仅能打破国际市场的扭曲和垄断,还可以降低国内下游产业的成本,促进其发展。

    中国加入WTO后,广东和江浙沪发展迅猛,而合肥、成都、武汉等内地中心城市则亟待产业转型,提振经济发展,这些城市为此愿意冒险,全力投资新兴产业。

    ◆ 第二节 光伏发展与政府补贴

    定向扶持行业也不完全是中国特色,有政治意图就会去补贴对应的行业。

    可以说我国光伏产业不仅是国内地方政府扶持出来的,也得益于德国、西班牙、意大利等国政府的“扶持”。

    不止是新能源,在任何对旧产业的革命中都是困难的,因为旧产业的规模效应早已作用在成本上,新兴产业起初在成本和产品上就很难和旧龙头抗衡,那哪个冤大头用户会用又贵又难用的东西呢。
    除了颠覆性的技术革新,那就得是政府给予政策和资金的倾斜来扶持。

    但新能源的技术升级和成本下降,只有在大规模的生产和市场应用中才能逐步发生,不可能只依靠实验室。实验技术再突破,若没有全产业链的工业化量产和技术创新,就不可能实现规模经济和成本下降。

    但新能源的技术升级和成本下降,只有在大规模的生产和市场应用中才能逐步发生,不可能只依靠实验室。实验技术再突破,若没有全产业链的工业化量产和技术创新,就不可能实现规模经济和成本下降。

    但企业不是“人”,不会在“死”后一了百了,积累的技术、人才、行业知识和经验,并不会随企业破产而消失。

    首先,当地工厂不仅提供了就业,也为当地农民转变为工人提供了学习场所和途径。“工业化”最核心的一环是把农民变成工人,这不仅仅是工作的转变,也是思想观念和生活习惯的彻底转变。

    所以不管有没有政府扶持,要害都不是“重复建设”,而是“保持竞争”。市场经济的根本优势不是决策优势。面对不可知的未来,谁也看不清,自由市场上,失败也比成功多得多。市场经济的根本优势是可以不断试错,在竞争中优胜劣汰。

    然而“破产难”一直是我国经济的顽疾。一方面,债权银行不愿走破产程序,因为会暴露不良贷款,无法再掩盖风险;另一方面,地方政府也不愿企业(尤其是大企业)走破产程序,否则职工安置和民间借贷等一系列矛盾会公开化。

    ◆ 第三节 政府产业引导基金

    前面还在想要是亏了怎么办,这里一语道破。很多政策补贴就是相当于直接财政亏损,而这里是有概率让国库挣钱的!

    因此至少从理论上说,与不用偿还的补贴相比,产业基金对被投企业有更强的约束。

    ◆ 第五章 城市化与不平衡

    所以土地的资本化,实质是个人收入的资本化。

    ◆ 第一节 房价与居民债务

    房地产常被称作“经济周期之母”,根源就在于其内在的供需矛盾:一方面,银行可以通过按揭创造几乎无限的新购买力;而另一方面,不可再生的城市土地供给却有限。这对矛盾常常会导致资产泡沫与破裂的周期循环,是金融和房地产不稳定的核心矛盾。

    中国人财富的压舱石是房子,美国人财富的压舱石是金融资产。这个重大差别可以帮助理解两国的一些基本政策,比如中国对房市的重视以及美国对股市的重视。

    一方面可能是所谓的消费下渗,另外一方面是不是也有一部分要归咎于高房价拉高了物价…

    在负债的人当中,低收入人群的债务负担尤其重。

    ◆ 第二节 不平衡与要素市场改革

    城区常住人口100万—300万的Ⅱ型大城市要全面取消落户限制;城区常住人口300万—500万的Ⅰ型大城市要全面放开放宽落户条件,并全面取消重点群体落户限制。超大特大城市要调整完善积分落户政策,大幅增加落户规模、精简积分项目,确保社保缴纳年限和居住年限分数占主要比例。

    城市化的核心不应该是土地,应该是人。要实现地区间人均收入均衡、缩小贫富差距,关键也在人。要真正帮助低收入群体,就要增加他们的流动性和选择权,帮他们离开穷地方,去往能为他的劳动提供更高报酬的地方,让他的人力资本更有价值。同时也要允许农民所拥有的土地流动,这些土地资产才会变得更有价值。

    ◆ 第三节 经济发展与贫富差距

    经济增长过程伴随着生产率的提高和各种新机会的不断涌现,虽然不一定会降低收入差距,但可以在一定程度上遏制贫富差距在代际间传递。如果每代人的收入都远远高于上一代人,那人们就会更看重自己的劳动收入,继承自父母的财富相对就不太重要。

    ◆ 第二节 债台为何高筑:欧美的教训

    债务源于人性:总想尽早满足欲望,又对未来盲目乐观,借钱时总觉得将来能还上。

    换句话说,美国银行业在用5块钱的本钱做着100块钱的生意,平均杠杆率达到了20倍。理论上只要亏5%,银行就蚀光了本。欧洲银行的杠杆率甚至更高,风险可想而知。

    ◆ 第三节 中国的债务与风险

    在购置土地环节,发达国家一般要求企业使用自有资本金,而我国允许房企借钱“买地”,这就刺激了房企竞相抬高地价和储备土地。

    ◆ 第四节 化解债务风险

    欧美日在2008年全球金融危机之后都搞了大规模“量化宽松”,都没有出现通货膨胀。

    1948年8月的物价是1946年初的558万倍。

    总的说来,我国的债务问题是以出口和投资驱动的经济体系的产物。

    ◆ 结语

    当重视投资,房产和生产却轻民生,会导致居民收入提升不足,进而消费不足。

    地方政府重视投资、生产和企业税收,相对忽视消费、民生和居民收入,造成经济结构失衡,分配体制偏向资本,劳动收入偏低,所以消费不足,必须向国外输出剩余产能。

    ◆ 第七章 国内国际失衡

    第一是内部经济结构失衡:重生产、重投资,相对轻民生、轻消费,导致与巨大的产能相比,国内消费不足,而消化不了的产品只能对外输出。这就带来了第二个问题:国外需求的不稳定和贸易冲突。

    ◆ 第一节 低消费与产能过剩

    目前主流的解释是计划生育、政府民生支出不足、房价上涨三者的共同作用。

    第三,劳动收入份额下降和资本收入份额上升,会扩大贫富差距。因为与劳动相比,资本掌握在少数人手中。贫富差距持续扩大会带来很多问题,社会对此的容忍度是有限的(第五章)。第四,由于消费不足和投资过剩,过剩产能必须向国外输出,而由于我国体量巨大,输出产能会加重全球贸易失衡,引发贸易冲突(见下节)。

    在这个大背景下,党的十九大报告将我国社会的主要矛盾修改为“人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾”。所谓“不平衡”,既包括城乡间和地区间不平衡以及贫富差距(第五章),也包括投资和消费等经济结构不平衡。而“不充分”的一个重要方面,就是指老百姓收入占比不高,“获得感”不够。

    简单的理解是不是企业挣钱了,但既不投资又不加工资,只是把钱留在账面上。
    进而结果导致居民收入份额下降。

    在国民收入分配中,居民收入份额的下降很大程度上对应着企业留存收入份额(即“企业储蓄”)的上升。

    在国民收入分配中,居民收入份额的下降很大程度上对应着企业留存收入份额(即“企业储蓄”)的上升。

    GDP由三大部分组成:消费、投资、净出口(出口减进口)。

    目前的发展受限于外部局势和内部转型,双重压力。
    外部局势无法完全掌控,我们的产品有竞争力,但是动到了许多人的蛋糕,而内部目前投资占比过大,重投资轻民生,导致过剩的生产力无法被内部消化,化解之法要么是缓解外部矛盾,要么是提高民生收入。

    一来外国需求受国外政治、经济变化影响很大,难以掌控;二来投资占比不可能一直保持在40%以上的高位。超出消费能力的投资会变成过剩产能,浪费严重。欧美发达国家投资占GDP的比重只有20%—23%。

    一来外国需求受国外政治、经济变化影响很大,难以掌控;二来投资占比不可能一直保持在40%以上的高位。超出消费能力的投资会变成过剩产能,浪费严重。欧美发达国家投资占GDP的比重只有20%—23%。

    虽然从会计核算角度讲,投资确实可以提升当下的GDP数字,但若投资形成的资产不能提高生产率、带来更高的收入,不能成为未来更高的消费,这种投资就没有形成实质性的财富,就是浪费。

    ◆ 第二节 中美贸易冲突

    先堆高基数,再追求高质量比率

    但在工业和科技领域,没有数量做基础,也就谈不上质量。

    ◆ 第三节 再平衡与国内大循环

    所谓“供给”和“需求”,不是两件不同的事,只是看待同一件事的不同角度。比如从供给角度看是调节产能,从需求角度看就是调整投资支出;从供给角度看是产业升级,从需求角度看也就是收入水平和消费结构的升级。

    所以解决就业和提高收入必须依靠服务业的大发展,而这只能发生在人口密集的城市中。

    ◆ 第八章 总结:政府与经济发展

    所以在经济学理论研究与现实应用之间,常常存在着鸿沟。

    在经济学家理解最透、共识最大的问题上,他们对政策的影响力最小;在经济学家理解最浅、分歧最大的问题上,他们对政策的影响力最大。

    现实世界中往往既没有皆大欢喜的改革,也没有一无是处的扭曲。得失利弊,各个不同。

    哈佛大学经济史家格申克龙的话:“一套严格的概念框架无疑有助于厘清问题,但也经常让人错把问题当成答案。社会科学总渴望发现一套‘放之四海而皆准’的方法和规律,但这种心态需要成熟起来。不要低估经济现实的复杂性,也不要高估科学工具的质量。”

    过去苏联式的计划经济有两大特征。第一是只有计划,否认市场和价格机制,也不允许其他非公有制成分存在。第二是封闭,很少参与国际贸易和全球化。如今这两个特点早已不复存在,硬谈中国为计划经济,离题万里。

    ◆ 第一节 地区间竞争

    想要提高效率,就得引入竞争,在学生层面,员工层面,公司层面,国家层面都是如此…

    经济发展的核心原则,就是优化资源配置,提高使用效率,尽量做到“人尽其才,物尽其用”。实现这一目标要依靠竞争。

    经济发展的核心原则,就是优化资源配置,提高使用效率,尽量做到“人尽其才,物尽其用”。实现这一目标要依靠竞争。

    中央的主要领导绝大多数也都曾做过多地的主官,也有丰富的经济工作经验。这对一个政府掌控大量资源调配的经济体系而言,不无益处。

    ◆ 第二节 政府的发展与转型

    经济富裕、社会安定、政府得力是国家繁荣的三大支柱,缺一不可。

    法律不是政府天生就有的,是逐步随着发展而完善的。

    随着经济和社会的发展,管制和法制之间的相对重要性也会不断发展变化。

    有为政府”和“有效市场”一样,都不是天然就存在的,需要不断建设和完善。

    这个是在市场力量不完善时,政府充当自由市场调配资源的一种方式。

    所谓“举国体制”也好,“集中力量办大事”也罢,在很多方面并不是中国特色。

    本书阐述的“地方分权竞争+中央协调”或“官场+市场”的模式,属于中国特色。

    ◆ 第三节 发展目标与发展过程

    对发展中国家来说,提高生产率的关键不是探索未知和创新,而是学习已知的技术和管理模式,将更多资源尽快组织和投入到学习过程中,以提高学习效率。

    本书一直强调发展过程与发展目标不同。照搬发达国家的经验,解决不了我们发展中所面临的很多问题。但我们自己走过的路和过去的成功经验,也不一定就适用于未来,所以本书不仅介绍了过往模式的成就,也花了大量篇幅来介绍隐忧和改革。

    本书阐述的我国政治经济体制,有三大必要组件:掌握大量资源并可以自主行动的地方政府,协调和控制能力强的中央政府,以及人力资本雄厚和组织完善的官僚体系。这三大“制度禀赋”源自我国特殊的历史,不是每个国家都有的。

    刮骨疗毒的改革总是阻力重重,除了目标,一定要考虑到实际情况,所以并不是存在中国特色,而是本身就没有放诸四海而皆准的政策,而是制定者要考虑本地的特殊情况。

    政策方案的设计,必须考虑到利益相关人和权力持有者的利益。既要提高经济效率,也要保证做决策的人或权力主体的利益不受巨大损害,否则政策就难以推行。

    政策方案的设计,必须考虑到利益相关人和权力持有者的利益。既要提高经济效率,也要保证做决策的人或权力主体的利益不受巨大损害,否则政策就难以推行。

    当下最重要的问题不是我国的GDP总量哪年能超过美国,而是探讨我国是否具备了下一步发展的基础和条件

    ◆ 结束语

    写这样一本书,若想说清观点,作者有时必须装得成竹在胸一点。想让自己的论述站得稳,便不能甫一下笔就顾虑重重。论述这些问题实非易事,我有时轻描淡写,斩钉截铁,但其实心中始终有所疑虑,也许读者能够体谅。

  • 阅读是一座随身携带的避难所 书评

    培养阅读习惯就是为自己搭建一座避难所,让你得以逃离人世间几乎所有痛苦与不幸。读书并不是万能解药,无法帮人缓解爱而不得和饥饿,但是能缓解人的情绪,应该是一种享受。但是并不是所有的书都值得读,不是世界名著就适合你,不是主题宏达的小说才适合你,网络玄学也可以适合你。
    作者推荐了一些对他非常有价值的书,如果从未读过这些书,作者就无法成为今日之他,这些书充实了他的精神。同时他认为一个是什么样的人写什么样的小说,这就导致了这本书一半以上的内容近似是传记,从作者的生活推导出某个角色像作者身边的谁谁,让人更能理解作者和作品。
    介绍完那些他推荐的作者的生平和作品之后,作者简单介绍了一些他的思想,他的思想非常棒,没有一劳永逸的书,一个人奉行的何种哲学观念取决于他是怎样的一个人,我们找不到一个完全争取的“哲学家”或者“哲学观点”,而唯一能做的也就是缩小寻找的范围,转而去寻找一位气质与我相似,因此其理论也更适合自己的哲学家。

    其中有一些有意思的摘录:
    • 像司汤达的红与黑,虽然是世界名著,但是这里笔者还是直白的表达对于上层社会,红与黑的描述是意象层面大,不够真实的。
    • 作者直言,伟大的小说家以其作品为人类精神的宝库增添财富,而个人认为,这其中最伟大的一位正是巴尔扎克。天才和才华不同,巴尔扎克就是小说家中的天才、明珠。
    • 假如浪漫主义从未存在的话,巴尔扎克也必定会把浪漫主义创造出来的。
    • 一位作家会写什么样的书主要取决于他是什么样的人,那么他们个人经历中发生过什么与之相关的事件也就值得一看了。
    • 至少爱情在你的生活中毫无意义。
    • 从托尔斯泰的日记中不难看出,度过一个在打牌、玩女人或者跟吉卜赛人狂欢中消磨的放荡的夜晚之后,他会感觉悔恨不已;不过一旦有了机会,他也乐得把自己后悔过的行为再重来一遍。

  • K大的透视美术课笔记

    导览

    K大是台湾一个教课特别厉害的大触,微博:https://weibo.com/u/1926245291。

    这套课程真的还是蛮厉害的,K大把绘画拆分成了三个部分,一个是透视,一个是色彩,一个是构成,分别对应他开设的三门课程。

    这门课就是他入门的一套透视课程,在这个课程中,他先教我什么是透视,如何画出符合透视的内容,进一步再就是教我透视和绘画的关系,很多人画画不能继续提升卡就卡在体积感和空间感上。

    所以在讲完透视的基本内容之后,就开始介绍房屋、场景以及人物的拆解和组合。

    他本质上不是在教我画画,而是在教我透视,以及透视是如何应用在绘画里的。

    是一堂不会画画的人也能学,学完了并且在有按照他课程设计练习的情况下,也一定能画出好看场景和人物的课程。但并不是学完了随手一笔就是能画出很厉害的东西,也不是给我教会了什么审美的能力,只是教会了我“以透视为基础的绘画框架系统”。

    第一课 —— 导览和透视基础

    线条要练习,避免涂线
    单点、多点透视、水平线很重要
    更重要的是摄像机和物体之间的关系
    消失点相连是地平线,Z轴的线就是垂直于地平线
    相机离物体太近距离会产生变形(鱼眼),距离特别远的透视会消失,前期尽量避免画近距离和远距离的图,尽量挑中距离镜头画。

    时刻记得透视,避免反透视的线条,
    PS的钢笔工具很方便(看下procreate有没有类似的钢笔工具。

    临摹准确透视的图不需要完全抓型,只需要抓住消失点和主体结构,然后其他的线条可以推演出来

    画完立体草稿之后可以用正片叠底来涂颜色,区分不同的平面

    透视里的几何关系和原图是一样的,只是发生了一些变形和扭曲

    (可以直接用原图形,然后 Ctrl+T 变形扭曲过去

    透视图的抓型要多思考几何上的关系

    对于充满画面的主体可以通过画更大的视角,然后二次构图

    对于大场景(准确)透视抓型,可以对主要物体进行立方体简化,找到平面就可以延伸出整幅图
    对于斜面,可以直接通过底面的透视,抓到斜面立体的底座形状和位置。

    背下正面,23.5,45,67.5角度的正方体的画法

    在临摹其他物体时,可以先用长方体套住物体,然后选正确角度的正方体,通过延伸正方体来画出正确角度的长方体外套,再根据几何的位置临摹出对应的物体(倍增法)。

    背下不同角度的正方体是为了降低练习时间,因为准确的徒手画出不同角度的正方体需要大量的写生。不过我这种菜鸡可以通过3D软件找到正确角度的正方体来作为临摹的基础。

    第二课 —— 室内空间与人物

    在透视里,平行线的消失点只和相机方向有关,视线向上看,收缩点就会向上。

    当方块不在相机偏中间的位置,但是方块有一个方向还是垂直方向的时候,垂直方向线的消失点会在相机中点的轴上,所以侧边的相机的线会是“斜”的。

    坐标系临摹画法有一部分因为古代画教堂的壁画从小放大的一种工具。

    建立体积:
    确定空间关系需要先建立三视图,在绘画时最重要的是建立地板,可以确定xyz。从三视图中定位关键点的坐标,在地板的XYZ空间系中找到关键点的位置。

    人体物体都是体积,关键在于建立空间,空间建立的第一步又是建立地板。

    第一步建立地板的方法用方形开场法,所以需要研究方块的基本信息,在只有方块的图片中,一个方体能够给出信息是

    • 相机的距离
    • 相机的俯仰角
    • 相机的旋转角
    • 方形相对于相机的位置

    十六个方块的角度是需要记住的,要背诵的。

    距离会影响方块的透视程度

    有俯角的相机z会收缩,上下平移不会。

    给正视图和侧视图,通过进行左边化,旋转角度在空间中找到节点的坐标,将节点连接起来,就可以画出立体图。

    感想

    K大的课听到现在感觉其实就是在真实的三维空间里还原内容,需要从坐标系出发,算是美术和数学结合的技法,大量的线都是依据几何关系画的,很像工程制图课。

    这就是一个非常准确的技法,对我来说真的是个宝贝,我之前画画的水平波动真的很大的,一度怀疑自己是不是废物,但在这里上到第二课的时候,我觉得学完这套课我是能表达想象中脑海里的场景的。

    在第二节课的时候我就想到这样的场景:
    我就想画一个午后,镜头从屋外斜对着屋内,我抱着水星在很大的阳台上,暖暖坐在脚边打哈欠,风轻轻吹动室内的窗帘,可以看到屋内的沙发和茶几,茶几上放着毛用的几把梳子和香薰。

    会画出来的,哈哈

    第三课 —— 场景角度切换

    平行平面的消失点是在同一条线上的

    我们在确定三维空间之后,可以通过旋转平面来获得同平面的其他方向的正方形。但是长方形不能旋转,因为长方形会旋转成棱形。

    对于立体结构可以先画垂直纸片,然后再增加厚度就可以立体了。

    高富帅方块和高富帅平面可以随意去画。不反透视就行。

    对应很具体真实的东西,可以去找侧视图,然后直接通过贴合去画。这个方法贯穿整个教程期间,是最核心的方法。

    四叶妹妹里的一些比例:

    • 车的宽度:1.5米左右
    • 围墙的厚度: 20厘米左右
    • 墙壁的高度: 1.3米左右

    在有宽度的物体旋转的情况下,可以用“卑鄙的电绘人”才有的办法,先画正常俯视图,然后将厚度和整体一起旋转,厚度自然就会对齐透视了。

    轮胎很难画,看课件学习一下

    第四课 —— 距离感与景深建立

    场景

    场景:最重要的是前中后景和距离感。

    等距排列的物体:用来制造距离感,产生景深,在制作大场景的时候需要多考虑这种展示景深的暗示。

    在作业1中:
    file

    左边四个同样结构和大小的房子就是这样的暗示,并且也是画面主体,占据了画面的1/3的空间。

    这里还用到了一个暗示就是一面多一面少,在途中就是路左侧的房子和路右侧的房子平行的面都在画面中,但是左侧的房子显示到的面片很大,而右侧的房子压缩就极强。
    这种叫做展示设计,会引导读者看向面片大的一面。

    这种设计一个消失点很远,另外一个消失点在正面偏左或偏右的位置。

    通过这样的画面设计能够把主体和前中景描绘出来,但是远景(在图的右上角的拱门之后)的设计是特殊的,可以通过一个墙或者一个河或者一个什么来制造“计算距离的喘息空间”,用以分割不同的远近景。

    远景处理不当很容易暴露透视问题,关于愿景的高低远近和物体的厚度跟近景还是要保持一定的比例关系(可以不用那么严谨),不能过度随意。

    在最远景的房子,一定是面片!无论是怎么样的透视,房子在向画面内伸缩的时候,伸缩方向的厚度是会逐渐减少的(用倍增法计算),那么进到大概12~14个房子的时候,这个方向的深度就已经看不见了,所以最远景的房子一定是面片。

    如果远景的房子能够看到侧面,那并不是说明它大,只能说明它是经过了旋转的。并且看得到的两个边的分割线,占比就是对应旋转角度,类似于下图,两个绿色的宽度比例可以展示旋转的方向:

    视平线 != 地平线

    当视平面平行于地平面的时候,视平线和地平线会重合,但是如果相机有俯仰角,那么视平线就和地平线不重合了,如下图:

    这里就可以给出一句话,放在地平面上的物体,消失点一定落在地平线上。

    第五课 —— 人物抓形

    概括人体

    这堂课主要是处理人体的透视空间,不会过多涉及到动态造型和艺用人体(肌肉)。

    画人最重要的不是人体,而是体积,但体积不分人体和物体。想画好人体必须要能够正确的表达体积!

    对于人体,去抓体积和透视可以用K大给的这个很简单的方法,把人头、胸腔、骨盆、膝盖和脚五个部分拆开,独立去选择角度进行组合,可以得出很自由并且透视没有问题的具有强烈体积感的人体,这个技术的核心在于把画人体变成了画一个个具有透视的独立部件。

    画人体除了地面上的脚,身体的其他部分可以用不同的高富帅方块来解决这个问题。

    第六课 —— 人物三视图

    1. 用线条画出动态 —— 然后图中几个主要的结构使用到这几根线(如上图)
    2. 人体绘画中,身体符合动态,鞋子符合透视(地面透视)
    3. 人体原著的绘制也要符合透视,即手臂大腿抽象成圆柱之后的走线需要符合透视,但这个是有一定容错的。

    前面章节提到了转角度,但是这个章节提到的是长方体和圆柱之间的互相转换很重要,因为手臂虽然是个圆柱,但是如果穿机架或者披带物件,物件需要复合的透视是手臂圆柱转长方体之后的某个透视。

    手和手上持有的物体的透视是一致的,例如手上持有一个盾牌,那盾牌的透视就遵循支撑住盾牌的那个部位的透视。

    可以多训练保龄球,也就是在长方体中,将两个平行平面上画出面积大小不同的圆,将它们用CSI曲线进行连接的训练。保龄球训练足够熟练了,在绘画肌肉、大腿到臀部、小腿到大腿等半径不同的圆柱体的衔接会更加合理和好看。

    大透视:

    • 近距离缩放明显
    • 中距离正常
    • 远距离是平的

    第七课 —— 人物组件旋转拼接

    组合拼接的重点还是前面课程提到的东西,着重提到了背诵方块的十六个的角度以及各种物件(人体的胸腔、盆骨、头、脚等)在对应角度下的模板。

    在这个模板下,符合透视的动态人物就是不同组件和模板的排列组合以及拼接。

    弧线地面

    关于弧线地面的画法,并不是将一条直线变成曲线,然后基于曲线去绘画整个画面。

    方法是将弧线所在的位置画出一个个是非曲线的方体,使这些方体的方向符合曲线,如下图:

    即只需要按照北京虚化的正方体去作为参考即可,在每个正方体附近的角色和物体只需要按照正方体的透视去绘制即可。

    第八课 —— 透视技巧整合

    好像没讲什么东西,也可能是我为了赶进度同时太困,没记住太多东西。

    主要提到的是当下课程教会的内容能够绘画的题材,主要是带景人物。有明显透视的场景以及一个中距离下的角色;以及后续训练的方法:主要用照片来练习透视,并且多做作业和DLC。

    同时安利了后续其他的课程。

    End.

  • 编译优化PGO

    PGO的介绍

    基本概念

    PGO是一个可以平均提高任何程序5%~8%性能的技术,全称是Profile Guided Optimization,它的思路其实很简单,就是编译器在对变量和函数如何放置排布和使用问题上,其实是有很大的自由权利的。

    这里没有一个绝对的最优解,同一段代码,在对于不同应用场景的最优排布方式可能是不同的,传统编译方式都是以块代码进行排布和优化。

    而PGO技术就是自适应编译,通过对程序增加探针进行profile,运行程序之后,再在下一次编译时根据profile结果进行结构的优化调整。

    具体优化

    在开始介绍PGO的过程之前,先介绍一下作为一个编译器,有哪些决定可以去做,并且会怎样影响到程序的效率。

    • Inlining – 根据函数的调用数量和频次,编译器可以做出更好的内联决定。
    • Virtual Call Speculation – 如果一个特定的继承类经常被传递给一个函数,那么它的重载函数可以被inline(内联),这会减少虚表(vtable)的查询次数。
    • Basic Block Reordering(基础结构重新排序) – 尽量将执行顺序最多的路径的代码块放在一起,这样可以提高指令缓存的命中来实现。同时将使用较少的代码挪到最底部,结合下面的“function layout”一起可以显著减少大型应用程序的工作集(一个时间间隔内使用的页面数)。
    • Size/Speed Optimization – 根据profile信息,编译器可以找到常用的函数的使用情况,可以将常用的函数进行加速,不常用的函数的代码体积减少。
    • Function Layout – 将经常被关联调用的函数放在同一个代码段落里,来减少工作集。
    • Conditional Branch Optimization – 比如if/else,如果条件经常为false,则else的代码块会放置在if代码块之前,提高指令缓存命中。

    PGO的阶段

    PGO分为三个阶段:

    instrumental phase

    file

    在这个阶段链接器将cli文件传递给Bakend编译器,Bakend编译器会插入一些探针指令,并且会和可执行文件一起生成一个.pgd文件,这是一个后续其他阶段会用到的数据库文件。

    training phase

    第二阶段是训练阶段,在具体场景下运行程序,前面插入的探针将会记录运行时的信息,数据会被存放在.pgc文件中,每次运行都会产生一个appname!#.pgc的文件,如上图,第一次运行会产生App!1.pgc,第n次会产生App!n.pgc。

    在这里训练时要注意,训练时的场景要尽量和实际使用场景相同。

    PG Optimization Phase

    第3部分是PG优化部分,会将pgc文件合并成pgd文件,被Bakend编译器做决策时提供数据支持,生成更高效的可执行文件。

    PGO如何使用

    在windows, mac, ad, ios不同平台下的编译工具和使用方式不同,但整体的步骤如前文所述,不同的工具都是这样异曲同工。

    等后面实际应用到这个技术的时候再添加具体的步骤吧。

    引用

    https://devblogs.microsoft.com/cppblog/pogo/

  • 西方古典音乐摘录

    名词

    这个摘录的起源也很简单,听到巴赫的大提琴曲名是《Suite No. 1, BWV 1007, In G: Prelude》。就很好奇,为什么Suite翻译过来是巴赫呢,我以为是巴赫第一大提琴,进而搜了一下有了这篇摘录。

    巴赫的全名是:Johann Sebastian Bach,约翰·塞巴斯蒂安·巴赫。生前更多的是作为一个演奏家而不是作曲家而出名,他的大部分作曲作品都是死后才发表的。

    巴洛克:baroque。

    前奏曲:PreLude。

    英国组曲(English Suites):特指巴赫为大键琴(或古钢琴)创作的六部组曲。

    无伴奏大提琴组曲(Cello Suites):BWV 1007–1012,是巴赫写的六个无伴奏大提琴组曲。这些是最常被大提琴solo表演的曲目。其中每个组曲都被分为若干个部分,比如曲第一乐曲就是分为6个部分,其中本乐曲是前奏曲。

    所以名字是:Suite No. 1, BWV 1007, In G: Prelude。

    无伴奏大提琴组曲总共分为这六个:

    1. Suite No. 1 in G major, BWV 1007
    2. Suite No. 2 in D minor, BWV 1008
    3. Suite No. 3 in C major, BWV 1009
    4. Suite No. 4 in E♭ major, BWV 1010
    5. Suite No. 5 in C minor, BWV 1011
    6. Suite No. 6 in D major, BWV 1012

    而其中BWV又是什么意思呢,

    BWV:Bach-Werke-Verzeichnis,即巴赫作品目录,于1950年被发表。

    古典音乐

    古典音乐核心是复调体系 (polyphony),这是和流行音乐最大的不同。

    复调体系就是同时并行多个“有意义的”旋律。如果脑子无法同时接受多个旋律的信息,古典音乐最多只能让人感觉到“旋律优美”,但是很难感觉到一些比较深刻的东西。

    当面对复调音乐时,一般人的潜意识是只能接受高音部的声音。所以初听两声部作品时,可以强迫自己听低音部的音乐来进行练习。比如如果听交响乐,主要就听大提琴在干什么。实在听残的话去IMSLP/Petrucci Music Library: Free Public Domain Sheet Music下个总谱,相信我对着总谱听音乐绝对是享受,可以注意到很多过去注意不到的地方。

    所以我觉得前期可以从不那么强调复调的作曲家入手,逐渐加大难度,最后过渡到现代古典音乐。可以把入门古典音乐分为四个阶段。

    阶段1:主要听不那么强调复调的古典音乐家作品。

    代表:Chopin, Mozart。

    Mozart是要着重听的,不仅因为Mozart的音乐“好听”,还是因为Mozart 其实是很强调复调,而且他很会掩藏自己意图,当你完全忽略他的复调时也会感觉良好。

    Mozart 推荐听完他所有的 piano sonata,他的所有String Quartet, Symphony 39, 40, 41,还有K525 是家喻户晓了吧。Piano concerto 推荐20、21。歌剧要是真有兴趣的话那就是费加罗了。其实我觉得Mozart写的最好的是安魂弥撒和 Symphony 41 的第四乐章。如果你实在没时间就听这两个。

    Chopin的可以听 Horowitz 弹的,他所有作品。

    阶段2:Bach

    通过听Bach 的键盘音乐来训练自己接受复调的能力。

    可以从二部三部创意曲、French Suite,Goldberg Variations, English Suite入手,最后听完平均律。

    Glenn Gould是听Bach键盘音乐绕不过去的人。总是要听下他的人生才没白活。

    阶段3:浪漫时期作曲家

    听过一段时间Bach,一般这时就能比较容易区分声部和接受复调了。这时候就该进入古典音乐成熟阶段19世纪的音乐啦。这期间除了作曲、配器理论也是大发展,交响乐写的是越来越好听了。这期间作品可以说完全符合今天人的口味,很难遇到“不好听”的作品。可以按照作曲家生卒从早到晚来听。

    Beethoven 的所有作品。Schubert 几乎所有作品。Schumann 几乎所有作品。Brahms 几乎所有作品。

    阶段4:后浪漫(19世纪晚期)到现代作曲家。

    这段时间就比较纠结了。很容易遇到自己一开始不喜欢的作曲家。比如我第一次听Bruckner就觉得什么玩艺阿、好平庸、怎么这么多重复、duang duang duang 堆砌素材有意思没。实际上因为从19世纪末开始作曲理论就开始自我毁灭式的发展了,很多音乐你觉得不好听,可能只是太前卫、或不熟悉而已。

    Bruckner 和 Mahler的所有交响曲是必听的,不管你喜不喜欢。如果你发现你同时喜欢这两个人,你可能有精神分裂早期症状。如果你对Mahler入迷了觉得其他作曲家都是sb、"Mahler 之后再无交响曲",请参照 [翻译]马勒综合症 手册进行自我治疗。

    19世纪晚期还有很多浪漫主义杰作,但是都有点小众,其实他们作品的功力完全不逊色于浪漫时期的作曲家。比如Ceasar Franck 的室内乐,我觉得就完爆Brahms(完全我个人偏见)。

    钢琴独奏一定要听下 Scriabin, Rachmaninov 的作品。

    Rachmaninov 的piano concerto No. 2,3 是必听的啊。

    Prokofiev 到Shostakovich的俄国风,选一些来听。

    印象主义主要是听Ravel 和Debussy的(我个人对这两位都比较无感、了解不多,所以不作介绍。)

    再之后的音乐就是Stravinsky,Baber,Bartok,Schoenberg等等等。如果这时候你还没有开始讨厌现代古典音乐,说明你有异于常人的禀赋。

    最后,有条件的话推荐买Spotify,或者加入Apple Music。

    摘抄

    https://www.zhihu.com/question/30957313/answer/71241350

    国际乐谱网

  • 12个工作的基本能力 读书笔记

    关于职业的误解

    一开始请以漂流的方式行动,过段时间再切换成登山型。

    作者认为职业生涯并不是朝着目标笔直前进的,不仅不是,事实恰好完全相反,想尝试某种工作的动机只有在真正接触那种工作之后才会出现,对于从没做过的工作,是不会产生动机的;所以在毕业时就确定一生奋斗的事业是很难做到的,最开始的工作也不是那么重要的。

    人的想法是会变的,机遇接二连三,既有偶然也有醒悟,最终会发现自己该走的路。因此与其把重点放在做什么工作上,不如让自己置身于能够得到成长的环境,锻炼12种基本能力。

    关于学历

    很多公司并不在乎学历,用人单位看重的是求职者对于基本能力的掌握情况。

    在日本毕业生白领岗位属于僧多肉少的情况,如果只考虑就业的话,可以说上专修学校掌握一技之长才是上策。人数激增的研究生毕业生劳动市场中也并未得到太多好评。

    顺带一提毕业后的无业人员,本科所占比例为22.5%,硕士占16.9%,而博士竟高达34.9%。

    关于证书

    无论求职者拥有多少资格证书,对于就业的意义都不大,人事部门看重的是工作经验,因为经验比证书更能体现出一个人的工作能力。

    企业在乎的是工作能力本身。

    过了35岁就不能跳槽

    很多招聘广告都以35~40作为年龄上限,原日本劳动研究机构的调查结果显示,招聘的平均年龄上限为41岁。

    下图是各行业成长到独当一面的程度所需要的时间:

    file

    书中将技能分为“企业特殊技能”和“一般技能”,企业特殊技能是这个人一旦跳槽就会失去的财产,考虑跳槽时,必须先按照社会标准确认自己有多大的价值,掌握了多少一般技能,同时必须按部就班地培养这些技能。否则,年过35岁的跳槽将成为一场苦战。

    年过35岁的人想在跳槽中大有收获,需要满足两个条件。

    1. 要具备业界通用的专业知识和技能。
      这并不是一朝一夕能够掌握的,需要有计划地逐步培养。第二章的“12种基本能力”中所列举的“专业构筑力”即属此例,可供参考。另外,对于同一种能力,有的公司需要,有的公司则不需要。
    2. 要积累作为领导者的扎实经验和技巧。
      对35岁以上人员的录用,要么就是直接聘其担任管理职务,要么就是以在近期担任管理职务为前提的录用。35~40岁的就业差距,体现在一般职位和管理职位的差别上。对于能以管理者身份得到团队成员信任的人才来说,年龄将不再是问题,甚至达到一定年龄、积累了大量的业务经验反而更好。因此,在后文介绍的12种能力中,请优先锻炼“语境理解力”“委任力”“商谈力”“目标发现力”“人脉开拓力”等能力。

    管理?专业人员?

    许多公司职员在35~45岁期间都会经历这样一个选择——是以全面发展的经营干部为目标,还是成为特定领域的专家。

    很多时候立志成为专家的人并不擅长在企业内以领导者的身份负责管理,所以会被动选择一条独行之路。作者认为把成为专家和负责管理视为两个对立的概念是绝对错误的。

    若想成为优秀的专家,管理能力必不可少,一个人单打独斗能力总有极限,很多时候不得不站在项目负责人的立场集结大家的力量来完成高水平的工作。无论是研究者、编辑还是技术人员,无一例外。

    如果基于“会管理就当全才,不会管理就当专家”的想法来选择职业发展方向,今后必不可能有大的发展和成就。

    归根结底,经营和组织管理难道不是都属于专业范畴吗?想当经营干部,就必须成为经营专家。财会知识、市场知识、人才管理知识、经营战略理论的主要谱系、风险管理知识、商法基础知识、经营哲学、业界内外的相关人脉等等,只有具备这些,才能成为合格的(或候补)经营干部,否则只能停留在科长、部长的水平。

    美国南加利福尼亚大学的德赖弗教授是一位组织经营的研究学家,他提出了一种职业模型如下图。

    file

    引导职业生涯走向成功的12种基本能力

    这里我只粗略的按照目录把脉络梳理清楚了,后续仔细阅读时再慢慢补充细节。

    反应力

    定义:让对方知道自己对其言论或提问作何反应的表达能力,是最基本的交流能力。

    标准开发年龄:10~30岁

    缺少该能力的后果:显得反应迟钝、信息阻塞

    其他……待补充…………

    大前提是“为了提问而听”

    在演讲会、学习会上做到适当提问的要点:

    1. 如果事先知道讲师是谁,就应该提前了解对方所写的书或发言内容,带着“想知道这个问题”的明确目的去听。
    2. 对于演讲内容不要囫囵吞枣,应该带着“果真如此吗”的疑问去听。
    3. 提问大概分为“反驳”“确认”“展开”三类。
      “反驳”是直接提出自己对于演讲内容的疑问,就此询问讲师的看法;
      “确认”是指说出自己的理解,询问讲师是否正确;
      “展开”是指提出类似案例的问题,或请讲师具体举例。
      边听演讲边思考,进行核实的提问。
    4. 尽量第一个提问。
      因为起初大家比较拘谨,举手的人不会太多,容易被点到名,而且不用担心别人先提出同样的问题。
    5. 作为礼貌,应该先对讲师表示谢意,然后自报姓名,再开始提问。
      最好把问题归纳成一个,而不要接二连三地提问。
    6. 如果没有人提问,可以就讲师受时间所限未能详细说明的部分进行提问。
    7. 如果提问时间结束后仍未能得到提问机会,可以等结束后直接去讲台询问。

    亲和力

    定义:通过柔和的表情或诙谐的笑容吸引人的能力。

    标准开发年龄:10~30岁

    缺少该能力的后果:支持自己的人非常少

    作为领导的条件

    智商与亲和力

    心理学家彼得·沙洛维将情商的相应部分分成五个领域来加以说明。

    1. 认识自身的情绪。
    2. 控制情绪。
    3. 自我激励。
    4. 认知他人的情绪。
    5. 妥善处理人际关系。

    亲和力与第五个领域密切相关。

    省略寒暄有害无益

    锻炼亲和力

    乐观力

    定义:面对工作压力,有适合自己的处理方式,能够战略性的消除压力的能力。

    标准开发年龄:10~60岁

    缺少该能力的后果:态度消极,经常生病

    压力应对,消除压力的方式:

    1. 放弃。
    2. 忘记。
    3. 归咎于他人。
    4. 换换心情。

    直面压力

    以积极思考为目标

    战略性思维能够增强乐观力

    目标发现力

    定义:自己为工作制定目标的能力。通常是先发现问题,再以解决问题为目标。

    标准开发年龄:10~50岁

    缺少该能力的后果:变成待命族,看待问题负于表面。

    企业要求个人“自立”

    “梦想能量”与“问题发现技能”

    贪欲创造目标

    锻炼“问题发现技能”

    提高目标发现力的技巧:

    1. 细碎的日程安排
    2. 成功印象。
    3. 活用上市。

    持续学习力

    定义:在必要时学习必要知识的习惯。

    标准开发年龄:20~40岁

    缺少该能力的后果:掌握的知识过时,跟不上新形势,知识量无法继续增加。

    不学习的日本人

    有39.7%的高中生除上课外几乎不学习,而不学习的大学生更占了47.5%。

    从强制性学习到自主性学习

    将思维格式化

    养成学习习惯的关键

    1. 精力集中
    2. 确定近期目标
    3. 记住就立刻说出来
    4. 确定是否习惯化
    5. 灵活运用、收获成果

    语境理解力

    定义:在背景、语境不同的人之间协调意见的能力。

    标准开发年龄:20~50岁

    缺少该能力的后果:无法成为项目负责人。

    支柱:感情控制力、逻辑思考力和表达能力。

    积累与语境不同的人沟通的经验

    想象对方的发言背景

    养成整理论点的习惯

    在谈判场合不可或缺的能力

    专业构筑力

    定义:有计划地构建自身独特强项的能力。

    标准开发年龄:30~50岁

    缺少该能力的后果:过了40岁,仍然对任何事都缺乏自信。

    过了30岁,所有人都会面对一个工作上的课题——如何构建自己的专业性?

    选择什么领域作为自己的专业?

    1. 尽量选择已经积累大量经验的领域。
    2. 要弄清楚在公司内部是否存在被估价的可能性,在社会上是否存在高需求。
    3. 选择能在相对较短的时间内达到一定水平的领域。
    4. 能想象出自己享受该领域工作的模样。

    兼顾理论和实践,且通过笔记联系理论与实践

    专家不知者为罪!

    专家不知者为罪!

    专家不知者为罪!

    不可缺少的专家关系网:与其他专家建立人际关系网也是专业构筑的一大关键。

    人脉开拓力

    定义:开拓业务伙伴或信息来源,并与之维持关系的能力。

    标准开发年龄:30~60岁

    缺少该能力的后果:摘取头衔则一事难成。

    要见想见的人

    对方是否拥有工作需要的信息?能不能成为工作上的伙伴?对于提高自己的品性和教养有无帮助?在这几点上如果得不到肯定的答案,就毫无意义。

    从战略性的角度出发,主动去见自己想见的人,发展并维持关系,这是作者推荐的方式。

    梅开二度

    就是找个理由再见一次。

    介绍给第三方是加深关系的有效技巧

    为了加深人际关系,可以把你的朋友介绍给对方,或者把对方介绍给你的朋友。

    不要吝啬交际费和饮食费

    在个人主页上进行自我介绍

    停止加班,空出时间

    委任力

    定义:把工作托付给别人的能力

    标准开发年龄:30~50岁

    缺少该能力的后果:所有工作都自己承担,无法肩负重任。

    “自己做更快”的恶魔之声

    信赖需要“眼光”

    符合设计图的阶段化

    商谈力

    定义:咨询协商的能力,善于倾听并与别人一同思考问题的能力。

    标准开发年龄:40~70岁

    缺少该能力的后果:无视对方的价值观,将自己的想法强加于人,一味说教。

    下面将要介绍的第10种能力到第12种能力,是具备一定专业性的人进一步灵活利用其专业性而应该掌握的能力。

    听不进别人说话的中年一代

    以成为职业顾问型上司为目标

    商谈服务成为必需品

    传授力

    定义:把自己掌握的知识或技术交给别人的能力。

    标准开发年龄:40~70岁

    缺少该能力的后果:无法把自己的只是传给后辈或部下。

    缺乏传授力的典型失败案例:

    1. 说明不足型。
    2. 滔滔不绝型。
    3. 夸夸其谈型。
    4. 说教型。
    5. 比喻过剩型。

    “教员”带来的就业机会效应

    毫无保留是大忌

    协调力

    定义:调整、中介、推进事物的能力

    标准开发年龄:40~70岁

    缺少该能力的后果:无法完成大型工作。

    前面介绍的能力几乎都是地位平等的,只有协调力算是更高级的能力。

    21世纪的象征性职业

    在不同领域间协调

    构成协调力的10个要素:

    1. 专业知识。
    2. 丰富的人脉。
    3. 把握对方的需求。
    4. 本质的开朗。
    5. 针对信息收集的日常活动。
    6. 目标的设定。
    7. 达成共识的推进。
    8. 适当的建议。
    9. 勤勉。
    10. 为人诚实。

    End.

  • 现代C++教程 读书笔记

    习题答案:https://github.com/changkun/modern-cpp-tutorial/tree/master/exercises

    序言

    本文传统C++ 是指C++ 98及之前的标准。

    C++ 14/17是对C++ 11的重要补充和优化;而C++ 20则将这门语言领进了现代化的大门。

    关于一些特性的初探:

    • auto关键字语义给操纵极为复杂的模板类型提供了底层支持;
    • lambda表达式基于C++匿名函数的闭包特性;
    • 右值引用的出现解决了C++长期被人诟病的临时对象效率问题;

    第一章迈向现代C++

    被弃用的特性

    弃用并非不能用,只是暗示这些特性将从未来的标准消失。

    • 不允许使用字符串面值常量赋值给char *,如果使用应该是用const char**或者auto。
    • C++98异常说明、unexpected_handler, set_unexpected()等特性被弃用,应该使用noexcept。
    • auto_ptr被弃用,用使用unique_ptr。
    • register关键词被弃用。
    • bool类型的++操作被弃用
    • 如果一个类有析构函数,为其生成拷贝构造函数和拷贝复制运算符的特性被弃用了。
    • C风格的类型转换被弃用了(即在变量前是用(convert_type)),应该使用static_cast、reinterpret_cast、const_cast来进行类型转换。
    • ……等等

    与C的兼容

    C++不是C的一个超集。

    用extern "C"特性时,将C语言代码和C++语言进行分离编译,再统一链接。

    第二章语言可用性的强化

    变量/常量/流程

    nullptr

    nullptr的是替代NULL,C++不允许将void *隐式转换到其他类型。

    void foo(char *);
    void foo(int);
    
    //直接调用将会调用void foo(int);;这违反常理
    foo(NULL);

    所有的空指针一律使用nullptr,而不要用NULL。

    constexpr

    修饰变量,const并未区分编译器常量和运行期常量,constexpr限定编译器常量。

    修饰函数,constexpr修饰的函数返回值不一定是编译期常量,这个有点像inline。

    只读的语义用const,常量的语义用constexpr。

    if/switch变量声明强化

    C++中可以将变量声名放在if和switch中,作用于就从函数下降到本身的作用域中。

        if (int a = f(); a != 1) {
            // 代码块A
            cout << a << endl;
        } else if (int b = g(); b != 2) {
            // 代码块B
            a += b;
            cout << a << endl;
        } else {
            // 代码块C
            a -= b;
            cout << a << endl;
        }

    初始化列表

    用initializer_list的构造函数被称为初始化列表构造函数,具有这种构造函数的类型将在初始化时被特殊处理。

    结构化绑定

    std::tuple<int, double, std::string> f(){
        return std::make_tuple(1, 2.3, "456");
    }
    
    int main(void){
        auto [x, y, z] = f();
        std::cout << x << ", " << y << ", " << z << std::endl;
        return 0;
    }

    auto,decltype

    用于类型推导。

    auto:

    • 当类型不为引用时,auto 的推导结果将不保留表达式的 const 属性;
    • 当类型为引用时,auto 的推导结果将保留表达式的 const 属性;
    • auto 关键字不能定义数组。

    还有一个尾返回类型(C++11),利用auto关键字将返回类型后置,但是在C++14中,可以让普通函数具备返回值推导:

    // C++ 11
    template<typename T, typename U>
    auto add(T x, U y) -> decltype(x+y){
        return x + y;
    }
    
    // C++ 14
    template<typename T, typename U>
    auto add2(T x, U y){
        return x + y;
    }

    decltype(auto)

    C++ 14开始提供的用法,和直接使用auto相比最大的区别在于这个能够自动识别是否是引用&,auto只能识别到数据类型,demo:

    std::string lookup1();
    std::string& lookup2();
    
    // C++ 11的封装形式如下:
    std::string look_up_string_1(){ return lookup1(); }
    std::string& look_up_string_2(){ return lookup2(); }
    
    // C++ 14可以如下:
    decltype(auto) look_up_string_1(){ return lookup1(); }
    decltype(auto) look_up_string_2(){ return lookup2(); }

    if constexpr

    C++ 17将constexpr关键字引入if判断,在编译期完成判断。

    template<typename T>
    auto print_type_info(const T& t){
        if constexpr(std::istegral<T>::value){
            return t + 1;
        } else {
            return t + 0.001;
        }
    }
    int main() {
        std::cout << print_type_info(5) << std::endl;
        std::cout << print_type_info(3.14) << std::endl;
    }

    会被编译成这样:

    int print_type_info(const int& t){
        return t + 1;
    }
    double print_type_info(const double& t){
        return t + 0.001;
    }
    //...

    其实这个语法糖…我不太能明白用处,写成两个函数不行吗,可能因为我对模板编程接触实在少。

    区间for迭代

    像python的for循环,要注意的主要是使用auto想修改的话,需要使用auto &。

    std::vector<obj_class> vec;
    //...
    for(auto &v: vec){
      // do sth
    }

    对象/模板

    外部模板

    传统C++中,模板只有使用时才会被实例化。并且每个编译单元(文件)都会被实例化,这增加了时间,C++11引入了外部模板:

    template class std::vector<bool>;                   // 强制实例化
    extern template class std::vector<double>;          // 不在当前编译文件中实例化模板

    类型别名模板

    模板和类型是不同的,模板是用来生产类型的。

    typedef可以为类型定义一个新的名称,但没法为模板定义一个新名称,因为木板不是类型,C++ 11引入了using解决这个问题。

    所以typedef给类型定义别名,using除了typedef能做的,还能够给模板定义别名。

    总结一下using的三个用途:

    • 引入命名空间
    • 指定别名(对比typedef 有两个好处,第一更加清晰,第二可以对模板)
    • 在之类中引用基类成员

    默认模板参数

    template<typename T = int, typename U = int>
    auto add(T x, U y){
        return x + y;
    }

    变长参数模板

    这个好像篡改了语法,所有的关键词后面加上…就变成了这个相关的功能,感觉还挺复杂的,列一下demo:

    template<typename... Ts> class Magic;      // 其中Ts就是变长模板的“类型名”,可以接受0~n个
    template<typename... Args> void printf(const std::string &str, Args... args);  // 有类型安全的printf
    template<typename... Ts>
    void magic(Ts... args){
        std::cout << sizeof...(args) << std::endl;
    }
    // 参数解包,1. 递归模板函数
    template<typename T0>
    void printf1(T0 value){
        std::cout << value << std::endl;
    }
    template<typename T, typename... Ts>
    void printf1(T value, Ts... args){
        std::cout << value << std::endl;
        printf1(args...);
    }
    // 参数解包,2. 变参模板展开
    template<typename T0, typename... T>
    void printf2(T0 t0, T... t){
        std::cout << t0 << std::endl;
        if constexpr(sizeof...(t) > 0) printf2(t...);
    }
    // 参数解包,3. 初始化列表展开
    template<typename T, typename... Ts>
    auto printf3(T value, Ts... args){
        std::cout << value << std::endl;
        (void) std::initializer_list<T>{([&args]{
            std::cout << args << std::endl;
        }(), value)...};
    }

    折叠表达式

    template<typename... T>
    auto sum(T... t){
        return (t + ...);
    }

    非类型模板参数推导

    template <auto value>
    void foo() {
        std::cout << value << std::endl;
    }
    
    int main() {
        foo<10>();     // value被推导为int类型
    }

    委托构造

    构造函数可以在同一个类的一个构造函数中调用另一个构造函数。

    class Base{
    public:
      int value1;
      int value2;
      Base() {
        value1 = 1;
      }
      Base(int value): Base() {
        value2 = value;
      }
    };

    使用委托构造函数,就不能再使用初始化列表构造其他成员了。

    继承构造

    class Base{
    public:
        Base();
        Base(int);
    }:
    
    class SubClass: public Base{
        using Base::Base;    // 继承构造
    };

    假设一旦使用了继承构造函数,编译器就不会为派生类生成默认构造函数。这样,我们得注意继承构造函数无參版本号是不是有须要。

    显示虚函数重载

    override显示告诉编译器这个函数是重载虚函数。

    final是显示告诉编译器,防止被继承这个函数。

    显示禁用默认函数

    传统C++中,如果程序员没有提供,编译器会为对象生成默认构造、复制构造、赋值算符以及析构函数,同时也为所有类定义了注入new delete这些运算符。

    C++ 11的解决方案:

    class Magic {
    public:
        Magic() = default;                        // 显式使用编译器生成的构造
        Magic& operator=(const Magic&) = delete;  // 显示声明拒绝编译器生成构造
        Magic(int magic_number);
    };

    强类型枚举

    C++ 11引入了枚举类,使用enum class的语法进行声名:

    enum class new_enum: unsigned int {
        value1,
        value2,
        value3 = 100,
        value4 = 100
    };

    这样的枚举不能被隐式转化为整数,不能与整数进行比较,不能与不同枚举类型的值进行比较。

    也解决了传统C++中,同一个命名空间的不同枚举类型的枚举值名字不能相同的问题。

    第三章 语言运行期的强化

    lambda表达式

    值拷贝:被捕获的变量在lambda表达式创建时拷贝,而非调用时才拷贝;

    1. 引用拷贝:和正常引用无异;
    2. 隐私捕获:直接填[=]或者[&]让编译器自行推导;
    3. 表达式捕获:有些变量不允许复制和引用,C++提供了表达式捕获可以进行任意的初始化,让我们可以把这些变量变成右值。

    其中当lambda表达式的捕获列表为空时,闭包对象还能够转换为函数指针值进行传递。

    using foo = void(int);
    void functional(foo f){ f(1); }
    int main() {
        auto f = [](int value) { std::cout << value << std::endl; };
        functional(f);
    }

    泛型lambda

    C++ 14支持lambda使用auto作为类型,提供泛型lambda:

    auto add = [](auto x, auto y){
        return x + y;
    }
    add(1, 2);
    add(1.1, 2.2);

    std::function

    函数的容器,对可调用实体的一种类型安全的包裹(函数指针的调用不是类型安全的)。

    std::bind和std::placeholder

    • 其中std::placeholder::_1表示bind对象调用时的第一个参数;
    • std::bind支持嵌套绑定,如下demo
    int foo(int a, int b, int c) { return a + b + c; }
    int g(int n) { return n + 2; }
    
    int main(){
        auto bindFoo = std::bind(foo, std::placeholders::_1, 1, std::bind(g, 3));
        bindFoo(3);
    }

    右值引用

    关于左值、右值、将亡值的概念我大概清楚了,但是书中这个例子我没理解清楚:

    #include <iostream>
    
    using namespace std;
    
    class ClassA{
    public:
        int *pointer;
        ClassA(): pointer(new int(1)){
            cout << " 构造" << pointer << endl;
        }
        ClassA(ClassA& a): pointer(new int(*a.pointer)){
            cout << " 拷贝构造" << pointer << endl;
        }
        ClassA(ClassA&& a): pointer(a.pointer) {
            a.pointer = nullptr;
            cout << " 移动" << pointer << endl;
        }
        ~ClassA(){
            cout << " 析构" << pointer << endl;
            delete pointer;
        }
    };
    
    ClassA return_rvalue(bool test){
        ClassA a, b;
        if(test) return a;
        else return b;
    }
    
    int main(void){
        ClassA obj = return_rvalue(false);
        cout << "obj: " << endl;
        cout << obj.pointer << endl;
        cout << *obj.pointer << endl;
    }
    
    /* 打印结果如下:
     构造0x555b80d39e70
     构造0x555b80d3a2a0
     移动0x555b80d3a2a0
     析构0
     析构0x555b80d39e70
    obj:
    0x555b80d3a2a0
    1
     析构0x555b80d3a2a0
    */

    这里我觉得移动构造应该会执行两次才对,return_rvalue从b对象到将亡值一次复制,从将亡值到main函数中的obj一次复制,实在不解为什么只执行了一次,就深入看了一下汇编,便有了本笔记的最后一章。

    我不放汇编代码,直接给出看汇编的结论:

    main函数在调用return_rvalue函数时,除了传递参数false,还传递了一个8字节的内存地址进去,return_rvalue在返回时并不是创建了一个新的对象返回给上一层,而是直接把b移动给了上一层传进来的对象里。

    换句话说,obj内存开辟是在main函数里做的,但拷贝构造函数发生在return_rvalue返回之前。

    在这里我还做了几个测试,在C中,当返回的对象内存大于4字节时,返回值是通过调用者提供的内存返回的。C++是的规则好像特殊一点,跟引用和右值有关系。

    右值引用

    T&& a是一个右值引用,它引用的对象是一个右值,但是它本身是一个左值,可以继续引用其他对象。

    移动语义:std::move

    会将参数的内容“移动”到左边,参数的对象会被清空。

    完美转发

    引用坍缩规则:在传统C++中,不能对一个引用类型继续进行引用,但右值引用的出现放宽了这一做法,从而引起坍缩规则。无论模板参数是什么类型的引用,当且仅当实参类型为右引用的时候,模板参数才能被推到位右引用类型。

    第四章 容器

    std:array

    • 相比vector,array大小是固定的,空间消耗可控;
    • 相比传统数组,array封装的更加安全。

    和C风格的接口兼容时:

    void foo(int *p, int len){ return ; }
    std::array<int, 4> arr = {1, 2, 3, 4};
    
    // foo(arr, arr.size());  // 非法,无法隐式转换
    foo(&arr[0], arr.size());
    foo(arr.data(), arr.size());

    std:forward_list

    std::list是双向链表,这个是单向链表,不展开

    std::unordered_map, std::unorder_set, std::unordered_multimap, …

    std::map和std::set都是用红黑树实现的;

    这里unordered_xx都是用hash表实现的;

    元组

    元组的三个核心函数:

    1. std::make_tuple: 构造元组
    2. std::get: 获得元祖某个位置的值
    3. std::tie: 元祖拆包
    auto student = std::make_tuple(1.7, 'D', "张三");
    auto lv = std::get<2>(student);
    auto score = std::get<1>(student);
    double gpa;
    char grade;
    std::string name;
    std::tie(gpa, grade, name) = student;

    运行期索引

    上面的例子中,std::get 其中index必须是常量,不能是变量。

    C++ 17 引入了variant<>,但用起来还挺复杂的,用到再深究吧。

    元组的合并与遍历

    std::tuple_cat(student1, student2);可以合并两个元组

    遍历需要用到上面variant和元组模板的::value属性。

    书里没写,我在这多插嘴一句,元组的实现在底层其实是多个类的继承,所以每个元组类型都是通过变长参数模板+继承来做的,因为继承内存其实非常紧凑,而每个元组本质上是一个对象,每个元组的类的长度是固定的,所以有一个value的静态变量来获取长度。

    从这里向下的内容严格来说,只算是库的内容,不算是语言层面的内容了

    从这里向下的内容严格来说,只算是库的内容,不算是语言层面的内容了

    第五章 智能指针与内存管理

    RAII和引用计数

    RAII是指在析构函数中释放资源,就不会忘记释放资源了。

    引用计数是指,记录对象被引用的次数。

    这俩是所有智能指针实现的低层级制。

    std::shared_ptr, std::make_shared

    引用计数变为0时,对象会被delete。

    std::unique_ptr

    禁止与其他的智能指针共享一个对象,从而保证代码的安全。

    不可复制,但可以移动。

    std::weak_ptr

    weak_ptr不会引起计数增加

    第六章 正则表达式

    std::regex

    之前一般的解决方案是使用boost的正则表达式库。

    C++ 11 将正则表达式引入了标准库的支持。

    第七章 并行与并发

    线程基础

    std::thread 用于创建一个执行的线程实例。

    get_id() 可以获得所创建线程的线程ID,使用join() 来等待一个线程结束。

    #include <iostream>
    #include <thread>
    
    int main() {
        std::thread t([](){
            std::cout << "hello world." << std::endl;
        });
        t.join();
        return 0;
    }

    互斥量与临界区

    std::mutex是最基本的mutex类,实例化可以创建互斥量,然后通过lock()上锁,unlock()解锁。还有一个RAI语法的模板类std::lock_guard和std::unique_lock。

    std::unique_lock更自由,可以主动lock和unlock。

    std::future

    跟python里的future挺像的,通过回调的形式来给予异步线程的返回值。

    条件变量

    std::condition_variable是为了解决死锁而生,实例被创建主要就是用于唤醒等待线程。std::conditioin_variable的notify_one()用于唤醒一个线程;notify_all()用于唤醒所有线程。

    原子操作与内存模型

    a=1, b=3; 因为CPU可能乱序,可能导致另外一个线程看到b先为3;

    mutex可以解决这个问题,因为mutex是操作系统级别的功能;

    同时C++11还引入了std::automic模板,为浮点整数提供了基本的数据成员函数。

    一致性模型

    当多个线程对一个变量v操作时,每个线程都能感受到v的变化,但对于v而言,表现为顺序执行的程序,v并没有因为引入多线程而得到任何效率上的收益。如何适当加速呢?削弱原子操作在进程间的同步调节。

    • 线性一致性;
    • 顺序一致性;
    • 因果一致性;
    • 最终一致性;

    内存顺序

    为了追求极致的性能,实现各种强度要求的一致性,C++为原子操作定义了六种不同的内存顺序std::memory_order的选项,表达了四种多线程间的同步模型:

    1. 宽松模型:std::memory_order_relaxed
    2. 释放/消费模型:std::memory_order_consume, std::memory_order_release
    3. 释放/获取模型:std::memory_order_acquire, std::memory_order_acq_rel, std::memory_order_release
    4. 顺序一致模型:std::memroy_order_seq_cst

    第八章 其他杂项

    long long in

    C99就已经引入了,C++ 11中也引入了,至少是一个64位的比特数。

    noexcept的修饰和操作

    C++11将异常声明简化为以下两种情况,并用noexcept进行限制:

    1. 函数可能抛出异常;
    2. 函数不能抛出异常;

    noexcept还能做操作符,用于操作一个表达式,无异常时返回true,否则返回false。

    noexcept(may_throw())
    noexcept(no_throw())

    noexcept修饰完函数之后,外部不会捕获到异常。

    自定义字面量

    没想到使用场景,demo:

    std::string operator"" _wow1(const char *wow1, size_t len){
        return std::string(wow1) + "woooooow, amazing!";
    }
    
    std::string operator"" _wow2(unsigned long long i){
        return std::to_string(i) + "woooooooooooow, amazing!!";
    }
    
    int main(){
        auto str = "abc"_wow1;
        auto num = 1_wow2;
        std::cout << str << std::endl << num << std::endl;
    }

    内存对齐

    C++11引入了两个新的关键字alignof和alignas来支持内存对齐进行控制。

    alignof类似于sizeof,获取跟平台相关的std::size_t类型的值,用于查询该平台的对齐方式。

    alignas用于修饰某个结构的对齐方式。

    第九章 展望:C++20简介

    诸如Concept/Module/Coroutine/Ranges等特性的提案都蓄势待发。

    概念与约束

    int main() {
        std::list<int> l = {1, 2, 3};
        std::sort(l.begin(), l.end());
    }

    上面的例子会产生不可读的编译错误,因为std::sort对排序容器必须提供随机迭代器,但std::list是不支持随机访问的。引入概念之后,我们可以对模板进行约束:

    template<typename T>
    requires Sortable<T>  // Sortable 是一个概念
    void sort(T& c);

    还有模块、合约、范围、协程、事务内存等。

    其他部分作者还没写完,就到这吧。

    汇编学习

    这一部分不是书里的内容,是在学C++右值引用的时候对一些细节不理解,但没找到相关的资料,只能深入汇编去看实现细节,这里也记录一下相关的信息:

    ELF文件格式

    ELF文件主要有四种类型:

    1. 可重定位文件(Relocatable File),可以用来和其他目标文件链接,即xx.o文件。
    2. 可执行文件(Executable File),规定了exec() 如何创建程序的进程印象。
    3. 共享目标文件(Shared Object File),可以和其他的可重定位文件一起链接成另一个目标文件;链接器可以将它与某个可执行文件组合,创建成可执行文件,即xx.so。
    4. 内核转储(core dumps),存放当前进程执行上下文,用于dump信号触发。

    ELF提供两种视图,分别是链接视图和执行视图:

    链接视图:以节(section)为单位,在连接时用到的视图。

    执行视图:以段(segment)为单位,在执行时用到的视图。

    可以这样来理解,在链接时,会将文件的相同的节组成一个段,在执行时把对应的段载入内存即可。

    比较重要的一些节:

    系统固定的section

    1. .text 代码段
      可以通过objdump -d 反汇编查看ELF文件代码段的内容。
    2. .strtab/.shstrtab 字符串表
      所有使用到的字符串都放在这里,以’\0’分隔。
    3. .symtab 符号表
      在链接的过程中需要把多个不同的目标文件合并在一起,不同的目标文件相互之间会引用变量和函数。在链接过程中,我们将函数和变量统称为符号,函数名和变量名就是符号名。
      这里的每个符号对应一个地址。
    4. .eh_frame / .eh_frame_hdr
      在调试程序的时候经常需要进行堆栈回溯,早期使用通用寄存器(ebp)来保存每层函数调用的栈帧地址,但局限性很大。后来现代Linux操作系统在LSB(Linux Standard Base)标准中定义了一个.eh_frame section,用来描述如何去unwind the stack。
      GAS(GCC Assembler)汇编编译器定义了一组伪指令来协助eh_frame生成调用栈信息CFI(Call Frame Information)。
    5. 重定位表(.relname)
      链接器在处理目标文件时,需要对目标文件中的某些部位进行重定位,即代码段和数据中中那些绝对地址引用的位置。对于每个需要重定位的代码段或数据段,都会有一个相应的重定位表。比如”.rel.text”就是针对”.text”的重定位表,”.rel.data”就是针对”.data”的重定位表。

    GOT是全局偏移表( Global Offset Table),用于存储外部符号地址;PLT是程序链接表(Procedure Link Table),用于存储记录定位信息的额外代码。

    寄存器

    常用寄存器:

    EAX:一般用作累加器
    EBX:一般用作基址寄存器(Base)
    ECX:一般用来计数(Count)
    EDX:一般用来存放数据(Data)
    ESP:一般用作堆栈指针(Stack Pointer)
    EBP:一般用作基址指针(Base Pointer)
    ESI:一般用作源变址(Source Index)
    EDI:一般用作目标变址(Destinatin Index)

    其中esp是栈顶,但是低地址;ebp是栈底,是高地址。

    关于x86平台寄存器使用的一些约定:

    • 当该函数是处于调用者角色时,如果该函数执行过程中产生的临时数据会已存储在%eax,%edx,%ecx这些寄存器中,那么在其执行call指令之前会将这些寄存器的数据写入其栈帧内指定的内存区域,这个过程叫做调用者保存约定(英文原名称:Caller Save)。
    • 当该函数是处于被调用者角色时,那么在其使用这些寄存器%ebx,%esp,%edi之前,那么该函数会保存这些寄存器中的信息到其栈帧指定的内存区域,这个过程叫被调用者保存约定。
    • %eax总会被用作返回整数值。
    • %esp,%ebp总被分别用着指向当前栈帧的顶部和底部,主要用于在当前函数推出时,将他们还原为原始值

    X86_64平台的约定

    相比于寄存器而言,存储器的访问太慢了,因为X86_64有16个通用寄存器,当函数调用时少于6个参数是直接通过寄存器来存储参数的,多于6个还是依然通过入栈实现。

    所以需要注意两点:

    • 为了效率,函数参数尽量少于6个;
    • 寄存器只有64位,传递较大参数时,尽量使用指针。

    帧栈原理

    32位帧栈:

    主要依靠的汇编指令:call和ret。前者跳转到函数入口执行,后者处理函数返回。

    call _func做了两件事:

    1. pushl %eip // 保存下一条指令的地址,用于函数返回继续执行
    2. jmp _func // 跳转到函数_func

    ret指令的作用相当于

    1. popl %eip // 将栈中的地址复制到eip寄存器中,返回前一个函数的上下文执行

    leave指令相当于下面两条:

    1. moveq %rbp, %rsp // 将现在的栈底赋值给栈顶
    2. popq %rbp // 将前一个栈底弹出

    x86_64帧栈

    通常情况下,x86_64函数简化了帧栈,不再将x86中的%rbp寄存器作为栈底寄存器,只是用%rsp记录当前栈顶。唯一写入栈的操作就是执行到call时会push返回地址 8字节,但是以下情况需要用到帧栈:

    1. 局部变量太多,64位寄存器处理不过来;
    2. 局部变量中存在数组或者结构体(或者叫做类类型)的变量;
    3. 使用取址操作符&就计算局部变量的的内存地址;
    4. 调用另外一个超过6个参数的函数;
    5. 需要在修改它们之前保存被调用者保存寄存器的状态;

    栈回溯

    在早期技术中,栈回溯是通过(%ebp)获得上一个栈的地址,再对上一个地址取值就是上上个地址;但现代Linux放弃了这个技术,节省出了一个ebp寄存器,原有的栈调用被放在eh_frame这个专用于存储栈回溯相关的段中。

    CFI伪指令生成在汇编文件中,根据链接选项(是否开启debug以及是否使用eh_frame段)来确定指令的执行内容,形式如下:

    cfi_startproc
    pushl %ebp
    .cfi_def_cfa_offset 8
    .cfi_offset ebp, -8

    CFI(calling frame info)的作用是出现异常时stack的回滚(unwind),回滚的过程是一级级CFA往上回退,直到异常被catch。

    其中eh_frame是编译完就静态生成好的,这个点困扰了我好久,现在大概理解了回溯的要点,eh_frame是根据汇编代码生成的一张表,运行时汇编对cfi的修改实际上就是在改动eh_frame中的索引。

    引用:

    https://zhuanlan.zhihu.com/p/286088470

    https://blog.csdn.net/a568921915/article/details/103427976

    https://zhuanlan.zhihu.com/p/288636064

    https://stackoverflow.com/questions/7534420/gas-explanation-of-cfi-def-cfa-offset

    https://www.jianshu.com/p/e7e21a51093e

    https://zhuanlan.zhihu.com/p/290689333

    https://zhuanlan.zhihu.com/p/302726082

  • 传统制造业 vs 互联网行业

    今天看到一个观点。

    互联网行业核心是去中间化,提高沟通效率,将生产端和消费端直接打通,买车直接跟卖家谈,没有中间商赚差价。去中间化只是为了降成本,能够在中间减少中间商百分之几的利润,这是非常好的一点,但是这种做减法是有尽头的,永远不可能把成本减少到百分之百以下。去中间化只是提高中间的一段,如果能够提高人类30%的效率就不得了了。

    但是做加法是没有尽头的,可以直接增加达到百分之一百,百分之五百。换句话来说人类文明是物质文明,不是信息文明,我们每一次工业革命都意味着物质的极大丰富,意味着成百上千倍效率的提升,而不是那30%,50%的效率提升。所以把互联网信息革命上升到与第一次工业革命和第二次工业革命相提并论的程度是不准确的,因为互联网革命只不过是降低了百分之三十五十的成本。