地信本科,应该学什么编程语言?什么阶段学?
首先,一般地信本科的课程设置里就包含C、C++这几种底层开发语言,但是通常不教C# ,因为C#是专门的GIS桌面开发课程,比如使用ArcEngine进行桌面端的开发。
主流的GIS开发编程更倾向WebGIS或Python。
C语言
C语言是计算机的底层语言,C语言几乎所有理工科必修。将来地信考研有些学校也会考C语言,例如:南京师范大学(初试科目828 C语言程序设计(含数据结构)》),再比如:山东科技大学(初试科目806地理信息系统与数据结构)。
一般是大一、大二的时候学习,打好基础;大三的时候如果打算考研,必须在这个阶段把《数据结构与算法》(用C语言/手写代码)作为最高优先级进行深入学习,因为很多好学校的考研初试直接考算法。
Python
Python是用代码做空间分析的第一步,AI编程更是离不开Python(PyTorch / 深度学习)。
因为是解释型语言,运算效率不如C/C++,Python适合GIS自动化工作流、遥感影像处理、时空大数据分析、未来的AI学习基础。
大二开始接触专业课(如GIS原理、地图学),这个适合上手Python,自己写代码批量处理Shapefile,计算坐标,画图等,是非常不错的选择。
JavaScript
JavaScript是前端语言,上手快,容易出效果,一般的前端地图可视化开发就是用的JavaScript。
其特点是生态框架更新极快(Vue/React),需要不断学习。常见的openlayers、mapbox和cesium也属于JavaScript框架的一种。
适合后期想走WebGIS网页开发、三维数字孪生大屏、地图数据可视化的同学学习。
大二的时候就可以开始接触HTML + CSS,了解一下网页是怎么构成的,到大三的时候开始接触JavaScript,学会基于OpenLayers或Mapbox在地图上画点、画线、加载底图、做交互。
C++
C++是高精地图引擎、三维渲染引擎、自动驾驶定位算法的底层语言;C++的学习门槛相对较高,周期也比较长。
适合想长期耕耘往底层地图引擎开发、自动驾驶高精定位算法方向发展的同学学习。
C++一般是计算机专业或测绘地信的GIS开发方向选修。绝大多数院校的数据结构,都是用C语言或者C++来作为教学语言和上机语言的。
Java
Java其实是后端语言,也是大型互联网时空云平台、高并发地理信息服务(如华为时空云)的主力语言。
适合想从事后端GIS服务的同学学习。
C#
很多大学的本科课程会用C#调用ArcEngine,但是不得不说C#几乎可以说是已经被淘汰的桌面端二次开发技术栈。现在的GIS早已全面转向Web端和云平台,建议大家尽量不要把大量时间花在C#上。
总结
如果要就业,C# 用得不多,考研也不太考C#,建议同学重点放在C/C++(数据结构)和Python(算法)、Javascript(webgis)、Java(后端)上。
如果要考研的话,有的学校会考复试现场机试,通常用C++或Python。
研究生阶段,C++是底层语言,如果做高精地图或遥感AI,Python或C++是必备的。
