SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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 a Language Engineering in the Cloud

Net framework
Net frameworkNet framework
Net framework
jhsri
 

Similar a 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
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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
 
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)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Language Engineering in the Cloud

Notas del editor

  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