设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

30年的Hello world

2013-7-15 11:22| 发布者: joejoe0332| 查看: 2346| 评论: 0|原作者: fbm,姜鹏飞,徐继开翻译|来自: oschina

摘要:   最近我在7月4日这一天所在的那周休假了。休假期间,我利用大把的时间对我时至今日的职业生涯进行了反思。意识到我现在写代码都写了快30年了,不免让我有些 许震惊。因此我决定,要利用这段美好的休闲时光,写篇 ...

  2008 – Silverlight (C#和XAML)


<UserControl x:Class="SilverlightApplication1.MainPage">
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock x:Name="Greeting"></TextBlock>
    </Grid>
</UserControl>
public partial class MainPage : UserControl
{     
    public MainPage()     
    {         
        InitializeComponent();         
        Loaded += MainPage_Loaded;     
    }     

    void MainPage_Loaded(object sender, RoutedEventArgs e)     
    {         
        Greeting.Text = "Hello, World.";     
    }
}


  当然,Silverlight后来就象一只垃圾股一样日薄西山了。那时Silverlight仍然是一个非常有用也很有竞争力的技术,I但一旦人们发现微 软不再对这种技术进行投入了,Silverlight马上就行将就木了 —— 虽然人们感觉它过时了,但这和它在那时是不是一个正确的工具没有丝毫的关系。HTML5在宣传自己是“编写一次,到处运行”方面也做得相当不错, 成百上千的公司在能够意识到他们的错误(HTML5的口红“编写一次,到处运行”的实际意思是,“编写一次,到处碰壁,然后为每个平台还得再编写一次”) 之前,不顾一切、争先恐后地加入了HTML5的阵营。


  然而,我们所喜欢的Silverlight中的那部分特性在Windows 8.1下的XAML和C#中存活了下来。 为了好玩,下面给出采用酷小子们惯常使用的模型-视图-视图模型(MVVM)模式编写的“Hello, World”。 


  2011 – WinRT / C#


public class ViewModel
{
    public string Greeting
    {
        get
        {
            return "Hello, World";
        }
    }
}  <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Grid.DataContext>
        <local:ViewModel/>
    </Grid.DataContext>
    <TextBlock Text="{Binding Greeting}"/>
</Grid>


  虽然Windows 8.1已经让我忙于写作和兼职项目有一段时间了,但是对于大部分公司来讲,它还是比较新的,很多公司想要的是基于Web的解决方案。这就意味着要使用 HTML和JavaScript,而我在大部分时间中就是忙于这方面的工作。没错,一旦我发现我离开了这套技术,它们总是能够又把我拉回来。在对我用 HTML和JavaScript进行Web开发时所痛恨的地方进行一番深思熟虑之后,我觉得其中必有更好的方式来实现它们。我们的团队拧成一股绳,对各种 可能的解决方案进行了调查研究,最好找到了一个非常酷的解决方案。最近有一种新发布的语言,叫做TypeScript,它是JavaScript的一个超 集。它没有试图要改变语法,因此所有有效的JavaScript代码同样也是有效的TypeScript代码。然而,这个语言提供了一些开发时特性,比 如,有助于形成API调用的接口,丰富的发现机制(它们甚至都不会出现在编译所产生的代码中)以及支持继承的类、强类型变量、静态修饰符等,而所有这些最 终都会编译成非常有效的、跨浏览器的JavaScript代码。


  采用TypeScript是个轻松的决定。尽管它还处于beta测试阶段,但它产生的代码100%可以直接用在产品中,所以如果我们发现它产生的代码有什 么问题的话,我们完全可以跳过TypeScript,直接在JavaScript中进行修补。最后证明,TypeScript可用性相当高 —— 我们的团队中有几个人对JavaScript有纯正癖,痛恨对“修改JavaScript这种语言”的所有企图都恨之入骨,即使他们几个人刚开始持有怀疑 的态度,最后也一致认为,TypeScript为我们提供了更高一层的控制力度,用它还能够进行重构,它也支持并行开发,对我们能够发布高质量的基于 Web的代码有着极大的促进作用。


  2012 – TypeScript


class Greeter {
    public static greeting: string = "Hello, World";
    public setGreeting(element: HTMLElement): void {
        element.innerText = Greeter.greeting;
    }
}  var greeter: Greeter = new Greeter();
var div: HTMLElement = document.createElement("div");
greeter.setGreeting(div);
document.body.appendChild(div);


  TypeScript不是我所在的唯一的改变。我们还想消除在为对象设置数据绑定时的繁文琐节。当时我们所采用的Knockout也是一个非常不错的框 架,但它所需要的工作还是比我们所想的要多。我们团队中诱人对一些替代方案进行了调查研究,最后选定了AngularJS。刚开始我对它还是有所怀疑的, 但很快发现,这个方案真的同用于Web的XAML方案非常类似。采用它我们可以在使用声明式UI的情况下,还能解决另外一个问题,就是我们还可以将命令逻 辑从中隔离出来。到现在为止已经有几个月了,我们的团队在使用TypeScript和AngularJS这些相关技术时一直都很愉快,并且相当的爱用这套 技术。 我现在正在参加WintellectNOW的一个课程,因为我决定这事关重大。然而,要说30年的经验教会了我什么的话,那就是:今天还存在,明 天就消失。我不是一个C#开发人员,也不是一个JavaScript开发者,更不是一个AngularJS奇才。绝不是!我只是一个编程人员,一个程序 员,纯正的、朴素的、简单的程序员。各种编程语言只不过是个工具,我只是碰巧学会了很多编程语言而已。好吧,再来一次 “Hello, World”。我希望你能喜欢这段旅程。。。一段直到现在的旅程。


  2013 – AngularJS


<div ng-app>
    <div ng-init="greeting = 'Hello, World'">
        {{greeting}}
    </div>
</div>


  “再见了,读者朋友。”


酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部