Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
devfest
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Anna Bulenkova
October 19, 2013
1
320
devfest
Anna Bulenkova
October 19, 2013
Tweet
Share
More Decks by Anna Bulenkova
See All by Anna Bulenkova
Performance question: functional vs imperative in Ruby @muc_rubyshift
boogiecat
1
270
How to look like a model? MongoDB for Rails apps
boogiecat
0
74
ULCAMP. RubyMine promo. Hade made, grandma recipe.
boogiecat
0
75
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Building an army of robots
kneath
306
46k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
86
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Code Review Best Practice
trishagee
74
20k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
750
Automating Front-end Workflow
addyosmani
1370
200k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
230
Transcript
Hi
Anna Bulenkova Software Developer JetBrains @povergo
RubyMine project
Surviving Environment Disasters Or how we’re suffering making Ruby support
Ruby & Java
IntelliJ platform
Ruby 1995 vs RubyMine 2009
How to make an IDE?
In fact, forget the editor... •Debugging •VCS •Visualisation •SDK &
Libraries management •Frameworks •Something cute and sweet
We still need an editor •Find errors •Autocompletion •Resolve •Find
usages •Rename
Good editor
Roots of evil?
Open Source
Dynamic typing
Errors •Syntax •Everything else
Errors •Syntax - lexer & parser •Lexer - JFlex •Parser
- yourself or GrammarKit •Everything else - need to know what it is
Syntax tree AST + PSI
Syntax tree
Errors •Syntax - lexer & parser •Everything else - need
to know what it is
42
42
Indexing: file- & stub- based •External libraries •Internal content
References •Regular •Multi-resolve
It’s easy. Sometimes
Where to go?
FQN? Haven’t heard of it.
It’s more or less fine if we know the class
Even this is ok
Reassignments
Join types
class_eval
Class eval
Class eval
Class eval
instance_eval
Instance eval
Instance eval
Instance eval: go to declaration
method_missing and friends
Not even an option
Have we met before?
But how?
undef_method and friends
DSLs They are full of evil
DSLs They are full of eval
DSLs They are full of evil
We hardcode
With our own DSL
Hiding-places •Docs •Annotations •Naming conventions •Runtime
Runtime
SLOW
Choose the lesser of two evals
Choose the lesser of two evils
With or without IDE?
@povergo
[email protected]
speakerdeck.com/boogiecat/devfest