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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
羡慕(
Forwarded from dnaugsuz
你们 Kotlin 大会传教了泛型擦除没有... 不是很懂这个消息
Forwarded from Hinnka Zhou
有点不太理解这段代码,什么情况下泛型会被擦除,什么情况不会?
Forwarded from dnaugsuz
我一直以为 Java 8 的泛型都是虚的伪泛型... 只有编译期存在,检查一下就完了
然后运行期的 checkcast 强制转型指令还是少不了
有没有了解 Java 这方面的大佬给普及一下知识,我意向是他弄错了,这个问题和泛型擦除无关,Java 8 本来就只有虚泛型,反射的元数据另一回事
羽毛的小白板
比如这一个地方就是该书作者 SB 的一处。这里表明他分不清什么是源代码和编译结果,也似乎认为所有语言都是脚本语言,而且不同的语言还能杂交 https://t.me/dsuse/8287
emmm 有点不太懂,你说的第一条我看了一会找不到具体的条目所以无法判断

第二条嘛,脚本语言大概就是说... VB 这种会把 Long 看成什么... 的?

不同语言杂交嘛... 我觉得他的意思大概是 FCL(CLR 的 std, CLR 就是 Common Language Runtime)
开始只考虑 C# 语言设计了,有些程序员在 FCL 里创建其他的 CLR 语言(e.g. 基于 DLR 的 IronPython)里不自然的方法名称(如 GetLongLength() 而不是 GetInt64Length()

CLR 本来就是『杂交』语言运行时嘛... 虽说 CLR 语言不是一个语言,不像某些语言里还能内联其他语言代码一样
但是... 他们都在这个 CLR 共同运行时里运行,所以一些东西比如各种 CTS/CLI 类型是可以共享的,他说的杂交大概是这个意思

e.g. 我们有个 VB .NET 的伪代码

Class Fot
Private Bar As Boolean = False

Sub New()
End Sub

Public Sub Baz()
If Bar Then
Console.WriteLine("Faz")
Else
Bar = True
End If
End Sub
End Class

C# 里也可以用 VB 的类型

var fot = new Fot();
fot.Baz();
fot.Baz();
Forwarded from Deleted Account
泛型擦除就是 class<T> 的 T 只在编译期检查吧
Forwarded from dnaugsuz
应该是,另外 Kotlin 有一个 refied generics 特性可以内联方法泛型参数拿到泛型的 Class<T> 反射对象这个 Java 8 就做不到

inline fun <reified T> getGenericClass(klass: T) = T::class.java
dnaugsuz
应该是,另外 Kotlin 有一个 refied generics 特性可以内联方法泛型参数拿到泛型的 Class<T> 反射对象这个 Java 8 就做不到 inline fun <reified T> getGenericClass(klass: T) = T::class.java
inline fun <reified T> getGenericClass() = T::class.java

fun main(vararg args: String) = println(getGenericClass<Int>().canonicalName)
#ai #machl 唉,现在中国小团队的『字典机』机器人,真的不足以称之为『人工智能』
侮辱了人工智能这个名词
Forwarded from Leonn 的资讯频道
duangsuse::Echo
emmm 有点不太懂,你说的第一条我看了一会找不到具体的条目所以无法判断 第二条嘛,脚本语言大概就是说... VB 这种会把 Long 看成什么... 的? 不同语言杂交嘛... 我觉得他的意思大概是 FCL(CLR 的 std, CLR 就是 Common Language Runtime) 开始只考虑 C# 语言设计了,有些程序员在 FCL 里创建其他的 CLR 语言(e.g. 基于 DLR 的 IronPython)里不自然的方法名称(如 GetLongLength() 而不是 GetInt64Length())…
所以,看到了吧? #learn #CS #dev

我们吹的其实不是什么会几门语言,我们吹的是能看透各种各样语法糖、各种各样范式语言背后真正的逻辑和结构的能力

吹的是能在一周内学会 7 门语言,但不是吹会 Bash 会 Java 会 Kolin 会 Python 会 C++ 什么的
也不是吹什么全栈工程师

吹的是对这类抽象结构的分析能力,吹的是看一眼 VB.Net 代码后就能把 var str = new String() 化为 Dim str As New String() 的能力

吹的不是虚荣,是自信

正如王垠吹他的 70 行代码,吹的不是那 A+ 的分数,吹的是 7 天手写解决别人 20 多年困扰难题的能耐
#life #tech #PL #Java #Haskell

出去和我妈的朋友吃了个饭,有幸在最后无聊的那段时间里看了看 Wikipedia 的 PL 列表,顺便看到了 Nim、Haxe 这种奇奇怪怪的语言

顺便学了点特性分类的知识(比如泛型和反射)

https://en.wikipedia.org/wiki/List_of_programming_languages

https://en.wikipedia.org/wiki/Comparison_of_programming_languages
Forwarded from 羽毛的小白板
防止给别人造成「类型」上的误解是个伪需求,况且这不是 C++,是 C#,类型长度是有明确的标准。难道看个代码发现一个整形变量,我一定要在心中确定它有多长?我知道它表示一个整数不就够了吗?真要深究它有多长,为何不去了解一下相关的标准?

而那个「别的语言因为你使用 long 但是这不是关键字就不编译」很莫名其妙。难道是用某个不用 long 作为关键字的语言的编译器来编译 C# 的代码吗?就算是能内嵌代码,不应该是参照公共类型的标准吗?
假如我用 VB.Net 写的一个程序集里有个参数用 Integer 类型,难道在 csc 眼中它就是叫 Integer,但是 C# 没这个关键字就拒绝编译?这是哪个次元的 CLR?

https://t.me/dsuse/8340
Forwarded from 羽毛的小白板
CLR 的标准 CLI 明确是一个无关语言的架构,但是在 Jeffrey Richter(该书作者)的世界里 CLI 是语言相关、一些代码是以脚本存在、没有中间语言
羽毛的小白板
CLR 的标准 CLI 明确是一个无关语言的架构,但是在 Jeffrey Richter(该书作者)的世界里 CLI 是语言相关、一些代码是以脚本存在、没有中间语言
哦,我基本明白了,就是说 C# 就是 using int = System.Int32 这种吧,然后别的语言

... 哦... 我彻底糊涂了... 算了 😶
CLI 还真是乱伦风格... 各种语言纠缠不清的理解起来有点麻烦... 我还搞不懂... 头昏

其实最后你那个

假如我用 VB.Net 写的一个程序集里有个参数用 Integer 类型,难道在 csc 眼中它就是叫 Integer,但是 C# 没这个关键字就拒绝编译?这是哪个次元的 CLR?

我看得懂,其实 Jeff 之前的意思大概是 FCL(就是 C# 的标准库,当然也是 VB.NET 之类的标准库)的某些方法(不得不硬编码进去)的『方法名』『字段名』

里面不可避免的出现 C# 里所定义的类型名称诸如 long e.g. TryParseLong(),(因为那个方法名里的 Long)容易引起误会,因为不是所有 CLI 语言里 long 关键字都表示 Int64

编译到 MSIL 以后呢,TryParseLong 的返回类型值为 System.Int64,但有些语言里面 long 关键字定义的类型却是 System.Int32 可能,所以诸如 Dim foo As Long = "123".ParseLong() 这种可能就无法工作或者不易察觉地不正确

... 总之还是有点头疼.... 看不懂,如果愿意的话不妨让我弄懂了再来讨论一下,毕竟 Telegram 上很少有这种不 trivial 的『无用』技术讨论了

btw. 大佬不妨私聊我,我 +86 的可以随便撩(跑