设为首页|收藏本站|
开启左侧

[问答] 大学只想写代码,有些专业课都不想学,翘课无数,这样下去有什么后果?

[复制链接]
11#
XXALLS 发表于 2020-6-17 22:06:43 | 只看该作者
 
这样的后果是,你不愁找不到工作。但是你忽视了写代码本身为什么感兴趣。我大一的时候也是宅在寝室写代码,也挂了科。但是和计算机无关的课程,比如大学物理,我大学四年,重休过两次。但是计算机本专业的课程,我也在学。因为与我而言,写代码本身的乐趣,不只是写代码,这只是对计算机技术感兴趣的一个初级表现,深入的学习了写代码以后,如果真的是有兴趣,自然自然的会对计算机的基础产生好奇,当然也不必对各个方面的基础知识,巨细靡遗地掌握,但至少要有基本的概念。
如果题主只是停留在学习 “使用”各种框架的阶段,我不觉得这个不会一直有意思下去。大学的时候,时间这么充裕,自由学习的时候,一点探究本源的好奇心都没有。我不知道写代码的乐趣是什么。单纯的 “写代码”如果变成像打字一样的工作,并没有什么意义,也没有什么乐趣。题主可以思考一下,你写代码的乐趣,乐在哪里。只是敲击键盘的快感么?写好代码和写出垃圾代码感受是不是不一样的?
另外,技术本身是相通的。尤其是大学的基础课程,各个课程之间相互关联,课本上的知识,又和自己自学的其他技术相关联。这个关联性,是十分有意思的。我常举的一个例子是。上课或者自学学到了《C语言》的malloc,进而明白了这是个内存操作。你可以研究一下malloc的实现,看看和《操作系统》课本上的内存管理,是否有印证。可以结合源码,如果glibc的实现不够满足你,可以研究一下jemalloc,tcmalloc的原理,其实都不必看源码,网上各类资料,帮助你消化,这期间呢你肯定会遇到《数据结构》里面的知识点。向周边发散,如果你自学Linux编程话,可以体悟一下Linux里三类共享内存的实现,偶然的一天,你可能顺藤摸瓜,知道了网络编程里面的“零拷贝”,也明白了它为啥效率高一些,你也可以借此了解一下内核态,用户态,在意识到软件背后是硬件的时候,你就可以和《计算机体系结构》或《计算机组成原理》建立关联了,IO和计算,内存与硬盘,还有CPU缓存。此时回忆起在看慕课视频的时候,说redis可以用来做应用的缓存,缓存是什么?其实从底到上,从硬件CPU到上层应有,到处充斥着缓存的概念。同时,你可以探究一下redis具体是怎么管理内存的,这时候就会和最初看malloc,了解jemalloc的时候得到的知识暗合。或者换了个思路,你学习了一个web框架,里面有session操作,你终有一天会灵光一现,诶!我可以自己用redis撸一个session服务出来啊。了解了session,也必将知道cookie,明白了HTTP的无状态。千丝万缕,蛛丝马迹,各自印证,十分有趣。
这时候,下课铃响了。我靠,在上C语言课啊,老师讲完malloc讲了啥来着?
回复 支持 反对

使用道具 举报

 
12#
打狗英雄 发表于 2020-6-17 22:07:35 | 只看该作者
 
近期面试了几十个开发,面试时我只问下面这些基础知识
栈和队列的区别
线程和进程的区别
HTTP和TCP的区别
结果什么样呢?
有一半不能答全
少部分只能答对一道题
这里面不乏工作了好多年的人
连这些基本概念都搞不清楚,做这行也是昏昏噩噩的。
......
有同学以为是我要求太高了,其实不是。只要能说出一点靠谱的我都给过的。
答不上的是一点都说不出来的 (●°u°●) 」
回复 支持 反对

使用道具 举报

 
13#
不穿露裆裤 发表于 2020-6-17 22:08:27 | 只看该作者
 
后果就是挂科多。
挂科多后果就是没学位证。
没学位证的后果就是,找工作HR卡,申学校学校卡,移民移民局卡...
走哪哪卡。
回复 支持 反对

使用道具 举报

 
14#
或然 发表于 2020-6-17 22:09:02 | 只看该作者
 
大学这么好的时间你不拿来泡妞……
写代码有什么好着急的,等你毕业了,天天让你写到十二点。
回复 支持 反对

使用道具 举报

 
15#
as3817886 发表于 2020-6-17 22:09:20 | 只看该作者
 
