跳转至

编程语言概览

主要作者

@tiankaima

本文编写中

Note

现代开发语言种类丰富、内容繁多; 部分语言也存在不少的历史遗留问题,我们无法在一篇文档中涵盖完全。 本文将简要介绍部分编程语言的常用工具、实用技巧等。

阅读本文档后,您应当能够知晓:

  • 语言的适用范围 (为了实现这个任务,我应该选用哪种语言)
  • 语言的特点 (特性、发展历程、社区活跃度等)
  • 如何学习这种语言 (入门文档链接、学习资源等)
  • 各个语言的常用工具 (如何使用这种语言进行开发)

我们也会在文章的末尾给出一些编程风格指南,帮助您更好、更规范地使用这些语言。

Shell Script

适用范围

Shell 也许是与 Linux 打交道 (日常维护、安装等) 最直接的方式。 在此基础上逐渐发展出了需要使用变量、控制流的 Shell Script。

Shell Script 的适用范围:自动化、不涉及核心业务的流程 (例如周期性执行的任务、编译、安装脚本) 等,通过 Shell 可以很方便的调用其他命令、批量处理文件/目录等,但是不适合编写大型程序。

特点

  • 作为脚本语言,Shell Script 只提供基本的变量、控制流、函数等,几乎没有面向对象的特性。
  • Shell Script 适合处理文本、调用系统命令等,但是不适合处理复杂的数据结构。
  • 真正意义上的开箱即用,无需额外安装,因此常用在安装、编译等场景。

参考资料:

作为补充,可以查阅:

  • jq: 用于处理 JSON 数据
  • yq: 用于处理 YAML 数据
Shell tools

一个常见的提升日常效率的办法是: 使用 oh-my-zsh、fzf、tmux 等工具。

Python

适用范围

Python 的适用范围更加广泛, 常用在 Web 开发, 以及各种科学计算、数据处理、机器学习等领域。

特点

  • 社区生态完善,有大量的第三方库,例如 Django、Flask、numpy、pandas 等。
  • 语法简洁,易于学习,适合初学者。
  • 「年长但恰逢新春」, 即没有 C++ 那样的历史包袱,也没有新型语言那样的不稳定性、不成熟性。
  • 类型检查不严格,但是也有完整的类型检查工具 (mypy)。

参考资料:

在掌握基础的工具链、语法之后,可以从下面几个方面进一步学习:

在这些过程中,Python 语言本身可能不会是一个较大的障碍,但是安装、配置等方面可能存在一点障碍,以下是一些常见的问题,我们提前整理在这里:

  • Python 3.12 importlib: 导致了部分库历史版本的兼容问题 (例如 numpy~=1.23), 如果需要对应包的历史版本,可能需要降级 Python (或者指定 python310 / 使用 conda 等)
  • Poetry Pytorch: Poetry 与 Pytorch 的兼容问题,可能需要手动安装 Pytorch

Golang

HTML/CSS/JavaScript

适用范围

HTML/CSS/JavaScript 分别负责网页的结构、样式和交互。得益于 NodeJS 等技术的发展,JavaScript 不必受限在浏览器中运行,应用场景更加广泛。

使用场景:Web 开发、跨平台应用开发等。

特点

  • 较完善的社区生态:有大量的库、脚手架、模板等。
  • JavaScript 存在太多语言特性的问题,例如 equality, this 等。

参考资料:

常用工具:

  • 作为 JavaScript 的替代品,TypeScript 提供了静态类型检查、更好的 OOP 支持,范型、装饰器,更好的 ECMAScript 特性支持
    • 伴随着这些特性,一般而言,IDE 支持也更加友好。
    • TypeScript 一般作为 npm 脚手架使用,在编译期转为无类型检查的 JavaScript。
  • SCSS: 一个 CSS 预处理器,提供了变量、嵌套、混合等功能,可以提高 CSS 的可维护性。
  • Webpack: 一个模块打包工具,可以将多个 JavaScript 文件打包成一个文件,提高页面加载速度。

常用框架:

  • 前端开发
    • React: 一个用于构建用户界面的 JavaScript 库
    • Vue: 一套用于构建用户界面的渐进式框架
  • 跨平台应用开发
    • Electron: 使用 Web 技术构建跨平台桌面应用
    • React Native: 使用 React 构建原生应用,主要用于移动端开发

C/C++

适用范围

TBC

特点

TBC

参考资料:

开发指南

Style Guide

TBC

Flame Graph

TBC

IDE

TBC

其他工具

网络抓包

TBC