学了十几种编程语言后,我有哪些感受?

2023-05-16

转一下鱼皮大佬的文章:https://mp.weixin.qq.com/s/Eier53_flKEtxj-yGIQs8A


大家好,我是鱼皮。

学编程 5 年多了,我学过十几种编程语言,比如 C、C++、Java、Python、JavaScript、Go、PHP、C#、SQL、Scala 等。

乍一听好像挺厉害的,但事实上,学过的语言很多,熟练的就那么几个。很多语言学完之后,不写就忘了,就好像从来没有学习过一样。

那我为什么要学这么多编程语言?学了这么多语言对我有哪些好处和坏处?到底应不应该学多门语言呢?

下面分享一下。

为什么学这么多编程语言?
回顾我学语言的过程,无非就是四个原因:感兴趣、学校让学、找工作混饭吃、还有就是项目要用。

老实说,光跟着学校学,基本就会好几种语言了。

先说兴趣,我在高中时就很想做自己的网站,只不过那会儿是用什么 Front Page,Dreamweaver 拖拖拽拽就搞定了(应该没有多少同学用过吧)。所以上了大学,我第一个自学的就是前端,对应的语言就是 HTML、CSS、JavaScript 三件套。

再说说学校教的,首当其冲是 C 语言。不过很可惜,我学的一塌糊涂,最后写了个图书管理系统(其实就是个小黑框)就毕业了。

之后呢开始学 C++,因为感觉跟学校课堂学 C 语言时没学到啥,所以这次我选择上网自学(比如看圆脸妹妹的 C++ 课堂等)。大概学了一个月左右,写了一点简单的桌面程序。然后我就开始学 Java 了,因为听说 Java 好找工作,好混饭吃。

刚开始学 Java 就是学基础语法,直到学完我都不知道为啥 Java 好找工作,感觉能做的事和 C++ 差不多。直到后来学了企业 Java 开发,接触了 Spring 之类的框架。我才感叹到,Java 真香!于是我决定在后台开发这条路上坚持走下去,后来也学了 SQL(结构化数据查询语言)、Scala 等编程语言。

然后我本来以为今后再也不会用 C++ 了,但听说算法竞赛、保研机试啥的都是它,所以后来就拿 C++ 刷了几百道 OJ 题目,打死也没想到最后毕设还是拿这玩意做了个图像处理程序。

再聊聊其他语言。我大一学 Python,只是为了完成一个数据抓取 + 可视化项目,听说用 Python 简单、做的快,就学了几天,就搞定了;学 Golang 是因为当时在实验室搞区块链,有个框架是用的 Go 语言;学 C# 也是因为在实验室有个桌面端项目要用。

对了,还有 PHP,听说它是世界上最好的语言我就学了。不得不说,用 PHP 开发确实很爽,但很遗憾,如今大公司基本不用。

坏处
看到这,肯定有同学说了:会这么多编程语言,那不是无所不能,肯定很爽吧!
但事实上,编程语言学多了,也让我有了一定的烦恼。
因为每种语言在数据类型、语法和 API 上都有一定的差别,所以会的语言多了后,我时常陷入混乱,把语法给记混。尤其是学 Go 语言的时候,这玩意和其他语言的语法差别贼大,简直让我怀疑人生,大家可以感受一下:

Go 和 Java 语法对比
我在工作中,又要写 Java、又要写 JavaScript,所以就老是搞混,在 Java 中写 JavaScript 的函数,在 JavaScript 中 new Java 的对象。再加上我白天工作用 Mac,晚上下班用 windows,开发工具的快捷键也不一样,我真的要疯了!

所以有的时候,我真的很想专注地去写一门语言。
但是,学了这么多语言后,我变秃了,也的确变强了!
所以下面分享下学习多门语言的好处。

好处
首先,我发现自己摸清了学习语言的套路,无非就是数据类型、流程控制、函数对象和一些特性,因此学新的语言变得越来越轻松快速。比如我之前没有学过 Kotlin,但后来工作中要让我重构 Kotlin 的代码,我没花额外时间去学习,也基本也都能看懂。

我学到了更多的设计思想、了解了每种语言更适合做什么,比如什么是解释型语言和编译型语言,有什么区别,又该如何选择。

我看代码时再也不用被语言所束缚,基本啥都能看懂,大家在交流编程语言时,我也有了更多的发言权,啥都能聊两句,也不用再因为争论 “什么是最好的编程语言” 而跟别人打架了。

