2020-10
10

当年,为什么

By xrspook @ 10:20:34 归类于: 烂日记

不知道从哪里看来这么一个评价,中国的程序员在实用技术上的开发是一流的,但美国的程序员在基础理论上的研究生一流的。可能原话不是这么表述,但大概是这么个意思吧。我也是一个专注于使用技术上的人。我没有一个确切精通的东西,但要做到精通某个东西其实已经是一个很高的境界了,显然起码暂时来说我不是那种人。我会偏向于用某些思路去解决问题,但当某些思路是在不能解决某些问题的时候我的脑洞会再次打开,慢慢地转移到别的地方去,之所以有这种转变,是因为我发现别的东西在解决某个问题的时候更加靠谱好使。所以,总的来说我并不局限于只用某个工具解决问题。

大学的时候我不知道为什么我们要学C语言而不学习其它编程语言。大概理工科的学生都要学习编程语言这种东西吧,不知道学设计的要不要呢?反正农学和经管的好像不用。至今我都不知道为什么非得在我们的大学课程里安排这么一个必修课。学计算机的学生也必须学C语言吗?还是说他们学的是其它?又或者他么是在学了C语言以后再学其它?为什么我搞不懂必须学C语言最根本的在于C语言必须在DOS下执行,还得先编译再运行。除了在软件里写码以外,我最经常用的写码工具是Windows自带最传统的记事本,要不干脆不在电脑上写,直接在草稿纸上写。如果当时已经流行像VSCode那样的编辑器,大概我就不用走那么多弯路了。编辑器能够提醒你语法有否出错,即便语法不错,程序能不能运行最根本的是整体的思路。跟python比起来,C语言的语法更为严谨,之前没有声明过的东西不能用,花括号这种东西必不可少。后来我明白到大概当年要求我们必须学习C语言不是要我们真的懂得用那个东西搞出些什么,而是让我们对编程思维这种东西有所了解。因为是在DOS这种环境下运行,学习的时候就自然不会带入太多额外的脑洞,让东西写着写着就跑偏到别的事情上。如果当年学习的是python,大概我的很多同学就不会觉得编程语言除了用来应付考试就一无是处了。编程能快准狠地解决我们平时遇到的很多问题,但体会到这个又是过了好多年后的事了。话说回来,如果一开始就让我们知道那么多,是不是好事呢?

有时我挺庆幸我读书的时候网络远没有现在发达,起码智能手机还没有。没有随手拿来的智能手机就不会有假期拍照和录小视频的作业,同时也没有每天限定多长时间得在某个app上完成某些作业的任务。对成年人来说,游戏是消遣,对孩子来说,手机app完成作业是学校作业的无限延伸。从前,离开学校就算解放了,但现在,因为有app的约束,哪里都是天眼的管辖范围。app上的数据家长在看,老师在看,虽然其实完全遵照那个去做实际上也不会太难,但哪个孩子没有叛逆心。手边没有智能设备,的确让我的从前少了很多照片和视频记录,但也正是因为从前的照片都在胶卷上,需要晒到相纸上,重新掏出实物让人更容易触摸到从前,岁月的颜色和味道都留在了那里。

我的人生让我有了我去选择的权利,而不只是成为别人想我成为的那个。

2020-03
31

如果可以再选一次编程初恋

By xrspook @ 8:59:02 归类于: 烂日记

编程是什么,我也不知道,但显然对我的很多同学而言,那是一个别人给你的任务,要你去实现它。那就像是一次测验或者一次考试,把那东西拿下,他们就会有成就感,或者那根本谈不上成就感,完全是因为那跟成绩挂钩,那跟学分挂钩。任何东西和那扯上关系,他们都会觉的有满满的肾上腺素。他们不是为自己而变成。情况就像那些沉迷于游戏的人。当然我之所以这么说,大概因为我不玩游戏,我是一个游戏渣,所以我才会有这样的看法。当我的同学花很多时间听歌、看电影、看电视、看综艺的时候,我花了很多时间在我的blog上,有可能是回忆某天我干了些什么,有什么感悟,也有可能我正在改进blog的。有可能是版面装修,也有可能是某篇日志里某个图片的PS。现在回想起来,那真挺神奇的,为什么我每天都可以为自己的日志配张图呢?现在我已经不记得是不是每篇日志都这么干了,但的确很多日志我都用心地配了图。有些简单一点,直接是照了个相,然后处理一下,修改一下大小也就可以了,顶多是加个滤镜什么的,但更多的那些是集合了好些操作的。

相比于PS,我更喜欢写代码。但实际上,当时我接触的代码不过是CSS而已。网站的基本结构很简单,因为高深的东西已经被BlogBus封装起来了,所以我能操作的不过是最基础的HTML代码。以及可以随意让我修改的CSS。当时我可以修改CSS,但我不可以随意增加或者减少CSS的起效位点。有些东西他们没有把控制权放出来,所以某些部位我是没办法通过CSS控制的。当时,甚至可以这么说,我没有接触到真正的编程。因为什么判断循环都是不存在的,又或者格式输出也是不存在的。更加不用说什么变量参数之类的东西。

为什么我大二的时候会对C语言那么着迷呢?我真的不知道。如果还可以选的话,我会主动选择C语言吗?当时的我根本不知道居然有那么多编程语言。直到后来,我终于见识到了各种各样了强大的东西,比如说昨天我上的那节课,说Python居然不需要用大括号把语句框起来,只通过缩进就能判断,那是同一个层级的。这简直把我脑子里的编程语言给颠覆了!如果那是在其它语言,无论是C还是PHP,又或者是其他东西。根本不可能运行成功,但Python通过4个空格的缩进就实现了。于是我不得不问一句,为什么我们当年要学习C而不学Python呢?当我用过VSCode以后,我觉得debug的过程很爽快,写代码也很轻松,因为你写好一半,另外一半就蹦出来了。前面你对某个东西定义了,后面当你打出一点点,余下的东西你可以通下拉把它选出来。当你写出判断之类的东西,回车后自动缩进是自然而然的事。代码写出来以后,不同类型的东西有不同的颜色,一眼就看得出来。正在写或者保存以后,如果某个地方出现了红色波浪线,意味着那里通常出状况了,有可能是静态的语法判断把你冤枉了,但对我来说,通常那都是我的粗心大意。如果当年学习C语言的时候也有这么多帮助,大概我们就不会在语法和格式上面纠结半天。实际上,我们的脑子应该用在天马行空上,而不是死在那些花括号对碰上,不是吗?当年,我可是用txt记事本写C语言的。更多时候,我身边没有电脑,我是拿草稿纸写的。的确,这样白手起家锻炼了我,但我觉得,用VSCode写代码,才会让我真正感受到写码的快乐。

34岁才开始和Python交朋友,我觉得这还不算太迟。

2020-03
23

选择我的语言

By xrspook @ 10:34:20 归类于: 烂日记

现在我到底比10年前进步了多少,我不知道,但显然,10年前我还不认识正则这种东西。后来的很多抓取需要让我不得不学习了这个。一开始,我是在PHP上面用的,而昨天,我要把这个用在Notepad++上面,正则类似,但不同地方的细则又有所不同。正则这个东西让我在Notepad++上完成了我觉得这软件可能完成不了的事情。我太低估Notepad++的实力了!简单的替换或者新增这段,对它来说毫无压力,尤其是纯粹字段的东西。昨天之前我有想过要不要这次之后我也学习一下Python。语言类的东西学习了不少,但是我的电脑里没有配置一个环境可以让某个语言做到输入输出文件。如果把Excel算上,估计那是唯一OK的。我之前用的PHP实际上在编程方面我几乎没接触过。

学习编程语言,学习什么样的编程语言,很多时候都不是由我自己说了算。遇到什么问题,看到别人用什么解决,然后我就会觉得那个东西很有用。如果现在要用一种语言去定义我自己的话,我甚至说不出来。我不需要所有语言都懂,我只需要有一个我非常懂的东西就可以了。但显然,现在我还没做到,所以接下来我需要做的是找到这种语言,然后深入的研究。无论哪种语言,深入进去以后都可以无比强大,起码我想实现的那些小愿望全部不成问题了。其实我也不能说我完全不懂PHP,我还是有点懂的,但主要还是用在一些前端方面。因为我会认识这种语言是从网页与CSS配合开始的。一直以来,我都没有深入进去。我没有在电脑上长期安装一个运行环境。每次我要测试开发WordPress模板又或者其它内容的时候,我也是到需要时才安装,不需要的时候又把它卸载掉。需要PHP的运行环境,意味着可以实现很多计算,但我并不需要一定在本地部署。我把脚本放在网上一个免费的地方,我那些小不点功能其实就可以做到。以前,我是这么干的。现在估计我依然可以这么干。我为什么要配置PHP环境而不配置其他东西呢?其他东西可能更方便快捷。我不知道语言与语言之间的差异主要有哪些。从宏观层面上看,判断和循环基本就是它们的全部,但在如何表达参数上面,各家有各家的说法,所以其实一直以来我都很蒙圈。如果你给我一堆代码,要我判断这是哪种语言的。我肯定说不上,除非有一些非常明显的标志。看看他们的声明以及执行部分,很多时候我觉得都一个样。当然这只是我肤浅的觉得,实际上不是这么回事。因为我不熟悉他们,我只是见过他们,有些更加纯粹是一面之缘。

