SlideShare una empresa de Scribd logo
1 de 109
Descargar para leer sin conexión
PIL: A Platform
Independent Language
 for Retargetable DSLs


       Zef Hemel, Eelco Visser
  Delft University of Techology, The Netherlands
domain-specific languages




Stratego/XT
domain-specific languages




Stratego/XT
compiler
“traditional” compilers
“traditional” compilers




  ✘ low-level
  ✘ complex to generate
  ✘ machine-specific
DSL compilers
DSL compilers




✔ high-level
✔ easier to generate
✔ machine-independent
DSL generators




✔ high-level
✔ easier to generate
✔ machine-independent
DSL generators




✔ high-level
✔ easier to generate
✔ machine-independent
DSL generators




✔ high-level
✔ easier to generate
✔ machine-independent
DSL generators




✔ high-level
✔ easier to generate
✔ machine-independent
software platforms
data model   user interface




  logic      access control




workflow      data validation
define page conference(c : Conference) {
  header { “Accepted papers” }
  list {
    for(p : Paper in c.papers where p.accepted) {
      listitem { output(p) }
    }
  }
}
http://tweetview.net/ev/sle09
WebDSL compiler
WebDSL compiler
java
java   python
ANTLR
ANTLR

perl 5        python
objective-c   action script
c             c#
javascript    c# 3
java          delphi
perl 5       objective-c   python   action script     c




