自学编程还在烦恼先学什么?能做的事太多了!

Posted C语言编程学习基地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自学编程还在烦恼先学什么?能做的事太多了!相关的知识,希望对你有一定的参考价值。

自学编程,先学什么语言呢?实际上,编程能做的事太多了,“首先明确自己想要用代码做什么,再明确自己的学习路径、选择起点”是笔者提出的意见。


 

高考结束,自己的第一个明确规划就是:学编程。当时不知道编程可以用来做金融决策或科学计算,只是想单纯开发一个“有图形化界面的软件”而已。自然而然,没有任何基础的我也遇到了上面两个同学提出的问题。

大一走了不少弯路,在java、C/C++这两者的门口兜兜转转,也没有什么进步。

幸好这世界上有一种叫“数学建模比赛”的东西,为我打开了新世界的大门:几个模型下来,我对自己“写代码的能力”有了不少信心,并且更加关注数据结构这种基础知识,便开始系统学习CS理论。

这期间逐渐接触了matlab、汇编、C/C++、java、python、C#、golang、html/css、javascript等等语言(其实语言种类不是重点,重点在于其生态与可用框架)。

现在回过头来,跟三年半前的自己和准备自学编程的同学讲一讲心得。

本文的内容概括为两部分:

㉿ 先知道编程能帮我们干什么

㉿ 再明确自己要拿编程做什么


 

一、先知道编程能帮我们干什么

编程,其实已经不仅仅是“编写程序”这么狭义了,通过写代码让计算机帮我们做事都可以看做“编程”。这也是为什么,在注重高效率的今天,社会越来越推崇“少儿编程”与“全民编程”。

并且,现在的语言工具(比如python)已经降低了不少编程工作的复杂度,让我们在不了解编译过程的情况下,也能通过几行简洁的代码很棒地完成工作。

因此,我在这里总结一下,编程能帮我们做什么,已经做这个工作需要懂计算机到什么程度:

1. 日常办公、处理表格: 

我们刷朋友圈时常常见到这种广告:“同事早早下班,工作还被领导表扬,只因为会用python处理excel!”这其实有点瞎扯:

一是excel的功能已经够直观便捷、够强大了;二是0基础入门python,肯定要涉及到学习一些数据结构的相关知识,有这个时间,还不如好好看看excel有哪些强大功能。


2. 科学计算(运筹/机器学习/数值分析): 

现在科学计算几乎难以与“编程”二字分家。做科学计算的人都是很聪明、学习能力很强的人,但其编程能力往往参差不齐,我这里划了三个档次:

        - 2.1 不需要太多编程能力,重点在于结果而非编程: 很多朋友只是用用仿真软件、用R语言做做统计分析、用matlab做做拟合,他们的工作重点在于输出的结果,而非“编程”这个过程,那很显然,这类同学往往是类似物理、管理、社会学这类学科的从业者,都是很聪明能干的人,我认为在过程中学习,多看看前辈们的工作方式与工具,注重文件管理与编程规范(不要乱起文件/变量名字,也不要乱放文件…),学学github检索与使用,熟能生巧就好。

        - 2.2 需要一定编程功底,如CV/NLP等ML/DL/OR从业者: 计算机视觉、自然语言处理、深度学习、机器学习、运筹学、线性求解器、启发式算法……这类研究是一定要拿计算机做实验的,并且用编程实现算法的入门并不简单。对于这类同学来讲,数学、数据结构是重点中的重点,“会用”python这类语言的同时,最好也掌握一下“面向对象的思想”与“函数式编程”,方便我们阅读框架源码;注重自己的编程习惯,配置一个好点的编辑器,持续学习(比如你了解jupyter notebook的快捷键与自动补全吗),咱也不能一直当个“调包侠”呀。有余力则应该去系统地学学计算机课程。

        - 2.3 大神,从底层开始写算法: 你知道么?我们用python调用的很开心的深度学习框架TensorFlow其实核心都是用c/c++写的哦!为什么用c/c++呢?我估计是为了更好的性能、对计算机算力更充分的利用。我们知道,c/c++是有指针的语言,这增加了编程难度,却也让开发者可以更好地对系统的虚拟空间进行管理。很多主流语言,比如java、python为了降低开发者编程难度,便取消了指针机制。这类人计算机功底必须极其扎实。


3. 软件工程师/开发者:

 前端、后端、PC端、移动端、Web平台、全栈、网络安全、测试、运维、游戏等等,就是我们常说的“程序员”,工种其实太多了!自学编程的孩子如果是想成为这类工程师,那当然需要系统学习软件专业与计算机专业的专业课;但是我们大部分孩子只是想学学计算机,了解一下而已,因此第3条我们不展开讨论。


4. 其他很有趣的事:

日常生活中我们离不开手机、计算机,因此如果能写个“程序”,让计算机“自动”做一些工作,便蛮有趣的。比如,编程爱好者Sarthak agarwal[2]就写了许多python脚本文件,这其中有用自动下载图片、自动管理文件、自动发邮件的。这里,我不得不点明一个误区:虽然人们常说python很方便、强大,但只会python是远远不够做这些有趣的事的。比如,用python下载图片听起来很美好,但是不懂url、不懂网页布局,怎么可能做到呢?python说白了,只是一个方便的工具而已嘛。


 

二、再明确自己要拿编程做什么

编程能做什么,要学到什么程度,其实我在上文说的已经比较明白了。

自学编程大概两个阶段:

        ▣ 打基础,至少学懂一门语言,推荐拿C/C++入门(为了学到一些指针与面向对象的知识),拿Python入门也可,但你会发现面向对象在Python教学中可能不被强调,因为Python自带的工具已经很强大;

不推荐拿Java入门,因为Java实在是开发者用的语言,其魅力在于接口、程序设计,想拿Java入门,不如拿C/C++入门;

        ▣ 编程之理,一通百通。第二个阶段,就是多多实践、持续学习,在自己的领域探索下去:

如果你要搞数据科学、打数据比赛,就去多用熟悉python中的pandas、sklearn库等等;

如果想做线性求解,先找几个简单的java+线性求解器例子动手复现下来,读懂每行代码的作用,在过程中积累;

自学编程先学什么的建议就先讲到这,还有什么问题的话可以关注我,有问题欢迎私我!


END!不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

【值得关注】我的 编程学习交流俱乐部 !【点击进入】

C语言入门资料(网盘链接免费分享):


 

C语言推荐书籍(PDF免费分享):


 

以上是关于自学编程还在烦恼先学什么?能做的事太多了!的主要内容,如果未能解决你的问题,请参考以下文章

零基础想入门编程需要先学啥

postgis自学难度

电脑编程入门书籍,应该先看啥

【重赏】想要自学C语言

自学编程怎么样啊,好学吗?

编程自学之旅