【ChatGPT 辅助编程】借助 AI 提高学习效率

这几天好几个人问我编程导航有没有 AIGC 相关的内容,AIGC 现在是真火,咱们星球当下确实没什么相关内容,我前段时间在打磨自己的小产品,目前卖了快 3000 单,有部分就是讲 AIGC 应用的。


我想了想,直接发出来得了,这样以后和想进编程导航的读者解释起来也容易,降低我拉新的时间成本。


话不多说,进入正题,文章分为以下 9 部分,内容有点多,文章也肯定存在不足,欢迎大佬们提建议:


  1. ChatGPT 辅助编程 1 | 核心要素
  2. ChatGPT 辅助编程 2 | 如何帮你学编程
  3. ChatGPT 辅助编程 3 | 如何纠错
  4. ChatGPT 辅助编程 4 | 开发工具怎么选
  5. ChatGPT 辅助编程 5 | 解惑具体知识
  6. ChatGPT 辅助编程 6 | 提高编程技巧
  7. ChatGPT 辅助编程 7 | 类比学习编程
  8. ChatGPT 辅助编程 8 | demo 实战
  9. ChatGPT 辅助编程 9 | 贪吃蛇小项目


以下内容,我会以C语言编程为例,来教大家底层的辅助学习方法。


语言是死的,方法是活的,你掌握这个学习方法,同理到 C++、Java、Python、前端,甚至数据结构都适用。


一、核心要素


如果你看过前面的写作案例,你一定也能理解编程核心。


因为借助 GPT 辅助写作或者辅助编程,本质都是在辅助你提高某项技能,什么意思呢?


意思就是借助 GPT 辅助编程的核心一样是要能提出好问题。


GPT 是工具,不是人,它理解不了需求不清晰的指令,理解不了用户心理,这些都需要【人】,也就是【你】来实现。


举个例子:程序员在写代码中都会遇到各种难度不一的问题,想找个交流群。


于是便去微信、QQ搜索相对应的交流群。例如:C语言聊、Java群。


加群之后不同的人有独属于自己的提问方法:


甲:有人在么?

乙:有大佬在么,想问个题?

丙:有人做过什么项目么,想取取经?

丁:如何快速入门C语言?


前三种回复:不在,在了也不回你,回你也不是这个问题。


第四种回复:群里开始讨论怎么入门,最终大家一致同意:放弃学C语言是最快的入门方法。


所以说理解了嘛,当你问人的问题描述不清的时候都没人理你,你问 GPT 它能知道嘛。


那么如何正确的提问呢?


先说一点,也是最重要的:你要向 GPT 说清楚要用什么语言来实现。


这点很重要,前两天我直播用文心一言来回答问题,很多观众上来就是这个题怎么做,那个题怎么做。


文心一言用 Python 给出源码后,对方还理直气壮的问,为什么文心一言用了 Python ,没有用 Java。


拜托啊,你提问的时候就没告诉文心一言要用什么语言来实现。


二、如何帮你学编程


在利用 ChatGPT 辅助学C语言之前,你得先知道,它到底能辅助你干什么。


小林:作为一个语言模型,你能给C语言初学者提供什么帮助,请罗列具体的点。


ChatGPT:作为一个语言模型,我可以为C语言初学者提供以下帮助:


1、提供C语言的基础知识和语法介绍,包括数据类型、控制语句、函数、指针等等。


2、解答C语言相关问题,例如编译错误、运行时错误、逻辑错误等等。


3、给出一些C语言编程的例子和实践,帮助初学者更好地理解和掌握C语言编程技巧。


4、推荐一些C语言编程的学习资源,例如书籍、网站、视频等等,帮助初学者更系统地学习C语言。


5、提供一些常用的C语言开发工具和环境的介绍,例如IDE、编辑器、调试器等等,帮助初学者更高效地开发C语言程序。


总之,我可以根据初学者的需求和问题,提供相应的帮助和支持,帮助他们更好地学习和掌握C语言编程技能。


既然 ChatGPT 给了 5 点回复,后面小林会根据这 5 点回复,来给大家由浅到深展示,如何利用 ChatGPT 来辅助学习C语言。


三、如何纠错


纠错是很多人关心的问题,因为对于初学者来说,问的通常是非常基础的问题,问老师吧,又不敢,觉得自己的问题太 low,自己找又找不到人问。


去百度搜索,也不知道如何下手搜。


今天这篇就来讲一下如何利用 ChatGPT 纠错你写的C语言代码。


先来一个小案例。


小林:请帮我检查一下,这个C语言代码哪里出错了,为什么编译不成功?


#include <stdio.h>
int main()
{
printf("hello 小林")
}


ChatGPT :你的代码缺少了结束符号,应该加上分号";"。


以下是修改后的代码:


#include <stdio.h>
int main()
{
printf("hello 小林");
return 0;
}


同时,在main函数中,最好添加一个return 0;语句以明确表示程序正常结束。


上面这个案例是代码短,如果代码非常长,你去复制粘贴有点不现实,那应该怎么办呢?


很简单呀,先在自己的编译器上运行一下,然后将报错提示复制出来给到 ChatGPT 。


举个例子:还是刚刚的代码,这次我不贴代码,我贴报错提示。


小林:我在写C语言代码的过程中,遇到了这样的报错,是什么原因导致的呢?


[Error] expected ';' before '}' token


ChatGPT :这个错误通常是由于缺少分号引起的,C语言的语法比较严格,每个语句都必须以分号结尾。


解决方法是检查代码中是否有缺少分号的情况,特别是在函数定义、结构体定义、枚举定义等地方。


另外,也要检查是否有多余的括号或者缺少括号的情况,这些也可能会导致类似的错误。


你看,不论直接贴代码,还是贴报错提示,GPT 都是可以辅助你学编程的。


四、开发工具怎么选


这章让 GPT 帮我介绍一些C语言开发工具。


小林:请给我推荐一个最适合初学者的C语言开发工具。


GPT:推荐初学者使用 Dev-C++,它是一个免费、开源的 C/C++ 集成开发环境(IDE),具有易于使用和灵活的特点。它是一个流行的开发工具,尤其是在学习 C/C++ 编程时。


以下是一些 Dev-C++ 的特点:


1、具有易于使用的图形用户界面,适合初学者使用。


2、内置编译器,支持多种编译器,例如 MinGW 和 TDM-GCC。


3、提供了一些有用的工具,例如调试器、代码补全、语法高亮等。


4、支持多种文件格式,例如 .cpp、.h、.c 等。


5、具有插件扩展功能,可以通过插件添加更多的功能。


总之,Dev-C++ 是一个不错的 C/C++ 开发工具,适合初学者使用,但是它已经有些年头了,开发者也已经停止更新和维护。


小林:Dev-C++ 是哪一些出现的?


Dev-C++ 开发工具是由 Bloodshed Software 公司开发的,最早发布于 1998 年。


后来,Bloodshed Software 公司停止了 Dev-C++ 的开发和维护,但是该工具的源代码被转移到了一个名为 Orwell Dev-C++ 的项目中,并由 Orwell 继续开发和维护。


