其实我本来以为还可以顺便写个人生第一 Scheme(不是,其实是类似 Scheme 的自己设计的语言,支持基本的 sexp 和中缀表达式、raw string call、pass expression、vararg、default arg、mutable lambda capture)
当然是解释器啊,相信不会有人认为我连 visitor pattern 都不会写吧,不会写还有子类型多态的直接化方式啊
如果能够写出来的话,就可以很开心了,因为我就可以用它来写一些 Android 应用了,也打算试试它和 Dokuss 组合对 Android 程序设计会有什么效果,我的希望是在 doku 提供绑定后,二进制文件的读写对象在 MyScheme 里组合,就可以方便地拿来使用了
比如这里有个简单的例子
只是它像 Python 的 pack/unpack,名字就不好起,结构体只能是匿名的,十分不方便(虽然 MyScheme 可以提供 tuple destruct 的方式),我想只能在 Kotlin 端先定义 ID 了
当然是解释器啊,相信不会有人认为我连 visitor pattern 都不会写吧,不会写还有子类型多态的直接化方式啊
如果能够写出来的话,就可以很开心了,因为我就可以用它来写一些 Android 应用了,也打算试试它和 Dokuss 组合对 Android 程序设计会有什么效果,我的希望是在 doku 提供绑定后,二进制文件的读写对象在 MyScheme 里组合,就可以方便地拿来使用了
比如这里有个简单的例子
[require! io]
[require! doku]
[require! terms]
[term! st-frogs (drepeat frog)]
[term! frog
(dseq dutf dint)]
[end]
[define! frogs '(("江泽民" 1989) ("胡锦涛" 1989 * 91) ("一刀" 999))]
[with (file-open "naive-frogs" 'write) \f ->
(write st-frogs f frogs).]
(print
[with (file-open "naive-frogs" 'read)
\f. (read st-frogs f)]) 只是它像 Python 的 pack/unpack,名字就不好起,结构体只能是匿名的,十分不方便(虽然 MyScheme 可以提供 tuple destruct 的方式),我想只能在 Kotlin 端先定义 ID 了
比如说这里咱们有四个字符,『恭喜发财』~
Array+(臦||鲖|迥)
import org.duangsuse.dokuss.struct.*咱来读取一下这个结构试试。
class 恭喜发财: ArrayLike(4) {
val a: Char by index(0)
val b: Char by index(1)
val c: Char by index(2)
val d: Char by index(3)
}
val 恭喜发财Doku = Seq(::恭喜发财, char16, char16, char16, char16) import org.duangsuse.dokuss.*恭喜发财
import java.io.*
val s = Reader.Instance(System.`in`).restream(::BufferedReader)
恭喜发财Doku.read(s)
Array+(臦||鲖|迥)
s.nativeEndian()
val res=恭喜发财Doku.read(s)
val w = Writer(System.`out`)
恭喜发财Doku.write(w, res)This media is not supported in your browser
VIEW IN TELEGRAM
卧槽,Gradle #java 怎么堕落了?为什么 logo 要改成这酸样?本来酷酷的小象去哪里了?
Forwarded from dnaugsuz
写习惯了就好,你还没有上知乎问为什么他们要写后缀……
我觉得这也就是习惯问题,好像之前 ML 什么的都是这么写来着……
一般来说好像喜欢项目定义语法结构前缀关键字的人会夸赞它定义更明确(因为开头是固定的关键字比如
喜欢
使用的类型签名看起来像是这样,以下程序构筑使用了变量右值(value)、左值(一般是 variable)和子程序,多态是简单的函数重载 (overloading)
其实也未必不可以用 extends 什么的,不过 Kotlin 的 <:> 语法实质上不能完全和 Java 的 extends 划等号,因为
+ 这个语法还被用来
+ Generic(也就是 OOP 的 Parametric polymorphism,参数化多态,也是 Kotlin 完胜 Java 的地方之一,因为它有比 Java8-11 都强多了的泛型推导) 的 upper-bound(类型参数的继承序(order) 上界)
也是使用
比如 Kolin 里一个
Kotlin 里的
不过 Kotlin 首先是多个函数类型
如果要和 Java 对称的话,函数的类型只能写的和 C 一样丑:
我觉得这实在不能和『好看』扯上半点关系…… wtf
我觉得这也就是习惯问题,好像之前 ML 什么的都是这么写来着……
一般来说好像喜欢项目定义语法结构前缀关键字的人会夸赞它定义更明确(因为开头是固定的关键字比如
var val fun constructor)、允许考虑标识符的名字多于类型(这样可能有助于你起好名字)、在隐式类型的时候(比如 type inference, gradual typing)方便不少(因为此时类型不必显式写出,C# 和 Java 10 那个 var 又显得不够好看)喜欢
R fn(T x) {...} 这种的喜欢说它简洁、突出最终值的类型这个重点使用的类型签名看起来像是这样,以下程序构筑使用了变量右值(value)、左值(一般是 variable)和子程序,多态是简单的函数重载 (overloading)
调戏结果 撸猫(猫 小猫) {...}
调戏结果 撸猫(波斯猫 小猫) {...} 这是 C、C++、Java程序 撸猫(猫:猫):调戏结果 {...}
程序 撸猫(猫:波斯猫):调戏结果 {...} 这是 Kotlin、Rust、Swift、Python 什么的typealias Sound = String这个时候,Kotlin 使用
abstract class Noisable(private val noise: Sound) {
fun makeNoise(): Unit = println(noise)
}
data class 猫(val name: String, val isMale: Bool): Noisable("Meow")
<:> 显然会比沿用 extends 要好。其实也未必不可以用 extends 什么的,不过 Kotlin 的 <:> 语法实质上不能完全和 Java 的 extends 划等号,因为
+ 这个语法还被用来
val dict: MutableMap<Char, Char> = mutableMapOf() — 这个例子的代码风格好像是不被 Kotlin 推荐的+ Generic(也就是 OOP 的 Parametric polymorphism,参数化多态,也是 Kotlin 完胜 Java 的地方之一,因为它有比 Java8-11 都强多了的泛型推导) 的 upper-bound(类型参数的继承序(order) 上界)
也是使用
ParamizedType<WTF: Type> 这种语法指定的,虽然 Kotlin 不一定把这个东西叫成 upper-bound aka. ubound,不过 Java 里都叫 Type wildcard capture<? super T>
类型『上』界可以认为是命题 (? > T)… 此处 ? 这个未知类型要『大于』T,也就是说是 T 的 subtype 才能被视为可接受的类型参数,Scala 里这种约束叫 [+T]。比如 Kolin 里一个
mutableListOf(1) as ArrayList<*> (K2JVM 里是一个 typealias 定义的)的继承关系看起来是这样(虽然看起来 T? 不像是个『简单』类型……):Any? Any这里每一个第
List<*>? List<*>
MutableList<*>? MutableList<*>
ArrayList<*>? ArrayList<*>
n+1 的项目,都比上一项『大』,而且这个关系具有传递性(transitive)即 (Number: Any) => (1 is Number) => (1 is Any), 不过不像 T: Comparable<T> 的 cmp 它不具有反对称性(asymmetric)…… 呃不反对称与否我不清楚Any? 是 Kotlin 的顶类型,所有类型都大于它(是它的子类型),Kotlin 里的 <in T> 在 T 是 Any? 的时候,所有接受 T 的函数相当于要求对应位置为 capture<? super Object> 类型,当然这不是很科学的设计,但也能用(我不是指型变性(variance),它是很科学的,尤其在 Scala 和 Kotlin 里非常好用,毕竟你还是希望有一些只能接受『更小』类型的『值需求』位置)Nothing 是 Kotlin 的底类型(bottom type),所有类型都小于它(这个类型是不能被 typealias 的,由此你可以注意到 Kotlin 设计是的确很细腻)<out T> 在 T 是 Nothing 的时候,也相当于所有返回 T 的子过程或者说行为、方法(behavior, method) 要求 capture<? extends Void>
当然这不科学,因为没有类型比 Nothing 更大,不过 Nothing 也是任何类型的子类型,而且上面的 Void 应该说是 Nothing? 这个类型,看作实例值的集合它只有一种可能:null, Java 的那个版本是 final 并且 private Void(){} 隐藏架构器的版本,所以它是没有实例的类型。Kotlin 里的
<*> 是基于 PECS(producer-extends, consumer-super; 或者说生产者-协变, 接受者-逆变) 原则生产消费者模型类型安全的,所以 Map<*, *> 的意思是 Map<? super Nothing, ? extends (Any?)>
也算是支持 subtyping 的类型系统里强化其 completeness (也就是降低假阳性 False positive 的概率,对应的是假阴性 False negative 的 soundness,即允许不一致的类型通过)的一种方案,毕竟你甚至可以 println(System.exit(1)), 从类型安全的角度看这是没有任何毛病的(虽然 Java 里没有返回值就是没有返回值,你不能用 void 去 call println; 或者更准确的说法是 System.exit: (I)V 没有返回值)不过 Kotlin 首先是多个函数类型
(in T) -> out R, 而且这个还和 fun... 比较对称如果要和 Java 对称的话,函数的类型只能写的和 C 一样丑:
调戏结果(*)(波斯猫 猫); 我觉得这实在不能和『好看』扯上半点关系…… wtf
Forwarded from dnaugsuz
其实构造函数本身,如果你结合 Kotlin 1.3 和 Java8 来比较、加上倾向杂交一点而不是 Kotlin 式 OOP+FP 多范式的 Rust 什么的,就会发现它也就是个不良的封装而已
为什么一定要 call super 在加不一致的语法糖(Kotlin 里只要父类,当然不是接口实现全部加上无参 superclass constructor 的括号)什么的呢?Kotlin 里把类的 constructor 进一步独立出来,要求所有特化类的 parent 数据依赖都在语法结构层次上直接提供,又重构了一大堆包括
不过对我来说,好像觉得本来就是应该像 Kotlin 这样做的一样,Java 的抽象程度还是不够,何必要函数呢?难道更多时候不是一个表达式就够了么?
Rust 的就是没有专门的构造函数,用的是类似 Json 语法的 struct initializer,不过也是不难看的
毕竟 Rust 不是面向对象的编程语言,即便偶尔可以用一点点多态(
为什么一定要 call super 在加不一致的语法糖(Kotlin 里只要父类,当然不是接口实现全部加上无参 superclass constructor 的括号)什么的呢?Kotlin 里把类的 constructor 进一步独立出来,要求所有特化类的 parent 数据依赖都在语法结构层次上直接提供,又重构了一大堆包括
static 换 companion object 的操作,Kotlin 比 Java 更像 OOP 一些了,毕竟重要的东西应该写明显一点嘛不过对我来说,好像觉得本来就是应该像 Kotlin 这样做的一样,Java 的抽象程度还是不够,何必要函数呢?难道更多时候不是一个表达式就够了么?
Rust 的就是没有专门的构造函数,用的是类似 Json 语法的 struct initializer,不过也是不难看的
毕竟 Rust 不是面向对象的编程语言,即便偶尔可以用一点点多态(
trait 什么的)也不能说是特别能使用 subtyping 的主
duangsuse::Echo
#Kotlin 又瞎说……我打算来写篇小说来着……
你会发现我最近写的文字越来越不好看了,没办法,我第一次写,算是不知道的别看、知道的复习一下
Forwarded from duangsuse Throws
我去尼玛的, #Apple 就了不起了?你们是用外星人的语言在编程?你写过 Verilog 没有?
没了中国市场,也不见这『设计者的公司』出什么奇迹嘛,也没见 Apple 弄出什么高智商的不得了玩意啊,怎么样?
也没见 Objc, Swift 完胜啥语言嘛。你写过那种只是在脑子里出现的『程序』没有?我见过不少程序员把文档当成代码、把代码到处注释上不必要的解释的。
我想说:你代码写得难看不要加注释、把代码写得又烂又长不要再去附加更烂更长的内联文档。
人长得丑才只得夸他头发『黑亮』、代码写的破烂才拿一大堆 boilerplate 文档凑行数,连自己到底是想实现什么样的东西都不知道的程序员,你现在编程干什么?好好想想再动笔吧!
好的代码本身就是文档、好的程序员从不把文档当成实现的模板,因为他们的实现就已经可以当文档看了,他们把实现当实现、把文档当文档。
而不是像某些人把接口的文档写成实现、把对应实现写成堪比汇编让人半懂不懂的一堆花括号。
当一个人的能力被代码行数、工作时间、文档注释的『细致程度』来衡量的时候,野鸡会变成大佬、真正的大佬被批评成比渣还弱智,也不知道是谁的问题。
这就是编程的『文化大革命』,沉迷空洞理论、想当然、不切实际,也别想落地能出啥好效果了
没了中国市场,也不见这『设计者的公司』出什么奇迹嘛,也没见 Apple 弄出什么高智商的不得了玩意啊,怎么样?
也没见 Objc, Swift 完胜啥语言嘛。你写过那种只是在脑子里出现的『程序』没有?我见过不少程序员把文档当成代码、把代码到处注释上不必要的解释的。
我想说:你代码写得难看不要加注释、把代码写得又烂又长不要再去附加更烂更长的内联文档。
人长得丑才只得夸他头发『黑亮』、代码写的破烂才拿一大堆 boilerplate 文档凑行数,连自己到底是想实现什么样的东西都不知道的程序员,你现在编程干什么?好好想想再动笔吧!
好的代码本身就是文档、好的程序员从不把文档当成实现的模板,因为他们的实现就已经可以当文档看了,他们把实现当实现、把文档当文档。
而不是像某些人把接口的文档写成实现、把对应实现写成堪比汇编让人半懂不懂的一堆花括号。
当一个人的能力被代码行数、工作时间、文档注释的『细致程度』来衡量的时候,野鸡会变成大佬、真正的大佬被批评成比渣还弱智,也不知道是谁的问题。
这就是编程的『文化大革命』,沉迷空洞理论、想当然、不切实际,也别想落地能出啥好效果了
duangsuse Throws
我去尼玛的, #Apple 就了不起了?你们是用外星人的语言在编程?你写过 Verilog 没有? 没了中国市场,也不见这『设计者的公司』出什么奇迹嘛,也没见 Apple 弄出什么高智商的不得了玩意啊,怎么样? 也没见 Objc, Swift 完胜啥语言嘛。你写过那种只是在脑子里出现的『程序』没有?我见过不少程序员把文档当成代码、把代码到处注释上不必要的解释的。 我想说:你代码写得难看不要加注释、把代码写得又烂又长不要再去附加更烂更长的内联文档。 人长得丑才只得夸他头发『黑亮』、代码写的破烂才拿一大堆…
勿对号入座,我说的是一种尤其在某些『大项目』里很普遍的现象
就是即便一个很简单的东西,他们也要加一大堆哪怕只是模板的文档。
就是即便一个很简单的东西,他们也要加一大堆哪怕只是模板的文档。
#Linux bash 对应代码可以是
我很讨厌 Shell 之类对单双引号的差异化处理…… 尤其他们括起来的都是字符串,但处理却不一致,我总是记不清他们的差别
function prompt_errnote() {
alias print='echo -n'
local last=$?
if [ $last != 0 ]; then print "$last|$OldPS1";
else print $OldPs1; fi
}
export OldPS1=$PS1
export PS1='`prompt_errnote`'
好吧,我发现都没有正常工作,不管是 if 还是 PS1 的 bquote……我很讨厌 Shell 之类对单双引号的差异化处理…… 尤其他们括起来的都是字符串,但处理却不一致,我总是记不清他们的差别
Forwarded from YSC 的频道
刚刚尝试在 Busybox ash 中实现 Android shell 中命令提示符 (PS1) 输出错误代码的效果。
效果是如果上一条命令的返回值不为0,则会显示该错误代码。
比如一般情况下显示的是
比如
但如果是外部程序,
解决办法很简单,把 function 代码写到外部 shell 脚本中即可。
效果是如果上一条命令的返回值不为0,则会显示该错误代码。
比如一般情况下显示的是
user@host:/path#
若返回值为 2,则会显示 2|user@host:/path#
遇到了一个奇怪的问题,Busybox ash 的 PS1 不能执行 shell 中的 function,但是能执行外部程序。比如
export PS1='`myfunc`' 会导致 shell 卡死,无法进行输入。但如果是外部程序,
export PS1='`env`' 却没问题。解决办法很简单,把 function 代码写到外部 shell 脚本中即可。
duangsuse::Echo
#Linux bash 对应代码可以是 function prompt_errnote() { alias print='echo -n' local last=$? if [ $last != 0 ]; then print "$last|$OldPS1"; else print $OldPs1; fi } export OldPS1=$PS1 export PS1='`prompt_errnote`' 好吧,我发现都没有正常工作,不管是 if 还是 PS1 的 bquote…… 我很讨厌…
当你看到类似一段简单的程序的时候,你的脑子里应该想到:
方法按顺序是: 1. 空字符串(透明参数) 2. 直接判断采取操作 3. 判断使用函数
这个意思是:哪怕只是一点点的程序,甚至可能逻辑有点不太对,都有十种甚至以上的编写方式
所以,多写几遍会更好
(define ps1-fn其实我应该用不同的括号的…… 我只是这个意思,其实还有很多其他的方法,最重要的是:提升你写出他们的速度
(lambda () (concat (cwd) "$")))
(define wtf
(lambda (status)
(print (concat (cond
((zero? status) ""
(else (show status))) (ps1-fn)))))
(define wtf'
(lambda (status)
(cond
((zero? status) (print (ps1-fn)))
(else (print (concat status (ps1-fn)))))))
(define wtf''
(lambda (status)
((cond
((zero? status) (lambda (s) (print s)))
(else (lambda (s) (print (concat (show stataus) s))))) (ps1-fn))))
方法按顺序是: 1. 空字符串(透明参数) 2. 直接判断采取操作 3. 判断使用函数
ps1 :: String
status :: Int
prompt e
|e == 0 = ps1
|otherwise = show e ++ ps1
prompt' e = print (if e == 0 then ps1 else (show e) ++ ps1)
prompt'' e = if e == 0 then print ps1 else print (show e) ++ ps1
prompt''' e = (if e == 0 then id else (show e ++)) ps1
prompt'''' e = (if e == 0 then "" else show e) ++ ps1 这个意思是:哪怕只是一点点的程序,甚至可能逻辑有点不太对,都有十种甚至以上的编写方式
所以,多写几遍会更好
This media is not supported in your browser
VIEW IN TELEGRAM
duangsuse::Echo
😊 Sticker
#life 这几天虽然我的 Doku 必须要修 bug(当然还有数个我本想继续写的东西),但我打算写点字,所谓名不正言不顺…… 我也是很想被人理解的,毕竟那样我就可以花更多的时间待在电脑前面了,而且也不必因为每周过分聚少离多而损伤视力什么的了……
这个短片小说名字叫《抓周》,大致以不连续的时间顺序给『自然语言处理』方面的计算机科学爱好者陆凌风从少年到中年的历史做了注释
本书的最终主旨就是 —— 追求自己的热爱、保持自己的本心,不要被外物所迷惑 也不要因为看不到希望、不被人理解而放弃
本书打算利用我之前写《drake....》的函数库提供诸如 footnote、night mode 的功能,继续在 GitHub 上以 Pages 的形式写,不过初稿完成之前我不会加 HTML tags 的。
在完成之前可能没时间做其他事情了…… #book
这个短片小说名字叫《抓周》,大致以不连续的时间顺序给『自然语言处理』方面的计算机科学爱好者陆凌风从少年到中年的历史做了注释
本书的最终主旨就是 —— 追求自己的热爱、保持自己的本心,不要被外物所迷惑 也不要因为看不到希望、不被人理解而放弃
本书打算利用我之前写《drake....》的函数库提供诸如 footnote、night mode 的功能,继续在 GitHub 上以 Pages 的形式写,不过初稿完成之前我不会加 HTML tags 的。
在完成之前可能没时间做其他事情了…… #book
#book 这是本书的后记
后记
本书的内容无聊透顶,本书的作者,我们这里暂且称之为『动苏』吧(原名是英文,有点拗口……),他的爱好却不是写小说,而是写代码。
一滴不在大海里的水,从不会停止缓慢但坚决的游荡
一块切错了形状的木料,无论如何也砌不牢仙宫的栋梁
一个放错了地方的人才,怎么看也自然百无一用(当然你得先是个人才)
是马也,虽有千里之能,食不饱,力不足,才美不外见,且欲与常马等不可得,安求其能千里也?
这位动苏家境也不过中产工薪阶层,『读书』无用主义者但爱看 CS(计算机科学) 书、逃课厌学但是很爱写烂代码。日常从来不缺后面死缠烂打的活魏征和再世雷锋、亲爷爷的劝学书信几乎能把整个台式机盖住、讽刺不信任的话可以成为封杀乔碧萝的最后一条评论,家中有人以各种理由要求不缺课,也不得不完成高中的学业,至于其他的个人情况,不方便透露。
然而即便有这么多人不计耗时的这么多次劝谏,动苏也死性不改地在学校里字面意义上地『混』日子! 这是因为有一天,我要写出类似这样一本小说,来 回绝 你们的善意:谢谢你
但是这是我的人生,即便听了你的良言而达到预期,也不能指望我有所感激
即便你的劝诫毁了我,毁了的也只是我,与你不会有太大的关系
说到底,祸福不与共,听起来是很无情,实际上也的确无情。
可在我心里,亲戚就是这样的存在, 对不起 ,我甚至连你们的名字都不会记住,因为我对姓名、数字的记忆已经差到了自己的生日都不太清楚、爸爸的电话号码都要想一想才能记起的程度了,我,是天生没有能力处理人际关系。
可能是注定记不住太多事情,所以可能才要把那一点剩下的可能性,留给自己唯一的爱好吧。
我本来不具有太多的感情,很感谢你们百忙之中能有心,可我就是这么不领情,相信看完这篇小说,个中缘由你们也已经洞悉。
每个人都有自己的人生,我有父母,也有亲戚,可是即便我会继承父母的基因、继承父母的衣钵,我不能继承他们的记忆、不能继承他们的志向,更不可能继承他们的生命历程
如果真的能了的话,恐怕世界上也就不再有所说的『林肯』、『毛泽东』、『比尔·盖茨』、『拿破仑』、『阿姆斯特朗』了吧。
要知道,林肯的父亲只是微不足道的农民,甚至还做过鞋匠
毛泽东的父亲毛贻昌只是个农民,给不了毛泽东打胜仗的能力和治国的魄力
比尔·盖茨的父母很普通,最开始创业时也免不了要借钱
拿破仑的父亲不过是个律师
尼尔·奥尔登·阿姆斯特朗只是出于美国的公务员家庭
既然『坏的』都不能继承,为什么『好的』就能继承了呢? 逻辑还真是有点奇怪啊。
或许有些人是『成功』的,成功是什么?有钱、有权、出名,俗世的定义也不过这三种,但成功,为什么不可能只是 做自己?
如果你找不到自己,或许会把别人的掌声、鼓励、点赞,社会的目光、正面报道、上层的接纳甚至嫉妒当成成功,但如果找到了呢?
吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。 —— 孔子 · 《为政》
被尊为古代圣贤的孔子,恐怕是当今成功学最『无志』的人生观了吧,你看他 —— 三十才自立、五十岁就大谈『天命』不干人事了!和某些十七岁风口浪尖,迎取高富帅白富美、走上人生颠峰的才子总管一比,是否缺了点为师的底气呢?
成功不一定是抛大的、干大的、赚大的。找到自己,健康快乐地生活、做好属于自己的每一件事,『傻气』亦是成功、『佛系』亦是成功。
不过…… 本书…… 无聊透顶?其实对所有无聊的人来说,不会有比自己更无聊的东西吧,这本书的『书语』只有一句:追求自己的热爱、保持自己的本心,不要被外物所迷惑,也不要因为看不到希望、不被人理解而放弃
即便是作为已经『堕落』到了在曾经相信自己的人面前,都会被他们失望地叹口气的人,也依然还没有忘记自己的目的,这样的动苏,应该鼓励吧?
上古时有一种体型极小的飞鸟,浑身灰白,是鸟类中最不起眼的一种,还经常被其他同类嘲笑。
可是,它从不将这些嘲笑放在心里,因为它知道自己有天下最美的嗓子,并深深为自己自豪。
当天地遭逢大劫,阳光被黑色毒雾遮蔽,所有的鸟兽都惊恐得躲起来时。只有这只小鸟,执著地站在离天空最近的一根树枝上,对着东方不断鸣唱。 它天下无双的歌声,驱散了毒雾,让阳光重现大地。
可是,当第一缕阳光照到它身上时,它的生命已经因为不断的鸣唱而耗尽。一颗眼泪从树身上落下,笼住了它从树枝上坠下的尸体,将它永远包裹在一颗泪状的琥珀石里。这颗沉睡着世上最自豪的心的石头,被后人称作枝上雀。 —— 《浮生物语3·上》 第二章 千机.13
其实,本文有很多部分部分学习了《浮生》系列的风格,在此向浮生物语的更新家致敬!不过,毕竟笔触上的偶尔雷同,并不牵涉著作权问题。
记得网络上曾流传的一句话:『愿你走出半生,归来仍是少年。』
既然已经过去数十个年头,人的样貌、阅历,怎么可能毫无变化呢?人间不是天界,活人也不是神仙,人的容颜自会老去、也有天生不可磨灭的欲望。
可是,如果说一个人的心能够数十载不生变化,不忘记曾经的风雨、不失其本来的灵心,又有没有这种可能呢?
动苏一直习惯在国外某即时通讯平台随便发点笔记、讨论什么的…… 什么时候突然想起来要写小说了?嗯…… 故事要从一个月前说起……
好吧,时间不等人,鉴于写作的时间实在不多,长话短说了:
这个动苏的(亲)爷爷某党员干部书记一个月前来家探亲,然后和他的儿子一起对他儿子的儿子加强『学习』上的管束,而且很成功的逼着我在一周唯一的半天假里,还不得不趴在电脑屏幕前 20 小时+,而且还啥都做不完
这篇文章里的 所有 故事情节 纯属捏造,不少看起来很有道理的片段其实并没有事实依据和实现的可能。请看到文章的小朋友不要激动,安全就是生命 0w0!
不过,尽管故事里的陆凌风生在一个对他来说很杯具的家庭里,稍有常识的读者显然可以发现身为作者的我其实对生活的改变是蛮赋予期待的呢!相信以后,总会变得更好吧。
IT 界一个比较知名也比较有个人魅力的工程师,Linus Torvalds 说,他编程是 "Just for fun."
他是 Linux 的开发者和现如今的主要开发者之一,所谓内核(os kernel) 者,操作系统必备组件,是和计算机最底层、最隐秘的电子实现相关度第二高的软件组成成分了,负责管理信息、管理硬件和外设、分配处理资源、提供基本的并行计算辅助操作、提供由对应协议解释的网络访问、保护程序运行和数据安全。它几乎是从被处理器执行的第一条指令开始,肩负起最大的责任,也是所有『程序』运行时视角的最后一瞥。
所有的程序都是存在其设计质量需求的。作为操作系统的内核,它的性能开销、它的稳定性、设计安全性 就是对用户嘱托和重要数据的保险、它的扩展性和代码质量就是未来其上应用、函数库作者编程时可有可无的一抹微笑。
不用说,世界是不会容忍任何一个充满问题和瑕疵的内核的。不少在内核级别工作的程序都曾经在历史上留下过自己的名字,又消失在市场上、消失在研究者的数据里,原因不过是对应的机器没落了、对应的用户离开了、最后的开发者也失望了。可是在不为利益工作的世界里,Linux 一直火到了现在。
Linux Kernel,毫不夸张的说是从网络时代到现今世界上使用之处最为广泛的 os kernel 了,它和它衍生版本的兼容就是各种类型 MCU 以上硬件的基本要求、它所服务的应用程序、处理任务,大到服务集群、数据中心、超算,小到智能手机、冰箱、机顶盒、摄像机,即便是当今算力亚洲第一的神威·太湖之光,也是倚仗着下面一只一只『可爱』热情又好客的小企鹅,搭建而来。
应用程序的质量参差不齐,操作系统内核却是铁打的硬要求。 马虎不得、随便不得,更不能存在半分没弄懂、瞎改写的代码,一次轻微的错误,便是声誉扫地与永远的失信。
所以 Linux 就这样在保证了核心质量的同时滚动下来,很难想像一大群不是为了金钱利益的人,甘愿拿自己本来可以『刷微信、聊微博、刷抖音、看头条、逛B站、划水摸鱼』的时间,贡献了占相当多份量的内核代码。
Linux 成功了。也许这是因为它的开放和应景,可是,如果没有当年的 Linus,那么『废青』地不顾炫耀他老师就是大名鼎鼎的 Minix 开发者,也懒得把自己运行 Minix 的机器『拍照发朋友圈』,反而还去弄他的 Linux 来『反对』他老师的 Minix,然后不拿去发动商业头脑大卖,却万恶地公开了源代码,让所有人都能参与进来加入修改和移植???
天哪,要是他申请了专利,这该有多少钱啊!他对得起他的努力奋斗吗?
可是他,甚至连『自由软件教会』FSF 的会议也没参加太多,好像根本不在乎自己已经出了多大的风头,他只是一个一个电子邮件地回、继续每天站在他的跑步机上敲代码。
只是因为那一句 "Just for fun",我想有些人会说他傻!为什么不在许可证上下点功夫,成为大名鼎鼎的 Bill Gates 的竞争者?
不过。我也就想这么当一个傻子,不是因为我不想『成功』,只是对我来说,钱、权、别人羡慕的眼光,你们哪有我眼前的一条条子程序、一个个抽象重要?
一辈子能留给自己喜欢事情的时间不多,如果你决定了,就不要反悔。
此间乐,不思蜀。
我不知道这和少儿编程、速成培训班、民营专科、选择『挣钱快』专业的初衷有什么出入。或许它们也是殊途同归吧,不过,至少在中国的前沿,总该有点变化吧。
或许『快』的东西才是最浪费时间的,学的时候你节约的那几天的时间,会在未来的几十年里,以长百倍、痛苦百倍的经历,一分不差地归还回来。
很少有人心存机缘能接受真正的快,但它却是最轻松、最能持续的一种速度,可以继续到不惑之年,而不是少白头乃至英年早逝。
不常苦,何有甘?未知寒,焉知暖?
是的,爱不能拿来发电、爱不能填饱肚子、爱不能堵住三姑六婆鄙夷的目光,只是心中未曾给 事业 两个字留出空缺的人啊,何尝能体会到这『爱』字的重量?何尝得到这个 "fun" 背后真正的乐趣?
后记
本书的内容无聊透顶,本书的作者,我们这里暂且称之为『动苏』吧(原名是英文,有点拗口……),他的爱好却不是写小说,而是写代码。
一滴不在大海里的水,从不会停止缓慢但坚决的游荡
一块切错了形状的木料,无论如何也砌不牢仙宫的栋梁
一个放错了地方的人才,怎么看也自然百无一用(当然你得先是个人才)
是马也,虽有千里之能,食不饱,力不足,才美不外见,且欲与常马等不可得,安求其能千里也?
这位动苏家境也不过中产工薪阶层,『读书』无用主义者但爱看 CS(计算机科学) 书、逃课厌学但是很爱写烂代码。日常从来不缺后面死缠烂打的活魏征和再世雷锋、亲爷爷的劝学书信几乎能把整个台式机盖住、讽刺不信任的话可以成为封杀乔碧萝的最后一条评论,家中有人以各种理由要求不缺课,也不得不完成高中的学业,至于其他的个人情况,不方便透露。
然而即便有这么多人不计耗时的这么多次劝谏,动苏也死性不改地在学校里字面意义上地『混』日子! 这是因为有一天,我要写出类似这样一本小说,来 回绝 你们的善意:谢谢你
但是这是我的人生,即便听了你的良言而达到预期,也不能指望我有所感激
即便你的劝诫毁了我,毁了的也只是我,与你不会有太大的关系
说到底,祸福不与共,听起来是很无情,实际上也的确无情。
可在我心里,亲戚就是这样的存在, 对不起 ,我甚至连你们的名字都不会记住,因为我对姓名、数字的记忆已经差到了自己的生日都不太清楚、爸爸的电话号码都要想一想才能记起的程度了,我,是天生没有能力处理人际关系。
可能是注定记不住太多事情,所以可能才要把那一点剩下的可能性,留给自己唯一的爱好吧。
我本来不具有太多的感情,很感谢你们百忙之中能有心,可我就是这么不领情,相信看完这篇小说,个中缘由你们也已经洞悉。
每个人都有自己的人生,我有父母,也有亲戚,可是即便我会继承父母的基因、继承父母的衣钵,我不能继承他们的记忆、不能继承他们的志向,更不可能继承他们的生命历程
如果真的能了的话,恐怕世界上也就不再有所说的『林肯』、『毛泽东』、『比尔·盖茨』、『拿破仑』、『阿姆斯特朗』了吧。
要知道,林肯的父亲只是微不足道的农民,甚至还做过鞋匠
毛泽东的父亲毛贻昌只是个农民,给不了毛泽东打胜仗的能力和治国的魄力
比尔·盖茨的父母很普通,最开始创业时也免不了要借钱
拿破仑的父亲不过是个律师
尼尔·奥尔登·阿姆斯特朗只是出于美国的公务员家庭
既然『坏的』都不能继承,为什么『好的』就能继承了呢? 逻辑还真是有点奇怪啊。
或许有些人是『成功』的,成功是什么?有钱、有权、出名,俗世的定义也不过这三种,但成功,为什么不可能只是 做自己?
如果你找不到自己,或许会把别人的掌声、鼓励、点赞,社会的目光、正面报道、上层的接纳甚至嫉妒当成成功,但如果找到了呢?
吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。 —— 孔子 · 《为政》
被尊为古代圣贤的孔子,恐怕是当今成功学最『无志』的人生观了吧,你看他 —— 三十才自立、五十岁就大谈『天命』不干人事了!和某些十七岁风口浪尖,迎取高富帅白富美、走上人生颠峰的才子总管一比,是否缺了点为师的底气呢?
成功不一定是抛大的、干大的、赚大的。找到自己,健康快乐地生活、做好属于自己的每一件事,『傻气』亦是成功、『佛系』亦是成功。
不过…… 本书…… 无聊透顶?其实对所有无聊的人来说,不会有比自己更无聊的东西吧,这本书的『书语』只有一句:追求自己的热爱、保持自己的本心,不要被外物所迷惑,也不要因为看不到希望、不被人理解而放弃
即便是作为已经『堕落』到了在曾经相信自己的人面前,都会被他们失望地叹口气的人,也依然还没有忘记自己的目的,这样的动苏,应该鼓励吧?
上古时有一种体型极小的飞鸟,浑身灰白,是鸟类中最不起眼的一种,还经常被其他同类嘲笑。
可是,它从不将这些嘲笑放在心里,因为它知道自己有天下最美的嗓子,并深深为自己自豪。
当天地遭逢大劫,阳光被黑色毒雾遮蔽,所有的鸟兽都惊恐得躲起来时。只有这只小鸟,执著地站在离天空最近的一根树枝上,对着东方不断鸣唱。 它天下无双的歌声,驱散了毒雾,让阳光重现大地。
可是,当第一缕阳光照到它身上时,它的生命已经因为不断的鸣唱而耗尽。一颗眼泪从树身上落下,笼住了它从树枝上坠下的尸体,将它永远包裹在一颗泪状的琥珀石里。这颗沉睡着世上最自豪的心的石头,被后人称作枝上雀。 —— 《浮生物语3·上》 第二章 千机.13
记得网络上曾流传的一句话:『愿你走出半生,归来仍是少年。』
既然已经过去数十个年头,人的样貌、阅历,怎么可能毫无变化呢?人间不是天界,活人也不是神仙,人的容颜自会老去、也有天生不可磨灭的欲望。
可是,如果说一个人的心能够数十载不生变化,不忘记曾经的风雨、不失其本来的灵心,又有没有这种可能呢?
动苏一直习惯在国外某即时通讯平台随便发点笔记、讨论什么的…… 什么时候突然想起来要写小说了?嗯…… 故事要从一个月前说起……
好吧,时间不等人,鉴于写作的时间实在不多,长话短说了:
这个动苏的(亲)爷爷某党员干部书记一个月前来家探亲,然后和他的儿子一起对他儿子的儿子加强『学习』上的管束,而且很成功的逼着我在一周唯一的半天假里,还不得不趴在电脑屏幕前 20 小时+,而且还啥都做不完
这篇文章里的 所有 故事情节 纯属捏造,不少看起来很有道理的片段其实并没有事实依据和实现的可能。请看到文章的小朋友
不过,尽管故事里的陆凌风生在一个对他来说很杯具的家庭里,稍有常识的读者显然可以发现身为作者的我其实对生活的改变是蛮赋予期待的呢!相信以后,总会变得更好吧。
IT 界一个比较知名也比较有个人魅力的工程师,Linus Torvalds 说,他编程是 "Just for fun."
他是 Linux 的开发者和现如今的主要开发者之一,所谓内核(os kernel) 者,操作系统必备组件,是和计算机最底层、最隐秘的电子实现相关度第二高的软件组成成分了,负责管理信息、管理硬件和外设、分配处理资源、提供基本的并行计算辅助操作、提供由对应协议解释的网络访问、保护程序运行和数据安全。它几乎是从被处理器执行的第一条指令开始,肩负起最大的责任,也是所有『程序』运行时视角的最后一瞥。
所有的程序都是存在其设计质量需求的。作为操作系统的内核,它的性能开销、它的稳定性、设计安全性 就是对用户嘱托和重要数据的保险、它的扩展性和代码质量就是未来其上应用、函数库作者编程时可有可无的一抹微笑。
不用说,世界是不会容忍任何一个充满问题和瑕疵的内核的。不少在内核级别工作的程序都曾经在历史上留下过自己的名字,又消失在市场上、消失在研究者的数据里,原因不过是对应的机器没落了、对应的用户离开了、最后的开发者也失望了。可是在不为利益工作的世界里,Linux 一直火到了现在。
Linux Kernel,毫不夸张的说是从网络时代到现今世界上使用之处最为广泛的 os kernel 了,它和它衍生版本的兼容就是各种类型 MCU 以上硬件的基本要求、它所服务的应用程序、处理任务,大到服务集群、数据中心、超算,小到智能手机、冰箱、机顶盒、摄像机,即便是当今算力亚洲第一的神威·太湖之光,也是倚仗着下面一只一只『可爱』热情又好客的小企鹅,搭建而来。
应用程序的质量参差不齐,操作系统内核却是铁打的硬要求。 马虎不得、随便不得,更不能存在半分没弄懂、瞎改写的代码,一次轻微的错误,便是声誉扫地与永远的失信。
所以 Linux 就这样在保证了核心质量的同时滚动下来,很难想像一大群不是为了金钱利益的人,甘愿拿自己本来可以『刷微信、聊微博、刷抖音、看头条、逛B站、划水摸鱼』的时间,贡献了占相当多份量的内核代码。
Linux 成功了。也许这是因为它的开放和应景,可是,如果没有当年的 Linus,那么『废青』地不顾炫耀他老师就是大名鼎鼎的 Minix 开发者,也懒得把自己运行 Minix 的机器『拍照发朋友圈』,反而还去弄他的 Linux 来『反对』他老师的 Minix,然后不拿去发动商业头脑大卖,却万恶地公开了源代码,让所有人都能参与进来加入修改和移植???
天哪,要是他申请了专利,这该有多少钱啊!他对得起他的努力奋斗吗?
可是他,甚至连『自由软件教会』FSF 的会议也没参加太多,好像根本不在乎自己已经出了多大的风头,他只是一个一个电子邮件地回、继续每天站在他的跑步机上敲代码。
只是因为那一句 "Just for fun",我想有些人会说他傻!为什么不在许可证上下点功夫,成为大名鼎鼎的 Bill Gates 的竞争者?
不过。我也就想这么当一个傻子,不是因为我不想『成功』,只是对我来说,钱、权、别人羡慕的眼光,你们哪有我眼前的一条条子程序、一个个抽象重要?
一辈子能留给自己喜欢事情的时间不多,如果你决定了,就不要反悔。
此间乐,不思蜀。
我不知道这和少儿编程、速成培训班、民营专科、选择『挣钱快』专业的初衷有什么出入。或许它们也是殊途同归吧,不过,至少在中国的前沿,总该有点变化吧。
或许『快』的东西才是最浪费时间的,学的时候你节约的那几天的时间,会在未来的几十年里,以长百倍、痛苦百倍的经历,一分不差地归还回来。
很少有人心存机缘能接受真正的快,但它却是最轻松、最能持续的一种速度,可以继续到不惑之年,而不是少白头乃至英年早逝。
不常苦,何有甘?未知寒,焉知暖?
是的,爱不能拿来发电、爱不能填饱肚子、爱不能堵住三姑六婆鄙夷的目光,只是心中未曾给 事业 两个字留出空缺的人啊,何尝能体会到这『爱』字的重量?何尝得到这个 "fun" 背后真正的乐趣?
今天看到张三买车置地,忍不住捶胸顿足或者应景买弄一番、明天为请吃友人的饭未曾回请翘首企盼,一整天沉着于无聊之事,无法自拔。
生活琐事越来越多、『刷』过去『混』的时间越来越多、别人灌输给你的思想越来越多、别人的『你不行!、你一定输!、你比不过!、只有他们才行!、你不可能做到!、没人会看得起你!』在耳朵里越来越敏感,便离问题的关键点越远、离自己的天命越远。
心存旁骛、朝四暮三,抓住的太多,得到的反而越来越少,连自己要什么都不知道,凭什么找到真正充实的生活?
每个细节离完美差一点、每个问题和平均大差不差、每个人离自己的天命差几个念头,可一个国家最终差下来的,又岂止天上地下。
这里不在几百年前的紫禁城之内,为什么不活的坦然一点、快乐一点、真实一点?
改革开放这么多年了,或许做幸福的人所需要的,也不过只是一份像陆凌风一样,找回那份自己最再乎的事情的觉悟吧。
生活琐事越来越多、『刷』过去『混』的时间越来越多、别人灌输给你的思想越来越多、别人的『你不行!、你一定输!、你比不过!、只有他们才行!、你不可能做到!、没人会看得起你!』在耳朵里越来越敏感,便离问题的关键点越远、离自己的天命越远。
心存旁骛、朝四暮三,抓住的太多,得到的反而越来越少,连自己要什么都不知道,凭什么找到真正充实的生活?
每个细节离完美差一点、每个问题和平均大差不差、每个人离自己的天命差几个念头,可一个国家最终差下来的,又岂止天上地下。
这里不在几百年前的紫禁城之内,为什么不活的坦然一点、快乐一点、真实一点?
改革开放这么多年了,或许做幸福的人所需要的,也不过只是一份像陆凌风一样,找回那份自己最再乎的事情的觉悟吧。