C++ day01:

1.预备知识?

  1)什么是编程

    编程,即编订程序。

    程序 = 数据 + 算法(蛋糕 = 糖、鸡蛋、奶油 + 打鸡蛋、加糖、烤)

  2)编程语言

    最初的编程是用二进制代码(即“机器码”、“机器指令”)编写程序,不必多说,这种编程方式不可能得到普及。

    于是人们发明了“汇编语言”来编写程序。这种语言通过“助记符”代替机器码,但是这种语言直接操作CPU,繁琐,也无法普及。但在今天,汇编还是绝大多数计算机生的必修课。在实际的劳动中,汇编的运用主要在和机器联系紧密的程序上,比如硬件(显卡、声卡……)的驱动、系统的引导程序之类。

    后来,人们发明了各种各样的“高级语言”,我们要学习的C++就是高级语言之一。高级语言的最大特征是十分接近自然语言(大部分是英语,当然也有令人诟病的中文编程),以下是一段python代码,大家可以自行体验

 if a is b:
print(a)
else:
print(b)

    这段代码显而易见,略懂英语的人都能看出来这在说什么。

  3)高级语言的演变

    I.最初的高级语言是“过程性语言”,这种语言强调的是编程的算法方面。但是早期的高级语言,比如BASIC,存在很多分支语句,繁琐复杂,极大地限制了人类的想象力。这种编程被称为“意大利面条式的编程”。

    II.后来逐渐出现并流行的C语言,也是过程性的,但是它有“结构性编程”的特点。它能够使用”一小组良好的结构“ (诸如for循环、while 循环等)实际上,C语言:高效、简洁、快速、可以移植,直至今日仍然十分流行。

另一种新原则是”自顶向下”设计,即将大型任务分解为小型、易于管理的任务。(比方说,任务是要整理房子。可以把这个任务分解为擦桌子、扫地、整理书架等等)

    III.现在流行的编程方式是叫“面向对象编程”(Object Oriented Progress,OOP),它提高了程序的可靠性、清晰度。它看重的是程序的数据部分,它的设计理念是设计与问题本质特征相对应的数据格式。

与”自顶向下“向对应,C++的原则是“自下向上”:从低级组织(如类)到高级组织(程序)。

    IV.还有一种编程方式被称为“泛型编程”,这一编程方式也被C++支持(模板编程)。它强调独立于特定的数据类型,泛型即独立于类型的代码。面向对象是管理大型项目的工具,而泛型是对常见的任务的。

    V.有一种被称为“反射编程”的编程方式,C++不支持,Java、Python等语言支持。这种编程方式能够实现动态编程,对于上线的大型网站来说(比如youtube、bilibili等(实际上,youtube就是python的一个项目))不能每次修改代码都关掉服务器吧?

  附一张本文写作之时(2019/6)的PYPL编程语言排行

2.我们使用的教材(我在看的书)

  1) C++ Primer Plus (CPPPP)

    

  3)数据结构与算法分析 C++ 语言描述

3.推荐阅读(参考书)

  1)算法导论

    

  2)离散数学及其应用

    

  3)组合数学

    

4.开发环境

  Dev-cpp 5.9.2,这是一个轻量级的IDE,支持代码补全。

  Microsoft vistul studio,这是一个完整的IDE,基本支持开发所需的一切。

  Vim & g++ , dalao都用这个,上古的命令行编辑器加上g++编译器。

Oriented

