很长一段时间以来,我一直在尝试使用不同的语言来查找我想要的功能集,而我却找不到它.我的语言非常适合我的各种项目,但我想出了这些语言的交集,这使我能用一种语言完成99.9%的项目.我想要以下内容:
我一直在使用的两种主要语言是Boo和Nemerle,但我也玩过F#.
针对Nemerle的主要投诉:编译器有可怕的错误报告,实现是错误的,因为地狱(编译器和库),宏只能在函数内部或作为属性应用,并且它是相当重的依赖性(虽然不够,它是一个交易破坏者).
针对Boo的主要投诉:没有任意表达式嵌套(dealbreaker),宏很难写,没有自定义运算符定义(潜在的交易破坏者).
针对F#的主要投诉:难看的语法,难以理解的元编程,非自由许可(epic dealbreaker).
所以我想的越多,我就越想开发自己的语言.
优点:
缺点:
因此,基于所有这些,一般的共识是什么 - 这是一个好主意还是一个坏主意?或许更有帮助,我是否错过了任何重大利弊?
编辑:忘记添加嵌套示例 - 这是Nemerle中的一个案例:
def foo =
if(bar == 5)
match(baz) { | "foo" => 1 | _ => 0 }
else bar;
Run Code Online (Sandbox Code Playgroud)
编辑#2:想象一下如果存在将转换为该语言的代码类型的例子并不会受到影响(单独的S.Lott的回答可能足以让我远离这样做).代码大量使用自定义语法(操作码,:=,quoteblock等),表达式嵌套等.你可以在这里查看一个很好的例子:这里.
我目前正在努力破解我的.NET操作系统在MS.NET/Mono之前运行(之前它只运行裸机),我遇到了一个小障碍.我需要实现我自己的System.Console,它与我的服务基础架构对话,我找不到一个好的方法来替换它,而不是1)没有链接到mscorlib(会很好地做),或者2)使用NotQuiteSystem替换的命名空间,会破坏兼容性.
有没有一种机制可以干净地替换System类而无需执行其中一项操作?
编辑:一个想法是使用Mono.Cecil重写对System.Console的引用到Renraku.System.Console或其他一些,但我更愿意在框架内工作,如果可能的话.
我正在使用Notebook小部件来拉出选项卡式文件视图,并且我添加了代码以允许从现有Notebook中分离页面,这会生成一个带有单独Notebook的新窗口,只包含该页面.但是,我希望能够在多个笔记本之间移动页面.
该Notebook.WindowCreationHook委托给我的页面从何而来,页面插件的笔记本电脑,以及x和y坐标它是在下降,但我不知道我怎么能告诉什么笔记本它被跌落到,如果有的话.这种重新附着是否有内置机制,或者我必须通过坐标?如果我必须使用坐标,那么获取它们并获取Notebook小部件的最佳方法是什么?如果需要的话,我可以存储我已经浮动的笔记本列表,但即使这样,代码也可以找出哪一个会有点难度(考虑到z顺序和所有有趣的东西).
我正在构建一个针对.NET的编译器,我以前直接生成了CIL,但生成DLR树将使我的生活更容易.我支持一些动态功能,即运行时函数创建和ducktyping,但绝大多数代码都是完全静态的.
所以现在已经解释过,我有以下问题:
任何对此的见解或对博客/代码/会谈的参考将不胜感激.
我在x86上调试我的代码,如果结果不为零,问题跟踪到AND指令有时不会清除ZF标志.这是一段有问题的代码:
0257A9F9 mov edx,dword ptr [ecx+18h] 0257A9FC and edx,80000h 0257AA02 int 3 0257AA03 je 0257AA2A
我在AND之后添加了一个断点用于调试.当它在断点EDX == 0x80000和ZF == 1时停止.但是如果EDX!= 0,则应清除ZF.当单步进入调试器时,代码完全正常,但在正常运行期间它会一致地失败.
这是调试器会话的屏幕截图.
任何提示?
如果这很重要,代码是由JIT生成的,那么我正在执行数据.
先感谢您.
我至少不是数学家,但我对学习刚体物理学感兴趣(为了实现基本的3d物理引擎).在学校我只通过代数II学习数学,但我已经做了3d开发多年,所以我对向量,四元数,矩阵等有了相当不错的理解.我真正的问题是阅读复杂的公式等等,所以我在寻找对于一些体面的刚体动力学参考,将有一些意义.
有人有什么好的参考?
我正在考虑一种在运行时检查对象的工具,主要用于逆向工程,我想知道是否存在这样的事情.
我想到的方式是你有两个视图,一个对象图和一个类列表.从类列表中,您可以选择一个类,并在列表或图形中查看它的实例.在图中,您可以看到对象之间的连接,适当地注释,例如,哈希表中的键可以是哈希表对象和值之间的边缘上的标签.
您还可以提取对象属性列表并查看/操作其中的值..NET中提供的元数据会使这一点变得相当简单.
有谁知道可以做到这一点的工具?它似乎是一个非常有用的调试和逆向工程工具.
编辑:另外,另一个有用的功能是能够在查看二进制文件时设置名称映射.也就是说,如果你有一个混淆的二进制文件,你就可以交换混淆的占位符或真实姓名.这不会影响实际的二进制文件,只会影响检查器中的视图.
编辑第2部分:该工具应该能够在Vista和XP上运行并且支持x64.
我正在使用C#为HoloLens编写VNC客户端,我很难搞清楚如何处理键盘输入.KeyUp/KeyDown给了我一个Windows.System.VirtualKey对象,但似乎没有一个API将这些VirtualKeys(以及修饰符,例如shift)映射到它们在给定布局上表示的字符.例如,当它只是VirtualKey.F时,VirtualKey.Shift + VirtualKey.F =='F'与'f'.或Shift + 5在美国键盘上给出%.
在win32应用程序中,您将使用MapVirtualKey为您处理键盘布局 - 如何在UWP中处理?
我正在使用KeyDown和KeyUp处理程序Window.Current.CoreWindow来捕获UWP的VNC应用程序中的击键.这有一个例外:alt(VirtualKey.Menu/LeftMenu/RightMenu)永远不会发送到我的应用程序.此外,alt +字母不会导致发送给处理程序.
我认为这是因为某些加速器处理程序在到达CoreWindow之前正在吃这些事件.有没有办法解决?