BlackHoleMax

一个不知名小博客

C语言学习(帕斯卡三角)

关于帕斯卡三角,不做过多论述,可以先查看百度百科以及leetcode。我将演示几种常用方法打印帕斯卡三角。相较于官方题解我会写的更加易懂,便于读者学习。

  1. 解法1,使用数组存储每一列(如果你没有学习过组合数学,这是一种常用解法)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>

    #define MAX 10

    int main() {
    int pascal[MAX][MAX] = {0}; // 初始化二维数组,用于存储帕斯卡三角的每一行
    int rows, i, j;

    printf("Enter the number of rows: ");
    scanf("%d", &rows);

    // 计算并存储帕斯卡三角的每一行
    for (i = 0; i < rows; i++) {
    pascal[i][0] = 1; // 每行的第一个数是1
    pascal[i][i] = 1; // 每行的最后一个数是1

    for (j = 1; j < i; j++) {
    pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]; // 每个数是上一行相邻两数之和
    }
    }

    // 打印帕斯卡三角
    for (i = 0; i < rows; i++) {
    // 打印前导空格,使三角形居中
    for (j = 0; j < rows - i; j++) {
    printf(" ");
    }
    // 打印每行的数字
    for (j = 0; j <= i; j++) {
    printf("%4d", pascal[i][j]);
    }
    printf("\n");
    }

    return 0;
    }

    另附leetcode的官方题解:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    int** generate(int numRows, int* returnSize, int** returnColumnSizes) {
    int** c = malloc(numRows * sizeof(int*));
    *returnSize = numRows;
    *returnColumnSizes = malloc(numRows * sizeof(int));
    for (int i = 0; i < numRows; i++) {
    (*returnColumnSizes)[i] = i + 1;
    c[i] = malloc((i + 1) * sizeof(int));
    c[i][0] = c[i][i] = 1;
    for (int j = 1; j < i; j++) {
    // 左上方的数 + 正上方的数
    c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
    }
    }
    return c;
    }
    /* 作者:灵茶山艾府
    链接:https://leetcode.cn/problems/pascals-triangle/solutions/2784222/jian-dan-ti-jian-dan-zuo-pythonjavaccgoj-z596/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 */
  2. 解法2,使用二项式系数公式单独计算每一个值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <stdio.h>

    // 函数声明
    int binomialCoeff(int n, int k);

    int main() {
    int rows, coef;

    // 获取用户输入的行数
    printf("Enter the number of rows: ");
    scanf("%d", &rows);

    // 打印帕斯卡三角形
    for (int i = 0; i < rows; i++) {
    // 打印空格以对齐三角形
    for (int space = 1; space <= rows - i; space++)
    printf(" ");

    // 计算并打印每一行的二项式系数
    for (int j = 0; j <= i; j++) {
    coef = binomialCoeff(i, j);
    printf("%4d", coef);
    }
    printf("\n");
    }

    return 0;
    }

    // 函数定义:计算二项式系数 C(n, k)
    int binomialCoeff(int n, int k) {
    int res = 1;
    if (k > n - k)
    k = n - k;
    for (int i = 0; i < k; ++i) {
    res *= (n - i);
    res /= (i + 1);
    }
    return res;
    }
  3. 解法3,基于解法2,我们也许还可以用递归来写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #include <stdio.h>

    // 函数声明
    void printPascalTriangle(int rows, int row);
    int binomialCoeff(int n, int k);

    int main() {
    int rows;

    // 获取用户输入的行数
    printf("Enter the number of rows: ");
    scanf("%d", &rows);

    // 从第0行开始打印
    printPascalTriangle(rows, 0);

    return 0;
    }

    // 使用递归打印帕斯卡三角形
    void printPascalTriangle(int rows, int row) {
    // 递归的基本情况:当行数超过输入的行数时停止
    if (row >= rows)
    return;

    // 打印空格以对齐三角形
    for (int space = 0; space < rows - row - 1; space++) {
    printf(" ");
    }

    // 计算并打印每一行的二项式系数
    for (int j = 0; j <= row; j++) {
    printf("%4d", binomialCoeff(row, j));
    }
    printf("\n");

    // 递归打印下一行
    printPascalTriangle(rows, row + 1);
    }

    // 函数定义:计算二项式系数 C(n, k)
    int binomialCoeff(int n, int k) {
    int res = 1;
    if (k > n - k)
    k = n - k;
    for (int i = 0; i < k; ++i) {
    res *= (n - i);
    res /= (i + 1);
    }
    return res;
    }

