虫部落

[搜索达人] 无经验自学编程,学习路径求助

查看: 937|回复: 4
理智在放假, 发表于 2020-6-30 23:40:24 |阅读模式
简单说下大概经历与为什么学习编程。

到目前为止大专毕业两年,实习的时候通过系主任的推荐在一家做期货、对冲套利(跨品种或者跨期)的公司(并不是什么大公司,一家小公司)做下单员后来通过考核自己交易。 考虑到期货的风险比较大,又没钱就自己做了点股票。   就这样在公司的账户&自己的账户之间左右忙活,一段时间后①精力跟不上②无法保证自己稳定盈利,就以公司账户为重。就这样做了从实习的一年到毕业后的半年都是在这家公司工作,因为长期盯夜盘,加上一直处在有压力的氛围觉得健康状况不如从前,但是这不是离开的理由都是在可以调度承受范围内的,决定离职是因为公司虽小但是人际关系却复杂...  勾心斗角的天天而且给的薪资也不满意,自己也有些想法想跑跑经济业务多锻炼下,种种因素触发导致做出干脆拉闸换份工作的决定。  

第二份工作是做的交易软件(期权、期货)的招商,种种市面上的路数只有你想不到没有做不到的,一个字 乱。 在这里的同事关系处的都还不错因为我是年级最轻的,也知道礼貌(羞耻自夸)所以对我很照顾,我这人表面憨憨 实际上比较贫、属于熟了爱逗乐的,讲原则 所以自认为人缘还是及格的(- -.对 没错 又自夸了)就这样到今年的6月初(也就是现在)、公司关闭我们这的分公司了其实我也并不意外①政策监管越来越少业务可以做②连续一年半基本上经营也就是盈亏相抵,本来就是个浮躁的行业,未达到之前公司的盈利目标、老板决定砍掉自保也情有可原。

算上实习的一年加上毕业后工作的两年总共是三年,行业经验有了积累、也认识了几个对我进步有很大帮助的好朋友、长辈、逐渐有了自己独立思考的能力但是没有自己思考和做事的框架(也可以说是机制系统),喜欢在墙内外浏览很多论坛网站,逐渐在完善自己的世界观,当前我所接触的一切事物都可以理解为双刃剑 它们互相矛盾又互相兼容,对善于恶有了新的认知不是那么纯粹但是也因为理解恶所以觉得坚持善是才是壮举。

这几天审视了下自己定一个方向,我原计划的工作路径是考下两个从业资格证进营业部工作通过这两年和在营业部工作的朋友和一些长辈的话让我对这条路有了新的理解,任何行业上下都会出现贫富两极化,但我认为所谓金融行业贫富两极化是最严重的,很多事件让我改变了看法,挑战我的三观...  ,总之我对自己的优劣势还是有所认知的,在这里就不细述那么多了。

叭叭了这么多属实有点啰嗦了,但是也不想删继续叭叭。

学习编程的想法出来①喜欢 感兴趣 ②对互联网感兴趣+好奇+爱摸索③希望把自己的爱好变成恰饭的家伙④对未来发展趋势有一些自己的想法见解(就不拿出来叭叭了)
      
不知不觉本来想写三两行的话,话茬子一打开就输出了这么多。  喜欢虫部落很久 我是今年才决定不白嫖加入的新虫,很愿意交奇奇怪怪的虫友(Giao 奥利给) 言归正传奥 无经验自学编程,学习路径求助!!! 大佬看过来!!!
Dus 发表于 2020-7-1 10:17:24
SURF-
搜搜推荐:https://www.chongbuluo.com/forum.php?mod=viewthread&tid=7454
———————————————————————————————

对于学习路线这种文章一般是不写的,大家看文章也知道,个人很少写建议别人如何行走的文章,更多的是写的真实经历,供大家参考,这样,内心也踏实。

但,最近多人问学习路线且很多大一大二或小白转型的,“自己很迷茫”,看到那篇  《 普普通通,我的大学》后很受激励,觉得自己也能行,(是的,别太浪,你一定能行)希望能传递个学习路线。
鉴于此,就一篇适合普通大众的学习路线,从入学那一刻开始入门说,虽然不一定适合你,但或能给没有明确目标的人带来一些学习的方向,那么这篇文章,就值了。
注意:文章不是让你直接进阶为大神,而是给处于大学迷茫、不知道学啥的你,一个学习的方向,无论是否科班。当你学完如下内容,你应会有自己的学习方向了。

一、选择一门语言入门编程的世界

1、入门语言的选择
学习编程的第一件事,个人判断是选择一门语言,不过能选择的语言实在是太多了,不知道如何选择的,可以选如下一门比较热门,也是 90% 人的选择的语言入门。分别是 C 语言,Python,Java,GO。

