- 文章
一直琢磨着自己实现一个脚本语言。因为懒,直到最近才动手。
构想中的语言语法类似ActionScript,支持GC、闭包、Lambda表达式、协程、尾递归优化、迭代器/生成器、允许(编译期)强类型绑定的可嵌入式动态脚本语言。基础类型支持NULL、布尔型、32位整型、64位长整型、双精度浮点数、元组、列表、字典、闭包、协程、对象、用户数据等。
……
WIN32 宏来判断是否为 Windows 平台。64位 Windows 也会定义 WIN32 宏,此外还定义 WIN64 宏,有些编译器可能是 Windows、__WIN32__、WIN32、_WIN64_MSC_VER 宏判断是否是VC编译器__GNUC__ 宏来判断是否为 gcc 编译器__declspec(dllimport) 和 __declspec(dllexport)__attribute__ ((visibility("default"))) 来导出函数inline 关键字,要用 __inline。可以用如下代码定义:C#if defined(_MSC_VER) && !defined(__cplusplus) && !defined(inline)
#define inline __inline
#endifsize_t 类型、指针运算用 uintptr_t, intptr_t, ptrdiff_t、平台无关整型用 int32_t, int64_tsizeof(long double) 是16字节(VC不支持),但是实际使用长度是12字节,4字节填充的是随机数据(绝对大坑)__cplusplus 宏做下判断__APPLE__和 __MACH__(这个没确认)__BORLANDC__、__llvm__、__clang__、__WATCOMC__……
Lua 源码中定义了一个叫 L_Umaxalign 的数据类型:
ctypedef union {
double u;
void *s;
lua_Integer i;
long l;
} L_Umaxalign;这个结构其实是该平台上最长的数据类型。
……
制作了三次葱油饼,累积了一些心得体会,特此记录。
……
王子:
你们认为自己什么都见过
你们游历天下,包揽群书
没有什么能让你们吃惊
欢迎来到维罗纳
你们认为人是善良的
因为他能写出美妙的歌
如果你觉得这一首歌很优美
欢迎来到维罗纳
当然,这里同别处一样
人们并不更坏,也并不更好
嗨!你们今夜来到我们这里
要么是个错误,要么纯属偶然
(副歌:)
你们来到了维罗纳,美丽的维罗纳
这座城市的居民相互厌恶
人们想离开,却留了下来
这里不是国王钟爱的地方
这里有两个家族称王称霸
你不需要选择自己的立场
人们早就替你作出了选择
你们来到了维罗纳,我们谈论的是维罗纳
仇恨象毒液在我们的生命中流淌
就象我们的血液一样
我们的花园同样四季芬芳
我们的女子同样美丽大方
这里的景色象人间天堂
但我们灵魂却在地狱里徜徉
你们来到了维罗纳
……
尝试了很多PHP框架,有轻量级的,也有企业级的,发现解耦都做得很不好,自由度都很差。Zend framework2.0 做得还不错,就是封装太多,不够轻量。
从最原始的new操作符,到abstract factory或builder等经典创建模式,都不能满足人民群众日益高涨的解耦需求。后来,MF创造了控制反转(IoC)/依赖注入(DI)理论,提供了一个完美的解耦方案。听说一个叫"春"的JAVA框架实现了完美的IoC容器,不过我也没接触过,不太了解。
……
David Brin 创作的科幻小说。
……
网上偶然拾得本人于 2006 年所写的 MSN Messenger 双/多开工具的源代码。此即时通讯软件早于 2013 年便已停止服务,而今再看昔日所写代码不甚感慨,遂记录于此,以兹纪念