• 【知乎】买那本书?


    3.千万不要成为书籍收藏家。我有一个同学,不客气的说,真是废物。他热衷于从各种渠道询问“学XXX看什么书比较好”,最后买了一堆书放在书架上,一页都不看,每天照样看知乎自High。

    作者:vonLynnShawn
    链接:https://www.zhihu.com/question/29745861/answer/65068214
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    买书不像娶老婆,娶了一本书就不能娶另一本书;买书也不想买房子,买了北京的房子就没有钱买上海的房子了。我不可能喜欢A的时候同时向B表白,但是我完全可以买了A书以后再看B书啊!同时买多本书是没有排他性的。

    与其在知乎上寻找虚无缥缈的心灵鸡汤,还不如手脚麻利的开始看书。我从来知乎上问“选XX方向有没有前途”或者“XXX书籍怎么样”,有这些时间我自己早就把目录和简介章节读过一遍了。

    四年来,我浏览过的方向涵盖Java开发(语法、性能、设计模式、框架)、Python开发(爬虫、网页、数据分析)、数据库管理(MySQL、Hive、MongoDB、Redis)、前端、产品、体系结构(CSAPP)、编译与操作系统(龙书)、数据挖掘、机器学习,还有一些偏门到你想不到的方向,例如工业信号控制、银行资格考试、注册会计师、法理学、信息经济学等等。

    鄙人在本科期间的可查图书总开销为:10793.36元(不含现金或者其他平台的交易)

    2014年度:762.03(淘宝) + 无(京东)

    2015年度:2140.97(淘宝)+ 100.7(京东)

    2016年度:2356.35(淘宝)+ 76.3(京东)

    2017年度:1094.58元(淘宝)+ 3500.4元(京东)

    2018年度:0(淘宝)+ 0(京东)—— 保研以后给报销了


    我这些年读这么多书,不求掌握多少,只求做出人生决断的时候一点都心慌。

    谁的人生没有迷茫过,我上大学之前想当一个注册会计师,报考了会计专业,后来被调剂到管理科学与工程,大一的时候早早考了会计从业资格证,同时准备着证券资格考试和转专业考试;接触到C语言之后,我没有表现出抗拒,我学完了C语言和计算机基础;在大创项目的过程中,我接触了IT的世界,那时是移动互联网的草莽年代,大一的夏天我在Android Studio中埋着头读过,理想也动摇了;大二的转专业考试我根本没有参加,我选择了留在信息管理专业,准备做一个Java程序员(Android工程师或者后端都可以);做了一段时间以后,我们摸清了这个方向的技能树,但是我没有一头扎进去;大数据时代的风暴起于青萍之末,我接触到了数据挖掘和管理,包括算法和大规模数据的存储与管理,我自学了韩的《数据挖掘导论》,自己搭建Hadoop和Spark;从大三开始到现在,我的方向终于确定在了Data Science上了,最后的保研方向也选择了人工智能。

    我敢说我不后悔,我没有看见同学选了某个路而眼红,因为我自己在迷茫的岁月里把全部的闲暇时光花在了探路上。你马上要走的路,我已经好好的试过了,我不会问“当初选择XXX会不会好一点”。


    回答评论区的众多疑问:

    你说的编程语言是一门体系,那你能否告诉我该怎么入手?我什么基础都没有!

    我建议:从最简单的任务开始做起,逐步增加任务难度,通过同时减少程序运行时间和编程本身耗时来提高水平

    场景一:

    对数组[5,36,76,4,23,1,4]完成排序

    这时只需要随随便便一个排序算法就可以完成任务(学习语言本身)

    从txt文件中读取[5,36,76,4,23,1,4]并完成排序

    这时需要了解语言自带的读取模块,了解文件读写过程(文件IO技能get!)

    对10000元素数组[5,3.......23,1,4]完成排序

    这时可能需要用快排、堆排等算法(数据结构与算法技能get!)

    对10000000000个元素的数组排序

    首先要解决这么多元素应该用什么方法存储,然后切割文件,完成多重归并排序。如果有兴趣可能还要搞一个类似Hadoop/Spark的计算框架(大数据技能get!)

     

    场景二:

    写一个Java后端框架,模拟一个电商平台

    用MySQL建几个表,Java这边用Tomcat服务器草草一搭建,语言用的是JSP(好歹数据库技能Get!)

    数据库要多七八个,功能页面接口要多十几个

    不能手写数据库模板代码了,要换Hibernate或者MyBatis了;JSP扔掉改成Spring MVC框架;然后全局换成Spring做管理(现在知道什么是依赖注入了吗?知道了什么是生命周期管理了吗?知道什么是SSM了吗?技能Get!)

    数据库的储存量要加大,读写速度要快,特别是查询

    先搞个线程池短时间应付一下啊。背后马上在MySQL上面插上一层Redis做缓存,加快查询。为了排山倒海的数据理,又是分库又是分表的,把MySQL改成异地多机主从分离定期备份。(????啥都会吧)

    再往下走我就不知道了,我现在搞的是机器学习,中间件估计都要被你整出来了……

     

    场景三:

    一个人写十多行的课后作业

    随便写

    写百余行到上千行的课程设计大作业

    可能要用Git来管理一下代码版本,然后熟悉一下文本编辑器例如Vim或者Sublime

    一堆人做一个项目

    熟悉GitHub的基本操作,如果是涉密项目,还要自己搭建Git服务器(一通Linux操作猛如虎)。

    几百万人做项目

    分布式的Git貌似无法存储如此大的代码量,这时可能又要回到自制中心管理的路子上。

     

    所以说从体系的角度来看,编程任务有三重难关:

    1.对语言本身不熟悉;

    2.对相关类库和框架不熟悉;

    3.语言本身不适合你的工作;

     

    在评论区提问的初学者应该是第一阶段的,希望你们多给自己加活。

  • 相关阅读:
    [CF590C] Three States
    [CF767B] The Queue
    [CF1296F] Berland Beauty
    [CF3D] Least Cost Bracket Sequence
    YUV420 转 RGB 测试
    [POI2012] TOU-Tour de Byteotia
    [CF576C] Points on Plane
    [CF191C] Fools and Roads
    [CF1485C] Floor and Mod
    [CF1399D] Binary String To Subsequences
  • 原文地址:https://www.cnblogs.com/hx97/p/10951810.html
Copyright © 2020-2023  润新知