C语言学习(long和char强制类型转换)

在不同的计算机架构中,数据的存储方式可能不同。大端(Big-endian)和小端(Little-endian)是两种常见的字节序。在大端系统中,数据的高位字节存储在内存的低地址端,在小端系统中,数据的低位字节存储在内存的低地址端。由于long类型通常占用4字节(32位,linux64下占用八字节,不影响本文通用性),而char类型占用1字节(8位),在强制转换时,只有long的最低8位会被转换为char。这意味着除了最低8位之外的其他位将被丢弃。如果long类型的值是负数,那么在转换为char时,符号位会被扩展。在大多数情况下,这会导致char类型的值变成一个负数,但由于char类型通常以无符号数处理,所以这个负数会被解释为一个正数。

示例如何将long类型转换为char类型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

int main() {
long l = 0x12345678L; // 一个示例的long值
char c;

// 强制类型转换,只取l的最低8位
c = (char)l;

// 打印结果
printf("The long value: 0x%lX\n", l); // long十六进制输出
printf("The char value: 0x%X\n",
c); // 格式化char打印x,在 ASCII 编码中,字符 x 的十进制值是
// 120,十六进制值是 0x78,在小端系统中的最低字节就是0x78
printf("The char(char) value: %c\n",
c); // 强转后的char格式化输出,即十六进制数0x78的ASCII编码
printf("The char(int) value: %d\n",
c); // 因为 128 超出了 char 类型的最大值 127。在这种情况下,128
// 会被解释为 -128
return 0;
}

输出:

1
2
3
4
The long value: 0x12345678
The char value: 0x78
The char(char) value: x
The char(int) value: 120

在这个例子中,long类型的值0x12345678L只有最低8位0x78被转换为char类型。如果long是负数,那么转换的结果将取决于编译器如何处理符号扩展。这种转换可能会导致数据丢失,因此在实际编程中,如果需要处理大量的数据,应该使用足够大的数据类型来避免丢失重要的信息

十六进制数通常用来表示无符号整数。然而,如果你想要表示一个负数,你需要使用一个有符号的整数类型,比如intlong。在C语言中,负数通常使用二进制补码形式来表示。在十六进制中表示负数时,你通常会看到一种表示方法,即在十六进制数前加上负号(-)来表示它是负数。但是,这并不是一个真正的十六进制表示,因为十六进制数本身并不包含符号信息。符号是由变量的类型和上下文决定的。

例如,如果你有一个int类型的变量,并且你想要给它赋一个十六进制表示的负数值,你可以这样做:

1
2
3
4
5
6
7
#include <stdio.h>

int main() {
int num = -0x1A3F; // 表示一个负数
printf("The value of num in decimal: %d\n", num);
return 0;
}

在这个例子中,-0x1A3F是一个负数,它的值是-0x1A3F的二进制补码表示。printf函数会根据int类型来解释这个值,并打印出它的十进制表示。负数在ASCII编码中没有对应的字符,所以在转换成char类型时会显示乱码。
如果你想要在十六进制中表示一个负数的二进制补码形式,你需要知道这个数的位宽。例如,如果int是32位宽,那么-0x1A3F的二进制补码表示可能是0xFFFFFFFFFFFFE5C1(这个值取决于0x1A3F的二进制表示和整数的位宽)。
在实际编程中,通常不需要手动计算二进制补码形式,因为编译器会自动为你处理这些细节。你只需要使用负号和十六进制数来表示负数即可。

long类型的变量l被初始化为 128,其二进制表示是 10000000。当这个值被强制转换为 char 类型时,由于 char 是有符号的,并且只能表示 -128127 的范围,所以 128 的二进制表示 10000000 被解释为 -128,-128 的二进制表示被符号扩展到 long 类型,结果为 4294967168(十六进制0xFFFFFF80char 类型中 128 的二进制补码表示,符号扩展的意思是,最高位(符号位)的值会被复制到新类型中所有高位上)。

1
printf("The char(long) value: %ld\n", c); // 输出4294967168

反之,因为 0xFFFFFF80 二进制的最高位是 1,所以它表示一个负数。当我们将这个 char 值转换为 long 类型时,符号位(即 1)会被复制到 long 类型的所有高位上,直到填满整个 long 类型的位宽。

