0%

3.23日区块链课后心血来潮,遂尝试描绘一下自己心中最理想的语言的模样:(不分先后)

  • 易书写、易阅读

    这个太关键了,个人感觉C和C++在这方面简直负分。以下列举几个我比较喜欢的点:(不分先后)

    • 函数可以返回多个值

    • 语句末尾可以不用加分号

      这样可以防止某些人把一堆语句塞到一行

    • 统一代码风格、命名风格

  • 强类型

    没啥可说的,就是你,Javascript.

    关于是否强类型检查,个人并没有特殊的倾向。我希望二者兼有。Go属于二者兼有但倾向强,Python属于二者兼有但很倾向弱,Typescript可能不错(没尝试过)。

  • 快速

    其实,说句公道话,各个编程语言只是人类与计算机沟通的桥梁。C语言和其他语言并没有什么区别,C语言的快速,很大程度上是因为C语言的编译器经过了几十年无数人的优化,有诸如尾递归消去、循环展开等优化,而这些优化思想并不是language-specific的,完全可以应用到其他语言上。

    有一个很好的例子就是,Python和Javascript相比,Javascript更加灵活,根据常理,灵活的代价是牺牲速度。但是为什么Javascript的执行速度这么快,以至于诸多服务器、客户端程序都是JS开发的?因为JS的v8解释器是Google雇佣几十个人开发十几年的产品,已经把JS这个动态语言优化到了编译成机器代码的程度。那么Python作为相对来说限制更强的语言,应该速度更快才对。但是并没有,为什么?因为Python的维护主要由一群爱好者业余时间维护。一言以蔽之,给钱,就能行。

    理论上来说,所有语言优化到极致,它们的速度几乎是一样的。for(int i=0; i<n; ++i);的速度,放在哪个语言里都应该是一样的。

    C语言进行纯计算确实快,这是因为C语言关心的事情少。但是,现在除了超频爱好者/OIer/Researcher,谁还在关心单线程的运算速度?大厂的服务器后台一个个都是Nodejs搭的。

  • 高并发

    关于这一点,我非常喜欢Go的思想:通过通信来共享内存,而不是共享内存来通信。Goroutine的设计爱了爱了。

  • 安全

    • 线程安全

    • 内存安全

      对于指针,一定要谨慎设计。空指针、野指针的隐患太大了。

      或者干脆没有指针,就像Python/JS一样,全部都是引用。变量名?就是个名字罢了。

  • 简单的面向对象支持

    前几年面向对象大火,现在已经不行了。C++的面向对象语法就是垃圾,何必要搞得这么复杂?像Python/Go 一样简洁有效不好吗?在学习这些语言的面向对象特性时,我可以清楚地感受到设计者在面向对象方面花费的心思。

一些小细节:

  • 不要有Stop the world垃圾回收机制。应用程序循环性卡顿会限制它的应用场景。Java的致命弱点就是它。Go似乎有所改善。Rust在这方面做的不错。

Update on 2021/4/28:

C和Rust可以嵌入式,Go和Python有运行时环境,因此几乎没人搞嵌入式。

Python的优点:好写

阅读全文 »

此贴用来记录一些日常使用和开发中的小技巧~

Program

Git清除commit记录

1
2
3
4
5
6
7
8
9
git reset COMMIT_ID --soft/--hard

git fsck --unreachable

git reflog expire --expire-unreachable=now --all
git gc --prune=now

git reset --hard SHA1
git reset --hard HEAD^ (HEAD后面有几个^,就是撤销到往前第几次)

GitHub Debug

1
2
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3

在Git历史中搜索字符串

Git can search diffs with the -S option (it’s called pickaxe in the docs)

阅读全文 »

前几日心血来潮打算尝试番茄工作法,于是上网搜索了一下工具,发现了Strict Workflow这个插件,可以在工作的时候屏蔽指定网站,不错。其实本来想用使用人数最多的Pomodoro插件Marinara,可惜缺少那个功能,而且界面好看又不能吃是吧。

发现Strict Workflow在GitHub上开源,可惜作者已经不维护了。有很多PR都没有合并,我看了看这些PR添加的Feature都不错的,于是打算自己维护一个咯。

仓库链接

目前已添加的Feature:

  • 长短休息
  • 统计信息
  • 设置目标
  • 新标签页提醒
  • 点击通知自动开始
  • 背景音乐
  • 请从GitHub仓库获取更多

image-20210411154211444

Upd on 2022.11.29:

image-20221129111008669

阅读全文 »

学习离散数学(2)过程中的一些记录。

图论

道路与回路

简单道路:边不重复

初级道路:点不重复

1
2
3
4
5
回路:起点终点相同
简单通路:起点到终点所经过的边不同
简单回路:起点到终点所经过的边不同+回路
初级通路:起点到终点所经过的顶点各异+简单通路
初级回路/圈:起点到终点所经过的顶点除起点终点相同外,其余顶点各异+简单回路

如果简单图G的任意两结点之间恒有,则G中存在哈密顿回路。

如果简单图G的任意两结点之间恒有,则G中存在哈密顿道路。

此定理的证明妙啊!

如果图G有哈密顿回路,那么任取k个点,则的连通分支不会超过k个。

阅读全文 »

记录一下自己搭建Hexo的心路历程以及相关配置,因为过去了很久所以可能记忆已经不清晰了。

起因

最开始为什么想要好好搭博客呢,是因为 寒假闲得慌 看到域名很便宜并且配合Cloudflare可以实现很好的效果,于是就心动了。并且觉得生命中发生了这么多事,值得记录下来(要不然就忘了),而且既然记就不要记在本地,万一有个三长两短。放在网站上还可以为社会创造点价值对吧。

其实一开始还想记录和HYX的每一天的,现在看起来…

配置

于是去Namesilo购买了i207m.top这个域名,一年~30RMB。然后配置Cloudflare,记得当时我以为就把前2个Name server改了就可以,于是等了一段时间,最后发现还要把第三个Name server删掉。

博客自然使用Hexo+Github Pages,建立一个Private repo用来存源码,使用Github Actions实现自动部署,学习了一下它的脚本配置。

然后还申请了Google Search Console,纯粹用来玩…已经对访问量佛系了。

阅读全文 »