前言
之前一直在windows下做C++编程,后来换后台工作接触到linux下C++开发。期间磨磨唧唧浪费了很多时间。记录下历程,给后来的小伙伴提个醒,免得浪费宝贵时间。
一、关于换系统
如果windows下习惯了快捷键操作系统,尽可能少的使用鼠标,那么,linux就是你的理想。作为C++程序员,不会用linux真的是太糟糕了(很多地方看到这个观点,此处不做辩论)
二、编程相关
虽然linux也有诸如eclipse之类的 IDE,但是仍然建议从 vim 开始,一步步往前走。
除了基础的C++语法外,其余和linux相关的是文本编辑器(我用的 vim,也有很多人偏向 emacs,看个人喜好了)和 编译器。
在编程路上,你需要掌握的有(必须包括但不限于):
1、vim 的使用(带桌面的可以用 vscode,不过仍然建议学一下这个)
2、makefile的编写(如果没时间,可以直接学 cmake,如果想进大厂,建议学一下 bazel)
3、gdb调试
4、配置文件的编写
5、C++相关知识(诸如日志、网络相关、数据库相关、系统API相关等等)
三、编程相关(续)
如果仍有兴趣,余下时间可以学学shell编程、linux内核、UNIX相关、各种C++的共享库等等。在这之前,真正能让你从中级程序员拔到高级的是开源程序。linux强盛的生命力就在于开源。C++的欢乐社区github和gitlib有空一定要去,那里绝对有让你肆意遨游的空间。
四、关于前途
当前人工智能的概念炒得很火,在我的理解中,C++偏向应用,虽然在智能逻辑上缺乏表达,但依然有很多周边产品需要C++来实现,如数据挖掘、数理逻辑、算法、嵌入式等等。如果哪天智能运算彻底替代程序员完成工作,那么咱们依然可以。。。好吧,编不下去了,大家一起要饭可好?
有时候停下来会对未来产生迷茫,每个人的选择不一样,但是只要选择了,就要走下去,每个人的路都不同,但每条路都不会一帆风顺,人生是有很多意义,但有些意义实现不了只能放弃。在当前条件下,做出最有效的选择,然后玩命去干,一定会有所收获,即便它不是最喜欢的。
最后,附上个人linux下C++编程入门资料,ps:上传文件大小被限制,可以私信我,发所有资料,共1.5G。
祝各位早日实现技术目标。
顺路粘一下个人 .vimrc 常用配置
set number
syntax on
set encoding=utf-8
set t_Co=256
filetype indent on
set autoindent
set tabstop=4
set expandtab
set softtabstop=4
set shiftwidth=4
set wrap
set showmatch
set hlsearch
set incsearch
set ignorecase
set visualbell
set ai
set pastetoggle=<F9>
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap " ""<ESC>i
inoremap ' ''<ESC>i
inoremap {<CR> {<CR>}<ESC>O
func SkipPair()
if getline('.')[col('.') - 1] == ')' || getline('.')[col('.') - 1] == ']' || getline('.')[col('.') - 1] == '}' || getline('.')[col('.') - 1] == '"' || getline('.')[col('.') - 1] == "'" || getline('.')[col('.') - 1] == '>'
return "\<ESC>la"
else
return "\t"
endif
endfunc
inoremap <TAB> <c-r>=SkipPair()<CR>
#注:
#1、输入tab为,插入模式下,按 Ctrl + V后,再按 Tab 键。
#2、插入模式下,按 f9 为 切换/退出 粘贴模式