SlideShare a Scribd company logo
1 of 60
Language Engineering
    in the Cloud



       Lennart Kats
        @lennartcl
9
<utrecht>
Language Engineering
     Research

Compilers
Domain-specific languages
Language extensions
Parsers
Spoofax
Spoofax




“DOES THE TYPE CHECKER CATCH THIS?”
Spoofax




“DOES THIS HYPERLINK POINT TO THE RIGHT PLACE?”
Fast-growing startup:
     Cloud9 IDE
Venture capital


30 employees


2 offices
Core Product
Organization

Front-end
             Products

Back-end
              Support
Language
            Marketing &
              business
 Node.js    development
Open Source
Goal



Create the best (JavaScript) IDE out there!
Key Features
Collab
Collab
Integration with
 Cloud Services
VIM Mode
Offline Mode
Terminal Access
Language Support
Cloud9 Architecture
300.000 lines


of JavaScript
Everything is a plugin

                             file tree

search
                  JS completion
                                        terminal
     file system
                             save
Plugin components

      Client-side JS


      Server-side JS


       XML for UI
Evented I/O for JavaScript
V8 JavaScript engine
Everything asynchronous
No threads
Scaling
ELB



Proxy1   Proxy2   Proxy3



IDE1     IDE2     IDE3
XaaS in Cloud9
                Browser




Developer IDE    SaaS

     Red Hat     PaaS

     Amazon      IaaS
ELB



 Proxy1           Proxy2            Proxy3



  IDE1            IDE2              IDE3


Gear1     Gear2       Gear3   ...     Gear n
Language
Infrastructure
Cloud9
Language Services


       DEMO
Editor, plugin
                 Cloud9
 architecture
UI, Events,
                 Language Foundation
WebWorkers

Editor, plugin
                       Cloud9
 architecture
Interface       base_handler

  UI, Events,
                 Language Foundation
WebWorkers

Editor, plugin
                       Cloud9
 architecture
Implementation      Language services


      Interface       base_handler

   UI, Events,
                   Language Foundation
 WebWorkers

  Editor, plugin
                         Cloud9
   architecture
base_handler
•   handlesLanguage()
•   parse()
•   analyze()
•   outline()
•   complete()
•   ...
Language Foundation

     All language services are functional and
           described by a single function




The Spoofax Language Workbench, OOPSLA 2009
Language Foundation

  All language services are technology-agnostic


findNode(), getPos()

Accelerating the creation of customized, language-Specific IDEs
in Eclipse, Charles et al., OOPSLA 2009
Language Foundation


   All language services asynchronous


  WebWorkers or Client/Server I/O
Language Foundation

  Concise specification using generic traversals




Stratego/XT 0.17. A language and toolset for program
transformation, Bravenboer et al., SCP 2008
Treehugger.js


• Based on Stratego/XT
• 100% JavaScript
• Use any parser
• Efficient
Implementation      Language services


      Interface       base_handler

   UI, Events,
                   Language Foundation
 WebWorkers

  Editor, plugin
                         Cloud9
   architecture
Parser            JS Services
Implementation
                            treehugger.js

      Interface             base_handler

   UI, Events,
                      Language Foundation
 WebWorkers

  Editor, plugin
                              Cloud9
   architecture
Treehugger.JS



     DEMO
Computational Model

Server-side:
- CPU resources expensive


Client-side:
- CPU resources “free”!
VMs for everyone!
What’s Next

Whole-project analyses
• Incremental
• Distributed
• Multi-user
What’s Next

Parser generators
• Incremental
• Recovery
• General
What’s Next

Java IDE
• High expectations of Java IDEs
• Can’t we reuse existing IDEs?
• OpenShift to the rescue
What’s Next


Cloud9 Extension Store
• Extend Cloud9 for tools, languages
• GitHub
Community Reachout

• Open source, GitHub
• R&D
• Graduate students
• Education
• Third-party extensions
Conclusion

             Open-source
              OpenShift
Advanced language analysis expanding to
     server and other languages


         Lennart C. L. Kats
     @lennartcl http://lennart.cl

More Related Content

What's hot

a quick Introduction to PyPy
a quick Introduction to PyPya quick Introduction to PyPy
a quick Introduction to PyPy
Kai Aras
 
Programming Language
Programming  LanguageProgramming  Language
Programming Language
Adeel Hamid
 

