Visual Studio / Haskell Simon Marlow Krasimir Angelov + others.

Slides:



Advertisements
Similar presentations
Extending Eclipse Kai-Uwe Mätzel IBM OTI Labs Zurich
Advertisements

Tahir Nawaz Introduction to.NET Framework. .NET – What Is It? Software platform Language neutral In other words:.NET is not a language (Runtime and a.
CS0004: Introduction to Programming Visual Studio 2010 and Controls.
© VHS/VHS-AM Team Integrating Haskell with Visual Studio Assignment Manager André Santos & VHS/VHS-AM Team
JAS in SDA. My Experience My assignment was to use JAS to read SDA data and make plots. –I used OSDA and OSDAphysics to read SDA data. OSDA and OSDAphysics.
CA 121 Intro to Programming Tariq Aziz and Kevin Jones GUI Programming in Visual Studio.NET Chapter 1 Tariq Aziz and Kevin Jones.
Nicolas Burri Roland Schuler Roger Wattenhofer. Nicolas Burri REALWSN Overview Short TinyOS introduction TinyOS development so far –Tools –Problems.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Computer Science A 5: 17/2. JCreator IDE: Integrated Development Editor Features: Compile and run from editor Manage multiple files Can look up api documentation.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
PHY281Introduction to JavaSlide 1 Introduction to Java In this section we will learn how how to use Java and write our first Java Applet:  The Java Development.
Creating a Console Application with Visual Studio
Object Oriented Software Development 1. Introduction to C# and Visual Studio.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Programming 101 with Python: an open-source, cross-platform, and fun language By J. Burton Browning, Ed.D. Copyright © J. Burton Browning All rights reserved.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Gary MarsdenSlide 1University of Cape Town Designing usable programming languages.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
A First Program Using C#
JCE A Java-based Commissioning Environment tool Hiroyuki Sako, JAEA Hiroshi Ikeda, Visible Information Center Inc. SAD Workshop.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
Zubanov Alexei, 2006 Aug 07 – Sep 28 QtROOT package extension with Coin3D lib.
Gary Blatt GB Consulting Specializing in.Net training and development (972)
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
The NetBeans IDE CSIS 3701: Advanced Object Oriented Programming.
Computing IV Visual C Introduction with OpenCV Example Xinwen Fu.
MiniOS7 Studio Introduction And
Building.NET GUIs for Haskell applications Beatriz Alarcón Jiménez
Chapter 1: A First Program Using C#. Programming Computer program – A set of instructions that tells a computer what to do – Also called software Software.
POSTSHARP TECHNOLOGIES Better software through simpler code.
Lecture Set 2 Part B – Configuring Visual Studio; Configuration Options and The Help System (scan quickly for future reference)
Lecture Set 1 Part C: Understanding Visual Studio and.NET – Applications, Solutions, Projects (no longer used – embedded in Lecture Set 2A)
Integrated Development Environment (IDE)
Converting SIR 3.2 Databases to SIR2002 A Practical Guide to Coming of Age in SIR Land © Tom Shriver, DataVisor 2002.
1 3. Computing System Fundamentals 3.1 Language Translators.
Netbeans Intro & Who's used Netbeans And then un-installed it?
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California Developing.NET Applications.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files.
Being Lazy Is An Art Form Visual Studio Plug-ins with DXCore Zi Makki –
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
Editing & Compiling: UNIX vs. IDE and an Intro to Architecture.
V. Serbo, SLAC ACAT03, 1-5 December 2003 Interactive GUI for Geant4 by Victor Serbo, SLAC.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
15/06/2006 The Future of Visual DCT EPICS Collaboration 2006 Argonne National Laboratory
1 COMS 261 Computer Science I Title: C++ Fundamentals Date: September 05, 2005 Lecture Number: 4.
1 Programming Environment and Tools VS.Net 2012 First project MSDN Library.
1 Debugging and Syntax Errors in C++. 2 Debugging – a process of finding and fixing bugs (errors or mistakes) in a computer program.
CPSC 533 Project Status Reid Holmes Andrew Chan March 17, 2003.
CPS120: Introduction to Computer Science Compiling a C++ Program From The Command Line.
Department of Electronic & Electrical Engineering Introduction to C - The Development cycle. Why C? The development cycle. Using Visual Studio ? A simple.
Lecture Set 2 Part A: Creating an Application with Visual Studio – Solutions, Projects, Files 8/10/ :35 PM.
Computer Science Reaching Wider Summer School 2012.
Win32 Programming Lesson 19: Introduction to DLLs.
JAS and JACO – Status Report Atlas Graphics Group August 2000 Tony Johnson.
Haskell Basics CSCE 314 Spring CSCE 314 – Programming Studio Using GHC and GHCi Log in to unix.cse.tamu.edu (or some other server) From a shell.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Top 5 IDE that Simplifies PHP Development Biztech IT Consultancy Pvt. Ltd. | |
What's New in Visual Studio 2010 Debugging Brian Peek Senior Consultant, ASPSOFT, Inc. Microsoft MVP - C#
Joe Hummel, the compiler is at your service Chicago Coder Conference, June 2016.
Java IDE Dwight Deugo Nesa Matic
Why Learn Android? Largest installation base of any operating system Over 20,000 Android devices exist Businesses will likely move more to device-based.
Types for Programs and Proofs
Module 1: Getting Started
VISUAL BASIC.
Lesson Objectives Aims Key Words
Running & Testing :: IDEs
Plug-In Architecture Pattern
Object Oriented Design
Presentation transcript:

Visual Studio / Haskell Simon Marlow Krasimir Angelov + others

Background We all use a development environment of one kind or another… Emacs Vi Notepad WinHugs …

Existing Haskell IDEs Some of these have some Haskell support: syntax colouring indentation (hard in Haskell!) jump to errors menu of top-level declarations jump to definition interactive compilation/evaluation display type of an identifier

Problems Language support tends to be unreliable, because these environments are not using a real Haskell front-end. eg. Colouring support in Emacs is really bad. Different language flavours: Haskell98+FFI, hierarchical modules, CPP, literate. Jumping to an error often misses (compilers don’t have good source loc info). No real compile support Many, many, many more things an IDE can do…

What we’re doing Integrating GHC with Visual Studio to make a decent Haskell IDE Specifying a programatic interface to GHC so that it can be re-used in other IDE-like contexts.

Background: Visual Studio Development shell, with several language plugins: VC++, VC#, VJ#, VB. Very rich feature set Lots of support for language integration Projects: multi-file applications/libraries Solutions: multiple projects Debugging Integrated documentation, context-sensitive help etc. Lots of support for automation/extension/customisation. “free” access to the integration APIs Windows only

Status of Haskell Plugin We have: Syntax colouring Parsing/renaming/type-checking as you type (in a separate thread) accurate indication of erroneous subexpressions beginnings of project support

Demo

Features we want (in rough order of increasing difficulty…): Bracket matching (inc. let/in) Drop-down menu of top-level decls Outlining Jump to definition (or docs for library fns) Easy access to documentation Code model (programatic access to the source code from a macro) Type tooltips Type of subexpression

More features we want Integrate with HaRe Project support: Multi-module support (automatically discover dependencies, build support etc.) Library-infrastructure support (import/export library infrastructure metadata gives a nice way to package & ship a project) Auto-Haddocking for a project Integrated FFI tools??.NET integration?? Debugging?? GUI Builder??

Implementation Visual Studio Integration Program set of COM APIs for integrating new functionality into VS: Language support in the editor Project Tools “freely available” SDK APIs are highly detailed, flexible & HUGE Babel (Daan Leijen) provides a simpler abstraction layer for integrating simple language support

The obligatory block diagram Visual Studio Babel VSIP COM interfaces Haskell Service C/C++Haskell Babel COM interfaces GHC Direct to VSIP for project support

What we’ve done so far Infrastructure: Use H/Direct for accessing COM APIs (about 15 bugs in H/Direct found so far!) Multi-threading support in GHC’s RTS (parsing & colouring run in separate OS threads) Accurate source location info in GHC’s internal abstract syntax (phew) Support in GHC to build GHC as a package Krasimir: basic project support, more to come

GHC as a library What interface should GHC export? Needs to support these front-ends: GHCi --make -e Visual Studio others… Tell me what you need…

Conclusion What features would you like to see in an IDE? What would make it compelling enough for you to use? We’ll ship GHC as a “package” soon. VS plugin will be available at some point (help needed!)

GHC’s API data ModuleGraph = [ModSummary] data ModSummary –- contains module name, location, imports data CmState cmInit :: GhcMode -> DynFlags -> IO CmState -- Stuff for –-make, basic GHCi operation: cmDepAnal :: CmState -> [FilePath] -> IO ModuleGraph cmLoad :: CmState -> ModuleGraph -> IO (CmState, Bool, [String]) cmUnload :: CmState -> IO CmState -- Visual Studio: -- - Project knows the ModuleGraph -- - Don’t need to fully compile modules data ErrMsg cmAnalyse :: CmState -> ModuleGraph -> Module -> IO (CmState, Either [ErrMsg] ModuleInfo) cmModuleChanged :: CmState –> Module -> IO CmState

-- Should we provide access to the complete abstract syntax -- (perhaps in a simplified form? THSyntax? IfaceSyn?) or just -- accessors? data SrcLoc data SrcSpan typeOfId :: SrcLoc -> ModuleInfo -> Maybe Type defnOfId :: SrcLoc -> ModuleInfo -> Maybe SrcLoc topDecls :: ModuleInfo -> [(SrcSpan, String)]