就像我用一个数据透视表能解决几乎Excel的绝大多数问题一样,因为我熟悉它。如果我熟悉公式,我也一样可以单用公式解决Excel的绝大多数问题。我是时候在一种编程语言上下功夫了。

2020-03
17

页码导航,搞定!

By xrspook @ 10:44:11 归类于: 烂日记

昨天突然发现,备份下来的COLOR3模板的截图是2014年的,所以这个模板是不是没有10年历史这么悠久呢?WordPress我用了10年,但这个模板用了多少年?我真的没有仔细翻查过资料。(发布这篇blog之前我又验证了一下,COLOR3的确是2010年的作品)。就怪当年设计好模板之后,我没有在上面标注时间,现在完成改版以后,我会在CSS上标注上版本的更新信息。我会不会把这个模板用一辈子呢?真不知道,又或者不知道多年以后我不用WordPress了呢。

昨天我把之前用插件解决的页码导航也实现了,但实际上不知道从第几个版本的WordPress开始,已经内置了页码导航,但很多个版本的官方标准模板上面的只有上一页和下一页。上一页跟下一页的设置非常原始,对内容有非常多的blog来说,这简直就是把人杀死的节奏,虽然有一点观察力的访客会发现,除了主页是没有页码以外,只要你翻到第2页,从网址上你就已经能看到页码了,所以接下来你只需要天马行空地在那里输入你想要的数字,就能跳转到那个地方,但问题是,对一个路人甲来说。页面只显示了上一页跟下一页,但最后一页是多少呢?难道还要搞一个猜谜游戏?于是,这又让我想起了那个什么逼近法。用靠谱的页码导航就不会有这种烦恼,那些算数问题全部都留给服务器了,因为任何一个导航页面都会有首页和最后一页的锚点(最后一页其实是算出来的),上一页跟下一页的锚点也是有的,当然如果那是最前头和最末末,会缺少了其中一个方向的锚点。中间的页面要展示多少个锚点,系统预留了控制点。我不知道这么好用的功能,为什么WordPress不把它光明正大读放出来,当然,没有很光明正大放出来的还有很多神奇的函数,比如,里面有很好几个预设参数,没有评论的时候可以显示一个信息,一条评论的时候可以显示一个信息,多条评论的时候可以显示一个信息,不允许评论的时候又可以有另外一个信息。对中文用户来说,一条评论和多条评论从语句设定上没有区别,但是,对英文来说,就有一个单数跟复数的区别,WordPress是外国人开发的,当然就会有把这两种分开来预设。昨天我没花什么功夫就找到了WordPress原生自带的那个页码导航,这纯粹是我运气好,万一我搜索了好几个小时才找到呢?找到那个原生的函数以后,我只需要对里面的东西进行格式化。WordPress肯定也知道。他们没有格式过的界面是没办法直接使用的,所以早就放好了各种关键字,只要你对那些东西进行合适的处理,就能做出你想要的效果。

在使用原生页码导航之前我查看了WordPress最新官方模板2020的代码,那个模板用的就是原生的页码导航,但经过高度的格式化处理。不知道现在的开发理念是不是区块管理,所以在2020模板里一个php又引用了另外无数的php。一个模板里有好几个文件夹,一个文件夹里有好几个php。当你打开一个以后,你不得不又继续跳到另外一个,继续有可能还要到其它地方。我是个很懒惰的人,基本上我把我需要引用的函数都丢到我的functions.php里。之前的COLOR3有好几个sidebar相关的php,但现在通过用函数判断,我直接把它们都缩到一个里。十年之前的COLOR3,基本上我都只是对CSS动刀,但现在,我会自己研究php里面的判断。其实无论是哪个编程语言,我觉得最终都可以变成简单的几条。第1条是分配,第2条是判断,第3条是循环,第4条是输出。基本上可以这么说,所有编程语言都在玩这几条,尤其是判断跟循环,不断地组合搭配,就能得出你想要的东西。现在回想起来,当年学习C语言的时候,冒泡法基本上可以被称作是终极大boss。当时老师觉得那是教学大纲里最高端的了,搞懂了那个,其它基本上不成问题,而冒泡法这种东西,连老师自己上课的时候也说得小心翼翼,因为她自己也没达到可以随便就脱口而出谈冒泡法的境界。估计现在再让我去冒泡法,我会得心应手很多。