那应该选哪一门呢?说实话,选哪一门都问题不大,因为等你成功入门后,你大概率还会学习其他语言,那么这里建议跟着学校的课程来,因为大一基本会开设一门编程语言,当时开设的是 C 语言。
那么问题来了,根据反馈,其实部分学校大一是没有开设这些结构语言,且学那些网页设计类的语言,那?答:这里推荐你,仍然选择一门结构语言来学习。你不是跟着学校课程走的,那么你可考虑 C 语言。

事实上,不论你是学哪一门语言的,如果有时间,都应了解、学习下 C 语言。你只要会了 C 语言,那么你入门其他语言分分钟,但会其他语言,入门 C 语言可能会被虐。学习 C 语言,让人学习到另外的知识,所以你不知道学习哪一门语言,这里推荐学习 C ——以后参加ACM类的比赛,也一般用 C/C++。

当然,做工程可以考虑Java,快速入手考虑 python/GO。

2、书籍以及视频的介绍
这一个星期,至少被 15 个人问过学习 C 语言要用哪一本呀?用什么编译器啊?反正是被问哭了,不过当年也有这样的疑问,就都耐心回答了。这里介绍下一些书籍和视频,这里就以 C/Python/Java 为例子来介绍。
后面也会出一篇汇总各类工具的文章。现在已经收集了几十个常用开发工具了,不过可没有提供破解教材,百度一搜一大堆破解教程或者序列码。
(1)C语言

书籍推荐:
书籍可以看《C语言程序设计》,谭浩强写的,适合入门学习,也是第一本看的书。进阶可以看《C 和指针》。

视频推荐:可以看郝斌录制的视频,在 b 站搜索 C 语言就出来了,叫做《郝斌 C 语言自学教程》。说实话,对于小白,看视频还是比较不错的,可以少掉很多坑,不然你搞编译环境都搞死。
这里工具就不介绍了,一般书籍和视频都会手把手交你们用哪个编译器。当时用的是 codeblocks。

(2)Java

书籍推荐:《Java核心卷1》,这个算是入门书籍,入门书籍看的不多,暂时介绍这一本;其余大家可以去搜索。

视频推荐:这里推荐 【尚学堂】Java300集,作者是 高琪 录制的,b 站搜索就可以了。讲的是真的好,入门的话,感觉看前面 100 集就可以了。进阶可以看《Java编程思想》,这本书也很好,解决了很多疑惑。

Java 编译器推荐用 IntelliJ IDEA,自己百度去搜索。

(3)Python

书籍推荐:这里推荐《Python编程:从入门到实践》。

视频推荐:看过小甲鱼是视频,还不错,如果大家要看小甲鱼的视频的话,书籍可以顺便来他的配套书籍吧。视频叫《[小甲鱼]零基础入门学习Python》,b 站搜索就可以了。书籍也是也是《[小甲鱼]零基础入门学习Python》。

开发工具当时是用 pycharm。
-------------------------------------------------------------------------
问题来了:很多人问,应掌握到哪个程度才算可以呢?
“海水不可斗量”,个人觉得,书中说的90% 理解就可了;注意,是理解,具体怎么写,忘记了问题不大。当然适当地学深点就更好了。

二、数据结构与算法

大学第一学期入门了某种语言后,就要开始学习数据结构与算法。
当然,不一定是第一学期,对于非科班的也一样,也建议这个学习顺序。另外,你有自己的目标,完全可以按照自己的来。

文章是主写数据结构与算法的,帅哥秋招也是这个优势拿到 offer 的,所以数据结构与算法是非常重要的,可以是绝地反击的。

可能你会听到工作都基本没用到这些知识啊,或库函数都帮我们封装好了啊,我们干嘛要学。
如果你这样想的,那你就错了。对于想要找工作的来说,这方面的知识是必考的,所以你得学;对于已工作的来说,这方面的知识,可以让你学习到很多设计思想,所谓 数据结构 + 算法 = 程序,而且你学了这个,你会发现学习其他知识,上手的特别快。综上,数据结构与算法必学。

上面扯了这么多,就是告诉你,数据结构与算法的重要性。下面介绍下入门数据结构必学的有哪些,不过你跟着书本的学习顺序来就是了。

1、基础数据结构的学习


1时间复杂度、空间复杂度
2链表、队列、栈
3树(二叉树,查找二叉树、AVL树,红黑树等)
4图(图有好多种算法,深度/广度搜索,最短路径、最小生存树等)


如果你是科班的,那么这些你大一第二学期都学完是最好的了,没学完也问题不大,有些人可能是先教《离散数学》这本课,为数据结构与算法做铺垫。

