每一个程序员均可以「懂」一点 Linux

提到 Linux,做为程序员来讲必定都不陌生。但若是说到「懂」Linux,可能就没有那么多人有把握了。到底用 Linux 离懂 Linux 有多远?若是决定学习 Linux,应该怎么开始?要学到什么程度?懂一点 Linux,对于程序员有什么价值?经过马蜂窝内容中心高级研发总监李鸿的此次内部分享,你会获得一些答案。前端

(本文根据马蜂窝技术研发团队内部分享整理,搜索马蜂窝技术公众号,后台回复 「linux」获取 PPT 全文。)linux

你们好。我先简单介绍一下本身,我是李鸿,目前负责马蜂窝内容中心的技术研发和团队管理。程序员

接到今天这个任务的时候,我就在思考要分享什么内容。在座的同窗应该有一些工做的时间比较久,也有一些刚从学校毕业。因此今天所讲的东西,若是能让不一样阶段和技术背景的同窗产生共鸣,让你们改变了一些对技术的见解,甚至是产生了一点对职业规划上的影响,我认为此次分享才有意思。面试

出于这些考虑,我选择了今天的主题——每一个程序员均可以「懂」一点 Linux。编程

主讲人:李鸿
马蜂窝旅游网内容中心研发高级总监

(李鸿,现为马蜂窝内容中心技术团队负责人。拥有十余年移动互联网从业经验,多年从事移动地图 App、LBS 企业级服务和智慧交通相关产品研发。我的技术兴趣聚焦在 Linux 生态,包括 Linux 内核等底层技术。)后端

Question 1:为何讲这个主题?

想到这个内容,也是基于我本身在技术成长上的一些感悟。安全

我比在座大多数同窗年长几岁,大概十几年前大学毕业。今天我在跟不少面试候选人聊的时候,我会问他们「为何选择计算机专业」,大部分人给个人答案都是碰巧选了计算机,或者据说这个专业的就业前景不错。网络

固然也会有同窗和我同样,是出于喜欢。我最先接触到计算机仍是读初中的时候,当时电脑很贵,家里也没有。有一次在商店里我看到了一台「小霸王」学习机,有人经过在键盘上敲一敲,就能真的在屏幕上出现一点东西,我以为简直太有意思了,就在当时,我知道本身之后必定会学计算机。架构

大学以后,基本大一大二接触的都是 Windows。一天偶然看到一些 Linux 代码,从那以后我就开始自学 Linux,直到钻研 Linux 的内核。十几年后我再来看,仍是会感叹 Linux 世界的神奇,并且庆幸本身的选择没错。框架

因此今天,我想分享下在学 Linux 这个过程当中的一些思考:什么才是真正的 Linux、它为何好、咱们应该从哪里入手开始学习,但愿你们能够有所收获。

Question 2:你「懂」Linux 吗?

当问到是否是懂 Linux 的时候,包括我身边的不少朋友都会说「还能够啊,我一直都在用」;也可能会说「懂一点,我据说过 Linus 这我的」,等等。但至少我认为,若是你只是在说如下这些,真的不叫「懂」Linux:

那什么才叫「懂」Linux ?若是把这件事讲透,我认为核心要解决的就是三个「W」——What,Why,How

What:一些同窗在开始投入某个技术领域的时候,可能基础比较薄弱,会很辛苦地学习。学了一段时间之后本身以为学到了好多东西,但其实不少人并无学到这个方向的关键、核心和本质。好比我遇到过不少作大数据分析的人,说到 Hadoop、Spark,相关的单词能够说很多,但问到「Spark 和 Hadoop 有什么本质的区别」,「Spark 对数据的界定有什么本质的不同」这些问题的时候,仍是说不上来。

每一个程序员的时间和精力是很宝贵的。在咱们整个职业生涯中,可能用十年、二十年去学透1、两个东西已经很不容易了。若是决定花时间去学习某个技术以前,必定要想清楚学的是什么,千万不要学偏了,甚至都没走在本身规划的职业方向上。

Why:为何学?是出于兴趣爱好?是对实施架构很重要?是会影响你的职业规划?是这项技术未来会有很好的市场收益?……无论你的答案是什么,本身要比较清晰。

有一些同窗技术学得很杂,问哪一个都说比较熟。但问他哪一个技术他比较有研究,是他比较资深的,好像又都没有。这就是他没想清楚「Why」,也就想不清楚本身的重心要放在哪里。

