除了语言本身,还有哪些技能或知识是必备的?

2020-03-25 21:31:18 浏览数 (1)

前言

作为C/C 开发,其语言的掌握自然是非常重要的,当然了,与此相关的算法,计算机基础,网络等知识也都是需要学习了解的,那么除此之外,还有哪些是建议掌握的呢?

Linux

这个我已经说到过了,作为C/C 开发, 很大程度都是需要和Linux打交道的,既然如此,那么最基本的命令掌握是必须的。公众号编程珠玑后台回复【linux】即可查看历史Linux相关文章。

画图

开发过程中,难免做方案,而方案中自然会涉及到架构图,流程图,时序图。一个好的图能够帮助你或者其他人更好地梳理和理解方案。你可以选择在线的 draw.io,http://www.processon.com,或者visio,Enterprise Architect(简称EA)。这一块也是我个人的弱项,欢迎留言分享你认为不错的画图工具。

版本控制工具

毋庸置疑,每个公司都有版本控制工具,也许你们用的svn,也许用的git,无论如何,你都需要一套工具管理维护你的代码,以便你随时吃后悔药。对于git学习,如果是基本的命令使用,网上随时可以查,但是如果想更进一步了解,建议阅读《pro git》,网址为:https://www.progit.cn/

构建工具

代码变成可部署上线的工程,同样需要构建工具,也许你使用最原始的makefile(认识makefile),或者Cmake,或者blade,或是bazel,都没有关系,根据项目实际情况或者自己喜好选择即可。不过仍然建议学习makefile,更能了解其构建过程,。当然,对于C/C ,你应该了解的是一些编译链接相关的东西,在公众号编程珠玑后台回复【编译链接】即可查看相关文章。

调试手段

大多数问题都可以通过日志,分析代码来解决,有时候,为了方便,还可以借助调试工具,例如GDB。 可以参考《GDB调试指南》。

单元测试

单元测试需要根据实际项目需求进行选择,要做单元测试,本身投入的时间可能比较多,但是长期来看是非常有利的。对于C/C ,可以了解google的gtest框架。这里不多说。

工具性语言

无论是做测试,或是写一个小功能,你都应该会一些工具性语言帮你干活,例如Python,Shell,它们的特点是出活快。这里我在《谈谈对Python的看法》中也已经说过了。

数据库

现代应用大多数都离不开数据库,而最常用的关系型数据库之一,非mysql莫属了,然而如果涉及缓存,分布式等,redis是一个不错的选择。NOSQL中,除了redis还有很多,但是redis目前应用广泛,使用ANSI C编写,其源码也非常值得学习借鉴,其中数据结构和算法的应用也会让你受益颇多,这里也推荐一本《redis设计与实现》,有兴趣的可以了解一下。

Markdown

无论是写总结还是周报,或是笔记,你都离不开记录,那么为什么要用markdown呢?我个人而言,我不喜欢在word中调格式,我只想专注我的内容,而且对于代码类的展示,markdow更加方便,除此之外,markdown格式还有以下好处:

  • 纯文本保存,却能展现丰富的格式,可以转换为html,pdf等格式
  • 所写既所得,不用过多专注格式
  • 语法简单易上手
  • 各大平台基本都支持,例如github,知乎等
  • 代码显示友好
代码语言:javascript复制
#include<stdio.h>
int main(void)
{
    printf("hellon");
    return 0;
}

公众号几乎所有文章都是markdown格式编写,然后借助工具渲染所得。对于客户端工具,可以尝试一下typora 。

总结

以上就是个人总结的除了C/C 语言本身以外的其他技术性技能,欢迎留言补充。

0 人点赞