给独立开发者的经验分享——教材知识

一.教材知识的学习

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

数据结构

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

  • 1.掌握所有线性数据结构的知识,比如表,栈,队列等(广义表可以不作要求)
  • 2.二叉树的基本操作和基本使用
  • 3.图中需要知道遍历和了解最短路径算法,以及相关的一些概念

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

编译原理

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

  • 1.确定有限自动机和非确定有限自动机的使用
  • 2.词法分析程序的实现
  • 3.语法分析的方法

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

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

操作系统

需要掌握的东西只有两个:

  • 1.五大管理的基本方法,尤其是涉及内存管理的策略
  • 2.线程或者进程的同步技术

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

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

开发者必上的网站——DevStore

时间: 2024-10-06 09:50:01

给独立开发者的经验分享——教材知识的相关文章

给独立开发者的经验分享——汇总

A.教材上的知识 这部分内容来自计算机专业的课程教材.也有可能会涉及一部分来自其他相关专业或者相关课程的内容. B.编程语言 每一个程序员只有在会使用一门语言的情况下才有可能从事开发工作,所以学习并掌握一门语言是最低要求了. C.SDK 光有一门语言是不够的,从事任何实际的软件开发都需要一个类库或者开发包才可以完成.比如C语言中的库函数,C#中的.NetFramework类库,Windows的API等等就属于这个范畴.这方面的资源有个平台DevStore可以关注下,收录了很多的sdk服务配置过程

给独立开发者的经验分享——开发工具

开发工具 除非你只用独立的文本编辑器写代码,并且用命令行编译,否则你一定需要一个开发工具,尤其是一个带IDE的开发工具.对于你使用的开发工具而言,需要了解的基本内容如下: 1.项目或者工程的创建,属性修改,打开关闭等基本操作 2.具体开发时的环境设置 3.项目中的文件组织及管理 4.常用功能的使用,比如:编译,执行,断点设置,代码跟踪,调试信息输出,实用的快捷键,调试时变量查看,查找/替换等等 5.从帮助文档中了解IDE的新功能.因为这些功能有可能对你是非常有帮助的. 6.帮助文档的获取 如果有

给独立开发者的经验分享——编程语言

二.编程语言 对于一个程序员来说,一般需要掌握2,3门语言是基本的,并且学习一门新的编程语言也是基本功级别的能力,所以这部分主要谈谈快速学习一门新的编程语言的方法.我学过的语言有这些(这里编译器和语言的概念等同了并且不按先后次序):Foxbase,C,C++,汇编,Visual C++,Delphi,FoxPro,VB,C#.就我个人的体会来说,这些语言可以分为三种类别:非面向对象的,面向对象以及支持可视化设计的. 这三种类别的语言有一些共同的内容,而这些内容也是我们在学习一门新的编程语言时首先

干货|Dubbo社区开发者日经验分享

Hello,各位小伙伴大家好,我是小栈君,昨天也就是2019年10月26日,有幸在成都参加了由阿里举办的"Dubbo社区开发者日". 本次活动汇聚了各方面的大神欢聚一堂,主要是对现有微服务状态下的技术的痛点和执行流程的分享和解析.近距离的接触到技术大佬们,面对面的交流,让人获益良多. 所以小栈君这里也是精心准备了会场上的PPT供大家下载学习,搜索"IT干货栈",回复关键词"阿里技术分享"即可得到PPT,当然小栈君也是继续更新后端技术栈和大家一同进

分享做为独立开发者的一些经验,如何成为独立开发者?

引言 理想的是能在家里工作,成为独立的开发者,在全世界各地都能工作,而不限制于地方.可以全年都在外面,旅行,工作.每个人都应该有这个理想吧,下面这篇文章,为大家讲述了,如何成为独立开发者,以及国内外独立开发者的现状 如何成为独立开发者?   首先扔接活网站: 1. http://odesk.com 2. http://freelancer.com 3. http://elance.com 然后谈谈入行准备: 1. 足够的面包. 2. 个人网站: 一个显示你个人涵养,介绍你过往经验,展示你个人项目

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

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

Java程序员转Android开发必读经验分享

摘要:DevStore小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区别: Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择.学安卓从事移动互联方向开发,学Java从事软件.网站开发.而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好. 言简意赅的说说

Kaggle 数据挖掘比赛经验分享

1.Kaggle 基本介绍 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.在 Kaggle 上,企业或者研究机构发布商业和科研难题,悬赏吸引全球的数据科学家,通过众包的方式解决建模问题.而参赛者可以接触到丰富的真实数据,解决实际问题,角逐名次,赢取奖金.诸如 Google,Facebook,Microsoft 等知名科技公司均在 Kaggle 上面举办过数据挖掘比赛.2017年3月,Kaggle 被 Google CloudNext

独立开发者低成本推广APP的18条技巧

导语:知道并不等于执行,有些最基本的推广方法往往会被忽略.这些,是自国外开发者总结出的这18条经验. 现在市面上充满了大牌子大公司和大制作的手机游戏,经常有游戏花300万成本开发,然后再花2000万推广;这些游戏都梦想着上线之后就有4000万月流水疯狂吸金.但是作为独立开发者,就算没有多少推广的费用,也有很多推广的策略和方法能让你不花钱就获得效果.这些技巧和方法并不是什么奇妙高招,或多或少开发者你都会知道,但是知道并不等于执行,有些最基本的推广方法也往往会被忽略.我们将来自国外开发者总结出的这1