How:前两个问题解决完,就应该去思考「How」。到底应该怎么学,才能学得愈来愈好。

今天咱们是围绕 Linux 在解决这三个 W,换成任何别的技术,其实都有相通之处。最近 七、8 年我面试过不下 500 个 Java 研发,几乎每次我都会问「能不能用七八个概念说说你对 Java 的认识,或者你为何喜欢 Java」,不多有候选人人能真的把这个问题说清楚。

因此我建议各位同窗,之后再投入一项技术的学习以前,都先从以上三个 W 去审视一下,看你是否是真的清楚要学的是什么,为何学,怎么才能学好。

What——什么叫作懂 Linux

1.知道为何学

必定不是说由于 Linux 「时髦」,也不是如今的工做中急需用它去解决某个问题,而是确实会对长远的知识架构和的职业发展产生质的影响,才值得花费精力和时间。

2.知道要构建怎么样的 Linux 知识架构,并对专攻的技术方向提供源源不断的能量

学习一个东西要先看全局,要去想 Linux 总体的知识架构、各部分占的比重、在它背后还须要掌握哪些知识、学习它带来的收益是什么等等,真正造成系统和规范化的学习。若是一开始没有创建起整个知识架构的话,后面会浪费大量时间。

这里特别强调「专攻」。我认为专攻某个方向的价值远远大于泛泛地了解。你们职业生涯越是走得远,越会发现专攻某个方向的意义。若是开始就是泛泛地学,后面对本身的定位会很是困难,由于你不知道本身的优点是什么,适合在什么岗位,应该选择什么路径来发展。

3.知道学习 Linux 的最优方法

要想学好 Linux,最核心的仍是要找到正确的方法。什么才是学 Linux 最好的方法?是去翻翻文章、看看文档吗?是去学敲命令吗?是去学 SHELL 吗?若是这些都不叫「学」,什么才是学 Linux 最优的方法?

4.知道 Linux 背后的设计哲学、优势、历史和文化

咱们身边有不少技术同窗关注的都是怎么使用 Linux ,因而就去把书里是怎么讲的、用过的人是怎么说的通通记下来,根本不会思考记录的这些内容背后体现了什么。若是长期只处在一个单向接收信息的过程里,你就没法练习出反思和总结的能力,更不要说能够达到批判性地审视某个技术,甚至提出质疑的水平。

而要想真正从学习中得到成长,可以和接收到的信息产生互动,去引起更多的思考,就要去知道 Linux 背后的设计哲学、它的优点、历史文化是什么。

5.喜欢 Linux,爱上她

学习的辛苦、作研发的辛苦,相信你们都深有体会。那么坚持去学习、去学好某个技术的最大前提,是你要喜欢它,甚至热爱它。由于只有这样你才会以为这个过程有意思,才会产生继续向下深挖的兴趣,才会愿意去作更多的推理。

不仅是 Linux,包括如今工做中用的语言、开发环境等等,若是你们实在喜欢不起来,我建议你再去探索一下,去找到本身真正喜欢的领域。

说了这么多,若是用一个词来判断什么是「懂」Linux,我想应该是去看本身能不能真正「理解」Linux。

Why——为何要懂 Linux

今天的主题是「每一个」研发均可以懂一点 Linux ,这是为何?其实不少技术是能够不懂的。比对后端须要的是处理业务逻辑,那就不须要必定去懂前端的 WebGL;再好比作大数据的同窗,也不须要太懂编译。为何 Linux 我就建议每一个同窗都要去学一点?并且为何在那么多操做系统中,我只挑了 Linux 呢?

-为何选 Linux ?

  • 开放

投入一个有开放的心态、开放视角的技术,给咱们带来的成长和收益将是无穷的,这也是开源世界带给咱们的一个重要课题。我很是相信一点,随着国内经济的发展、你们认识的逐渐完整,中国的软件市场也会愈来愈开放,你们所处的大环境会愈来愈好。

Linux 的成功也必定离不开它的开放,离不开整个开源社区的贡献、生态的参与,以及由此带给你们的成就感,驱动他们更愿意去把一些成就分享出去,去开放合做,等等,这些都是促使 Linux 不断走向强大的缘由。

  • 遵循标准

对标准的遵循也是 Linux 能够达到今天这样成就的关键。这也是很大的话题。其中有一点我认为很是重要,就是它继承了 Unix 的设计思想,它的 Unix-alike (类 Unix 系统) 设计哲学。

