编程语言是程序员的“母语”
对于初级程序员来说,编程语言不仅仅是工具,更是一种思维方式。就像人类通过语言表达思想,程序员通过编程语言将逻辑转化为机器可执行的指令。
本文不是教你“学哪门语言”,而是带你深入理解编程语言的核心概念、通用思维和实战技巧。无论你使用 JavaScript、Python、Java 还是 Go,这些底层知识都是通用的,掌握了它们,切换语言只是语法问题。
一、变量与数据类型:程序世界的“基本粒子”
1.1 什么是变量?
变量是计算机内存中存储数据的“容器”。你可以把它想象成一个带有标签的盒子,盒子里可以放不同类型的东西。
// JavaScript 示例
let age = 25; // 数值
let name = "张三"; // 字符串
let isStudent = true; // 布尔值
let hobbies = ["阅读", "游泳"]; // 数组
let person = { // 对象
name: "张三",
age: 25
};
# Python 示例
age = 25 # 动态类型,无需声明
name = "张三"
is_student = True
hobbies = ["阅读", "游泳"]
person = {"name": "张三", "age": 25}
// Java 示例(静态类型)
int age = 25;
String name = "张三";
boolean isStudent = true;
String[] hobbies = {"阅读", "游泳"};
// 需要定义类来创建对象
1.2 数据类型分类
1.3 类型转换:让不同类型协同工作
// JavaScript 类型转换
let strNum = "123";
let num = Number(strNum); // 字符串转数字:123
let bool = Boolean(strNum); // 任何非空字符串转布尔:true
let num2 = 456;
let str = String(num2); // 数字转字符串:"456"
// 隐式转换(容易踩坑)
console.log("5" + 3); // "53" - 字符串拼接优先
console.log("5" - 3); // 2 - 减法会尝试转数字
# Python 类型转换
str_num = "123"
num = int(str_num) # 转整数:123
float_num = float(str_num) # 转浮点数:123.0
bool_val = bool(str_num) # 转布尔:True(空字符串为 False)
# 安全的类型转换
def safe_int(value, default=0):
try:
return int(value)
except ValueError:
return default
print(safe_int("abc")) # 0,不会崩溃
1.4 变量命名规范(重要!)
核心原则:
✅ 名称要能表达含义:age 而非 a
✅ 使用完整的单词:getUserById 而非 gUbi
❌ 避免无意义的缩写:tmp1, data2
❌ 避免拼音或中文:xingming 而非 userName
二、控制流:程序的“交通指挥”
2.1 条件判断:让程序做决策
条件判断是程序智能的核心,它让代码能够根据不同情况执行不同路径。
if-else 基础
// JavaScript
let score = 85;
if (score >= 90) {
console.log("优秀");
} else if (score >= 80) {
console.log("良好");
} else if (score >= 60) {
console.log("及格");
} else {
console.log("不及格");
}
执行原理:
从上到下依次判断条件
遇到第一个 true 的条件,执行对应代码块
执行完后跳过所有剩余的 else if 和 else
如果所有条件都是 false,执行 else 块
switch-case(多分支选择)
# Python 3.10+ 的 match-case(类似 switch)
def get_day_type(day):
match day:
case "Saturday" | "Sunday":
return "周末"
case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday":
return "工作日"
case _: # 默认情况
return "无效输入"
// JavaScript switch
function getDayType(day) {
switch(day) {
case "Saturday":
case "Sunday":
return "周末";
case "Monday":
case "Tuesday":
case "Wednesday":
case "Thursday":
case "Friday":
return "工作日";
default:
return "无效输入";
}
}
switch vs if-else 对比:
三元运算符:简洁的条件表达式
// 基本语法:条件 ? 真值 : 假值
let status = age >= 18 ? "成年" : "未成年";
// 嵌套使用(不推荐过于复杂)
let type = score >= 90 ? "A" : score >= 80 ? "B" : score >= 60 ? "C" : "D";
# Python 的三元表达式不同
status = "成年" if age >= 18 else "未成年"
2.2 循环:让程序重复执行
循环是处理批量数据和重复任务的基础。
for 循环
// Java 经典 for 循环
for (int i = 0; i < 10; i++) {
System.out.println("第 " + i + " 次循环");
}
语法解析:
int i = 0:初始化(执行一次)
i < 10:循环条件(每次迭代前检查)
i++:更新(每次迭代后执行)
// JavaScript for...of(遍历数组值)
const fruits = ["苹果", "香蕉", "橙子"];
for (const fruit of fruits) {
console.log(fruit);
}
// JavaScript for...in(遍历对象属性)
const person = { name: "张三", age: 25 };
for (const key in person) {
console.log(key + ": " + person[key]);
}
# Python for 循环(最优雅)
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
# 带索引的遍历
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
# range 生成数字序列
for i in range(10): # 0-9
print(i)
for i in range(5, 10): # 5-9
print(i)
for i in range(0, 10, 2): # 0,2,4,6,8(步长2)
print(i)
while 循环
// while 循环:条件为 true 时持续执行
let count = 0;
while (count < 5) {
console.log("count: " + count);
count++; // 忘记增加会导致无限循环!
}
// do-while:至少执行一次
let i = 10;
do {
console.log("至少执行一次:" + i);
i++;
} while (i < 5);
while vs for 选择指南:
知道确切循环次数 → 使用 for
不知道次数,依赖某个条件 → 使用 while
必须至少执行一次 → 使用 do-while
循环控制关键字
// break:立即退出循环
for (let i = 0; i < 10; i++) {
if (i === 5) {
break; // i=5 时退出,只输出 0-4
}
console.log(i);
}
// continue:跳过当前迭代,继续下一次
for (let i = 0; i < 5; i++) {
if (i === 2) {
continue; // 跳过 i=2,输出 0,1,3,4
}
console.log(i);
}
实战案例:查找素数
def is_prime(n):
"""判断一个数是否为素数"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 找出 1-100 之间的所有素数
primes = []
for num in range(1, 101):
if is_prime(num):
primes.append(num)
print(primes) # [2,3,5,7,11,...]