This document discusses remixing language tooling by creating a functional interface for language services. It proposes defining individual language services like parsing, analyzing and completing as standalone functions. This makes the interface technology agnostic and allows reusing existing tooling. It demonstrates implementing such services by combining parser generators, analysis frameworks and other reusable components without having to build everything from scratch. The overall approach aims to accelerate creation of customized IDEs.
56. How can things be that
simple...
Command-line tool:
• you tell it what to do
• you give it an input
• it returns a result
57. How can things be that
simple...
Command-line tool:
• you tell it what to do
• you give it an input
• it returns a result
=> it’s a functional interface!
58. How can things be that
simple...
“Functional is the New Black” *
*Elise Huard, tomorrow
73. Remix Your
Language Tooling
http://github.com/lennartcl
http://twitter.com/lennartcl
http://lennart.cl http://c9.io
Notas del editor
How to Effectively Build Language Tooling\n\n... or, alternatively, how WE can remix OUR language tooling\n
\n
\n talk today will focus on TOOLING\n
\n
\n
\n\none of the pioneers in programming language design\n\none of the first women in the US to receive a PhD in CS\n
\n
- several years since I first tried JavaScript. think it's been over 10 years.\n - copy/pasting for popup menus on web pages\nBack when everybody was still using “Under Construction”\n\n\n\n\nhttp://contemporary-home-computing.org/still-there/geocities.html\n
Things have changed since.\n\n\n\n\n\n\n\nhttps://commons.wikimedia.org/wiki/File:Beta-badge.svg\n\n\n\n
\n
\n
\n
\n
“Application Scale JavaScript”\n“Last audience: shocked, mix of surprise and anger”\n
\n
\n
\n
\n
\n
Is there anyone in the audience who knows JavaScript and can point out an error in this code?\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Any IDE that’s worth anything\n
\n
Two reasons for doing an IDE in the cloud:\n- one is all the reasons anyone would make any application online. We’re JavaScript developers, why would our IDE not be online?\n- the other is nice pictures of clouds\n\nNice place of fluffy clouds, but new things keep happening:\n- new libraries, new ways of using the language, new platforms\n
\n
\n
\n
\n
Optional types, if you want you can declare the type of any function, property, or variable\n
\n
\n
as a language tooling guy I must say I like these extensions\n “lots of controversy”; yet another compile-to-js, will make debugging harder, yadayada and so on. \n at Cloud9 we really only care about making you more productive\n so by the immortal words of my colleague Garen,\n
how long did it take us to support it?\n one day.\n
how long did it take us to support it?\n one day.\n
\n
how long did it take us to support it?\n one day.\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
syntax highlighter\n terminal\n this took maybe 30 minutes to complete\n the other thing we use is NPM: users can install anything they want in their dev instance, including the typescript compiler\n
syntax highlighter\n terminal\n this took maybe 30 minutes to complete\n the other thing we use is NPM: users can install anything they want in their dev instance, including the typescript compiler\n
\n
\n"c9 been around, now at the point where the community can make awesome tools\n\nAs of today, we&#x2019;re opening up Cloud9. We&#x2019;re making it possible to ...\n\n&#x201C;i&#x2019;ll show you how you can do that&#x201D;\n
We want to make it possible to build that villa for any language. For any library.\n
\n
\n
\n
\n
\n
\n
<what if we can remix>\n \n \n \n \n \n http://egonego.blogspot.nl/\n
\n
Why in the age of social coding is it so hard to remix language tooling?\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
<show terminal screenshot installing typescript and having it output errors; show size of compiler>\n not minified; but it&#x2019;s application-scale\n\n
\n
\n
\n
Can apply it to other languages w/ linters\n\nTypeScript, PHP, CoffeeScript, ANTLR\n
\n
\n
No UI or anything involved; it&#x2019;s just a black box that we call\n
Explored before in other projects and in the academic world\n
And please, people. Don&#x2019;t do everything with your hands. There are tools for building language components.\n\nhttp://wickedstageact2.typepad.com/life_on_the_wicked_stage_/cool_tools/page/2/\nhttp://dvice.com/pics/hand_wrench.jpg\n
Michael Ficarra&#x2019;s CoffeeScript Redux project\n\n\nused PEG.js\n
\n
\n
\n
\n
\n
\n
\n
\n
\n parting message:\n remix your tooling;\n use generic language-independent frameworks to build language tooling\n\n
I&#x2019;m Lennart Kats and I&#x2019;ve remixed my name into such sites as github, twitter, and the interwebs\n\nIn the coming weeks we&#x2019;ll be releasing docs and examples.\n\nYou heard it here first.\n