编程语言python好学吗,学python需要编程基础吗

  编程语言python好学吗,学python需要编程基础吗

  摘要:自学编程,先学什么语言?其实编程可以做的事情太多了。第一,知道自己想用代码做什么,然后知道自己的学习路径,选择起点,这是作者的看法。

  高考结束,我第一个明确的计划是学习编程。那时候我还不知道编程可以用来做财务决策或者科学计算。我只是想简单地开发一个“具有图形界面的软件”。自然,没有任何基础的我也遇到了上面两位同学提出的问题。

  走了很多弯路,在java和C/C的大门里走了一圈也没什么进展,好在这个世界上有一种叫“数学建模竞赛”的东西,为我打开了一扇新的世界的大门:经过几次建模,我对自己的“写代码的能力”有了很多信心,更加注重数据结构的基础知识,于是我开始系统的学习CS理论。在此期间,我逐渐接触了matlab、汇编、C/C、java、python、C#、golang、html/css、javascript等语言。(其实语言的种类不是重点,而是它的生态和可用框架)。现在回想起来,我想和三年半前的自己,和准备自学编程的同学们聊聊。

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

  在你知道你想用编程做什么之前,先知道编程能为我们做什么。其实不只是这么狭义的“编程”,通过写代码让计算机帮我们做事都可以看做“编程”。这也是为什么在当今高效率的社会,“儿童编程”和“全民编程”越来越被推崇的原因。

  而且现在的语言工具(比如python)已经降低了大量编程工作的复杂度,让我们在不了解编译过程的情况下,用几行简洁的代码就可以完成工作。

  所以,我在这里总结一下编程能为我们做什么,我们需要了解计算机到什么程度才能做好这项工作:

  1. 日常办公、处理表格:我们经常在刷朋友圈的时候看到这种广告:“同事下班早,工作被领导表扬,只因为会用python处理excel!”其实这有点扯淡:第一,excel的功能够直观,够方便,够强大;第二个是基于0的python入门,肯定涉及到学习一些数据结构的知识。有了这个时间,不如好好看看excel的强大功能。如果你只想用编程处理excel这种办公工作的话:学一学python入门课,再掌握一个类似xlwings的excel处理库就足够了。当然,有这时间,还不如直接学学excel和其中的vba宏。2. 科学计算(运筹/机器学习/数值分析):现在的科学计算几乎不可能脱离“编程”这个词。做科学计算的人很聪明,学习能力很强,但编程能力往往参差不齐。我在这里画了三个等级:2.1 不需要太多编程能力,重点在于结果而非编程:。很多朋友只用仿真软件,R语言做统计分析,matlab做拟合。他们的工作重点是输出结果,而不是“编程”的过程。显然,这类学生只需要知道如何声明变量和控制语句。这类同学往往是类似物理、管理、社会学这类学科的从业者,都是很聪明能干的人,我认为在过程中学习,多看看缥缈的斑马的工作方式与工具,注重文件管理与编程规范(不要乱起文件/变量名字,也不要乱放文件…),学学github检索与使用,熟能生巧就好。2.2 需要一定编程功底,如CV/NLP等ML/DL/OR从业者:计算机视觉、自然语言处理、深度学习、机器学习、运筹学、线性求解器、启发式算法……这类研究必须用计算机做实验,通过编程实现算法的引入并不容易。同样的算法,编程好的和编程差的都是用代码写的,结果、性能、可移植性、可读性、参数调整的方便性都可能大不相同。这就好比一个艺术学者,他的构图很美,理论知识很扎实,但最终决定他作品效果的是他用笔的能力。对于这类同学来讲,数学、数据结构是重点中的重点,“会用”python这类语言的同时,最好也掌握一下“面向对象的思想”与“函数式编程”,方便我们阅读框架源码;注重自己的编程习惯,配置一个好点的编辑器,持续学习(比如你了解jupyter notebook的快捷键与自动补全吗),咱也不能一直当个“调包侠”呀。有余力则应该去系统地学学计算机课程。2.3 大神,从底层开始写算法:你知道吗?TensorFlow,一个我们用python调用的非常快乐的深度学习框架,其实它的核心是用c/c写的!不信你自己看源码tensorflow/core/kernels/。为什么要用c/c?我猜是为了更好的性能,更好的利用电脑计算能力。我们知道,c/c是一种带有指针的语言,增加了编程的难度,但也让开发者更好地管理系统的虚拟空间。很多主流语言,比如java和python,为了降低开发者的编程难度,都取消了指针机制。这类人计算机功底必须极其扎实。3. 软件工程师/开发者:前端、后端、PC端、移动、Web平台、全栈、网络安全、测试、运维、游戏等。就是我们常说的“程序员”。工种其实太多了!自学编程的孩子如果是想成为这类工程师,那当然需要系统学习软件专业与计算机专业的专业课;但是我们大部分孩子只是想学学计算机,了解一下而已,因此第3条我们不展开讨论。4. 其他很有趣的事:日常生活中我们离不开手机和电脑,所以写一个“程序”让电脑自动做一些工作会很有趣。比如编程爱好者Sarthak agarwal,写了很多python脚本文件,包括图片自动下载、文件自动管理、自动发邮件等。这里,我不得不点明一个误区:虽然人们常说python很方便、强大,但只会python是远远不够做这些有趣的事的。比如,用python下载图片听起来很美好,但是不懂url、不懂网页布局,怎么可能做到呢?python说白了,只是一个方便的工具而已嘛。明确你想用编程做什么,用编程能做什么,想学到什么程度。其实我上面说的已经很清楚了。

  自学大约有两个阶段:

  至少学习一门语言。建议把C/C作为入门(为了学习一些指针和面向对象的知识)或者python作为入门,但是你会发现在python教学中可能不会强调面向对象的教学,因为python本身的工具已经很强大了;不建议用java入门,因为java真的是开发者用的语言,它的魅力在于界面和程序设计。想入门java,不如入门C/C;编程的原则,一遍一遍。第二阶段是实践和不断学习,在自己的领域进行探索:如果想从事数据科学和数据竞赛,要熟悉python中的熊猫和sklearn库。如果要做线性求解,先找几个简单的java线性求解器例子来重现,了解每行代码的作用,在过程中积累;如果是兴趣驱动,不如学学我这样的计算机专业课程…等等。我的计算机自学笔记在:https://github.com/PiperLiu/CS-courses-notes;

  我的微信微信官方账号:派珀蛋巢,平日里我更新技术文章和原创文章,也谈管理和设计~

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: