Integrated Development Environments
Steven J Zeil
Last modified: Dec 21, 2019
IDEs
Integrated Develop Environments (IDEs) are software packages that attempt to provide comprehensive support for coding, testing, and debugging
- and possible other software construction activities
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
-
editor
-
build support
- maybe no more than compiler & linkerinvocation
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
-
editor
-
build support
- maybe no more than compiler & linkerinvocation
- with error messages captured/interpreted/walked by editor
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
-
editor
-
build support
- maybe no more than compiler & linkerinvocation
- with error messages captured/interpreted/walked by editor
- run/execute programs
1 The Components of an IDE
What’s the minimum that we expect in an IDE?
-
editor
-
build support
- maybe no more than compiler & linkerinvocation
- with error messages captured/interpreted/walked by editor
- run/execute programs
- debugger
The Components of an IDE (optional)
What would we like to see in an IDE?
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
- documentation (API) look-up
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
- documentation (API) look-up
- e.g., I know this variable
m
is a pointer to a std::map<int,string>
, so what can I write after “m->”?
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
- documentation (API) look-up
- e.g., I know this variable
m
is a pointer to a std::map<int,string>
, so what can I write after “m->”?
- flexible/configurable build support
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
- documentation (API) look-up
- e.g., I know this variable
m
is a pointer to a std::map<int,string>
, so what can I write after “m->”?
- flexible/configurable build support
- What if our project uses multiple programming languages?
The Components of an IDE (optional)
What would we like to see in an IDE?
- syntax highlighting & aid in editor
- documentation (API) look-up
- e.g., I know this variable
m
is a pointer to a std::map<int,string>
, so what can I write after “m->”?
- flexible/configurable build support
- What if our project uses multiple programming languages?
- What if we have a program that generates part of the source code and so needs to be run before we start compiling?
The Components of an IDE (optional)
What would we like to see in an IDE?
The Components of an IDE (optional)
What would we like to see in an IDE?
The Components of an IDE (optional)
What would we like to see in an IDE?
The Components of an IDE (optional)
What would we like to see in an IDE?
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
- coding aids in editor
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
- coding aids in editor
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
- coding aids in editor
- templates
- common refactoring (transformations)
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
- coding aids in editor
- templates
- common refactoring (transformations)
- documentation generation
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
- coding aids in editor
- templates
- common refactoring (transformations)
- documentation generation
- test integration
The Components of an IDE (deluxe)
What makes us positively giddy when we see it in an IDE?
- smart feedback in the editor
- learns API of code we wrote
- e.g., I know this variable
p
is a pointer to a MyOwnADT
, so what can I write after “p->”?
- suggestions
- coding aids in editor
- templates
- common refactoring (transformations)
- documentation generation
- test integration
- integration with version control
2 IDE Examples
2.1 emacs
The *nix swiss army knife of editors, emacs has long functioned as a basic IDE:
- syntax-highlighting editor
- build support (invokes *nix make)
- parses error messages from compilers & other tools
- debugger interface
- works directly with many version control systems
2.1.1 emacs Strengths and Weaknesses
- highly portable
- supports virtually any language you would have a compiler for
- even in windowed mode, leans toward keyboard rather than mouse
- (Not sure if that’s a pro or a con – personally I hate having to lift my hand from the keyboard to reach for my mouse every few seconds. YMMV.)
- outdated interface
-
high learning curve
2.2 Microsoft Visual
Visual Studio
- syntax-highlighting editor
- background compilation provides quick feedback on simple errors
- built-in build manager
- debugger interface
- some designer tools (e.g., design classes in UML)
2.2.1 Visual Strengths and Weaknesses
- wide variety of languages (but Microsoft processors)
- single-OS
- closely integrated with Microsoft compilers
- modern, mouse-oriented interface
2.3 NetBeans
Free IDE originally distributed by Sun as “the” development platform for Java.
- Still largely Java centric, though some support for other languages
- particularly web-related languages like Javascript, CSS, XSL
- Portable (written in Java)
- Tends to track the trends and hot topics in the Java world promptly
- editor, build manager, debugger
- moderately extensible
2.4 Single-Language IDEs
The open source community has produced numerous single-language IDEs.
Many are focused on educational use.
Examples:
- C++
- Bloodshed Dev-C++, Code::Blocks
- Java
- BlueJ, Dr. Java, jGrasp
3 Eclipse
Probably the hottest IDE in the open source world:
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
- background compilation for quick detection of language errors
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
- background compilation for quick detection of language errors
- integrated *unit testing support
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
- background compilation for quick detection of language errors
- integrated *unit testing support
- solid debugger, intuitive handling of threads
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
- background compilation for quick detection of language errors
- integrated *unit testing support
- solid debugger, intuitive handling of threads
- some packaging & deployment support
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
- background compilation for quick detection of language errors
- integrated *unit testing support
- solid debugger, intuitive handling of threads
- some packaging & deployment support
- integrates with most version control systems
3 Eclipse
Probably the hottest IDE in the open source world:
- syntax-highlighting editor, multi-language support
- strong hinting based on both standard and user-written APIs, interface aid
- templates and refactoring
- build support
- easily configured or switched to other build tools
- background compilation for quick detection of language errors
- integrated *unit testing support
- solid debugger, intuitive handling of threads
- some packaging & deployment support
- integrates with most version control systems
- modular plug-in extensibility with a rich variety available
3.1 Availability
-
Eclipse is installed on both the CS Dept Windows PCs and Linux servers
- Includes basic packages for Java & C++ support
-
We will be working with much more advanced tools in this course.
- You will need to install your own plugins.
-
Every student will therefore need to prepare their own personal development environment with
This will be discussed in more detail in an upcoming assignment. .
© 2015-2020, Old Dominion Univ.