所以,选择 Linux 就是由于它足够优秀,能够带给咱们值得去探索和深思,而且能够运用到学习和工做中的知识和思想。

那学习操做系统的意义又是什么呢?

-为何要学操做系统

1.带来视角上的提高和改变

简单画了一个图来表明我对计算机世界的一些理解,能够看到图中每一个圆是一环套一环的

(1)使用软件

最里面的圆表明的就是一个最小的视野,它对应的是用户拥有的视野。由于做为软件的使用人员,用户是不会去关心背后的开发原理、逻辑实现的,用户只关心这个软件是否是好用。

(2)开发软件

对于咱们学计算机、作研发的人来讲,去使用一个软件实际上是比较容易的。由于咱们所在的是「开发软件」这个圈子,相对于用户来讲,咱们站在一个更外围的视角,咱们对使用软件这件事看得更加透彻,角度更开阔。

聊一个生活中的例子,我有一次去参观南京中山岭的宋美龄宫,在去以前听别人说,美龄宫像一颗宝石同样,被许多由不一样颜色树叶构成的项链包裹在中间。听起来就很美,也我很是好奇,因而去了以后我一直在找这条「项链」。结果固然是找不到。由于你们所说的「项链」是经过航拍看到的图形,我是走在树林中,那确定看不到。

图:宋美龄宫
(来源于网络)

你会发现,站的高度不同,你的视角就会不同。一样的道理,研发同窗之因此理解和使用软件更快,就是由于与用户相比站的角度更高,看的范围更广,咱们知道软件设计背后的原理,以及它的交互逻辑,就会很快上手。

(3)开发框架和库

若是你们去听一个前端的讲座,为何当介绍到讲师是某个框架的做者时,咱们就会以为这个分享很厉害?

绝大部分研发,可能 80%~90% 甚至 95% 的同窗都是处在「开发软件」这个层面的,咱们使用各类现存的框架、开发库去实现业务逻辑。

可是必定有少部分研发关注的是更外围的事情,去作一些开发框架、开发库的实现。这一层的研发须要的能力确实要更强,由于他要思考整个框架怎么拆分模块,怎么样去适应接口让程序员用更好地用起来等等,因此要考虑得更深、更广,挑战也更多。

细心的同窗可能注意到了我在「开发软件」与「开发框架和库」中间画了一条红线。我想表达什么意思是,软件研发同窗会作出一些很棒的软件,是由于你有这样的能力,也是由于你们头上是戴上了一顶那些开发框架和库的同窗给的安全帽的。好比 Java 开发会考虑内存的管理和回收,但这个机制实际上是作 Java 开发环境的人帮你作了考虑,帮你提供了应对问题的策略,可让你更「安全」地作事情。

(4)操做系统

再往下看,全部的开发库和开发框架,都是放在一个操做系统上的,与之对应的这一层的研发人员考虑的东西会更加复杂,由于他们要提供的是最基础的环境,是上层实现的基石。

(5)硬件、规范、协议

你们看到再往下我画了一个骷髅,也就是说这一层是真正厉害的人,他们作的是硬件、规范和协议,好比说指令系统,咱们说的复杂指令系统和简洁指令系统这两个大的指令系统的阵营,在二三十年的时间里都一直在为本身的阵营 PK,目的是为了讨论出更适合软件发展的规范。再好比发明 TCP/IP 协议的人,他们最初在一片混沌的状态下,竟然可以提出 TCP/IP 的概念,让咱们如今能够很是简单地去作通信。因此达到这一层的人,咱们已经称为天才了。

(6)数学

再往下就是数学。我认为计算机回到最后必定是数学,好比说在大学咱们都要学习的离散数学、统计学、范式、逻辑学、图灵机等等。数学是对整个计算机体系提高一个最基础的支撑。

因此经过这个图形咱们还能够看到,研发同窗若是要持续地成长,是绝对存在路径的。我以为有两个角度是你们能够思考,一是你在专一的方向持续地积累,造成本身的竞争壁垒;同时你能够尝试走入下一个更大的层面,看一看是否是会你的视野,对服务的一些思考,对解决问题的能力都带来一些帮助。

2.构建高效的工做和学习环境