个人见解欢迎讨论。
题主捡了芝麻丢西瓜,在大学你可以做到既能考好,又能学到东西的。
你在最应该打基础学内功的时候选择了学框架,跟着教程做项目,把自己培养成一名培训班选手或者是积木型程序员(没有歧视的意思,我认为科班出身必须让自己和培训班选手拉开档次),而不是一名工程师,,

当然了,靠着国内大学的计算机课打基础,确实有点难。 你说你去看幕课,讲真,那些项目,,,挺水的。所以我的建议是,
1, 肯定学计算机网络了吧。 自己搭一个小工具,买个云主机,科.0学45437上72,?网。

2, 去youtube选择自己课程的同名替代的国际顶尖大学的课。 比如伯克利的计算机网络,等等。有些课网易还没来及翻译,听力不好就自己打开实时英文字幕功能。逼着自己学。

3, 别总钟情于框架。你看的教程教你的都是培训班水平。 值得知道的知识没有一个是这么简单看来的。去github研究下一些著名项目。跟培训班教你的项目不是一个档次。

4,   你可以兼顾成绩和技术的,我记得看完麻省理工的线性代数,期末随便熟悉题型就考了96。 因为麻省理工线性代数帮你理解原理告诉你这公式是什么,为什么。不像国内老师,给你个公式,就开始做例题,然后学生听不懂,唉。  学计算机网络,我跟着国外大学的视频学,自己用c语言实现了http 1.0,配置过dns cache server,玩过云主机部署过项目。 等期末考试的时候,也是随便突击一下,就考了90多分。因为这课程水平和难度,和国外顶尖大学教授的课来比,不是一个数量级。

5, 再和你强调一下,值得知道的知识,没有一个是随便学会的。 这种学习的门槛,本身就刷掉一大群人。 你现在还有时间,从现在开始不要傻傻的看幕ke视频,做玩具项目了。强化基础,深度应用,杜绝玩具,杜绝挂科。
回复 支持 反对

使用道具 举报

 
16#
红粉为己 发表于 2020-6-17 22:09:44 | 只看该作者
 
不同人的目标不一样,题主的疑问到了最后是,自己还能够成为一个大佬么?
所以我们要先看一下,大佬的是什么,再来看是不是可以成为大佬 ,对不对。




编程界大致会分成两种大佬 ,一种是擅长写算法,一种是架构师。
我们说到算法,并不是单纯指的是字符串匹配,排序这些,而是指深度学习,CRF这些算法。


一般而言,要求你必须硕士以上。


另一种呢,是架构师,架构师需要更多的工程经验,需要最佳实践,对各种框架啊,类库啊,应用场景有很强的控制力。


不需要硕士,但是科班出身往往就有了一个好的基础。


好了,我们再来看一下计算机里常见的六门课程,看看他们讲的什么内容,再来看看,如果有一两门课没学好,对未来的发展影响的是什么?


第一门课,叫做计算机组成原理,也就是题主说到的要挂的,这门课程倒底在说什么呢?
其实很简单,就是告诉你计算机,在硬件上是怎么构成的,顺便讲了一下如何用0和1等构成了软件的世界。


如果单独学这一门课,会有发现有很多知识点,太多了,不太可能每一种都深究,考试的,也未必是以后工作遇得到的,更重要的,未必是对你的知识体系构建有帮助的。


 第1张图片

   这是我们从计算机组成原理的课程中筛选出来的,几个重要的知识点。
  数据表示,和工作中关系比较密切的就是乱码问题,随便一搜乱码,你就会发现,大部分人都受到乱码的困扰,那么到底是什么是乱码呢?


Ascii 码是什么意思?GBK又是干嘛的,Utf8有什么用处?具体的编码过程怎么样的?
你可能知道了,在计算机界,是由0和1构成的,但是0和1太底层了,我们怎么用0和1来表示世界上所有的语言,这其实就是编码的产生。


理解了编码的产生,就很容易理解什么是乱码,也很容易理解为什么会出现乱码。
这就是计算机组成原理中的一个知识点的意思,它其实是告诉你隐藏在底层的知识是什么,打开计算机的黑箱子,让你不仅知道鸡蛋好吃,还能认识下蛋的母鸡。


反过来说,如果说不懂计算机组成原理,会怎么样?
嗯。在当前的编程世界里,还是需要有很多跟底层相关的东西,比如说指令系统,比如说IO,比如说存储。


你未必真的说,不懂计算机组成原理,你就写不了代码,而是说,你少了继续向上爬的基石,懂了计算机组成原理,你就可以明白硬件部分怎么构成,怎么运转。


再来看第二门课:操作系统。


操作系统讲什么呢?讲的是操作系统本身怎么管理进程,怎么分配内存等。
已经从硬件上升到软件而来啦,简单说,程序是跑在操作系统之上的,所以操作系统是怎么管理的呢?


对于内存优化的环节,操作系统里必须要懂的,像说到的线程,进程,协程,更是构建出来了不同的语言优化体系。如果你不懂,大概的感觉就跟妹子看世界杯一样吧?


第三门,计算机网络。
单台计算机不足以构成网络,只有计算机连接在一起,才构成了网络。 这就是计算机网络的来源,什么是OSI七层模型,什么是TCP,这些东西揭开了网络的面纱,展示底层通信的奥妙,常用到的是TCP,Http,Socket等等。




以上三门课,都是计算机本身,和代码有关系,也不算完全有关系,也不一定非要说全部学会,不写代码,也可以从三者之间延伸出来了做其他职业,比如说,红极一时的思科网络工程师和修电脑的。


下面三门课,就是码农的基础课了。


第一个叫做数据结构。


刚刚说到了,计算机是用0和1组成的,但是,我们不能用0和1去构建世界啊,通常都是先用0和1组成基础的小元素,在软件世界里,这种不可能再分的底层结构,就叫做数据结构,通常就是链表,栈,堆,数组,树等。


这就和编程联系的很密切了,你不懂什么是树?很多转行过来的人,会先选择说我要做前端工程师,Html里有Dom,那么什么是Dom?说Dom是一棵树,什么是树?


就不懂了,像这种例子很多。


第二个叫做算法。
这儿的算法,还不是刚刚讲到的分类,聚类这些算法,而是指基本的算法。排序,查找,哈希等。
通常编程界考察的也就是这点东西了,N多人说写代码算法要好,也最多就是简单的算法的意思,你让他讲一个隐马模型试试?


不能说这不是算法,而是相对而言,比较低层的算法,这种比较低层的算法,恰恰是当前很多项目中能够筛选出来你的水准比其他人要好一点的。


还有人说算法能够锻炼人的思维方式,这是没错的,但是锻炼思维方式有很多种啊,我杀人游戏简化 版玩的很好,可不可以在应聘的时候当成是我的优势呢?


反正意思就是算法是一个好东西,但是人一定要有敬畏之心,不要以为自己学了书本上的算法,自己的算法就很厉害了,算法远比现在大家口头上说的算法题复杂的多。
算法其实就是解决问题的一种思路。


第三个呢,叫做数据库。
数据结构有了,算法也有了,计算机仍然不完整,因为少了持久化存储。
把数据怎么样存储在硬盘上,这就是数据库的价值,也包括了,怎么读写和维护。


其他还有编译原理暂且不提,先看这六门课程。
你要说你挂了哪一科,其实在三年之内问题都不大。


但是三年之后后遗症就出来了,你如果要解决一些疑难问题,这些底层的知识少不了。
如果你是打算做算法,这些基础课程,其实最重要的用处反而是证明你的学习能力没问题,能够学的会,毕竟,分类,聚类,机器学习这些才是算法工程师的重点。




我说清楚了么?


还有,很多人其实学了计算机的基础课程,并不知道学来有什么用处,这其实不怪大家。
这些基础学科呢,就是想完完整整的把计算机和软件的底层结构完整的介绍出来,理论上来讲各方面都通透是应该的,但是实际上。。。


不同的职业还是对书上的侧重点不同,所以我们才找到了一个副教授,一起定制了门课程,就是找出来对于码农中的计算机六大基础课的关键知识点。


【修真院】洗髓换骨营--计算机六大基础课程_腾讯课堂



有兴趣的可以看看,特别是非科班出身的。
科班出身的也可以去听,但是最重要的应该是弄清楚,自己学习的课程中,哪些知识点是关键的。




好了,还有没有哪里没讲清楚的?
回复 支持 反对

使用道具 举报

 
17#
枫仁苑之16 发表于 2020-6-17 22:10:27 | 只看该作者
 
