C/C++语言的学习方向
这个世界上有太多的坑,如果我们不具备查阅资料的能力和对现实世界的思考能力,入坑是大概率的事情。
C/C++语言能做什么?C/C++程序员在做什么?企业需要什么样的C/C++程序员?对初学者来说,要搞清楚这些问题并不容易。
一个农民种菜之前,会考虑菜的行情(包括销量和价钱),如果您打算学习C/C++语言,也应该先了解C/C++程序员的行情。
了解菜的行情要去菜市场,了解C/C++程序员的行情去人才市场,中国最大的IT人才市是前程无忧。
我们先来查一些资料。
一、中国编程语言的排名情况
登录前程无忧的官网,分别输入java、C++、python、javascript、.net、C#、PHP、SQL、IOS关键字,城市选择北京、上海、广州和深圳,查询到的招聘职位分别是31032、22842、19274、14091、6956、8018、5284、21302、6014个。(这是2020年6月查到的数据,不同时期的查询结果略有不同)
数据显示企业的JAVA和C++职位比例约6:4,培训机构的主流课程是JAVA和Python等,进一步导致了C/C++程序员的缺乏。
培训机构不愿意开设C/C++课程,C/C++语言的教学对老师的能力要求非常高,普通讲师难以信任。
编程语言的选择是人生大事,必须慎重,谁都不希望在工作几年后被迫从一种编程语言转向另一种编程语言。
JAVA和C/C++是程序员可选的两个方向(其它编程语言根本不在考虑范围),无所谓哪一种更好,我个人偏向C/C++,因为JAVA程序员的工作太累了。
更多的人选择学习JAVA,在较短的时间内就可以上手,从简单的WEB页面做起,所见即所得,容易有成就感,但是C/C++不一样,学生在学完基础知识后还是不知道它能做什么,离企业需求仍然差得很远,坚持下去的人很少,“从入门到放弃”是多数人的无奈的选择。
二、企业对C/C++程序员的技能要求
从前程无忧的招聘数据看,中国企业对C/C++的技能要求主要有网络通信、硬件驱动(嵌入式)、数据库、视频音频、网络游戏、桌面图形、机器学习、大数据、物联网,如下图。
以上数据可以从前程无忧的官网查询,分别输入“C++ 网络”、“C++ 嵌入式”、“C++ 数据库”、“C++ 游戏”等关键字,范围选北京、上海、广州和深圳。
值得注意的是,近年来被媒体反复炒作的人工智能、大数据、物联网、区块链等高大上的概念,企业需求其实很少,现在股票也不抄这个概念了。
输入“ C++ Linux”关键字搜索,结果有9767条记录,输入“C++ Windows”关键字搜索,只有2500条记录。这说明windows作为服务器的操作系统,正在被淘汰中。
目前,大部分的学校和培训机构让学生windows平台下学习C/C++语言,而企业要求的却是linux。
我们应该学习主流技术,不能成为非主流,否则有被淘汰的风险。
三、数据比石油更珍贵
在我们的生活中,数据无处不在,但是,常人对它不敏感。
人口户藉数据在公安局。
驾照数据和车辆数据也在公安局的交警支队。
医院保存了每个病人的基本资料和就诊数据。每个产妇在医院生了小孩子,计划生育部门也会知道,它们与公安局和医院有联网交换数据。
银行有开户数据,转帐记录。
证券公司有行情数据、股东基本数据、持股数据和交易日志。
电信公司有开户数据、通话清单、帐单。
电力局有居民的基本数据和用电帐单。
火车票、机票都是数据。
腾讯公司有QQ帐户数据、微信帐户数据、聊天日志、转帐日志等。
阿里公司有淘宝帐户数据,商户数据,商品数据、交易日志等。
煤气公司、自来水公司……
一个人的身高、体重、学历、年龄是数据。
图片、视频、音频、文章也是数据。
……
四、C/C++程序员在做什么
用C/C++做桌面程序的比例约11%,其它的C/C++程序都运行在后台Linux服务器上,普通用户看不见。
在很多培训机构的教程中,把贪吃蛇、俄罗斯方块、打地鼠、球球大作战等程序当成项目实战,太过儿戏,这些程序的源代码网上到处都是,真正的程序员不玩这个。
真正的C/C++程序员在工作,掌握的是谋生的技能,不是在玩过家家。
我们每天都在用微信软件聊天、付款、转帐等,对普通用户来说,只看到微信软件的操作界面,不清楚有后台系统的存在,以转帐功能为例。
1)付款人在手机微信中输入转帐金额和支付密码;
2)手机微信软件把转帐金额和密码发送给腾讯公司的微信服务器;
3)微信服务器核对用户的密码和转帐金额,向中国银联发起转帐请求,中国银联把转帐请求转发给付款方的开户行银行,开户银行从付款人的帐户中扣除金额。
4)微信服务器把扣款成功信息返回给手机微信软件,显示转帐成功。
5)微信服务器向收款人的手机微信软件发送收钱提醒,收款人点击收款后,微信服务器把金额存入收款人的微信帐户中。
在上述转帐流程中,苹果手机的微信软件采用Objective-C语言开发,其它品牌手机的微信软件采用JAVA开发;微信服务器、中国银联和开户银行都是非常庞大的系统,系统之间进行了多次数据传输,对数据库进行了查询、修改和插入操作,都是采用C/C++语言开发,系统运行在UNIX系统上,效率极高、稳定性极强,工程量巨大,是精英程序员们的心血之作。
对腾讯的开发团队来说,手机上安装的微信APP软件,开发的工作量不会超过整个微信项目的5%。
五、总结一下
1)网络通信和数据处理以C/C++语言为主,数据输入、数据展示以java为主。
2)作为服务器的操作系统,必选Linux,Windows已被淘汰,以VC、QT等作为C程序的开发环境极不明智。
3)网络通信是C/C++程序员的必备技能。
4)数据处理是C/C++程序员的必备技能。
5)嵌入式开发的职位比较多,技术上偏硬件(通信、电子等专业),软件为辅,无硬件基础者要慎重考虑。
6)放弃幻想,不要追逐那些高大上的潮流(区块链、大数据、人工智能等),也不要听那些从入门到精通的鬼话,踏实一点,先成为一个普通程序员,这个世界上从来就没有捷径。
7)要学会自己查资料,www.51job.com上的信息量非常大,不要视而不见,不能被别人随便忽悠。
六、关于视频教程
2019年五月,我计划录制C/C++语言基础知识的视频课程,打算采用知名的书藉作为教材,在翻阅多本书藉之后,我非常的失望。作为一个骨灰程序员,二十年来,我非常清楚如何成为一个合格的C/C++程序员,包括学习方向、企业的需求和必备技能等。书店里能买到的C/C++
书藉,绝大部分是教授和讲师编写出来的,普遍存在三个方面的问题:
1)只介绍知识点,不结合应用的场景,示例代码和课后作业与实际项目开发严重脱节;
2)重点内容不突出,C/C++的知识点非常多,很多内容已经过时,在工作中极少使用,这些内容增加了学习的负担;
3)纸上谈编程,不注重培养程序员的感觉。
从职业程序员的角度出发,我把C/C++语言的基础知识内容写成文章,在C语言技术网发布,本教程有以下特点:
1)以Linux平台为学习和开发环境,Linux是C/C++程序员的主流工作平台;
2)断章取义,重点突出实际开发中常用的内容,略过不常用的知识;
3)设计了大量的课后作业,这些作业与实际开发内容息息相关,把培养程序员的感觉放在首位;
4)本教程的目标是为职业C/C++程序员打基础,不合适在校大学生的毕业考试和计算机等级考试。
七、获取视频教程
百万年薪程序员录制,《C/C++高性能服务开发基础》视频教程已在CSDN学院发布,优惠价12元,地址如下:
https://edu.csdn.net/course/play/29402
八、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道
C/C++语言的学习方向的更多相关文章
- 这是一名Java学者关于学习方向的建议
无可厚非,编程是一门艺术.但是辉煌的背后必须是一段辛苦的奋斗过程,而过程的引导方向就是最重要的一环.Java语言可谓是引领了编程的潮流,你会是怎样去学的呢? 这是一名Java学者的学习方向的建议 注: ...
- 获奖感言和C语言的学习心得
获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学 ...
- js是什么?js可以做什么?js的构成与学习方向
js(百度官方介绍javascript)编程的基本语言学习目标是:a.怎么写和运行js脚本b.理解变量和值c.学会简单的数学运算符d.数据类型是什么e.流程控制 对于JavaScript的背景知识和结 ...
- C语言课程学习的总结
C语言课程学习的总结 学习C程序这门课一年了,这是我们学的第一门专业课.在大学里,C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程.所以作为我这个计算机专业的学生来说当 ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
- C语言(函数)学习之strstr strcasestr
C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...
- 【Go语言】学习资料
这段时间一直在看Go语言,6月3日Apple发布了swift发现里面竟然也有许多Go语言的影子,截至现在每天都在感觉到Go语言的强大.确实值得一学 今天在这里给园友们推荐一些Go语言的学习资料 网站 ...
- 远离go path,弃用go get,使用go mod 进行go语言的学习
标题说的是go语言的学习,因为我也没做过开发 文章要解决的仅仅是一个问题 当你使用go get 无论如何get不到所需的包的问题 第一步就是下载goland 新手极其推荐goland,因为直接使用gl ...
- web渗透学习方向
本章写给新加入我们破晓工作室的学弟学妹. 我现在写的是渗透方向的学习方向.因为我参加了线上培训班,听了专门培训渗透的课程后.所以感觉我们工作室自学太累了.如果没有一个“正确”的学习方向都不知道该学些什 ...
随机推荐
- JVM调优总结(六)-新一代的垃圾回收算法
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限.但是他无法解决的一个问题,就是Full GC所带来的应用暂停.在一些对实时性要 ...
- [计划任务 - Linux]三分钟学会cron
cron——计划任务,是任务在约定的时间执行已经计划好的工作,是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业. 也就是说cron只适合于linux系统,用windows电脑的同学 ...
- Java中的集合(三)继承Collection的Queue接口
Java中的集合(三)继承Collection的Queue接口 一.Queue介绍 Queue接口继承自Collection接口,是Java中定义的一种队列数据结构,元素是有序的(按插入顺序排序),先 ...
- Rocket - jtag - JtagStateMachine
https://mp.weixin.qq.com/s/cFXVOBHayV2w27jpT5RglA 简单介绍JtagStateMachine的实现. 1. 简单介绍 根据IEEE 1149.1-200 ...
- JavaWeb项目:旅游网站【涉及各种知识】
JQuery异步请求(ajax) $.ajax({ // 请求方式为get或者post等 type: "GET", // 服务器响应的数据类型 dataType: "js ...
- js循环语句while,do..while,for
1. while循环 while(循环条件){ 循环体语句块; } 2.do..while循环 do{ 循环体语句块; }while(循环条件) 两者区别:while先判断后执行.循环体语句可能一次都 ...
- Java实现 LeetCode 698 划分为k个相等的子集(递归)
698. 划分为k个相等的子集 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, ...
- Java实现 蓝桥杯VIP 算法提高 最小乘积(提高型)
算法提高 最小乘积(提高型) 时间限制:1.0s 内存限制:512.0MB 问题描述 给两组数,各n个. 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小.要求程序输出这个最 ...
- Java实现 LeetCode 66 加一
66. 加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示 ...
- Java实现 LeetCode 31下一个排列
31. 下一个排列 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许 ...