书籍推荐:《大话数据结构》、《数据结构与算法分析:C语言描述版》,学哪一本?都可以,问题不大,我当时学的是第二本。大家记得根据自己的语言去学,我上面列举的,都是用 c 语言来实现的。

视频:看过《小甲鱼的数据结构与算法》视频,你们自己看着办吧。

2、算法的学习
大一大二,你们真心把算法基本功打好,后面就真的没时间刷题了。无论你以后要学习哪个方向的,算法都是实用的,会一些算法,说话也都自信了。算法的学习,刷题是必须,但不建议盲目刷题,而是先学习一些算法思想,在找对应的题刷,要学的主要有:

(1)十大排序算法
(2)递归、贪心、回溯、动态规划、枚举等


推荐书籍
《阿哈算法》、《算法设计与分析基础》适合入门;《算法第四版》、《算法导论》、《编程之美》适合进阶

视频:这种还是挺建议看书动手,少视频,这里就不展开了。

具体可以看文章:
《程序员必须掌握的算法有哪些?谈谈这这几年学过的算法》

3、保持算法的学习
算法的学习,真的是靠积累,刷题。且学校都会举办一些比赛,去参见也能让你更加有激情着去学习。当然,每年都会有很多 ACM 编程大赛,要不要参加呢?这个看你了,也不是说参加就一定好,看你自己吧,具体可以参考一篇文章说的:编码之外|帅地玩编程《普普通通,我的三年大学》
大家可以在 leetcode 长期保持刷题,一天一两道,或者一个星期三四道都行。

三、选择一门语言深入学习
刚才选了选择一门语言来入门,你可能还会学习其他语言。当时 C 语言入门,后面深入学习 Java。

你可以学习过很多种语言,但你一定要有一门拿的出手的,所以把上面的学习了后,这个时候你可能是大二,最多大三,至少脱离小白,那你就应选择一门语言来深入学习了,一般可选的有四门:C++,Java,Python,Go
如果你想从事后端开发岗位 ,那么 C++,Java和Go相信是大多数人的选择,其中我觉得选择 Java 的人数是最多的。Go 是最近才火起的语言,也是个不错的选择。

那么问题来了,该选哪一门呢?
入门你以后想从事游戏类的开发,那么选择 C++,或你以后比较想去腾讯,字节跳动这些的,可能选择 C++ 会好一点;
如果想从事Web网站开发的,或未来去阿里巴巴、美团这些的,那么 Java 会好点;
Go 和 Python呢?对于一些不是很大型的网站类的,都会用 Python 或者 Go 类的快速开发;
大家如果是面向公司编程的,可以去看看哪些公司的技术栈,来选。

当然,无论你选哪一门,只要你有实力,哪个公司都会收你,只是有可能到时候要转语言,我现在好像是需要从 Java 转向 Go,不过语言只是一门工具,把基础共通的知识学好,转语言都问题不大。

四、以Java为主的后端开发学习路线
是深入学习 Java 的,就再介绍些 Java 的学习以及书籍的推荐,其他语言也类似。
大二开始学习 Java 的,还是看了挺多知识。入门的就不介绍了,上面介绍过。下面说的基本是深入学习必须理解的了。

1、Java进阶必学
集合模块:主要是包括各种常用集合:例如 Set(包括HashSet,TreeSet), Map(包括 HashMap,HashTable),List(包括ArrayList,LinkedList)等等,上面列举的都得学习它的源码

多线程:synchronize,volatile,线程池,并发包(如lock等等),太多了,学了你们自然知道,我也不说的太详细了。推荐看《Java 并发编程艺术》+《Java编发编程实战》。

各种文件流:file,inputStream,outputStream等等,反正就是各种文件流,看书时你们自然会看到,不详细介绍。

虚拟机:虚拟机是必须学习的了,重点是GC部分,推荐看《深入理解Java虚拟机:JVM 高级特性与最佳实践》,一本就差不多够了,多看四五遍就行了。

其他:还有很多,如反射,注解,异常等。

2、JavaWeb 入门

学了上面那么多,啥程序、网站也没写出来,有点难受?没事,这个时候,我们就要开始网站了,如果是以 Java 作为开发语言的,那么 JavaWeb 是必须学的了。这个时候你可以入门学习下这些(注意,不用深入,快速找个视频入门就可以了)

