/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
Forwarded from Deleted Account
个人感觉 Kotlin playground 可能不能直接支持 Kotlin/JS 的库子,有点害怕
需要有一个 online code editor&runner,而且还能加载一个 Kotlin Multiplatform 的库
Forwarded from Deleted Account
草这个翻译 偷觑 很灵性 有趣的
唱、跳、rap、篮球、老年人
/tmp/duangsuse.sock
const path = require('path'); const moduleConfig = { libraryTarget: "this" }; module.exports = { entry: "./parserkt.js", output: { path: path.resolve(__dirname, "build/js"), filename: "ParserKt.js", ...moduleConfig }, mode: "development"…
即便得到了热心群友的帮助
最终还是失败了:

package.json
{
"name": "parserkt",
"module": "parserkt.entry.js",
"dependencies": {
"kotlin": "^1.3",
"parserkt-util": "file:parserkt-util"
},
"repository": "github:ParserKt/ParserKt",
"license": "MIT"
}
parserkt.entry.js
export * from "./build/js/parserkt";
export * from "parserkt-util";

parserkt-util/package.json
{
"name": "parserkt-util",
"main": "build/js/"
}
webpack.config.js
const path = require("path");

module.exports = {
entry: "./parserkt.entry.js",
output: {
path: path.resolve(__dirname, "build/js/"),
filename: "ParserKt.js",
libraryTarget: "this"
},
mode: "development"
};
Forwarded from Deleted Account
只因你太美~
Forwarded from Deleted Account
C++实在是太多了,从并发到 二进制结构对齐、ABI 都有定义
我等萌新不敢对 软件工程界+信息处理的科学 有不敬
至于世界上 99% 可见应用程序的开发更是不需要 C++ 里 90% 的定义了,C++ 每次总是只有很少一部分会被人用到
Forwarded from Deleted Account
感觉没有动力继续维护 ParserKt,现在正在优化 examples
Forwarded from Deleted Account
Gradle 弄得我真是心累,总算是确定了 multiplatform 的默认设置没问题吧, fatJar 又搞不好体积优化

我又不熟悉 Gradle 和 Kotlin plugin,只好干脆一不做二不休把 JS 的 artifact 也混在 fat jar 里等优化,反正一堆 .kjsm 没法削掉……
proguard.sh -keep 'public class HanCalc { public static void main(java.lang.String[]); }' \
-injars Examples-JVM-s.jar -out calc_out.jar \
-libraryjars '/usr/lib/jvm/default/jmods/java.base.jmod' \
-dontobfuscate -dontwarn
Forwarded from Deleted Account
HanCalc.jar
459.6 KB
[duangsuse@susepc libs]$ java -jar HanCalc.jar 
> 1+12+32-
|三百三十三
= -288
只因鸡你实在是太美~
Forwarded from DogeSpeed广播
@DogeSpeed

2015.02.15 - 2020.02.25
个人感觉你了解得很广,但是深度比较欠缺,怀疑你会在实现这门语言解释器的时候出现问题,我给你总结下吧。

编程是用语言提供的基础逻辑结构实现自己的程序,编程语言依据范式提供一套基础的编程方法。
实践里,程序的简洁性(可读性)、可复用性、灵活性、安全性、健壮性都是很重要的,其中编程语言主要负责简洁性和复用性。

按照抽象层次大体划分,编程分为表述式(imperative) 和 定义式(declarative)。

更细地,无结构编程(unstructured programming)、结构化编程(structured programming) 或者说过程式、函数式(functional)、面向对象(object-oriented)、关系式(relational) 也即逻辑式。

其中机器汇编属于无结构编程。现代电子计算机是一种表述式的机器,每个处理器核心按照顺序执行指令,指令可能读写存储器,也可能执行(带条件)的跳转,以移步到程序的另一个部分继续执行。

在冯·诺依曼的存储式程序计算机里,代码也是数据。这种“动态解释”的模型比较灵活,只要有“执行资源”和随便什么程序,计算机可以“一机多用”。
再广一点就涉及二进制、数据编码和转化、ABI、目标文件格式、程序分段、广义的虚拟化资源共享化了,这方面我们不需要知道太多。

编程语言的实现一般而言就是最少一个解释器(interpreter),本质上和计算器一致,都是递归的树型结构的后序遍历器。
稍微高级一点的会增加或者直接换为去实现一个编译器(compiler),编译器和解释器都会实现语言的抽象语义,但是—多了一个代码生成(codegen) 的步骤,也就是所谓的“编译期”。

不过现代对开发工具的要求也是很高的,所以实现也要配套至少代码高亮/括号匹配的各种编辑器支持,甚至要帮忙运维社区的“生态环境”——如现实应用的各种基础依赖库,以及各种 guide/document/resource。

并非面向对象编程都需要 GC 来自动管理回收分配存储对象,实际上,面向对象只是指以 封装、抽象、继承、多态 为主的一种编程范式,“对象”可以理解为函数式里的闭包(closure),它包含了 this 里的数据以及依赖这些数据的操作(包括 get/set accessor),也即“方法(methods)”
对象可以被理解为 Ruby 里的 Kernel.send 方法,因为给它一个方法名,它就能“调用”这个方法。

https://zhuanlan.zhihu.com/p/108928060