学习 Linux 另一个很是有用的地方就是「效率」的提高。研发同窗天天都要和操做系统打交道,在上面作大量的工做和学习,无论是写代码、看文档、自动跑一些任务、作一些搜索、写一些东西等等。若是懂一点 Linux,懂它的设计哲学,你能更好掌握怎么去用 Linux 更高效。

不夸张地说,若是你真的可以成为一个 Linux 的 Hacker,我认为你的工做和学习效率提高十倍以上是没问题的。我本身就会用 VIM 的话来解决几乎全部问题。

搞技术作工程,若是思想越高、越宏观、越系统,能达到的能力就会越强。懂一点 Linux,首先就是为咱们提供这样一种提高视角的方法,帮咱们站在一个更外围的角度思考天天的工做和专攻的技术,它们背后是什么样的实现原理和设计思想,它处在怎样的一个体系中,得到了怎样的支撑。

计算机一个最本质的地方就是「自动化」,因此你们要真的可以理解「自动化」这个词的意义。咱们写软件、作管理系统,都是为了要解决之前须要人工来作的事,更好地解放咱们的大脑。

既然自动化是最本质的,咱们就应该反思在本身的工做和学习中,是否是用到了自动化的思想,你是否是还能够忍受机械、繁琐、低效地处理问题?如今的方式是否是应该改进?经过去学 Linux,能够帮助咱们构建一个高效的学习和工做环境,去解决这些问题。

3. 借鉴优秀的学习样板和实例

第三个就是对 Linux 的借鉴。其实全部的计算机工程问题,无非都是围绕架构设计、技术选型、代码质量、设计风格、工做流程,自动化程度等相关的问题。若是能够作到理解 Linux,你就会发如今这个操做系统上的不少组件,其实就为咱们提供了如何解决计算机工程问题很是多有益的实例。

就如你们在关注一些优秀的开源项目的讨论列表时,你也会以为有一些人提出的建议并很差,但你可能说不清缘由。这时有人作出了一些列举,论证这个建议为何很差,你就会很是认同,而且吸收他思考问题和解决问题的方法。学习操做系统的过程也同样,Linux 自己就是一个很好的样板和实例,包括它的设计理念、代码质量、文档编写、协同、软件工程、演进以及它的文化,方方面面都会为咱们提高很是好的借鉴。

这里我想再展开说一下演进和文化。

演进是什么?其实咱们不少人在作项目的时候是很容易走偏的,由于计算机世界每增长一个维度,它可选择的结果都会带来级数级别的增加。而咱们在一个软件项目的推动实现中,要考虑的维度可能成百上千。要在这些纷繁复杂的选择中真的找准方向去演进,须要很是清晰地思考。经过去看一个软件的发展历史,你能够去体会那些优秀的人是如何在一些关键的点上把握方向,来为你本身在作判断的时候提供指导。

另外就是文化。我认为包括 Linux 在内的开源项目,核心的文化就是「就事论事,有技术情怀,追求极致,Open 的沟通」。这些理念对每一个技术人员的成长都很是重要。好比当咱们身处一个规模比较大的公司,成员之间不免会存在沟通上的障碍,可能就会致使误解的产生和对对方的不承认。若是你们以一个统一的文化做为前提,就会用彼此认同的理念和方式去思考问题,也就更容易达成协做。

How——怎么作到懂 Linux

最后咱们看看用什么方法去学习,才可以愈来愈懂 Linux。

1.理解设计哲学

咱们只有对一件事有了深入的认识,而且认同以后,才有可能去花时间学好。因此首先我认为要深入认识到 Linux 背后的设计哲学是什么。

关于 Linux 的设计哲学不少地方都有介绍,我这里也特地没有进行翻译,但愿你们对表述中关键的英文单词也创建起认知:

下面我把每一个点简单地说一下。

Everything is a process; if it's not a process, it's a file

Linux 操做系统认为「任何事都是一个进程,或者说一个线程,是一个执行体;若是它不是一个线程,那么它就是一个文件。」

你们不要认为这句话理所固然,其实不少操做系统都没有这样一个概念,可是在 Linux 的世界,大量的东西是以进程的概念存在的。若是你认为它不是一个能够运行的东西,那它极大可能就是个文件。你会发现不少新的技术都是在这样的设计思想之上,好比说容器。

