5 种强大的编程语言,拓展你的大脑

2025-05-27

5 种强大的编程语言,拓展你的大脑

今年早些时候,我与 Andy Hunt 和 Dave Thomas ( 《实用程序员》的联合作者和《敏捷宣言》的原始签署人)进行了交谈。他们建议(并且过去也曾建议过)每年至少学习一门新的编程语言。

这种做法背后的原因与自我营销甚至语言使用都无关。实际上,学习一门新的编程语言最大的好处在于拓展思维,创建新的神经通路,让你能够以全新独特的视角看待问题。

我编制这份语言列表主要是因为我有兴趣花更多时间学习这些语言,而且它们很好地体现了特定的语言特征和编程思想。

因此,事不宜迟,以下是您应该学习以拓展大脑的语言列表:

1.Ruby

Ruby 语言徽标

Ruby 是为了程序员的幸福而生的。这句话对不同的人可能有不同的含义,但它是我爱上的第一门编程语言。

Ruby 的有趣之处在于它的设计是为了支持面向对象编程。

OOP 是由Alan Kay 博士创建的,他曾经说过:“对我来说,面向对象编程仅仅意味着消息传递、封装和隐藏状态以及所有事物的极端后期绑定。” Ruby 擅长这些东西。

由于 Ruby 本身就对消息发送极其痴迷,因此它为学习真正的面向对象编程提供了绝佳的环境。我推荐 Sandi Metz 的《Ruby 实用面向对象设计》,它能帮助您入门 Ruby 在对象设计和消息发送方面的优势。

Ruby 的另一个令人费解的特性可以说比 OOP 更具争议性。Ruby 拥抱元编程,可以将其宽泛地定义为能够推理并生成其他代码的代码。

虽然有时令人沮丧,但能够通过元编程来操纵程序可能需要在程序员和编程语言之间的关系的思维模型上进行极端的范式转变。

# FizzBuzz in Ruby
# https://github.com/zenware/FizzBuzz/blob/master/ruby.rb

def fizz_buzz(num)
  result = ''
  result += 'Fizz' if (num % 3).zero?
  result += 'Buzz' if (num % 5).zero?
  puts result.empty? ? num : result
end

(1..100).each { |x| fizz_buzz x }
Enter fullscreen mode Exit fullscreen mode

资源:

2. Elixir

Elixir 语言徽标

Elixir 虽然看起来有点像 Ruby,但其实非常不同。它是一种函数式编程语言。

Elixir 是一种语言,它采用了Carl Hewitt 博士提出的Actor 模型。在 Actor 模型中,一切皆为 Actor。

(“万物皆演员”听起来很像“万物皆客体”,但我将这种比较留给学者去做)

学会思考演员是一项具有挑战性的思维练习,它将引导我们以新的视角看待问题。

Elixir 另一个令人费解的特性是它与 Erlang 的关系。Elixir 运行在 Erlang VM(BEAM)上,这意味着大多数 Elixir 开发者最终都必须适应 Erlang。

我很容易跑题,但 Erlang 最有趣的地方(在我看来)在于它在并发方面令人难以置信的强大实力。编写 Elixir 意味着学习并发思考,这项技能可以在多种编程环境中应用。

最后,Elixir 完美地诠释了“模式匹配”这一概念。模式匹配是一项非常强大的函数式语言特性,它能够让你以非常简洁安全的方式与数据交互。模式匹配并非 Elixir 独有,因此,对 Elixir 代码中模式匹配的扎实理解,将能够轻松地应用于其他语言和问题。

# FizzBuzz in Elixir
# https://github.com/zenware/FizzBuzz/blob/master/elixir.exs

fizzbuzz = fn n ->
  cond do
    rem(n, 15)== 0 -> "FizzBuzz"
    rem(n, 3) == 0 -> "Fizz"
    rem(n, 5) == 0 -> "Buzz"
    true           -> to_string n
  end
end

Enum.each 1..100, &IO.puts(fizzbuzz.(&1))
Enter fullscreen mode Exit fullscreen mode

资源:

3. Rust

Rust 语言徽标

Rust 是一种新兴的系统语言。这意味着它特别适合用于编写性能至关重要的软件。

Rust 是一种快速的编译型语言,它带来了一些新的想法。它旨在解决编写 C++ 时出现的许多内存安全问题,而 C++ 经常用于解决类似的系统编程问题。

在 Rust 中,您可以学习编写与硬件直接交互的低级代码,可以学习并发性,可以学习几个不同的范例,并且可以相对安全地学习所有这些。

Rust 语言最吸引人的地方之一是,它向普通人开放了一个问题空间,这个问题空间通常与那些因其缺陷和神秘特性而臭名昭著的语言有关。

