Forwarded from taisandog xp
粘包是两个包黏在一起发过来了,原始的socket类只会读入一个buffer数组那么多的数据但会一直回调你的读取方法直到没数据
这次调用的buff数据可能出现不完整的包,不够的部分就会继续下一次调用时候发过来
例如你的buffer设置了512,你的包有520,剩下8个字节会在下一次过来,如果对方还继续发其他包,下一次调用的buff首先是这个包的8字节,8字节后就是另一个包的数据
这次调用的buff数据可能出现不完整的包,不够的部分就会继续下一次调用时候发过来
例如你的buffer设置了512,你的包有520,剩下8个字节会在下一次过来,如果对方还继续发其他包,下一次调用的buff首先是这个包的8字节,8字节后就是另一个包的数据
Forwarded from taisandog xp
因为TCP没有错包,只有粘包,一般数据包都是由包头和长度,一般读取逻辑是:把当前buffer的数据都读进临时存储区(建议环形数组)
然后在临时存储区找到包头后就读取长度,然后判断剩余的数据是否够这个长度,够的话就读入数据,不够就不管,等待下一次接收数据再判断
然后在临时存储区找到包头后就读取长度,然后判断剩余的数据是否够这个长度,够的话就读入数据,不够就不管,等待下一次接收数据再判断
taisandog xp
粘包是两个包黏在一起发过来了,原始的socket类只会读入一个buffer数组那么多的数据但会一直回调你的读取方法直到没数据 这次调用的buff数据可能出现不完整的包,不够的部分就会继续下一次调用时候发过来 例如你的buffer设置了512,你的包有520,剩下8个字节会在下一次过来,如果对方还继续发其他包,下一次调用的buff首先是这个包的8字节,8字节后就是另一个包的数据
rey ren:
就是上层跟下层都混在一起说,把下层出现的现象造出了一个词😂
duangsuse:
同意,自己不清楚IOstream 去限制请求长度
也亏你是台湾人, 中国流行八股文的😅唬住领导就行
/对的,IO密集无需优化list.add啥的。就是这个道理
rey ren:
因为就没理解彻底,实际是怎么在流式数据实现应用层协议
duangsuse:
直接Protobuf或者JSON单行😅
py open().buffer里哪有靠read(size) 写读内存片啊,都是用pickle
duangsuse:
烦死了,就是不搞业务竞争力在那吹逼八股文作为发展性 ,摆些有的没的😅😒
梨 乌🦌:
拆包粘包就是个伪概念
有没有购买ddos的渠道啊。兄弟们来一个
duangsuse:
是应用层没搞明白请求的“换行符”、onMessage()何时触发,不是1次512bytes 的问题😅
你们弄的无非就是 chunk([abcd], 2)=ab,cd 的列表处理,那个是tcp负责的,只有linux和网卡负责优化tcp
rey ren:
没办法吹牛逼就是这样造各种的词,像我们之前调研的时候国内文章出现各种的新词,倒是国外对词还是挺统一的
duangsuse:
比如之前还吹什么大数据,外国是统计学自动化、国内是拿隐私做charts😅,现在TikTok和加拿大电信涉及资安问题被制裁了吧? 完全是反向牛逼
rey ren:
隐私问题在哪里都有,只是说不说出来而已
Blockhead:
有钱有权有势,国内才能吃香喝辣,享受特权
有权利就有钱,这个是来源
对,蹦不住了,我感觉我要在国内能活到七十,撑死发三千块
能盈利的公司,在这种税收环境下,确实要珍惜。大公司都有党支部
这部分人要给开工资的,双份,阿里就有党委
就是上层跟下层都混在一起说,把下层出现的现象造出了一个词😂
duangsuse:
同意,自己不清楚IOstream 去限制请求长度
也亏你是台湾人, 中国流行八股文的😅唬住领导就行
/对的,IO密集无需优化list.add啥的。就是这个道理
rey ren:
因为就没理解彻底,实际是怎么在流式数据实现应用层协议
duangsuse:
直接Protobuf或者JSON单行😅
py open().buffer里哪有靠read(size) 写读内存片啊,都是用pickle
duangsuse:
烦死了,就是不搞业务竞争力在那吹逼八股文作为发展性 ,摆些有的没的😅😒
梨 乌🦌:
拆包粘包就是个伪概念
有没有购买ddos的渠道啊。兄弟们来一个
duangsuse:
是应用层没搞明白请求的“换行符”、onMessage()何时触发,不是1次512bytes 的问题😅
你们弄的无非就是 chunk([abcd], 2)=ab,cd 的列表处理,那个是tcp负责的,只有linux和网卡负责优化tcp
rey ren:
没办法吹牛逼就是这样造各种的词,像我们之前调研的时候国内文章出现各种的新词,倒是国外对词还是挺统一的
duangsuse:
比如之前还吹什么大数据,外国是统计学自动化、国内是拿隐私做charts😅,现在TikTok和加拿大电信涉及资安问题被制裁了吧? 完全是反向牛逼
rey ren:
隐私问题在哪里都有,只是说不说出来而已
Blockhead:
有钱有权有势,国内才能吃香喝辣,享受特权
有权利就有钱,这个是来源
对,蹦不住了,我感觉我要在国内能活到七十,撑死发三千块
能盈利的公司,在这种税收环境下,确实要珍惜。大公司都有党支部
这部分人要给开工资的,双份,阿里就有党委
duangsuse:
哎,看到有人偷墓地的贡品、聚众跳,感觉自己也不安全了……😅
以前觉得报复社会是恐怖主义
现在想一想, 是因为别人不给他结果,他就把你结果……😢
我之前还是没远见 。只要温和的抗议被堵死, 杀人放火或善意轻生就会成为泡沫破裂后唯一的选择 ,而对此没有危机感,最终只会让自己被刀
就是这样才有生产力、人口红利啊, 你看北欧,都躺平了☺️
不过中国人也不是和🥕驴一样蠢,打拼后终究是要躺平的
但是韩国人能躺在发达国家,我们只能躺在时薪十几块的国家 ,而且还有一大堆房子卖不出去,要是跌了RMB 也会通货膨胀罢🌚
(本来跌价是供大于求,通缩。但是中国GDP很大是靠卖地借款.. 驴子却干不动了)
哎,看到有人偷墓地的贡品、聚众跳,感觉自己也不安全了……😅
以前觉得报复社会是恐怖主义
现在想一想, 是因为别人不给他结果,他就把你结果……😢
我之前还是没远见 。只要温和的抗议被堵死, 杀人放火或善意轻生就会成为泡沫破裂后唯一的选择 ,而对此没有危机感,最终只会让自己被刀
就是这样才有生产力、人口红利啊, 你看北欧,都躺平了☺️
不过中国人也不是和🥕驴一样蠢,打拼后终究是要躺平的
但是韩国人能躺在发达国家,我们只能躺在时薪十几块的国家 ,而且还有一大堆房子卖不出去,要是跌了RMB 也会通货膨胀罢🌚
(本来跌价是供大于求,通缩。但是中国GDP很大是靠卖地借款.. 驴子却干不动了)
习近平真要对红二代刘亚洲下手?被称“头号汉奸”
近来关于前中国人民解放军空军上将、红二代刘亚洲可能被判重刑的传言不断。被视为“开明派”人物的刘亚洲处境究竟如何,被囚,半自由,自由?我们无法从独立渠道核实。但中国官媒突称其为“中国军队的头号汉奸”让人惊骇
ref:https://t.iss.one/VoiceofPooh/108305?single
https://m.youtube.com/watch?v=1K1eOLertsA&t=200
近来关于前中国人民解放军空军上将、红二代刘亚洲可能被判重刑的传言不断。被视为“开明派”人物的刘亚洲处境究竟如何,被囚,半自由,自由?我们无法从独立渠道核实。但中国官媒突称其为“中国军队的头号汉奸”让人惊骇
ref:https://t.iss.one/VoiceofPooh/108305?single
https://m.youtube.com/watch?v=1K1eOLertsA&t=200
Forwarded from Deleted Account
可以使用Java 8的反射API以及Java 8的StreamAPI来完成这个任务。具体的步骤如下:
1. 获取Object的Class对象,即 object.getClass()。
2. 通过Class对象获取该类声明的所有字段,可以使用getDeclaredFields()方法。
3. 针对每个字段,判断该字段的值是否为null,可以使用Field对象的get方法来获取该字段的值,并用Objects.isNull()方法判断该值是否为null。
4. 对于值为null的字段,记录其字段名,将其存储到List或Set中。
下面是一个示例代码:
使用示例:
在这个例子中,Person类中的gender字段值为null,在调用getNullFields方法后,它的字段名"gender"被存储在了Set中并返回。
1. 获取Object的Class对象,即 object.getClass()。
2. 通过Class对象获取该类声明的所有字段,可以使用getDeclaredFields()方法。
3. 针对每个字段,判断该字段的值是否为null,可以使用Field对象的get方法来获取该字段的值,并用Objects.isNull()方法判断该值是否为null。
4. 对于值为null的字段,记录其字段名,将其存储到List或Set中。
下面是一个示例代码:
import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
public class ObjectNullFieldFilter {
public static Set<String> getNullFields(Object object) throws IllegalAccessException {
Set<String> nullFields = new HashSet<>();
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true); // 使得private字段也可访问
Object fieldValue = field.get(object);
if (Objects.isNull(fieldValue)) {
nullFields.add(field.getName());
}
}
return nullFields;
}
}
使用示例:
class Person {
private String name;
private Integer age;
private String gender;
// 省略 getter/setter 方法
}
public class Main {
public static void main(String[] args) throws IllegalAccessException {
Person p = new Person();
p.setName("Tom");
p.setAge(18);
Set<String> nullFields = ObjectNullFieldFilter.getNullFields(p);
System.out.println(nullFields); // 输出 [gender]
}
}
在这个例子中,Person类中的gender字段值为null,在调用getNullFields方法后,它的字段名"gender"被存储在了Set中并返回。
Forwarded from Deleted Account
您可以使用Java 8反射API获取具有Null值的非静态和非合成字段名称的列表。以下是一个示例方法:
在这个例子中,我们定义了一个MyClass类,并创建了一个示例对象myObj。然后,我们使用Java反射来获取该类的所有字段,并逐个检查它们是否是非静态和非合成字段。对于每个符合条件的字段,我们检查它是否为null,并将其名称添加到nullFields列表中。最后,我们在控制台上打印出该列表。
请注意,由于反射的性质,这种方法可能会受到Java安全管理器的限制,因此您可能需要相应的权限。
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MyClass {
private String name;
private String[] tags;
private Integer age;
private static String profession;
public static void main(String[] args) throws Exception {
MyClass myObj = new MyClass();
myObj.name = "John";
myObj.tags = null;
myObj.age = null;
List<String> nullFields = getNullFields(myObj);
System.out.println("Null fields: " + nullFields);
}
public static List<String> getNullFields(Object object) throws IllegalAccessException {
List<String> nullFields = new ArrayList<>();
Field[] fields = object.getClass().getDeclaredFields();
for (Field field : fields) {
if (!field.isSynthetic() && !java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
field.setAccessible(true);
if (field.get(object) == null) {
nullFields.add(field.getName());
}
}
}
return nullFields;
}
}
在这个例子中,我们定义了一个MyClass类,并创建了一个示例对象myObj。然后,我们使用Java反射来获取该类的所有字段,并逐个检查它们是否是非静态和非合成字段。对于每个符合条件的字段,我们检查它是否为null,并将其名称添加到nullFields列表中。最后,我们在控制台上打印出该列表。
请注意,由于反射的性质,这种方法可能会受到Java安全管理器的限制,因此您可能需要相应的权限。
Forwarded from dnaugsuz
哈哈😄,其实外国人每个也都像是思想家, 所以他们的著作才那么爆棚。
海面下的冰山有70%的重量 ,但你国却只强调「我要有10%的高级精英」;教出的人没有概率逻辑和普世价值,个个以为只有自己是比下有余的天选之人、只有排名公式计算的才叫人的才能 ,而忽略了持续性所必须的协作环境和人文土壤
中国总强调自己是集体主义,但每个人却是单纯服从一个并不代表自身或群体利益的图标。 对文化课和八股文的内卷式崇拜、创造力的缺失,也正是这种封建社会观的历史结果。
解释朝鲜笑容为何千人一律的不是智商种族优劣论,而是它的思想。春潮退去,才知道裸泳的到底是谁。
海面下的冰山有70%的重量 ,但你国却只强调「我要有10%的高级精英」;教出的人没有概率逻辑和普世价值,个个以为只有自己是比下有余的天选之人、只有排名公式计算的才叫人的才能 ,而忽略了持续性所必须的协作环境和人文土壤
中国总强调自己是集体主义,但每个人却是单纯服从一个并不代表自身或群体利益的图标。 对文化课和八股文的内卷式崇拜、创造力的缺失,也正是这种封建社会观的历史结果。
解释朝鲜笑容为何千人一律的不是智商种族优劣论,而是它的思想。春潮退去,才知道裸泳的到底是谁。
#hard #os
Jack Yang:
意思是现代计算机虽然是按字节编址,但是实际上存储单元大小是字节整数倍。所以多个地址可能指代的是一个存储单元吗
duangsuse:
寻址可以细到byte ,但计算只能是对齐 int32,64 这种的
你所说的内存复用其实就是 union{i32; i64} *num; ,这个在java里不存在的,都是虚表
moushose:
为什么指针会有符号?
duangsuse:
方便指针相减呗,也有usize指针吧
寻址只是算术的方法啦……
比如 iadd int ptr[rsp+8], rsp.., 233
这里有(栈指针)间接寻址 和常量,输出到其中1个输入
mov dst,src 也是这样
我们说的是OS和asm领域的“存储”
对的,理论上需要mov(lea) 这个int* 到int
再继续add 1, 啥的. add靠的是局部寄存器如rax rdi rsi
taisandog xp:
但esp、rsp比较特殊,是栈空间,我们在方法里定义的变量就是放这里,例如64位程序,XX obj=new XX();在堆空间产生一个XX的数据块,然后在栈空间产生一个8字节的指针obj,rsp会实现压栈:rsp=rsp-8,到函数退出时候会恢复现场
寄存器跟内存和硬盘无关,寄存器是做在CPU里的,CPU里除了这些通用寄存器还有指令集寄存器,例如SSE寄存器xmm0那批
刚才你拿rsp举例有点麻烦,要解释清楚😏,rsp之类的不能乱搞,搞乱了会爆炸
duangsuse:
函数传参和局部变量一般都用这些.. 不过x64 abi 一般是寄存器传参😅
jvm也是基于求值栈,但它不支持指针 ,也没有寄存器分配问题
其实有些人会把x86的rsp当做栈机用,实现JIT
x86主要是有 abcd ax eax rax这几个通用
si di sp bp ip(指令指针) 这几个指针寄存器, 被ret,rep等特殊指令使用
还有cs ds 这些段寻址指针
taisandog xp:
ecx其实也不算普通寄存器,只是高级语言也不用它来做循环
一般普通的64位寄存器的x86是rax、rbx、rcx(其实不普通,不过很少用来做循环)、rdx
你说的ax eax rax其实是同一个,rax包含eax、eax包含ax
duangsuse:
以前16bit的程序经常用ah,al ,那个就是int到byte 转化, i &0xFF
Jack Yang:
意思是现代计算机虽然是按字节编址,但是实际上存储单元大小是字节整数倍。所以多个地址可能指代的是一个存储单元吗
duangsuse:
寻址可以细到byte ,但计算只能是对齐 int32,64 这种的
你所说的内存复用其实就是 union{i32; i64} *num; ,这个在java里不存在的,都是虚表
moushose:
为什么指针会有符号?
duangsuse:
方便指针相减呗,也有usize指针吧
寻址只是算术的方法啦……
比如 iadd int ptr[rsp+8], rsp.., 233
这里有(栈指针)间接寻址 和常量,输出到其中1个输入
mov dst,src 也是这样
我们说的是OS和asm领域的“存储”
对的,理论上需要mov(lea) 这个int* 到int
再继续add 1, 啥的. add靠的是局部寄存器如rax rdi rsi
taisandog xp:
但esp、rsp比较特殊,是栈空间,我们在方法里定义的变量就是放这里,例如64位程序,XX obj=new XX();在堆空间产生一个XX的数据块,然后在栈空间产生一个8字节的指针obj,rsp会实现压栈:rsp=rsp-8,到函数退出时候会恢复现场
寄存器跟内存和硬盘无关,寄存器是做在CPU里的,CPU里除了这些通用寄存器还有指令集寄存器,例如SSE寄存器xmm0那批
刚才你拿rsp举例有点麻烦,要解释清楚😏,rsp之类的不能乱搞,搞乱了会爆炸
duangsuse:
函数传参和局部变量一般都用这些.. 不过x64 abi 一般是寄存器传参😅
jvm也是基于求值栈,但它不支持指针 ,也没有寄存器分配问题
其实有些人会把x86的rsp当做栈机用,实现JIT
x86主要是有 abcd ax eax rax这几个通用
si di sp bp ip(指令指针) 这几个指针寄存器, 被ret,rep等特殊指令使用
还有cs ds 这些段寻址指针
taisandog xp:
ecx其实也不算普通寄存器,只是高级语言也不用它来做循环
一般普通的64位寄存器的x86是rax、rbx、rcx(其实不普通,不过很少用来做循环)、rdx
你说的ax eax rax其实是同一个,rax包含eax、eax包含ax
duangsuse:
以前16bit的程序经常用ah,al ,那个就是int到byte 转化, i &0xFF
duangsues.is_a? SaltedFish
rey ren: 就是上层跟下层都混在一起说,把下层出现的现象造出了一个词😂 duangsuse: 同意,自己不清楚IOstream 去限制请求长度 也亏你是台湾人, 中国流行八股文的😅唬住领导就行 /对的,IO密集无需优化list.add啥的。就是这个道理 rey ren: 因为就没理解彻底,实际是怎么在流式数据实现应用层协议 duangsuse: 直接Protobuf或者JSON单行😅 py open().buffer里哪有靠read(size) 写读内存片啊,都是用pickle duangsuse:…
duangsuse, [2023/4/17 17:00]
说到底还是我有错在先,没有表达清楚自己对 Kotlin
而是去说 DCL 不对。但其实我是想说 设计模式对程序员真的有害无利 ..
zz Abel, [2023/4/17 17:01]
AI不就是个工具吗,工具的进步肯定比人快的,没啥奇怪的。也不要有优越性,都会被ai替代的
duangsuse, [2023/4/17 17:02]
许多设计模式在动态语言里不存在
Singleton,Builder 即便在 Kotlin 里也是不存在的,模式往往是解决编译期没有提供的便利性。它是语法的问题
我觉得死记硬背是有问题的,这些模式本该由编程语言解决,会更简单
CheeryMilk, [2023/4/17 17:04]
过于照搬设计的模式而不注重原则是有害的
duangsuse, [2023/4/17 17:06]
倒不如说java的原则,python 里就是错误…… 所以我真是一个设计模式黑 😅
taisandog xp, [2023/4/17 17:06]
设计模式不是语言通用的吗?C#也是这样用的
duangsuse, [2023/4/17 17:08]
Python里有 classmethod ,就是可以继承的 def
但是 java 里没,那相关的设计模式, py 可能就比java少1种
@decorator 也算是一种,java 里
duangsuse, [2023/4/17 17:11]
所以我是很主张「代码复用」,而设计模式,显然就是让人做编译期的“代码复制”类工作
所以我不待见它,以至于被人喷成我不会设计模式 😭 ,我只是说,要注重模式的封装性
iseki |看到我请叫我去学习~, [2023/4/17 17:12]
你这样,无非是自己再发明一套术语而已
iseki |看到我请叫我去学习~, [2023/4/17 17:12]
不过这倒是无所谓,其实这种事开心就好
duangsuse, [2023/4/17 17:12]
差不多是如此
DCL算是代码复用吗? 还有 class StaticHolder ,这就是模板代码啊😒
向上面这种,如果重写为python或rust 能更短一些,那就不算设计模式,而是语言的设计缺陷
我还搞错一点, lazy和DCL, static 初始化根本不是一个东西
DCL和static都可以实现singleton,但只有lock能让lazyInit()只调用1次且晚计算,所以kt的by lazy{} 默认是这样,都是RAII ,但这些区别..真的很无聊
说到底还是我有错在先,没有表达清楚自己对 Kotlin
lazy(mode=NONE){} 默认参数的建议而是去说 DCL 不对。但其实我是想说 设计模式对程序员真的有害无利 ..
zz Abel, [2023/4/17 17:01]
AI不就是个工具吗,工具的进步肯定比人快的,没啥奇怪的。也不要有优越性,都会被ai替代的
duangsuse, [2023/4/17 17:02]
许多设计模式在动态语言里不存在
Singleton,Builder 即便在 Kotlin 里也是不存在的,模式往往是解决编译期没有提供的便利性。它是语法的问题
我觉得死记硬背是有问题的,这些模式本该由编程语言解决,会更简单
CheeryMilk, [2023/4/17 17:04]
过于照搬设计的模式而不注重原则是有害的
duangsuse, [2023/4/17 17:06]
倒不如说java的原则,python 里就是错误…… 所以我真是一个设计模式黑 😅
taisandog xp, [2023/4/17 17:06]
设计模式不是语言通用的吗?C#也是这样用的
duangsuse, [2023/4/17 17:08]
Python里有 classmethod ,就是可以继承的 def
但是 java 里没,那相关的设计模式, py 可能就比java少1种
@decorator 也算是一种,java 里
@Override 是不能实现业务逻辑修饰的,py 里这些技巧有点像 Lombok 的字节码技术duangsuse, [2023/4/17 17:11]
所以我是很主张「代码复用」,而设计模式,显然就是让人做编译期的“代码复制”类工作
所以我不待见它,以至于被人喷成我不会设计模式 😭 ,我只是说,要注重模式的封装性
iseki |看到我请叫我去学习~, [2023/4/17 17:12]
你这样,无非是自己再发明一套术语而已
iseki |看到我请叫我去学习~, [2023/4/17 17:12]
不过这倒是无所谓,其实这种事开心就好
duangsuse, [2023/4/17 17:12]
差不多是如此
DCL算是代码复用吗? 还有 class StaticHolder ,这就是模板代码啊😒
向上面这种,如果重写为python或rust 能更短一些,那就不算设计模式,而是语言的设计缺陷
我还搞错一点, lazy和DCL, static 初始化根本不是一个东西
DCL和static都可以实现singleton,但只有lock能让lazyInit()只调用1次且晚计算,所以kt的by lazy{} 默认是这样,都是RAII ,但这些区别..真的很无聊
duangsuse, [2023/4/19 14:32]
其实最初美国高校担心GPT影响教学质量也是差不多的心态
只是在中国的内卷意识和 #PL 领域的“小众优越”下,这种东西被极端化了
duangsuse, [2023/4/19 14:33]
只是,MD, 我昨天晚上还在改我语言文法的稿 😅
duangsuse, [2023/4/19 14:34]
主要问题是PL领域基本没有什么新势力,都是一群人在解读和圣战
duangsuse, [2023/4/19 14:37]
是跨文化跨编译语言的,有点像 kt 的python化,然后它没有 for 语句、反对流控、同时支持组合与继承,是很表达式化的
应该是基于GCC那样的统一AST ,做高级低级化 Pass ,实现所支持的语言互转化
duangsuse, [2023/4/19 14:42]
并不是,我们还需要维护生态和规范化语言工具呢
因为AI和创作者的协作还是会有问题的,总不可能因为人类插足的少,就用垃圾语言去交互
duangsuse, [2023/4/19 14:45]
我自己觉得编程语言就是API的普适化, 有了这个模型使用和思考起来更加方便, 并且其意图是绝对清晰的,能满足设计者的个性
但是用非程序员的语言, 就会缺少一些思考建模的方式和技巧,所以说形式化和自然语言是可以并驾齐驱的
然后GPT4的写作能力、创造性目前看来也不太好, 不知道以后会不会改良,但在那之前程序员负责的页面应该需要不少对话,所以PL这种东西和os一样,始终是有研究价值的;以后也会和拉丁文一样具有艺术和文化价值
至于觉得PL更优越的人,肯定会越来越少,以后就单纯和“web框架”一样,是种自由选择的文化符号了
duangsuse, [2023/4/19 15:26]
😅操 ,其实这个是要悟性的(bing 不懂) ,不过希望以后绝句的API都能让菜鸟读懂..
总之就是不会比 Kotlin 垃圾吧(大概
kt 里
其实最初美国高校担心GPT影响教学质量也是差不多的心态
只是在中国的内卷意识和 #PL 领域的“小众优越”下,这种东西被极端化了
duangsuse, [2023/4/19 14:33]
只是,MD, 我昨天晚上还在改我语言文法的稿 😅
duangsuse, [2023/4/19 14:34]
主要问题是PL领域基本没有什么新势力,都是一群人在解读和圣战
duangsuse, [2023/4/19 14:37]
是跨文化跨编译语言的,有点像 kt 的python化,然后它没有 for 语句、反对流控、同时支持组合与继承,是很表达式化的
应该是基于GCC那样的统一AST ,做高级低级化 Pass ,实现所支持的语言互转化
duangsuse, [2023/4/19 14:42]
并不是,我们还需要维护生态和规范化语言工具呢
因为AI和创作者的协作还是会有问题的,总不可能因为人类插足的少,就用垃圾语言去交互
duangsuse, [2023/4/19 14:45]
我自己觉得编程语言就是API的普适化, 有了这个模型使用和思考起来更加方便, 并且其意图是绝对清晰的,能满足设计者的个性
但是用非程序员的语言, 就会缺少一些思考建模的方式和技巧,所以说形式化和自然语言是可以并驾齐驱的
然后GPT4的写作能力、创造性目前看来也不太好, 不知道以后会不会改良,但在那之前程序员负责的页面应该需要不少对话,所以PL这种东西和os一样,始终是有研究价值的;以后也会和拉丁文一样具有艺术和文化价值
至于觉得PL更优越的人,肯定会越来越少,以后就单纯和“web框架”一样,是种自由选择的文化符号了
duangsuse, [2023/4/19 15:26]
😅操 ,其实这个是要悟性的(bing 不懂) ,不过希望以后绝句的API都能让菜鸟读懂..
总之就是不会比 Kotlin 垃圾吧(大概
kt 里
itLets itLet lets let 这些是 let also run apply ,我都记不住File() let {path="abc"} 比apply好看很多ByteArray 对应byte[] ,Array<Byte> 则是装箱类型 Byte[]
Anonymous Poll
42%
好,不容易搞混
25%
坏,换来换去很麻烦
33%
坏,装箱没有意义 (即便Spring等不支持int[]式数组)