这种思想的好处是什么呢?咱们说解决计算机的问题有一个重要的技巧,就是当你可以把各类复杂的事情都当作是一码事儿,可以从统一的视角去归纳它,而且面对它、处理它,那解决起来就会容易不少。由于当计算机面对复杂的现实世界,它能作的就是一层一层的抽象,最后抽出一个很是简单且统一的视角,能够直接地去处理。这是你们在写代码的时候能够去思考的。当你发现你作出的设计可以把两、三个不同的东西,从一个更高的视角进行统一,这时的你就会比不少人了不得。

One tool to do one task

第二点,一个工具解决一个问题。它的理念是说要把东西作好、作到极致,就要去作专。若是你作的不能比别人更好,你就不要去作,而是要去想如何经过一种方式让用户能够在你的应用上调用本身喜欢的东西,这就是 One tool to do one task。对咱们在作程序的时候也有不少帮助,好比是否是能把如今的应用作得很是内聚,而不是去作更多的东西。

Three standards I/O channel

第三点是说每一个进程都有三个标准的 I/O:标准输入、标准输出、标准错误,好处是你就会清楚地知道任何终端进程默认都有这三个数据交流的端口,能够自由的进行拼装或者 I/O 重定向,进行功能组合,这其实也就是第四个哲学所说的——

Combine tools seamlessly

把工具无缝地拼接起来。

Plain text preferred

这一点也是我很是喜欢的,就是能用 Text 必定要用 Text。Text 是一种人能够读,机器也能够处理的内容,能够解决好多问题。咱们通常说 Plain Text 是指英文。好比说你们写注释要用英文写,它带来的好处是,咱们能够经过脚本自动化分析各类 Comment,谁的 Comment 写得多,谁的单词拼错了,谁的 Comment 中包含很是重要的信息,须要重点去跟踪等等。

CLI, not GUI

提倡用命令行,不要用图形化界面。由于命令行能够很是高效进行人机对话,图形化界面对程序员来讲是很是低效的。若是作一次更改,咱们更但愿经过敲键盘的方式来快速告诉计算机应该作什么。

Provide the mechanism, not the policy

这点我建议你们背下来,就是若是你作一个好的大型框架,应该去提供机制,而不是提供策略。也就是要提供创造更多可能性的能力,不要把须要适应到特殊场景下的定制化的内容写死在代码里。全部的软件在这种设计上这点是很是相通的,好的软件必定是为你们提供更多的灵活性和适用场景。

2.学习 Linux 的三个层次

以上的设计哲学都很是重要。那么知道了这些,该怎么学 Linux 呢?你们不要在一开始学的时候就必定要去学内核,或者想要全都懂,因而就认为 Linux 很难。关于「懂」Linux 的阶段,我简单分红了三个层次:

第一个层次就是 Use,先用起来。但前提是用的时候要符合上面提到的那些标准,也就是要了解它的设计哲学,要知道它的优点,而不是只听别人说怎么配、怎么选才好。

若是把懂 Linux 分为十个「档」,那么 Use 对应的大概是 1-3。其实对于咱们 70-80% 的程序员来讲,到这里已经很是不错。

第二个层次是 Code。这里的 Code 不是指在后台写一个 Java 的业务程序,或者是前台写一个网页,而是指系统编程(System Programm),经过编码的方式和操做系统直接对话,而再也不是点击鼠标去控制。

虽然系统编程跟大部分人的工做不会强相关。可是经过在应用层用语言(主要是 C 语言)去跟操做系统对话,你会看到在整个操做系统背后的一系列东西是怎么构建起来的,去咱们提升视野、提高效率,以及获得更多优秀的借鉴都有不少帮助。除了 Code,若是你们有时间和精力,我建议还能够去了解一下 C 语言。C 语言很是纯粹,就是来告诉你内存长什么样,怎么去控制内存、指令、堆栈,怎么去进行参数传递的方法调用等,你会学到大量计算机架构相关的原理。

第三层是 Hack,它的档到对应到 8-10, 这多是每一个但愿作到极致的技术人最后的追求,去了解内核这一层。

第一阶段:Use Linux

(1)终端、键盘、命令。刚才在讲 Linux 的设计哲学时,咱们提到过一条——「CLI, not GUI」。因此对于程序员来讲,在学如何跟 Linux 操做系统对话的时候,必定是使用终端、键盘、命令。我想跟你们说,若是你如今还习惯用鼠标,那你可能要检讨,看看本身对自动化理解的程度是否是过低了。

(2)一个字符编辑器。要去找一款本身喜欢的字符编辑器,而且用起来。

