《作战篇》的精髓在于:真正的胜利不仅是击败对手,更是以最小的代价实现目标。这一思想至今在军事、商业、政治领域仍有深远影响。
原文
孙子曰:凡用兵之法,驰车千驷,革车千乘,带甲十万,千里馈粮。则内外之费,宾客之用,胶漆之材,车甲之奉,日费千金,然后十万之师举矣。
其用战也胜,久则钝兵挫锐,攻城则力屈,久暴师则国用不足。夫钝兵挫锐,屈力殚货,则诸侯乘其弊而起,虽有智者不能善其后矣。故兵闻拙速,未睹巧之久也。夫兵久而国利者,未之有也。故不尽知用兵之害者,则不能尽知用兵之利也。
善用兵者,役不再籍,粮不三载,取用于国,因粮于敌,故军食可足也。国之贫于师者远输,远输则百姓贫;近师者贵卖,贵卖则百姓财竭,财竭则急于丘役。力屈、财殚,中原、内虚于家,百姓之费,十去其七;公家之费,破军罢马,甲胄矢弓,戟盾矛橹,丘牛大车,十去其六。故智将务食于敌,食敌一钟,当吾二十钟;萁秆一石,当吾二十石。
故杀敌者,怒也;取敌之利者,货也。车战得车十乘以上,赏其先得者而更其旌旗。车杂而乘之,卒善而养之,是谓胜敌而益强。
故兵贵胜,不贵久。故知兵之将,民之司命。国家安危之主也。
译文
孙子说:要兴兵作战,需做的物资准备有,轻车千辆,重车千辆,全副武装的士兵十万,并向千里之外运送粮食。那么前后方的军内外开支,招待使节、策士的用度,用于武器维修的胶漆等材料费用,保养战车、甲胄的支出等,每天要消耗千金。按照这样的标准准备之后,十万大军才可出发上战场。
军队作战就要求速胜,如果拖得很久则军队必然疲惫,挫失锐气。一旦攻城,则兵力将耗尽,长期在外作战还必然导致国家财用不足。如果军队因久战疲惫不堪,锐气受挫,军事实力耗尽,国内物资枯竭,其他诸侯必定趁火打劫。这样,即使足智多谋之士也无良策来挽救危亡了。所以,在实际作战中,只听说将领缺少高招难以速胜,却没有见过指挥高明巧于持久作战的。战争旷日持久而有利于国家的事,从来没有过。所以,不能详尽地了解用兵的害处,就不能全面地了解用兵的益处。
善于用兵的人,不用再次征集兵员,不用多次运送军粮。武器装备由国内供应,从敌人那里设法夺取粮食,这样军队的粮草就可以充足了。国家之所以因作战而贫困,是由于军队远征,不得不进行长途运输。长途运输必然导致百姓贫穷。驻军附近处物价必然飞涨,物价飞涨,必然导致物资枯竭,物财枯竭,赋税和劳役必然加重。在战场上,军力耗尽,在国内财源枯竭,百姓私家财产损耗十分之七。公家的财产,由于车辆破损,马匹疲惫,盔甲、弓箭、矛戟、盾牌、牛车的损失,而耗去十分之六。所以明智的将军,一定要在敌国解决粮草,从敌国搞到一钟的粮食,就相当于从本国启运时的二十钟,在当地取得饲料一石,相当于从本国启运时的二十石。
要使士兵拼死杀敌,就必须怒之,激励之。要使士兵勇于夺取敌方的军需物资,就必须以缴获的财物作奖赏。所以,在车战中,抢夺十辆车以上的,就奖赏最先抢得战车的。而夺得的战车,要立即换上我方的旗帜,把抢得的战车编入我方车队。要善待俘虏,使他们有归顺之心。这就是战胜敌人而使自己越发强大的方法。
所以,作战最重要、最有利的是速胜,最不宜的是旷日持久。真正懂得用兵之道、深知用兵利害的将帅,掌握着民众的生死,主宰着国家的安危。
核心思想总结
-
作战的前提:
-
军事方面:要集结重兵,调集武器装备。
-
后勤方面:兵马未动粮草先行,千里迢迢运送粮草,以保障后勤补给。
-
财政方面:要准备巨额的经费开支,军队的衣食住行、装备维护、招待外交使节都需要花大量的钱财。
-
-
作战的原则:
-
速战速胜:指挥军队作战最重要的是速战速胜,长久用兵就会导致士兵疲惫、士气受挫,攻打坚固的城池就会耗尽力量,长久用兵会导致国家费用不足。
-
避免久拖不决:旷日持久的战争将导致劳民伤财、损兵折将,只会对国家造成伤害。
-
-
因粮于敌的原则:
-
含义:所谓因粮于敌,就是要以战养战,通过在战争中去掠夺敌人的粮草,来保障自己粮草补给的充足。
-
原因:战争会严重影响国家的经济生产,粮草物资的调运需要消耗大量的人力物力财力,国家的经济会因为粮草的调运而受到破坏。而从敌国获取粮草,能够减轻本国的经济负担,减少国家人力物力财力的输出。
-
意义:优秀的将领重视从敌国获取粮草,掠夺敌国的粮草,取食于敌,能够减轻本国的经济负担,保证了国家人民经济生产生活秩序的稳定。
-
-
胜敌益强的用兵原则:
-
鼓舞士气:作战之前要鼓舞士气,激发士兵们的愤怒情绪,这样就能使他们同仇敌忾,在战场上奋勇杀敌。
-
财物奖励:用财物的奖励鼓励士兵们去勇于夺取敌人的武器装备和军需物资。
-
善用战俘:作战胜利后,将缴获的敌军武器装备分配到自己军队,将缴获的敌军军需辎重收为己用,将俘获的敌军人员进行善待教育后,编入自己的军队。
-
-
作战原则的重要性:
-
将领身系国家民族的安危,懂得速战速胜的重要性,遵循这种原则去指导战争,就将会对国家人民有利,使国家人民安稳无忧。
-
如果不遵循这种原则去指导战争,使战争陷入久拖不决的境地,最后劳民伤财、损兵折将,也就将国家人民置于危难之中。
-
经济视角看战争:孙子首次将战争与经济成本挂钩,指出持久战对国家根基的破坏性。
效率至上:以最小代价换取最大胜利,避免资源浪费,体现中国古代“全胜”战略思想。
心理与激励:重视士气(“怒”)和利益驱动(“货”),与现代管理学中的激励机制相通。
资源整合:“因粮于敌”不仅是战术,更是一种资源整合思维,适用于现代商业竞争。
现代启示
-
商业竞争:快速抢占市场,避免陷入长期消耗战(如价格战)。
-
项目管理:控制时间与成本,警惕“拖延成本”。
-
危机处理:速决优于拖延,避免问题扩大化。
- 庙算:春秋战国时期战役之前在庙堂之上进行的战略筹划,类似于今天讨论战斗方略的作战会议。
- 驰车千驷:驰车指轻型战车;驷,古时战车驾四马,所以以驷为单位,这里表示轻车千辆。
- 革车千乘:革车即重型战车;乘,辆的意思,指重车千辆。
- 带甲:指披带铠甲的士兵。
- 馈粮:指运送粮草。
- 宾客:指交战双方往来使节和游说之士。
- 胶漆之材:泛指制造和修缮武器装备的材料。
- 车甲之奉:指行军途中维修车甲等的费用。
- 举:出动的意思。
- 钝兵挫锐:军队疲惫,锐气受挫。钝,使…… 疲惫;挫,使…… 受挫123。
- 屈:折损、耗尽的意思。
- 国用:国家的开支。
- 殚货:货物耗尽。殚,尽、耗尽。
- 弊:疲乏、困顿的意思。
- 善其后:妥善地收拾好残局。
- 拙速:指即使计谋不足但靠神速取胜。
- 役不再籍:役,兵役;籍,登记。意思是兵员不再次征调12。
- 粮不三载:粮食不多次转运12。
- 取用于国:各项军用物资从国内征取12。
- 因粮于敌:粮草补给在敌国就地解决12。
- 丘役:赋税和徭役12。
- 钟:古代的容量单位,六斛四斗为一钟12。
- 萁秆:指豆秸、禾秆等饲养牛马的草料12。
- 石:古代的容量单位,十斗为一石12。
- 货:财物,这里指用财物奖赏士卒12。
代码模拟
用代码模拟一场作战,作战过程中会消耗兵力、粮草等资源,并且会根据作战时间产生相应的成本。可以通过设定初始资源、作战时间等参数,来观察作战结束后的资源剩余情况。
#include <stdio.h>
// 定义作战结构体
typedef struct {
int troops; // 兵力
int food; // 粮草
int money; // 资金
} Battle;
// 初始化作战资源
void init_battle(Battle *battle, int troops, int food, int money) {
battle->troops = troops;
battle->food = food;
battle->money = money;
}
// 模拟作战消耗
void conduct_battle(Battle *battle, int days) {
// 每天消耗的兵力、粮草和资金
int daily_troop_loss = 10;
int daily_food_consumption = 50;
int daily_money_cost = 200;
// 计算总消耗
int total_troop_loss = daily_troop_loss * days;
int total_food_consumption = daily_food_consumption * days;
int total_money_cost = daily_money_cost * days;
// 更新资源
battle->troops -= total_troop_loss;
if (battle->troops < 0) {
battle->troops = 0;
}
battle->food -= total_food_consumption;
if (battle->food < 0) {
battle->food = 0;
}
battle->money -= total_money_cost;
if (battle->money < 0) {
battle->money = 0;
}
}
// 打印作战资源情况
void print_battle_status(Battle *battle) {
printf("剩余兵力: %d\n", battle->troops);
printf("剩余粮草: %d\n", battle->food);
printf("剩余资金: %d\n", battle->money);
}
int main() {
Battle battle;
// 初始化作战资源
init_battle(&battle, 1000, 5000, 10000);
// 设定作战天数
int days = 10;
printf("作战前资源情况:\n");
print_battle_status(&battle);
// 进行作战
conduct_battle(&battle, days);
printf("\n作战 %d 天后资源情况:\n", days);
print_battle_status(&battle);
return 0;
}