Code completion (IntelliSense and friends) has become a default feature in source code editors, that helps beginners and veterans alike to navigate their way through the ever growing complexity of language and library functionality, as well as the code of their colleagues and even their own. However, this feature has barely evolved since its inception, partly due to the myopia that the object oriented programming paradigm brings with it. I think it is time to change that and will present a way forward.
Presented at Game Dev Days Graz Online Edition 2020
3. Intuition in Programming
• Traditionally
• "Cheap" programmer time vs. expensive computer time
• Plenty of conscious reasoning required
• Recalling or acquiring knowledge
• Intuition only at competence level
• Now (especially in GameDev)
• Expensive programmer time vs. cheap computer time
• Fast iterations are possible and desired
• Trial and error programming is feasible
• Intuitive programming is becoming the norm
Dietmar Hauser | roborodent e.U. | 2020
4. "Intelligent" Code Completion (ICC)
• Type some incomplete statement
• Press a key and the code editor will…
• do nothing
• show a list of suggestions
• autocomplete it
• Fill in the rest, assisted by ICC
• Compile, Run, Debug
• Repeat!
Dietmar Hauser | roborodent e.U. | 2020
5. Imperative Programming
• The oldest still relevant programming style
• Subject is implied and always the same
• Verb is most important, but hardest to find
• Objects are trivial, their order is not
• ICC helps with object order, but not with verb
Dietmar Hauser | roborodent e.U. | 2020
fputs(file, "Hello Worldn");
Verb Object 1 Object 2
Computer!
Subject WTF?!
6. Objective Oriented Programming
• The most common programming style
• ICC can infer Verb from primary object (Object 1)
• Primary object looks like Subject, but isn't
• ICC doesn't help with finding the primary object
Dietmar Hauser | roborodent e.U. | 2020
file.WriteLine("Hello World");
file << "Hello World" << endl;
VerbObject 1 Object 2
Computer!
Subject
Computer!
2nd verb & 3rd object
7. Intuition Oriented Programming
• A future programming style
• An example syntax:
• Start by writing Object 1, Object 2
• Hit that ICC key
• ICC lists all possible Verbs for those objects
• Profit!
Dietmar Hauser | roborodent e.U. | 2020
WriteLine(file, "Hello World");
Verb Object 1 Object 2
Computer!
Subject
8. Conclusions
• Accessibility in programming is important…
• … but also seriously lacking …
• … but will also benefits veterans
• IOP can happen in the code editor…
• … but gets better with language support
• There are many small improvement possible
• Let's get started!
Dietmar Hauser | roborodent e.U. | 2020
9. Dietmar Hauser | roborodent e.U. | 2020
roborodent
Dietmar Hauser
P r o g r a m m e r
Software Solutions | Creative Consulting
https://www.roborodent.com
@rattenhirn
dietmar.hauser@roborodent.com
https://slideshare.net/DietmarHauser
https://fb.me/roborodent
https://github.com/rattenhirn/
https://www.linkedin.com/in/rattenhirn/
Notas do Editor
Thanks for having me
My first online conference
Improvised orga is very much in the spirit of game development
My talk is kinda improvised, but only 7 minutes long
The reason for doing it is that I love programming and want to make it better
I hope for a robust discussion afterwards
Let's start by talking about intuition
it is a mushy word
my working definition
Example for hierarchy: learning a manual skill or an instrument
We like it because it is low effort
A typical workflow when using intuition
key combo, or it happens automatically
3 levels of success