duangsuse::Echo
其实我说的可能是和 Java 一些比较... 不是语法层面的东西吧(我好歹看书找了一下) #Java #Android #PL 呃... 比如 Java 方法(类们的)区、堆、虚拟机栈大小、动态扩容什么的,JDK 命令行工具、JDWP、OQL、Object 类一些基础的东西 #clone() #equals() 什么的,String#intern()、本地表(locals)、并发垃圾收集、JIT 解释混合模式、字节码校验、原生类型装拆箱、动态方法分派(java.lang.mh,invokedynamic,我想后面一个『名词』很多…
对不起啊,因为 Telegram Desktop Linux/Qt 编辑框的一个小问题,太长的消息渲染可能会莫名爆炸,所以这个 #learn 我没写完就爆炸了... 加上我发现已经写了很长时间而且天寒地冻的决定还是先庆祝新年吧,有时间再说这个(rt.
其实怎么说呢,Java 它看似是『简单』的语言(相对 Kotlin)但是,其内涵也是可以说是有的,比 C89、Lua、Python、Perl、JavaScript 那些低级语言高到不知哪里去了(跑)(当然 Haskell、FSharp 之类的也很高,但是不是一个方向的高,Java 是 OO 语言,各有各的好)
OO 编程其实是个容易使用但不容易完全理解的玩意,彻底做到如 GoF 那种一份文件一个类图的理解层次是比较难的,需要长年 nontrivial 的积累,现在很多 Java 平台的开发者学的都比较 trivial,不懂的东西也懒得深究,看不透辅助类型开发者们对底层复杂性所做的封装,重视实践轻视理论,但这其实是不利的(如果前端们没有做到人尽其用的话,不能空下应该拿来读书学习的时间就是),理论和实践应该兼而有之,不理解这些『无用』的东西不会妨碍你成为
至于 Kotlin 里
https://kotlinlang.org/docs/reference/classes.html#overriding-rules
祝大家新年新气象,技术无论在深度和广度上都得到提升。画画布局的越做越好看,灵感各种报(爆)表(_),身体健♂康万事如意
说完了。It's over.
其实怎么说呢,Java 它看似是『简单』的语言(相对 Kotlin)但是,其内涵也是可以说是有的,比 C89、Lua、Python、Perl、JavaScript 那些低级语言高到不知哪里去了(跑)(当然 Haskell、FSharp 之类的也很高,但是不是一个方向的高,Java 是 OO 语言,各有各的好)
OO 编程其实是个容易使用但不容易完全理解的玩意,彻底做到如 GoF 那种一份文件一个类图的理解层次是比较难的,需要长年 nontrivial 的积累,现在很多 Java 平台的开发者学的都比较 trivial,不懂的东西也懒得深究,看不透辅助类型开发者们对底层复杂性所做的封装,重视实践轻视理论,但这其实是不利的(如果前端们没有做到人尽其用的话,不能空下应该拿来读书学习的时间就是),理论和实践应该兼而有之,不理解这些『无用』的东西不会妨碍你成为
称职的程序员,但会阻止你成为好的程序员。@JvmName这些注解可能我觉得对,如果想多了解这些八卦知识最好还是去关注一些高理解层次的 Kotlin 工程师,这里当然我就只知道冰封哥(ice1000)和 R 大(rednaxelafx@iteye)了(
@JvmStatic
@JvmField
@file:JvmName
@PureReified
@Contract
reified 这个 type parameter modifier 也可以了解一些至于 Kotlin 里
super 关键字调用祖父类(父类的父类)里的方法也可以学习一下https://kotlinlang.org/docs/reference/classes.html#overriding-rules
open class A {
open fun f() { print("A") }
fun a() { print("a") }
}
interface B {
fun f() { print("B") } // interface members are 'open' by default
fun b() { print("b") }
}
class C() : A(), B {
// The compiler requires f() to be overridden:
override fun f() {
super<A>.f() // call to A.f()
super<B>.f() // call to B.f()
}
}
Kotlin 语法的确非常的灵活非常有表现力,但是,我觉得现在学 Kotlin 的程序员最好还是看看诸如《Kotlin 极简教程》之类的东西,不要连 mapOf(1 to 2, 2 to 3) 这个东西的 AST 是什么都看不透(注意 infix notation 中缀方法调用表示和 vararg)祝大家新年新气象,技术无论在深度和广度上都得到提升。画画布局的越做越好看,灵感各种报(爆)表(_),身体健♂康万事如意
说完了。It's over.
Forwarded from LWL 的基地台
#LWL的自由天空 新鲜出炉:《2018 年度简报》,小伙伴们快来围观吧!(/・ω・\)
Forwarded from dnaugsuz
LWL 果然写跨年笔记了,好耶!
Forwarded from duangsuse Throws
dnaugsuz
LWL 果然写跨年笔记了,好耶!
果然没写。上面那个是 https://example.org/咕咕咕
#PLT #Learn To #Proof 我也是刚刚注意到
命题
写成 Agda 代码就是(基本是抄的,这里说了,所以不要喷我拿别人的代码『装饰』我自己的技能栈,至于前端和 PHP、JavaEE 系后端那一套我后来自会学不消吐槽)
当然上面的那个
下面
∨-intro₁ 则由 Q 构造出一个 P <or> Q 类型实例
在谓词逻辑中,全称量化是尝试形式化
比如定义 2 为一个参数的乘法(Haskell 里用
对任意自然数
当然这是一个比较简单的例子。
对于此例,就是说命题对于所有
<del>这就可见数理逻辑对于 chatbot 开发者来说是多么重要的知识范畴了</del>
后面的
第二种自明。仿照上例显然,请自己理解(喷,没有那么骚的念诗么
(理论上其实是会 Haskell 的基本都看得懂,因为逻辑方面也有这种比较 trivial 的内容非常容易理解,小学数学。还不是奥数。)
(是的,Agda 的函数签名语法我现在还看不太懂更难独立写出来,因为我不理解它后面的那些 theory,不过目前我还不太在乎这些)
(不过,反正你们也不会,那我不会就是有理有据的了,逃)
(这和过程式那一套理论不一样,更 naive 一些,🐸)
(好吧,扯远了,不是一个层面的东西)
说实话,那篇『简单的 Agda 定理证明教程』我也是看了两个星期以后才有能力做到那个『仿照上例显然』的证明的... 好菜啊
然而现在
如果对这一套 Mathematics 上的东西感兴趣的话不妨随便看看某些定律的证明,不管是数论范畴的还是逻辑学上的 🐸 比方说:五点共圆 hhhhh
其实偶尔弄一下这类无聊的东西也怪好玩的,不过不能实用。所以一直都是诸如我这种无聊的人干诸如理论学习这种无聊的事情,真的是相当无聊啊。
是这篇博文的配套阅读,当然里面内嵌的是 MathJax/TeX,当然我比较菜所以就讲不好。算了,总觉得可能... 即使不一定完全正确,也是有价值的。你们有心情学了就好。
结束。
(p -> q) 是一个单独的命题... 描述的是『由命题 p 成立可以推导出命题 q 成立』(p 『蕴含』 q)命题
(p -> a) -> (q -> a) -> (p ∨ q -> a) 不一定要 p 和 v 都成立才成立... 可惜我现在才看得懂写成 Agda 代码就是(基本是抄的,这里说了,所以不要喷我拿别人的代码『装饰』我自己的技能栈,至于前端和 PHP、JavaEE 系后端那一套我后来自会学不消吐槽)
data _∨_ (P Q : Set) : Set where看不懂的话好好复习一下函数式基本理论,什么映射、定义域、递归函数、集合论、lambda 演算什么的,当然我马上就以小学老师的耐心讲解:
∨-intro₀ : P -> P ∨ Q
∨-intro₁ : Q -> P ∨ Q
∨-elim : ∀ {P Q} {R : Set} -> (P -> R) -> (Q -> R) -> (P ∨ Q -> R)
∨-elim pr _ (∨-intro₀ p) = pr p
∨-elim _ qr (∨-intro₁ q) = qr q
当然上面的那个
data _∨_是一个代数类型(Algebraic DataType),
_∨_那两条<del>斜杠</del>下划线表明这是一个 mixfix 类型操作符(类似 Kotlin 和 Haskell 里的 infix notation),或许类似 Haskell 里的
-XTypeOperators
(P Q : Set) : Set
P Q 都是集合,然后结果也是一个集合,这完全是我根据 Haskell 等简单语言态射(函数映射)理论造出的臆想,当然其实我还不够了解函数式下面
where 之后的缩进块『二维文法』是定义的 _∨_类型架构器们,有两个,分别叫
∨-intro₀和
∨-intro₁∨-intro₀ 由 P 构造出一个 P <or> Q 类型实例
∨-intro₁ 则由 Q 构造出一个 P <or> Q 类型实例
∨-elim : ∀ {P Q} {R : Set} -> (P -> R) -> (Q -> R) -> (P ∨ Q -> R)
: 是类型定义
val n : Int 这种
∀ 是 forall
[全称量化]在谓词逻辑中,全称量化是尝试形式化
某个事物(逻辑谓词)对于所有事物或所有有关的事物都为真的概念。结果的陈述是全称量化后的陈述,我们在谓词上有了全称量化。在符号逻辑中,全称量词(典型的"∀")是用来指示全称量化的符号。 比如定义 2 为一个参数的乘法(Haskell 里用
(*) 2 表示)2·0 = 0 + 0 以及2·1 = 1 + 1 以及 2·2 = 2 + 2...
对任意自然数
n,都存在 2·n = n + n。∀n∈ℕ -> 2·n = n + n (伪代码)当然这是一个比较简单的例子。
对于此例,就是说命题对于所有
{P Q} 的可能情况都成立<del>这就可见数理逻辑对于 chatbot 开发者来说是多么重要的知识范畴了</del>
P Q 你们都知道(但是我不知道是不是指在 data _<or>_ 里定义的那个,R 也是 Set)后面的
-> 的后面就是我们逻辑上的定义了 (P -> R) -> (Q -> R) -> (P ∨ Q -> R)然后两种情况模式匹配(Haskell 爱好者们肯定知道,ES6 和 Kotlin 说不定也知道),第一种是匹配
∨-elim pr _ (∨-intro₀ p) = pr p
∨-elim _ qr (∨-intro₁ q) = qr q
P 成立的情况 (P -> R) -> (Q -> R) -> (P ∨ Q -> R)我们最后的命题大概是
pr -> _ -> (∨-intro₀ p) -> R
(P ∨ Q -> R),然后
pr 是 (P -> R),p 是 (P ∨ Q) 里的一个架构器参数,类型为 P,直接 (pr p) 就拿到了 R,结束证明第二种自明。仿照上例显然,请自己理解(喷,没有那么骚的念诗么
(理论上其实是会 Haskell 的基本都看得懂,因为逻辑方面也有这种比较 trivial 的内容非常容易理解,小学数学。还不是奥数。)
(是的,Agda 的函数签名语法我现在还看不太懂更难独立写出来,因为我不理解它后面的那些 theory,不过目前我还不太在乎这些)
(不过,反正你们也不会,那我不会就是有理有据的了,逃)
(这和过程式那一套理论不一样,更 naive 一些,🐸)
(好吧,扯远了,不是一个层面的东西)
说实话,那篇『简单的 Agda 定理证明教程』我也是看了两个星期以后才有能力做到那个『仿照上例显然』的证明的... 好菜啊
然而现在
∀v -> rev (rev v) ≡ v 我还是不会证明... rewrite 语法糖要替换的逻辑关系也暂时无法理解,呵呵 where rev [] = []
rev (x :: xs) = (rev xs) ::ʳ x
rev : ∀ {n m} {A : Set n} -> Vec A m -> Vec A m
(都还是抄的... Haskell 我还会写,至于形式化证明那一套映射关系还不怎么了解)如果对这一套 Mathematics 上的东西感兴趣的话不妨随便看看某些定律的证明,不管是数论范畴的还是逻辑学上的 🐸 比方说:五点共圆 hhhhh
其实偶尔弄一下这类无聊的东西也怪好玩的,不过不能实用。所以一直都是诸如我这种无聊的人干诸如理论学习这种无聊的事情,真的是相当无聊啊。
是这篇博文的配套阅读,当然里面内嵌的是 MathJax/TeX,当然我比较菜所以就讲不好。算了,总觉得可能... 即使不一定完全正确,也是有价值的。你们有心情学了就好。
结束。
Wikipedia
全称量化
在谓词逻辑中,全称命题是对论域内所有成员的性质或关系的论断结果的陈述。在符号逻辑中,全称量词∀是用来指示全称量化的符号。
duangsuse::Echo
#PLT #Learn To #Proof 我也是刚刚注意到 (p -> q) 是一个单独的命题... 描述的是『由命题 p 成立可以推导出命题 q 成立』(p 『蕴含』 q) 命题 (p -> a) -> (q -> a) -> (p ∨ q -> a) 不一定要 p 和 v 都成立才成立... 可惜我现在才看得懂 写成 Agda 代码就是(基本是抄的,这里说了,所以不要喷我拿别人的代码『装饰』我自己的技能栈,至于前端和 PHP、JavaEE 系后端那一套我后来自会学不消吐槽) data _∨_ (P…
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from GitHub
🔨 1 new commit to MiPushTester:canary:
54fdfd3: refactor(app): use Kotlin
Signed-off-by: Trumeet <17158086+Trumeet@users.noreply.github.com> by Yuuta
54fdfd3: refactor(app): use Kotlin
Signed-off-by: Trumeet <17158086+Trumeet@users.noreply.github.com> by Yuuta
Forwarded from Yuuta 🎀 | clrd enroute
一晚上 + 一上午,搞定 Kotlin 基础语法,用到哪学到哪(
Forwarded from Deleted Account
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
import time
import tgcrypto
FIRST_NAME = '[%H:%M CST] /dev/lwl12'
LAST_NAME = '$' # Follow the rules of Python's strftime
START_TIME = time.time()
from pyrogram import Client, api
def update_name(client):
client.send(
api.functions.account.UpdateProfile(
first_name=time.strftime(FIRST_NAME, time.localtime()),
last_name=time.strftime(LAST_NAME, time.localtime()) # Change this if you want to use any other timezones
)
)
print('>>> Name updated.')
if __name__ == '__main__':
app = Client("/home/pi/timeNick/real-time-nick", api_id=114514, api_hash="1919810")
with app:
update_name(app)
quit()
duangsuse::Echo
#Low #China #recommended hhhh 『洋』程序设计语言 禁止过洋节 NB.
不是这样的,大概就是 Ant Design 这个前端开发平台的人弄了个圣诞节”彩蛋“,让圣诞节来临时所有默认的 button 风格都会改变为有圣诞积雪 overlay 的版本。遭致程序员们所认为的『未定义布局』
还有被吐槽的 Merry Chris[t]mas 写错的问题和
当然因为软件许可证的原因 Ant Design 无需为此负责,但这的确是不良实践,实在是不推荐的做法,作为一个模板库设计者主要还是确保辅助软件的功能,功能性的东西上面彩蛋是有点过分。
如果 Ant Design 这种前端平台要加彩蛋的话,推荐还是在诸如开发工具方面,不涉及最终用户的地方加,这样大家都是工程师有话好说。不要强行捆绑给所有使用自己的项目圣诞节彩蛋。
还有被吐槽的 Merry Chris[t]mas 写错的问题和
[title="Ho Ho Ho!"] 的问题。总的来说我觉得这是 Ant Design 自己的锅,因为圣诞彩蛋不应该这么具有入侵性,弄得人家升级以后完全不知道会出现这种情况就很蒙蔽。当然因为软件许可证的原因 Ant Design 无需为此负责,但这的确是不良实践,实在是不推荐的做法,作为一个模板库设计者主要还是确保辅助软件的功能,功能性的东西上面彩蛋是有点过分。
如果 Ant Design 这种前端平台要加彩蛋的话,推荐还是在诸如开发工具方面,不涉及最终用户的地方加,这样大家都是工程师有话好说。不要强行捆绑给所有使用自己的项目圣诞节彩蛋。
Forwarded from 羽毛的小白板
对「彩蛋」两字还是加引号为好