大概当我彻底完成COLOR3模板升级以后,我会重新开始学习Java。几年前那本深入浅出学习Java的书看得我直接投降,因为后面的习题我就没做对几个,如果现在再去看的话,估计会有一些长进了。

2020-02
14

入门R语言

By xrspook @ 9:14:06 归类于: 烂日记

我前天开始系统地学习R语言,用的是一本叫做《R语言统计入门(第二版)》的书。那本书从最最基础的东西开始说起,基本可以说是零基础也能学会。我去说,书里面的内容是统计学和工科大一学生应该掌握的基本概念。现在我只看了一点点,感觉挺有趣,有些东西很容易理解,但有些东西却要绕一个弯。其实之所以这样,是因为R语言设置了很多潜规则。跟我之前学过的C语言不一样,R语言的潜规则多得多,也正是因为,它固有的规则多,所以有些东西毫不费劲就可以得出一个高端的结果。比如,当你要算一个数组的平均值,又或者是标准差的时候,一个简单到爆的函数就搞定了。如果要手工实现那个函数,真的很费神。我觉得R语言这个东西,只要你领会到规则的制定方法,很多东西都可以融会贯通。重点就是你能不能领会到那个精神,消化他们的东西成为自己的一部分。Excel的VBA里面也有很多潜规则,但是,跟R语言比起来,Excel里的很多东西貌似就有点复杂麻烦了,比如说,连起个名字,Excel里面的东西都要比R语言长。

我觉得对我来说,学习R语言跟学习Excel VBA,虽然都是编程语言,但二者不一样。VBA更侧重于技术实现的层面,要解决一些具体的东西,之所以要写VBA,不是要做研究,而是要得出某些结果,通过简单的操作就可以把复杂的流程秒杀搞定。其中的逻辑在写VBA程序的时候就必须已经想得很透彻。又或者可以这么说,在写VBA的时候,实际上你已经通过其它方式,得出了一个你要得到的结论。虽然你不可能所有数据都已经得有结论,但起码在某些数据上面,你已经确信那就是你想要的结果。大概因为我对R语言还了解得不够透彻,所以我觉得R语言最看重的不是结果本身,你不是为了要验证某个结果而去用R语言,而是要让R语言帮助你找到某些东西的规律。

之所以认会到R语言,是因为它有强大的绘图功能,几乎可以这么说,只有你想不到,没有它做不到的。R语言做出来的那些图,跟艺术家很写意地画出来的不一样,R语言做出来的图都是根据某些数据按照某些规则合并计算而来。有些数据摆在一起,我们不运行软件,也能预测到那估计是一个什么样的趋势。在一开始的时候,我们必须了解这个趋势,当R语言把图做出来的时候,我们才可以判定我们的方法有没有用错。当R语言我们已经用得很熟练的时候,我们可以要把我们的数据放到R语言里,然后通过某些我们已经应用成熟的方法让软件给我们得出图像,接着我们再从图像里得出某些结论。

不知道从什么时候开始,我迷上了数据可视化。把一堆数据用表格体现出来,和用图像表达出来效果很不一样。如果图做得好的话,那会给人一种惊艳的效果。如果你只看到一堆表,你的大脑还得寻找表格里数据的相关性,然后在脑子里想象出它们应有的关系。在靠谱的图里面,数据关系直截了当很明白,无论你是老手还是小朋友,在看图的时候,你都能很直观地感受到。

有时我会想,为什么现在理工科的学生仍然要学习C语言,而不直接学习R语言呢?尤其是那些非计算机专业的。理工科学生的课程里必然会遇到带入各种实验和数据分析。不过呢,大学的课程连Excel都不会很细致地讲明白,他们又怎么会把R语言放在眼里呢。

编程语言是种必需掌握的技能,谁是你的菜就得看这个社会推动的是哪种,又或者是你打算用在哪个领域了。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress