原文链接:基础的重要性(程序员之路)

基础的重要性(程序员之路)

学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯路。

什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。初学者可能体会不到这些基础的重要性,学习jsp,donet,mfc,vb的朋友甚至会对这些嗤之以鼻,但是一开始没学好基础就去学jsp或donet会产生很坏的影响,而且陷入其中不能自拔。

我上大二的时候还对编程没什么概念,就上了门C++也不知道能干什么,老师说MFC也不知道是什么东西,看别的同学在学asp.net就跟着学了,然后就了解到.net,j2ee,php是什么了,就觉得软件开发就是用这些了,而上的那些专业课又与我们学的sqlserver啊,css啊,ajax啊,毫无关系,就感慨啊,还不如回家自学去就为一个文凭吗?还不如去培训,浪费这么多钱.于是天天基本上没去上什么课,天天就在做网站,几个学期就做了三个网站。感觉做这些网站就是学到些技巧,没什么进步,这些技巧就好比别人的名字,告诉你你就知道了,网上也都可以搜到。那时候就觉得把.net学好就行了,搞j2ee的比较难,搞api编程就别想了,操作系统更是望尘莫及了。后来随着学习的深入和看了网上许多前辈们的建议才对这些基础的重要性有所体会。

虽然.net或java的开发并不直接用到汇编,操作系统这些,但是不掌握这些基础是有很大问题的,因为你只知其然不知其所有然,在mfc和.net里面控件一拖什么都做好了,很方便,但是出了问题可能就解决不了,有些在网上搜都搜不到。这就是基础没打好,不知道它的原理就不知道出错的原因。在学.net的时候常会讨论那些控件该不该用别人说尽量别用也不知道为什么?不让用是因为你在高层开发,你不知道它的原理出错了你可能解决不了,但其实是应该用的,不然人家开发它干嘛,但要在了解它的原理后去用就会很方便。

要编写出优秀的代码同样要扎实的基础,如果数据结构和算法学的不好,怎么对程序的性能进行优化,怎样从类库中选择合适的数据结构。如果不了解操作系统,怎样能了解这些开发工具的原理,它们都是基于操作系统的。不了解汇编,编译原理,怎么知道程序运行时要多长时间要多少内存,就不能编出高效的代码。

如果没有学好基础一开始就去学.net,java这些越往后就会觉得越吃力,它们涉及的技术太多了,而且不但在更新,对于三层啊,mvc,orm这些架构,你只会用也不明白为什么用,就感觉心里虚,感觉没学好。而你把面向对象,软件工程,设计模式这些基础学好了再去看这些就可以一不变应万变。

大家不要被新名词、新技术所迷惑.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。

开始编程应该先学C/C++,系统api编程,因为它们更接近底层,学习他们更能搞清楚原理。学好了c/C++编程和基础,再去学习mfc,.net这些就会比较轻松,而且很踏实。假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。

编程就好比练功,如果学习.net,mfc,vb等具体的语言和工具是外功(招式),对基础的学习就是内功,只注重招式而内功不扎实是不可能成为高手的。很多人会认为《射雕英雄传》中马玉道长什么都没有教郭靖,马道长教的表面看来是马步冲权实则都是内功心法,郭靖拜师洪七之后开始练习降龙十八掌凭借的就是这深厚的内功,吞食蝮蛇宝血又加上练习了周博通传授的九阴真经和外加功夫双手互博技之后,终于练就行走江湖的武功,由此可见马玉道长传授给了郭靖的是最基础的,也是最重要的观念,编程也好比盖高楼,根基没打好早晚有一天会挎掉的,而且盖得越高,损失也越惨重。这些底层知识和课本不是没有用也不是高深的不能学,而是我们必须掌握的基础。

这些是个人的愚见,说的不是很清楚,大家可以看看这些前辈们的经验,相信看完后大家一定会有所体会的。为了方便大家阅读,我把这些前辈们的经验建议整理成了pdf,大家在下面下载吧!希望对大家有帮助。

前辈们的经验pdf下载地址:http://pan.baidu.com/s/1dDEdOFR

怎样打好基础

前面一篇文章基础的重要性告诫大家要打好扎实的基础,不要只顾追求时髦的技术,打好基础再去学那些技术或是参加些培训,对自身的发展会更好。

基础这么重要怎样学好它呢?我觉得学好它们应该对照这些基础课程所涉及的方面,多看一些经典书籍,像算法导论,编程珠玑,代码大全(具体介绍在本论坛每本书的版块里)等,这些经典书籍不仅能帮助我们打好基础,而且对我们的程序人生也能产生莫大的影响,相信认真研究看完这些书籍后,我们的基础会十分扎实,我们的程序之路也会十分顺畅!然而这些书籍并不好读,有些甚至相当难读,国内的大学用这些书当教材的也不多,这些书又偏向理论,自己读起来难免会有些枯燥无味。于是就想到建一个论坛,大家共同讨论学习这些书籍,就会学的更踏实更牢固更有趣,这样就能为以后的学习打下扎实的基础。

