Skip to content

Interactive Design Meeting Notes - 1/30/15 #213

@kuhlenh

Description

@kuhlenh

Interactive Design Meeting Notes - 1/30/15

Definitions

  • REPL: a read-eval-print-loop is a tool that allows developers to execute code snippets in a user-supplied context
  • Scripting: a light-weight solution for writing simple and small programs. Includes an API for users to execute scripts in host-supplied applications
  • Interactive Window: the Visual Studio component that will host the interactive modes of languages
  • Design-time, also referred to as "standalone," includes scenarios that are not attached to a debugger process
  • Debug-time, also referred to as the "immediate window," includes scenarios that are attached to a debugger process

Design Team

The following individuals are members of the dream team:
Anthony D. Green
Chuck Stoner
Dustin Campbell
Kasey Uhlenhuth
Kevin Halverson
Kevin Pilch-Bisson
Lincoln Atkinson
Manish Jayaswal
Matt Warren
Tomas Matousek

Special Guests:
Neal Gafter


Agenda: Language Semantics & REPL Features

Quotes of the Day:

"It’s all about Microsoft BOB--best of breed."
"Only Amazon can pull off One-Click"

Language Semantics

Last time, we did not get a chance to cover the additional directives that F# uses: '#l' and '#time'.

  • #l: Allows a developer to add "some path" to assembly and script resolution search path.
    • We don't see this as necessary. Our goal is to do this resolution automatically when developers #r a NuGet package.
  • #time: Allows a developer to turn on simple perf stats, e.g. Real, CPU, GCU, for each evaluated command.
    • We don't see this as a directive and it is low priority for now.
  • @glennblock: Yes, we plan to allow 'await' at the top-level in scripts

REPL Features

We met to check out successful REPLs that exist today. The key insights we got were:

REPLs:

  • IPython has a decoupled two-process that places the evaluation in its own process (the kernel). We have a similar model, but we lack a well-specified protocol (perhaps we should emulate IPython's).
  • We should look into the "notebook" feature and see if it's something we think is valuable for C#/VB developers. Would be a great tool for documenting APIs and tutorials online.
  • Inline visualizations are interesting, but any visualizations we have should be consistent with our debugging experiences today.
  • Mathematica is powerful because it allows you to manipulate outputs and change their state. This would make C# data-scientist friendly.
  • We should look into the possibility of integrating the ability to test UI behavior (possibly through WinForms).

Debugging:
There are two primary debugging scenarios with the REPL:

  • Developers use the REPL to aid debugging within VS
  • Developers use the REPL to debug script files within the console (hit F5 to debug in console)

Note:
There will be no meeting next week. We will be working on building Interactive!

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions