Professional software engineers often write code using Integrated Development Environments (IDEs). IDEs support all development-related work within the same tool.
An IDE generally consists of:
- A source code editor that includes features such as syntax coloring, auto-completion, easy code navigation, error highlighting, and code-snippet generation.
- A compiler and/or an interpreter (together with other build automation support) that facilitates the compilation/linking/running/deployment of a program.
- A debugger that allows the developer to execute the program one step at a time to observe the run-time behavior in order to locate bugs.
- Other tools that aid various aspects of coding e.g. support for automated testing, drag-and-drop construction of UI components, version management support, simulation of the target runtime platform, and modeling support.
Examples of popular IDEs:
- Java: Eclipse, Intellij IDEA, NetBeans
- C#, C++: Visual Studio
- Swift: XCode
- Python: PyCharm
Some Web-based IDEs have appeared in recent times too e.g., Amazon's Cloud9 IDE.
Some experienced developers, in particular those with a UNIX background, prefer lightweight yet powerful text editors with scripting capabilities (e.g. Emacs) over heavier IDEs.
- a. Compiling.
- b. Syntax error highlighting.
- c. Debugging.
- d. Code navigation e.g., to navigate from a method call to the method implementation.
- e. Simulation e.g., run a mobile app in a simulator.
- f. Code analysis e.g. to find unreachable code.
- g. Reverse engineering design/documentation e.g. generate diagrams from code
- h. Visual programming e.g. Write programs using ‘drag and drop’ actions instead of typing code.
- i. Syntax assistance e.g., show hints as you type.
- j. Code generation e.g., to generate the code required by simply specifying which component/structure you want to implement.
- k. Extension. i.e. ability add more functionality to the IDE using plugins.
All.
Explanation: While all of these features may not be present in some IDEs, most do have these features in some form or other.