总结学习流程如下,供大家参考:

  1. 数学,英语
    高数,线代,概率论,有课就好好学,没有就算了
    英语尽量搞熟,有时间技术书都看英文的
  2. 学习计算机组成和工作原理,汇编
    看书:编码的奥秘,计算机系统概论,计算机科学概论
    计算机组成结构化方法,
    计算机体系结构量化研究(可以第2遍再看)
  3. 单片机
    网上搜2440/4412的裸机程序,做了解
    模电数电的课程,有课就好好学,没有就算了
    看书:C Primer Plus(第五版)中文版
  4. 学习linux系统和linux程序设计
    看书:鸟哥linux私房菜,Linux程序设计敲书中例子
    unix环境高级编程/UNIX编程艺术(可以第2遍再看)
    实现个小东西
  5. 学习算法与数据结构
    看书:算法与数据结构分析c语言描述,敲书中代码
    编程珠玑
    算法第4版红皮书
    算法导论(可以第2遍再看)
    离散数学及其应用,有课就好好学,没有就算了,也可以自己看看
    刷leecode里的题,看介绍Leetcode 编程训练 | 酷 壳 - CoolShell.cn
  6. 学习java
    java编程思想,写个小东西
  7. 学习数据库系统,c++
    看书:数据库系统概论
    C++编程思想
    编写简单数据库
  8. 学习计算机网络
    计算机网络第6版
    unix网络编程
    写个小型web server
  9. 软件工程/面向对象/测试
    看书:计算机程序的构造和介绍,head first设计模式
    代码大全,程序员修炼之道
  10. 操作系统,linux内核学习
    看书:操作系统概念
    了解linux驱动编写,linux内核设计与实现,linux设备驱动
    编写os,参考mit jos http://blog.csdn.net/roger__wong/article/details/8373719
  11. 编译原理学习
    深入理解计算机系统,编译原理与实践
    链接、装载与库,编程卓越之道
    有时间看编译原理龙书,虎书,鱼书,看不懂算了
    有时间写个简单解释器
  12. 了解图形学,分布式,计算机视觉,机器学习
  13. 了解各种开发方向android app,php/.net,java/c++桌面程序,网站程序(建议基础打好后去公司再选择方向)

【转】基础的重要性(程序员之路) 经验分享15篇相关推荐

  1. 基础的重要性(程序猿之路)

    学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心.近期在网上也看了很多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯路. 什么 ...

  2. 我的程序员之路:自学Java篇

    序章 时光疾驰,从事IT行业已两年有余. 16年11月开始自学Java,从此开启自学之路,后来实习期自学大数据.python.爬虫等,最终成长为一名平凡的程序员.回首望去,一路上的过往历历在目,有初学 ...

  3. 2年的程序员之路 ,分享给你们

    2015年5月26日,正式入职IT行业,成为一枚程序猿.经历了两年多的IT生涯,敲了两年多的代码,到今天,才真真正正的思考这个行业. 2014年末,即将大学毕业的我,面临着找工作的迷茫,算是随大流的跟 ...

  4. 程序员之路──如何学习C语言并精通C语言

    程序员之路──如何学习C语言 学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通.如何以最小的代价学习并精通C语言是本文的主题.请注意,即使是"最小的代价",也绝不是什么 ...

  5. 程序员之路,蛇年快加速!

    转眼一年时间又过去了,时间如弹指间灰飞烟灭,程序员之路,却在缓慢加速... 春节,或许你没有回家,继续奋斗在开发一线上:或许你回家却被亲人朋友拷问了一把,想必清醒了许多,对未来思虑更多. 但凡春节过后 ...

  6. 从零基础到高级程序员需要走多久?

    原文:从零基础到高级程序员需要走多久? 绝大多数计算机专业的学生是零基础,即时通讯软件 其中不乏被调剂的.等到毕业之际,有的成了大神,进入BAT或者google微软,有的还是零基础-- 我高中搞竞赛, ...

  7. 噩梦的那一年-程序员之路

    一.放弃考研 "请问是钱某四同学吗?" "我就是." "你好,我是人民大学招生办,我想问你昨天怎么没来照相啊?" "啊...我已经 ...

  8. 开弓没有回头箭——我的程序员之路

    从今天开始在CSDN上写博客了,期待了好几天还是有点紧张的. 其实自己经常写东西的,不过是日记,不会让别人看到.但今天我要在这里大声宣布,我正是踏上了我的程序员之路. 一直以来,我都没有真正的跟从过自 ...

  9. CSDN学霸课表——2017年PHP程序员未来路在何方

    <2017年PHP程序员未来路在何方> PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . Go . Py ...

最新文章

  1. 继承实现的原理、子类中调用父类的方法、封装
  2. Android 为什么要有handler机制?handler机制的原理
  3. 实现根据id查询房源数据的dubbo服务
  4. 【Linux入门学习之】vi/vim编辑器必知必会
  5. Android笔记 fragment通信
  6. 德国精品软件 Throttle 网络加速软件
  7. C++_智能指针shared_ptr、unique_ptr、weak_ptr、auto_ptr总结
  8. 【视频转换】监控视频DAV转mp4
  9. JMeter基础 — JMeter中BeanShell断言详解
  10. ppt to html c,PPTC参数.pdf
  11. Extjs--关于文件的下载
  12. VMware的linux虚拟机玩耍 [2] (环境配置与一些软件安装)
  13. CF1324D Pair of Topics 题解
  14. vue3实现吸顶效果
  15. 连不上虚拟机的mysql_主机连不上虚拟机数据库
  16. Python Ajax爬取微博个人博客数据
  17. 立足中国,聚焦欧洲,蔚来汽车的如意算盘真会打?
  18. Sqlserver数据库显示(正在恢复)
  19. 太原火车站附近的宾馆
  20. TS入门详解(typescript)

热门文章

  1. 用Java构造器来计算圆的周长和面积
  2. 新享科技UniPro英文版上线 助力中国智造“出海”
  3. MongoDB的基本语法
  4. 不带位置反馈的电磁铁比例阀放大器RT-PSDM1、RT-PSDM2
  5. GDKOI2021普及游记
  6. 物联网卡的作用有什么
  7. nfctoolspro下载_NFC Tools PRO
  8. Java - 日志(进阶篇)
  9. 【shell脚本】沐风晓月跟你聊聊shell脚本中的case实战
  10. c语言自动关机程序,自动关机程序:如何制作自动关机软件