zoukankan      html  css  js  c++  java
  • Script# 把 C# 编译为 JavaScript

    原来有一样东西叫做Script#,是Atlas的主要开发者之一的Nikhil Kothari自己编写的一个小框架,目标就是制作一个C#编译器让C#可以直接编译为JavaScript,并且是不经过编译为IL这个步骤。

    之前我就说过,以MS的做法如果要想继续宠着那群很RAD的ASP.NET程序员,并且确保他们继续think inside MS's box,那就必须做一个C#到JavaScript的编译器,让ASP.NET程序源可以继续以C#语法和服务器端控件编写方式来制作客户端控件,然后如服务器端拖放控件一个制作Ajax应用。不过我当时的想法是,先编译为IL再编译为JavaScript,这样其他语言也都能兼容近来,不过Script#的做法就是C#直接编译。我当时还想过要有一个控件树和HTML DOM影射的模型,不过在Atlas里面这个应该是xml-script的DOM而非HTML DOM。

    回头看Atlas,为什么它设计得那么像C#,让大家可以用C#的对象设计方法来写JavaScript(当然代码要写对一些),同时把C#能实现的都尽量实现了,原来就是为了Script#铺路。其实这个编译器不难做,C#每一条关键所表达的语义要在JavaScript找一个对应的表达方式是肯定做得到的,不过如果对应的JavaScript表达方式如编译为二进制代码一样难读,那就难以编译后修改再用了,所以Script#有一个关键的目标就是编译出来的JavaScript是高可读性的。

    其实很好的主意天天都会降临在不同的人身上,只是你会不会愿意抓住它然后做一个大家都看好的东西来,而你的价值取向很大程度上决定了这个东西最后是否被看好。当然,价值取向只是一个决定因素,如果你有适当的价值取向,但是你没有足够的技术来按照这个价值取向实现,最后还是会走弯路,甚至选择放弃。

    最后,抢占时机也是很关键的,在Script#正式公布的同时能将Java编译为JavaScript的Google Web Toolkit也出来了,结果Nikhil Kothari有点后悔为什么不提前几周正式公布。

  • 相关阅读:
    ZOJ 3278 8G Island 二分+二分
    POJ 2785 4 Values whose Sum is 0 二分
    POJ 3063 Sherlock Holmes 随机化
    UVA 10881 Piortr‘s Ants 思维 模拟
    UVA 1388 Graveyard
    Codeforces Round #410 (Div. 2) B. Mike and strings
    Codeforces 821B
    51nod 1103 N的倍数 抽屉原理
    Codeforces Round #427 (Div. 2) 835D
    Codeforces Round #427 (Div. 2) 835C-Star sky 二维前缀和
  • 原文地址:https://www.cnblogs.com/cathsfz/p/536459.html
Copyright © 2011-2022 走看看