我为什么反对推荐新人编程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 ...
随机推荐
- swift学习笔记之-自动引用计数
//自动引用计数 import UIKit /*自动引用计数(Automatic Reference Counting) 防止循环强引用 Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用 ...
- SharePoint 数据迁移解决方案
前言:说来惭愧,我们的SharePoint内网门户跑了2年,不堪重负,数据量也不是很大,库有60GB左右,数据量几万条,总之由于各种原因吧,网站速度非常慢,具体问题研究了很久,也无从解决,所有考虑用N ...
- Quartz 2d绘图
今天看了一下Quartz 2D绘图,我只想说:不要把绘图和动画那些东西当做一个很复杂的东西,其实只要你认真看还是可以理解的.他们并不难.啰嗦了几句,现在直接进入正题: 前提是我们必须新建一个singl ...
- MyBatis入门(二)---一对一,一对多
一.创建数据库表 1.1.创建数据表同时插入数据 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.6.27-log : Database - mybati ...
- 【转载】菜鸟Ubuntu下安装Android Studio
原文:http://forum.android-studio.org/forum.php?mod=viewthread&tid=236&extra=page%3D1%26filter% ...
- NSString的八条实用技巧
NSString的八条实用技巧 有一篇文章写了:iOS开发之NSString的几条实用技巧 , 今天这篇,我们讲讲NSString的八条实用技巧.大家可以收藏起来,方便开发随时可以复制粘贴. 0.首字 ...
- linux NFS服务器安装与配置 思路
一,nfs服务优缺点 NFS 是Network File System的缩写,即网络文件系统,可以让不同的客户端挂载使用同一个目录,作为共享存储使用,这样可以保证不同的节点客户端数据一致性,在集群架构 ...
- Windows Server 2012之搭建域控制器DC
安装域控制器,域(Domain) 1,本地管理员权限 2,设置静态IP 地址 3,至少有一个NTFS分区 4,操作系统版本(web版除外) 设置静态IP地址 dcpromo.exe命令不生效 ...
- 修复 Java 内存模型,第 2 部分——Brian Goetz
转自Java并发大师Brain Goetz:http://www.ibm.com/developerworks/cn/java/j-jtp03304/ (中文地址) http://www.ibm.co ...
- Oracle与SQL SERVER编程差异分析(入门)
网上有关Oracle与SQL SERVER性能差异的文章很多,结论往往是让你根据数据量与预算来选择数据库.但实际项目中,特别是使用 .Net 开发的系统,支持以上两种数据库或者更多已经成为Boss的普 ...