1
printf("The char(long) value: %ld\n", (long)c); // 强制类型转换了变量c,输出-128

什么是意识形态国家机器(AIE)呢?

阿尔都塞《意识形态和意识形态国家机器-研究笔记(1970)》节选

​ 一定不能把它们与(镇压性)国家机器混为一谈。别忘了在马克思主义理论中,国家机器(AE)包括政府、行政机关、军队、警察、法庭、监狱等等,它们构成了我今后要称作镇压性国家机器的东西。“镇压性”意味着上述国家机器是“通过暴力发挥功能”的——至少最终会是这样(因为镇压也可以采取非肉体的形式,比如行政压制)。

  我所说的意识形态国家机器是这样一些现实,它们以一些各具特点的、专门化机构的形式呈现在临近的观察者面前。我给这些现实开出了一个经验性的清单,它显然还必需接受仔细的考察、检验、修改和重组。尽管有这种需要包含着的所有保留意见,我们暂时还是可以把下列机构看成是意识形态国家机器(我列举的顺序没有任何特殊的含义):
  ——宗教的AIE(由不同教会构成的制度),
  ——教育的AIE(由不同公立和私立“学校”构成的制度),
  ——家庭AIE,
  ——法律的AIE,
  ——政治的AIE(政治制度,包括不同党派),
  ——工会AIE,
  ——传播AIE(出版、广播、电视等等),
  ——文化的AIE(文学、艺术、体育等等)。 

  我说过,AIE不能与(镇压性)国家机器混为一谈。那么,是什么构成了它们的区别呢?

  第一点,很明显,(镇压性)国家机器只有一个,而意识形态国家机器却有许多。即使我们假定存在着一个由许多AIE构成的统一体,这个统一体也不是直接可以看到的。

  第二点,很明显,统一的(镇压性)国家机器完全属于公共领域;与之相反,绝大部分的意识形态国家机器(它们显然是分散的)是私人领域的组成部分。教会、党派、工会、家庭、某些学校、大多数报纸、各种文化投机事业等等,都是私人性的。

  我们可以暂时不管第一点。但一定会有人对第二点提出疑问,问我凭什么把大部分不具有公共地位而完全只是私人性质的那些机构看成是意识形态国家机器呢?作为一个清醒的马克思主义者,葛兰西早已用一句话堵住了这种反对意见。公私之分是资产阶级法律内部的区分,在资产阶级法律行使“权威”的(从属)领域是有效的。而国家领域避开了这种区别,因为国家“高于法律”:国家是统治阶级的国家,既不是公共的,也不是私人的;相反,国家是公共与私人之间一切区分的前提。从意识形态国家机器出发,我们也可以这样说。它们在“公共”机构还是“私人”机构中得到实现,这并不重要,问题在于它们如何发挥功能。私人机构完全可以作为意识形态国家机器“发挥功能”。对任何一种AIE进行彻底的理性分析,都能证明这一点。

  现在谈一下什么是根本的东西。区分开AIE与(镇压性)国家机器的基本差别是:镇压性国家机器“运用暴力”发挥功能,而意识形态国家机器则“运用意识形态”发挥功能

  我可以修改一下这个区分,把问题说清楚。我应该说,任何国家机器,无论是镇压性的,还是意识形态的,都既运用暴力也运用意识形态发挥功能,但有一个非常重要的区分,使我们绝对不能把意识形态国家机器与(镇压性)国家机器混为一谈。

  这个事实就是,(镇压性)国家机器大量并首要地运用镇压(包括肉体的镇压)来发挥功能,而辅之以意识形态。(根本不存在纯粹的镇压性机器。)例如,军队和警察为了确保它们自身的凝聚力和再生产,也要凭借它们对外宣扬的“价值”,运用意识形态发挥功能。

  以同样的方式,只是必须反过来说,意识形态国家机器就其本身而言大量并首要地运用意识形态发挥功能,但是,即使在最后关头(也只有在最后关头),它们也会辅之以镇压——这种镇压是相当削弱和隐蔽的,甚至是象征性的。(根本不存在纯粹的意识形态机器。)例如,学校和教会就使用适当的处罚、开除、选拔等方法,既“规训”它们的牧人,也“规训”它们的羊群。家庭如此……文化的AIE(尤其是审查制度)等等也是如此。

  (镇压性)国家机器或意识形态国家机器按各自的情况(首要地或辅助性地)运用镇压或意识形态的双重方式 “发挥功能”,这一决定因素可以说明(镇压性)国家机器和意识形态国家机器相互作用所交织成的非常微妙、或明或暗的各种结合形式——这一点还有必要再说吗?日常生活给我们提供了无数这样的例证,但是,如果我们打算再进一步,而不是停留在这种单纯的观察上,就必须对它们进行详细的研究。
  
  不过,这番评论使我们接近于了解到,是什么构成了在表面上极不相同的那些AIE的统一体。如果说AIE大量并首要地运用意识形态发挥功能的话,那么正是这种发挥功能的方式把它们的多样性统一了起来,因为它们赖以发挥功能的意识形态本身,不管如何多样,如何矛盾,事实上总是统一在占统治地位的意识形态底下的,这种占统治地位的意识形态就是“统治阶级”的意识形态。考虑到“统治阶级”通常在事实上会(公开地,或者更多地借助于阶级或阶级的某些部分之间的联盟)掌握国家政权,因而能够任意支配(镇压性)国家机器,我们就应该承认这个统治阶级事实上在意识形态国家机器中同样握有主动权,因为最终总是占统治地位的意识形态在意识形态国家机器里(恰恰是在它内部的矛盾中)获得了实现。当然,在(镇压性)国家机器里运用法律和政令来行事和在意识形态国家机器里通过占统治地位的意识形态这个中介来“行事”,这是非常不同的事情。我们应该仔细研究这种不同——但是,它掩盖不住具有深刻同一性的现实。就我所知,任何一个阶级如果不在掌握政权的同时对意识形态国家机器并在这套机器中行使其领导权的话那么它的政权就不会持久。我只需要一个例子来证明这一点:列宁忧心忡忡地惦念着教育(及其它)意识形态国家机器的革命化,只是为了让已经夺取国家政权的苏维埃无产阶级能够保证未来的无产阶级专政和向社会主义过渡。
  
  后面这点说明使我们可以了解到,意识形态国家机器也许不只是阶级斗争(往往是表现出激烈形式的阶级斗争)的赌注,还是阶级斗争的场所。掌握政权的阶级(或阶级联盟)在AIE中不能像在(镇压性)国家机器中那样轻易地制定法律,这不仅是因为以往那些统治阶级能够在那里长时间地保持牢固的立场,而且也因为被剥削阶级的抵抗能够利用那里的矛盾,能够通过斗争攻克那里的战场,从而在那里找到表现自己的手段和机会。

  我来概括一下自己的论述。

  如果我提出的论点是言之有据的,那么它就可以把我带回经典的马克思主义国家理论,使之在某一方面更加准确。我主张,必须把国家政权(及其被……占有)与国家机器两者区分开来。但我还补充了一点,即国家机器包括两类:一类是代表镇压性国家机器的机构;另一类是代表那些意识形态国家机器的机构。

  但如果真是这样,那么一定会有人提出下列问题,甚至是采用对我的意见进行概括的方式:意识形态国家机器究竟的在什么范围内起作用的?它们的重要性是以什么为基础的?换句话说,这些不运用镇压而运用意识形态发挥功能的意识形态国家机器,它们的“功能”是跟什么相一致的呢?

