我为什么反对推荐新人编程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 ...
随机推荐
- 【Android】开源项目UI控件分类汇总之ProgressBar
Android开发的宝库越来越多,我开发中有需要的组件,主要参考Trinea的大作Android开源项目分类汇总(包含了后面的绝大多数).CSDN上直接拿来用!最火的Android开源项目还有CSDN ...
- H5前端面试题及答案(1)
前几天去面试了一家公司,整下改公司的面试题. 1.新的 HTML5 文档类型和字符集是? HTML5 文档类型很简单: <!doctype html> HTML5 使用 UTF-8 编码示 ...
- Ubuntu下修改system.img 解包system.img、打包system.img
一.准备工作:解压解打包工具,得到三个文件:make_ext4fs.mkuserimg.sh.simg2img,把它们跟要修改的 .img.ext4(或.img)文件放置到同一个目录下 二.转换源文件 ...
- iOS加载程序视图的方式
The UIViewController class provides built-in support for loading a view controller's views whenever ...
- iOS 简单工厂模式
iOS 简单工厂模式 什么是简单工厂模式? 简单工厂模式中定义一个抽象类,抽象类中声明公共的特征及属性,抽象子类继承自抽象类,去实现具体的操作.工厂类根据外界需求,在工厂类中创建对应的抽象子类实例并传 ...
- IOS开发中NSRunloop跟NSTimer的问题
在Windows时代,大家肯定对SendMessage,PostMessage,GetMessage有所了解,这些都是windows中的消息处理函数,那对应在ios中是什么呢,其实就是NSRunloo ...
- iOS edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets属性详解
edgesForExtendedLayout: 在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局,就离不开这个属性 edgesForExtendedLa ...
- JSP基础--JAVA遇见HTML
1.手工编写第一个WEB应用程序 2.默认访问服务器网页首页欢迎界面是 index.jsp,就是网页链接访问其所在的文件夹目录,不访问这个文件,也会自动访问的.如果这个文件夹目录下没有index.js ...
- windows下vagrant使用及工作环境配置
环境搭建记录(2014-08-01) 操作系统: Win7旗舰版 Vagrant版本: 1.6 搭建过程 安装vagrant 右键打开安装包按照提示安装即可 安装后会自动把vagrant添加到环境变量 ...
- 删除表空间时,遇到了ORA-14404错误
Oracle中删除表空间时,遇到了ORA-14404错误. 错误信息如下: SQL> DROP TABLESPACE PART1 INCLUDING CONTENTS AND DATAF ...