可能我的经历跟你稍微有些相似。进入大学后也是沉迷于写代码,学习各种各样的框架,能很快的搭建一个网站,做出一个桌面应用。也跟着老师做过一些网站类的项目,从数据库设计到前端后台一个人包了也没什么问题。
我曾以为,凭着一身的技术,熟知各种框架,各种规范就足够了。当然找个工作有高薪肯定没问题,毕竟很多计算机专业的大学生毕业后没有很多实战经验,本科四年的代码量也微乎其微。
但是,直到一个老师的一句话,让我改变了这个愚蠢的想法。
身为一个计算机学院的学生,你与其他专业的不同之处不是你会写个网页,写个程序,不是你代码写的多快多好,真正让你与其他学院学生不同的是算法。
后来想想,你写代码很溜,这确实是本事,但是你想一辈子写代码吗?可能现在你做的是你感兴趣的项目,但你能保证一辈子都做你感兴趣的活?你学习别人写的框架直接拿来用,你能自己从头开始写个框架吗?
举个不恰当的例子,你当个程序员整天写代码与工地上搬砖的有什么区别?最多你能做个包工头而已。尽管你现在技术很强,能一次搬100块砖,或者实用一些别人做的工具提高你的生产力,但你想想你的工作可替代性强不强,没了你整个项目还能不能进行下去?你再想想现在的人工智能,虽然你编程能力强但让你把人工智能应用到一个项目中你会吗?说句不好听的,你现在做的编程工作充其量也就是一个码农而已,这职业的可替代性太强了,你也不能一辈子干下去。
我是在大四寒假放完才忽然“幡然醒悟”的,三件事触动了我,一就是那老师的话,二是当时的Alpha Go对战柯洁,尽管我不会围棋,但我仍然全程看完了比赛,感到自己的知识是多么的缺乏,三是我的毕业设计,我做了一个基于网页的多人在线游戏,当然开发这个游戏以我能力来说没什么难度,其中一些小算法也能研究出来,但最后我想添加一些AI,怎么办?没办法,放弃不做这个功能,因为我不会。顿时我就觉得我要学的还有很多很多,编程能力是很重要但不是最最重要的。虽然我在大三放弃了保研的机会,也收到了一些公司的offer,但我依然放弃所有offer,决定考研。现在分数出来差不多一个月了,从初试分数上来看应该读研没有很大的问题,导师也基本提前找好,准备往人工智能方向开始研究。也同时借着考研的机会把所有的数学基础,专业课给补上来。
说了那么多可能有点偏题,回到题主的问题,你学的这些专业课尽管看起来好像跟你编程没什么关系,但会提升你的内在专业素质,试问连计算机组成原理也不知道的计算机专业学生与其他专业学生甚至那些培训班出来的有什么不同呢?
另,除了专业课之外,一些公共基础课也是非常重要的,比如高数,线性代数,概率论,没有这些基础知识你拿什么知识去研究深奥的算法?
再另,看到题主说了个物理,这个如果你以后的研究编程方向不是物理这块可能不是很重要,但最起码做到不能挂科啊。
回复 支持 反对

使用道具 举报

 
18#
我是卖橄榄油的 发表于 2020-6-17 22:10:52 | 只看该作者
 