Orwell Dev-C++ 是一个开源的项目,旨在提供一个现代、稳定和易于使用的 C/C++ 开发环境。


小林:如果我现在想用 Dev-C++ ,应该去哪里下载?


GPT:您可以前往以下网站下载 Dev-C++:sourceforge.net


小林:请再给我推荐一些C语言开发工具。


GPT:以下是一些常用的 C 语言开发工具。


1、 Visual Studio Code:一个免费的开源代码编辑器,支持 C 语言开发和调试。


2、Code::Blocks:一个免费的跨平台 C/C++ IDE,支持多种编译器和调试器。


3、Eclipse:一个开源的跨平台 IDE,支持多种编程语言,包括 C 语言。


4、NetBeans:一个免费的跨平台 IDE,支持多种编程语言,包括 C 语言。


5、Atom:一个免费的开源代码编辑器,支持 C 语言开发和调试。


6、Sublime Text:一个免费的文本编辑器,支持 C 语言开发和调试。


7、Turbo C++:一个免费的 Windows 平台 IDE,专门为 C/C++ 开发设计。


8、Visual Studio:一个商业化的 IDE,支持多种编程语言,包括 C 语言。


9、Xcode:一个免费的 IDE,专门为 macOS 和 iOS 开发设计,支持 C 语言。


整体来说,推荐开发工具效果还是不错的,能给初学者推荐开发工具,也能介绍开发工具的背景和创始人。


除此之外,还能给提供其他开发工具,这里有好几个小林都没听过,真的是扩宽了我的认知盲区。


五、解惑具体知识


这章通过具体的基础知识,来给大家演示。


小林:我是一名零基础学生,刚接触C语言,发现好多代码都有 return 0,但是我不知道它有什么作用,请以一名教师的身份,详细介绍一下 return 0 的作用。


GPT:在C语言中,return 0是一个非常常见的语句,它的作用是告诉程序执行完毕并且没有发生错误。这个语句通常出现在main函数的末尾,表示程序正常结束。


当程序执行到main函数的末尾时,操作系统会检查程序的退出状态码,如果状态码为0,则表示程序正常退出,否则表示程序发生了错误或者异常情况。


因此,return 0语句的作用是设置程序的退出状态码为0,告诉操作系统程序正常退出。


在实际编程中,我们可以根据需要设置不同的退出状态码,例如返回错误代码或者其他特定的状态码。但是,在大多数情况下,我们都使用return 0语句来表示程序正常结束。


总之,return 0语句是C语言中非常重要的语句之一,它用于告诉操作系统程序的退出状态码,以便操作系统能够正确地处理程序的退出。


上面这个解释够详细了,小林觉得初学者也是可以看懂的。


继续问其他基础,小林:C语言代码中的 printf 是干什么的,它的语法是什么,如何使用 printf,请以C语言教师的身份,详细解释一下。


GPT:在C语言中,printf是一个常用函数,它的作用是将数据输出到标准输出设备(通常是屏幕)。


printf函数可以输出各种类型的数据,例如字符串、整数、浮点数等等。


printf函数的语法如下:


int printf(const char *format, ...);


其中,format是一个字符串,它指定了输出的格式。字符串中可以包含普通字符和格式控制符,格式控制符用来指定输出的数据类型和格式。


例如,%d表示输出整数,%f表示输出浮点数,%s表示输出字符串等等。


printf函数还可以接受多个参数,每个参数对应一个格式控制符。


例如,如果要输出一个整数和一个字符串,可以这样写:


int num = 10;
char str[] = "hello";
printf("num = %d, str = %s\n", num, str);


在上面的代码中,%d和%s分别对应num和str这两个变量,\n表示换行符。


需要注意的是,printf函数返回值是输出的字符数,也就是输出的字符串的长度。


如果输出失败,返回值为负数。


总之,printf函数是C语言中非常常用的函数,它可以输出各种类型的数据,通过格式控制符可以指定输出的格式,通过多个参数可以输出多个数据。


在实际编程中,printf函数可以帮助我们调试程序、输出结果等等。


GPT 这个回答真的非常详细了,有文字解释,有代码举例,比去百度来的强多了。


继续玩,小林:我现在学到C语言的一维数组了,可是我有点不理解为什么数组的下标要从 0 开始,请以一名C语言教师的身份,给我详细解释一下。


GPT:在C语言中,数组的下标从0开始是一种约定俗成的规定。这个规定源于C语言的设计和实现。


C语言中的数组是一种连续的数据结构,数组的每个元素在内存中都是相邻的。


当我们定义一个数组时,编译器会在内存中为数组分配一段连续的空间,并按照顺序给数组元素编号。


这个编号从0开始,每个元素的编号就是它在数组中的位置。


例如,如果我们定义一个长度为5的整型数组,编译器会为这个数组分配5个整型变量的空间,编号分别为0、1、2、3、4。因此,我们可以通过下标来访问数组中的元素,下标的取值范围是0到数组长度减1。


这种从0开始编号的方式在C语言中被广泛采用,因为它非常直观和方便。


例如,我们可以用a[i]来表示数组a中的第i个元素,这种方式非常直观和自然。


此外,从0开始编号还有一个好处,就是可以和指针运算结合使用。


在C语言中,指针可以看作是数组的下标,指针的偏移量就是数组元素的下标。


因此,从0开始编号可以使指针运算更加方便和自然。


总之,数组的下标从0开始是C语言的一种约定俗成的规定,它源于C语言的设计和实现,也是为了方便和自然。


在实际编程中,我们需要遵守这个规定,以便编写出更加清晰、简洁和高效的代码。


GPT 的这个回复,比小林自己写的文章都要详细多了。


六、辅导编程技巧


小林这些年遇到过最多的情况是,很多学员拿到一道题后,能看懂题目什么意思,但是无从下手,不知道怎么切入。


今天这篇就来写写如何用C语言快速编程。


小林:我现在拿到一道C语言题,能看懂题目的意思,但是不知道怎么下手编程,为什么会出现这种情况?


GPT:这种情况很常见,通常是因为你对某些C语言的概念或者语法不够熟悉,或者对题目的要求没有理解清楚。


小林:能给我一些具体的建议吗?


GPT:当然可以,下面给你一些解决这种情况的建议。


1、理解题目要求


首先要认真阅读题目,理解题目的要求和意图,明确需要编写的程序功能和输出结果。如果有不理解的地方,可以查阅相关资料或者向老师、同学求助。


2、分析问题


在理解题目要求的基础上,需要分析问题,思考如何实现程序功能。可以把问题分解成若干个小问题,逐个解决。可以画图、列表或者写伪代码,帮助自己更好地理解问题。


3、查阅资料


如果遇到不熟悉的C语言概念或者语法,可以查阅相关资料,例如C语言教材、网上教程、编程手册等等。


总之,遇到不知道怎么下手编程的情况,不要慌张,需要认真分析问题,理解题目要求,查阅资料,多进行实践练习,提高自己的编程能力和解决问题的能力。


小林:C语言基础知识,我基本上都知道,就是不会写代码,这是为什么?


GPT:学习C语言的基础知识只是掌握了C语言的语法和概念,但是能否写出代码还需要进行实践练习。


