duangsuse::Echo
802 subscribers
4.49K photos
138 videos
583 files
6.81K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
#PL #dev
#![no_std] 的 Rust、C 还是 C++ 这是个问题...
还好 Ada、Fortran 等语言没人维护性能不好可以早点排除... 是多么美好的事情...
Forwarded from Programmer Jokes
Forwarded from Programmer Jokes
Forwarded from Programmer Jokes
duangsuse::Echo
#recommended #kotlin #dev out 等关键字:可以说是写得很好的文档了,易懂 https://www.kotlincn.net/docs/reference/keyword-reference.html
#CSharp *注意,在 C# 里 out 的语义是完全不同的,基本是 ref 引用传参无需初始化的版本,有一篇博文解释了它
有一点我无法理解的,Kotlin 文档里提出这是从 C# 里抄过来的语义,那么就是说 C# 支持在参数列表和泛型约束里使用这个关键字,或许
(我指的是 BMP 图片读写的意思
太懒,所以重构不计效率的就花了一个小时(现在总算结束了?
学会了什么? #learn #kotlin

1. java.imageiojava.awt 包部分功能的使用
2. Java URL 类使用
3. RGB Color
4. Kotlin vararg
5. 知道了自己现在还是不知道 Array<out String> 啥意思
6. 知道了可能别人也不知道,就是从 Kotlin 编译器推导的类型抄抄罢了
7. stepuntil 语法
8. 之前把图片打印倒了的说,一改循环 xy 到 yx 立刻修好
8.5. 我下面说的算法分析能力几乎没有就是指不知道为啥会打印倒 180 度,BufferedImage get 是怎么处理的,怎么就倒悬了 (绝望)
9. 累死了
总之就是算法分析模拟和理论理解能力还不够强,虽然比以前看着 MapGen 一脸蒙蔽好多了,依然有很大的提升空间,看来天才还是不存在的... 不相信天才... 即使我已经高二了
This media is not supported in your browser
VIEW IN TELEGRAM
先试用 lex / re2c 和 Yacc
https://github.com/kztao/yscheme/blob/master/compiler.ss

这个从 Chez Scheme 作者 Kent Dybvig 的课堂上带来开源的 Scheme 编译器,可以把 R6RS 的子集的代码转换为 AT Syntax X86(_64) 汇编代码,不过需要一个额外的运行环境才能执行

Only the main compiler code is here. I don't have copyright of the rest of the code (test framework, runtime system etc)

直到现在都没有人公开编写此编译器输出需要的链接库,这也就是个废物了?因为可能大家都看不懂递归、CPS、Combinator... (反正还有一大堆真·函数式的理论没几个人看的)

在他删除这个 repo 之后,只有寥寥两个 fork 继续存在,而且没有人动过那些代码,真是应了某些科幻小说里“他们无法解开我加密的代码”这句话了,Scheme 是多像数学,看起来多么美观自然但是多么难理解,不熟悉者对着一大堆括号一头雾水,满眼 define lambda match 不知何意,大概 Haskell 都比这更像过程式语言不是吗...

最多的分析大概就是他吹出去的那 40 行代码了,一个 CPS 编译器

A notable thing of this compiler is its use of high-order evaluation contexts, an advanced technique used in CPS transformers, which resulted sometimes in much simpler and shorter code.


那么多人崇拜王垠,觉得他很酷,很厉害,可惜这些觉得他很厉害的程序员里,有几个知道他到底是做什么的呢?

所谓编译原理、编译器技术,可能以他为榜样的那部分人里,并没有人真正对这些感兴趣,只是作为一个遥不可及的偶像罢了。

可是,现在的计算机工程需要一种像神一样的存在吗?


如果你希望你的DSL跑的像射命丸文一样快,你可以把这些特性去掉,然后你就能在你自己的编译器里做优化(inline,JIT,fusion,tco,lazy,unwrap lambda)了。

然后你又会发现,这些其实很简单的东西知乎上的程序员似乎觉得这很高大上诶!那些脑子转不过来的程序员连 Parser Combinator 都搞不懂,用 JS 写出 JS 的 Parser、写出 C 语言的 Tokenizer 和 Grammar Analyzer 就能称霸一方,你一去他们岂不是集体跪拜?


真香... 🙈
duangsuse::Echo
https://github.com/kztao/yscheme/blob/master/compiler.ss 这个从 Chez Scheme 作者 Kent Dybvig 的课堂上带来开源的 Scheme 编译器,可以把 R6RS 的子集的代码转换为 AT Syntax X86(_64) 汇编代码,不过需要一个额外的运行环境才能执行 Only the main compiler code is here. I don't have copyright of the rest of the code…
现在咱正在测试 play compiler.ss 🐱
终于知道 define-syntax 是什么意思了...

注释掉没有的代码后,

;(load "match.ss")
;(load "helpers.ss")
;(load "driver.ss")
;(load "fmts.pretty")
;(load "wrapper.ss")

Chez Scheme 说

[DuangSUSE@duangsuse]~/Projects% scheme compiler.ss
Chez Scheme Version 9.5
Copyright 1984-2017 Cisco Systems, Inc.

Exception: misplaced aux keyword (unquote x) at line 234, char 8 of compiler.ss

发现有这些代码

(define mref?
(lambda (x)
(match x
[(mref ,base ,off) #t]
[,x #f]))) ; misplaced aux keyword (unquote x) at line 234

然后,参照手册 https://www.scheme.com/tspl4/examples.html

(display ,x) ; misplaced aux keyword (unquote x)

(define-syntax unquote
(lambda (x) 1)

(display ,s) ; => 1

(define-syntax unquote
(syntax-rules ()
[(_ e) (display e)]))

,display
#<procedure display>

好玩,可惜 ApkBundler Scheme 不打算使用这样的宏系统

因为 compiler.ss 使用了太多自定义语法 想白白测试来很困难,所以暂时不继续测试了