当前位置:首页 > 科技  > 软件

悟透一个小窍门,你就能举一反三掌握所有编程语言

来源: 责编: 时间:2024-05-21 17:34:30 161观看
导读当你程序员当久了,你会慢慢了解到,许多真 . 大佬都是编程语言通。他们在彻底掌握了一门语言之后,就能够很自信的觉得自己能够轻松掌握别的语言。这种能力可把许多人馋哭了,到底是怎么回事?为什么别人能够轻松驾驭所有语言,

9C728资讯网——每日最新资讯28at.com

当你程序员当久了,你会慢慢了解到,许多真 . 大佬都是编程语言通。他们在彻底掌握了一门语言之后,就能够很自信的觉得自己能够轻松掌握别的语言。这种能力可把许多人馋哭了,到底是怎么回事?为什么别人能够轻松驾驭所有语言,而我不行?9C728资讯网——每日最新资讯28at.com

有的人甚至会怀疑大佬们在吹牛,怎么可能会有这样厉害的人。9C728资讯网——每日最新资讯28at.com

事实上,这种能力是真实存在的,因为我,一个小小的前端开发,就已经具备这个能力了。今天我跟大家分享一个小诀窍,让你也能逐步拥有这个能力。9C728资讯网——每日最新资讯28at.com

首先我们要明确一个前提,大多数编程语言都是非常相似的,因此我们才能够做到快速掌握别的语言,只是你可能还没有感受到而已。9C728资讯网——每日最新资讯28at.com

所以这个窍门说穿了其实就非常简单,要成为编程语言通,我们只需要找到他们的相似性,就可以了。9C728资讯网——每日最新资讯28at.com

我们可以把常用的编程语言分为两个大类。9C728资讯网——每日最新资讯28at.com

先以我们最熟悉的 JavaScript 为代表,来观察一下类似语言的语法。9C728资讯网——每日最新资讯28at.com

首先是 JavaScript。9C728资讯网——每日最新资讯28at.com

let a = 10function foo() {}for (let i = 0; i <= 10; i++) {}

然后是你可能没学过的 go 语言。9C728资讯网——每日最新资讯28at.com

var a string = 'hello world'var b c int = 1, 2func main() {}

这个时候,如果你对 JS/TS 比较熟悉的话,你会发现神奇的事情,你居然看懂了没有学过的语言。9C728资讯网——每日最新资讯28at.com

我们再来看一下 dart 语言,哎呀,糟糕,又看懂了。9C728资讯网——每日最新资讯28at.com

var x = 1;var hex = 0xDEADBEEF;var message = StringBuffer('Dart is fun');for (var i = 0; i < 5; i++) {  message.write('!');}

再来看看 Swift,哦豁,还能看得懂?9C728资讯网——每日最新资讯28at.com

/* 我的第一个 Swift 程序 */var myString = "Hello, World!" print(myString)let decimalInteger = 17           // 17 - 十进制表示let binaryInteger = 0b10001       // 17 - 二进制表示let octalInteger = 0o21           // 17 - 八进制表示let hexadecimalInteger = 0x11     // 17 - 十六进制表示func runoob(site: String) -> String {  return (site)}
import Cocoavar someInts:[Int] = [10, 20, 30]for var index = 0; index < 3; ++index {   print( "索引 [/(index)] 对应的值为 /(someInts[index])")}

这里有一个很有意思的事情就是,你轻松的发现了这些语言居然跟你学过的 JavaScript 拥有如此相似之处。9C728资讯网——每日最新资讯28at.com

所以 JavaScript 虽然在某种程度上被吐槽得非常多,各种缺点,但是很显然,后来的许多语言的语法设计都参考了 JavaScript,学会了 JavaScript,实际上就代表你已经具备轻松掌握别的语言的能力。9C728资讯网——每日最新资讯28at.com

但是很多前端依然没有这个自信,为什么呢?9C728资讯网——每日最新资讯28at.com