(3)SHELL。第三,若是要用 Linux 理论去提升咱们的视角,就必定要掌握一版 SHELL 脚本,而且去深入理解。至于用哪一个版本你们能够根据本身的喜爱决定,目前我用的是 ZSH,感兴趣的同窗能够去了解下。

(4)文件系统、进程线程、IO 组合、用户权限、资源管理。再往下咱们能够尝试经过编程的方式去调用文件系统、进程线程、IO、用户权限、资源管理等等,去更加系统的了解。这些都会了以后会发现慢慢,之后再写一种高层的代码也就没那么难了。

(5)解剖 Linux。经过解剖 Linux 能够知道 Linux 是怎么装拼起来的,对它会有一个更直观的认知。我大概在十年前开始接触 LFS(Linux From Scratch LFS),如今它已经演化出了无数个版本,它会告诉你如何开始从零构建一个 Linux 系统,并且它好的地方在因而从源代码的方式去讲怎么编译,最后拼成一个操做系统。这个工做由于须要比较多的精力,因此建议你们三个月到半年的时间跑一次,会颇有成就感。

(6)深入理解背后的文化和哲学。关于 Linux 背后的文化和哲学,可能总结起来就是那么简单几句话,开始会比较难理解。可是你们若是把这几句话当成一种「信仰」,每次在学和用的时候都能再深入地体会一遍,可能过了半年,说不定某一天你会忽然发现想通了。

(7)参与社区。你们在参与社区的时候,必定要知道知识的价值是要经过 10 年、20 年的努力去沉淀、去积累的,要持续地参与到社区当中。

(8)最后一个就是锲而不舍,去融入到你的工做、学习和生活当中。Linux 学习曲线的特色是一开始就很陡,不像 Windows,一开始很平滑。但一旦爬过这个陡坡,就会看到一个全新的世界,而且能够一直持续往上走。

第二阶段:Code Linux

这个阶段就是刚才咱们讲到的,要用编程语言去和 Linux 对话,经过 Code 开始了解二进制 ELF。ELF 是在 Linux 世界的执行文件格式,经过了解 ELF 能够知道一个执行文件是怎么拼写的,它的内存是怎么存在的,指令是怎么跑的,数据是怎么取的,动态库是怎么加载的……若是把这些都搞定,至少在 Linux 领域,就不会再有什么是让你以为理解起来比较吃力的事情。

第三阶段:Hack Linux

关于如何 Hack,这个问题很是庞大和复杂。若是你们有尝试走到这一层的勇气和愿望,我很是愿意和你们一块儿交流。

内容总结

总结一下今天咱们讲到的一些内容:

  • 知道为为何要学 Linux:视野、效率、借鉴

  • 知道要构建什么样的 Linux 知识架构,并对本身专攻的技术方向提供源源不断的能源:三个 W(What, Why , How)

  • 知道学习 Linux 最优方法:肯定层次 (Use, Code, Hack),实践,锲而不舍,融入天天的工做、学习和生活

  • 知道 Linux 背后的设计哲学、优势、历史和文化

  • 喜欢上 Linux,爱上她

在分享最后,我想和你们聊聊最近常常思考的一个问题。如今咱们总会听到身边一些人在抱怨,说计算机行业已经很是饱和,互联网也已经发展到了必定阶段,再过五年十年计算机就要被淘汰了,研发人员也会面临失业。

我对这个观点是很是不赞同的。

每一个人均可以不用工做,天天很开心地享受生活,这应该是大多数人理想的状态。可是人类总要养活本身,惟一能达到这种理想状态的状况,就是由计算机、机器人、电脑帮咱们人类完成大部分的工做,无论是作家务、交通出行、盖房子等等。若是这个理想状态的标准是 100 分,对比咱们如今,可能仅仅处在 0.1 分的阶段。因此怎么可能会存在纯粹的失业呢?

为何你们还要进行这样一个讨论?我只能认为有些程序员尚未喜欢计算机,担忧本身学很差。学习这个过程的确不容易。就像咱们看一本哲学书,开始想要读懂很是困难,但随着人生阅历的增加,随着咱们在生活、学习和工做中不断验证书中的道理,你就会体会到其中的道理,提高本身看问题的视角和解决问题的能力。因此最后,我但愿你们不要惧怕学习,而且相信这个行业的前景,和程序员这份职业能够创造的价值。

以上就是个人分享,谢谢!

(马蜂窝技术公众号原创内容)

相关文章
相关标签/搜索