如何正确地选择并加入编程领域(仅限windows系统编程)?

原创 2011年11月15日 17:37:28
[作者]
站点:
http://www.x86asm.com
Email   : pliceman_110@163.com
QQ      : 643439947
编程生涯: 2001~至今
职业生涯: 9年
曾经职业: 通用软件架构师 通用软件技术总监 通用软件研发工程师
开发语言: C/C++; x86asm; Object Pascal; C#;
开发工具: VC++; Delphi;
研发领域: Windows应用软件安全; Windows系统内核安全; Windows系统磁盘数据安全;
技能种类: 逆向 驱动 磁盘 文件
原创书籍:
Windows编程入门-<无名的微型书>

[序言]
如何编程,如何学好编程,这是编程行业讨论最多的话题,面对不少刚刚加入编程学习组的学员,我同样少不了要先回答这个问题.下面简单分享我自己想法.由于现在是效率时代,所以我写这篇文章力求简洁.

[什么样的人可以学好编程?]
很多人都对编程感兴趣,但是一直都无法学好,觉得很困惑.到底是不是基础太差或者理解能力比别人差一截.在我眼里只要具备几个基础条件就可以学好编程: 智商正常 坚强毅力 寂寞能耐 好奇心强
1>智商正常
:只要不被医学定位为弱智,白痴就行了.
2>坚强毅力
:学习是需要付出代价的,大家回想一下初中 高中自己班里的优等生,大多数都是刻苦学习,你玩的时候,优等生是不玩的,你睡觉的时候,优等生是不睡觉的.
PS:这里我不是提倡书呆子学习,主要提倡是时间的重要性,学习是一个消耗时间的过程.
3>寂寞能耐
:学会和寂寞做斗争的人,学习是很枯燥的,所以寂寞经常来袭你,这时要学会变通方式,跟寂寞做斗争,而不是因为寂寞而放弃了学习.
4>好奇心强
:学习一门技术,重要的是兴趣和好奇,这种强烈的好奇心才能让你的学习激情持久.

[4个基本条件我都有了,如何编程呢?]
很多人编程感兴趣,但无从下手.是什么原因呢?
这是因为你没有认真分析您的编程兴趣来由.在学习编程之前,你要好好思考你是因为什么兴趣才编程的?只有知道你的兴趣来由,才能决定你编程领域,编程领域明确了,才能知道如何针对这个领域学习编程.

[现在都有那些编程领域呢?]
编程领域很多,我没法一一举例出来,这里只列出关注度比较高并且热门的领域:
PS:科研领域的编程,我就不列举.因为这是面向初学者

// 白色产业
1> 游戏开发
2> 系统安全
3> 网络安全
4> 数据库
5> 网络开发
6> 手机应用开发
7> 系统应用开发

// 灰色产业
1> 网络入侵
2> 破解
3> 游戏外挂
4> 病毒
5> 木马
6> 恶意远程控制

[挑选你感兴趣的领域并决定你的编程语言学习.]
因为我是Windows系统的软件开发工程师,而且是面向大众化的开发,而不是科研型也不是黑客型.所以我就简单打个比方,介绍我熟悉的.比如: 我喜欢"系统安全"和"系统应用"开发,那么这些大部分是基于C语言和C++语言基础的,然后慢慢派生出其他语言也可以进行开发,比如C# JAVA VB DELPHI都可以.但是我想说,大部分领域(破解 游戏外挂 病毒 木马 远程控制 游戏开发 网络开发 杀毒软件......), C语言和C++语言是编程的基础,所以对于初学者,一开始定位C语言的学习是正确的方向,把C语言掌握了,下一个阶段就是掌握C++语言.只要你熟悉掌握C语言和C++,那么再去学习其他语言是非常轻松的.

[学习编程之前需要预先打好什么基础吗?]
也有很多人在担心这个问题,害怕基础不行,无法进入编程领域.其实这种想法是多余的.只要你智商正常,很多基础都可以后天弥补,而且可以同步进行.编程语言的英语关键单词量不多,只要你会自己手动查阅英文字典,对着看就OK了,没有必要说先让英语达到一定程度了,在去学编程.英语学习是可以同步进行的.再说到数学,文化在怎么低,也总得初中数学,初中数学的基础理论足够你去学习基本的编程语法(注意这里是指编程语法)了,因此没有必要等到把你的数学都补全了在去学编程,浪费时间了.应该学会同步.当然随着学习编程的不断深入,自觉的根据自身数学基础根基薄弱的地方进行补缺补漏,学习数学的原则是够你用就OK.因为你不需要成为数学家.

[熟悉掌握编程语言,如何深入提高自己的编程能力?]
要提高编程能力,跟自身知识理论有很大关系.下面我列举几个重要因素:
1> 英语
: 英语的好坏,决定你获取和消化国外技术文献的速度,很多先进的技术理念来自于国外,然后英文文献占用比例最大.如果你的技术来源渠道仅限于国内中文文档,那么你的技术提升会很慢.
2> 数学
: 这是非常有争议的话题,数学到底对编程起到多大作用,目前没有一篇文章解释得清楚.但我只能说,注意扬长避短.有些领域用到的数学理论非常多:比如视频编解码开发,模式识别,神经网络, 游戏引擎,但这些高深理论一般普通软件开发人员是不用去接触核心的.我个人认为如果不从事科研型的编程领域,那么本科4年的数学理论足够你用了.高端软件开发的数学理论重点是:离散数学.
PS:你们可以阅读我网站(www.x86asm.com)另外写的2篇文章: "不要因为英语和数学而害怕学习编程" "迈向高端软件开发的数学必经之路"
3> 数据结构+算法
: 这理论是关键的,掌握的程度越高,你写的程序效率就越高越漂亮越有技术含量.说白了这东西就是让你程序处理数据更加快.
4> 操作系统理论
:了解系统的运作原理,可以让程序运行的时候更加稳定更加安全更加健壮,让程序的质量得到最优质的保证.
5> 老师/师傅
: 三人行必有我师 这话是错不了的,正确的人给你正确的指点,对你能力提高是有非常重要的作用,会少走很多弯路.

[结束语]

如何学好编程,其实还是老经验:
1>兴趣 2>努力 3>老师/师傅 4>基础 5>持久
(PS:注意这里是有排名先后的)
学习编程首先还是兴趣第一,有兴趣你才会知道要努力的学习,然后学习是不能盲目,有老师、师傅指点你会学得更加快少走弯路.知道努力学习了,那么就要把自己薄弱基础打好打厚,剩下的就是要持久了,保持持久的学习状态.



Windows SDK入门浅谈 — 写给初学者

前言  如果你是一个编程初学者,如果你刚刚结束C语言的课程。你可能会有点失望和怀疑:这就是C语言吗?靠它就能编出软件?无法想象Windows桌面上一个普通的窗口是怎样出现在眼前的。从C语言的上机作业...

WebRTC第一步:搭建VPS

为了下载webrtc 第一步首先搭建VPS服务器是必须的 按照步骤开始吧 1. 准备好人民币 购买VPS 购买链接:https://www.vpsmm.com/6393.shtml ...

Windows系统编程之进程间通信-异步管道和命名管道

Windows系统编程之进程间通信 Windows 的IPC(进程间通信)机制主要是异步管道和命名管道。(至于其他的IPC方式,例如内存映射、邮槽等这里就不介绍了) 管道(pipe)是用于进程...

Windows系统编程(三):线程

作者:yurunsun@gmail.com 新浪微博@孙雨润 新浪博客 CSDN博客日期:2012年11月5日 ...

Windows系统编程之异步I/O和完成端口

Windows系统编程之异步I/O和完成端口 【作者】北极星2003 【来源】看雪技术论坛(bbs.pediy.com)  【时间】2006年7月1日 一、  同步I/O和异步I/O ...

Windows系统编程之异步I/O

标 题: 【原创】Windows系统编程之异步I/O和完成端口 作 者: 北极星2003 时 间: 2006-07-02,18:46:30 链 接: http://bbs.pediy.com/s...
  • a3l_120
  • a3l_120
  • 2012年08月24日 21:26
  • 949

Windows系统编程(四):IO同步异步

作者:yurunsun@gmail.com 新浪微博@孙雨润 新浪博客 CSDN博客日期:2012年11月8日 ...

Windows系统编程之异步I/O和完成端口

Windows系统编程之异步I/O和完成端口 【作者】北极星2003 【来源】看雪技术论坛(bbs.pediy.com)  【时间】2006年7月1日 一、  同步I/O和异步I/O ...

Windows系统编程之异步I/O和完成端口

文章来源:http://bbs.pediy.com/showthread.php?threadid=28342 Windows系统编程之异步I/O和完成端口 【作者】北极星2003 【来源】看雪...

Windows系统编程之进程间通信

Windows 的IPC(进程间通信)机制主要是异步管道和命名管道。(至于其他的IPC方式,例如内存映射、邮槽等这里就不介绍了) 管道(pipe)是用于进程间通信的共享内存区域。创建管道的进程称为...
  • adermxl
  • adermxl
  • 2011年05月05日 22:08
  • 257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何正确地选择并加入编程领域(仅限windows系统编程)?
举报原因:
原因补充:

(最多只允许输入30个字)