解读

意识形态国家机器的作用范围和重要性基于阿尔都塞的理论框架,这一框架强调了意识形态在维护阶级统治中的核心作用。根据阿尔都塞的观点,意识形态国家机器不仅包括传统的政治、法律和军事机构,还包括教育、家庭、宗教等社会结构和实践领域。

意识形态国家机器的重要性基于其对个体意识和社会意识的影响能力。阿尔都塞认为,意识形态是一种表象体系,它体现了人们在日常生活中对周围世界的无意识体验,并通过这种体验构建了一个具有理性意识的主体幻觉。这种表象体系不仅为资本主义生产关系的再生产提供了必备条件,而且通过文化霸权理论(也就是那个掌握政权的阶级的霸权),确保了统治阶级的思想和价值观能够在社会中占据主导地位。

意识形态国家机器的功能与维护统治阶级的利益紧密相连。它们通过塑造和传播符合统治阶级利益的意识形态,实现对生产关系的再生产,从而让现有的统治秩序得以延续。这种功能的实现不仅仅依赖于直接的政治压迫或暴力手段,而是更多地依赖于意识形态的力量,即通过教育、媒体、宗教等非直接强制手段影响人们的意识形态和行为模式。

由于在AIE中存在各种阶级意识形态的矛盾,无产阶级的代言人能有机会在AIE中找到自己的机会,从而在意识形态领域进行斗争,其实这一点也就是造就了今天中文互联网的乱象。但在所谓的“公共领域”依然是统治阶级意识形态占据主导地位。

