Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

YouTube

Designing IDE-Friendly Programming Languages

Java via YouTube

Overview

Explore the intricacies of designing IDE-friendly programming languages in this 45-minute Java conference talk. Gain insights from JetBrains' experience in creating IDEs for various languages, learning which features facilitate easier support and which pose challenges. Discover how static typing aids development, while compile-time macros and lambdas can complicate implementation. Examine the impact of language features on IDE performance and functionality, from basic parsing to advanced capabilities. Delve into topics such as syntax recognition, declaration methods, name referencing, and resolution hints. Understand the balance between IDE-friendliness and user-friendliness in language design, equipping yourself with valuable knowledge for creating more efficient and supportable programming languages.

Syllabus

Intro
Myself working on language support infrastructure
What's IDE-friendly? Basic support
An IDE needs to recognize...
By single file's content: violations
Determine syntactic construction
1.1. Syntax scrambled by templating/macros
1.2. Syntax depending on non-local information
1.3. Complicated parsing
1.4. Slow parsing
1.5. Syntactic ambiguities on incomplete code
What's declared?
2.1. Declaring by call
22. Declaring by compiler plugin
Which names are referenced?
Which names are referenced: implicit calls
3. Which names are referenced: Java lambdas
Resolve hints: where to look for declarations
Resolve hints: ideal (Haskell)
4. Resolve hints: Java
4. Resolve hints: local type inference
4. Resolve hints: return type inference
constraints to boost your creativity!
IDE-friendly and people-friendly

Taught by

Java

Reviews

Start your review of Designing IDE-Friendly Programming Languages

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.