很多初学者在学习C语言时,只是停留在理解概念和语法的层面,没有进行充分的实践练习,导致写代码的能力不够强。


此外,写代码需要一定的思维能力和逻辑思维能力。有些人可能在学习C语言的过程中,没有充分锻炼这些能力,导致写代码的能力不够强。


解决这个问题的方法是多进行实践练习,多写一些小程序、练习题、实验等等,提高自己的编程能力和解决问题的能力。


同时,也要多进行思维训练,提高自己的逻辑思维能力和分析问题的能力。可以通过阅读相关书籍、参加编程培训班、参加编程竞赛等方式来提高自己的编程能力。


小林:请给我一些具体的刷C语言题技巧,我想快速改变这个局面。


GPT:以下是一些刷C语言题的技巧。


1、刷题分类


将题目按照难度、类型等分类,有针对性地进行刷题。可以从简单的题目开始,逐渐提高难度。


2、刷题记录


建立一个刷题记录表,记录每个题目的题目类型、难度、解题思路、时间复杂度、空间复杂度等信息,便于以后查找和复习。


3、多思考实践


在刷题的过程中,要多思考解题思路和算法,多实践编写代码。可以多看看其他人的题解,学习他们的解题思路和算法。


4、考虑边界条件


在编写代码时,要考虑到各种边界条件,例如输入数据的范围、特殊情况等,避免出现错误或程序崩溃。


5、优化代码


在编写代码后,可以进行代码优化,例如使用更高效的算法、减少循环次数、避免重复计算等,提高程序的效率。


6、反复练习


反复练习同一类型的题目,加深对该类型题目的理解和掌握程度。同时,可以多刷一些真实面试题目,提高应对面试的能力。 希望以上技巧能对您有所帮助。


GPT 给的这些建议和刷题技巧非常实用,如果让小林来推荐,也无非是这些内容,想要快速入门C语言,就是刷题。


刚开始看懂代码,能照着敲下来,逐渐不看代码,一边思考一边敲,到后面看到一道题,代码思路直接脑海里就呈现出来。


能到这个阶段,小林认为你已经入门C语言了。


七、类比法学习编程


这章是小林朋友给的启发,朋友提了一个不同视角,这点我之前确实没想到。


小林:你知道C语言 printf 函数吗?


GPT:是的,我知道 C 语言的 printf 函数。printf 函数是 C 语言中常用的输出函数,用于将指定的格式化数据写入标准输出流中。


小林:C语言 printf 我还是有点不理解,你能用生活中我们常见的事,举个例子,让我更直接的理解它的作用吗?


GPT:类比到程序中,printf 函数就是一个可以帮助我们将变量转换为字符串并输出到标准输出流中的工具。


它可以将格式化字符串中的格式化指令和普通字符解析出来,根据指令将变量转换为字符串,并输出到控制台或者文件中。


这个过程类似于我们打印一份文档,只不过是在程序中进行的。


例如,我们可以使用 printf 函数输出一个简单的问候语句:


#include <stdio.h>
int main() {
char* name = "John";
printf("Hello, %s!\n", name);
return 0;

}


这段代码的输出结果就是:`Hello, John!`。


可以看到,我们使用了 `%s` 格式化指令将字符串变量 `name` 转换为字符串,并输出到控制台中。


小林:你知道C语言 scanf 函数吗?


GPT:是的,我知道 C 语言中的 scanf 函数。scanf 函数是 C 语言中常用的输入函数,用于从标准输入流 stdin 中读取格式化数据。


小林:scanf 还是有点不理解,你能用生活中常见的事,举个例子,帮助我更直接理解scanf 的作用吗?


GPT:当你去超市购物时,你会用购物清单来记录你需要购买的物品。当你在超市中选择了某个物品后,你会把它的名称和数量记录在清单上。


这就好比使用scanf函数,它可以从用户输入的内容中读取特定的值并将其存储在变量中,就像记录购物清单上的物品名称和数量一样。这样,程序就可以使用这些变量来进行计算或其他操作。


小林:这个案例不够形象,请换个更形象的。


GPT:假设你正在打电话,需要输入对方的电话号码。使用scanf函数就像你在电话上输入数字一样。


当你拨完号码后,电话系统会将你输入的数字存储在系统中,就像scanf函数将输入的数据存储在变量中一样。


这样,程序就可以使用这些变量来进行计算或其他操作。


小林:这个够形象,我一下子理解 scanf 的作用了,谢谢!


GPT:不客气,随时为您服务!如果您还有其他问题,可以随时问我哦!


上面七章,你如果掌握了,足以学好一门编程语言了,最后给大家演示个具体的案例。


八、demo 案例实战


我让 GPT 帮我写个具体的 demo,然后给我解释每一行代码的意思。


1、基础题详解


小林:你能帮我写C语言代码么?


GPT:当然可以,我可以帮您编写C语言代码。请告诉我您需要编写的具体内容,我会尽力为您提供帮助。


小林:今天老师讲了斐波那契算法,我实在听不懂,先帮我用C语言写个斐波那契 demo。


GPT:好的,以下是用C语言写的斐波那契数列的 demo.


#include <stdio.h>
int main() {
int n, i, a = 0, b = 1, c;
printf("请输入要输出的斐波那契数列的项数:");
scanf("%d", &n);
printf("斐波那契数列前 %d 项为:\n", n);
printf("%d %d ", a, b); // 输出前两项
for (i = 3; i <= n; i++) {
c = a + b; // 计算第i项
printf("%d ", c);
a = b; // 更新a、b的值
b = c;
}
printf("\n");
return 0;
}


小林:你这个代码和老师讲的差不多,我看不懂的是 for 循环里面的算法,请帮我分析一下。


GPT:好的,下面我来分析一下这个 for 循环里面的算法。


在斐波那契数列中,每一项都等于前两项之和,因此我们可以使用两个变量 a 和 b 来分别记录前两项的值。


在循环开始时,a 和 b 分别初始化为 0 和 1,因为斐波那契数列的第一项和第二项分别为 0 和 1。


在循环体中,我们使用变量 c 来记录当前项的值,计算方法是将前两项的值相加。


然后将 a 和 b 的值更新为上一项和当前项,以便计算下一项的值。


最后,将 c 的值输出即可。


需要注意的是,循环的起始值为 3,因为前两项已经在循环外部输出了,所以从第三项开始计算和输出。


循环的终止条件是 i <= n,即计算并输出前 n 项斐波那契数列。


这个算法的时间复杂度为 O(n),因为循环执行了 n-2 次,每次执行的时间复杂度为 O(1)。相比递归算法,非递归算法的时间复杂度更低,效率更高。


小林:懂了,对于 for 语句我掌握的不是很扎实,请以C语言教师的身份,详细给我讲下 for 语句。


GPT:好的,下面我来详细地讲解一下 C 语言中的 for 语句。


for 语句是 C 语言中用于循环执行某段代码的结构,它的语法格式如下:


for (初始化表达式; 循环条件表达式; 循环后表达式) {
循环体语句;
}


其中,初始化表达式用于初始化循环变量,循环条件表达式用于判断循环是否继续执行,循环后表达式用于更新循环变量的值。


