本人写博客的想法由来已久,记录一下自己硕士期间学习编程之路。
入行编程原因
作为一名从本科到硕士的菜鸟,我的编程之路也是半路转过来的,而非科班出身。我接触的第一个编程语言是python,这也是我研一刚开始就学的,我在研一期间确定了自己的论文要使用的编程语言,在身边的学长学姐的建议以及秉承着“人生苦短、我学python”的理念,踏上了python之路。
上图显示了2022年最热门的编程语言排行榜,python排行第二就说明了它是当下最热门的语言之一。
Python适合领域和职业发展分析
Python是一个“优雅”、“明确”、“简单”的编程语言。
学习曲线低,非专业人士也能上手
开源系统,拥有强大的生态圈
解释型语言,完美的平台可移植性
动态类型语言,支持面向对象和函数式编程
代码规范程度高,可读性强
Python在以下领域都有用武之地。
后端开发 - Python / Java / Go / PHP
DevOps - Python / Shell / Ruby
数据采集 - Python / C++ / Java
量化交易 - Python / C++ / R
数据科学 - Python / R / Julia / Matlab
机器学习 - Python / R / C++ / Julia
自动化测试 - Python / Shell
如果你想从事python之路,根据个人的喜好和职业规划,可以选择的就业领域也非常多。
Python后端开发工程师(服务器、云平台、数据接口)
Python运维工程师(自动化运维、SRE、DevOps)
Python数据分析师(数据分析、商业智能、数字化运营)
Python数据挖掘工程师(机器学习、深度学习、算法专家)
Python爬虫工程师
Python测试工程师(自动化测试、测试开发)
说明:目前,数据分析和数据挖掘是非常热门的方向,因为不管是互联网行业还是传统行业都已经积累了大量的数据,各行各业都需要数据分析师从已有的数据中发现更多的商业价值,从而为企业的决策提供数据的支撑,这就是所谓的数据驱动决策。
尽管python那么热门,但是在研二下学期开始,我却选择了学习Java。为什么呢?因为目前我想做的是后端开发,市场上公司选择用python进行后端开发的少之又少,几乎没有几家。所以,我才决定学习Java。至于为什么使用Java、Go以及PHP的那么多,而使用python做后端开发的那么少呢?不是说python听热门的吗?原因可能如下:
python不适合做后端语言的原因
1、Python实现跨平台开发非常麻烦。
一些扩展包在windows下安装极其麻烦,比如PIL这个著名的图像处理包,在windows上要找到这个安装包都不容易,而且这个包已经不维护了,被一个叫pillow的包接替,但气愤的是pillow这个包和PIL居然不是100%兼容的,还需要一些小改动。
另外的,有的包根本就不提供windows版,比如kyotocabinet,一个著名的的kv存储引擎。这让人非常头疼。现在团队基本所有的人都是用windows开发,但程序部署却是在linux上。
最终大家解决问题的办法是在windows上装个linux虚拟机,在虚拟的linux的上开发,这样就可以保持服务器和开发环境一致了。但这样也是够麻烦的,性能严重打折,虚拟机和物理机之间切换也极度麻烦。
2、缺乏真正的多处理器支持(伪线程)
多重处理是编写应用程序的重要部分。Python确实支持多处理,尽管它可能不如其他语言灵活或方便。编写代码时,这可能会产生某些限制。
3、速度限制
Python经常因其速度而受到批评。它是一种解释型脚本语言,由于它使用的翻译代码方法不同,因此它比许多编译后的相对语言(例如C / C ++或Java)相对要慢。但是,某些Python基准测试比C和C ++更快。
4、对于内存密集型任务不理想
Python是一种以其数据类型的灵活性而著称的语言。这导致相当高的内存消耗,并使其不方便用于占用大量内存的任务。
5、设计限制
Python是动态类型的,这意味着它会在应用运行时执行某些任务,否则将以静态类型的语言完成。这对设计施加了一些限制。如果您的设计中加载了元素,则可能会使程序停顿并妨碍顺利运行。
等等以上缺点,确实使得java和go这些语言更适合后端开发。而python更适合大数据分析、图像处理以及人工智能等这些领域。任何一门语言都有其独到之处,只是要做到物尽其用,合适的领域才能发挥它的优势。
总结
以上大概是第一篇博客的内容,阐述了我目前转学Java进行后端开发的原因,后续我会继续和大家一起分享、讨论Java、后端开发或者前端相关知识的学习之路!当然我也只是刚刚入门而已,希望所有像我这样硕士期间转编程学习python、Java的小伙伴能够确定好自己的学习方向,走好每一步。因为你所学的语言,毕业后就是你找到一份好工作的敲门砖。