写点什么

谷歌高级工程师:2022 年最值得学习的编程语言

  • 2022-02-02
  • 本文字数:1824 字

    阅读完需:约 6 分钟

谷歌高级工程师:2022年最值得学习的编程语言

作为谷歌-新加坡的高级软件工程师,我常常会收到“什么编程语言值得学习”一类的问题。到底该学什么呢?我的建议是,“随便”。

编程语言只是一种达成目的的手段

 

无论你是从 C++、Java、Python、JavaScript,还是其他语言起步,新语言的学习通常不会花费太多时间,也不应是你学习的首要关注点。

 

编程语言不过是一种达成目的的手段。因为在工作中,我们常常会根据需要在不同语言间切换。 

 

在高中时,我的编程入门语言是 C++。而大学时,我又在 JavaScript 上投入了大量的精力。在微软工作时,常常需要使用 C#/.Net 和 TypeScript。而我在谷歌所负责的安卓相机应用又需要我学会 Java。在转而开发相机的计算摄影后,我写了许多生产的 C++以及原型相关的 Python 代码。

 

纵观我的编程生涯,新语言的学习成本从未高出预期。

 

在时间的长河中,人们构建了许许多多的编程语言,并根据其不同的使用方式进行分类,有的纯粹用于标记,如 HTML 和 XML;有的则完全以脚本形式服务,如 shell 和 bat 脚本;有的语言则是功能型的,等等,不一而足。

 

在不同“种类”的语言间切换可能会涉及到一定的学习成本,但如果你对某种语言有基本的了解,那么新语言的学习难度将大幅下降。

训练解决问题的能力

 

那话说回来,我们到底应该把精力放在哪里呢?

 

坦率来说,最重要的应还是训练自己解决问题的能力。


  • 如果要做一个网页应用,怎么写?

  • 如果想要提高一款安卓应用的性能,怎么做?

  • 如果你要解决的问题可以通过训练后的神经网路解决,从哪里入手?

 

即使你是第一次接触这个问题,只要能将其解决,无论用什么语言,对你来说,都将是一种锻炼。

 

你大可放心学习各种新鲜技术,深入研究那些在你看起来很神奇的概念,尝试探索不同的流派,最后选择一项你真正喜欢的东西来进修。待你神功大成后就会发现万宗归一,所有的编程语言本质其实差不多。

 

那有什么具体点的建议吗?

 

下面,我将奉上为不同职业阶段的开发者们量身定做的两条攻略。

1.如果你是刚刚接触编程

 

你可以先从一门自己想从事的技术开始,无论是网页设计、安卓或 iOS 移动端开发、游戏开发、其他类型的应用开发、机器学习模型训练,还是桌面应用构建,但重点是一定要选择一种,并开始学习其相关的语言。如果有时间,可以通过随手编写小程序来学习,不断探究计算机魔法背后的原理。

 

下一步,你可以开始挖掘语言中已被抽象为库的基础概念,如并发或多线程、数据库、图形渲染、图像处理、网络连接等等。要知道,无论是什么编程语言,要么是直接编译为汇编指令,要么就先编译为中间字节码,再编译为汇编指令供硬件执行。一旦你接受这个事实,就会发现各种语言其实并没有什么差别。

 

举个例子,“将数组中每个数值都增加一”,根据不同语法,处理方式也不一样。

 

在 Python 中:

y = [i + 1 for i in x]## orfor i in range(0, len(x)):  x[i] = x[i] + 1
复制代码

 

在 JavaScript 中:

for (var i = 0; i < x.length; ++i) x[i]++;// Orvar y = x.map(val => ++val);// Orvar y = Array.from(x, val => ++val);
复制代码

 

在 Go 中:

for i:= range x {  x[i]++}
复制代码

 

这些或复杂或简单的语法最终都会被编译为这些:

increment(int*, int):  cmp     w1, 0  ble     .L1  mov     x2, x0  add     x1, x0, w1, sxtw 2.L3:  ldr     w0, [x2]  add     w0, w0, 1  str     w0, [x2], 4  cmp     x2, x1  bne     .L3.L1:  ret
复制代码

 

有趣的是,在这些例子中有的语言会复制数组,有的则不会。初学者可以先集中精力学习这类语言间的不同之处以及其对程序的影响。

2.如果你经验丰富并精通一种编程语言,但仍不满足

 

同样,你可以先退一步,仔细考虑看看到底哪种类型的问题更能引发你的兴趣,哪些方法可以带你走向学习的新方向。

 

举例来说,在开发相机应用时,我曾有幸参与“夜间模式”的研究。这一功能需要程序可以捕捉一系列的图像,并通过一定方式将其稳定地合并,以确保最终图像曝光良好且噪音不高。这些操作的计算成本高昂,意味着程序的算法需要在资源有限的硬件上运算,且延迟不能超出预计。

 

这意味着,我需要重新复习 C++和图像处理概念等内容。这个挑战是非常有意思的,相对而言,花费在学习上的精力完全算不上是麻烦事。希望各位可以找到这样的方向,并开始你们学习的步伐。

 