此外,我在开发时有了更多的选择。比如处理 Excel 表格,如果我只会 Java,那只能用 Java 相关类库,不够方便;但因为我也会 Python,就有了更多类库可以选择,几行代码就搞定了,效率拉满。

最重要的,也正是学了更多的语言后,我才找到了最适合自己的语言,从前端转到了 Java 后端。

建议
看到这儿,大家觉得有必要学多门编程语言么?
我觉得,技多不压身,会的语言肯定是越多越好。
虽说可能会有点混乱,但是现在编辑器的语法校验功能都很强大了,所以哪怕语法输错了,也能很快纠正过来。还有一种方法就是,干脆就别去记忆语法,熟能生巧。

不过千万要记住,无论你想学多少种语言,都要先重点学好一门。一方面是深入理解一门语言后,再学别的就很简单了;另一方面是时间有限,把所有语言都学的很好是不现实的,毕竟编程领域中,语言只是一部分,还有太多技术、工具、方法、思想要学了。如果什么语言都草草地去学、浅尝辄止,那面试的时候一定会吃大亏!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学了十几种编程语言后,我有哪些感受? 的相关文章

  • 【LeetCode刷题日记】[641. 设计循环双端队列]

    LeetCode刷题日记 641 设计循环双端队列 题目描述 设计实现双端队列 你的实现需要支持以下操作 xff1a MyCircularDeque k xff1a 构造函数 双端队列的大小为k insertFront xff1a 将一个元
  • 【LeetCode刷题日记】[641. 设计循环双端队列]

    LeetCode刷题日记 641 设计循环双端队列 题目描述 设计实现双端队列 你的实现需要支持以下操作 xff1a MyCircularDeque k xff1a 构造函数 双端队列的大小为k insertFront xff1a 将一个元
  • 【LeetCode刷题日记】[313. 超级丑数]

    LeetCode刷题日记 313 超级丑数 题目描述 超级丑数 是一个正整数 xff0c 并满足其所有质因数都出现在质数数组 primes 中 给你一个整数 n 和一个整数数组 primes xff0c 返回第 n 个 超级丑数 题目数据保
  • 【LeetCode刷题日记】[413. 等差数列划分]

    LeetCode刷题日记 413 等差数列划分 题目描述 如果一个数列 至少有三个元素 xff0c 并且任意两个相邻元素之差相同 xff0c 则称该数列为等差数列 例如 xff0c 1 3 5 7 9 7 7 7 7 和 3 1 5 9 都
  • boost初探-日期与时间

    文章目录 一 前言二 boost基本概念三 日期与时间1 timer2 progress timer3 data time库3 1gregorian3 2date period 4 posix time 一 前言 之前写了两篇关于在linu
  • Runtime(运行时)是什么意思

    什么是 runtime 在计算机领域中 xff0c 经常会接触到 runtime 这个概念 xff0c 那么 runtime 究竟是什么东西 xff1f runtime 描述了程序运行时候执行的软件 指令 xff0c 在每种语言有着不同的实
  • 【C/C++开源库】C/C++矩阵运算开源库

    文章目录 一 C 43 43 矩阵运算库 eigen1 下载及安装1 1Linux安装及配置1 2Windows配置 2 测试使用2 1DevC 43 43 2 2Clion 3 深入学习 二 C 43 43 矩阵运算库 Armadillo
  • Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:3.2.0

    一 概述 过了个周末回来更新代码之后 xff0c 重新built之后 xff0c 竟然built失败了 xff0c 提示信息为 xff1a Cannot resolve plugin org apache maven plugins mav
  • 并行计算之OpenMP入门简介

    转载于 xff1a https www cnblogs com kuliuheng p 4059133 html OpenMp提供了对于并行描述的高层抽象 xff0c 降低了并行编程的难度和复杂度 xff0c 这样程序员可以把更多的精力投入
  • PHP + Apache + Mysql集成环境部署及简要教程

    文章目录 PHP运行原理和机制PHP 的设计理念及特点PHP 的四层体系1 Zend 引擎 xff08 核心 xff09 2 Extensions xff08 扩展 xff09 3 SAPI xff08 服务器应用程序编程接口 xff09
  • 不同行业公司工资对比,计算机YYDS

    一 纳税标准 推荐一篇文章 xff1a 扣除社保 公积金年后 社保和公积金的扣除比例是22 左右 xff0c 工资在扣完社保和公积金的基础上再进行个税的扣除 税前19 2w xff0c 税前平均每月1 6w xff0c 扣除社保 公积金后年
  • 对实时操作系统多任务的一些理解

    一 什么是优先级反转 优先级反转 xff0c 是指在使用信号量时 xff0c 可能会出现的这样一种不合理的现象 xff0c 即 xff1a 优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源 高优先任务由于因资源缺乏而处
  • 【LeetCode刷题日记】数组和链表性质总结

    一 数据结构的存储方式 数据结构的存储方式只有两种 xff1a 数组 xff08 顺序存储 xff09 和链表 xff08 链式存储 xff09 这句话怎么理解 xff0c 不是还有散列表 栈 队列 堆 树 图等等各种数据结构吗 xff1f
  • C语言面向对象实现滑动均值滤波与平均值滤波

    文章目录 一 背景二 平均值滤波1 算法介绍2 代码实现3 实例 三 滑动均值滤波 xff08 Moving Average xff09 四 C语言面向面向对象实现滑动均值滤波 一 背景 在实际的数据采集中 xff0c 我们经常会取多次数据
  • 【LeetCode刷题日记】常用算法基础和理解及运用

    在我们LeetCode刷题过程中 xff0c 如果我们只是了解数据结构 xff08 数组 xff0c 链表 xff0c 数 xff09 的使用方法 xff0c 那我们在面对复杂的题目时 xff0c 是很难很好的解决问题的 xff0c 因此我
  • 【LeetCode刷题日记】数组类题目常见题型

    文章目录 303 区域和检索 数组不可变 https leetcode cn com problems range sum query immutable 304 二维区域和检索 矩阵不可变 https leetcode cn com pr
  • 【LeetCode刷题日记】队列类题目常见题型

    文章目录 225 用队列实现栈 https leetcode cn com problems implement stack using queues 剑指 Offer 09 用两个栈实现队列 https leetcode cn com p
  • 【LeetCode刷题日记】栈类题目常见题型

    文章目录 20 有效的括号 https leetcode cn com problems valid parentheses 225 用队列实现栈 https leetcode cn com problems implement stack
  • 回顾 nexus maven-snapshots 401 Unauthorized

    1 修改maven settings 文件 私库的用户名和密码 lt server gt lt id gt maven releases lt id gt lt username gt admin lt username gt lt pas
  • 【LeetCode刷题日记】树类题目常见题型

    文章目录 树基础知识 104 二叉树的最大深度 https leetcode cn com problems maximum depth of binary tree 102 二叉树的层序遍历 https leetcode cn com p

