华人澳洲中文论坛

热图推荐

    「C/C++编程」这才是你最需求的C言语、C++学习线路

    [复制链接]

    2022-9-17 06:52:10 24 0

    先聊几个乏味的问题
    这几个问题都是私信里常被问到的,也是我过后学习过程当中的一些纳闷。


    问:为啥我学完了C言语或者C++,却仍是啥货色也做不出来?
    答:编程言语学完了就可以做出货色那也真是蠢才哇!应该说言语学得就算再精晓,它其实也只代表实现了“最小的”那一部份,和实际上手干活之间仍是有一个十分大的鸿沟,这个鸿沟就表示为下文行将胪陈的编程根底四大件+运用理论编程。问:为何C/C++写出来的货色都是运转于黑乎乎的命令行?这玩意真有用吗?
    答:嘿嘿,谁说黑乎乎的命令行里运转的顺序就没有用!咱赫赫有名的Linux零碎都以命令行跟用户交互呢,并且Linux外面得多弱小的工具都是运转于黑乎乎的命令行!问:从技术学习和实际应用的角度来看,C/C++和Java究竟区分在哪?
    答:C/C++,它和Java的确不太同样。C言语和C++,尤为C++,言语粒度细、机制多,机能虽然高,但言语自身的包袱也的确重,咱们更违心称它“造轮子”的言语!也恰是由于C言语和C++机能好、粒度细,所以甚么都能做。而Java自身就是一种办事于互联网软件开发(后端开发+客户端开发)的言语,它有一个显著的“生态圈”的概念,所以运用畛域十分明晰。我集体感觉C言语和C++编程比Java仍是要难一些,Java毕竟是纯运用层的,C言语和C++则对顺序员才能的要求要更高一些。


    岗位剖析
    理解一下岗位,知道当前能做甚么,这个也无利于本人树立学习指标。
    C言语和C++属于“造轮子”言语,简直甚么都能做。不外个别来讲,C言语和C++次要仍是做后盾(办事端)开发对比多,包罗:
    通讯公司后盾开发
    互联网公司后盾开发
    游戏公司后盾开发
    固然这个后盾开发详细职责又有得多细分,好比:
    有做数据处置和剖析的
    有做根底协定和通讯的
    有做办事端底层运用优化的
    乃至还有做后盾零碎驱动和内核的
    不论怎么样,上面行将要引见的这些学习线路和内容合用于以上一切状况。所以呢,上面就来说讲详细的学习线路。


    言语自身的学习
    C言语:
    除了最最根底的语法:变量、前提、循环、字符串、数组、函数、构造体等以外
    C言语最最最最最首要的那就是:指针、内存办理,当前企业里开发就靠它俩吃饭,这也是检修C言语掌握状况的两大规范
    保举书籍:《C Primer Plus》、《C和指针》、《C专家编程》C++:
    C++和C言语的确是不同的言语,然而C++的确是对C言语的延长,能够了解为在C言语里参加了面向对象的特性。由于只要面向对象特性的加持,代码能力更好地复用扩展工程化,这是大型名目的必备因素
    除了C言语一切的底子以外,还需求学习C++的面向对象(封装、承继与多态)特性、泛型、模板、STL等等
    保举书籍(有前后程序):《C++ Primer》、《Effective C++》、《C++ 规范顺序库》、《STL源码分析》《深度探究C++对象模型》最初一个小倡议是:言语部份的学习倡议不要拖过久,一定要布局好时间,一鼓作气,高强度给它压上去,不然容易把本人搞气馁。


    编程根底四大件
    根底四大件包罗:数据构造和算法计算机网络操作零碎设计模式
    这跟学甚么编程言语、后续从事甚么编程标的目的均有关,只有做编程开发,这四个计算机根底就无奈避开。能够这么说,这根底四大件真的比编程言语首要!!!
    1、数据构造和算法
    能够说这个间接抉择了面试的成败!几种根底数据构造类型得烂熟于心,好比:字符串、链表、二叉树、堆、栈、队列、哈希等;根本的几大算法也要了如指掌,好比查找、排序、静态布局、分治等等。
    倡议LeetCode多刷题。
    参考材料:《大话数据构造》、《算法》、《剑指offer》《LeetCode刷题》
    2、计算机网络
    此处的计算机网络指的就是TCP/IP协定栈,能够说它是当下互联网通讯的基石,无论如何一定要对TCP/IP的协定栈了如指掌,次要就是学习和掌握原理,包罗:ARP协定、IP协定、ICMP协定、TCP和UDP协定、DNS协定、HTTP协定、HTTPS协定
    保举书籍:《TCP/IP详解》
    3、操作零碎
    该部份重点包罗:过程和线程的相干原理(原子性、并发、锁)、内存相干原理(内存散布、内存调度)
    保举书籍:《深化了解计算机零碎》
    4、设计模式
    倒不需求23种设计模式整个记住,常见的几个如:单例模式、工厂模式、代理模式、战略模式、模板办法模式倡议纯熟于心。
    保举书籍:《大话设计模式》、《设计模式之禅》


    运用理论编程
    这部份会波及到一些工具、编程环境、和详细编程理论,应该说这一部份学完,本人应该能做点货色出来、或者说能看懂一些实际名目的代码。
    理论这部份,我也是结合我以前在通讯公司的实际任务阅历和所听所见,来聊一聊。
    1、Linux操作零碎的使用
    得多人初学C言语、C++(包罗我)都是在Windows环境上进行的,而实际企业级开发简直不成能,所以Linux零碎必需要会,咱们别无选择。先谈使用。
    包罗:常见的Linux操作命令根本的Shell编程
    保举书籍:《鸟哥的Linux私房菜》
    2、编译/调试工具
    首先是跟编译相干的:编译工具!
    咱们知道得多人学C言语、C++都在相似Visual Studio这类集成IDE里进行代码编译,这个其实也用了编译器,只不外是微软自家的MS编译器,并且一切操作都可视化。而企业里开发很少会基于Windows零碎,所以Linux平台上的编译器更加首要,最典型确当属GCC,乃至有些公司有本人定制过的穿插编译工具,但不妨事,只有GCC相熟,其余问题都不大。
    其次,大家自学C言语、C++,都借助相似VS这类IDE,点按钮便可对源文件编译。而企业里实际名目的编译举措叫make,编译的实际举措和进程都是写在makefile文件里,所以makefile的书写规定倡议学习!
    最初说到调试,Linux平台上的GDB调试工具要纯熟使用,会借助于它进行调试。
    保举:这部份没有书可保举,英文好的同窗能够间接看GNU官网对于GCC和GDB的文档,中文资料能够看:《debuging with gdb》(中文版)和陈皓学生的《跟我一同写makefile》
    3、Linux环境编程
    仍是那句话,企业里C言语和C++简直都是基于Linux平台的,这一部份咱们没方法避开
    (1)Linux零碎编程
    家喻户晓,Windows零碎编程里有各种各样的Windows API,同理Linux零碎API的使用就更为首要。
    (2)多线程编程
    此处指的是多线程编程理论相干的货色,个别包罗:线程、资源、信号、同步、互斥、锁等等一些详细的编程办法。
    (3)网络编程
    此处的网络编程次要指的是详细Linux零碎上的网络编程API和IO函数的编程理论。
    保举书籍:这三部份综合在一同,保举必看书籍包罗《Unix环境初级编程》、《Linux高机能办事器编程》、《POSIX多线程顺序设计》
    最初,为了帮忙大家,轻松,高效学习C言语/C++,给大家分享我采集的资源,从最零根底开始的,帮忙大家在学习C言语的路途上乘风破浪!




    整顿分享(多年学习的源码、名目实战视频、名目条记,根底入门教程)最首要的是你能够在群外面交流发问编程问题哦!

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题32

    帖子36

    积分168

    图文推荐