程序员菜鸟必备——作为独立开发者如何系统的学习编程

接触一个行业,前期最好来一个系统的学习,有完整的框架一点一点的把基础吃透,不能左一耙子,右一锄头,以我的从业经验给大家分享如何系统的学习编程开发,刚入坑的程序员菜鸟注意了,迅速占领高地,迅速收藏了。

总体大致分为以下几类:

A.教材上的知识

这部分内容来自计算机专业的课程教材。也有可能会涉及一部分来自其他相关专业或者相关课程的内容。

B.编程语言

每一个程序员只有在会使用一门语言的情况下才有可能从事开发工作,所以学习并掌握一门语言是最低要求了。

C.SDK

光有一门语言是不够的,从事任何实际的软件开发都需要一个类库或者开发包才可以完成。比如C语言中的库函数,C#中的.NetFramework类库,Windows的API等等就属于这个范畴。这方面的资源有个平台DevStore可以关注下,收录了很多的sdk服务 配置过程 评测,直接搜索就可以了。

D.开发工具

以如今的情况来说,没有开发工具理论上也是可以开发软件的,但效率就是一个问题,所以掌握并使用一个开发工具完成开发任务应该也是一个最低要求。

E.领域知识

软件总有用户,于是开发这些用户使用的软件,那么程序员就需要了解用户所在行业的知识,至少需要知道一些基本的必须的知识。还有一部分的内容也划分为领域知识,比如从事Photoshop这类软件的开发那么图形相关的知识就必须了解一些,从事工控软件的开发,那么对控制方面的知识也要有所了解。

以上的分类是在开发过程中我对知识的理解,一个程序员知道这些知识后从事一个软件的开发应该是没有问题了。下面分别来讨论一下这些知识的学习问题。

一.教材知识的学习

做为一个已经从业的程序员来说,我不认为计算机专业的所有专业课程(包括专业基础课,我在读大学的时候还有这个说法)都是有用的。实际上对于大部分程序员来说,只需要很少的一部分知识就足够了。这些知识主要由三门课程组成:数据结构,编译原理,操作系统。对于大部分的程序员来说,其他课程的内容不是没用,而是在实际工作中用不上。

数据结构这门课程的重要性,可以理解为是程序员的圣经,怎么如何形容其重要性都是不过过分的。这门课程中需要掌握的内容,我个人观点如下:

1. 掌握所有线性数据结构的知识,比如表,栈,队列等(广义表可以不作要求)

2. 二叉树的基本操作和基本使用

3. 图中需要知道遍历和了解最短路径算法,以及相关的一些概念

当然对于某些程序员来说,这是不够的,因为从事的具体的软件开发工作会有不同的要求。但是对于大部分从事MIS软件开发的程序员来说,这些知识够了。掌握这些知识可以有两个层面的要求。第一个是完成足够的习题,从而可以熟练的答题,第二个是能够在实际工作中使用数据结构描述实际的事物。做到这两点要求应该说不算太高,注意多加练习就可以了。目前来说这门课程的经典教材也不少,相信只要按部就班的学习完就是合格的了。

编译原理这门课程主要是学习方法和思想而不是课程中的知识本身。因为毕业出来能从事编译器开发的人实在是太少太少了。这门课程需要掌握了解的东西不多,我个人的观点主要是以下几个:

1. 确定有限自动机和非确定有限自动机的使用

2. 词法分析程序的实现

3. 语法分析的方法

自动机在实际应用中的体现就相当于是状态转换图,这个工具非常的重要,希望能够务必掌握。我们在开发EntityModelStudio时,设计界面交互部分的内容就是先设计出状态转换图然后再写代码的,否则直接开发的话就会面临开发失去控制的风险,同时重构和维护也会相当麻烦。所以这个工具极其强大,非常实用。另外提一下,非确定有限自动机,这个工具的能力和确定的有限自动机是等价的。但是由于它的不确定性,更符合人的自然思维习惯,从而在某些设计场合相对会方便很多。这一点是很实用的,也是很吸引人的。

掌握词法分析程序的实现,可以大幅度拓展开发能力和思考能力。这部分东西理论上描述可能比较麻烦,但是实际使用时还是很容易上手的,所以非常值得学习一下。语法分析程序不需要掌握了,毕竟开发编译器的机会是微乎其微的。但是相关的方法和思想希望能够了解,这可以帮助程序员用电脑的思维来思考问题。

操作系统需要掌握的东西只有两个:

1. 五大管理的基本方法,尤其是涉及内存管理的策略

2. 线程或者进程的同步技术

操作系统是复杂的,但是教材中介绍的这些管理方法相对来说是简单易懂很多了。这一难一简之间体现了基本知识的重要性,基本知识在实际开发中的应用的广泛性。好好的体会,就可以明白用简单方法解决复杂问题的技巧。线程进程的同步,这个就不用多说了,大家都知道它的作用,如果实在不想掌握的话那我也非常愿意相信你的理由一定是充分的,否则你绝对不会那么做。

最后我想强调的是,无论你如何看待这些知识:可能觉的没用,可能觉的太难,可能是不感兴趣,但是如果你想做程序员的话,那么请你务必最大可能牢固,最大可能熟练的掌握它。