循环体语句则是需要重复执行的代码块。 for 语句的执行过程如下:


1. 执行初始化表达式,用于初始化循环变量的值;


2. 执行循环条件表达式,判断循环是否继续执行。如果表达式的值为真,则执行循环体语句,否则跳出循环;


3. 执行循环后表达式,用于更新循环变量的值;


4. 回到步骤 2,重复执行上述步骤,直到循环结束。


需要注意的是,for 语句中的三个表达式都可以为空。


如果初始化表达式为空,则不会初始化循环变量的值;如果循环条件表达式为空,则默认为真,将一直循环下去;如果循环后表达式为空,则不会更新循环变量的值。


此外,for 语句还可以与 break 和 continue 语句配合使用,用于控制循环的执行流程。


break 语句用于跳出循环,continue 语句用于跳过当前循环,进入下一次循环。 希望这个解释能够帮助你更好地理解 for 语句的用法。


上述这个案例,是不是很典型,GPT 不仅可以帮小林写代码,还能针对具体的困惑点给出建议,而且当小林对于具体的基础知识不扎实的时候,还能让对方给我再讲一遍。


2、再来个复杂点的冒泡排序


小林:假如你是一名程序员(角色),现在帮我用C语言写个冒泡排序(任务),要求代码有思路和注释(指令)。


下述是 GPT 的回答:


角色:程序员


任务:用C语言写一个冒泡排序


指令:


1. 定义并初始化一个需要排序的数组,例如 int array[] = {5, 3, 8, 4, 2};

2. 利用两层for循环进行排序,外层循环控制排序的次数,内层循环控制每次比较相邻的两个数。

3. 在内层循环中,依次比较相邻的两个数,如果前面的数大于后面的数,则交换两个数的位置。

4. 继续进行排序,直到所有的数都按照从小到大的顺序排列好。

5. 冒泡排序的时间复杂度较高,不适合对大数组进行排序。


代码如下(已注释说明):


#include

int main()
{
int array[] = {5, 3, 8, 4, 2}; // 定义并初始化需要排序的数组
int len = sizeof(array) / sizeof(array[0]); // 数组长度
int i, j, temp;

// 冒泡排序
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - i - 1; j++)
{
if (array[j] > array[j+1]) // 如果前面的数比后面的数大,则交换位置
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}

// 输出排序后的结果
printf("排序后的结果为:\n");
for (i = 0; i < len; i++)
{
printf("%d ", array[i]);
}
return 0;
}


以上,学废了嘛。


九、贪吃蛇小项目


小林:假如你是一名初级C语言开发,能否辅助我开发个小游戏。


GPT:当然可以。


小林:请给我写一套完整的游戏开发方案。


GPT:


1、确定游戏类型


首先需要确定你要开发的小游戏类型,例如迷宫游戏、俄罗斯方块、打飞机等。


2、设计游戏逻辑


根据游戏类型,设计游戏的逻辑和规则。这包括游戏的玩法、计分规则、难度等级等。


3、编写代码


根据游戏逻辑,使用C语言编写游戏代码。你可以使用各种C语言库和框架来帮助你实现游戏,例如SDL、OpenGL等。


4、调试代码


在编写代码过程中,需要进行调试和测试,确保游戏可以正常运行,并且没有错误和bug。


5、美化游戏界面


在游戏逻辑和代码实现完成后,可以考虑美化游戏界面,增加游戏的视觉效果。


6、发布游戏


最后,你可以将游戏发布到互联网上,让更多人来体验你的小游戏。


小林:以一名初级C语言开发者的角度,帮我写个贪吃蛇小游戏,要求源码可以在 Devcpp 上编译运行。


GPT:下面是一个简单的贪吃蛇游戏的C语言代码示例。


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>

#define width 20
#define height 20

int gameover;
int score;
int x, y, fruit_x, fruit_y, tail_x[100], tail_y[100], ntail;

enum eDirection {STOP = 0, LEFT, RIGHT, UP, DOWN};
enum eDirection dir;

void Setup()
{
    gameover = 0;
    dir = STOP;
    x = width / 2;
    y = height / 2;
    fruit_x = rand() % width;
    fruit_y = rand() % height;
    score = 0;
}

void Draw()
{
    system("cls");

    // 绘制上边界
    for (int i = 0; i < width+2; i++)
        printf("#");
    printf("\n");

    // 绘制每一行
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            if (j == 0)
                printf("#");

            if (i == y && j == x)
                printf("O");
            else if (i == fruit_y && j == fruit_x)
                printf("F");
            else
            {
                int print_tail = 0;
                for (int k = 0; k < ntail; k++)
                {
                    if (tail_x[k] == j && tail_y[k] == i)
                    {
                        printf("o");
                        print_tail = 1;
                    }
                }
                if (!print_tail)
                    printf(" ");
            }

            if (j == width-1)
                printf("#");
        }
        printf("\n");
    }

    // 绘制下边界
    for (int i = 0; i < width+2; i++)
        printf("#");
    printf("\n");

    printf("Score: %d\n", score);
}

void Input()
{
    if (_kbhit())
    {
        switch (_getch())
        {
        case 'a':
            dir = LEFT;
            break;
        case 'd':
            dir = RIGHT;
            break;
        case 'w':
            dir = UP;
            break;
        case 's':
            dir = DOWN;
            break;
        case 'x':
            gameover = 1;
            break;
        }
    }
}

void Logic()
{
    // 记录贪吃蛇当前位置前进方向的尾部位置
    int prev_tail_x = tail_x[0], prev_tail_y = tail_y[0];
    int prev_tail2_x, prev_tail2_y;
    tail_x[0] = x;
    tail_y[0] = y;
    for (int i = 1; i < ntail; i++)
    {
        prev_tail2_x = tail_x[i];
        prev_tail2_y = tail_y[i];
        tail_x[i] = prev_tail_x;
        tail_y[i] = prev_tail_y;
        prev_tail_x = prev_tail2_x;
        prev_tail_y = prev_tail2_y;
    }

    // 根据方向更新贪吃蛇的头部位置
    switch (dir)
    {
    case LEFT:
        x--;
        break;
    case RIGHT:
        x++;
        break;
    case UP:
        y--;
        break;
    case DOWN:
        y++;
        break;
    }

    // 判断贪吃蛇是否撞到边界或自身
    if (x < 0 || x >= width || y < 0 || y >= height)
        gameover = 1;
    for (int i = 0; i < ntail; i++)
    {
        if (tail_x[i] == x && tail_y[i] == y)
            gameover = 1;
    }

    // 如果吃到了水果,增加分数和贪吃蛇的长度
    if (x == fruit_x && y == fruit_y)
    {
        score += 10;
        fruit_x = rand() % width;
        fruit_y = rand() % height;
        ntail++;
    }
}

int main()
{
    Setup();

    while (!gameover)
    {
        Draw();
        Input();
        Logic();
        Sleep(50);
    }

    printf("Game Over!\n");
    printf("Your Score: %d\n", score);

    return 0;
}


这个源码,小林在 Devcpp 上运行了,可以正常编译,虽然代码有点不足,但已经具备初级开发的水平了。


