栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

##2.day1 – 课堂纪律 – 调试窗口设置

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

##2.day1 – 课堂纪律 – 调试窗口设置

 

26:30 专注 别碎片化学习

 

34:20 接下来讲这一周要学习的内容

 

前言 主要讲的是职业规划 ;

书的特点 不用看了

 

C语言 编程练习 -》 掌握数据结构和算法(算法导论)

刷题 PAT,剑指offer,LeetCode

 

36:00 第一章

 

第一章 开发环境搭建及调试窗口设置

开发环境的搭建

 

了解下历史: A语言(ALGOL60 过度设计,只考虑人的需求,性能一般)&B语言(BCPL,比A语言简洁)

Rust 性能很好,但学习曲线太高了 难度太大了 很难取代C/C++

C语言混乱编程大赛 太灵活 很难 语法规则很严格

 

第一个C语言编译器是用B语言写的

 

(Visual Studio,) Codeblocks, mac上C Lim?, Xcode(Eclipse, Pycharm,) 等等集成开发环境IDE

内有编辑器(窗口,代码) ,编译器(可执行 exe),调试器(调试)

主流编译器 - - 微软Windows vs使用的masm编译器/ linux使用的gcc编译器

(平台/操作系统 win linux mac)

 

老员工用什么编译器,就用什么编译器

 

Unix 打基础

Linux

 

大型机:不好搬 非常不方便;升级也不方便;虽然能力很强

小型机:今天 软件层, 软件定义硬件 (谷歌 笔记本都可以作为服务器)

 

Ken Thompson & Dennis M.Ritchie, 不是谭浩强

Ken Thompson 发明了Go语言,(Go, python 像C)

 

问为什么学Linux系统编程?Java就不需要学系统编程

C/C++  不是跨平台的,可移植性强的语言 - Windows & Linux 接口是有差异的,代码要大改

Java, Python 才是跨平台的,就是写的代码几乎不需要任何改变

 

会不会创建两个进程 | 市面上的书不会写和操作系统硬件相关的接口 (效率不高)| Windows/Linux原生提供的文件操作接口,如进度调度(创建多进程,多线程),网络编程socket等等

学了Linux系统编程,是不是就可以 去操作 Windows下的硬件资源?原理是一样的

 

Windows的服务器在市场上是不行的。大厂都用Linux,很少用Windows 因为微软Windows按服务器机器收费,收费很贵

华为服务器 买服务器 一般系统是免费的,还会提供一段时间维护

 

因此在Linux下写的C接口(系统编程的接口),在Windows下是不可以运行的。代码要大改,因为接口不一样。

C/C++都只提供语言层面的东西,都要用到C接口。

现在C++程序员都是要学Linux系统编程的。西工大,清华,上交有开这些课

 

华为(人口基数先赚钱,硬件,解决方案,系统买Intel,CPU买 IBM, 然后组装 卖通信产品)

 

C/C++  可移植性强 是相对于汇编语言而言的

汇编语言是和CPU强绑定的,同样的汇编,Intel和AMD的CPU有差异。 虽然都是X86架构 还是有差异的 ( 高通 华为改了RM架构指令 , 改了汇编 就不能运行了

现在很少有人写汇编代码,包括底层的,开发效率太低,还有包括跨平台的问题; 嵌入式一般用纯C

 

开发环境安装 ----程序的编译过程 略过没讲

 

50:40 断点及调试窗口设置

为啥要把调试窗口设置好,先来看一下 学习C语言后的境界(目的 目标 - - 有目标规划才能专注) - -

理解程序的执行过程,其实就是内存的变化过程(通过内存来存储数据,就像通过衣柜来存储衣服) 数据存储要有规律,方便高效取出;衣服存放要有次序,否则可能会花很长时间找想要的衣服

 

达到什么样的目标?程序员的级别更高级,更像裁缝。 衣柜里放的原始布料(原始数据),裁缝使用剪刀、尺子等加工布料;程序员采用运算符并选择循环处理数据 , 程序员需要把处理哈的数据存放好,以便在用户需要时显示给用户!

 

另外,调试能力, 灵活掌握 单步调试、判断打印等手段,要能在清晰理解程序执行过程的基础上准确分析数据的变化过程,定位程序的问题点,进而解决问题

 

国内选拔制

国外培养制 :技能树 – 发展优势 – 关注个人成长

学会谈判

 

看一下目的,学习C语言要达到的效果:1没有学过语言,调试能力要提升上来(学任何语言,虽然开发环境不太一样,但调试都是一样的) 怎么调试?单步调试等等;2 要理解程序执行原理 每个硬件是怎么把程序呈现出最终效果(内存的变化过程 | 数组的长度压根没存,数组名也没存 每一个变量名都没有。。。)

 

理解了原理,可以做代码级的性能调优 或者做框架(改MySQL,hadoop 。。 产品对性能要求比较高,就要改产品,包括通信/互联网产品,如谷歌gRPC 百度的bRPC。。看源码 在代码上进行优化,要非常清晰的理解程序执行原理。

 

代码调试:

先说断点,再说程序编译过程

 

断点:

行号调出来  -  工具 选项 文本编辑器 C/C++ 行号

神器调出来

可以看程序的每一步

 

程序为什么难?变化不定  

- 程序执行原理其实就是内存的变化过程

59:50

定义变量int i = 10 ,打个断点 , 先打断点才能调试

CPU速度都很快,每秒钟的频率都是多少个G的(10^12),你是跟不上的

先打断点 然后运行 ,程序在这里停下来了 , 三个窗口:内存窗口,监视窗口,调用堆栈窗口(学到函数才会用到这个窗口)

 

监视窗口

输入 取地址&I , 有个值,这个地址有4个字节(16进制) 把它拖过来(到内存窗口), i就在这里,这就是内存

我们写的程序是32位的,因为任何学校,在讲程序的时候 为了你理解程序,虽然今天所有计算机程序编写都是64位的,因为虚拟地址空间可以超越4G了,32位的虚拟地址空间就是2的32次方~ 4G

虚拟地址和物理地址会转

 

1:F10逐过程(Fn+F10)变成红色

地址 7C=12; 13 14 15 16; 16就是80  拉一下宽度5个字节

System(“Pause”) 请按继续键打印 (C语言嵌套其他语言, 微软的脚本语言 bet ) 可以嵌套python等等语言

 

一定要有简历,写你掌握的 如问:红黑树 咋旋转的?

看你是否愿意做充分的准备,学习能力是否还行

 

窗口一定是在调试过程中才出现的(程序已经跑起来了)

调试 – 窗口 – 内存窗口(C语言都是写单进程的,一个内存窗口就可以了)

 

监视(变量的值)& 调用堆栈(函数)

(自动窗口  但不能看i的地址 &      ; 监视比自动窗口更好用,监视可以看想看的)

调用堆栈暂时用不着

 

报错了要看日志

 

 

C/C++  可移植性强的语言 - Windows & Linux 汇编

Java 跨平台

以上编译型的

 

Python 不编译的

 

编译型的就会存在编译错误

 

编译错误 &执行错误

去掉;~~编译警告   否

执行错误:可以输出,但是输出不符合你的预期

 

编译错误是简单的 有限的, 可以分种类

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号