维坦

感谢您的关注!


  • Mar
    19

    典型软件开发

    Filed under: 随笔;

    一张经典的老图, 无意中发现英文原版和繁体版. 分享一下:

    典型软件开发sc

    典型软件开发en

    典型软件开发tc

    No Comments
  • Mar
    19

    谁在用F#? - 摘自Foundations of F#

    Filed under: 编程; Tagged as:

    2008年3月19日   作者:Robert Pickering   翻译:colder

    F#在微软的MSR甚至是整个公司都很风光. Ralf Herbrich(MSR应用游戏组的领袖, 专攻机器自学习技术)是个典型的F#粉丝:

    第一个程序是解析110GB日志数据, 拆分到300个目录中的11000个文件里, 之后再输入到SQL数据库中. 整个程序只有90行(包括注释!), 完成这项任务只花了18小时; 每秒处理10000行日志, 简直不可思议! 注意我并没有优化代码, 只是用常规的方法写的. 我真的很吃惊, 因为之前按计划整个工作要花费一周时间的.

    第二个程序用于统计数百万个回馈. 之前已经开发过了, 这次我只是照搬到F#程序当中; "从SQL数据库读取数据"和"将结果写入MATLAB数据文件"两项工作同时进行, F#源代码只有100行(包括注释). 当运行时我又一次惊呆了; 上百万条数据处理只花了10分钟, 就一台普通的桌面电脑. 之前的C#程序有1000行那么长. 从开发程序到输出结果一共花了两天.

    Ralf Herbrich, Microsoft Research
    (http://blogs.msdn.com/dsyme/archive/2006/04/01/566301.aspx)


    微软之外F#同样成长迅速. 我问过Chris Barwick(cs.hubFS.net站长, 专注F#的知名站点), 为什么你觉得使用这门语言呢? 他的回答是:

    我做科学数学计算已经有14年了. 这些年来我一直期望能有一个健壮的平台. 提供有效的工具进行简单构建和并行使用, 推动科学计算的发展. .NET描绘了一个提升产品访问一致性平台. F#成为这一平台上有能力进行科学数学计算的语言. 借助这些工具和其它服务器产品, 在低成本创建复杂系统过程中拥有更多选择, 代码维护成本也很低廉. F#是高级科学计算的基石.

    Christopher J. Barwick, JJB Research

    最后, 我与Jude O’Kelly探讨, 他是Derivatives One的一名软件设计师, 这家公司从事金融软件, 谈论的话题是为什么Derivatives One在他们的产品当中使用F#:

    我们使用C#和F#测试自己的金融系统; 性能基本相同, 但是我们喜欢F#版本是因为它的语法简单明了. F#的问题在于相关信息太少了; 我相信这本书对这一现状会有很大改善.

    Jude O’Kelly, Derivatives One

    No Comments
  • Mar
    9

    谁来为虚拟维权?

    Filed under: 随笔; Tagged as:

    以下为手机短信内容: (2008-03-07 17:07)

    因公安局网监处调查取证需要, 您空间所在服务器暂不能开通, 公司争取尽快取回数据, 已先为您重建站点, 您可以自行上传数据备份.

    No Comments
  • Mar
    1

    Hello F# 我的第一个AutoCAD+F#程序

    Filed under: 编程; Tagged as:
    // 使用 F# 缩略语法
    #light
     
    // 声明独有的命令空间和类
    module FsTest.DrawLine
     
    // 指定包含文件夹
    #I @"D:\AutoCAD 2008"
     
    // 引用托管
    #r "acdbmgd.dll"
    #r "acmgd.dll"
     
    open Autodesk.AutoCAD.Runtime
    open Autodesk.AutoCAD.ApplicationServices
    open Autodesk.AutoCAD.DatabaseServices
    open Autodesk.AutoCAD.Geometry
     
    // 声明命令
    [<commandmethod  (?DRAWLINE?)>]
    let DrawLine () =
     
      let line = new Line(new Point3d(0.0, 0.0, 0.0), new Point3d(3333.0, 3333.0, 0.0))
      let db = Application.DocumentManager.MdiActiveDocument.Database
      use trans = db.TransactionManager.StartTransaction()
      let bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead):?&gt; BlockTable
      let btr = trans.GetObject(bt.[BlockTableRecord.ModelSpace], OpenMode.ForWrite):?&gt; BlockTableRecord
      btr.AppendEntity(line) |&gt; ignore
      trans.AddNewlyCreatedDBObject(line, true)
      trans.Commit()

    // 下面是才鸟老大在 DotNetARX 帮助文件中, 第一页 Geting Started 的第一段 C# 示例.
    // 对比一下还是蛮像的嘛~_~
    Line line = new Line(new Point3d(0.0, 0.0, 0.0), new Point3d(3333.0, 3333.0, 0.0));
    Database db = Application.DocumentManager.MdiActiveDocument.Database;
    using (Transaction trans = db.TransactionManager.StartTransaction())
    {
    	BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead, false);
    	BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false);
    	btr.AppendEntity(line);
    	trans.AddNewlyCreatedDBObject(line, true);
    	trans.Commit();
    }
    No Comments