因为 JavaScript 是一个弱类型语言,它缺乏类型系统。9C728资讯网——每日最新资讯28at.com

因此,我们只需要进一步掌握 TS,就能成为某一类语言的语言通!9C728资讯网——每日最新资讯28at.com

这里我们要明确一个非常关键的信息,那就是以 TS 为代表的这一类语言,有一个非常明确的特征:类型后置。9C728资讯网——每日最新资讯28at.com

这类语言的语法设计通常会在声明的前面给一个关键词来表示当前我正在声明一个变量,然后在变量后面明确该变量的类型。9C728资讯网——每日最新资讯28at.com

var a: string = 10

包括最近比较火热的 rust 也是一门典型的类型后置的语言,不要骗我,你一定能读懂下面这行代码。9C728资讯网——每日最新资讯28at.com

fn main() {  let x = 5;  println!("The value of x is: {x}");  x = 6;  println!("The value of x is: {x}");}

而另外一类以 C 语言为代表的语言,它也有一个非常明确的特征:类型前置。9C728资讯网——每日最新资讯28at.com

int x = 10;         // 整型变量 x 初始化为 10float pi = 3.14;    // 浮点型变量 pi 初始化为 3.14char ch = 'A';      // 字符型变量 ch 初始化为字符 'A'extern int d = 3, f = 5;    // d 和 f 的声明与初始化int d = 3, f = 5;           // 定义并初始化 d 和 fbyte z = 22;                // 定义并初始化 zint max(int num1, int num2) {  /* 局部变量声明 */  int result;  if (num1 > num2) {    result = num1;  } else {    result = num2;  }  return result; }

如果你没有学过 C 语言的话,你会觉得 C 语言的代码读起来理解难度会高一点。这是正常的。因为类型前置的理解成本会高很多。我们需要阅读到后面才能知道这一行代码在干什么。9C728资讯网——每日最新资讯28at.com

因此新出的语言都是采用类型后置的设计方式,JavaScript 能够流行起来,很大一部分原因是因为在 C 系语言称霸的时候,找到了学习成本更低的语法设计。9C728资讯网——每日最新资讯28at.com

著名的 Java 也是一门典型的类型前置的语言。类型前置理解困难还在于面向对象中,经常会出现自定义的类型,例如在 Java 代码中这种类型的句式非常常见。9C728资讯网——每日最新资讯28at.com

Puppy myPuppy = new Puppy( "tommy" );

对比一在 js 中的理解难度。9C728资讯网——每日最新资讯28at.com

var myPuppy = new Puppy( "tommy" )

我们会发现,同样的代码用 js 理解起来要简单得多。9C728资讯网——每日最新资讯28at.com

语言通的大佬们,敏锐的发现了这个区别:类型前置与类型后置。除此之外,所有的语言都具备高度的相似性。9C728资讯网——每日最新资讯28at.com

当你没有发现这个区别,只会 JS 的你,去学习 C++ 你会特别痛苦,因为你感觉差异太大了。但是当你悟透了类型前置与后置的区别之后,学习难度就会神奇的降低特别多。来感受一下这段代码,看能搞得懂不。9C728资讯网——每日最新资讯28at.com

#include <iostream>using namespace std; class Box{   public:      double length;   // 长度      double breadth;  // 宽度      double height;   // 高度      // 成员函数声明      double get(void);      void set( double len, double bre, double hei );};// 成员函数定义double Box::get(void){    return length * breadth * height;} void Box::set( double len, double bre, double hei){    length = len;    breadth = bre;    height = hei;}int main( ){   Box Box1;        // 声明 Box1,类型为 Box   Box Box2;        // 声明 Box2,类型为 Box   Box Box3;        // 声明 Box3,类型为 Box   double volume = 0.0;     // 用于存储体积    // box 1 详述   Box1.height = 5.0;    Box1.length = 6.0;    Box1.breadth = 7.0;    // box 2 详述   Box2.height = 10.0;   Box2.length = 12.0;   Box2.breadth = 13.0;    // box 1 的体积   volume = Box1.height * Box1.length * Box1.breadth;   cout << "Box1 的体积:" << volume <<endl;    // box 2 的体积   volume = Box2.height * Box2.length * Box2.breadth;   cout << "Box2 的体积:" << volume <<endl;     // box 3 详述   Box3.set(16.0, 8.0, 12.0);    volume = Box3.get();    cout << "Box3 的体积:" << volume <<endl;   return 0;}

