我为什么反对推荐新人编程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 以及各种武学招式上。
我为什么反对推荐新人编程C/C++语言入门?的更多相关文章
- 【嵌入式】C语言高级编程▁▁▁嵌入式C语言入门编程学习!
✍ 1.C 语言标准 什么是 C 语言标准呢? 我们生活的现实世界,就是由各种标准构成的,正是这些标准,我们的社会才会有条不紊的运行. 比如我们过马路,遵循的交通规则就是一个标准:红灯停,绿灯行,黄 ...
- C语言入门经典书目推荐--转
国内良莠不齐的C语言教程数不胜数,同名如"C程序设计""C语言程序设计""C语言程序设计教程"的都多如牛毛,这些不知名的就不予考虑了,要看就 ...
- winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- C#面向服务编程技术WCF从入门到实战演练
一.WCF课程介绍 1.1.Web Service会被WCF取代吗? 对于这个问题阿笨的回答是:两者在功能特性上却是有新旧之分,但是对于特定的系统,适合自己的就是最好的.不能哪一个技术框架和行业标准作 ...
- [推荐] 网络侦查工具 NMAP 简单入门
[推荐] 网络侦查工具 NMAP 简单入门 # 前言 作为一只运维开发,总是避不开要和网络打交道的.尤其是当自身能力到达瓶颈,开始从事云计算以求突破.会有搭建多台虚拟机的需要,这时候如果在手工的查询 ...
- c++学习书籍推荐《面向对象程序设计:C++语言描述(原书第2版)》下载
百度云及其他网盘下载地址:点我 <面向对象程序设计:C++语言描述(原书第2版)>内容丰富,结构合理,写作风格严谨,深刻地论述了c++语言的面向对象编程的各种技术,主要内容包括:面向对象编 ...
- C语言学习书籍推荐《C语言入门经典(第4版)》
霍顿 (Ivor Horton) (作者), 杨浩 (译者) <C语言入门经典(第4版)>的目标是使你在C语言程序设计方面由一位初学者成为一位称职的程序员.读者基本不需要具备任何编程知识, ...
- C语言学习书籍推荐《C语言入门经典(第5版)》下载
霍尔顿 (Ivor Horton) (作者), 杨浩 (译者) 下载地址:点我 C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad ...
随机推荐
- Access sql语句创建表及字段类型
创建一张空表: Sql="Create TABLE [表名]" 创建一张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NUL ...
- 限制UITextField输入内容的长度
一.前言 今天做手机号输入限制长度,例如我的textfield只能输入11位,如果再多输入的话就不再textfield中显示,只显示11位的手机号. 如果用ReactiveCocoa的话,这个很好解决 ...
- 手把手搭建自己的android环境
最近想学习安卓,不过国内实在被墙的厉害,真是"万里安装只被墙".安装的过程中也出现了几个问题.所以记录下来,免得自己下次再次安装的时候又来重蹈覆辙. 以下的问题也是按照出现的顺序排 ...
- iOSQuartz2D-01-核心要点
简介 作用 绘制 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件(通常为内部结构较复杂的控件) UIKit中的绝大部分控 ...
- javascript 调试技巧
不用alert,用console.log() <!DOCTYPE html> <html> <head> <script type="text/ja ...
- centos到底下载哪个版本?
CentOS-7.0-1406-x86_64-DVD.iso 标准安装版,一般下载这个就可以了CentOS-7.0-1406-x86_64-NetInstall.iso ...
- 安全初始化MySql服务器
我们在安装完MySql服务器,设置好MySql的root用户密码后,就直接开始使用了,其实这样的MySql服务器还存在着一些不安全因素, 本篇演示一下用命令mysql_secure_installat ...
- centos 安装完Nginx后,为什么访问不了?
很多时候,安装完成后,服务也启动了 但是访问不了 看看是不是防火墙开启了: 本地试下端口是否可访问telnet 192.168.4.155 80 CentOS 7默认使用的是firewall作为防火墙 ...
- sqlite数据库 select 查询带换行符数据
在sqlite 数据库中用 select 语句查询带 换行符的 数据信息 实现 SELECT * from questions_exec where title like '%'||x'0 ...
- Angular动态注册组件(controller,service...)
使用angular的场景一般是应用类网站 这也意味着会有很多的controller,service,directive等等 正常情况下我们要把这些内容一次性下载并注册,由于文件较多,对首次加载的效率影 ...