What's hot (18)

Community Tech Days C# 4.0
Community Tech Days C# 4.0Community Tech Days C# 4.0
Community Tech Days C# 4.0
 
C# language
C# languageC# language
C# language
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
.Net
.Net.Net
.Net
 
An Introduction to PyPy
An Introduction to PyPyAn Introduction to PyPy
An Introduction to PyPy
 
C-Sharp 6.0 ver2
C-Sharp 6.0 ver2C-Sharp 6.0 ver2
C-Sharp 6.0 ver2
 
PyPy
PyPyPyPy
PyPy
 
a quick Introduction to PyPy
a quick Introduction to PyPya quick Introduction to PyPy
a quick Introduction to PyPy
 
Programming Language
Programming  LanguageProgramming  Language
Programming Language
 
Programming Language Selection
Programming Language SelectionProgramming Language Selection
Programming Language Selection
 
Python for Swift
Python for SwiftPython for Swift
Python for Swift
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
 
Introduction to Go-Lang
Introduction to Go-LangIntroduction to Go-Lang
Introduction to Go-Lang
 
LIL Presentation
LIL PresentationLIL Presentation
LIL Presentation
 
Difference between c, c++ and java
Difference between c, c++ and javaDifference between c, c++ and java
Difference between c, c++ and java
 
Go programing language
Go programing languageGo programing language
Go programing language
 
Intro dotnet
Intro dotnetIntro dotnet
Intro dotnet
 
C++vs java
C++vs javaC++vs java
C++vs java
 

Similar to Language Engineering in the Cloud

Net framework
Net frameworkNet framework
Net framework
jhsri
 

Similar to Language Engineering in the Cloud (20)

Spring Roo Flex Add-on
Spring Roo Flex Add-onSpring Roo Flex Add-on
Spring Roo Flex Add-on
 
Cloud development technology sharing (BlueMix premier)
Cloud development technology sharing (BlueMix premier)Cloud development technology sharing (BlueMix premier)
Cloud development technology sharing (BlueMix premier)
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
whats-new-netbeans-ide-7x.pptx
whats-new-netbeans-ide-7x.pptxwhats-new-netbeans-ide-7x.pptx
whats-new-netbeans-ide-7x.pptx
 
005528214.pdf
005528214.pdf005528214.pdf
005528214.pdf
 
Net framework
Net frameworkNet framework
Net framework
 
Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.
 
Glympse API Cross Compiling
Glympse API Cross CompilingGlympse API Cross Compiling
Glympse API Cross Compiling
 
.NET Core on Mac
.NET Core on Mac.NET Core on Mac
.NET Core on Mac
 
Java script
Java scriptJava script
Java script
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.x
 
What’s New & Cool in NetBeans IDE 7.x
What’s New & Cool in NetBeans IDE 7.xWhat’s New & Cool in NetBeans IDE 7.x
What’s New & Cool in NetBeans IDE 7.x
 
desktop_resume
desktop_resumedesktop_resume
desktop_resume
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
 
Net overview
Net overviewNet overview
Net overview
 
Manas
ManasManas
Manas
 
Getting Started with ASP.NET vNext
Getting Started with ASP.NET vNextGetting Started with ASP.NET vNext
Getting Started with ASP.NET vNext
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRaining
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Language Engineering in the Cloud

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. What I brought to the table\nIDE compulsory\n
  9. intimate connection between the two\nboth from user and developer perspective\n
  10. Language workbenches combine interactive definition and use of DSLs\n
  11. Scenario: scoping rules!\n
  12. Scenario: scoping rules!\n
  13. \n
  14. After four years, I completed my PhD and went on to do a 2 year postdoc\n
  15. \n
  16. \n
  17. \n
  18. Accel/Atlassian\n
  19. \n
  20. 30 ppl; half developers\n\nproducts: strategies, website, UX, support\n
  21. \n
  22. \n
  23. 2 areas: features based on the connectiveness of the cloud, and features familiar from desktop IDEs\n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. IaaS: scaling, pay-by-use\n
  43. IaaS: scaling, pay-by-use\n
  44. IaaS: scaling, pay-by-use\n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. departure from DSL approach\nefficient: caching\n
  62. \n
  63. \n
  64. \n
  65. \n
  66. NodeJS: single-threaded; openshift: computational power per user!\n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n