随机推荐

  • 【LeetCode刷题日记】常用算法基础和理解及运用

    文章目录 递归和迭代递归迭代迭代和递归的关系和区别 xff08 敲黑板 xff09 二分法典型的二分法二分法的变种找出第一个与key相等的元素的位置找出最后一个与key相等的元素的位置查找第一个等于或者大于Key的元素的位置查找第一个大于k
  • 编程常用快捷键,学完保证和大神一样件字如飞

    每次看到一下大神在编程时 xff0c 那打字的速度简直是恐怖 xff0c 而且几乎不会用到鼠标 xff0c 手不用离开键盘 xff0c 因此打字效率也高 而菜鸡的我 xff0c 每次写代码时 xff0c 有时候要在不同行之间跳动 xff0c
  • Clion中编译C/C++混合代码

    今天在Clion中编译C C 43 43 语言时 xff0c 出现了一个不容易发现的错误 项目文件包括三个文件 三个文件其实都是用C语言写的 xff0c 只是第一个文件的后缀是 cpp 如果在这种情况下直接编译 xff0c 会出现一下报错
  • 【LeetCode刷题日记】[447. 回旋镖的数量](https://leetcode-cn.com/problems/number-of-boomerangs/)

    LeetCode刷题日记 447 回旋镖的数量 题目 给定平面上 n 对 互不相同 的点 points xff0c 其中 points i 61 xi yi 回旋镖 是由点 i j k 表示的元组 xff0c 其中 i 和 j 之间的距离和
  • 【LeetCode刷题日记】[162. 寻找峰值]

    LeetCode刷题日记 162 寻找峰值 题目 峰值元素是指其值严格大于左右相邻值的元素 给你一个整数数组 nums xff0c 找到峰值元素并返回其索引 数组可能包含多个峰值 xff0c 在这种情况下 xff0c 返回 任何一个峰值 所
  • 基于Junit4+Mockito+PowerMock实现Controller+Service的单元测试

    一 导入的依赖 lt test gt lt dependency gt lt groupId gt org mockito lt groupId gt lt artifactId gt mockito core lt artifactId
  • 嵌入式编程之状态机

    文章目录 1 什么是状态机 xff1f 2 状态机编程的优点 1 提高CPU使用效率 2 逻辑完备性 3 程序结构清晰 3 状态机的三种实现方法switch case 法表格驱动法函数指针法小节 摘要 xff1a 不知道大家有没有这样一种感
  • VxWorks几种常用的延时方法

    转载于 xff1a https www vxworks net app 144 time facilities of vxworks 自用 VxWorks系统提供灵活多样的定时器机制 xff0c 有多种接口可以方便地实现延时 xff0c 文
  • 推荐一些嵌入式、C/C++的开源库和项目

    前言 想用代码实现一个功能时 xff0c 我们可以先看看是否有前辈已经实现了该功能 xff0c 并且开源分享在网上 一般我们自己造出来的轮子的可用性基本上是很难和大神们造的轮子相比的 因此多了解一下优秀的开源库的使用 xff0c 可以让我们
  • 对于LSB的理解(位的LSB、模数转换的LSB)

    之前对于LSB的理解 xff1a 最高有效位 xff08 MSB xff09 指二进制中最高值的比特 在16比特的数字音频中 xff0c 其第1个比特便对16bit的字的数值有最大的影响 例如 xff0c 在十进制的15389这一数字中 x
  • C语言跳转语句(break语句,continue语句,goto语句,return语句,跳转函数setjmp和longjmp)

    文章目录 一 前言二 跳转语句1 break 语句2 continue 语句3 goto 语句4 return 语句 三 跳转函数1 C标准库 一 前言 跳转语句 xff08 jump statement xff09 可以中断当前程序的执行
  • C 语言跳转表的实现及在嵌入式设备中的应用

    转载于https cloud tencent com developer article 1797595 跳转表的概念 引用笔者在 Wikipedia 上看到的关于跳转表的概念 xff0c In computer programming a
  • 软件版本控制,软件推荐及使用教程

    文章目录 一 版本控制系统分类1 版本控制系统的概念2 本地版本控制系统 3 集中式版本控制系统 4 分布式版本控制系统 Git 二 版本控制软件使用简明教程1 集中式版本控制系统 SVN2 分布式版本控制系统 把文件添加到版本库 工作区
  • 串口通信库总结

    C 43 43 开源库 Windows和linux下好用的串口通讯API库 serial 在 C 43 43 xff0c 跨平台 xff0c 串口库编写 https github com wjwwood serial boost网络串口通信
  • 【C语言开源库】lw_oopc:轻量级的C语言面向对象编程框架

    文章目录 轻量级的面向对象C语言编程框架LW OOPC介绍摘要s为什么要用面向对象 为什么不直接使用C 43 43 LW OOPC是什么 LW OOPC宏介绍问题描述解决方案方案的可扩展性如何 LW OOPC最佳实践LW OOPC的优点LW
  • Go语言基础语法入门

    一 下载及安装 被河蟹了 xff01 xff01 xff01 二 入门教程 Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前 xff0c 让我们先来了解 Go 语言最简单程序的结构 Go Hello World 实例 Go 语
  • docker环境安装tomcat

    一 安装tomcat 1 查找tomcat镜像 docker search tomcat 2 安装指定版本的tomcat镜像 docker pull tomcat 9 0 二 启动tomcat镜像 docker run d p 8080 8
  • Go语言并发详解

    文章目录 一 Go语言并发简述 xff08 并发的优势 xff09 进程 线程并发 并行协程 线程Goroutine 介绍channel 二 Go语言goroutine xff08 轻量级线程 xff09 使用普通函数创建 goroutin
  • C/C++ 服务器/后台开发学习路线总结及准备

    文章目录 一 前言二 总结网上的学习路线三 之前的一些相关博客整理 一 前言 最近要新开一个非常重要的系列 xff0c C C 43 43 服务器 后台开发 这个系列将会包括非常多的内容 xff0c 难度也会比之前的系列大很多 xff0c
  • 学了十几种编程语言后,我有哪些感受?

    转一下鱼皮大佬的文章 xff1a https mp weixin qq com s Eier53 flKEtxj yGIQs8A 大家好 xff0c 我是鱼皮 学编程 5 年多了 xff0c 我学过十几种编程语言 xff0c 比如 C C