C#交互功能的演化

(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

题记:Miguel de Icaza在最近发表的一篇博文中畅谈了Mono及其相关产品中的C#交互特性的演化情况。

早期

在2008年,Miguel他们在Mono中引入了一个C# Shell程序(仅有命令行)。在实现这个交互Shell的过程,Mono为.NET实现了大量有用的命令行编辑API,也促进了Mono自己的编译器即服务特性的开发。几个月后,为这套Shell添加了一个UI界面。如下图所示:

并且还加入了plot(绘图)命令:

Xamarin时代

与此同时,在Xamarin Studio了中也集成了类似功能,即Sketches

这一工具的诞生是源于,使用Xamarin的开发人员需要的是一个全功能的C# REPL(Read-Eval-Print Loop,交互式执行环境),以便能够及时尝试相关的代码。由此他们引入了一个称之为Inspector的功能(这一个功能原计划是用来作为调试器辅助工具的)。Inspector可以附加到正在运行中的Android/iOS/WPF线程中。也实现了一些后端功能来提供运行应用程序的可视展示:

这个工具的交互界面是用HTML Canvas实现,从而更容易添加很多酷炫的可视化效果。

目前这个工具底层改用Roslyn来实现代码的动态编译了,效果就更加好了:

Continuous的出现

Frank Krueger为了在iOS中实现编译器即服务,从而编写了Continuous,这是一个Xamarin Studio和Visual Studio的插件。利用这个插件,你无需额外使用其他工具,就可以编辑代码实时看到iOS程序的效果(下面的视频如果看不到,直接访问视频文件地址:https://pbs.twimg.com/tweet_video/CXb1RaBU0AAEldo.mp4):

辉煌的未来

目前,Miguel他们正在使用一个强大的HTML渲染引擎来显示结果,并且升级了编译器引擎。他们下一步工作是把这个C#交互环境做的更加强大。比如:

编者注:其实在VS2015 Update1中已经引入了一个C#交互窗口,可以实现全功能的REPL环境。

这篇博文的地址在:http://tirania.org/blog/archive/2016/Feb-17.html

时间: 2024-12-24 16:02:41

C#交互功能的演化的相关文章

第四十一课、编辑交互功能的实现

一.编辑交互功能 1.编辑器中常规的编辑交互功能 2.QPlainTextEdit提供了丰富的交互接口 3.信号与槽的连接 编辑器代码修改:将action触发的信号映射到QPlainTextEdit对象的槽函数   二.文本编辑器中的界面状态 1.不是任何时候都可以复制.粘贴.撤销.重做(比如开始没有数据时) 2.QPlainTextEdit能够发送与界面状态相关的信号 3.实现步骤 (1).连接界面状态信号到自定义的槽函数 (2).通过文本信息找到对应的QAction对象 QAction* M

Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能

都说语音是人机交互的重要手段,虽然个人觉得在大庭广众之下,对着手机发号施令会显得有些尴尬.但是在资源受限的物联网应用场景下(无法外接鼠标键盘显示器),如果能够通过语音来控制设备,与设备进行交互,那还是很实用的.继上一篇<Windows 10 IoT Serials 4 - 如何在树莓派上使用Cortana语音助手>之后,本文将详细讲述如何为运行Windows 10 IoT Core系统的树莓派添加语音识别和语音交互功能. 1. 硬件准备 树莓派2/树莓派3.5V/2A电源.TF卡(8GB以上)

iOS开发之功能模块--高仿Boss直聘的IM界面交互功能

本人公司项目属于社交类,高仿Boss直聘早期的版本,现在Boss直聘界面风格,交互风格都不如Boss直聘以前版本的好看. 本人通过iPhone模拟器和本人真机对聊,将完成的交互功能通过Mac截屏模拟器来录制基本的交互功能. 界面因为动态截图工具本身不完美,截屏失真,所以存在有的部分UI颜色稍微变化了,比如白色稍微变灰暗色,不是项目本身的问题. 因为是本公司项目,不提供源码,只提供交互动态图仅供观赏??. (备注:Boss直聘分为个人端和企业端) 1.基本功能描述: 在个人端,一开始会话列表没有任

第41课 编辑交互功能的实现

1. 常规编辑交互功能 (1)复制(Copy).粘贴(Paste).剪切(Cut).撤销(Undo).重做(Redo).删除(Delete) (2)QPlainTextEdit提供了丰富的交互功能接口 2. 信号与槽的连接 [编程实验]基本编辑功能实现 3. 文本编辑器中的界面状态 (1)不是任何时候都能够进行复制.粘贴.撤销或重做.(即部分按钮得灰化处理) (2)QPlainTextEdit能够发送与界面状态相关的信号 ①void copyAvailable(bool yes); ②void

js+html+css实现简单页面交互功能(2015知乎前端笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2

js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2 密码:hellozhihu

OpenLayers 之 地图交互功能(interaction)详解

地图交互功能和上一篇讲的地图控件有些混淆,它们都控制着用户与地图的交互,区别是地图控件的触发都是一些可见的 HTML 元素触发,如按钮.链接等:而交互功能都是一些设备行为触发,都是不可见的,如鼠标双击.滚轮滑动等,手机设备的手指缩放等. 地图的交互功能包含很多,如地图双击放大,鼠标滚轮缩放,矢量要素点选,地图上绘制图形等等.只要是涉及到与地图的交互,就会涉及到 intercation 类,它定义了用户与地图进行交互的基本要素和事件.下面我们就来看看用户与地图都有那些交互,怎么交互. 注: '自定

利用ajax的方式来提交数据到后台数据库及交互功能

怎么样用ajax来提交数据到后台数据库,并完成交互呢????? 一.当我们在验证表单的时候,为了阻止把错误的也发送到服务器,我们通常这样设置:     $(function(){       var isusername;(定一个变量)        var ispwd;         $('form').submit(function(e){             if(!isusername || !ispwd){                 e.preventDefault();(

文件交互功能实现问题总结

最近一直在写关于文件交互的功能,遇到一些问题,总结一下文件传输交互需要考虑和注意的一些问题: 1.文件更新时间确认(一天内更新多次覆盖还是1天只更新一次).一般最好是今天取昨天的数据,知道了更新时间和频率,才好确认是什么时候取 2.文件路径和文件名确认.为了避免文件名不重复的问题,一般都会在路径或文件中加入日期,但是需要确认的是日期是当天还是昨天. 3.涉及拿文件的问题,有一个问题是必须考虑的,有没有可能你拿到的文件只是总文件的一部分,比如整个文件50M,而在生成到20M的时候你取走了. 4.如

Markdown文本编辑器在信息发布及信息交互功能上的使用(一)

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式. MarkdownEditor 是一款基于浏览器的 Markdown 文本编辑器,功能非常简单实用. 在线地址:http://jbt.github.io/markdown-editor 资源地址:https://github.com/jbt/markdown-editor 此文本编辑器使用许可描述为"只要你喜欢,你可以随意复制.修改和使用他.(Feel free to ta