刷完UW Programming Languages的一点感想 二月份没有做什么别的项目,主要的时间花在三门Coursera的课上了。确切的说,其实是同一门课:UW的Programming Language课。 这门课是华盛顿大学的CSE341课程的Coursera版本,根据官网的介绍,大概是「简要介绍了编程语言的基本概念,包括抽象(Abstraction mechanisms)、静态和动态类型、作用域、语法(Syntax)和语义(Semantics)、闭包( 2024-03-25 程序设计杂谈 #编程理念 #函数式编程 #OOP
从Kotlin的设计小窥编程语言的组合性 最近在复习Kotlin的协程,偶然在这篇文章里遇到一道有趣的题目,也就稍微做了一下。 题目第一眼看起来还是挺有难度的,要在Kotlin里面实现Haskell那样的do-notation语法。不过,有了前一篇文章的提示,再加上一些Kotlin/Coroutine和函数式编程的基础,倒也不难做。大概的想法是用协程的挂起和恢复来模拟出Monad的组合。具体的细节就不展开了,有兴趣可以自己试试。显然,Op 2024-02-18 程序设计杂谈 #编程理念
Here's a failed attempt to localize my blog I just finished the i18n (internationalization) feature of this blog. A natural continuation of i18n would be L10n (localization), which I sparsely worked during last weeks. But this time, it seems th 2024-01-24 :en:Daily Updates
SwiftData踩坑记(续) 上次提到使用SwiftUI和SwiftData时候的几个问题,后来也陆续解决了。 SwiftUI的「返回」导航 先说第一个关于SwiftUI的问题。 这里实际上我想做的大概是,在创建新数据的过程中,取消创建并且回到主页面。原本的实现是这样的: 123456Button { pathManager.path.removeLast(2)} label: { L 2023-12-13 笔记 #踩坑 #Swift
Swift、SwiftUI和SwiftData的一些坑 (用SwiftUI写小半个月小项目后的一些心得) 最近在用SwiftUI写一个简单的程序,其实一开始只是觉得SwiftUI也许很适合画图,然后发现Swift Charts画图好像很好看,就想画点看起来比较华丽的图表。不知不觉就写多了……然后就把SwiftUI、SwiftData和Swift Charts都用了一遍。 也差不多小半个月的时间,大概写出了第一个版本,感觉是时候总结一下一些Swift、S 2023-12-09 笔记 #踩坑 #Swift #SwiftUI
稍微升级了一下Blog的插件 不知不觉这个Blog也用了一段时间了,一直也算是将就着用的样子。用的是Fluid主题,大体上还是比较满意的。 前段时间把网站从GitHub Pages搬移到了Vercel,相应的,感觉可以做的事情也更多了呢。还是考虑到我自己本身身处欧盟境内,GDPR也总是比较头疼的事情。因为我很讨厌Cookie弹窗,也就想了一下对策。 更新CDN源 首先第一步是检测了一下网站的进出流量,大概可以分为来自中国境内的 2023-11-22 其他 #方形轮子 #踩坑 #Hexo
关于理论和实践的一些碎碎念 (似乎是blog里面最长的一篇文章,不过也算是好久没有这么畅快地把想说的话说出来了) 更新:一位朋友(DC)对这篇文章的回应 总是看到关于培训班对比科班生,选择Java还是算法的讨论。除此之外,无论是在中文网络还是法国网络,时至今日,感觉一个新手(中学生或者想要学编程的人)提问探询怎么入门学习编程,下面总能看到鼓吹Java、Spring、Angular的言论。 很想吐槽一句话: 一见编程,立刻想 2023-11-19 程序设计杂谈 #编程理念
DRY, KISS, but you may gotta need it 这次来讨论一下YAGNI。在这个blog里面我也很多次表达了对YAGNI的不认可,不过,这也是有原因的。 首先是看到dev和商业人士大谈「为什么我们需要YAGNI」、「清洁的设计」、「满足客户的需要」。看起来像是软件工程里面常见的大道理。不过这里关于YAGNI的讨论就很有意思了。 首先看看YAGNI是怎么定义的: YAGNI: Then I would say that the first th 2023-11-17 程序设计杂谈 #设计模式 #编程理念
简单实现了一个Trie 用Kotlin和OOP的写法,也许比OI风格的代码可读性更好吧。 这是代码片段,总的来说,感觉class和封装能够更好地让代码具有自描述的能力,稍微留心一下把变量名和函数名取好的话,其实并不需要很多注释。这里写注释更多是为了记下思路,或者算是教学目的的了。 12345678910111213141516171819202122232425262728293031323334353637383940 2023-10-27 算法 #数据结构 #Kotlin
从装饰器到函数组合 这是「从函数式角度看设计模式」的第五篇。 装饰器,按照定义,是一种「通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为」的设计模式。一般来说,是在「基类无法被继承或者不想继承基类的情况下复用并扩展基类」的方法。大体上也是使用了组合的概念。 一个典型的OOP写法大概如下: 12345678910111213141516171819202122232425262728293031323334 2023-10-27 程序设计杂谈 #设计模式 #函数式编程