阅读更多

程序语言的历史已经从机器(比如说汇编)语言编程的时代了进化到了变成如何通过人类的认知事物所采用的哲学观的计算模型。当代流行的程序语言如Java,尽管它相对于以前的机器语言,足够抽象了,但仍然无法摆脱最初的目的。接下要讲到的DSLs,以其自然的特性,正在某些特定领域用于应用的构建。

面向语言的编程(Language Oriented Programming LOP)能提供一种机制参与到用户定义或继承已有的DSLsXMF是一个开源的程序语言,支持LOP语法。所有的XMF方面(aspect)都非常容易扩展,在运行时允许动态重定义DSLs的构造函数,而且不管是standalone模式还是织(weave)于其它已经存在的DSLs中。下面的这个例子将展示程序语言(Java, Lisp, PHP and XOCL)如何定义在XML来协同编程:

 

 
parserImport Languages::MicroJava;
parserImport XOCL;
parserImport Parser::BNF;
 
import LispOps;
 
context Root
  @Operation count(S:Seq(Element)):Integer
    S->size
  end
 
context Root
 
 @Java

    class X {

      int x ;
      
      public X(int x) {
        this.x = x; 
      }

      public int test() {
        Vector ints = this.descending(x);
        Vector ascending = this.reverse(ints);
        Vector facts = this.mapFact(ascending);
        this.printCollection(facts);
      } 
 
      with JOCL {
        @Operation mapFact(s:Seq(Integer)):Integer
          s->collect(n | self.fact(n))
        end 
      }
      
      with JOCL {
        @Operation reverse(S:Seq(Element)):Seq(Element)
          S->reverse
        end
      }
 
      with JLisp {
        (let ((Fact 
               (lambda (fact) 
                 (lambda fact (n) 
                   (if (eql n 0) 
                       1 
                       (mult n (fact (sub n 1))))))))
          
         (Y Fact))
      }
      
      with JLisp {
        (let ((descending
                (lambda(descending)
                  (lambda descending(n)
                    (if (eql n 0)
                        ()
                       `(,n . ,(descending (sub n 1))))))))
           (Y descending))
      }
      
      with JPHP {
        function printCollection($collection) {
          for($i=0;$i<count($collection);$i++) {
            echo $collection[$i]
          }
        }
      }
 
    }
 end>

 

来自: theserversicde
7
0
评论 共 10 条 请登录后发表评论
10 楼 javamonkey 2010-12-06 12:38
一个企业应用,需要与很多系统打交道,所以我理解实际情况上不可能有一种语言能很容易的完成所有功能。譬如,DSL 界面如何去做??难道是echo '<tr>'

看来还不如现在的OO,至少框架,工具库还是有得选择的
9 楼 PatrickHe 2008-03-10 17:32
DSL是个很好的概念,不过这个XMF语言的语法是不是太丑了。
8 楼 wangyonghe 2008-03-10 13:28
组团忽悠.....
7 楼 wangyonghe 2008-03-10 13:28
组团忽悠.....
6 楼 Unmi 2008-03-10 12:35
很杂很烦乱
5 楼 wufan0023 2008-03-10 11:50
可能太习惯OO了。这个看着乱!
4 楼 phoenixup 2008-03-10 08:50
OOD编程的产生环境和目的是什么?是对方案解决的思考更好的接近人的思维,从而加速软件开发。这个Language Oriented Programming LOP的是为虾米?
3 楼 rmn190 2008-03-09 11:00
呵呵...
2 楼 lordhong 2008-03-09 00:49
咨询公司又开始忙活咯!忽悠。。继续忽悠~~

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 编程语言发展史之:编程语言的未来趋势

    它从诞生到今天已经经历了几百年的历史,各个编程语言都各不相同,但其中的共同点无疑就是可以实现一些程序功能。而“未来趋势”,则指的是这一系列编程语言的演进方向以及各自适应该方向的理念、方法和工具。那么,...

  • 编程语言发展史之:编程语言标准化与社区

    为了让编程语言具有更好的维护性、可读性和可扩展性,降低学习曲线,提升效率,使程序员能够更加轻松地编写程序,所以编程语言标准化与社区应运而生。本文试图通过分析编程语言发展历程及其演变过程中的关键因素,...

  • 编程语言发展史之:领域特定语言

    例如,汇编语言只针对处理机器指令、数据的低级控制流,而高级语言则适用于面向对象的编程、数据结构设计等更高层次的抽象。DSL的发明使得程序员不用过多关注底层实现细节,可以专注于业务逻辑的实现,极大的降低了...

  • 面向硬件架构师的容错性设计之道

    深圳市华为技术有限公司(HUAWEI TECHNOLOGIES CO., LTD)作为世界五百强企业中的龙头企业,一直秉持“全栈”创新理念,是中国互联网领域中率先突破行业壁垒、率先布局工业互联网新体系的一家科技公司。2019年,华为...

  • 学习新时代编程语言Rust-0为什么学习Rust

    今天我分享的主题是《新时代的编程语言—— Rust 》 刚看到这个主题是不是觉得有些炒作?! 当然,并不是我自己这样说的,咱也没这个分量去说这个,是吧。这个主题是借鉴于 Carol Nichols在 2019 年的费城新兴技术大会上...

  • 最具潜力的编程语言GO有新书啦!

    互联网时代的来临,改变甚至颠覆了很多东西。...在云时代,掌握分布式编程已经成为软件工程师的基本技能,而基于Go语言构建的Docker、Kubernetes等系统正是将云时代推向顶峰的关键力量。 今天,Go...

  • 老而不死的三种编程语言!

    在软件世界中,铁打的二进制,流水的语言。...实际上,这几门语言就像胡杨一样,特别是 C 语言,简直就是编程语言界的胡杨:胡杨生而千年不死,死而千年不倒,倒而千年不腐…… 最近,我仔细研究了当某种编程语言、工

  • 第1章 Java基本概念及环境配置——FAQ1.02 面向对象程序设计的基本特征有哪些?...

    答: 1、概述: 面向对象程序设计的雏形,早在1960年的Simula语言中即可发现,当时的程序设计领域正面临着一种危机:在软硬环境逐渐复杂的情况下,软件如何得到良好的维护?面向对象设计在某种程度上强调可重复性...

  • 将 Java 作为入门编程语言有错吗?

    就从 11 级软件工程出身的笔者而言,《Java 程序设计》是大学课程中必学科目,且学分相比其他课程都要高出不少。 不过,近几年随着人工智能的崛起,各大初高中、甚至是幼儿园都在将 AI 教学列入基本教学范畴。这不前...

  • 了解Java编程语言

    作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书写作、...

  • 鸿蒙OS到底是不是Android套皮?(少bb,看源码!)

    HarmonyOS到底怎么实现的——扒皮HarmonyOS 了解一个软件怎么实现的,最好还是查看源代码。 但是承诺2020年开源的OpenHarmony项目到现在只开源到嵌入式设备,这条路自然走不通。 只好退而求其次,看看已经开放的SDK...

  • 低调,中国的FPGA到底有多强?!

    来源:芯三板前言:如果说,还有一种元器件贸易职业是有危险性的,那就是从事禁运芯片贸易;如果说这种禁运芯片里什么产品最昂贵,那...FPGA的由来每一个看来很成功的新事物,从诞生到发展壮大都不可避免地经历过...

  • 互联网通用架构——详解当下最前沿的互联网架构技术

    同时也催生了许多新的技术革命,如区块链技术的崛起、物联网、人工智能、机器学习等新兴技术的飞速发展。如何快速应对这些变化?——《当下的互联网架构》就是要通过网络架构,以一种系统性的方法,搭建起世界最具备...

  • 抽象之美——万物皆可设计

    从而抽象出各种概念,挖掘概念和概念之间的关系,设计出具体的软件模型,最后通过编程语言实现业务功能。我们面向某个问题通过抽象思维设计出模型,解决这个问题;回到问题最初产生的原因,试着跳出这个圈层,站在更...

  • 面向对象程序设计 (一种计算机编程架构)

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:...

  • 3.4 学编程不拘于语言,学语言不限于平台——《逆袭大学》连载

    返回到【全文目录】 目录 3.4 学编程不拘于语言,学语言不限于平台 编程语言 软件和硬件——计算机要作为一个整体看待 ...稍一打开视野就会发现,程序设计语言之多,令人咋舌。将来要从事的工作中,...

  • 利用机器学习进行投资市场分析——传统统计学方法与机器学习结合的初探性研究

    随着新经济领域的崛起和产业结构的调整,投资市场上多种风险项目纷纷出现并迅速膨胀。如何从数据中发现有价值的信息、有效回测股票价格和选择更具增长性的投资标的则成为众多投资者追求的问题。如何在过去几十年里...

  • 5G+工业4.0,驱动中国经济崛起

    作者:禅与计算机程序设计艺术 1.简介 随着现代化进程的不断推进和产业的升级换代,传统工业产业已经陷入了瓶颈期。而在新的历史节点——互联网时代,消费者对高新科技产品的需求已经超出了原有的产业形态。因此,...

  • 有哪些值得推荐的计算机专业的竞赛?

    5、百度之星 百度之星,又名Astar,是由全球最大的中文搜索引擎公司--百度面向中国高校学生和编程爱好者所举办的高水平的程序设计大赛,自2005年起已成功举办十六届,已成为校园程序高手交流切磋的优秀竞赛平台。...

  • 新开0-1冷启动分行业指南.zip

    新开0-1冷启动分行业指南.zip

Global site tag (gtag.js) - Google Analytics