C++ day01 预备知识、C++综述、教材、推荐阅读。的更多相关文章

  1. 1 预备知识--Hadoop简介

    1 预备知识--Hadoop简介 Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算框架为核心,为用户提供了一套底层透明的分布式基础设施Had ...

  2. LayIM.AspNetCore Middleware 开发日记(二)预备知识介绍

    前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvid ...

  3. 背景知识+监督和无监督学习辨析+预备知识(1-1—1-4/用时4h)

    1-1/1.2,基本上都是一些基础知识,机器学习的背景,发展,概念,用途 1-3,监督学习: 数据集类型已知,数据信息为已知正解--由已知正解推测趋势(拟合分布函数)-- 给出的模型例子--基本类似于 ...

  4. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

  5. 受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原 ...

  6. 学习Identity Server 4的预备知识

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...

  7. JAVA面向对象-----面向对象(基础预备知识汇总)

    终于整理好了面向对象基础预备知识,但是有点多,所以你们懂的,贴图,较长的代码我还是会排版出来的,我不想把时间浪费在排版上在word里排版一次已经很浪费时间了,所以请谅解. public class C ...

  8. 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    上一部分预备知识在这 http://www.cnblogs.com/cgzl/p/9010978.html 如果您对ASP.NET Core很了解的话,可以不看本文, 本文基本都是官方文档的内容. A ...

  9. ASP.NET Core的实时库: SignalR -- 预备知识

    大纲 本系列会分为2-3篇文章. 第一篇介绍SignalR的预备知识和原理 然后会介绍SignalR和如何在ASP.NET Core里使用SignalR. 本文的目录如下: 实时Web简述 Long ...

随机推荐

  1. Linux 系统中 grep 的ABC参数含义

    1.grep  -A  5   匹配行及后5行 2.grep  -B  5   匹配行及前5行 3.grep  -C  5   匹配行及前后各5行

  2. DOM导航与DOM事件

    HTML DOM 导航 通过 HTML DOM,能够使用节点关系在节点树中导航. ㈠HTML DOM 节点列表 getElementsByTagName() 方法返回节点列表.节点列表是一个节点数组. ...

  3. ASP.NET通过反射生成sql语句

    最近对接一个接口,需要通过xml序列化成实体后添加额外信息后批量插入数据库,需要手动拼sql.因为涉及多张表,拼凑很麻烦而且容易出错,所以写了两个工具方法来生成sql,先写到博客里面,以便以后不时之需 ...

  4. AcWing 107. 超快速排序(归并排序 + 逆序对 or 树状数组)

    在这个问题中,您必须分析特定的排序算法----超快速排序. 该算法通过交换两个相邻的序列元素来处理n个不同整数的序列,直到序列按升序排序. 对于输入序列9 1 0 5 4,超快速排序生成输出0 1 4 ...

  5. 记一次AD域控客户端不能正常加域的故障处理

    1.1  症状现象 DNS 服务器无法在应用程序目录分区 < 分区名称 > 从 Active Directory 中打开区域 < 区域 >.这台 DNS 服务器配置获取并使用此 ...

  6. Unity3D_(游戏)甜品消消乐02_游戏核心算法

    甜品消消乐01_游戏基础界面 传送门 甜品消消乐02_游戏核心算法 传送门 甜品消消乐03_游戏UI设计    传送门 GameManager脚本上修改Fill Time可以改变消消乐移动速度 实现过 ...

  7. 「CF 961G」Partitions

    题目链接 戳我 \(Solution\) 首先,这个直接推式子.自己推去 所以我们来想一想一些巧妙的方法 \(|S|\sum w_i\) 可以转化为:划分好集合后,每个点都对当前点有\(w_i\)的贡 ...

  8. Java并发编程的艺术笔记(六)——HashMap、ConcurentHashMap的原理与实现

    一.线程不安全的HashMap 多线程环境下,使用HashMap进行put操作会引起死循环(jdk1.7 Entry链表形成环形数据结构),导致CPU利用率接近100%. 结构:数组 table[]+ ...

  9. Hibernate动态条件查询(Criteria Query)

    1.创建一个Criteria实例net.sf.hibernate.Criteria这个接口代表对一个特定的持久化类的查询.Session是用来制造Criteria实例的工厂. Criteria cri ...

  10. c#使用SharpZipLib对二进制数据进行压缩和解压

    首先需要下载SharpZipLib,下载地址:http://icsharpcode.github.io/SharpZipLib/ 需要引入命名空间: using ICSharpCode.SharpZi ...