㈠ 编程究竟难在哪
1. 难在思路的构建
你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法、数据结构和 API 等进行编程实现。
2. 做出来容易,做好难
当你解决了思路构建的难点,解决了一个问题,但是你是否使用的最好的方法,这就是所谓的做出来容易,做好难。
写的程序能够解决问题且没有 bug 是基本要求。这里的做好不是指功能正确,而是写的程序容易理解,能够很容易让其他接手的程序员(水平不差)看懂为什么这么写。
正确是现在怎么写不会挖坑害将来的人,现在怎么写能让别人1年后看你代码时候不可能理解错你现在的意图,现在怎么写能在别人将来犯错的时候提示他你错了。
编程是给未来的未知人讲故事,你无法知道将来这个人是谁,他都懂什么,他经历过什么,这个系统将来已经是什么样子了。我们需要在这种无知,缺乏信息的情况下做决定,从千万种把这件事做出来的方法里,选出你觉得最能把这个故事给讲好的那种方式,把故事写下来。
编程是一种沟通,用程序跨越时空之沟通则是一门属于程序员的特有的艺术 —— 阿莱克西斯
3. 规范性好,有良好的可扩展性
并且程序的可扩展性,规范性高,后期维护难度小。整体功能实现的过程中,各种情况考虑规范。其实学习编程和学习其他内容一样,没有什么太大差别。心态放好,用对方法,你就能够学好。重要的是学知识的人是什么样子,而不是学的是什么。
在这给你一些学习编程的建议,希望对你有用。
1. 让编程成为一个习惯
想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。
对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。
为自己设定一下,每周拿出几天,每天拿出几个小时,编程学习就这样慢慢步入正轨。
2. 将每天的学习过程拆分成小块
对待编程学习,我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时,我们完全可以先做40分钟、然后休息5分钟,整个过程重复4次。很明显。
㈡ 程序员的逻辑思维可以从哪些方面进行培养呢
程序员逻辑思维的培养对软件工程非常重要,思维快的能快速编写逻辑代码。可以从一下几个方面进行慢慢培养。
第一:明确学习目的
逻辑思维学习编程对多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
第二打好基础,学好基础知识对我们开发也很重要学编程要具备一定的基础,总结之有以下几方面:
首先是数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
其次是逻辑思维能力的培养 学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。最后是选择一种合适的入门语言 面对各种各样的语言,应按什么样的顺序学呢?程序设计工具不外乎如下几类: 1)本地开发 应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平台开发 开发工具如 Java 等。 3)网络开发 对客户端开发工具如:Java Script 等;对服务器开发工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。 以上不同的环境下几种开发工具中 VB 法简单并容易理解,界面设计是可设化的,易学、易用。选 VB 作为入门的方向对出学者是较为适合的。
第三:注意理解一些重要概念
一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三,触类旁通。
第四:掌握编程思想,编程思想使用较多的就是oop编程思想
学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。例如学习 VC 就要学习 Windows 的内在机理、什么是线程......;学习 COM 就要知道VTALBE 、类厂、接口、idl......,关键是学一种思想,有了思想,那么我们就可以触类旁通。
第六:多实践、多交流,一切思维来自项目开发的积累
掌握编程思想必须在编程实际工作中去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。
第七:养成良好的编程习惯
编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习惯。编程风格的好坏很大程度影响程序质量。良好的编程风格可以使
程序结构清晰合理,且使程序代码便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。
第八:上网学编程
在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载
8.加强计算机理论知识的再学习
思维培养学编程是符合“理论→实践→再理论→再实践”的一个认识过程。一开始要具有一定的计算机理论基础知识,包括编程所需的数学基础知识,具备了入门的条件,就可以
开始编程的实践,从实践中可以发现问题需要加强计算机理论知识的再学习。程序人人皆可编,但当你发现编到一定程度很难再提高的时候,就要回头来学习一些计算机科学和数
学基础理论。学过之后,很多以前遇到的问题都会迎刃而解,使人有豁然开朗之感。因此在学习编程的过程中要不断地针对应用中的困惑和问题深入学习数据结构、算法、计算机
原理、编译原理、操作系统原理、软件工程等计算机科学的理论基础和数理逻辑、代数系统、图论、离散数学等数学理论基础知识。这样经过不断的学习,再努力地实践,编程水平一定会不断提高到一个新高度。
这就是总结出来的思维培养模式,希望能帮到你,谢谢!
㈢ 思维模型-软件吞噬世界+ 1
软件定义世界+
根据硅谷王川网文整理
1、数据是软件的燃料
软件正在吞噬世界。目前市值最大的几家公司,google, apple, amazon, facebook, 本质上都是软件公司。问题的关键是提前看清楚,未来哪一家公司的软件,吞噬的世界多一些。如果说数据是软件的燃料的话, 那么分析的一个角度也许是,哪家软件公司在关键重要的数据的采集方面占有决定性优势?
2、肉体与意识是分离的
软件吞噬世界的一个例子: 越来越多的软件,其代码和底层的硬件独立无关。当年集装箱的出现,使工业化国家的贸易额二十年内增加七倍。当程序代码在virtual machine 上运营,独立于硬件架构时,其经济影响远远大于集装箱。现在甚至许多底层的传统由硬件操作的通讯功能,都在虚拟化,转换为软件控制。
软件连接的世界,不在乎底层硬件的变化。就好像一个人的生物躯体里面的原子分子每几年都全部换过一次,但是个体人的自我意识和身份都是始终一致的。
3、员工数量角度看价值
全球最大的硬件公司,市值超千亿美元的只有三家。Intel, 十万雇员,160 billion usd. 三星, 三十二万雇员,150 billion usd. 网络器材公司 思科,usd 137 billion usd. 七万雇员。
做硬件的惠普今年市值已经缩水近四分之三,只有 22 billion usd, 三十一万雇员。做存储硬件的emc, 股价五年内没动,只有 50 billion usd, 七万雇员。 而谷歌一家软件公司,市值超过 intel + 三星 + cisco 总和, 但只有六万雇员,相当于这三者的八分之一不到。
4、虚拟世界吞噬物理世界
1. 软件吞噬硬件。2. 高级(可重复使用,应用层的)软件吞噬低级 (不可重复使用,底层的)软件。3. 虚拟世界吞噬物理世界。
5、软件吞噬世界
软件正在吞噬世界。 Software is eating the world.
这句话最初来自于风险投资家,原网景创始人Marc Andreessen, 2011年八月在华尔街日报上发表的文章. 产业被吞噬,意味着被边缘化,利润微薄,生存艰难.
让我们先看看2015年 科技 界那些软件和硬件公司.
(1)
2015 年最后一天,美国股市市值前六名的公司依次是:苹果,谷歌,微软,巴菲特的Berkshire Hathaway, 埃克森美孚石油公司和亚马逊. 它们的市值在三千亿美元到六千亿美元之间.
这里面的苹果,谷歌,微软和亚马逊,本质上都是软件公司。有的人会说苹果是卖硬件的,但苹果的iTunes,iCloud,AppStore的软件生态系统才是其掌控用户的核心所在。
曾被讥讽为"一个书店晚上业余做IT", 亚马逊现在成了"一个IT公司顺便也卖书".
(2)
和软件公司的独占鳌头相比,上市公司中市值超过千亿美元的硬件公司只有三家:
英特尔,市值一千六百亿美元,员工十万.
思科,市值一千三百亿美元,员工七万.
三星,市值一千六百亿美元,员工三十二万.
而作为软件公司的谷歌,市值五千多亿美元,超过上面三家硬件公司的总和,但其六万员工数,还不到上面三家公司员工数的八分之一.
成立于二战前的惠普,靠硬件起家,主营业务是电脑和打印机等硬件,营收一度是硅谷的龙头老大,有近三十万员工。但市值只有两百亿美元左右,不到一年前的三分之一.
电脑硬盘行业,九十年代的十年内,单位面积存储量增加了1000倍,但是价格却下降70%.九十年代末期,三大硬盘公司投入六十五亿美元用于研发,但大家累计亏损八亿美元。硬盘公司Western Digital 老总 Roger Johnson 称 硬盘领域是“为时最长的工业界的慈善事业”.
为什么会有这种巨大的差别?软件公司为什么在世界经济格局中独占鳌头?
(3)
极具讽刺意义的是,软件公司的兴起,正是来自于硬件成本的大幅度下降和硬件技术的标准化,模块化.
如果硬件公司不能通过硬件来推广自己的软件标准,自己就成了自己的掘墓人.
硬件成本下降的最根本动力,来自于芯片业的摩尔定律: 单位成本的芯片,其运算速度每两年翻一番。摩尔定律自1965年以来,五十年发展趋势从未被中断。
类似的技术进步速度,也体现在内存容量,互联网带宽的发展上。
2000年,Andreessen 在运营第一个云服务公司 Loudcloud 的时候,企业客户运营一个基本的互联网应用的成本是十五万美元一个月. 到2011年,同样的应用在亚马逊的云服务上一个月只需1500美元。有分析师统计,亚马逊云服务的价格过去六年下调了四十多次,以每单位Giga RAM 成本计价,每年价格下调平均超过15%.
本世纪初,通过宽带接触互联网的人口全球只有大约五千万, 2014年这个数字估计超过二十三亿,到2020年预计全球通过智能手机上网的人数将突破五十亿.
当初创公司的运营成本大幅下降,几个人开发的产品可能迅速通过移动互联网接触到几十亿潜在客户时,原先制约经济发展的硬件瓶颈已经不是主要矛盾,创造核心价值的来自于全新的软件应用.
Andreessen在他的文章中举例,美国的实体书店Borders 2001年把它的网上业务转卖给亚马逊,当时的主要逻辑是网上卖书的收入太少,不重要。十年之后, Borders 宣布破产,两百多个实体书店被迫关门。而亚马逊早已成为世界上最大的书店,大部分书籍可以通过它的 Kindle 软件瞬间传播到读者的手机上。
在美国最大的录像实体店曾经是Blockbuster,但它已经于2010年宣布破产。今天美国最大的录像店 Netflix (奈飞),本质上是个软件公司。
谷歌,作为软件公司,本质上是世界上最大的广告公司。它的崛起,加速了传统纸媒的衰落。
Uber作为一个软件公司,极大打击了传统出租车业。
Airbnb作为一个软件公司,已经对传统旅馆业务形成强劲威胁
这就是软件吞噬世界的序幕,但好戏其实刚刚开始。
(4)
硬件工程师的一个典型诘问是: 没有硬件,你的软件怎么运行? 皮之不存,毛将焉附?
我的回答是:没有张屠户,不吃混毛猪。 硬件技术外置接口的标准化,模块化,使得其替代选择增多 。再加上摩尔定律因素的影响,其价格不断下降。
皮虽重要,但是如果毛有很多皮可以选择替代,皮的价值就没有那么高了。
虽然做硬件的很辛苦,技术含量甚至有时比应用软件高,但是并不等价于其在价值链上的地位高。 在新产品开发初期,硬件往往是技术的瓶颈,价值最高,但随着技术的进步,软件移到价值链的顶端,是必然的事情。
软件吞噬世界三段论是:
第一, 软件吞噬硬件 。
第二, 应用层的软件,吞噬模块化,标准化的底层软件 。
第三,也是最精彩的, 跨越物理边界的虚拟世界,将吞噬物理世界,创造前所未有的新价值,这里面的无限可能,将远远超越简单的软件和硬件之争。
没有深刻意识到这个趋势的发展,还死守着”实物就是财富”的价值观的人们,下面几十年可能面临巨大的文化震惊。
6、脑机接口
脑机接口的可能方案之一 (来自 neuralink 的 DJ seo) :神经灰尘 (neural st ), 把几千个大小为十到一百微米的硅基感知器直接撒到大脑皮质层里,皮质层外安装有三毫米大小的超声波收发器作为中继站,头骨再外置一个收发器。
应当是软件吞噬世界,物理世界很多东西变成是可以被软件抽象化后调用的一个 function call 而已。//@乐观程序员:这个技术发展下去,程序员就可以控制所有人和整个世界了……
7、
Seth Godin:
“工业 社会 是个零和 游戏 。每一个产出生成一个奖励,奖励不是管理方就是工人获得。稀缺的资源必须要分配,双方的冲突是内在结构性的。
在一个连接经济里,连接产生富余。选择很多的时候,过去稀缺的东西突然变得富足。
挑战来自于,要重新适应一个富足的世界。具体的说,就是思考先如何对网络做出贡献 (增加新的连接),再去想如何索取。如果你贡献的足够多,你得到的也就自然更多。”
“力量中心,正在迅速转移。从那些制造(不再稀缺的)东西的人转移到那些创造艺术建立新连接的人。工业经济不会消失,但是话语权将来自那些建立连接而不是制造零件的人。” 这可以看成软件吞噬世界的另一种说法。软件程序本质上也是建立连接。低估虚拟经济的连接威力的人,最终会被经济规律抛弃。
8、旧船票上不了新客船
1/ 人们有一个巨大的习惯倾向,就是用自己大脑固化后的抽象思维模型,判断标准,理解所有新生事物。
2/ 数字相机刚出来的时候,很多人会说,数字照片质量不如胶卷冲洗出来的照片清晰漂亮,存到 PC 上很麻烦不如放到相册里收藏, 因此不看好,等等。
3/ 说过这些可笑的话的人,要么已经不在了,要么自己忘了,要么不好意思承认。
4/ 真正的重大转折点,来自于 iphone 的出现,把相片的管理变成一个软件应用,可以瞬时和多人分享,可以有千万种玩法。
5/ 这可以看成是软件吞噬摄影业。这是不看好数字相机的人没有想到的。
6/ 或者说,他们理解的软件还是低维度的单个 PC 上的 photoshop 之类的软件,而不是那种可以瞬时大规模共享的全新的软件应用。虽然都叫软件,但不是一回事。
7/ 大规模共享,就增加了很多全新的维度,可以把拍摄的照片瞬时让别人的手机上的别的软件调用,这样就催生了最初发明者完全不可能想到的应用。
8/ 软件吞噬世界的一个本质是,市场涌现出某种标准化的应用编程接口 API,当这个接口承载的参与者数目超过一个临界点后,这个软件系统内的效率和复杂度将会迅速超过老的系统,而且这个优势将迅速越滚越大。把自己的相册里的几十张照片与几位好友面对面分享,和几百张照片在社交媒体上和上亿人共享传播,两种体验完全不可同日而语。
9/ 大规模共享的软件应用化,是一个时间很短的过程。老系统的人按照老的抽象模型,长期拘泥于“数字相机像素低,照片质量不高”这个观察维度里固步自封,以至于新的维度出现时,完全视而不见。在他们的世界里,周边环境出现了巨大不连续的跃迁。等到自己的饭碗被砸掉时,已经来不及反应了。
10/ 当很多人还在纠结电车/ 汽车 的争论时,他们没有意识到,这个 游戏 早就大局一定,下面是软件吞噬自动车的时代了。
11/ 按照这个思路,软件吞噬自动车的一个发展可能性,是大量自动车,一方面彼此间可以联网实时共享路况等各种数据,一方面可以和大量车载移动商家直接联网, 然后通过自驾技术让买卖双方的车的物理距离在最短时间内降到接近于零,从而实现交易。
12/ 这里面会自然涌现出一个事实上的市场份额最大的标准 API,由某家车商控制。别的车商,为了能分一杯羹,会把自己的车辆软件接口努力和这个 API 全面兼容。 然后这个 API 上会涌现出第三方开发者创造出来的各种复杂的软件应用,可以高效率地实现各种资源共享, 并形成一种新的我们无法想象的复杂而丰富的生态。
13/ 这个发展过程中,出现的各种车祸,或者失败的尝试,都会被来自老的抽象模型中的反对者作为不看好的证据。
14/ 类似逻辑可以想象,软件吞噬全球金融业。在这里,我们常会听到很多人说 “Visa/Master 等系统每秒钟支持的交易数目远远超过某个区块链系统”
15/ 类似逻辑也可以想象,多个人脑/电脑服务器 高带宽地联网协作,形成某种新的高效生命体, 等等。
16/ 而如果以史为鉴,大部分人无法理解这种引入新维度之后的演变,只会盯着新事物在单个维度的不足,来支持自己错误的结论。等到攻守易势,大局已定时,已经没有时间和能力避开灭顶之灾了
当一个新生事物被媒体报道死过几十次,但过几个月后发现它还活着,那么背后一定有你还未理解的细节
这个“物壮则老”的壮, 应当算是一种 premature optimization
9、旧思维模型理解不了新范式
1/ 大部分基金经理 (97%以上) 长期表现 (5-10 年以上,扣除管理费用后) 落后于指数基金 (这里指标准普尔指数)的原因是这样的:
2/ 如果过去他们的某个策略的表现超越指数基金,他们对于这个策略背后的逻辑的信心就加强。
3/ 他们对于自己过去的成功, 有一个简化的思维模型,但是实际的逻辑远比这个更复杂。实际的逻辑,背后有各种很难观察到的假设和边界条件, 而这些假设和边界条件都可能改变。
4/ 短期的策略成功,注定会吸引模仿者。模仿者涌入的初期,会给成功的策略更多正反馈,表现更好,于是强化了投资者的信念。
5/ 太多模仿者的涌入,导致策略效果变差,需要增加杠杆才能维持原来的回报。
6/ 过了某个临界点,支持原来逻辑的假设和边界条件改变了,原来的策略完全失效,甚至因为大量投机者迅速平仓,导致原来的策略造成巨大损失。
7/ 面临这个临界点,最初信念极强的成功者往往反应会迟钝。因为其大脑形成充分强化的逻辑,有巨大的确认偏见,对于任何与其逻辑相矛盾的证据,会长时间抵触忽略。这就是基金经理落后于被动指数基金的第一个关键点。
8/ 随着 社会 发展,会不断涌现出全新的大公司/投资策略, 吸引资本涌入。新公司的崛起往往会让老人困惑,因为他们的商业模式/商业逻辑不太一样。涌现出来的新的成功公司,往往有一些重要特征,不在老人的思维模型之内,因此即使直挺挺放在他面前,也完全被忽略。
9/ 八十年代市场低估可口可乐,是因为没有意识到他在国际市场上扩张的潜力。同样大家对于二十年钱的Walmart 和星巴克缺乏想象力。同样对于过去五年亚马逊超越 IBM 和 Walmart 的逻辑缺乏理解力。同样,他们也会对未来超越亚马逊的新公司新组织缺乏理解力。
10/ 没有搭上新范式里新公司的快车, 这是一个问题;但是如果狂妄到要以有限视角的信息和逻辑去做空新的大的成长公司,则可能致命。这就是基金经理大大落后于被动指数基金的第二个关键点。
11/ 意愿不等于结果。没有任何个体对外界的理解是全面的和完全正确的.复杂系统的演变,无法用机械简单的因果逻辑来诠释。市场的 历史 经验表明,个体的意愿和结果的错位则是必然的。如果缺乏某种简单粗暴的结构性优势,普通投资经理想要长期跑赢市场指数,基本上就是白忙一场。
12/ 被动基金的最大优势在于,纠错机制是客观的/自动化的/不受任何情绪影响的。
13/ 主动投资要想长期超越诸如 SP500 指数基金,需要的是:1/扩大投资选择的空间,不仅仅是美股 2/ 引入更加客观/更接近商业本质的纠错机制 3/ 增加其它的外部的结构性优势 (比如利用自身商誉可以拿到普通人无法拿到的交易)
这很复杂。不能假设你掌握所有的信息。 过度优化是万恶之源 :)//@潜伏在欧洲:为什么要买被动基金?软件吞噬世界的时候,买美股市值最大的前五个或者前10个公司收益岂不是赚的更多?何况被动基金占比越来越多。
世间很多盲动属于巴菲特所说的 "self-eutralizing" :) Buffett: "A number of smart people are involved in running hedge funds. But to a great extent their efforts are self-neutralizing, and their IQ will not overcome the costs they impose on investors "
10、生命涌现三要素
1/ 生命涌现的三个基本要素:第一要有很强的能量来源 ; 第二要有固体形态可以存储保留信息 ; 第三要有高流动性,可以实现信息的交流/组合/计算。
2/ 这些是必要而非充分条件。
3/ 太阳系里除地球外,其它行星要么是气态无法存储信息,要么是硬梆梆的一块不存在流通。只有木星,土星和天王星的的一两个卫星勉强满足这三个条件。
4/ 对比到个人的发展来看:第一要多人多经济发达的地方去发展。 第二,自己的工作要能够可以记录存储下来,供以后利用。给被人打工,做一些事务性的东西,很难有记录存储的功效。钱可以看成是一种记录存贮的形式,但是如果很快就花光了,也就无法存储下来。写作,艺术创造,打造产品品牌,都可以看成是记忆存储的工作。
5/ 有了存储,还必须流通,寻求和其它资源组合/创造新价值的机会。所以不断各个渠道网络去努力传播,也非常重要。
6/ 能够在 “能量/存储/流通” 这三点都做到的人/公司/组织,和没有刻意做到这三点的人/公司/组织,其差别类似 有机物/无机物的差别。
7/ 可以看到,世界的发展史,就是一部: 能量摄取效率更高,存储效率更高容量更大,信息流通更快更多,生命形态更复杂的发展 历史 。
9/ 所有的专业人士都应当思考创造一些属于自己的,可以长期保存,反复引用,广泛流通的产品作品,这样才能真正实现个人的有机成长。否则不断要出售自己的时间,来换取金钱谋生,是一种痛苦的/低层级的存在。金钱有时并不是最好的信息存储方式,如果被忽悠去举债而无力偿还那就更糟糕。
流通和计算似乎本质上是一件事。东西一流通,就会自然地发生各种排列组合。所谓计算,本质就是把不同的东西(输入)用不同的方法排列组合。算法的研究,无法就是提高流通的效率而已。所谓软件吞噬世界,就是说“最高效的计算能力,将会主导世界”而已。
㈣ 程序员成长第二十三篇:员工不符合预期,怎么办
招的人多了,总会遇到几个不符合预期的。那对于这类不符合预期的员工,我们是直接开掉吗?
还是那句话, 得看情况,处理问题不能极端。
首先,要找到员工不符合预期的原因。
管理学大师提出过一个公式:企业持续成功 = 战略 X 组织能力。
而组织能力 = 员工思维 X 员工能力 X 员工治理。
杨三角思维模型是用来做组织管理的,但本质还是分析员工用的。员工不符合预期,也可以借助这个模型来分析。
一、员工思维:员工不愿意做事,没有主动性。推动起来很难受。
二、员工能力:专业技能太差,教了很多遍还是不会。沟通能力太差,沟通起来很痛苦。
三、员工治理:没有给员工分配合适的任务。没有给予足够多的培训。
首先,我们得从员工治理上来分析,是不是管理者自己的问题。对于新人来说,前期应该先培训,培训有没有到位?分配的任务难度过大?这是管理的问题,并不是员工的问题。排除了管理问题后,再分析,是员工能力问题,还是态度问题?
我有个观念,虽然不一定对,但我一直在这样实践。 就是不要轻易放弃一个队友。 培养下属能力就是管理者的本职工作之一。
如果你分析发现员工是态度问题,你们沟通过一次之后,还不改的。这种就不要再给第二次机会了。因为态度真的很难。
如果对方态度好,很努力的在学,而且确实有进步。那至少要给2次机会。但三次培训还不行,这说明真不适合这个岗位。可以帮助他分析原因,也许换岗也是一个好的方案。工程师岗位很多,我就见过一个后端程序员转岗为前端程序员的案例。前端会简单一点,而且他的性格非常细心,转型前端后,对页面效果简直是像素级的完成度。最后居然跟UI妹子好上了……
我并不认可开了多少人才是真正的管理者。要有原则的来开除人。更重要的是,在早期面试的时候,对招聘要求设置更高一些,找价值观一致的人,避免招错人。招错人的成本是巨大的,尤其是工程师。
㈤ 逻辑思维对程序员重要吗
很重要,在项目实际开发中逻辑思维是我们的引路人,他的灵活性直接影响我们开发的效率,对我们来说非常重要。
㈥ c逻辑思维到底是什么要怎么培养呀
读一些逻辑性较强的经典着作,要抓住着作的条理性和逻辑,建立在理解书中概念的基础上,我们可以模仿其中的推论,复现书中的关键内容为止。
这时候,我们知道知识的来龙去脉,我们是通过思维而获得知识,而不是通过大量的熟背强记知识,知识更具有逻辑的使用价值。
反之,那些只求生吞活剥别人思想的人,无异于让别的母鸡在你的脑袋上下蛋,即使博学多识,却也深陷大量的知识而无法自拔。
托尔斯泰曾说过:知识,只有当它靠积极的思维得来而不是凭证记得来的时候,才是真正的知识。
心理学家罗伯特·依·布伦南说:“如果没有基本法则的知识,就得处理一串串冗长的信息,我们的记忆必定负担繁重。最完美的记忆方法是把现象按因果关系联系起来,因为哲学的任务是研究这种关系,所以我们可以主要通过培养哲理头脑来弥补记忆力的不足。”
㈦ 说一说,程序员思维会给你的生活带来哪些影响
比起程序员思维,程序员身份会带来更多实实在在的影响。比如朋友家的电脑软件坏了,第一时间会给你打电话、宽带坏了会给你打电话、手机坏了会给你打电话、刚买一个无线路由器会给你打电话等等。有一次我一个朋友给我打电话说他家微波炉怀了,我说我也不会修家电啊,他告诉我说他家的微波炉是智能微波炉。这种类似的奇葩事情最近几年越来越多,我也记不清给多少人重装过系统,尽管我总是说:系统重在维护,不能一有问题就重装,但是没有人能听得进去。
㈧ 怎样才能锻炼出程序员的思维
要锻炼出程序员的思维 首先要做到下面几点
多家练习 才可熟能生巧
1、扎实的基础
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。
2、丰富的想象力
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。开阔的思维对程序员来说很重要。
3、最简单的是最好的
这也许是所有科学都遵循的一条准则,复杂的质能转换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4、不钻牛角尖
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5、对答案的渴求
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6、多与别人交流
三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7、良好的编程风格
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8、韧性和毅力
这也许是“高手”和一般程序员最大的区别。高手们并不是天才,他们是在无数个日日夜夜中磨炼出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
㈨ 《好好思考》:如何建立基于思维模型的知识体系
精进学思行 精进学思行
本周一我们开了疫情复工后第一次全员大会,创始人在会上介绍了疫情对我们的影响,重点说明了不确定是未来的世界的常态,以及我们如何应对,进而提高我们的确定性。
我一直认为公司和个人的发展有很多相通和可以借鉴的地方,所以,组织面对不确定性的应对措施,比如聚焦,优化管理以及降本增效,对个人应对不确定的未来也是有启发性的。
面对未来的不确定性和复杂性,在 VUCA时代,你需要一件称手的武器 我们分享了一个重要的工具——清单。针对这个话题,分享最近读到的一本书《好好思考》,这本书重点介绍了面对快速变化的复杂的,如何更有效构建我们的学习和思考能力?作者是成甲,我很喜欢的一个作者,也是一个非常专注于“学思行”的人,他之前写过一本书叫《好好学习》,这是他的第2本书,书中很多观点对我很有启发性,分享与你。
这本书回答了三个问题:
为什么多元思维模型重要且有效?
如何建立以问题为导向,基于多元思维模型的知识体系?
如何利用这个体系解决复杂的问题?
1 为什么多元思维模型重要?
我们简短回答第一个问题,重点介绍后面两个问题。
那么为什么要掌握多元思维模型?我理解有两个重要原因。首先是"多元",多元可以理解为多个角度,因为现实世界的问题往往是很复杂,只用一个角度去理解,存在很大的局限性,所以,为了能够更加全面深刻地理解事物的本质,以及掌握更多的解决方法,需要建立等多的视角;其次,这里提到的模型,主要是指重要学科的重要原理,因为是基于原理的,所以通常具有很强的适用性,且能从根本上解决问题。
多元思维模型,最出名的来源是——查理.芒格,巴菲特的长期搭档,成甲而是受其影响,转变了对高效学习的认知。以前他认为,学习就是掌握更多知识和经验,而现在认为是为了更好寻找做决策的依据,以便在不断变化的复杂世界中做出更好的决策。
2 什么是多元思维模型
”思维模型”指的是我们每一个人思考时所使用的思维模板,可以认为是思考的“套路”,在查理芒格看来,所有能够持续有效解决问题的策略,都可以称之为思维模型。
那什么是"多元"?就是模型要是多个不同维度,芒格推荐要学习重要学科的重要原理,因为它们是人类最顶尖的智慧所发现事物普遍规律。当面对一个问题的时候,要多个角度对问题进行分析和解决,而不是单一的视角。
2.1 多元思维模型解决问题的4个层次
作者以自己砍价的为例,总结了我们在解决问题时,使用的策略的4个层次:经验技巧,方法流程,学科原理和哲学视角。
经验技巧,就是我们在实践中总结的零散经验,在解决问题时,给我们以启发,比如"从脚脖子砍价"。作者提到自己2000年在北京买衣服的一次经历,他看中一个衣服,老板报价400,成甲尝试问了一下“200行不行?”,老板说“好,成交”,他直接吓跑了,后来他的朋友说,这种地方砍价要从脚踝开始,别人报价400,要先砍到40,后来在朋友的陪伴下,以90元成交了,这就是典型的经验技巧。
但上面这个砍价方法不具有通用性,比如你去买车,别人标价40万,你直接砍到4万,肯定会被人打出来的。所以,这个方法有它的局限性,还有其它方法吗?作者后来发现,其实有一本商业书籍,专门讲一系列谈判方法,而其中的第1个策略就是"狮子大开口",而对应的,还有很多类似的这样的方法论,这就是方法流程层面。
但这还不是最根本的,为什么这些方法流程会有效呢?比如拿前面的这个砍价,为什么商家开价那么高,因为这里涉及到心理学的“锚定效应",这就是学科原理层面。
而比这个锚定效应更深层次的是心理学对人的研究思路,基于人性的弱点,可以得出很多类似的原理和效应,这就是哲学视角了。
作者认为上面这四个层次,是一个比较通用的版本,也就是在解决任何问题的时候,使用模型的时候,都可以从这4个层次去考虑。同时,作者强调,这些不同的层次没有优劣之分,也要看具体的场景,如果你是公司的中层管理者,那么第2个层次的方法流程对你比较实用,而如果你是公司的高管,企业家或政府高层,那么对于第三层学科原理和第4层哲学视角,就要投入更多的精力。
2.2 棱镜法分解问题层次
基于上面的层次,作者提出了一个分析模型——棱镜法分解问题的层次。
棱镜的概念来自于牛顿当时用三棱镜把阳光分解为不同层次的7色光。我们分析问题时,也可以用类似的棱镜,只不过这个棱镜的名称叫“追溯答案的因果链源头”,所以,书中也提到查理.芒格的观点:“如果你想要变得聪明,那么就要不断的去问为什么?为什么?为什么?”,持续去问为什么,就是在挖掘事情的因果链条,当挖到底层,通常会将答案关联到最深奥的理论架构中,芒格建议要去了解这些主要理论。
成甲特备指出,前面的三个层次的思维模型通常是具体的陈述性知识,而第4个层次,则是从思维方式的层面上找有效的策略,也就是发现前面的三个层次是如何建立的思路,也可以称为是“元思考”,就是对“思考的思考”,就是关于如何思考的程序性知识,如果前面对应的是具体思维模型,第四个可以成为是思维方式,在后面会再介绍。
3 如何建立基于多元思维
本书对我的一个最大启发是,我们不只是掌握更多的思维模型,解决一个个具体问题,而是建议一套基于多元思维模型的知识体系。
为什么要建立一个这样的知识体系?除了前面提到的多元思维模型的优点外,还有一个重要原因是,这个体系中的思维模型可以形成互动和迁移,提供更多解决问题的思路。
那么,如何建立这样的体系呢?书中给了4条建议:体系要全面,“问思模”,模型间的桥梁,体系的骨架。
3.1 体系要全面
而作者也提出了这个体系,必须要有足够多样的思维方式和足够多的丰富的知识层次。
怎么样算是足够?尽可能的掌握重要学科的重要原理,哪些是重要学科呢?查理芒格给的建议是:数学,生物,物理,社会学等。成甲在这本书当中给了更加细致的总结,具有启发性,他将我们至少应该掌握的思维模型领域分为四类:
①理解物质世界的基础科学,比如物理学数学和化学,因为我们生活的是一个物质世界,所以我们需要了解分析这个物质系的工具;
②理解群体系统规律的科学,如经济学和社会学等,因为我们人是社会型的动物;
③复杂系统规律的科学,比如复杂性科学,人工智能等,因为未来是连接越来越紧密,越来越复杂的世界,它所呈现的规律对我们个体也会产生深远的影响。
④理解精神世界的人文学科,如心理学,美学,宗教等,因为我们不仅是生活的物质世界,同时也生活在精神世界。
上面4个领域的思维方式和思维模型,是构建我们完备知识体系的基石,覆盖了我们认知世界的主要维度。
作者也特别强调了,我们去掌握这些学科的时候,要学会从思维方式的不同上,更深入理解各个学科的价值,比如:
数学发展出的是“符号与逻辑推理”的思维方式;
物理学发展出的是“第一性原理”的思维方式;
进化生物学发展出的是“物竞天择”;
复杂性科学发展出“系统思考”的思维方式;
现代美学发展出“否定常规”的思维方式。
3.2 问思模
提到发展体系,我们很容易想到学科自己的分类体系。作者在书中谈到了他和一个研究儿童养育方面的朋友的交流,谈到了在这个领域当中的知识体系,它的结构呢如下图所示
从这个分类当中,我们能看到这种分类其实是比较合理的,因为它满足MECE的原则,我们经常看到每个学科的经典书籍的目录也是这种组织方式。但是,这里有两个问题:
①学科内的知识点,都能够这么简单清晰地分类,且分得这么清楚吗?
②这种结构有助于我们记忆和存储知识,但是不利于融会贯通。
我自己其实也有这种困惑,因为我也尝试过,如果按照这种方式去给学科知识分类,一旦深入进去,就会发现有一些知识点可以属于多个门类。第二点很像我们在 《程序员的思维训练》3|专家的练习 中提到的,这种知识的框架能够帮助我们去整理知识和清晰表达,但是很难直接用它去解决我们所面临的具体问题。
本书的建议是:从问题出发,特别是基本问题出发,构建基于思维模型的知识体系,即所谓的“问思模”方法。
问:基本问题,也就是学科要解决的基本问题是什么,用问题统领知识;
思:思维方式,就是前面提到发现思维模型背后的“元思考”,它是问题和知识的连接要素;
模:具体的思维模型,我理解这个可以看成是具体的知识,它包含我们前面提到的四个层次的模型。
3.3 相似性:建立跨科知识体系之间的桥梁
如何让不同领域知识融汇贯通,相互借鉴,创造性解决问题呢?相似性,常用的方法是类比和隐喻。比如书中提到丰田汽车的"Just in time"生产方式的由来,它其实来自于零售行业,当时丰田苦于大量零件库存带来的浪费,突然想到,其实零售行业也会有相似的问题,而且它比汽车行行业发展更久,它们是这么做的呢?于是就将其借鉴到汽车行业。
这个很类似我们做产品开发的时候,常常要做标杆分析,人们比较容易想到的是同领域的产品,比如汽车开发时,看看BBA(BMW,Benz和Audi)是怎么做的,其实还可以进行非本行业的对标,比如现在智能汽车在做交互的时候,完全可以参考顶级电子产品的做法,比如苹果。
而且这种相似性,表面差异越大,但是解决的基本问题越相似,常常借鉴的价值越大。所以,结合前面的棱镜分析,我们可以将“基本问题”作为抓手,基于基本问题的相似性,借鉴相应的思维模型,从而达到举一反三,融会贯通的目的。
3.4 结构化思维:支撑跨科学科体系的骨架
在职场上,我观察到一个现象,真正解决问题的高手,他们遇到一个复杂问题的时候,其实并不急于去尝试各种不同的方案,而是会先用一个思维框架来分析,这个问题背后的基本问题是什么?解决它的核心思路是什么?有什么分析这类问题常用的结构框架?
为什么这样思考很重要呢?这是因为高手们知道,只有看到了系统的结构和关键要素,弄明白了系统结构背后运作的规律,才能够做出可靠的判断,找到有效解决问题的方法。
也就是说,普通人解决问题,是基于不断尝试,积累经验,而高手可能有更好的方式,也即是会先去了解问题的类型,观察它的结构,抓住关键要素,最后是安放细节,就像庖丁解牛,游刃有余。
而这里面所利用的一个重要的思维就是结构化思维,什么是结构化?它指的是,分析问题的时候,从全局的视角,看到问题的核心与结构,在此基础上去理解细节,比如你看电影的时候,首先关注的不是电影的具体细节,而是它的叙事结构,怎样通过起承转合支撑起故事。
如何找到不同领域问题的结构呢?有条捷径,前人总结的套路。我们日常碰到的几乎99%的问题,都是有结构化分析工具的,我们要做的就是找到这些分析结构,就是我们所说的套路。
4 综合利用多元思维模型解决复杂问题
建立基于多元思维模型知识体系,目的不是为了知识的完整性,而是如何能够快速的找到解决问题的决定要素,解决掉问题。那么,我们如何利用这个知识体,首先我们要看看问题的类型。
4.1 三类问题
作者将我们常见的问题分为三类:简单问题,局部复杂问题和全局复杂问题。
简单问题,就是只需要通过线性的逻辑推理就可以解决,比如饿了,吃饭就能解决;
局部复杂问题,不是简单逻辑就够了的,它需要具备一定的结构化思考能力,就是通过金字塔的原理把问题进行拆解,以此将大问题分解成小问题,通过解决小问题,最终解决大问题。这种解决方法有一个前提,就是被分解的小问题之间最好是解耦和补充不漏的。
全局复杂问题,问题之间的关键要素是相互联系互动的,错综复杂,彼此影响,这时很难通过分解方法完全解耦,需要把它放在一个更大的互动系统中,用系统性思考的方法解决。
所以,解决问题的时候,先要判断我们面对的是哪种性质的问题,对于第一种比较简单,而对于后两类,书中给出了3条建议:降维攻击,变换尺度和聚焦关键。
4.2 降维攻击
我们所碰到的问题,其实是有很多层次的,一个层面的问题,用更高层次的方法,常常更容易解决,这就是降维攻击,可以参考在 《直击本质》:透视本质,横向迁移 中,我们分享的逻辑层次。
4.3 变换尺度
书中举到了达尔文的例子,当时人们很好奇,地球上的动物,猴子蝴蝶各种各样都不一样,它们怎么产生的呢?如果你只是看当下时空的现象,很难理解,当然,你可以找到一个非常简单的答案,上帝创造出来的,然后任务完成。但是,这让无神论者很难信服,于是达尔文将观察的时间跨度放到了10万年,甚至百万年的尺度,当用这个尺度看待物种的变化,就比较容易得出“演化论”的结论。
我在 感到困扰,换个视角 中也分享过,可以通过不同的视角看待问题,其中一个就是变换我们的时空视角。
4.4 聚焦关键
大家比较熟悉28原则,但在复杂系统中,很有可能不是28,而是极少数的关键点决定终生。
成甲认识一个央视主持人,他本是偏远山区的一个孤儿,后来靠邻居的接济才长大,原以为自己会在偏远小山村度过一生。但一个偶然机会,县城招广播员的培训生,他就动了念头去参加学习,虽然别人很嘲笑他,劝他别浪费钱,但他还是顶着舆论参加了,最后被一个省城的老师看中,从而彻底改变了自己命运,而这就是关键的,有决定意义的时刻。
人生也是一样,你不需要把每件事情都做对,很多巨变来自于关键点的选择,这些选择的数量和影响,可能不是28,而是2%和98%。所以,应该关注的不是我如何能够在某一个方面做得更好一点,而应该关注有哪些问题能够让我的人生发生巨大变化的事情,比如选择配偶,选择职业和城市等。
那么我们如何找到这样的一些关键时刻呢?书中分享了他自己总结的5条原则:
①战略学:趋势判断
②心理学:内驱力
③系统学:找到系统的关键解(提升认知)
④经济学:边界成本/复利效应
⑤正面黑天鹅
前四个比较好理解,"黑天鹅"来自于塔勒布,用来形容发生的概率很低,但是一旦发生,结果影响很大的事件。正面黑天鹅,指的是,少数的,一旦发生对我们的积极影响是巨大的事情,当然前提是,它的负面结果不能是毁灭性的。
总结
面对日益复杂的不确定性,我们可以通过学习来应对,但知识本身的增加速度超过了你的学习速度?如何应对?《好好思考》为我们提供了另外一个思路,就是从建立从问题出发,基于思维模型的知识体系,通过这个体系来解决我们面对的复杂世界。
㈩ 编程到底难在哪里
(1)思维模式的切换。你需要有技术思维。能够成功建模。这可能是大多数人,没有信心,或者不适合从事编程的原因之一。说到底,程序员就是在两种思维模型之间转换的人。一种是人类看到的感受到的外行人视角,一种是技术思维,即如何通过编程,来完成前者。 (2)语言上的难度,例如 C++ 语言本身。它包含了读写两方面的基本要求,达到你可以面对越来越复杂,越来越难于理解的代码,而不会感到困难和退缩的程度。很多人看到复杂的代码时,自信心就已经被击溃了。C++ 和 汇编,大概是目前难度最大的两门语言。汇编难度主要是代码可读性是最低的,代码量和跳转数量是最大的。
(3)超强的对耐心的挑战,编程中遇到的困难的挫败感极强,大部分人会对此感到崩溃。编程需要付出和投入极大精力和耐心,对人的能力是很大挑战,例如,无法完成任务,无法解决某个问题,无法找到问题所在。编程领域,有很多水平体现在稳定可靠性上,当你写出一个东西,实验是成功,然而在部署后实际运行时,总是出现隔三差五出现很难解释的问题的时候,说明你的水平有限。你的水平,和你的成果的可维护性,稳定性,可靠性是成正比的,而很多人可能会比较忽视这种“不够直观和直接,难以量化”的能力。它们需要程序员的责任心和经验的积累,比如说,多线程编程方面的经验等。