前几天小林新学了一招,如果你让 GPT 来帮你写代码,一定要补充一句:


请帮我在代码里增加防注入防黑客的安全校验。


为什么加这句话?


因为不加的话,代码比较简陋,很容易被黑客攻克。


现在 AI 真的很强大了,强大到有点出乎我的意料。


当然了,它依旧有很多不足,昨天还有个朋友给我说:提了几个问题,感觉回复的差强人意,里面的回答出现了明显的错误。


出现错误很正常,你不要把它当成智脑,应该把它当作工具。


学会利用它来提供工作效率,现在就算 GPT4 也不会说 100% 正确,都还需要你后期润笔。


如果它真的强大到不用你的任何润笔,那裁员估计又要来了。


毕竟 AI 可不会说要休息,人家能每天 24 小时高强度工作。


不要有任何排斥不想用的观点,这玩意真的是大势所趋了。


以上,就是今天的分享,信息量有点大,大家收藏慢慢看,记得点个赞呀~

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
小林
作者分享
近期读了 3 本书,很有意思,给鱼友分享一下: 1、最近大火我的阿勒泰作者李娟的书《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=记一忘三二》,书不长,4 个小时就能读完, 书名甚得我心,记一忘三二,我就是这样的人,尤其是在阅读的时候, 前几天刷微博看到一段话: 人类这一百年,走得太快了,末代皇后婉容的弟弟润麒生于 1912年,逝于 2007 年,他晚年上天涯论坛,为自己孤苦的姐姐正名,与诋毁姐姐的人论战,如果他再延寿两年,还能上豆瓣、微博。中间这一百年从皇朝到互联网,如今连互联网都已衰落, 突然想起王羲之的经典名言:向之所欣,俯仰之间,已为陈迹,犹不能不以之兴怀, 忘记不一定是坏事,因为在时间长河里,地球可能都没存在过, 最喜欢书中的一句话:最近懒成渣了,懒得我都懒得描述这种懒, 为什么最喜欢这句呢? 因为我本人比较懒,小富即安的小农寡民思想,只想躺在床上混吃混喝, 但我和李娟一样,身体上想躺平,思想上还想折腾,李娟是事太多就焦虑到什么也不干, 我是事太多,就使劲往后拖,拖到不能拖为止, 所以我的微信拍一拍是:Do it now, 每年生日写文章记录的时候,都刻意写希望继续保持折腾, 看完书特意把我多年不用的抖音下载了下来,搜了一下李娟,看看能否在互联网上找到李娟的采访, 哎,还真不少,看李娟的采访,能明显听出来,这个人社恐,给人一种要哭的感觉, 人是群居动物,如果长时间不和陌生人打交道会导致不会说话, 又通过线索找到了李娟的公众号,翻到了李娟的第一篇文章,时间是 2014 年7 月 26 号,差不多十年前,比我早写公众号 4 年, 写这条不讲别的,就讲坚持,没有始于足下的常年坚持,哪有今天的一夜爆红, 2、马伯庸的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=食南之徒》,把史记上短短几百字的文言文,用故事讲出来了, 主角唐蒙,公元前 135 年作为大汉外交官,出使南越, 调研了一波唐蒙的事迹,发现读书还是少,张骞出使西域大家应该都知道,但唐蒙出使南越知道的绝对不多, 嗯,我也不知道,[Emm] 甚至有个词叫:南丝绸之路,说的就是唐蒙出使南越, 南越是今天的广州番禺,我在这里住过一年,广州是中国的老牌一线城市,当时的南越不属于汉朝,东海、西南汉朝也不知道路, 读者可以想象一下,中国地图如果缺了这些地方会是什么样子, 用今天的眼光看千年前的唐蒙,是不是功德无量, 当时的南越和中原摩擦不断,时而称帝,时而称藩属国,但由于南越五岭逶迤,汉武帝他老人家也无可奈何, 唐蒙是一位资深吃货,在出使南越的时候发现了一种极品调料:蜀枸酱, 通过多方打听,才知道枸酱是从当时的夜郎国走水运到的南越(夜郎国在今贵州境内,严重怀疑是酱香型酒,有没有可能是茅台前身,hh), 这意味着什么? 意味着虽然陆路走不通,但可以走水路大军压境南越, 南越是公元前 112 年被灭国的,中间间隔了 23 年,汉武帝这么一位雄才大略的帝王居然能忍这么久, 不忍不行,虽然能借道夜郎国,但路太差了,大军还是走不过去, 书中写到唐蒙给天子上书,主动请缨去修路,这一修就是 22 年, 我原来对吃苦的理解很肤浅,自认为大学时代的兼职就算挺能吃苦了, 直到今天我才算明白,这些都是自我感动,真正的吃苦应该是: 长时间为了实现某个目标,放弃娱乐,将所有精力投入在实现目标的过程中, 比如唐蒙吃了 22 年的苦,成功助力南越加入中国版图, 越发觉得读万卷书,行万里路真的相辅相成,除了台湾省,国内 33 个省级行政区小林都去过, 边看书,边回想我在贵州、广州的游学经历,脑海里的地理位置也不是一般的清晰, 很有意思的是,书中提到的胥余果(椰子),我在广州呆了一年都没吃过,很少见到有卖的,但月初在海南吃了不少, 当时的汉朝正处于崛起前期,武帝少年英雄,不论官场还是民间建功立业之心都是相当旺盛, 但唐蒙小时候经历了家道中落,亲历了不少人情冷暖,他的价值观,很出乎意料但又在预期之中, 坚守 22 年,不是为了加官进爵,不是为了报复当年伤害他的人,而是为了蜀枸酱, 书中印象颇深的一段对话: 橙宇扬声质问道:你一个汉使,瞒过南越所有人,偷偷跑去独舍调查武王,目的何在? 唐蒙咧开嘴,露出一个单纯的笑容:我说我是为了蜀枸酱,你信吗? 不管读者信不信,我是信了,因为成功是按照自己的方式,过好每一天, 3、白俄罗斯作家S.A.阿列克谢耶维奇的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=二手时间》,浅谈几点感想: 这是一部跨越 20 年,跨过整个原苏联地区的作品,以一种独特的口述历史形式,将那些在历史长河中挣扎、呐喊、哭泣的普通人的声音呈现在读者面前, 这本书对我来说绝对是新书,第一次看这种类型的书,初看内容很松散不紧凑,看进去你会发现是真的可以触摸到历史脉搏, 不是传统意义上的历史书,不以时间线为轴,不以事件为节点,而是以人的心灵为镜,映照一个时代的面貌, 书中的人物来自社会的各个阶层,从元帅到农妇,从卫国战争的老兵到新俄罗斯人,有对过去的怀念,对未来的迷茫,有对信仰的追寻,也有对生活的无奈, 苏联的那一代人从小被灌输的只有战争,没有生活,但面对新世界,人要思想, 有思想,会思考,容易吗? 真的很难,几十年的沉默成本在那放着了,这些人只记得恐惧, 之前读史,大部分对于底层人的生活就是一笔带过,死 10 个人是死,死 1000、10000 个也是死,死亡前这些人到底经历了什么无从得知, 这本不一样,不再关注战争、灾难等宏大叙事,而是深入个体的生活,关注他们的心理、言行举止以及情绪, 让普通人讲述自己的故事,展现身处历史转折中的人们如何追寻信仰、梦想,诉说秘密和恐惧,通过一个又一个真实案例,捕捉苏联解体后被时代洪流裹挟的底层人的心声, 感受那些被宏大叙事所忽略的个体心跳, 不少内容看了真的触目惊心,甚至可以说有点血腥,可见作者细腻与坚韧,不然绝对写不出来这种内容, 历史不再冰冷,而是被赋予了情感和生命, 小时候看电视剧,总是喜欢分好人坏人,看到坏人就讨厌,看到好人就喜欢,但人真的能分出好坏吗? 经历过职场、创业,我才理解:人不是标准件,不存在泾渭分明的好坏,立场不同,思考的角度不同,好坏的标准完全不同, 看这本书是可以感受到真实的人性,比如看到小人物的对理想主义的喜悦,看到不同观点的 怨愤,背叛理想后的痛苦挣扎, 不论书还是现实生活,无一不在告诉我:天之道,损有余而补不足;人之道则不然,损不足而奉有余,任何时代的规律都如此, 因为按照经济学理性人假设,人本来就是自私的,但人会根据后天的成长环境最终形成不同的性格, 人的一生都是在善恶之间摇摆着,近朱者赤,近墨者黑不过如此, 以上,有启发点个赞呀~
26
苦难是化了妆的祝福 大家好,我是小林,最近读了三本书,给鱼友分享几点心得: 1、 蔡崇达的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=命运》,这本书去年看过一点,总觉得不符合我的认知,作者是福建泉州人,泉州这个地方庙很多,但和内地的完全不一样,比如妈祖庙、大普公庙, 我本人是不怎么爱逛这些地方,直到从西藏游学回来,我发现虔诚的信徒是真多, 刚好前几天去福建省会福州游学,逛了博物馆,和本地的朋友吃饭聊天,有点能理解这个地方的文化了, 每个人的生活,都是一曲跌宕起伏的乐章,有悲欢,有离合,书中的人,书中的事,看完就一个感受:命运果然无常, 这些神啊、庙啊,更多的是穷苦年代,底层穷苦人对未来的预期罢了,总要有个念想,毕竟这世界最容易的活法,是为别人而活, 福建人在我心里的画像更清晰了,福州机场我去过,不大,可以说和我去过的其他省会的机场没法比, 看完这本书,我才知道泉州机场原来是华侨捐钱修建的,搜了一下,福州机场也是民间修建的,为了方便华侨归乡探亲, 中国人有个很奇怪的特点:落叶归根,这或许是几千年地缘文化产生的对生命轮回和自然规律的尊重, 书中我印象非常深的一段话: 人心里真的有一片海,一直在翻滚着,而自己的魂灵如果没有一个重重的东西去压住——类似于压舱石的东西,只要某一刻某一个小小的情绪的浪过来,魂灵就会被这么打翻,沉入那海底去了。 当人面临生活中的困难,或遭遇情感上的波动时,如果没有足够强大的内心支撑,很有可能会感到迷茫无措,甚至被情绪的海浪所淹没,失去自我, 在人生旅途中,要不断修炼和强化自己的内心,找到那些能够支撑自己前行的压舱石,要去明心见性,求你的真, 人的思绪,像海浪,时而平静,时而汹涌,我是亲身经历过 N 个类似场景,到今天我才发觉我的压舱石或许是过去在农村生活的经历以及读大学期间的各种兼职, 一句话总结:苦难是化了妆的祝福, 我们终将生下自己的命运,我们终将是自己命运的父亲和母亲。 2、从海南游学开始读,一本很经典的书,海明威写的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=丧钟为谁而鸣》, 小说发生在 1937 年,西班牙内战,共和国军队与法西斯叛军之间的战争, 男主罗伯特·乔顿英国人,志愿加入西班牙共和国军队,是爆破专家, 乔顿的任务是和一支游击队合作,执行炸桥,以阻止敌军进攻,游击队由各种背景的人组成,包括农民、工人和知识分子, 他们内部存在分歧和冲突,毕竟人群差异太大了,认知不同,只是因为有个共同的目标,才聚在一起, 乔顿需要平衡各方利益,确保任务顺利进行, 女主玛利亚,西班牙女孩,曾被敌军俘虏并遭受轮番凌辱,玛利亚在书中给我印象非常深,性格极其坚韧, 比如书中玛丽亚的一段话: 我从没有屈从过任何人,我总是反抗,所以通常都要两个,甚至更多人才能加害我,一个坐在我的头上,让我没法动。 说老套也行,说狗血也行,乔顿和玛丽亚相爱了,结局自然是悲剧,乔顿成功炸毁了桥梁,但在战斗中腿受伤了,最终选择留下来掩护队友撤退,与敌军一起 game over, 书中提到他们出生在一个异常艰难的时代里,其他任何一个时代可能都会容易一些, 事实如此吗? 纵观历史,真正和平年代不多,能数的出来的就那么几个:文景之治、贞观之治、洪武之治、康乾盛世…… 我还算了解历史,真的,在我们父辈这代人之前,能出生在和平年代的极其少, 我在看这本书的时候,脑海里一直有个想法,丧钟为谁而鸣不仅仅是战争,在当下社会也能看到多处场景, 比如前几年经常在互联网上刷到资本怎么样怎么样坏,这帮人又傻又蠢,背后的逻辑是: 如果没有这些老板,没有这些资本,连找个工作都难, 因为民营企业提供了 90% 的就业岗位, 想不清楚谁给你开工资的是不是蠢,从去年开始就业市场一片哀鸿,丧钟为谁而鸣呢? 书中有段话很经典,是对游击队说的:你们只是履行任务的工具而已, 关于小镇做题家和出题家旧文中我已经讲过很多了,这里不再重复,感兴趣的林友自己搜索关键词去阅读,一定有启发, 我贴一段陶行知当年说过的一段话: 关于教育的见解,千差万别,可是扼要地区别起来,也很简单。大致可以分为相反的两派。就教育的目标说,一派希望受教育者成为工具,另一派希望受教育者成为人,独立不倚的人,不比任何人卑微浅陋的人。 我们的应试教育是哪种,聪明的鱼友肯定能看出来,不管教育的目的是什么, 我希望你能成为后者, 3、第三本是健康相关的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=控糖革命》,不少观点对我相当有启发, 热量并不意味着一切,同等摄入热量,先吃蔬菜,再吃蛋白质(肉),最后吃主食(米面),和先吃主食,最后吃蔬菜的人体的血糖走势完全不同, 菜、蛋白质、淀粉这样的饮食顺序是更健康的,相对来说也会使食欲低于淀粉、蛋白质、菜这样的顺序, 如果你是做餐饮生意的,懂了没,先给顾客上淀粉类的,因为他能多吃点……[白眼] 血糖平稳才是减肥、健康、年轻、情绪稳定等等的核心, 血糖波动的时候,人特别容易暴躁, 现在的商品会重点突出能量、无脂,在成分表中,热量可能是用最大的字体写的, 基本上都是忽悠人的,因为它不会告诉你这种食品是否会导致葡萄糖峰值, 这些商品实际上添加了不少糖(葡萄糖、果糖、以及很多糖相关的新词), 摄入糖会导致血糖不稳定, 在吃糖前吃脂肪会比直接吃糖使血糖更稳定,冷知识:人是需要吃脂肪的,并不是不需要,只是最好摄入优质脂肪,比如牛油果,动物脂肪(肥肉), 对了,不论什么糖都是糖,没有好坏之分,不管来自哪种植物, 特别饥饿的时候,胃是空的,这个时候如果摄入纯碳水食物很容易造成葡萄糖峰值波动, 我以前特别喜欢早上起来吃包子,看来是完全不健康的饮食, 早上起来特别饿的时候,吃蔬菜 鸡蛋 汤会使血糖更加平稳, 饭前喝点醋,饭后运动一下是真的对身体有好处,因为会使血糖波动降低, 以上,有启发点个赞呀~
23
最近读了三本书,给鱼友分享一下。 1、游学辽宁旅途读的《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=他人的力量》,这本书给我最大的启发是:如果你想更快更好的实现目标,一定不能只付出,要学会偶尔的索取,俗称会哭的孩子有奶喝, 比如在感情生活中,和另一半因为某些琐事吵架了,你给对方道歉下次不会再犯错了,(男女情感中非常常见) 这种模式不仅没用,而且会使双方越来越远, 因为承诺方一直处于要付出,需要更多的自律,更多对正义的服从,更多的努力,更多的服务和牺牲,这特么一点也不符合人性, 按照书中提到的一个概念:第四人际关系,如果想保证下次不犯,需要和你的亲密对象一块真正找到问题所在,需要对方参与你的改正过程, 书中有段话引发了我的深思:如果你已经成长到可以陷入像这样的麻烦,那么你也应该成长到足以让自己摆脱这种麻烦, 能力和责任应当是并行生长的,但现实生活中我观察到大多数人很少考虑责任, 就是自媒体领域的交付,这两天听到了一堆负面信息,可以说劣币驱逐良币了, 究其根本,就是因为外面的劣币没有考虑责任, 2、最大启发和深思的话分享完了,概述一下这本书,主要探讨了人际关系的四个层次,以及如何在这些层次中实现健康的关系链接,进而揭示这些有益的链接可以带给人的力量, 书中详细拆解了人际相处的四个层次: 描述了一个循环:从孤立开始,因为无法忍受孤独而随便缔结不良的连接关系, 接着被这些关系折腾得很疲惫,试图通过虚假的良好连”逃避真正的问题, 又因感觉这些连接索然无味且心累,重新封闭自我回到孤立状态, 那怎么打破这种循环呢? 就是本书的重点了:第四层次关系, 在第四层次关系中,每个人都在进步,这种关系要求人们做真实的自己,将自己的问题都暴露出来,这使得每个人都能获得符合自己真实情况的有效反馈, 这种关系带来的支持令人安心,人们会更多地思考如何发挥得更好,而不是如何避免被拒绝、失败或指责, 第四层次关系还促成阶段性成长,在这种关系中,人们不仅关心如何帮助对方解决眼前的问题,更是将长远的发展考虑在内, 当看到对方一切稳定、安于现状时,第四层次关系中的朋友会伸手将对方推离舒适圈,以推动其追求更高的成就, 书中提到了两个词:固定型思维、成长型思维,看描述和我总提在嘴边的小镇做题家、出题家类似,异曲同工, 拥有成长型思维的人,把才华视为可以培养和提高的东西,而不是一种天赋,一种不会随时间而改变的固定资产, 你看,很多不同得书都提到了类似的词,说明什么? 说明我们要逐渐培养自己的出题家视角,学生是的的做题家思维,从进入大学那一刻就应该逐渐摒弃, 3、游学黑龙江旅途读了本书《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=透过地理看历史》,虽然书中有不少观点是作者都主观判断,但通过地理来看历史还是别有新奇的, 书中提到的地方,我几乎全部走过,所以很神奇,一边看书,一边回想过去的旅途,脑海里逐渐拼凑出一个完整的中国地图, 这或许就是游学最大的意义~ 正常阅读一般都是时间、地点、起因、经过、结果,这本书很有意思,通过地理的视角来解读历史事件和文明发展, 从古荆州切入,逐渐过渡到塞北,作者分析了地理环境如何影响和塑造了历史进程、文化形成以及国家间的互动, 通过分析不同地理条件如何影响文明的形成、扩张、冲突和交流,提供个了一个新角度: 地理不仅是历史的舞台,也是塑造历史进程的重要力量, 4、这给我印象最深的是河西走廊,至关重要的战略位置,今年没档期安排了, 明年必须自驾走下武威-张掖都河西走廊,肉身体验下这个战略要塞, 千年已过,历史变迁,王朝更替,不变的是:山还在,江还在,落日也在, 想起我很喜欢的李贺一句诗:黄尘清水三山下,更变千年如走马, 看这本书涨了不少知识,比如: 江西不是因为在长江是西边,实际上在长江的南边,之所以叫江西是因为在唐朝的时候,江西属于江南道,它在江南道的西边,简称江西, 楷书是王羲之、王献之父子发明的, 苏轼是在黄州赤壁写的课本上都赤壁怀古,但这个赤壁不是赤壁之战发生地, 修身、齐家、治国、平天下的本意指的是士修身,卿大夫齐家,诸侯治国,王平天下, 这特么是不同等级贵族的职责,和百姓没有一丁点关系,想想也是,那个年代能读的起书的人本就是不是平民, 5、游学大兴安岭旅途,一口气读了本书,余华的成名作《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=十八岁出门远行》, 书不长 10 万字,几篇短篇故事组成,看这本书的时候,我一直在回想 18 岁那年我在做什么? 高中毕业,远离故乡,奔赴千里之外的东北求学,几个月后开始兼职打工, 既有出门远行,也有遭受社会的毒打, 比如第一次真正意义上的独自走出河南省,不瞒大家,未成年前火车都没坐过,在河南的一座五线城市硬生生当了 N 年小镇做题家, 18 岁那年的求学是踏入出题家对第一步, 比如一辈子忘不了的第一次兼职,每天高强度体力工作俩小时, 东北零下几十度浇溜冰场,又冷又冻, 干了两个月老板开了 600 元,可见当年时间有多廉价, 核心还是当年的筹码不够,身上被人利用的价值不大,只能当牛马赚辛苦钱了, 今天回过头来看我的 18 岁远行和挨得毒打,似乎还是蛮幸福的, 因为当年小林 18 岁呀, 欲买桂花同载酒,终不似,少年游。 以上,老规矩,学废了点个赞呀~
42
游学西藏旅途读了本俄国作家陀思妥耶夫斯基的书《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=罪与罚》, 书有点长,看了差不多 20 个小时,无数情节引发共鸣,给鱼友分享几点心得: 1、这本书讲述了一位青年拉斯柯尔尼科夫受无政府主义思想影响,为证明自己超脱于世俗规则体系而实施谋杀,随后陷入精神痛苦与忏悔, 在善恶、信仰与罪恶间挣扎,内心矛盾重重,书的女主角索尼雅的出现成为他救赎的曙光, 拉斯柯尔尼科夫在索尼雅的影响下,承认罪行并接受惩罚,实现了精神的蜕变与升华, 2、我去年写过一篇文章,主题是不要让时代的悲哀成为你的悲哀, 在看书过程中我随手写了一句对拉斯柯尔尼科夫的评价:时代到悲哀成为了你的悲哀, 不同时代的道德标准是不一样的,但道德一定是符合大多数人类的利益,没有任何底线的弱肉强食,任意生杀予夺的时代早已过去, 作为文明进步后的时代,只要你生活在人类世界,就不得不接受这套规则, 虽然我一直讲出题家视角,一直讲建立自己的规则体系,但我说的这些一定是基于当下社会的道德观, 3、索菲雅,坚韧与善良并存的女性, 身处社会底层,为了养家不得不出卖肉体,时代的所有悲哀都落在了她的头上, 开局拿着垃圾到不能再垃圾的牌,但她居然通过信仰、爱,不仅帮助拉斯柯尔尼科夫走出了内心的困境,也救赎了自己, 索菲雅不仅是拉斯柯尔尼科夫的精神支柱,更是他灵魂的拯救者, 书的终章提到了在拉斯柯尔尼科夫住的监狱,很多犯人无比尊敬索菲雅, 为什么呢? 因为即使自己身处底层,也一直展现了人性中最美好的一面, 比如在圣诞节那天,她带来馅饼和白面包,分送给全监狱的犯人,她的存在,让这些身处在黑暗中的人看到了曙光, 因为万物之中,希望最美呀~ 4、拉祖米欣,罪与罚中的关键角色,我认为拉祖米欣是理智与情感并存的理想主义者, 对拉斯科尔尼科夫的罪行持有批判态度,却又不离不弃地给予他关怀与帮助, 拉祖米欣的形象,既是对道德底线的坚守者,也是对人性复杂的深刻揭示, 在罪恶与救赎之间,光辉与黑暗如何交织碰撞,最终指向对善良与真爱的追求, 善良的人结局就好点吧:拉祖米欣最后和拉斯柯尔尼科夫的妹妹(他喜欢的人)杜尼雅结婚了, 5、书的末尾拉斯柯尔尼科夫得到了救赎,作者提到了这可能成为一篇新小说的题材,但这篇小说却要结束了, 给我一种长期呆在黑暗中,第二天太阳升起,拨云见日的感觉, 这会坐在西藏返程内地的列车上,看着窗外的皑皑雪山,原来我自己也经历过类似场景, 我的旧故事在 2023 年 4 月 7 号,风和日丽,无比平静的那天结束了,此后每一天都是新生,拥抱自然,解锁我未见过的风景,回馈比较优势见自我…… 以上,老规矩,有启发点个赞呀~
22
最近看了两本书,共鸣点不少,给鱼友分享几点心得: 1、第一本《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=稻盛和夫自传》,开篇引言稻盛和夫就提到了,多年后他剃度出家,大概也是因为太早意识到死亡的缘故, 就像那句老话:少不看红楼梦,如果在三观还未建立,自己底层判断逻辑还不清晰,很容易被外界环境干扰, 这点我感同身受,我年龄不算大,但不敢说彻底看透了生命的意义,当下我对生命的理解就是无意义, 因为终究有一天要变成一抔黄土, 既然无意义,为什么要坚持终身学习呢? 原因很简单:人类是活在自我编制意义上的生物,宏观无意义,但个体角度出发,只要你觉得有意义,那就是意义, 2、书中有几处提到了伪满洲国,微信读书有个划线功能,能看到其他书友的评论,就这短短几处,我看到了一堆人在对喷, 这种有什么意义呢? 站在出题家视角:择其善者而从之,你不认同的,你觉得不对的,不从之就好了, 每个人的认知程度不一样,非要说服和你认知不一样的人赞同你的观点,这不是傻 X 么, 何况你们争论的可能都不是一个意思,毕竟能清晰的表达清楚自己观点的人也不多, 我们用一年学会开口说话,但需要用一生学会闭嘴,不去争论, 3、稻盛和夫在经营企业的初期,是为了追寻技术人的浪漫,对员工比较苛刻,经历了一些失败,他才完善自己经营企业的理念: 经营公司最根本的目的就是,必须永远保障员工及其家人的生活,以公司员工的幸福为目标, 是不是有点熟悉,和胖东来的理念一模一样, 我判断一件事是否能做的两个标准: 一是对他人有价值,因为利他即利己;二是对自己有积累,如果都没有,我就不会去做这件事, 稻盛和夫在很小的时候得过肺结核,那个年代几乎是致死的病,又赶上战争奔逃,苦逼的很, 很令人意想不到的是肺结核居然在逃亡过程中好了, 命运向来是无常的,最近身边发生了几件令我很吃惊的事,无法用言语表述, 只能用老子他老人家讲的那句话略表心情了:祸兮福之所倚,福兮祸之所伏, 书的末尾稻盛和夫提到了: 命运绝对不是一成不变的,随着人的思想与行动的改变,人生也在不断地变化, 这句话我高度赞同,因为小林的命运就改变过,至少在我的记忆中,有过 4 次, 一命二运三风水四积阴德五读书六名七相八敬神, 前几样我们改变不了,但读书,积德是可以通过后天努力完善的, 4、第二本是《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=笔记的方法》,这本书两位朋友推荐过,不看不行, 不知道有多少鱼友喜欢看书,我以前算文艺青年,从小就喜欢阅读, 在学生时代,我的认知里有个错误习惯:喜欢记书中的金句, 这么多年过去了,回头来看,当年记录的金句,没有记住一句,甚至翻以前的笔记,完全就想不起来当时为什么记录, 有且只有《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=道德经》里面的内容基本上都还记得, 结合读这本书的心得,我反思了一下为什么, 因为当年不仅仅是记录、背诵道德经了,当年每天早上都有思考每句话的意思, 正是因为过脑思考了,所以 8 年过去依然记忆犹新, 比如:将欲取之,必先与之; 比如:上士闻道,勤而行之; 比如:合抱之木,生于毫末; …… 写作不烧脑,烧脑的思考, 知识不是商品,商品买了你就拥有,知识你记录下来它还不是你的, 需要内化吸收,取其精华,弃其糟粕, 屏幕前的你是选择不烧脑的摘抄笔记,还是选择思考后的输出就看个人咯, 灵感真的不是随时都有的,在想法出现的时候立刻、马上记录下它,养成随手记录灵感关键词的习惯, 晚上工作没那么忙的时候,再根据白天记录的关键词来扩充内容, 5、这本书给我了个最大的信息增量,我以前忽略了,我贴一下原文: 长期以来的教育模式,潜移默化地让我们有背诵答案的习惯,回顾时往往下意识地去复诵记过的笔记,却忽略了最重要的思考过程, 看到这段话我陷入了深思,特么的,我看以前写的内容,就是在背诵,回顾老知识没有思考, 回顾也需要思考,而不是所谓的背答案, 以上,有启发点个赞呀~
48
下载 APP