javascript      java         c#         c# 3        delphi
ANTLR back-end support
                     as of 4th of september 2009


  language                status

    Java            in sync with ANTLR3


 JavaScript         in sync with ANTLR3


               in sync with ANTLR3 (except no
    C# 3        support for -debug and -profile)

                 currently catching up with
 Objective-C          release version

               last working version is v3.0ea7.
   Ruby            Catching up with v3.0b3
DSL compiler architecture
DSL
              (text)
                   parse

              DSL




front-end
             (model)

                   typecheck

              DSL
             (checked)

                   desugar

              DSL
              (core)

                   generate code

            Platform
back-end




                   pretty-print

             Code
DSL
              (text)
                   parse

              DSL




front-end
             (model)

                   typecheck

              DSL
             (checked)

                   desugar

              DSL
              (core)

                   generate code

            Platform
back-end




                   pretty-print

             Code
retargeting a DSL compiler
DSL
 (core)




Platform
DSL
             (core)




Platform 1            Platform 2
DSL
              (core)


                            large semantic gap

 Platform 1             Platform 2




front-end                25,000
back-ends              10,000 each
Java




page-elem-to-java:
  |[ list { elem* } ]| ->
  |[ out.print(“<ul>”);
     stat_elem*
     out.print(“</ul>”); ]|
  with stat_elem* := <map(elem-to-java)> elem*
Java




page-elem-to-java:
  |[ list { elem* } ]| ->
  |[ out.print(“<ul>”);
     stat_elem*
     out.print(“</ul>”); ]|
  with stat_elem* := <map(elem-to-java)> elem*
servlets
servlets

flexibility   control   performance
developer platform != code generator platform
developer platforms




 OOP
       Java   C#   Python   Ruby
developer platforms
                                    dynamic typing
                                   lambda functions
                                    ORM framework
                                    event support
                                    flexible syntax
                                     inner classes
                                   anonymous classes
                                       iterators
                                      annotations
 OOP
       Java   C#   Python   Ruby
fancy platform features
Java




page-elem-to-java:
  |[ list { elem* } ]| ->
  |[ out.print(“<ul>”);
     stat_elem*
     out.print(“</ul>”); ]|
  with stat_elem* := <map(elem-to-java)> elem*
Python




page-elem-to-python:
  |[ list { elem* } ]| ->
  |[ out.print(“<ul>”)
     stat_elem*
     out.print(“</ul>”) ]|
  with stat_elem* := <map(elem-to-python)> elem*
language translation

              DSL
              (core)




 Platform 1            Platform 2
language translation

              DSL
              (core)




 Platform 1            Platform 2
Microsoft™ Java™ language conversion assistant
              for Visual Studio™
Microsoft™ Java™ language conversion assistant
              for Visual Studio™




                 incomplete
DSL
      (core)




C
    JRuby
DSL
      (core)




C
    JRuby
compatibility
compatibility
performance
compatibility
performance
maintenance
compatibility
    performance
    maintenance
just for JVM and .NET
code generation




OOP
      Java   C#   Python   Ruby




 just subset of platforms
DSL
               (core)




Platform 1   Platform 2   Platform n
DSL
               (core)




                 IL



Platform 1   Platform 2   Platform n
UNCOL
Universal Computer Oriented Language
                  Melvin E. Conway, 1958
C--




O-code
         UNCOL
         Universal Computer Oriented Language
                                                    P-code

                           Melvin E. Conway, 1958




                  gcc’s RTL
traditional ILs      High-level IL


   machine
                   software platform
 architecture

   low-level          high-level

                       familiar
abstract syntax
                   concrete syntax
abstract from platform
  familiar concrete syntax
        cheap to port
easy DSL compiler integration
    platform interaction
PIL
Platform Independent Language
DSL
        (core)




        PIL



Java   Python    ...
abstract from platform

  familiar concrete syntax

        cheap to port

easy DSL compiler integration

    platform interaction
✔ abstract from platform

  familiar concrete syntax

        cheap to port

easy DSL compiler integration

    platform interaction
simplified Java
✘ visibility modifiers
✘ abstract classes
✘ interfaces
✘ inner/anonymous classes
✘ import com.somelib.*;
✘ checked exceptions
✘ primitive types
✘ one class per file
✘ static class members
.
a.b
a.b


a = package, class, field,
       variable?
PIL



a::b
a.b
this.a.b
Java-like syntax

class page::Home extends webdsl::web::Page {
  String title = null;
  String name = null;

    void init(pil::web::Request request) {
       this.name = request.getParameter(“name”);
    }

    void render(pil::util::PrintWriter out) {
      out.print(“<html><head><title>” + title +
                “</title></head><body>”);
      out.print(“<h1>Welcome “ + name + “</h1>”);
      out.print(“</body></html>”);
    }
}
Object
    Bool
     Int
    Float
    Char
    Byte
   String
MutableString
 Array<T>
  List<T>
   Set<T>
 Map<K,V>
 Exception
1,200 lines Stratego/platform
✔ abstract from platform

  familiar concrete syntax

        cheap to port

easy DSL compiler integration
    platform interaction
✔ abstract from platform

✔ familiar concrete syntax

        cheap to port

easy DSL compiler integration
    platform interaction
✔ abstract from platform

✔ familiar concrete syntax

     ✔ cheap to port

easy DSL compiler integration
    platform interaction
Stratego/XT library

imports
  libpil-front
  libpil-java-backend
  libpil-python-backend
stand-alone compiler

$ pilc -i application.pil --java
$ pilc -i application.pil --python
✔ abstract from platform

✔ familiar concrete syntax

     ✔ cheap to port

easy DSL compiler integration

    platform interaction
✔ abstract from platform

  ✔ familiar concrete syntax

       ✔ cheap to port

✔ easy DSL compiler integration

       platform interaction
platform interaction
external class pil::web::Request {
     String getParameter(String name);
     ...
   }




platform-specific implementations
Java implementation

package pil.web;

import javax.servlet.http.*;

public class Request {
  private HttpServletResponse r;

    public Response(HttpServletResponse r) {
      this.r = r;
    }

    public String getParameter(String name) {
      return r.getParameter(name);
    }

    ...
}
Python implementation

import cgi

class Request(object):
  def __init__(self):
    self.fs = cgi.FieldStorage()

  def getParameter(self, name):
    return self.fs[name]

  ...
NHibernate
NHibernate
NHibernate
external class db::DatabaseSession {
  void beginTransaction();
  void rollback();
  void commit();
  List<Object> getAll(Class cls);
  void persist(Object o);
  void delete(Object o);
}
WebDSL



                                 ORM
                    PIL
                               Interface



Hibernate   Java          Python     SQLAlchemy
query API/language?
query API/language?

persistence behavior?
WebDSL



PIL/ORM           PIL



          Java          Python
✔ abstract from platform

     ✔ familiar concrete syntax

           ✔ cheap to port

   ✔ easy DSL compiler integration

✔ code-generation specific abstractions

          platform interaction
✔ abstract from platform

     ✔ familiar concrete syntax

           ✔ cheap to port

   ✔ easy DSL compiler integration

✔ code-generation specific abstractions

       ✔ platform interaction
conclusion
retargetability problem:
  software platforms
retargetability problem:
            software platforms


maintaining platform back-ends is expensive
retargetability problem:
            software platforms


maintaining platform back-ends is expensive


                    PIL
retargetability problem:
            software platforms


maintaining platform back-ends is expensive


                    PIL

                   PIL/G
Java & Python back-ends
Java & Python back-ends




Stratego/XT
Java & Python back-ends




Stratego/XT
pil-lang.org

  webdsl.org

twitter.com/zef

Más contenido relacionado

La actualidad más candente

Challenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective KernelsChallenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective KernelsESUG
 
Entwicker camp2007 calling-the-c-api-from-lotusscript
Entwicker camp2007 calling-the-c-api-from-lotusscriptEntwicker camp2007 calling-the-c-api-from-lotusscript
Entwicker camp2007 calling-the-c-api-from-lotusscriptBill Buchan
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
WEB PROGRAMMING UNIT V BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT V BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT V BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT V BY BHAVSINGH MALOTHBhavsingh Maloth
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 
Source vs object code
Source vs object codeSource vs object code
Source vs object codeSana Ullah
 
Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation Rebaz Najeeb
 
Tail Call Elimination in Open Smalltalk
Tail Call Elimination in Open SmalltalkTail Call Elimination in Open Smalltalk
Tail Call Elimination in Open SmalltalkESUG
 
Towards easy program migration using language virtualization
 Towards easy program migration using language virtualization Towards easy program migration using language virtualization
Towards easy program migration using language virtualizationESUG
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldSATOSHI TAGOMORI
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylightGunjan Patel
 
llvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Pythonllvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Pythonmdevan
 
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...Embarcadero Technologies
 
Web Programming UNIT VIII notes
Web Programming UNIT VIII notesWeb Programming UNIT VIII notes
Web Programming UNIT VIII notesBhavsingh Maloth
 
.NET Framework Overview
.NET Framework Overview.NET Framework Overview
.NET Framework OverviewDoncho Minkov
 
Source-to-Source Compiler
Source-to-Source CompilerSource-to-Source Compiler
Source-to-Source CompilerMintoo Jakhmola
 

La actualidad más candente (20)

Challenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective KernelsChallenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective Kernels
 
Entwicker camp2007 calling-the-c-api-from-lotusscript
Entwicker camp2007 calling-the-c-api-from-lotusscriptEntwicker camp2007 calling-the-c-api-from-lotusscript
Entwicker camp2007 calling-the-c-api-from-lotusscript
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
Java vs .net (beginners)
Java vs .net (beginners)Java vs .net (beginners)
Java vs .net (beginners)
 
WEB PROGRAMMING UNIT V BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT V BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT V BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT V BY BHAVSINGH MALOTH
 
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
Source vs object code
Source vs object codeSource vs object code
Source vs object code
 
Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation Lecture 1 Compiler design , computation
Lecture 1 Compiler design , computation
 
C compiler-ide
C compiler-ideC compiler-ide
C compiler-ide
 
Introduction to java new
Introduction to java newIntroduction to java new
Introduction to java new
 
Tail Call Elimination in Open Smalltalk
Tail Call Elimination in Open SmalltalkTail Call Elimination in Open Smalltalk
Tail Call Elimination in Open Smalltalk
 
Towards easy program migration using language virtualization
 Towards easy program migration using language virtualization Towards easy program migration using language virtualization
Towards easy program migration using language virtualization
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real World
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylight
 
llvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Pythonllvm-py: Writing Compilers In Python
llvm-py: Writing Compilers In Python
 
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
 
Web Programming UNIT VIII notes
Web Programming UNIT VIII notesWeb Programming UNIT VIII notes
Web Programming UNIT VIII notes
 
.NET Framework Overview
.NET Framework Overview.NET Framework Overview
.NET Framework Overview
 
Source-to-Source Compiler
Source-to-Source CompilerSource-to-Source Compiler
Source-to-Source Compiler
 
Python Introduction
Python IntroductionPython Introduction
Python Introduction
 

Similar a PIL - A Platform Independent Language

Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application DevelopmentRamesh Prasad
 
Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Jimmy Schementi
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
Introduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOIntroduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOLiran Zvibel
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharpHEM Sothon
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharpJayanta Basak
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnishRajnish Kalla
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
 
Porting VisualWorks code to Pharo
Porting VisualWorks code to PharoPorting VisualWorks code to Pharo
Porting VisualWorks code to PharoESUG
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)lennartkats
 

Similar a PIL - A Platform Independent Language (20)

Intro dotnet
Intro dotnetIntro dotnet
Intro dotnet
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application Development
 
Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011Iron Languages - NYC CodeCamp 2/19/2011
Iron Languages - NYC CodeCamp 2/19/2011
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
E sampark with c#.net
E sampark with c#.netE sampark with c#.net
E sampark with c#.net
 
Introduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IOIntroduction to D programming language at Weka.IO
Introduction to D programming language at Weka.IO
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Serverless in action
Serverless in actionServerless in action
Serverless in action
 
Intro dotnet
Intro dotnetIntro dotnet
Intro dotnet
 
Intro dotnet
Intro dotnetIntro dotnet
Intro dotnet
 
Intro dotnet
Intro dotnetIntro dotnet
Intro dotnet
 
Intro dotnet
Intro dotnetIntro dotnet
Intro dotnet
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharp
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharp
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnish
 
basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
Porting VisualWorks code to Pharo
Porting VisualWorks code to PharoPorting VisualWorks code to Pharo
Porting VisualWorks code to Pharo
 
Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)Using Aspects for Language Portability (SCAM 2010)
Using Aspects for Language Portability (SCAM 2010)
 

Más de zefhemel

Docker ecosystem
Docker ecosystemDocker ecosystem
Docker ecosystemzefhemel
 