总结

By chatgpt
意识形态国家机器在维护和再生产统治阶级的利益方面发挥着至关重要的作用。它们通过传播和强化特定的意识形态,影响个体和社会的意识,从而在不直接使用暴力的情况下,实现对社会的控制和统治。这一过程不仅涉及到政治、经济领域,也深入到教育、文化、宗教等多个社会生活的层面。

没想到我现在还没完全想出来的东西,阿尔都塞早在几十年前就写了出来,今天的左派真应该学习阿尔都塞,这里再借个图便于学习:

img

也可以看看这位大佬的文章,写的很用心:
https://zhuanlan.zhihu.com/p/665154653

论阶级革命

为什么革命?

一切历史都是阶级斗争的历史,这是一直是我们认为正确的观点。
因此我们可以将革命的发生归于阶级的矛盾,而革命的发生源于一个阶级对于其对立阶级的矛盾不断加深,于是就发生了一场一个阶级要推翻另一个阶级的革命。
我们的社会有时会因为政治的变革而产生政治运动,这些运动表现了人民的诉求,但往往不具备革命性,但是存在推进革命到来之进程的作用。这种矛盾在现代社会常表现于经济层面,如债务的积累,或者物价的上涨导致无产阶级无从消费,等等这样以各种形式爆发的经济危机。因此,在上世纪人们饱受资本主义毒害的时代,一群有志青年发起了革命运动来夺取政权,这些涉及到社会根本结构的革命才是阶级的革命,是社会的革命,是真正的革命。往往不改变社会基本运行的我们都不能称之革命,而只是单纯的政权更替而已,或者说是像中国历史上的权贵阶级的互相更替而已。

归根结底,一切革命都必须是社会的革命,以社会的基本变革为基础;否则便不成其为革命,只有改换政府而已。
——宋庆龄

革命的表现形式

马哲告诉我们物质之间的矛盾都是对立且统一的,这些革命的阶级性也告诉我们这些阶级之间的矛盾是不可调和的。既然理说不通,而暂时占据优势的阶级又掌握暴力武器,那么暂时弱势的阶级也就只好用尽一切手段,就像毛主席说的要团结一切可以团结的力量,同样使用暴力武器发起革命。
也就诞生了毛主席的著名论断——”枪杆子里出革命“。

革命不是请客吃饭,不是做文章,不是绘画绣花,不能那样雅致,那样从容不迫,文质彬彬,那样温良恭俭让。革命是暴动,是一个阶级推翻一个阶级的暴烈的行动。
——《湖南农民运动考察报告》

革命的目的

革命是一个阶级改造世界的运动,今天我们常说的左派被称为激进派,这多少在讽刺试图改变阶级命运的人们,“专家”们总认为他们是理想主义者,其实这也能看作是另一阶级保守势力与之的对立,也因此历史的发展是螺旋式上升的,而不是一蹴而就的。通俗来说,革命的目的就是摧毁旧世界,创造一个更加先进的新世界取而代之。

亲情

引入

如今四、五世同堂那样的大家庭制早已四分五裂,一般家庭多属父母及未成年子女共三、五口人的小家庭制。但是,就连这样简单的家庭模式亦难以久持。
中学作文里常常写到种种父母长辈之情感,却不知今天这种话情感早已随着资本主义的洪流变得一再低落。
那些望子成龙之辈多少受到唯心主义的影响,由于哲学教育的落寞,今天赛里斯的孩子们往往是被这种异化的亲情无时无刻影响着。由此诞生了这些”鸡娃“的家庭,这难道不是有一种威权式的意识形态压迫吗?

怎么样?

曾经的无政府主义者们激进地提出了要消灭家庭,也就是主张消灭国家、消灭家庭、消灭宗教的“三无主义”。这无疑是不符合物质社会的客观发展规律的,尽管这种资本主义下的家庭形态必定被消灭。