(1)mysql、html+css+js 、 tomcat、xml等。推荐看视频,自己去搜索 JavaWeb的视频,那么哪里不会补哪里,这些知识,几个小时就可以入门一门的了。
(2)servlet+jsp 系列。
不建议直接学习框架,也是应该先学习 servlet,这些底层才是最重要滴。
(3)三大框架
Servlet 写太麻烦了,只有认真学过 servlet 的人才能吹框架的好处,所以先学 servlet 在来学习框架,主要有三大框架:Spring + SpringMVC + Mybatis。
其实 SpringMVC 也是属于 Spring 吧,MVC 只是一种思想,这里学习顺序是先学习 Spring,直接看视频入门学习就可以了,后面买书。
视频还是那句话,B 站搜索。黑马的讲的不错,当时看的。

3、中间件的学习
必须中间件:redis,这学过这一门,Redis 感觉人人都得学啊,推荐书籍《Redis 设计与实现》、《Redis开发与运维》。先看后者,感觉后者适合入门,然后在看前者的。

这篇文章是给一个大致的学习方向的,就展开的太详细了,不然得单独来一篇《Java学习路线》。

对于 Java 的学习,你会了上面这些,可去尝试找实习了,大二大三去体验一波学习还是挺好的。

五、计算机基础的学习
看过文章的都知道,一直强大计算机基础的重要性,所以这里必须列举要学的有哪些。刚才说了选择一门语言深入,你在深入学习的过程中,肯定也在学习学校开设的专业课,包括:
计算机网络 + 操作系统 + 数据库 +  汇编 + 计算机组成原理 + 编译原理 等。

而这些,认为是非常重要的,对于秋招的同学来说,只要你会这些,就算你是深入学习 Java的,然后你去应聘 C++ 岗,觉得也问题不大,你和面试官说我不会 C++ 就可以了,大不了到时候转岗。虽然是 Java 技术栈的,但是面的公司,都不是 Java 技术栈的,例如:小米,Shopee,字节跳动,腾讯等。但是,这些都问题不大,你只要会这些基础 + 算法,而且在秋招,特别是对于一些大公司,关于语言的,其实问的也不是很多,基础问的特别多,所以你会基础,面试会占很多优势。下面按照学习的优先级,给这些课程排个序。
其实给他们排优先级是不大好的,这样给他们排,感觉容易被喷,不过没办法,对于小白,还是想排以下顺序

1、计算机网络 + 操作系统
2、数据库 + 计算机组成原理(数据库相应你们可能已经先学过 MySQL 了)
3、汇编 + 编译原理


不过,如果你们还是在校的大一大二,可根据课程的学习顺序,但有时间的,提前学,不一定要等到学校教才学,反正大部分老师讲的一般,但时候你学过的话,可以当做复习,或者学其他。

书籍推荐:
《计算机网络自顶向下》、《图解 http》、《深入理解计算机操作系统》、《汇编语言》(王爽写的)。具体要掌握到哪个程度可以看以前的文章了。
【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?
https://mp.weixin.qq.com/s/bP8a8WHVN_RT7rsCGVx0vw

以前写过很多文章,所以这里就不再赘言了。

六、总结
对于大学四年来学,上面这些是最核心的,也是必须学的。但仅仅是上面这些还是不够的,上面的这些一两年就可以学完的。所以你还有很多其他时间,那么你可以学一些自己感兴趣的,多折腾,多抖鼓,而上面学的,希望你都学。你也可以看大学学过的一些核心基础知识:

普普通通,我的三年大学
https://mp.weixin.qq.com/s/oXKm2OCyN_B5-DuBXfZ0WQ
【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?

程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
https://mp.weixin.qq.com/s/eCNCQAHCv8n4PEFh_fAtiw

前两年都在折腾,特别是第一年,但是,始终一直学习那些比较核心的课程。再次强调,这篇文章不是让你成为大神的,学完也不是多厉害,而是,给处于大学迷茫、不知道学啥的你,一个方向,无论你是否是科班,如标题所说,普通/大众。不过相信,当你学完了这些,你应会有自己的方向了。

最后,是希望各位还在校的学生,大一可以好好浪,但也要保持应有的学习时间,就好好学习吧。不管你是名校还是非名校,你在只要这几年认真学,进大公司的几率,真的非常大,这绝对不是鸡汤。

【Reset from IQINGGE,编码之外,帅地  帅地玩编程】
 楼主| 理智在放假, 发表于 2020-6-30 23:41:09
  这么晚了 洗个澡睡觉了 晚安
Dus 发表于 2020-7-1 09:05:11
SURF-
确定目标,第一步很重要。
 楼主| 理智在放假, 发表于 2020-7-3 13:24:03
Dus 发表于 2020-7-1 10:17
SURF-
搜搜推荐:https://www.chongbuluo.com/forum.php?mod=viewthread&tid=7454
——————————— ...

很详细 谢谢 谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表