最近x音的算法不知道从哪里得知我可能会关注编程,就开始疯狂给我推送python入门课程这类的视频和直播,秉着看热闹的心态它给我推我就看,顺带看看老师的水平如何,既然开始写这篇文章了就知道肯定是被那些python“老师们”刺激的不行,如鲠在喉不吐不快!!!
- e.g. 有个python课程的老师说“python里所有的数字都是从0开始的,所以你不论写什么,遇到数字直接减1就可以了”(她原话,我就不说哪位小可爱帮她引流了),敢不敢专业一丁点啊?这和前段时间有个财经培训的平台公开说“主动基金就是你主动买的基金,被动基金是你被动买的基金”有什么区别?
- e.g. 还有个老师为了证明英语不是编程的主要障碍,就把python的所有关键字都列出来了,然后告诉小白你看都认识吧,都是简单的英文单词或者缩写,除了这些之外就再也不会用到英语了,所以英语不是编程的主要障碍!我要不是学过QBASIC差点就信了!!!
------------------------------吐槽结束----------------------------
学习目的
首先你得搞明白你学编程的目的是什么?
- 为了考级方便以后找工作的时候多一个证书?
- 只想了解一下,看看是否合适自己?
- 为了将工作中的一些数据处理自动化?
- 因为身边的人都学,所以我也得学?
- 因为电影里的黑客都很酷,我也想这样?
- 因为心爱的xx不鸟我(我想监视xx的手机、电脑),所以想学?
- 因为编程工作看上去还行,可以有个比较好的收入?
- 因为可以方便的从网上收集数据,感觉很酷?
- 因为兴趣爱好,就是喜欢?
以上是我能想到的原因了,应该是能覆盖到大部分的学习动机。我想说,除了最后一条外,其余的所有动机如果一直不能变成最后一条的话最终都会半途而废,或者入门时放弃,或者入门后进阶时放弃,或者在达到某一目的后再也不碰编程(当然这种已经算比较好的了)。
英语问题
- 这个应该是入门时很多小白最关心一个问题了。我可以很负责任的告诉你,不需要你英语很强,会查词典有大学英语基础即可。英语仅仅是编程的一种体现,或者说你程序设计语言的一种载体,现如今完全可以使用汉语来写代码,可以但是没必要!毕竟你写代码时直接输入字母要比输入汉字的效率高,这点感觉没争议吧。
- 但是,这不代表你的英语可以一塌糊涂,主要体现在当学习到一定程度后,需要去查资料,而这些资料很多都是英文的,你至少得能看懂,这个时候最好不要把所有希望都放在xx翻译上,因为资料里的内容大部分都是英语里参和着API调用,翻译出来的东西大部分时候都是惨不忍睹的。
结论:初期的时候,不用为了英格力士而担心,编程的世界里没有时态、没有虚拟语气、没有倒装……,so,这个问题duck不必哈。
数学问题
- 嗯……,这个可能和上面的英语问题一样是小白比较关心另一个问题了。先说结论,不论你学习的目的是什么,初期的时候你只要高中毕业(因为在进制换算里有幂运算,而我不知道幂运算是高中还是初中学的),辣么数学绝对不是你学编程的障碍!
- 其实程序是为了解决某些问题而产生的让计算机按照一定的逻辑进行运算的一组指令。这里其实没有数学什么事,理论上只要你愿意,你想得到从1加到100000的和是多少,你可以从1+2开始写,一个算式一个算式的输入到计算机中,最后得到你想要的数,但看上去好像有点不太聪明的样子!你也可以借助编程语言写个循环从1加到100000,嗯……看上去牛掰一点了;你还可以直接用等差数列求和公式的方法(1+100000)*(100000-1+1)/2,一条语句就出结果了牛掰格拉斯啊!看到数学的作用了吧,一般而言只有在计算型的任务中才会对数学有些要求,大部分的编程任务都是偏事物型的,对数学的要求不高或者根本没要求,至少在初学的时候不用担心任何数学问题。
- 但是,假如你的目标是算法工程师、量化交易研究员或者计算机理论方向等,感觉这些方向的人也不会有数学的问题,毕竟数学是这些方向的基础。如果你学编程的目的是这些方向,兄台不要抱任何幻想,老老实实安安静静的搞定数学,编程对于你来说仅仅是工具是武功招式,数学才是核心是内功心法!
python还是C++
- 选择哪个其实和你的目的有关,但是选择python绝对不是仅仅因为它简单。想学好python也不是一件容易的事情,甚至有些时候比C++更难(就连很多专业的算法工程师,在写效率要求高的代码时候还是使用循环而不是矩阵运算)。
- 相较于别的编程语言,python对初学者更友好一些,不仅是python语言语法层面的友好包括编程环境也相对简单,更适合作为编程入门语言!能够让初学者更快的入门,体会到编程带来的成就感和减少挫败感激,并快速达到其初衷。比如仅仅是想数据处理自动化,那么只需要学习编程基础知识和python的基础语法,另外加上pandas包的调用和文件的读写就基本ok了。不用理会什么编译语言、解释语言,代码执行效率这些乱七八糟的东西,要的就是一个快准狠。不过,假如你的目的是想将编程作为你的职业发展或者想成为一个隐藏在民间的高手,辣么入门之后还是老老实实的再把java、c++好好学习一下吧。
- 总之,不论你的动机是什么,将python作为编程的入门语言都没任何问题!不过,想要在编程的道路上走的更远,python仅仅带你进入编程世界的引路人~
如何开始
如今网络这么发达,得到学习资源似乎不是一件难事,但是千万不能盲目!特别是在目前人人都可以成为视频博主的21世纪,更得谨慎一些。万一上了我开头那两位“老师”的课,哎……又一个好苗子给毁了!!!
------------------------一切只提出问题而不给解决方案的行为都是耍流氓---------------------
- 首先需要明确一点,学习任何知识都没有捷径,不是每天在x音上花几个小时听他们吹水你就可以学会的,更不是通过“老师们”的链接买了几G或者几百G的资料后你就能成大神的,这点要牢记!!
- 首推MIT的CS公开课,去搜一下有没有翻译好的编程课程,老老实实的跟着学,讲台上的那些都是大神,随便一个都是吊打我们的存在。如果没有,就去B站搜一下评价好的课程,最好是某某大学的编程课的录制视频(这里顺带想纠正一点,一提到现在的大学CS课程就说过时啦,毕业后根本不用啦之类的,总信仰高手在民间,我承认民间有高手,普遍高校里的CS课程也的确滞后于社会的发展,但是滞后说的是新技术新方法不是基础!!现在全世界的计算机不还是图灵架构吗?CPU不还是需要从存储器里取数吗?改了吗?一个连基础都打没牢的人如何去发展使用新技术,还请牢记:基础不牢地动山摇!!!),这些视频至少能保证不出常识性错误,也不会教着教着毫无征兆的插入广告!这种类型的视频也搜不到,那就搜xx培训班的视频或者评价好的博主的视频吧,这就需要你有点甄别能力了,主要是看看评论。(我不知道有哪些博主做的好,所以也没法推荐,正好也免了有带货的嫌疑)
- 上面是针对想在编程道路上有所发展的小白的,假如你的目的很明确比如数据处理自动化,那么就直接去搜这类的视频教程,或者还是老老实实的上个培训班,努力的话基本一个月就OK啦
- 最后也是最重要的一点,学习编程需要你细心细心再细心,需要你有恒心有耐心能耐得住寂寞!需要一本教程,推荐老外写的教程,可以用简单的话来说简单的事(而国内的教程,不把简单的事情说复杂没法体现出自己的水平,复杂的事情 额…… 不存在),而且还要跟着课程一步步的在电脑上进行实践,切记切记不能眼高手低,比如很简单的两句话:
a='hello world!'
print(a)
上面就是没问题,正确的。下面的就会报错:
a='hello world!'
print(a)
这里没有你不认识的单词,不牵扯到任何数学,但就是不对,因为下面的“print(a)”前面多一个空格,而python里因为没了’{}'所以使用对齐方式来表示程序的段落,所以报错了!不亲自动手实践是不会注意到这种类型的错误的,而这类错误又会普遍存在于刚学的小白身上!
路漫漫其修远兮~ 吾辈共勉