Java、C# 和 C++ 只是借助了面向对象的名头,Kotlin 把面向对象的灵魂发扬光大了。
100% 兼容 Java,而且没有 Java 的恶习。
100% 兼容 Java,而且没有 Java 的恶习。
/tmp/duangsuse.sock
org.telegram:telegrambots:4.6 的使用指南。 这是程序入口 import org.telegram.telegrambots.*; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; public class BotMain { static private TelegramBotsApi…
https://github.com/rubenlagus/TelegramBotsExample/blob/master/pom.xml
关于这样的 POM XML,我就不想说什么了,某人曾经评价了一句『手写 AST』,真是很贴切。
一个不赖的技术,遇上了一群只会套模板的人,把使用者生生弄成了翻译器,做着维护最无聊的表达方式的工作,美其名曰面向数据,写个工具不面向人面向毛线。
关于这样的 POM XML,我就不想说什么了,某人曾经评价了一句『手写 AST』,真是很贴切。
一个不赖的技术,遇上了一群只会套模板的人,把使用者生生弄成了翻译器,做着维护最无聊的表达方式的工作,美其名曰面向数据,写个工具不面向人面向毛线。
GitHub
TelegramBotsExample/pom.xml at master · rubenlagus/TelegramBotsExample
A simple to use library to create Telegram Bots in Java - rubenlagus/TelegramBotsExample
org.telegram.telegrambots.meta.logging.BotLogger 我真是服了,不知道这个东西为什么在这个包里,也不知道这个包到底是怎么使用,在哪找到。
#life 今天是 2020 年 1 月 25 日,我的公历生日是 2002 年 1 月 30,刚刚我打算去 rcsccod.cn 登记器官捐献志愿,但没满十八岁就没能登记。嘘,不要告诉我的家人。
频道主已经检查确认过里面包含的隐私信息,还请不要转发这条消息。
频道主已经检查确认过里面包含的隐私信息,还请不要转发这条消息。
https://t.me/proxy?server=tg-10.googlehosts.org&port=2335&secret=7hFCDxWP-ehFO9fQguLNzup0Zy0xMC5nb29nbGVob3N0cy5vcmc
Google Hosts 的公益 MTProto proxy 真好用
Google Hosts 的公益 MTProto proxy 真好用
Forwarded from Deleted Account
云锤也挺好的, CloudHammer.org
其实我觉得梯子没必要用那么贵的啊,一年 >500 CNY 的资费感觉有点魔性了,毕竟我看云锤入门版的资费好像也就 80 块一年
还有之前看 HostGator 提供的 VPS,一个月 29 美元,别的家 Vultr、Bandwagon 便宜十倍,配置还差不多,感觉像是炒作一样,不是很懂。
其实我觉得梯子没必要用那么贵的啊,一年 >500 CNY 的资费感觉有点魔性了,毕竟我看云锤入门版的资费好像也就 80 块一年
还有之前看 HostGator 提供的 VPS,一个月 29 美元,别的家 Vultr、Bandwagon 便宜十倍,配置还差不多,感觉像是炒作一样,不是很懂。
Forwarded from Deleted Account
emmmm 之前也没用得上多少
墙内咱都不走梯子的
88 CNY 年付以内 Basic plan 也是有 50G 流量的
纯个人看法
学生需要是有用
墙内咱都不走梯子的
88 CNY 年付以内 Basic plan 也是有 50G 流量的
纯个人看法
学生需要是有用
Forwarded from Deleted Account
我这种非运维人员也实在是不了解这么高价格差是在哪,之前那个力挺曝光用户的毒药评测也只是评测速度不评测价格,当然那件事之后也都知道,评测更不包括人品和吃相了。
现在大家经济也都是蛮自由的,咱程序员也就看个 wikipedia 什么的用不了啥流量
现在大家经济也都是蛮自由的,咱程序员也就看个 wikipedia 什么的用不了啥流量
Forwarded from Deleted Account
『您电脑的开机速度,超过击败了全国 80% 的电脑』不包括市场价高于 1000 元的
Forwarded from Deleted Account
最终的执行者是现代电子计算机,用的是传统的指令式设计,
算 1+(2*3) 就得先把 (2*3) 结果存到某个『存储』,再执行需要两个『存储』的加法 (+) 『运算』,最终的结果要写入一个存储,就是得数 3。
执行程序要得到的是值或者副作用(所有不包含在这个值内的调用,比如 print 啥子的,当然这个定义不准确)
如果你是指对这种过程,以及更加抽象结构(比如面向对象的 class)的表达,的文化上,Kotlin、C 都是『英文』的。
它们的确是『英文』的,即便大家说那是『编程语言』,我觉得有一个知乎回答可以看看:
为什么全世界只有中日两个国家弹幕视频网站成为流行? - Sithferia的回答 - 知乎
https://www.zhihu.com/question/65281224/answer/967240703
但如果说实现的话,其实主要还是我们的解析器(从代码文本提出更抽象的结构)、翻译器(细化一点有编译器什么的),对dalao来说还有优化器,前端后端的区分,后端就是大佬的领域了,比如机器的寄存器 指令集 InstructionStructureArchitect、peephole 窥孔优化、输出汇编、机器代码优化、各种目标代码的结构什么。
咱这种前端还是退散吧。
算 1+(2*3) 就得先把 (2*3) 结果存到某个『存储』,再执行需要两个『存储』的加法 (+) 『运算』,最终的结果要写入一个存储,就是得数 3。
执行程序要得到的是值或者副作用(所有不包含在这个值内的调用,比如 print 啥子的,当然这个定义不准确)
如果你是指对这种过程,以及更加抽象结构(比如面向对象的 class)的表达,的文化上,Kotlin、C 都是『英文』的。
它们的确是『英文』的,即便大家说那是『编程语言』,我觉得有一个知乎回答可以看看:
为什么全世界只有中日两个国家弹幕视频网站成为流行? - Sithferia的回答 - 知乎
https://www.zhihu.com/question/65281224/answer/967240703
但如果说实现的话,其实主要还是我们的解析器(从代码文本提出更抽象的结构)、翻译器(细化一点有编译器什么的),对dalao来说还有优化器,前端后端的区分,后端就是大佬的领域了,比如机器的寄存器 指令集 InstructionStructureArchitect、peephole 窥孔优化、输出汇编、机器代码优化、各种目标代码的结构什么。
咱这种前端还是退散吧。
Forwarded from Deleted Account
就『软件工程』的视角来看,其实咱程序表达与转化(自称),会写个 parser 已经是『掌握核心科技』了
但是就咱领域来看,这还远远不够呢。
优秀一点的大佬或许去 os 和 嵌入式 以及 计算机基本结构组成 更有前途。
但是就咱领域来看,这还远远不够呢。
优秀一点的大佬或许去 os 和 嵌入式 以及 计算机基本结构组成 更有前途。
Forwarded from Deleted Account
最近 duangsuse 的自称都换用了『本苏』或『咱』
并不是突然发生大转变呢…… 咱的 W 键现在经常不灵了,现在在用几个不同的键盘布局,可以缓解一下打不出字的尴尬。
并不是突然发生大转变呢…… 咱的 W 键现在经常不灵了,现在在用几个不同的键盘布局,可以缓解一下打不出字的尴尬。
/tmp/duangsuse.sock
https://github.com/rubenlagus/TelegramBotsExample/blob/master/src/main/java/org/telegram/updateshandlers/DirectionsHandlers.java#L60 咱吐了。咱从很早以前都不写这种程序了,如今见教、见教。
我真是不想对这种代码说什么了。 #Java #statement
从 Eclipse 上都可以看得出,『Java 软件工程』简直是个笑话,通通的过度设计。
从设计模式上来讲,Eclipse IDE 可以说是很遵循教科书了,可惜还是 IDEA 技高一筹,不仅提供花样繁多的 refactor,而且带各种 inspection、quick fix、智能感知,界面还简洁、不是像宇宙一样过度混杂,这点 Eclipse 可以说是数十年没有长进。
我不是很了解,当前也没啥资料可以翻阅,不过 IDEA 既然做得好,当然是有做得好的缘由的。
坦白吧。之前我在给某个 Qt 5.14 的 C++ 程序加功能的时候,也是这个熊样,我当时感觉自己复制了许多相当冗长用于设置 UI 的代码,然后补充了少数为了给程序引入一个参数的代码,最后完成了,但最核心的改动不过是加了一个映射到 QSlider 的变量。
Java 的 Checked Exceptions,我也坦白了,当年啥都不懂的我第一反应是记下这个名词,因为它好大佬啊,那是我对 Java 语言一些『深层次』的设计细节第一次的了解,要是我能稍微把它和 Haskell 的 Either、Rust 和 Kotlin 的 Result,能联系起来也好啊。
当年我不是写不出小应用,尽管的确是连 Android 的 ArrayAdapter 都不会用,但还是写得出来点 EditText 文本处理什么的,尽管是抄基础模式,不自己理解。
以前我是觉得越多越好,现在我是觉得越少越好。少能分出主次,与人方便自己方便,我再也不做机器该做的工作。
就是这样,毫不在意别人的可读性和项目的可维护性,现在是如此,以后假如要换一个持久化存储的数据和操作模型,或者换成 Future 的 request 接口,那些代码,通通不能用、是废物。通通得重写、再改。
这个过程往往会引入更多新 bug,我都不敢想修完一个,再自动甚至手动测试后发现不能用,而且是因为另一个地方同类的问题忘改了,再返工,那是一种什么样的工作。
能把代码写成这样,只有一种原因,就是你完全是『见机行事』,先觉得需要是那样做,然后丝毫不多想想有哪些通用模式,就去霸王硬上弓,
或者干脆就是仿冒别人的代码喽,抄过来的你当然不知道怎么裁剪以使之适体,当然更没有那个功夫了。
能把代码写成这样,说明你从来没有重写,以及在很大的层面上重构你的代码。何谓「很大的层面」?比如给一个广泛使用的 class 添加方法,比如把所有阻塞操作改成异步的,比如让你的代码可以在很多个底层抽象平台上工作。
promise & future, observer, task 什么的我不说,就说说 await/async 吧,让看起来顺序执行的代码可以被打断,可以异步,你不需要改原来代码加 then 指定回调,简单吧?
而「可打断的程序」是 Melvin Conway 于 1958 年引入的『协程 coroutine』概念,Kotlin 消灭了 Java 和 Python 的 try with resource 语法的
最关键的问题永远不在你写了多少行,而在你把看起来简单至极的东西表达出了多重的分量。
我想说对于这样生硬的代码来说,基本上就没有复用、移植的可能性,一旦情况稍微有变,或者想要改变一点点数据的获取方式,都“牵一发而动全身”,每次重构都疲于奔波,除了符号重命名基本就没啥了。
可维护性?安全性?鬼知道呢,反正有新功能加新代码就好了,你管它是一个新功能 10 行还是 4 行。
倒不如说是这样的程序员自己的迷信,他们会觉得写的越多、看着越复杂越密集越好,所以喜欢把一些 IDE 都检测不出来的 dead code,比如把默认是那样的属性再显式设一遍,或者严格按照「工程的代码风格」来,大量赋值也不懂得为了可读性加几个分号,换换布局套路,跟个机器人一样,还和电脑抢饭吃。
谁开始的时候不是那样呢,当好一个码农,当然是手工管的地越大越好,王道征途。
谁稀罕函数式的一亩三分地,切。
它根本不知道编程该是什么样,就是往上瞎加代码。
又怎么样。
从 Eclipse 上都可以看得出,『Java 软件工程』简直是个笑话,通通的过度设计。
从设计模式上来讲,Eclipse IDE 可以说是很遵循教科书了,可惜还是 IDEA 技高一筹,不仅提供花样繁多的 refactor,而且带各种 inspection、quick fix、智能感知,界面还简洁、不是像宇宙一样过度混杂,这点 Eclipse 可以说是数十年没有长进。
我不是很了解,当前也没啥资料可以翻阅,不过 IDEA 既然做得好,当然是有做得好的缘由的。
坦白吧。之前我在给某个 Qt 5.14 的 C++ 程序加功能的时候,也是这个熊样,我当时感觉自己复制了许多相当冗长用于设置 UI 的代码,然后补充了少数为了给程序引入一个参数的代码,最后完成了,但最核心的改动不过是加了一个映射到 QSlider 的变量。
Java 的 Checked Exceptions,我也坦白了,当年啥都不懂的我第一反应是记下这个名词,因为它好大佬啊,那是我对 Java 语言一些『深层次』的设计细节第一次的了解,要是我能稍微把它和 Haskell 的 Either、Rust 和 Kotlin 的 Result,能联系起来也好啊。
当年我不是写不出小应用,尽管的确是连 Android 的 ArrayAdapter 都不会用,但还是写得出来点 EditText 文本处理什么的,尽管是抄基础模式,不自己理解。
以前我是觉得越多越好,现在我是觉得越少越好。少能分出主次,与人方便自己方便,我再也不做机器该做的工作。
就是这样,毫不在意别人的可读性和项目的可维护性,现在是如此,以后假如要换一个持久化存储的数据和操作模型,或者换成 Future 的 request 接口,那些代码,通通不能用、是废物。通通得重写、再改。
这个过程往往会引入更多新 bug,我都不敢想修完一个,再自动甚至手动测试后发现不能用,而且是因为另一个地方同类的问题忘改了,再返工,那是一种什么样的工作。
能把代码写成这样,只有一种原因,就是你完全是『见机行事』,先觉得需要是那样做,然后丝毫不多想想有哪些通用模式,就去霸王硬上弓,
或者干脆就是仿冒别人的代码喽,抄过来的你当然不知道怎么裁剪以使之适体,当然更没有那个功夫了。
能把代码写成这样,说明你从来没有重写,以及在很大的层面上重构你的代码。何谓「很大的层面」?比如给一个广泛使用的 class 添加方法,比如把所有阻塞操作改成异步的,比如让你的代码可以在很多个底层抽象平台上工作。
promise & future, observer, task 什么的我不说,就说说 await/async 吧,让看起来顺序执行的代码可以被打断,可以异步,你不需要改原来代码加 then 指定回调,简单吧?
而「可打断的程序」是 Melvin Conway 于 1958 年引入的『协程 coroutine』概念,Kotlin 消灭了 Java 和 Python 的 try with resource 语法的
File("wtf").use { } 用的是 Scheme 编程语言 1975 就实现的『闭包 closure』。最关键的问题永远不在你写了多少行,而在你把看起来简单至极的东西表达出了多重的分量。
我想说对于这样生硬的代码来说,基本上就没有复用、移植的可能性,一旦情况稍微有变,或者想要改变一点点数据的获取方式,都“牵一发而动全身”,每次重构都疲于奔波,除了符号重命名基本就没啥了。
可维护性?安全性?鬼知道呢,反正有新功能加新代码就好了,你管它是一个新功能 10 行还是 4 行。
倒不如说是这样的程序员自己的迷信,他们会觉得写的越多、看着越复杂越密集越好,所以喜欢把一些 IDE 都检测不出来的 dead code,比如把默认是那样的属性再显式设一遍,或者严格按照「工程的代码风格」来,大量赋值也不懂得为了可读性加几个分号,换换布局套路,跟个机器人一样,还和电脑抢饭吃。
谁开始的时候不是那样呢,当好一个码农,当然是手工管的地越大越好,王道征途。
谁稀罕函数式的一亩三分地,切。
它根本不知道编程该是什么样,就是往上瞎加代码。
又怎么样。
才想起来那个是叫『侵入式协程』…… 还记得那有个『透明XX』的名词,比如『透明代理』是都无法区别有没有 的代理……
然后,我忘记 coroutine 名词的创立时间了
Scheme 的也忘了,都是后来查的
ADCE 好像也是说『侵入式』的 dead code elimination
然后,我忘记 coroutine 名词的创立时间了
Scheme 的也忘了,都是后来查的
ADCE 好像也是说『侵入式』的 dead code elimination