有没有感觉其实你是看得懂的?是不是变简单了?9C728资讯网——每日最新资讯28at.com

一、类型与类型推导

在不同的语言中,对类型的设计有细微的差异,例如数字有的语言是 int ,有的语言是 number,有的语言还有 bigInt,字符串有的语言直接就是 string,有的语言里还有 char。因此我们学习的时候要花一点点时间去区分不同的类型细节,在 rust 语言中,因为对内存分配敏感,因此光是整型,都有好几种类型。9C728资讯网——每日最新资讯28at.com

let x: u8 = 2let y: u16 = 15

你还需要了解有符号整型,无符号整型,浮点型等细节,学习成本非常低。9C728资讯网——每日最新资讯28at.com

除此之外呢,许多前端没把类型编程掌握好。例如在 TS 中,我们引入了类型机制,并且开始有泛型。很多人就懵掉了。不过没关系,我们只需要几分钟就能掌握它。9C728资讯网——每日最新资讯28at.com

在现代语言中,由于类型自动推导开始越来越成熟,因此许多语言会在声明的时候巧妙利用类型推导机制省略具体类型的声明,所以你单看下面的代码,你都不敢说我到底写的是哪门语言。9C728资讯网——每日最新资讯28at.com

var a = 10

因此我们在学习 TS 的时候,一定要把类型推导彻底掌握透彻,他是你成为语言通的关键。9C728资讯网——每日最新资讯28at.com

二、两种不同的开发范式

目前有两种主流的开发范式,函数式编程与面向对象编程。由于各自的特殊原因,就导致了许多前端可能会对面向对象编程非常的陌生,对函数式编程会稍微亲近一些9C728资讯网——每日最新资讯28at.com

但是作为一个语言通,不懂面向对象编程肯定是严重偏科的,这会极大的影响你的进步,比如许多前端可能就不懂重载,多态等基础概念。9C728资讯网——每日最新资讯28at.com

不过这个时候,我们也能发现前端有一个天然的优势,那就是后端其实需要函数式编程的场景到目前为止来看并不多,许多后端开发并没有机会接触函数式编程,因此大多数后端也是偏科的9C728资讯网——每日最新资讯28at.com

三、TS 的先进性

在类型编程中,纵观整个编程语言界,TS 的类型推导都算的上是最强大和最先进的。我们搞前端的要有这种技术自信,这非常关键。9C728资讯网——每日最新资讯28at.com

之所以会出现这种局面是因为前端面临的类型问题更为复杂。当然现在由于发展得太过头了,类型体操反而成为了许多人厌弃 TS 的原因。我们只需要在使用的时候自己稍微克制一下,就能很好的发挥 TS 的长处。他的优秀毋容置疑。9C728资讯网——每日最新资讯28at.com

四、总结

我们可以将编程语言分为类型前置与类型后置,除此之外,编程语言其实就长得差不多了。9C728资讯网——每日最新资讯28at.com

在类型后置语言中,JavaScript 是一门经得起时间考验的设计语言,他先进的语法设计引领了整个编程语言界,因此,深入掌握 JS + TS ,结合本文的小窍门,我们搞前端的就能够轻松成为编程界的语言通。9C728资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-89721-0.html悟透一个小窍门,你就能举一反三掌握所有编程语言

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 京东面试:如何进行JVM调优?

下一篇: 解锁生产力,七个必备的IntelliJ IDEA插件

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • 三言两语说透设计模式的艺术-单例模式

    三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 之家push系统迭代之路

    之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 破圈是B站头上的紧箍咒

    破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
Top
Baidu
map