热爱写代码,非常好,你有计算机行业从业的天然优势了。如果长期保持这种热爱,就不会觉得痛苦。
但是,如果一味沉迷写代码(熟练使用各种框架和库),而不去研究其底层原理和实现,那就只能停留在程序员的水准。
有什么问题吗?有,问题还很大。
程序员的工作就是使用现有代码的组合解决某个特定问题,一般称之为搬砖。搬砖是靠数量计算价值的,你每天能搬多少砖,取决于你搬砖的效率和次数。随着不断的锻炼,你每次搬的砖可以从1块砖增长到10块,每天搬砖的次数也可以从1次增长到10次。然而,搬砖是个体力活,而人的体力是有限的,一天的时间也是有限的。年轻时候你可以加班、熬夜,每天工作16小时,但是这样的状态你能持续多久?也就是说,你很快就会达到自身价值的天花板,并且很快就会开始下降。每年都会有大把比你年轻、比你能出苦力且愿意拿比你更少的薪水的人等着取代你。
那么,怎么提升自己的上限呢?这时候需要的就是基本功了。会写几行代码,懂几门编程语言,不叫基本功。基本上稍有领悟能力的人都能在掌握一门编程语言的基础上快速上手另一门语言。真正的基本功,是对编程的理解,也就是计算机科学的基础知识。
计算机科学的源头是布尔代数,因此离散数学是第一门基本功。
硬件使用高低电平表示0和1,那么如何使用数字电路来实现布尔代数中的逻辑功能,就需要掌握第二门基本功数字逻辑
接下来,如何通过逻辑电路的组合来实现更高级的功能(运算器、控制器),如何设计相应的指令系统,使得计算机系统可以准确、高效地运行,就需要掌握第三门基本功计算机组成与结构
硬件的原理基本搞明白了,那么计算机系统如何管理软硬件资源(进程管理、作业管理、存储管理、设备管理、文件管理),就需要掌握第四门基本功操作系统
资源的管理和分配就涉及到各种数据的处理,以及各种问题的解决方法,这时候,数据结构与算法就是非常重要的基本功,好的数据结构和好的算法可以在解决同样问题的时候表现出千百倍的优势。
数据需要存储,也需要良好的管理和加密,那么一个优秀的数据库系统就是非常重要的了,为什么采用关系数据库,2NF到3NF改进了什么地方解决了什么问题,3NF到4NF又解决了什么,掌握了数据库原理,才不会让你的软件系统为数据管理发愁。
原理你都明白了,终于要编程实现了,那么你用了C++、JAVA、C#、PHP、Python写的那些乱七八糟的东西计算机是怎么看懂的呢,这就需要掌握编译原理,有这一门基本功,你完全可以创造属于自己的高级编程语言。
全世界那么多人,一台计算机可不够用,大家又都想快速地传递信息,不用再为了告诉40公里外的雅典战争胜利了而跑死一个优秀的战士,那就需要计算机网络的支持了,OSI七层模型的优缺点是什么,TCP/IP模型每一层的功能是什么又是如何实现的,掌握这门基本功,你就能明白我们与这个世界是如何互联互通的了。
好了,现在你已经基本具备一个高级程序员的基本素质了,可以去开发项目实战了,那么问题来了,这个项目可行吗,需要实现哪些功能,每个功能分别准备如何实现,代码码出来了如何确保正确性和鲁棒性,软件后期运行出现问题如何维护,软件工程会给你一些启示。
以上是九大基础课,掌握这些基本功是成为优秀程序员的基础。但是,程序员就是你职业生涯的尽头了吗,每天码代码就是你的追求了吗?再往上走,是项目经理、需求分析师、架构师、算法工程师……等一系列更专业的岗位,需要你掌握软件项目管理、软件体系结构、云计算、分布式计算……等一系列专业知识,无论是走技术向还是走管理向,专业知识都是你手中的镰刀和锤子,那时候的你才能成为专家,而那些赤手空拳的,只能叫莽夫
最后,如果说了这么多,还是有人觉得学这些没用,会码代码就行,那烦请出门左转,看看满大街某内、某某连出来的“程序员”,再回头看看你读的大学,你是不是对得起九年义务教育培养出来的这么优秀的你。
回复 支持 反对

使用道具 举报

 
19#
林初一k 发表于 2020-6-17 22:11:27 | 只看该作者
 
修炼成大佬就别想了,但到十几年后修炼到我这个程度应该没有问题。我当年也翘课无数,好多老师都没见过。但我得说,挂科就不划算了,补考重修都很浪费时间,而且补考只能拿D吧?成绩单也不好看啊,所以我当年从来没挂过科也没补考过。
计算机原理还是有用的,但也不着急,等你用的时候就捡起来了,就那点事儿。
就一个小建议,别总是写自己的项目,闭门造车没啥意思,多出去参加点好项目,还能挣钱。
回复 支持 反对

使用道具 举报

 
20#
南沐弦123 发表于 2020-6-17 22:11:56 | 只看该作者
 
对一个本科生,不写代码到写十万行代码的提升,是0分到9分的提升。写十万行代码,到一百万行代码的提升,是9分到9.9分的提升。

那上课,或者说学习计算机科学的基本理论课程呢?是9.9到10分的提升么?

并不是,计算机科学的基本理论课程,是给你打开了通往100分的大门,而不是永远在10分的门外面瞎折腾。

就像你写爬虫,写框架,写网站,学会再多的框架,也并没有什么用处,如果说计算机科学工程向的分支,是不断从硬件层(HW layer)抽象上来的话,你是永远在别人给你抽象好了的层面(layer)游来游去。

所谓一叶障目,不见泰山。活在别人的框架下,又如何去活成别人呢?

(顺便编程语言只是语言,你学会了写字,难道你写的字就有价值么?)
回复 支持 反对

使用道具 举报

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

本版积分规则


0关注

7粉丝

466帖子

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-6-17 02:44