别激动着反对我,大多数时候,眼前的亲情还是会带给人一些欣慰的。每每想到父亲和母亲早出晚归的身影也总能感到一些不可思议的情感。其实这也很好理解,这是人类骨子里的东西,这又何尝不是一种美好的情感呢?善待他人,接受自我的存在。

也许你会想到古往今来的那些大义灭亲的故事,这难道可以解释成什么大逆不道吗?无非是一些自我价值实现以及为了得到大他者的认同而牺牲了资本主义社会下逐渐单薄了的亲情而已。这样看来,一众欧洲权贵推崇的自由也就不再那么难以理解了,本质上只是有利于个体的社会竞争力而已。今天丝绸国的权贵者又何尝不是如此呢?给予儿女生活上的一些自由也无非是助长社会竞争力,谋求孩子学习新自由主义之风,便于今后适应欧洲文化而已。当然,在无产阶级家庭,更多的是异化家庭对于独生子女的压迫在今天最为常见。

怎么办?

今天,经过以上论述,也能推断很多孩子正在遭受这样的家庭教育,尽管这样的亲情并不会发生变化,但往往这样的亲情反而会催生更多的意识形态压迫。那么作为知识分子该如何反对这些家庭意识形态包办体系呢?

前阵子,我放假空闲时就喜欢和父亲一起读毛选,也正是我的这些小举动,改变了我的家庭结构。

很久以前,我家的家庭关系还是无比令人感到焦虑的。无论是事业还是教育,都是令当今无产家庭无比头疼的问题。但是如果你真的想摆脱这样家庭威权之暴力,可能只有向家人传播无产阶级的世界观了。

论盲目

这场淘金热绑架了人们,以至于人们沉醉其中,以至于忘记了自己在做什么。
人们不再大谈理想,
人们不断走向虚无,
还有多少色彩可以填充飘渺的人间呢?

写一篇文章,坐下来小歇,尤其是我喜欢的。但是我们又何曾不是盲目的呢?有人执着于支配,有人执着于安逸,有人执着于自由。形而上学的说,人又为什么不是善于选择的呢?我们既生于此又有什么资格说人是趋利避害的生物呢?

的确,人是社会的人,我无数次尝试脱离构成这一切的复杂选择之集合。读了很多书,见了不同的人,回头一看,自己依然困在所谓的“阶级”和“游戏”之中。即使是信仰坚定的共产主义者更甚宗教徒又何曾没有盲目的时候呢?当人与社会之类全都被斩断之时,不妨静下来想想,你怀着的理想为何不是盲目的呢?

没错,也许你的想法与我不谋而合,并不是社会这一意识会将人与之同化,将人变得盲目。或者说,当人从未靠近它的时候,人就是盲目的,当你的生活只是为了生存,那么你有一天会被社会意识所同化。

我写下这篇文章并不是在告诉你要远离这里,反而是想告诉你融入它,但不与之同化。如果你能够一个人静默地思考着,那无疑是很棒的,这可以帮助你远离资本主义的浮躁。将你看过的,感受过的,思考过的,转化为自己的哲学,这就足够了。

哲学的魅力无疑是在于此的。形而上学并没有错,形而上学也是人的逻辑得来的哲学,但是与之相对的唯物辩证法也许才是人认识世界的最好工具。

人们的生活逐渐被蚕食和吞噬的今天,无论是什么阶级的人都有踏入虚无主义者,逐渐失去了思考自我与意识的能力。我想,只有在未来结束这种不公,人们才能真正地脱离人的生物性,转而真正去研究这一意识存在的意义,世界的意义,也许这才是哲学。

当代唯分论,”什么书该读”

