我的技术学习之路

工作多年,目前也已经接触到了不少的技术了,在此总结一下。

COBOL

我毕业第一家公司学习的是 COBOL 语言,是一门面向数据、面向过程的编程语言,语法简单,很接近自然语言(英语),容易入门。当初由于自己没有一点编程基础,自我感觉英语还可以,所以就入坑了。现在看来,这真是一个极其错误的选择。选择大于努力,这句话说得太对了。所以大学的时候除了学习专业知识之外,还是要好好提高认知啊,至少得了解大环境和主流。

COBOL 虽然安全性很高,处理数据也很牛B,90 年代在商业的应用比较广泛,1997 年的时候还排到了编程语言排行榜第三名,but,COBOL 主要运行在 IBM 的大型机上,不支持跨平台,而且是面向过程的语言,现在都什么年代了,PC 互联网,移动互联网都经过两波浪潮了,面向对象的思想早已成为圣经,如果三大主流的操作系统都不支持,这已经注定了 COBOL 语言会走向没落,现在去看排行榜,它已经跌出 20 名之外了。

COBOL 由于它的安全性高,数据处理强大,加上历史原因,现在商业(主要是银行业)还有很多的后台事务处理还在使用这门古老的编程语言,比如 ATM 机,大型机短时间内不会消失,所以市场还是有需求,但是,它的优势也在渐渐丧失。未来是大数据、云计算和人工智能的时代,银行也在逐渐转型,拥抱互联网,走向智能金融。最近,IBM 已经收购全球最大的服务器提供商 RedHat,发力云计算,微软凭借云计算的业务高增长,十年来市值首超了苹果。随着这个趋势,未来一切都会在云端。大型机这种昂贵的资源会渐渐成为历史。另一方面,移动支付已经很普及了,ATM 机的业务量会严重下滑,所以未来,COBOL 应该没什么发展可言。

这些都是后来才意识到的,也庆幸自己做了二次选择,虽然当时在 COBOL 的技术积累已经达到一定程度了,但是不得不选择放弃。不管怎么说,COBOL 给了我第一份工作,虽然放弃了技术积累,但是做 COBOL 项目学到的 SQL 技术,接口设计,数据模型,服务、组件的概念却是相通的。

REXX

REXX 是在做 COBOL 项目的时候自学的一门脚本语言,实际业务中并不常用,但是一个偶然的机会,发现系统库很多模块都是 REXX 写的,与 COBOL 的执行语言 JCL 结合的也比较多,于是,我就买了本书《大型主机系统管理REXX编程详解》,花时间系统学习了一下,第一次接触到脚本语言,发现真是强大。类似 UNIX 的 shell 脚本语言,REXX 语言运行在大型主机上,灵活、高效,不需要编译就可直接运行,调试方便,更加接近底层,直接与系统交互,包括主机系统的很多 GUI 界面都是用 REXX 设计的。也就是那时候,我研究了很多主机系统的源码,对主机的 GUI 设计很感兴趣,后来,我尝试做了很多 GUI 的工具,并集成到了一个功能菜单中,也算一个小型的系统了,简化了工作中一些常用的很繁琐的流程,提高了工作效率。

REXX 是我接触的第一门脚本语言,它的灵活高效强化了我的逻辑思维,最重要的,学习 REXX 的过程中培养了我研究学习的精神。

Java & Python

了解了大环境和主流之后,我决心自学 Java,初学比较吃力,也没有什么面向对象的思想,好在自己动手能力还可以,跟着黑马的视频,边写 demo 边理解,断断续续学了四个月才把基础学完。这时候,Python 流行起来,很多人入坑,我也抱着试一试的心态学习一下,没想到入门很快,语法和 REXX 有点像,都是动态语言,而且有了 Java 基础之后学起来很轻松,有一些函数思想和面向对象思想,最主要的是比 Java 简洁很多,语言优美,应用也非常广泛。

Python 一上手就停不下来了,一开始折腾了爬虫,打飞机小游戏,后来开发了地址收藏工具软件 得到很多好评,又折腾了Django、Flask几个项目,期间也学习了一些 Html、JavaScript、CSS 知识,为了部署项目,接触了 Linux 操作系统和 Nginx服务器,学到了不少东西。 考虑到 Java 市场已经非常饱和,自己没有多大优势,Python 应该会是未来的主流,所以决定了转投 Python 作为自己未来发展的方向。

为了专注 Python 开发,我决定离职找一份自己稍微擅长的 Python 后端开发工作,在面试一系列碰壁之后,我感觉到基础还是非常薄弱,在恶补了一番基础之后成功拿到了 2 个Offer。

这时候其实又做了一个错误的选择。

入职后发现整个部门就我一个人写 Python,公司业务主要还是 Java 支撑的,不过入职后好歹有项目做,主要是搭建一个线上营销系统,我用了 Django 框架来实现。整个项目,从前端界面,到后台,到数据库设计,再到上线部署都是一个人独立完成了,期间躺了不少坑,比如公司用的 Oracle 数据库,而不是我熟悉的 MySQL,用户认证需要用公司数据库已有的数据模型,而不是 DJango 自带的用户认证,需要重写认证接口。当然也学了不少东西,比如前端的 Bootstrap,Ajax,JavaScript等,对 Django 框架也有了更深的了解。

做完这个项目之后,我的职位就被裁了,早在预料之中。 这时候,我仔细考虑了自己的情况,我现在的编程能力还是很弱的,虽然掌握了框架,掌握了基础,但是没有编程思想,很多概念不知道原理,而 Java 是一门极具编程思想的语言,近十年来也一直处于榜首的地位,能多掌握一门语言总没坏处。一个好的程序员不应该仅仅局限于语言和框架,而应该注重基本功的修炼。

虽然暂别了 Python 工作,但是我不会放弃它,数据科学,机器学习领域都是需要进阶学习的内容。人生苦短,路还很长。

微服务

新项目组接触的是 Java 微服务,也是近两年非常火的概念,算是比较新的技术了。一开始抱着敬畏的心态学习这门新技术,但后来发现没必要,只要掌握一些基础认真学下去,其实并没有那么高大上。

我花了一周的时间学习了 maven(一个包管理工具,相当于 Python 的 pip),还有 Spring 的基本思想和配置以及发展历史,还有与数据库交互的 ORM 框架 mybatis。开发工具我选择了 IntelliJ IDEA,和之前 Python 用的 Pycharm 是同一家公司的,用起来应该比较好上手,专业版的破解方法和 Pycharm 差不多,具体看这篇文章 Pycharm 和 IntelliJ IDEA 永久激活方法

接下来开始学习 Spring Boot,Dubbo框架,和 Spring Cloud了。后面有了学习积累再慢慢更新吧。

 


关注微信公众账号「曹当家的」,订阅最新文章推送

Table of Contents