我泼点冷水:建议还是要慎重选择上来新手就自学Python。如果想认认真真打好基础,还是要至少从Java学起。换句话说,先学会Java,然后再学Python不迟。
Python的最大优势是简单明快,最大问题也是简单明快。
我面试过很多用Python的人,整体水平比用C++和Java的要差不少,尤其是计算机基础和数据结构方面。我一开始认为是我自己(可能)的偏见,但时间长了发现,常用Python的人,和常用Java、C++的人,编程思维方式都不一样。
Python最大的问题在于,容易给人一种“计算机编程非常简单”的错觉,不需要思考类型,不需要理解容器和数据结构,加上语法精简,自然就认为“背后的原理很简单”,也就懒得去深究更深层次的操作系统和数据结构知识。甚至,Python用多了,很多人连数字和字符串都懒得分辨,被我面试算法题时,回答得一塌糊涂。
我们公司大量用Python,似乎是很支持Python语言的学习对吧?
但坏消息是,我们Python很多都是写Pipeline的,真正的难点和重点都在于Python里面的HIVE SQL语句,Python只是外边一层薄薄的壳,甚至,不需要任何Python基础也可以写code。
更坏的消息是,如果只会Python,基本上很难过面试,因为面试除了要求编程,还要求对计算机的基础知识、数据结构、系统设计等全方位的理解,那么只会Python的人如何理解Performance、Process VS Thread等?面对算法题时,包括Priority Queue等相对不那么直接的数据结构又如何去理解其实现?
什么时候适合学Python?只是想简单了解一下“编程是什么”,兴趣向的,或是给小孩子玩;
时间紧急,比如要求30天内必须学会一门语言,否则拉出去砍了;
确定不以软件工程、编程为主要发展方向,只是为了处理数据、调用API等;
已经掌握了其它复杂、基础的编程语言,或是至少一门OO语言之后;
如果有时间、追求长远的基础和效果,建议还是以相对难学、但基础全面的Java开始。Java稍微有一定成果后,形成相对固定的思维方式,再回头学Python,不过是小菜一碟。
当然,我完全理解万事开头难、Python起手容易这个特点。但是,编程道路上第一门语言特别重要在于,如果长期使用,它会形成人对编程的思维方式。
我怕的是,很多人以Python起手,并且成果非常好,很快就开始写爬虫之类的,以为进展极快、效果极好(事实上也的确如此),但之后容易陷入深耕Python方向和这些具体的应用场景,却忽略了计算机最基础的知识和原理。这样即使找到了工作,但工作的难度也不高或是公司底蕴不深,就容易陷入恶性循环:因为技术不深所以只能在三流及以下的公司工作,因为工作经验不值钱,所以更难跳槽。
如果换一种方式:以Java起步,学一段时间,不说精通但也至少理解和接触了数据结构和系统等,巩固具体的思维方式,然后再回头学习Python可能只用几天时间,然后再用Python去写具体的应用来尝试和“玩”(Play),不是更好些?
所以,这是个定位问题:如果只是计算机爱好者,学一学Python只有好处没有坏处;但如果长期的目标成为计算机的专业码农,一开始就要在基础上下功夫,而不是尽快进入应用和实际层面。
这是因为,一旦进入工作后,基本上没有多少时间补充基础知识;反而是应用和实际层面,公司里面到处都是随时可学。
这也解释了为什么大公司愿意招募基础扎实、知识完备的科班出身者,哪怕这人“只会刷题,没有实际经验”,而不去招募“10年工作经验”的人——很多看似工作经验很多的人,如果只是重复低级劳动,或是了解技术层面非常浅薄的话,那么进入公司后工作经验并没有太大用处,成长性可能还真不如基础扎实的人。
更多推荐
有java基础学python需要多长时间_怎么自学python,大概要多久?
发布评论