可能你很小就听过的,老师说的什么书是该读的,什么书孩子不该读。其实这个问题的问出的前提就是把书籍进行了分类。如同高尔基所说:“书籍是人类进步的阶梯”。书籍使人进步是因为其是科技与文化的载体,更确切的说,书籍中的文字是信息的载体。而非要把信息分个高低,显然是对于文字这一载体的异化。
政圈里总有人会极端的抵触反对派,但他们常常是连他们的著作都未曾涉猎过,而只是顶着自家的社科理论去批判反对派的种种行为。正所谓知识不拒多,如果你不去精读反对派的思想,又怎能找出其中的漏洞加以批判呢?某种意义上,这样的人太过教条和死板了。
总有人说一些书没有任何意义,告诉孩子那些漫画和玩具书没有任何意义,实际上这样只有反效果,培养一个规矩的工具,从而忽略了孩子天生的想象力。到这里,其实我们不仅仅说的是书籍了,更加是电子游戏、二次元文化等等令年轻人痴迷的信息,说到底这些或是故事,或是自我满足的欲望。毕竟我们的社会不会迎来一个乌托邦,他们总是需要一些幻想。
回到“什么书该读”这一问题,因为一切的文字都是由人们撰写的,所以我认为这些信息的本质都是人类,这里的人类不仅仅是种族、文化、哲学,而是人类发展至今的一切的一切。人只要活着就不断地获取信息,繁杂的也好,黑暗的也好,我们都只是不断地接受,与此同时不断地成长。那么我给出的答案是,遇则读,随心而读。一切的信息都是人类的,是人类不断深入自然得出的,尽管你可能会觉得手上的一本和你的学业毫不相干的书显得有些无用,但有时候人不断接受新的信息才会感到充实,大脑获得刺激才会觉得满足,如果你能到这种程度,那一定是你非常喜欢人类,热爱这世间的一切吧。或许我们每天都会获取重复的信息,但从数学角度来说,在“人类”的世界并不存在一个完美的模型,至少不同书籍中的信息以及我们生活的方方面面都不来自抽象世界,而是人们撰写的。
总而言之,这都是多多益善的东西。

农场主与笨驴

从前有一个农场主,他买来许多驴子为自己拉磨。可是这些驴子总是无精打采的样子,拉磨的时候看起来又慢又笨。于是农场主想出了一个办法,他在驴子的头上吊起一根胡萝卜,这样驴子就会控制不了食欲而追着胡萝卜跑起来了。

如此,刚开始的时候,驴子们见到了垂涎已久的胡萝卜,纷纷都不要命似的拉起磨来。但是时间久了,农场主发现,很多驴子发现自己怎么都追不上近在咫尺的胡萝卜,于是又变回了它们原本懒散的状态。于是这位机智的农场主又想出了一个法子:也许只需要给这些懒惰的驴子一点威慑就行了。于是农场主改日就养了一条忠实且凶狠的猎犬来监督这些懒惰的驴子拉磨,倒是很快见了成效,在猎犬的威慑下,没有驴子敢轻易在拉磨时偷闲。可是一个月后,驴子们逐渐发现猎犬也并非那么可怕,反而是这些驴子跺几下蹄子的声势给猎犬吓得不轻。

这下这可令农场主难堪了,想着自己还得靠这些驴子吃上饭呢,这可如何是好。于是农场主只好带上些银两,看看能不能上街讨一些生意来。农场主听闻街上来了一位四处游历的学士,交些银两便能得些锦囊妙计。农场主便向这学士请教了这一问题。

回到农场后,农场主又多养了几条猎犬,告诉它们每天都准备一根胡萝卜 ,并且把这根胡萝卜奖给拉磨最多的那只驴子。

果不其然,这些驴子比原本拉磨效率快多了。

如何成为一名安那其主义者

You believe in authority. I believe in myself.

引入

如题,这很简单,只需要你反对authoritarianism即可。
安那其主义者不像马克思主义者会考虑种种政 治策略和哲学问题,而是考虑如何形成去权威化的集体,往往会是从不同立场上联合起来。事实上,他们也并没有成功。
安那其不是一次革命就可以实现的,它需要的不仅仅是消灭剥削,而是让人类的生产方式到达一个新的高度,再进一步潜移默化地改变原本落后的教育、科技。就连马克思也曾明确指出:“生产力中也包括科学”,“劳动生产力是随着科学和技术的不断进步而不断发展的。”而安那其对于其社会个体的绝对尊重能保持科技创新力的飞速增长,而非当今赛里斯大学里的不断被生产出来用于应试的论文。
安那其主义激进吗?对于剥削者来说是激进的,我们要共享劳动经验,废除私有制,我们要摧毁他们的权威大厦。今天赛里斯孩子因跨不进大学的痛哭身影,在所谓的“劳动法”之下进行“自愿交易的工人”,试图反抗的自由主义者被血腥镇压。这一切会在他们组建的大厦不再可以从人民的口袋中捞到一点好处的时候完全消散。当人们不在相信虚伪的人民企业家和腐朽的官僚主义时,他们做出的一切剥削行径会为他们带来懊悔和谴责。

