我为什么反对推荐新人编程C/C++语言入门?

虽然我接触编程以及计算机时间比较早,但是正式打算转入程序员这个行当差不多是大学第四年的事情

从03年接触计算机,07年开始接触计算机编程,

期间接触过的技术包括 缓冲区溢出(看高手写的shellcode,自己跟着研究过一些shellcode) 手工SQL注入(手写增删查改基本熟练)

web渗透(我学习SQL很大程度上是当时我已经掌握学校某个数据库的root权限,可以方便我逃课了,事实上逃课没干什么正事,大学浑浑噩噩就过来了)

10年写过ASP ACCESS类的博客代码,同时也写过delphi,不过我当时只当做兴趣爱好,没有进行深入学习,

最后悔的是,当时我在高中的时候,居然至始至终没有系统地学习一门OO语言,

当时用delphi编写程序,很多情况下就是如何理解别人的代码,然后适配自己的业务逻辑,

因为我不会OO,所以我一直拿Object pascal 当做一门面向过程的语言在用,别人写的GUI业务代码以及网络IO调用,我根本就看不懂。

我说这些只是想说明,我很早就建立了对计算机编程的感性认识,虽然我目前写代码的能力也强不到哪里去,但是我的程序化思维很早就被建立起来了,

过去的大半年里,我读过 算法数据结构 CSAPP,目的就是为了打好作为一个程序员的基础,作为一个非科班生,推荐新手入门程序员这行,我有一定的发言权。

 

千万不要在编程入门的时候一头扎入复杂艰深计算机体系知识,很多人推荐学习C/C++语言的原因在于,这两门语言对计算机这个工具抽象的不够好,适合

在学习程序语言的同时了解计算机系统的原理知识,而计算机的原理知识 制约着一个程序员 对计算机本质的认识,也影响一个程序员对系统框架的认识

和开发平台迁移的能力 以及处理认识问题的能力。

我个人的推荐是,从C语言入门,但是要辅以一本书CSAPP。

但是这个门入到什么程度呢?能掌握 循环 迭代 条件判断 选择分支 等简单的面向过程编程范式思想,之后的指针 结构体 数组 字符串 能理解就理解

不能理解也就算了,之后一定要去读CSAPP(这本书是各个章节独自成体系的)的第二章节,程序语言机器级表示,在这里你会学习到汇编语言,不要求

熟练汇编,只要求认识,能把汇编语言大致翻译成C语言的时候,

并且认识了程序语言函数调用的栈的建立与销毁,这个时候,C语言的指针就融汇贯通了,

根本不用像大部分初学者那样用上一个月的时间去学习理解 指针以及结构体等复杂的数据结构,

之后你也会对C++对象的建立与回收 有新的认识,另外CSAPP可以选读一些感兴趣的章节。

学到这里差不多,有一定的计算机编程基础的时候,

就应该学习抽象更良好且屏蔽了大部分底层实现的计算机语言-面向对象编程语言,个人首推学习JAVA(仅J2SE)JAVA比C/C++更适合描述算法与数据结构,

学习完之后配套学习算法第四版以及编程珠玑,完成我这条学习线之后,基本上就对编程有一个全新的认识,让你掌握了一套编程的内功心法,

绝不会让你作为一个程序员仅仅停留在 那些框架 API 以及各种武学招式上。

 

posted on 2016-08-21 18:59  winters86  阅读(460)  评论(0编辑  收藏  举报