开发者必上的网站——DevStore

时间: 2024-10-10 16:39:31

程序员菜鸟必备——作为独立开发者如何系统的学习编程的相关文章

程序猿菜鸟必备——作为独立开发人员怎样系统的学习编程

接触一个行业,前期最好来一个系统的学习,有完整的框架一点一点的把基础吃透,不能左一耙子,右一锄头.以我的从业经验给大家分享怎样系统的学习编程开发,刚入坑的程序猿菜鸟注意了,迅速占据高地.迅速收藏了. 整体大致分为下面几类: A.教材上的知识 这部分内容来自计算机专业的课程教材.也有可能会涉及一部分来自其它相关专业或者相关课程的内容. B.编程语言 每个程序猿仅仅有在会使用一门语言的情况下才有可能从事开发工作,所以学习并掌握一门语言是最低要求了. C.SDK 光有一门语言是不够的,从事不论什么实际

Git算不算程序员的必备技能?

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书. --异步小编 Git的背后有着一个非常精彩的成功故事.2005年4月,Linus Torvalds因不满当时任何一个可用的开源版本控制系统,就亲自着手实现了Git. 时至今日,如果我们在Google中搜索"git version control"这几个关键词,都会看到数以百万计的返回结果.Git已经俨然成为了新型开源项目的一个标准.许多大型的开源项目都已经或正在计划迁移到G

技术才是王道、程序员修炼必备武器

信息技术的发展时间虽然不长,但其爆炸式的发展速度使信息技术迅速覆盖社会和人类生活的各个角落.程序员们是这场信息化浪潮的见证者之一,更是其中的主要参与者,这是时代赋予每个程序员的机会和责任. 信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封.本人在工作期间曾看见过很多程序员只要有闲暇时间就?浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取.而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想?学,却又不知从何学起,今

程序员入门必备经典书单

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. 成功的程序员在以往的工作和生活中都曾经历过大大小小的不确定性,承受过永无休止的压力.他们之所以能够成功,是因为拥有一个共同点,都深切关注创建软件所需的各项实践.他们将软件开发视为一种需要精雕细琢加以修炼的技艺,他们以专业人士的标准要求自己,他们具有职业素养.伟大的程序员们以分享为快乐,以读经典实现事半功倍.今天小编带来了大师级经典作品编程语言篇. <C Primer

程序员级别鉴定书 ----中级.NET开发者

面向接口.面向对象和面向方面编程区别 面向接口编程 是面向对象编程体系中的思想精髓之一 (博客园文章链接面向接口编程详解(一)——思想基础) 面向接口编程 接口是一组规则集合 面向对象编程 对具有相同行为和属性事物的封装 重用性.灵活性.扩展性 面向方面编程 (AOP面向方面编程) 接口和类的区别 关键字 class,interface 接口不能被实例化 接口支持多重继承 接口不去实现方法和属性 继承接口的类需要实现接口的所有方法 类可以被实例化 继承类的类不需要实现非abstract修饰的所有

100+个程序员开发必备参考手册(在线及下载) [复制链接]

100+个程序员开发必备参考手册(在线及下载) [复制链接] 上一主题下一主题   离线张广巨 班长 关闭 个人中心可以申请新版勋章哦 立即申请知道了 加关注 发消息 只看楼主 倒序阅读 使用道具楼主   发表于: 2012-11-22 本部分设定了隐藏,您已回复过了,以下是隐藏的内容 即使经验丰富,天赋过人,也不得不承认,你并不能记得所有的东西,尤其是各种各样的语言的API,参考手册(Cheat Sheet)和Google肯定是必备,为了更方便的使用,也有很多有心的人收集整理了很多,比如下面这

【软帝学院】七点java程序员进阶必备技能

程序员进阶很慢?七点java程序员进阶必备技能,让你少走弯路 一.架构师筑基必备技能 阿里面试更多的内容是架构师基础内容,比如并发编程的AQS.CAS等,多纬度提升架构基础,并发编程高级进阶,JVM性能深度调优,网络编程与高效IO,深入Tomcat底层,Mysql深度优化实战,架构师必备Linux 二.分布式方案及团队协作工具 分布式环境下应该知道的分布式系列问题: 分布式事物解决方案 单点登录解决方案 分布式任务调试解决方案 Maven企业级实战 Jenkins分布式构建实战 Git版本管理

黑马程序员:从零基础到精通的前端学习路线

随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上流传甚广的一张前端学习思维导图,很多初学者表示看到这些密密麻麻的知识点就已经晕了.确实,前端是一门涵盖面很广的学科.但是想学前端的你也不用慌张,内容虽多但有迹可循,只要循序渐进就不怕学不好前端! 那么前端开发到底需要学什么?应该怎么学?接下来黑马程序员前端学院教你如何从零基础学习前端. 一.前端开发入门 在入门阶段,你首先要学会最基本的技能

黑马程序员——Java面试题之银行业务调度系统

                       android培训.java培训.期待与您交流!  对象分析: 1.客户类按照业务分类,客户可以分成三类. public enum Custommer { COMMON ,VIP , EXPRESS; public String toString(){ String name =null ; switch (this ){ case COMMON : name ="普通" ; break; case VIP : name ="VI