学习 Rust 迫使你了解运行代码的机器,而不会迫使你担心已解决的问题。

Rust 中另一个能够拓展大脑的功能是宏。宏是一种元编程形式,它使开发人员能够编写更少的代码,并在方便时降低代码的针对性。需要注意的是,宏的推理难度较大,因此它可以帮助您从不同的视角来理解 Ruby 等语言中的元编程。

// FizzBuzz in Rust
// https://github.com/zenware/FizzBuzz/blob/master/rust.rs

fn fizzbuzz(i: u8) {
  if i % 15 == 0 {
    println!("FizzBuzz");
  } else if i % 3 == 0 {
    println!("Fizz");
  } else if i % 5 == 0 {
    println!("Buzz");
  } else {
    println!("{}", i.to_string());
  }
}

fn main() {
  for i in 1..101 {
    fizzbuzz(i);
  }
}
Enter fullscreen mode Exit fullscreen mode

资源:

4. TypeScript

TypeScript 徽标

你可能会说 TypeScript 不是一门语言;它是一门语言的“超集”。没关系。它仍然在我的清单上。

对于那些不熟悉 TypeScript 的人来说(考虑到它的流行程度,这确实有点难理解),TypeScript 是一种直接编译为 JavaScript 的语言。它为 JavaScript 语言添加了一些额外的功能,但感觉仍然像 JavaScript。

TypeScript 的奇思妙想源于其可采用的渐进式方法以及对静态类型的关注。如果您像我一样,拥有 Python、Ruby 或 PHP 等 Web 语言的背景,那么静态类型通常是一个陌生的概念。然而,TypeScript 可以以一种友好的方式让您了解这一便捷的语言特性。

学习 TypeScript 将加深您对 JavaScript 生态系统的理解,让您对 JavaScript 的未来有清晰的认识,并向您介绍静态类型的好处。

// FizzBuzz in TypeScript
// https://github.com/zenware/FizzBuzz/blob/master/typescript.ts

function fizzbuzz(num: number): string | number {
  if (num % 15 === 0) return 'FizzBuzz';
  if (num % 5 === 0) return 'Buzz';
  if (num % 3 === 0) return 'Fizz';
  return num;
}

for (let i: number = 1; i <= 100; i++) console.log(fizzbuzz(i));
Enter fullscreen mode Exit fullscreen mode

资源:

5. Haskell

Haskell 徽标

Haskell 是这份榜单上最深奥的语言。它有着崇高的目标和理想,非常适合挑战你的大脑。

Haskell 被描述为“纯函数式”,这意味着状态在这门编程语言中是完全不可变的。学习如何使用完全不可变的状态迫使你开发一种完全不同的数据处理方法。

使用 Haskell 将会对 lambda 演算产生一些理解,这与所有函数式编程都相关。

许多使用 Haskell 的开发者也表示,阅读 Haskell 时,其含义和目的都非常清晰。虽然这很主观,但 Haskell 语言本身倾向于生成非常清晰的代码,而且在很多情况下,代码非常直观。没有人会对过于明显的代码感到不满。毫不讽刺的是,Haskell 代码通常非常简洁。

Haskell 中最具挑战性的概念之一是 Monad。Monad 允许开发人员避免编写多余的代码,并将多个计算串联在一起。Haskell 文档经常将 Monad 描述为“一种将计算组合起来以产生更复杂计算的策略”。

Monad 并非完全是 Haskell 独有的,但 Haskell 被认为是一种可以很好地实现 Monad 的语言。

-- FizzBuzz in Haskell
-- https://github.com/zenware/FizzBuzz/blob/master/haskell.hs

module Main where

fizzbuzz :: Int -> String
fizzbuzz x
    | x `mod` 15 == 0 = "FizzBuzz"
    | x `mod` 3  == 0 = "Fizz"
    | x `mod` 5  == 0 = "Buzz"
    | otherwise       = show x

main = mapM (putStrLn . fizzbuzz) [1..100]
Enter fullscreen mode Exit fullscreen mode

资源:

虽然编程语言只是工具,我们不应该责怪或赞扬工具的使用者,但不同的工具确实可以解锁新的技术。

通过接触新工具及其支持的技术,您可以成为一名更加全面、更具创造力的工程师。如果您足够好奇且富有冒险精神,您甚至可能会发现一些可以移植到您首选语言中的语言特性和编程范式。

我很想知道这份清单是否激发了你去研究这五种语言中的一种,或者你认为我遗漏了哪一种!🤠

文章来源:https://dev.to/jacobherrington/5-programming-languages-to-stretch-your-brain-mmg
PREV
7 个很棒的 Heroku 替代品
NEXT
Resources that every developer should know.