最后的最后,不要再费心寻找什么 2022 年最值得学习的编程语言了,这一切都取决于你自己。

 

原文链接:

 

https://betterprogramming.pub/the-best-programming-language-to-learn-in-2022-senior-engineer-at-google-explains-5abcbc5f6556

2022-02-02 14:0012586

评论 15 条评论

发布
用户头像
这是个博客系统吗?
2022-02-17 08:34
回复
用户头像
听君一席话,浪费三分钟
2022-02-09 10:00
回复
用户头像
是地,虎头蛇尾
2022-02-08 20:43
回复
用户头像
需要一个投诉按钮
2022-02-08 12:27
回复
用户头像
最后的最后,不要再费心寻找什么 2022 年最值得学习的编程语言了,这一切都取决于你自己。
2022-02-08 12:27
回复
用户头像
听君一席话如听一席话
2022-02-07 18:50
回复
用户头像
听君一席话如听一席话
2022-02-07 18:50
回复
用户头像
听君一席话如听一席话
2022-02-07 18:50
回复
用户头像
听君一席话如听一席话
2022-02-07 18:50
回复
用户头像
听君一席话如听一席话
2022-02-07 18:50
回复
用户头像
听君一席话,如听君一席话。
2022-02-07 13:34
回复
用户头像
说了等于没说,标题党 +1
2022-02-07 10:25
回复
用户头像
熟悉语言不重要,熟悉语言常用的类库很重要。不要重复造轮子。
2022-02-04 10:13
回复
用户头像
说了等于没说,标题党 +1
2022-02-03 23:02
回复
用户头像
好一个标题党
2022-02-02 15:30
回复
没有更多了
发现更多内容

你以为委派模式很神秘,其实你每天都在用

Tom弹架构

Java 架构 设计模式

IOS技术分享| WebRTC iOS源码下载&编译

anyRTC开发者

ios 音视频 WebRTC 实时通信 视频直播

Sentinel-Go 源码系列(二)|初始化流程和责任链设计模式

捉虫大师

sentinel Go 语言 sentinel-go

初识Java反射概念和使用

CRMEB

如何快速应对井喷下的OCR需求?

鲸品堂

OCR

ODC V3.2.0 新版本发布 | 着重用户体验,挑战权限管控业务场景

OceanBase 数据库

数据库 开发者 稳定性 应用场景 新功能

白码低代码/无代码开发平台功能及作用

低代码小观

低代码 开发工具 开发平台 无代码 企业服务

一文,动态规划入门

bigsai

算法 动态规划

业务数据清洗,落地实现方案

数据 数据清洗 数据管理 数据服务 业务数据

为什么那么多人在用WGCLOUD

王逅逅

zabbix 监控系统 linux运维 运维系统

OceanBase 源码解读(六):存储引擎详解

OceanBase 数据库

数据库 开发者 高性能 资源隔离 租户

《Linux一学就会》:第二章:Linux基本命令操作和文件管理

侠盗安全

Linux 运维 linux运维 云计算架构师

11.11上云嘉年华,华为云数据库助力客户备战业务高峰

华为云数据库小助手

GaussDB GaussDB(for openGauss) GaussDB ( for Redis ) 华为云数据库

低代码是什么意思?

低代码小观

程序员 低代码 开发工具 开发平台 企业开发系统

原来我才是内卷王,闭关3个月肝完Java 7大核心知识,成功斩获字节58万Offer。

Java高级开发

字节跳动 java; 字节跳动面经

JavaIO流核心模块与基本原理

Java nio IO流 字符流 字节流

行云管家荣登36kr企服点评云计算软件排行榜NO.1

行云管家

云计算 软件 排行榜 IT运维

真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

Java 程序员 架构 分布式 算法

如何获取所有安装的应用程序信息

Changing Lin

11月日更

TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?

腾讯云数据库

tdsql 国产数据库

什么是DISA STIG?概述+STIG安全

旋极智能

springboot集成阿里云短信

小鲍侃java

11月日更

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

Java MySQL redis 程序员 算法

MapReduce Service更换集群外部时钟源,仅需10步

华为云开发者联盟

大数据 FusionInsight ntp 时钟同步 MapReduce Service

这场蝴蝶效应,从“丝滑”的双11开始

脑极体

墨天轮国产数据库沙龙 | 黄新著:金仓数据库全生命周期管控

墨天轮

国产数据库 KingBase 人大金仓

“神算子”上线!EasyDL时序预测模型零门槛轻松上手

百度开发者中心

百度飞桨

技术干货|开源项目-FlyFish使用攻略

云智慧AIOps社区

开源 大前端 低代码 数据可视化 大屏

推动产业创新,腾讯的底层逻辑是什么?

ToB行业头条

个人信息保护法生效,企业数据安全合规正当时

行云管家

信息安全 数据安全 企业安全 网络保护

腾讯安全李滨:腾讯云数据安全与隐私保护探索与实践

腾讯安全云鼎实验室

数据安全 云安全

谷歌高级工程师:2022年最值得学习的编程语言_语言 & 开发_Minhaz_InfoQ精选文章