选读

节选自《无政 府主义手册》

读到这里,你应该对无政府主义社会有个清楚的概念。接下来的挑战便是:如何起而行? 无政府主义之下又分为许多不同但是互相关连的思想体系。比较完整的无政府主义政治理论包括:联邦主义(Federalism)、 互助主义(Mutualism)、个人主义(Individualism)、工团主义(Syndicalism)、无政府共产主义(Anarchist- communism)、无政府女性主义(Anarchist-feminism)以及境遇主义(Situationism)等等。存在于不同无政府主张之间的争论已有好长一段时间,要了解它们分歧则需要另一本介绍性质的小册子。然而,单就无 政府主义目前的任务而言,每个无政府派系却有一个共识。每个派系都认为在现实生活中实践无政府主义是重要的。如果你准备把接下来几页的想法付诸实践,你便是开始实行拥有你独特色彩的无政府主义,而你也成为无政 府主义行动中的一个成员,而新成员─特别是那些深思熟虑 的成员的加入对于行动来说永远是重要的。试着和你的朋友解释什么是无政府主义,多读点无政府主义的书,和其他无政府主义者交谈,是你的当务之急。无政府主义者只有一种:独立思考的无政府主义者

windows平台最好的包管理器:scoop

对比

一个好的包管理器对于一个开发人员的重要性不言而喻,在windows平台上同类产品还有wingetChocolatey

winget是微软官方的包管理器,无国内镜像,使用起来急死个人,直接淘汰。Chocolatey 相比 scoop有gui,脚本数量多于scoop,但是其中不少已经没人维护或者不再更新。scoop安装软件包无须关联注册表,作为完全社区化的包管理器,其基本操作与 Chotolatey 类似,除了官方的仓库还有大量由第三方维护的仓库,其维护似乎完胜前者。

安装

  1. 在 PowerShell 中打开远程权限

    1
    Set-ExecutionPolicy RemoteSigned -scope CurrentUser
  2. 自定义用户(全局)Scoop 安装目录(可选)

    1
    2
    [environment]::setEnvironmentVariable('SCOOP', 'Scoop_Path', 'User')
    $env:SCOOP='Scoop_Path'

    $env:SCOOP_GLOBAL=’GlobalScoop_Path’

1
2
3
4
5
6
7
**个人比较喜欢全扔在D盘,如下:**

```powershell
[environment]::setEnvironmentVariable('SCOOP', 'D:\ScoopApps', 'User')
$env:SCOOP='D:\ScoopApps'
[environment]::setEnvironmentVariable('SCOOP_GLOBAL','D:\ScoopGlobalApps','Machine')
$env:SCOOP_GLOBAL='D:\ScoopGlobalApps'
  1. 官网提供的安装方式(国内无法使用):

    1
    irm get.scoop.sh | iex

    国内镜像:

    1
    2
    3
    iwr -useb https://gitee.com/glsnames/scoop-installer/raw/master/bin/install.ps1 | iex
    scoop config SCOOP_REPO 'https://gitee.com/glsnames/scoop-installer'
    scoop update

基本操作

  1. 添加软件仓库

    1
    scoop bucket add <仓库名称> <仓库地址(可选,之后从该ip获取更新)>
  2. 输入获取官方提供的仓库(按需添加)

    1
    scoop bucket known
  3. 个人力荐的仓库

    1
    2
    3
    4
    main[默认]
    extras
    versions
    nirsoft

    超多国产软件的仓库(如 wechat):

    1
    scoop bucket add dorado https://github.com/chawyehsu/dorado
  4. 软件包推荐

    必装(已安装git可以不选)

    1
    scoop install git 7zip 

    可选

    1
    2
    3
    4
    5
    6
    7
    8
    # 加速下载
    scoop install aria2
    # 如果使用代理可关闭
    scoop config aria2-enabled flase
    # 使用Linux命令行
    scoop install gow
    # 调用管理员权限
    scoop install sudo
  5. 一些其它的操作:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 一键更新所有软件
    scoop update *
    # 搜索
    scoop search <package>
    # 清除所有下载缓存
    scoop cache rm *
    # 删除所有旧版本应用(scoop会保留旧版本的应用)
    scoop cleanup *
    # 查看已安装程序
    scoop list
    # 查看更新
    scoop status
    # 自身诊断
    scoop checkup
0%