duangsuse::Echo
曾经书本上复杂、晦涩难懂的知识对我来说已经不是黑盒。我曾经购买的十多本书里再也没有一行完全看不懂的内容。 原先根本看不懂的什么位长度、什么半字双字缓冲器已经成为日常。 原先一个原生 .so(SharedObject 共享对象)就是“无法理解”的黑盒,现在 x86 机器码根本不是问题、远程 GDB 调试和高等 GDB 功能也不是问题 原先连 Java 的 OOP 类型系统自动子类自动转型基类都无法理解,现在理解整个 Java 类型系统已经不是问题 第一个黑历史 Android 应用 MinBase64 到现在,我却已经记住了…
ps. 其实对于强类型语言,以「类型检查」是在编译时还是运行时(duck typing 动态类型)进行来判断是否为“动态语言”是可行的
对于「编译时」和「运行时」的鸿沟我看来主要就是「源对象到生成目标有没有损失信息」
我们来举个(不好的)例子,假设你把 C 编译到了 C(已经预处理)(换句话说就是 “预处理” C 代码),语义上是等价的,但是的确丢失了很多信息,比如没有用到的宏定义和宏定义体的源代码,无法访问到的这些信息就成为了“编译时”和“运行时”之间的鸿沟。
上面那个不知是不是从“虎书”、“龙书”、CSAPP、SICP 里抄的,不过我觉得这个 “没有很强的相似性” “很强” 定义不明确而且没有举例子讲述概念所以不是很好的表达,按理说“数学性”的东西不应该是
对于「编译时」和「运行时」的鸿沟我看来主要就是「源对象到生成目标有没有损失信息」
我们来举个(不好的)例子,假设你把 C 编译到了 C(已经预处理)(换句话说就是 “预处理” C 代码),语义上是等价的,但是的确丢失了很多信息,比如没有用到的宏定义和宏定义体的源代码,无法访问到的这些信息就成为了“编译时”和“运行时”之间的鸿沟。
上面那个不知是不是从“虎书”、“龙书”、CSAPP、SICP 里抄的,不过我觉得这个 “没有很强的相似性” “很强” 定义不明确而且没有举例子讲述概念所以不是很好的表达,按理说“数学性”的东西不应该是
P ≠ NP 这样不明确的命题,这样看又好像是在搞哲学一样...顺口说一下,我准备先花 20 分钟左右开发个在 Android 上自动启用 USB Tethering (USB 绑定网络)的应用,虽然很简单
(如果以后可能的话,可能想开发一下原生(Like C++)应用的 Hook 插件,要研究怎么做的话会在频道上更新的)
然后把 METO 的 sm.ms 图床接口代码发上来快速分享给大家
然后给 Vultr 钱钱...
然后补充一下 Gekyll 的设计,有时间时写
然后给 InScript 添加新特性,假期结束前出总文档
最后有没有大佬愿意想方设法教教我 C# 的
#task
(如果以后可能的话,可能想开发一下原生(Like C++)应用的 Hook 插件,要研究怎么做的话会在频道上更新的)
然后把 METO 的 sm.ms 图床接口代码发上来快速分享给大家
然后给 Vultr 钱钱...
然后补充一下 Gekyll 的设计,有时间时写
然后给 InScript 添加新特性,假期结束前出总文档
最后有没有大佬愿意想方设法教教我 C# 的
async 和 await 是什么原理,我虽然看了《CLR via C#》上的 async 状态机的讲解和《ES6 标准入门》的讲解还是感觉不是很清楚其用途,“以同步的方式异步”?#task
Forwarded from duangsuse Throws
duangsuse::Echo
曾经书本上复杂、晦涩难懂的知识对我来说已经不是黑盒。我曾经购买的十多本书里再也没有一行完全看不懂的内容。 原先根本看不懂的什么位长度、什么半字双字缓冲器已经成为日常。 原先一个原生 .so(SharedObject 共享对象)就是“无法理解”的黑盒,现在 x86 机器码根本不是问题、远程 GDB 调试和高等 GDB 功能也不是问题 原先连 Java 的 OOP 类型系统自动子类自动转型基类都无法理解,现在理解整个 Java 类型系统已经不是问题 第一个黑历史 Android 应用 MinBase64 到现在,我却已经记住了…
总之不管说计算机科学来看,偏向“理论”的不管是什么水平,偏向“工程”的水平都至少是提升了(虽然计算机科学是工科),所以对我来说技术的确提升了,虽然没有时间写什么代码。
大概是 CS、信息科学、电子电器都有点可以入门的感觉但是因为数学不好所以暂时还是很小的方向发展... 连画画都差点不会(其实至少怎么画圆和怎么画弧形(圆角的长方形)都是不知道的)
大概是 CS、信息科学、电子电器都有点可以入门的感觉但是因为数学不好所以暂时还是很小的方向发展... 连画画都差点不会(其实至少怎么画圆和怎么画弧形(圆角的长方形)都是不知道的)
Canvas 这种高度封装的东西加上 Math 都不会用的话... CG 方面的确是不可能啊... Math.sin 是什么... log10 又是什么... hyp 是啥...
duangsuse Throws
#PL #life #tech “知其变,守其恒” 这个短语实在是太酷了,在学校的时候想了 5 分钟才回忆起来... 结合技术水平来看真的超有震撼力啊。
正是因为知道的多,所以才知道自己的无知
正是因为懂得多,看得细致、能够透过一行行 C# 代码看到生成的 IL、看到 JIT 编译出的机器代码,才可以发现底层以微粒子形式存在的数据竞争风险和值类型装箱操作的隐患,而不是等到程序已经公开部署、安全漏洞已经被大量利用才迟迟修复
只有肯沉下心来学习知识,才有可能从理解 -> 使用 -> 创造一步步走上去,只有有了更高层次的视角 才能解决别人“不能解决”“无从寻觅”的问题
真正有知识的人的成长过程,与麦穗的成长过程一样:正是因为能透过问题的表象看到本质、透过宏观看到微观,能站在比别人低、比别人靠近本质的地方观察,才能做到「知其变」,才能在技术更新越来越快,各色语法糖变化、语言特性换上新包装的时代里坚守自己永恒不变的真知「守其恒」
麦穗空的时候,麦子长得很快,麦穗骄傲地高高昂起;
但当麦穗成熟饱满时,它们开始谦虚地垂下麦芒。
正是因为懂得多,看得细致、能够透过一行行 C# 代码看到生成的 IL、看到 JIT 编译出的机器代码,才可以发现底层以微粒子形式存在的数据竞争风险和值类型装箱操作的隐患,而不是等到程序已经公开部署、安全漏洞已经被大量利用才迟迟修复
只有肯沉下心来学习知识,才有可能从理解 -> 使用 -> 创造一步步走上去,只有有了更高层次的视角 才能解决别人“不能解决”“无从寻觅”的问题
感谢 C# 大佬的好心,据说 《CLR via C#》 作者 Jeff 曾经写了一个
我觉得奇怪的是假如说
ES6 的 Generator(Corountine 携程)函数我还了解(包括在 coroutine 里 yied 别的 coroutine 函数),但
AsyncEnumerator 类,不知道有什么关系我觉得奇怪的是假如说
async 函数里 await 别的 async 函数时这个函数直接返回...(啊啊啊是我想错了...ES6 的 Generator(Corountine 携程)函数我还了解(包括在 coroutine 里 yied 别的 coroutine 函数),但
async 语法好像让问题理解复杂起来了,到现在还一直不是很清楚,只知道怎么用不知道是怎么实现的...// 附:ECMAScript v6 Generator 函数例子
function *coOneTwoThree() {
yield 1
yield 2
yield 3
}
var co123 = coOneTwoThree()
> co123.next()
{ value: 1, done: false }
> co123.next()
{ value: 2, done: false }
> co123.next()
{ value: 3, done: false }
> co123.next()
{ value: undefined, done: true }
C# 是门很优秀的语言,现在你们能看到的很多语言特性、设计模式,比如
async, Thread, struct, LINQ, GC, prototype extension, CSP(component software programming), COM(component object model), Serialize, Attribute, sealed class, out/ref, message queue, thread pool, generic type, tuple C# 都有,CLR 设计时也有考虑。不得不说单单就语言 research 研究方面 MS 还是很良心的,至少比 Java 特性多,不过性能上可能差一点,毕竟多了很多很多特性。其实 JVM 上的 Kotlin 特性也很多了... 都在往特性多的语言跑duangsuse::Echo pinned «顺口说一下,我准备先花 20 分钟左右开发个在 Android 上自动启用 USB Tethering (USB 绑定网络)的应用,虽然很简单 (如果以后可能的话,可能想开发一下原生(Like C++)应用的 Hook 插件,要研究怎么做的话会在频道上更新的) 然后把 METO 的 sm.ms 图床接口代码发上来快速分享给大家 然后给 Vultr 钱钱... 然后补充一下 Gekyll 的设计,有时间时写 然后给 InScript 添加新特性,假期结束前出总文档 最后有没有大佬愿意想方设法教教我 C# 的…»
LWL 的基地台
Photo
Answer Correct / Accepted
Wrong Answer
Time Limit Exceeded(Error)
Memory Limit Exceeded(Error)
Compile Error
Unknown Error
???
Runtime Error
... 又是一个不教的,非得自己找啊...
Wrong Answer
Time Limit Exceeded(Error)
Memory Limit Exceeded(Error)
Compile Error
Unknown Error
???
Runtime Error
... 又是一个不教的,非得自己找啊...
Forwarded from Algae
国际空间站的业余无线电台举办新一轮的 SSTV(慢扫描电视)活动,该活动将于北京时间 2018 年 10 月 27 日 18:00 左右开始。预计传输将使用 PD-120 模式在 145.800MHz 进行
Covariant Script编程语言是李登淳(Michael Lee)于2017年初设计的一门通用型高性能脚本语言,其官方解释器由李登淳本人使用C++编程语言编写。
Covariant Script的目标是成为更加友好的“C With STL”,即综合C编程语言简单明了的语法和C++编程语言强大的标准库,从而最大程度降低语言本身的难度的同时提供强大的功能。
Covariant Script支持大多数主流平台,包括Microsoft Windows,Linux,Mac OS,Android等(Covariant Script理论上能够支持任意提供了标准C++实现的系统中)。用户只需编写一份代码就能够在世界上90%的设备中运行,实现“Write once,run everywhere”。
Covariant Script是动态类型语言,类型这个概念在在Covariant Script中被大大弱化,因此它不需要模板和泛型等特性也能实现灵活的程序设计风格。但因为Covariant Script拥有严谨的类型系统和可靠的垃圾回收器,从而保证了类型安全和资源安全。
Covariant Script的语法融合了C/C++/Java/Lua/Basic等主流编程语言的语法,保留并改造了一部分易于使用的语法,删除了大量难以理解的部分。精简融合的语法仍然保留了现代编程语言的组成要素:模块系统,名称空间,垃圾回收器,异常处理,面向对象编程(OOP),Lambda表达式,基于范围的for循环等。
Covariant Script拥有强大齐全的标准程序库,并为其精心设计了可靠,易于使用的接口和完善的文档。Covariant Script标准程序库囊括了字符串处理,正则表达式,套接字,数据库,图形库,系统API,流式API,关联容器,顺序容器,离散容器,数学运算,随机数引擎,高精度计时器等一系列实用的功能。
得益于优秀的架构和作者丰富的开发经验,Covariant Script非常易于扩展。精心设计的类型系统理论上可支持C/C++中所有的类型,您可能只需定义一些特定的函数即可让您的类型在Covariant Script中自由穿梭。作者为了强化Covariant Script与C++的联系,简化第三方库移植的流程,特意设计编写了CNI(C/C++ Native Interface)。通过CNI Covariant Script将能够直接调用大多数C/C++中的函数(不支持模板函数和重载函数,这是C++语言的限制)。用户无需做太多工作,只需将函数直接注册到Covariant Script中即可,CNI甚至能够自动检测函数签名并适配。
Covariant Script的模块系统分为两部分。一部分是C++编写的扩展,由于脱离了Covariant Script的环境一般来说性能更高,也能够更好的利用底层API。Covariant Script能够动态加载扩展而无须重新编译Covariant Script自身。另外一部分是Covariant Script编写的包,包的特点是更加灵活,依托于Covariant Script跨平台的特性包不需要编译,在不同平台上一般来说是通用的,但性能受语言本身限制不会太高,不适合计算密集或底层的应用。Covariant Script能够在独立于主程序的沙箱中编译解释包并通过模块系统引入到主程序中。
综上所述,Covariant Script是一门全能的编程语言。“麻雀虽小,五脏俱全”,几乎涵盖了计算机程序设计中大多数概念和功能。但它比C++更简单,比C更全能,比Java更轻巧,比Python更灵活。Covariant Script解决了C++语法晦涩难懂,开发环境搭建困难,第三方库安装过程繁冗,跨平台困难;Java运行环境太大以及Python语法不自由的问题,为入门者提供了更简单的开发环境,为开发者提供了更灵活的开发体验,是目前国内由独立开发者开发的编程语言中功能最完全,综合体验最好的编程语言之一。
Covariant Script的目标是成为更加友好的“C With STL”,即综合C编程语言简单明了的语法和C++编程语言强大的标准库,从而最大程度降低语言本身的难度的同时提供强大的功能。
Covariant Script支持大多数主流平台,包括Microsoft Windows,Linux,Mac OS,Android等(Covariant Script理论上能够支持任意提供了标准C++实现的系统中)。用户只需编写一份代码就能够在世界上90%的设备中运行,实现“Write once,run everywhere”。
Covariant Script是动态类型语言,类型这个概念在在Covariant Script中被大大弱化,因此它不需要模板和泛型等特性也能实现灵活的程序设计风格。但因为Covariant Script拥有严谨的类型系统和可靠的垃圾回收器,从而保证了类型安全和资源安全。
Covariant Script的语法融合了C/C++/Java/Lua/Basic等主流编程语言的语法,保留并改造了一部分易于使用的语法,删除了大量难以理解的部分。精简融合的语法仍然保留了现代编程语言的组成要素:模块系统,名称空间,垃圾回收器,异常处理,面向对象编程(OOP),Lambda表达式,基于范围的for循环等。
Covariant Script拥有强大齐全的标准程序库,并为其精心设计了可靠,易于使用的接口和完善的文档。Covariant Script标准程序库囊括了字符串处理,正则表达式,套接字,数据库,图形库,系统API,流式API,关联容器,顺序容器,离散容器,数学运算,随机数引擎,高精度计时器等一系列实用的功能。
得益于优秀的架构和作者丰富的开发经验,Covariant Script非常易于扩展。精心设计的类型系统理论上可支持C/C++中所有的类型,您可能只需定义一些特定的函数即可让您的类型在Covariant Script中自由穿梭。作者为了强化Covariant Script与C++的联系,简化第三方库移植的流程,特意设计编写了CNI(C/C++ Native Interface)。通过CNI Covariant Script将能够直接调用大多数C/C++中的函数(不支持模板函数和重载函数,这是C++语言的限制)。用户无需做太多工作,只需将函数直接注册到Covariant Script中即可,CNI甚至能够自动检测函数签名并适配。
Covariant Script的模块系统分为两部分。一部分是C++编写的扩展,由于脱离了Covariant Script的环境一般来说性能更高,也能够更好的利用底层API。Covariant Script能够动态加载扩展而无须重新编译Covariant Script自身。另外一部分是Covariant Script编写的包,包的特点是更加灵活,依托于Covariant Script跨平台的特性包不需要编译,在不同平台上一般来说是通用的,但性能受语言本身限制不会太高,不适合计算密集或底层的应用。Covariant Script能够在独立于主程序的沙箱中编译解释包并通过模块系统引入到主程序中。
综上所述,Covariant Script是一门全能的编程语言。“麻雀虽小,五脏俱全”,几乎涵盖了计算机程序设计中大多数概念和功能。但它比C++更简单,比C更全能,比Java更轻巧,比Python更灵活。Covariant Script解决了C++语法晦涩难懂,开发环境搭建困难,第三方库安装过程繁冗,跨平台困难;Java运行环境太大以及Python语法不自由的问题,为入门者提供了更简单的开发环境,为开发者提供了更灵活的开发体验,是目前国内由独立开发者开发的编程语言中功能最完全,综合体验最好的编程语言之一。
[CovScript 最新在线参考文档](http://covscript.org/docs/latest)
covscript-docs
参考文档
Covariant Script编程语言:参考文档