粉丝提问:准备大一,自学编程,到底先选什么语言?

148 阅读5分钟

最近有粉丝问我:千寻哥,我大一了,想学编程,学什么语言好呢? 我心想:woc,大一就这么卷了吗?后生可畏啊…

b07168cd4c5a86adfe8af7fa10ff70f9.jpeg

不过我还是好好的回答了他的问题,他原话问我:好像我身边的大多数人都是学那个什么C Prime Plus,但是网上很多人推荐Python,我该怎么选?

我这是这样回答他的:

首先要明确一个核心,我们学计算机到底是在学什么?我们学计算机,不可能只是仅仅学习C语言,又或者是Java语言,Python语言。

先做一个自我介绍,之前在独角兽公司做过计算视觉算法工程师,目前在一线大厂担任机器学习算法方面的研发工程师,可以说我是Python熟练,Java,JavaScript也很熟悉,也能写C++,写Go语言的全栈工程师,哈哈哈。

所以针对这个学什么语言的问题,我觉得我是比较有发言权。我首先从技术应用层面来说一下,各种不同种类语言的适合使用场景:

Python 语言

Python语言的特性是具有胶水的特性,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。

但是Python语言的缺点在于运行速度偏慢,由于Python调用封装代码包的特性使得其运行速度不如C语言等面向过程的编程语言运行速度快。

同时Python在数据科学方面使用的较广,Python语言其机器学习和数据科学库(Pandas、Keras、TensorFlow、scikit-learn、SciPy、NumPy等),以及大量可视化库(Matplotlib、pyplot、Plotly等)对进行数据分析方面的使用最为广泛。

以下为使用Numpy与matplotlib随机产生离散数据,进行可视化的函数曲线

`import numpy as np from matplotlib import pyplot as plt

ys = 200 + np.random.randn(100) x = [x for x in range(len(ys))]

plt.plot(x, ys, '-') plt.fill_between(x, ys, 195, where=(ys > 195), facecolor='g', alpha=0.6)

plt.title("Sample Visualization") plt.show()`

pandas.png

Java语言

Java语言的特点则是兼顾了C++的面向对象的特性与Python语言的解释特性,最广泛的使用与互联网大厂的后端开发项目,最为著名的就是Spring家族的SpringBoot框架,

Spring Boot是一个简化Spring开发的框架。用来监护spring应用开发,约定大于配置,去繁就简。SpringBoot框架相对Spring框架来说,具有如下的特点:

创建独立的spring应用。

提供的“starters” poms来简化Maven配置

自动配置spring应用。

提供生产指标,健壮检查和外部化配置

没有代码生成和XML配置要求

以下是springboot运行的一个demo,很容易上手

image.png

GO语言

GO语言目前正在逐渐替代Java的后端王者的地位,不过暂时规模还不是很大,GO语言的出色特性在于其天生支持并发操作的特性,使得其在后端开发中可以大大的提高开发效率。累计字节跳动,腾讯等大厂的后台开发使用GO语言的较多。

JavaScript语言

JavaScript,前端开发编程语言,具体应用于前端页面至后端的参数的传递的代码逻辑编写与实现,随着现如今Web技术开发的逐渐日趋成熟,几乎所有的架构采用前端,后端分离的方式,前端的UI界面与后端的数据库,缓存中间件之间的参数传递,采用的是URL进行连接,JavavScript则是进行开发的首选。

结论

几种语言介绍后,现在正式回答你的问题,关于选哪一种编程语言的选择,因为编程语言,仅仅是我们开发的一个工具而已,比如Python语言不仅仅可以用来做机器学习,同样可以用来做后端,和前端,有兴趣的可以了解一下flask框架。

所以仅仅使用编程语言区分技术栈有一些片面,如果刚刚大一的话,建议学学C语言,同时几乎所有的高校与所有的专业都会开设C语言的基础编程课程,对于C语言的基础知识要学的扎实一些,同时C语言没有复杂的框架,可以进行寻寻渐进方向不容易被带偏。

C语言完全掌握之后可以进行C++的学习,C++其实是一门难度很高的语言,入门简单,但是精通难,单单从系统的垃圾回收机制来进行分析,GO语言与Java语言都具有自动的垃圾回收机制,但是C++的内存回收机制,却需要程序员自己定义,因此可操作性型更强,同时也对程序员的对底层的理解能力有了很高的要求。

就业方向

学完C++语言后,你可能上手任何一种语言都得心应手了,下面我们聊一聊就业方向的选择:

如果想做算法工程师,那一定要学Python,C++,因为在算法岗位的日常工作中,使用Python语言快速实现论文的idea,最终的模型部署使用的是C++,比如pytorch的torchScript,Tensorflow的Tensorflow lite都是C++的模型部署框架。

如果之后想做后端工程师,那么首选Java语言,其次Go语言,对于Java语言来说,spring的全家桶的框架,最为经典的SpringBoot,微服务框架SpringCloud,RPC框架Dubbo,SpringMVC等要进行深入的学习。C++语言一般来说用于高性能服务器的开发,竞争比Java要小,方向也不错。

至于前端工程师,学习HTML语言与JavaScript,以及一些经典的框架比如Vue框架,入门慢慢提升

最后总结一下,编程的学习路漫漫,不是一朝一夕就能提高的,如果要比喻,学习编程就像练习英语听力,可能好久都不会提高,但是可能突然一天,你会感觉一同百通!

我是千与千寻,目前一线大厂担任机器学习算法方向的研发工程师,我们下期见~