Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Integrated development environment
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Software engineering toolkit}} {{About|software development|the PC storage connector|Parallel ATA}} {{Use dmy dates|date=December 2020}} [[File:JGRASP+hello world.png|thumb|An integrated development environment running on a desktop operating system]] {{Software development process|Tools}} An '''integrated development environment''' ('''IDE''') is a [[Application software|software application]] that provides comprehensive facilities for [[software development]]. An IDE normally consists of at least a [[source-code editor]], [[build automation]] tools, and a [[debugger]]. Some IDEs, such as [[IntelliJ IDEA]], [[Eclipse (software)|Eclipse]] and [[Lazarus (software)|Lazarus]] contain the necessary [[compiler]], [[interpreter (computing)|interpreter]] or both; others, such as [[SharpDevelop]] and [[NetBeans]], do not. The boundary between an IDE and other parts of the broader software development environment is not well-defined; sometimes a [[version control system]] or various tools to simplify the construction of a [[graphical user interface]] (GUI) are integrated. Many modern IDEs also have a [[class browser]], an [[object browser]], and a [[class diagram|class hierarchy diagram]] for use in [[object-oriented programming|object-oriented software development]]. == Overview == [[File:Vim8-autocompletion-go-syntastic.png|thumb|Vim with integrated auto-completion and linting through an external plugin]] Integrated development environments are designed to maximize programmer productivity by providing tight-knit components with similar [[user interface]]s. IDEs present a single program in which all development is done. This program typically provides many features for authoring, modifying, compiling, deploying and debugging software. This contrasts with software development using unrelated tools, such as [[Vi (text editor)|vi]], [[GNU Debugger|GDB]], [[GNU Compiler Collection]], or [[make (software)|make]]. One aim of the IDE is to reduce the configuration necessary to piece together multiple development utilities. Instead, it provides the same set of capabilities as one cohesive unit. Reducing setup time can increase developer productivity, especially in cases where learning to use the IDE is faster than manually integrating and learning all of the individual tools. Tighter integration of all development tasks has the potential to improve overall productivity beyond just helping with setup tasks. For example, code can be continuously parsed while it is being edited, providing instant feedback when syntax errors are introduced, thus allowing developers to debug code much faster and more easily with an IDE. Some IDEs are dedicated to a specific [[programming language]], allowing a feature set that most closely matches the [[programming paradigm]]s of the language. However, there are many multiple-language IDEs. While most modern IDEs are graphical, text-based IDEs such as [[Turbo Pascal]] were in popular use before the availability of windowing systems like [[Microsoft Windows]] and the [[X Window System]] (X11). They commonly use function keys or [[keyboard shortcut|hotkeys]] to execute frequently used commands or macros. == History == [[File:Emacs-screenshot.png|thumb|[[GNU Emacs]], an extensible editor that is commonly used as an IDE on [[Unix-like]] systems]] IDEs initially became possible when developing via a [[System console|console]] or [[Computer terminal|terminal]]. Early systems could not support one, since programs were submitted to a [[compiler]] or [[Assembly language|assembler]] via [[punched card]]s, [[paper tape]], etc. [[Dartmouth BASIC]] was the first language to be created with an IDE (and was also the first to be designed for use while sitting in front of a console or terminal).{{Citation needed|date=April 2016}} Its IDE (part of the [[Dartmouth Time-Sharing System]]) was command-based, and therefore did not look much like the menu-driven, graphical IDEs popular after the advent of the [[graphical user interface]]. However it integrated editing, file management, compilation, debugging and execution in a manner consistent with a modern IDE. [[Maestro I]] is a product from Softlab Munich and was the world's first integrated development environment<ref>[https://www.computerwoche.de/a/interaktives-programmieren-als-systems-schlager,1205421 "Interaktives Programmieren als Systems-Schlager"] from ''Computerwoche'' ([[German language|German]])</ref> for software. [[Maestro I]] was installed for 22,000 programmers worldwide. Until 1989, 6,000 installations existed in the [[West Germany|Federal Republic of Germany]]. Maestro was arguably the world leader in this field during the 1970s and 1980s. Today one of the last Maestro I can be found in the Museum of Information Technology at Arlington in Texas. One of the first IDEs with a plug-in concept was [[Softbench]]. In 1995 ''Computerwoche'' commented that the use of an IDE was not well received by developers since it would fence in their creativity. {{As of|2023|08}}, the most commonly searched for IDEs on [[Google Search]] were [[Visual Studio]], [[Visual Studio Code]], and [[Eclipse (software)|Eclipse]].<ref>{{Cite web|url=https://pypl.github.io/IDE.html|title=TOP IDE Top Integrated Development Environment index|website=pypl.github.io|access-date=August 8, 2023}}</ref> == Topics == === Syntax highlighting === {{Main|Syntax highlighting}} The IDE editor usually provides [[syntax highlighting]], it can show both the structures, the language keywords and the syntax errors with visually distinct colors and font effects.<ref name="ide-common"/> === Code completion === Code completion is an important IDE feature, intended to speed up programming. Modern IDEs even have [[intelligent code completion]]. ====Intelligent code completion==== {{Excerpt|Intelligent code completion}} === Refactoring === Advanced IDEs provide support for [[Source-to-source compiler#Refactoring tools|automated refactoring]].<ref name="ide-common">{{cite web |title=Course CS350 Integrated Development Environments |url=https://www.cs.odu.edu/~zeil/cs350/f17/Public/IDEs/index.html |website=cs.odu.edu |publisher=Old Dominion University |access-date=10 October 2018}}</ref> === Version control === An IDE is expected to provide integrated [[version control]], in order to interact with source repositories.<ref name="ide-common"/> === Debugging === IDEs are also used for debugging, using an integrated [[debugger]], with support for setting breakpoints in the editor, visual rendering of steps, etc.<ref>{{cite web |title=Programming software and the IDE |url=https://www.bbc.com/bitesize/guides/zgmpr82/revision/1 |website=BBC Bitesize |access-date=10 October 2018 |archive-date=9 October 2018 |archive-url=https://web.archive.org/web/20181009173403/https://www.bbc.com/bitesize/guides/zgmpr82/revision/1 |url-status=dead }}</ref> === Code search === IDEs may provide support for code search. Code search has two different meanings. First, it means searching for class and function declarations, usages, variable and field read/write, etc. IDEs can use different kinds of user interface for code search, for example form-based widgets<ref>{{cite web |title=Eclipse Cookbook - Searching Code |url=https://www.oreilly.com/library/view/eclipse-cookbook/0596007108/ch04s05.html |website=O’Reilly |language=en}}</ref> and natural-language based interfaces. Second, it means searching for a concrete implementation of some specified functionality.<ref>{{Cite journal|last1 =Stolee|first1=Kathryn T.|last2=Elbaum|first2=Sebastian|last3=Dobos|first3=Daniel|date=2014|title=Solving the Search for Source Code|url=https://dl.acm.org/doi/10.1145/2581377|journal=ACM Transactions on Software Engineering and Methodology|language=en|volume=23|issue=3|pages=1–45|doi=10.1145/2581377|s2cid=8558710 |issn=1049-331X|url-access=subscription}}</ref> === Visual programming === [[Visual programming]] is a usage scenario in which an IDE is generally required. Visual Basic allows users to create new applications by moving programming, building blocks, or code nodes to create flowcharts or structure diagrams that are then compiled or interpreted. These flowcharts often are based on the [[Unified Modeling Language]]. This interface has been popularized with the [[Lego Mindstorms]] system and is being actively perused by a number of companies wishing to capitalize on the power of custom browsers like those found at [[Mozilla]]. [[KTechlab]] supports flowcode and is a popular open-source IDE and Simulator for developing software for microcontrollers. Visual programming is also responsible for the power of [[distributed programming]] (cf. [[LabVIEW]] and EICASLAB software). An early visual programming system, [[Max (software)|Max]], was modeled after an analog [[synthesizer]] design and has been used to develop real-time music performance software since the 1980s. Another early example was [[Prograph]], a [[dataflow programming|dataflow]]-based system originally developed for the [[Macintosh]]. The graphical programming environment "Grape" is used to program [[qfix robot kits]]. This approach is also used in specialist software such as Openlab, where the end-users want the flexibility of a full programming language, without the traditional learning curve associated with one. === Language support === Some IDEs support multiple languages, such as [[GNU Emacs]], [[IntelliJ IDEA]], [[Eclipse (software)|Eclipse]], [[MyEclipse]], [[NetBeans]], [[MonoDevelop]], JDoodle or PlayCode. Support for alternative languages is often provided by [[plug-in (computing)|plugins]], allowing them to be installed on the same IDE at the same time. For example, [[Flycheck]] is a modern on-the-fly syntax checking extension for [[GNU Emacs]] 24 with support for 39 languages.<ref>{{cite web |url=http://flycheck.readthedocs.org/en/latest/manual/introduction.html |title=Introduction - Flycheck 0.18-cvs | website = [[Read the Docs]] |access-date=2014-03-10 |url-status=dead |archive-url=https://web.archive.org/web/20140310225211/http://flycheck.readthedocs.org/en/latest/manual/introduction.html |archive-date=10 March 2014}}</ref> Another example is JDoodle, an online cloud-based IDE that supports 88 languages.[https://www.jdoodle.com/docs/jdoodle-apis/programming-languages-and-versions] [[Eclipse (software)|Eclipse]], and [[Netbeans]] have plugins for [[C (programming language)|C]]/[[C++]], [[Ada (programming language)|Ada]], [[GNAT]] (for example [[AdaGIDE]]), [[Perl]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], and [[PHP]], which are selected between automatically based on file extension, environment or project settings. === Implementation === IDEs can be implemented in various languages, for example: * [[GNU Emacs]] using [[Emacs Lisp]] and [[C (programming language)|C]]; * [[IntelliJ IDEA]], [[Eclipse (software)|Eclipse]] and [[NetBeans]], using [[Java (programming language)|Java]]; *[[MonoDevelop]] and [[JetBrains Rider|Rider]] using [[C Sharp (programming language)|C#]]. === Attitudes across different computing platforms === [[Unix]] programmers can combine [[command-line]] [[POSIX]] tools into a complete development environment, capable of developing large programs such as the [[Linux kernel]] and its environment.<ref> Rehman, Christopher Paul, Christopher R. Paul. "The Linux Development Platform: Configuring, Using and Maintaining a Complete Programming Environment". 2002. {{ISBN|0-13-009115-4}} </ref> In this sense, the entire Unix system functions as an IDE.<ref>{{cite web|url=http://c2.com/cgi/wiki?UnixIsAnIde|title=UnixIsAnIde}}</ref> The free software [[GNU toolchain]] (including [[GNU Compiler Collection]] (GCC), [[GNU Debugger]] (GDB), and [[GNU make]]) is available on many platforms, including Windows.<ref>{{Cite web|url=https://www.gnu.org/software/emacs/windows/Developing-with-Emacs.html|archiveurl=https://web.archive.org/web/20130704094014/http://www.gnu.org/software/emacs/windows/Developing-with-Emacs.html|url-status=dead|title="Use Emacs with Microsoft Visual C++ ... use Emacs as an IDE"|archivedate=4 July 2013}}</ref> The pervasive Unix philosophy of "everything is a text stream" enables developers who favor [[command-line]] oriented tools to use editors with support for many of the standard Unix and GNU build tools, building an IDE with programs like [[Emacs]]<ref>{{Cite web|url=https://www.linuxjournal.com/article/5765|title=Emacs: the Free Software IDE | Linux Journal|website=www.linuxjournal.com}}</ref><ref>{{Cite web|url=http://cl-cookbook.sourceforge.net/emacs-ide.html|title=The Common Lisp Cookbook - Using Emacs as a Lisp IDE|website=cl-cookbook.sourceforge.net}}</ref><ref>{{Cite web|url=http://obsidianrook.com/perlnow/emacs_as_perl_ide.html|title=Emacs as a Perl IDE|website=obsidianrook.com|access-date=11 May 2011|archive-date=21 May 2016|archive-url=https://web.archive.org/web/20160521010534/http://obsidianrook.com/perlnow/emacs_as_perl_ide.html|url-status=dead}}</ref> or [[Vim (text editor)|Vim]]. [[Data Display Debugger]] is intended to be an advanced graphical front-end for many text-based [[debugger]] standard tools. Some programmers prefer managing [[makefile]]s and their derivatives to the similar code building tools included in a full IDE. For example, most contributors to the [[PostgreSQL]] database use [[makefile|make]] and [[GNU Debugger|GDB]] directly to develop new features.<ref>{{Cite web|url=http://wiki.postgresql.org/wiki/Developer_FAQ#What_development_environment_is_required_to_develop_code.3F|title=Developer FAQ - PostgreSQL wiki|website=wiki.postgresql.org}}</ref> Even when building PostgreSQL for [[Microsoft Windows]] using [[Visual C++]], [[Perl]] scripts are used as a replacement for [[makefile|make]] rather than relying on any IDE features.<ref>{{Cite web|url=https://www.postgresql.org/docs/devel/install-windows.html|title=Chapter 18. Installation from Source Code on Windows|date=29 September 2021|website=PostgreSQL Documentation}}</ref> Some Linux IDEs such as [[Geany]] attempt to provide a graphical front end to traditional build operations. On the various [[Microsoft Windows]] platforms, command-line tools for development are seldom used. Accordingly, there are many commercial and non-commercial products. However, each has a different design commonly creating incompatibilities. Most major compiler vendors for Windows still provide free copies of their command-line tools, including [[Microsoft]] ([[Visual C++]], [[Platform SDK]], [[.NET Framework]] SDK, [[nmake]] utility). IDEs have always been popular on the Apple Macintosh's [[classic Mac OS]] and [[macOS]], dating back to [[Macintosh Programmer's Workshop]], [[Turbo Pascal]], THINK Pascal and [[THINK C]] environments of the mid-1980s. Currently macOS programmers can choose between native IDEs like [[Xcode]] and open-source tools such as [[Eclipse (software)|Eclipse]] and [[Netbeans]]. [[ActiveState Komodo]] is a proprietary multilanguage IDE supported on macOS. == Online == {{main|Online integrated development environment}} An [[online integrated development environment]], also known as a web IDE or cloud IDE, is a [[Web browser|browser]] based IDE that allows for software development or web development.<ref>{{cite web |title=Web-based vs. desktop-based Tools – EclipseSource |url=http://eclipsesource.com/blogs/2018/06/19/web-based-vs-desktop-based-tools/ |website=eclipsesource.com|date=19 June 2018 }}</ref> An online IDE can be accessed from a web browser, allowing for a portable work environment. An online IDE does not usually contain all of the same features as a traditional or desktop IDE although all of the basic IDE features, such as syntax highlighting, are typically present. A Mobile-Based Integrated Development Environment (IDE) is a software application that provides a comprehensive suite of tools for software development on mobile platforms. Unlike traditional desktop IDEs, mobile-based IDEs are designed to run on smartphones and tablets, allowing developers to write, debug, and deploy code directly from their mobile devices. == See also == {{Commons category|Integrated development environments}} {{Portal|Computer programming}} {{columns-list|colwidth=30em| * [[Comparison of integrated development environments]] * [[Collaborative development environment]] (CDE) * [[Computer-aided software engineering]] (CASE) * [[Game integrated development environment]] * [[Software engine]] * {{section link|Multiple document interface|IDE-style interface}} (MDI) * [[Rapid application development]] (RAD) * [[Read–eval–print loop|Read–Eval–Print Loop]] (REPL) * [[Notebook interface]] * [[Code analysis]] tools * [[Source-to-source compiler#Refactoring tools|Source code refactoring tools]] * Software building tools (the [[compiler]], [[linker (computing)|linker]], etc., and the [[build automation]] tool used to control them) * [[Version control]], also called source repository (configuration management) * [[Language Server Protocol]] * [[Structured Programming Facility]] * [[Transportable Applications Environment]] }} == References == {{reflist}} {{Integrated development environments}} {{Computer science}} {{DEFAULTSORT:Integrated development environment}} [[Category:Integrated development environments|*]] [[Category:Software engineering]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:As of
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Columns-list
(
edit
)
Template:Commons category
(
edit
)
Template:Computer science
(
edit
)
Template:Excerpt
(
edit
)
Template:ISBN
(
edit
)
Template:Integrated development environments
(
edit
)
Template:Main
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Software development process
(
edit
)
Template:Use dmy dates
(
edit
)