Expand your horizons
Expand your horizonsExpand your horizons
Expand your horizonszefhemel
 
Avoiding JavaScript Pitfalls Through Tree Hugging
Avoiding JavaScript Pitfalls Through Tree HuggingAvoiding JavaScript Pitfalls Through Tree Hugging
Avoiding JavaScript Pitfalls Through Tree Huggingzefhemel
 
Cloud9 IDE Talk at meet.js Poznań
Cloud9 IDE Talk at meet.js PoznańCloud9 IDE Talk at meet.js Poznań
Cloud9 IDE Talk at meet.js Poznańzefhemel
 
Frontrow conf
Frontrow confFrontrow conf
Frontrow confzefhemel
 
mobl presentation @ IHomer
mobl presentation @ IHomermobl presentation @ IHomer
mobl presentation @ IHomerzefhemel
 
mobl - model-driven engineering lecture
mobl - model-driven engineering lecturemobl - model-driven engineering lecture
mobl - model-driven engineering lecturezefhemel
 
Internal DSLs
Internal DSLsInternal DSLs
Internal DSLszefhemel
 
WebWorkFlow
WebWorkFlowWebWorkFlow
WebWorkFlowzefhemel
 
Abstractie (Dutch)
Abstractie (Dutch)Abstractie (Dutch)
Abstractie (Dutch)zefhemel
 
Internal DSLs Scala
Internal DSLs ScalaInternal DSLs Scala
Internal DSLs Scalazefhemel
 

Más de zefhemel (13)

Docker ecosystem
Docker ecosystemDocker ecosystem
Docker ecosystem
 
Expand your horizons
Expand your horizonsExpand your horizons
Expand your horizons
 
Avoiding JavaScript Pitfalls Through Tree Hugging
Avoiding JavaScript Pitfalls Through Tree HuggingAvoiding JavaScript Pitfalls Through Tree Hugging
Avoiding JavaScript Pitfalls Through Tree Hugging
 
Cloud9 IDE Talk at meet.js Poznań
Cloud9 IDE Talk at meet.js PoznańCloud9 IDE Talk at meet.js Poznań
Cloud9 IDE Talk at meet.js Poznań
 
Frontrow conf
Frontrow confFrontrow conf
Frontrow conf
 
mobl presentation @ IHomer
mobl presentation @ IHomermobl presentation @ IHomer
mobl presentation @ IHomer
 
mobl - model-driven engineering lecture
mobl - model-driven engineering lecturemobl - model-driven engineering lecture
mobl - model-driven engineering lecture
 
Internal DSLs
Internal DSLsInternal DSLs
Internal DSLs
 
mobl
moblmobl
mobl
 
WebWorkFlow
WebWorkFlowWebWorkFlow
WebWorkFlow
 
Abstractie (Dutch)
Abstractie (Dutch)Abstractie (Dutch)
Abstractie (Dutch)
 
Internal DSLs Scala
Internal DSLs ScalaInternal DSLs Scala
Internal DSLs Scala
 
WebDSL
WebDSLWebDSL
WebDSL
 

Último

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Último (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

PIL - A Platform Independent Language