Programming tool
Encyclopedia
A programming tool or software development tool is a program
Computer program
A computer program is a sequence of instructions written to perform a specified task with a computer. A computer requires programs to function, typically executing the program's instructions in a central processor. The program has an executable form that the computer can use directly to execute...

 or application
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

 that software developer
Software developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...

s use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs that can be combined together to accomplish a task, much as one might use multiple hand tool
Tool
A tool is a device that can be used to produce an item or achieve a task, but that is not consumed in the process. Informally the word is also used to describe a procedure or process with a specific purpose. Tools that are used in particular fields or activities may have different designations such...

s to fix a physical object.

History

The history of soft DEVELOPMENT tools began with the first computers in the early 1950's that used linkers, loaders
Loader (computing)
In computing, a loader is the part of an operating system that is responsible for loading programs. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution...

, and control programs. Tools became famous with Unix in the early 1970s with tools like grep
Grep
grep is a command-line text-search utility originally written for Unix. The name comes from the ed command g/re/p...

, awk and make that were meant to be combined flexibly with pipes. The term "software tools" came from the book of the same name by Brian Kernighan
Brian Kernighan
Brian Wilson Kernighan is a Canadian computer scientist who worked at Bell Labs alongside Unix creators Ken Thompson and Dennis Ritchie and contributed to the development of Unix. He is also coauthor of the AWK and AMPL programming languages. The 'K' of K&R C and the 'K' in AWK both stand for...

 and P. J. Plauger
P. J. Plauger
P. J. Plauger is an author and entrepreneur.He has written and co-written articles and books about programming style, software tools, and the C programming language....

.

Tools were originally simple and light weight. As some tools have been maintained, they have been integrated into more powerful integrated development environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

s (IDEs). These environments consolidate functionality into one place, sometimes increasing simplicity and productivity, other times sacrificing flexibility and extensibility. The workflow of IDEs is routinely contrasted with alternative approaches, such as the use of Unix shell
Unix shell
A Unix shell is a command-line interpreter or shell that provides a traditional user interface for the Unix operating system and for Unix-like systems...

 tools with text editors like Vim
Vim (text editor)
Vim is a text editor written by Bram Moolenaar and first released publicly in 1991. Based on the vi editor common to Unix-like systems, Vim is designed for use both from a command line interface and as a standalone application in a graphical user interface...

 and Emacs
Emacs
Emacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...

.

The distinction between tools and applications is murky. For example, developers use simple databases (such as a file containing a list of important values
Flat file database
A flat file database describes any of various means to encode a database model as a single file .- Overview :...

) all the time as tools. However a full-blown database is usually thought of as an application in its own right.

For many years, computer-assisted software engineering
Computer-aided software engineering
Computer-aided software engineering is the scientific application of a set of tools and methods to a software system which is meant to result in high-quality, defect-free, and maintainable software products...

 (CASE) tools were sought after. Successful tools have proven elusive. In one sense, CASE tools emphasized design and architecture support, such as for UML. But the most successful of these tools are IDEs.

The ability to use a variety of tools productively is one hallmark of a skilled software engineer
Software engineer
A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...

.

List of tools

Software tools come in many forms:
  • Binary compatibility analysis: icheck, ABI Compliance Checker
    ABI Compliance Checker
    ABI Compliance Checker is a tool for checking binary-level backward compatibility of shared libraries written in C and C++ programming languages....

  • Bug Databases: Comparison of issue tracking systems
    Comparison of issue tracking systems
    This article is a comparison of issue tracking systems which are notable, including bug tracking systems, help desk and service desk issue tracking systems, and asset management systems...

     - Including bug tracking systems
  • Build Tools: Build automation
    Build Automation
    Build automation is the act of scripting or automating a wide variety of tasks that software developers do in their day-to-day activities including things like:* compiling computer source code into binary code* packaging binary code* running tests...

    , List of build automation software
  • Code coverage
    Code coverage
    Code coverage is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing....

    : Code coverage#Software code coverage tools. Software Diagnostics
  • Code Sharing Sites: Freshmeat
    Freshmeat
    Freecode, formerly Freshmeat, is a website owned by Geeknet that allows computer users to keep track of the latest software releases and updates as well as write/read reviews and articles, send or receive comments to or from the author, and many other features...

    , Krugle
    Krugle
    Krugle is a search engine that allows computer programmers and other developers to search Open Source repositories in order to locate open source code, and quickly share the code with other programmers on the internet. It finished its beta phase and went live on June 14th, 2006.The engine...

    , Sourceforge
    SourceForge
    SourceForge Enterprise Edition is a collaborative revision control and software development management system. It provides a front-end to a range of software development lifecycle services and integrates with a number of free software / open source software applications .While originally itself...

    , GitHub
    Github
    GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both commercial plans and free accounts for open source projects...

    . See also Code search engines.
  • Compilation
    Compiler
    A compiler is a computer program that transforms source code written in a programming language into another computer language...

     and linking tools: GNU toolchain
    GNU toolchain
    The GNU toolchain is a blanket term for a collection of programming tools produced by the GNU Project. These tools form a toolchain used for developing applications and operating systems....

    , gcc
    GNU Compiler Collection
    The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...

    , Microsoft Visual Studio
    Microsoft Visual Studio
    Microsoft Visual Studio is an integrated development environment from Microsoft. It is used to develop console and graphical user interface applications along with Windows Forms applications, web sites, web applications, and web services in both native code together with managed code for all...

    , CodeWarrior
    CodeWarrior
    CodeWarrior is an integrated development environment for the creation of software that runs on a number of embedded systems. Prior to the acquisition of the product by Freescale Semiconductor, versions existed for Macintosh, Microsoft Windows, Linux, Solaris, PlayStation 2, Nintendo GameCube,...

    , Xcode
    Xcode
    Xcode is a suite of tools, developed by Apple, for developing software for Mac OS X and iOS. Xcode 4.2, the latest major version, is available on the Mac App Store for free for Mac OS X 10.7 , and on the Apple Developer Connection website for free to registered developers Xcode is a suite of tools,...

    , ICC
  • Debugger
    Debugger
    A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...

    s: Debugger#List of debuggers. See also Debugging
    Debugging
    Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge...

    .
  • Development Productivity Tools: JRebel eliminates the build and redeploy phases of Java EE Development by mapping the project workspace directly to any type application server in real-time
  • Disassembler
    Disassembler
    A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. A disassembler differs from a decompiler, which targets a high-level language rather than an assembly language...

    s: Generally reverse-engineering tools.
  • Documentation generator
    Documentation generator
    A documentation generator is a programming tool that generates documentation intended for programmers or end users , or both, from a set of specially commented source code files, and in some cases, binary files....

    s: []], help2man, Plain Old Documentation
    Plain Old Documentation
    Plain Old Documentation, abbreviated pod, is a lightweight markup language used to document the Perl programming language.-Design:pod is designed to be a simple, clean language with just enough syntax to be useful. It purposefully does not include mechanisms for fonts, images, colors or tables...

    , asciidoc
    AsciiDoc
    AsciiDoc is a lightweight markup language. It requires the installation of a special AsciiDoc "converter program" that can convert AsciiDoc documents to XHTML, DocBook or HTML. DocBook in turn can be converted to other formats such as PDF, TeX, Unix manpages and many more using the tool A2X which...

  • Formal methods
    Formal methods
    In computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...

    : Mathematically-based techniques for specification, development and verification
  • GUI interface generators
  • Library interface generators: SWIG
    SWIG
    SWIG is an open source software tool used to connect computer programs or libraries written in C or C++ with scripting languages such as Lua, Perl, PHP, Python, R, Ruby, Tcl, and other languages like C#, Java, Modula-3, Objective Caml, Octave, and Scheme...

  • Integration Tools
  • Memory Use/Leaks/Corruptions Detection
    Memory leak
    A memory leak, in computer science , occurs when a computer program consumes memory but is unable to release it back to the operating system. In object-oriented programming, a memory leak happens when an object is stored in memory but cannot be accessed by the running code...

    : dmalloc
    Dmalloc
    Dmalloc is a memory debugger C library, written by Gray Watson, that helps programmers to find a variety of memory allocation programming errors for dynamic memory...

    , Electric Fence
    Electric Fence
    Electric Fence is a memory debugger written by Bruce Perens. It consists of a library which programmers can link into their code to override the C standard library memory management functions...

    , duma, Insure++
    Insure++
    Insure++ is a memory debugger computer program, used by software developers to detect various errors in programs written in C and C++. It is made by Parasoft, and is functionally similar to other memory debuggers, such as Purify and Valgrind.-Overview:...

    , Developer Edition. Memory leak
    Memory leak
    A memory leak, in computer science , occurs when a computer program consumes memory but is unable to release it back to the operating system. In object-oriented programming, a memory leak happens when an object is stored in memory but cannot be accessed by the running code...

     detection: In the C programming language
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

     for instance, memory leak
    Memory leak
    A memory leak, in computer science , occurs when a computer program consumes memory but is unable to release it back to the operating system. In object-oriented programming, a memory leak happens when an object is stored in memory but cannot be accessed by the running code...

    s are not as easily detected - software tools called memory debugger
    Memory debugger
    A memory debugger is a programming tool for finding memory leaks and buffer overflows. These are due to bugs related to the allocation and deallocation of dynamic memory. Programs written in languages that have garbage collection, such as managed code, might also need memory debuggers, e.g...

    s are often used to find memory leaks enabling the programmer to find these problems much more efficiently than inspection alone.
  • Parser generators
    Parsing
    In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...

    : Parsing#Parser development software
  • Performance analysis
    Performance analysis
    In software engineering, profiling is a form of dynamic program analysis that measures, for example, the usage of memory, the usage of particular instructions, or frequency and duration of function calls...

     or profiling: List of performance analysis tool
  • Refactoring Browser
  • Revision control
    Revision control
    Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...

    : List of revision control software, Comparison of revision control software
    Comparison of revision control software
    The following is a comparison of revision control software. The following tables includes general and technical information for notable revision control and software configuration management software.- General information :Table Explanation...

  • Scripting language
    Scripting language
    A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...

    s: PHP
    PHP
    PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

    , Awk
    AWK (programming language)
    The AWK utility is a data extraction and reporting tool that uses a data-driven scripting language consisting of a set of actions to be taken against textual data for the purpose of producing formatted reports...

    , Perl
    Perl
    Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

    , Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

    , REXX
    REXX
    REXX is an interpreted programming language that was developed at IBM. It is a structured high-level programming language that was designed to be both easy to learn and easy to read...

    , Ruby
    Ruby (programming language)
    Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...

    , Shell, Tcl
    Tcl
    Tcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own...

  • Search: grep
    Grep
    grep is a command-line text-search utility originally written for Unix. The name comes from the ed command g/re/p...

    , find
    Find
    In Unix-like and some other operating systems, find is a command-line utility that searches through one or more directory trees of a file system, locates files based on some user-specified criteria and applies a user-specified action on each matched file...

  • Source code Clones/Duplications Finding: Duplicate code#Tools
  • Source code formatting: indent
    Indent (Unix)
    indent is a Unix utility that reformats C and C++ code in a user-defined indent style and coding style. Support for C++ code is considered experimental.-Examples of usage:The command line...

  • Source code generation tools: Automatic programming#Implementations
  • Static code analysis
    Static code analysis
    Static program analysis is the analysis of computer software that is performed without actually executing programs built from that software In most cases the analysis is performed on some version of the source code and in the other cases some form of the object code...

    : List of tools for static code analysis
  • Text editor
    Text editor
    A text editor is a type of program used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....

    s: List of text editors, Comparison of text editors
    Comparison of text editors
    This article provides basic comparisons for common text editors. More feature details for text editors are available from the Category of text editor features and from the individual products' articles...

  • Unit testing: List of unit testing frameworks

IDEs

Integrated Development Environment
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

s combine the features of many tools into one package. They for example make it easier to do specific tasks, such as searching for content only in files in a particular project. IDEs may for example be used for development of enterprise-level applications.

Different aspects of IDEs for specific programming languages can be found in this comparison of integrated development environments
Comparison of integrated development environments
The following tables list notable software packages that are nominal IDEs; standalone tools such as source code editors and GUI builders are not included.- ActionScript :- Ada :- Basic :- C/C++ :...

.

See also

  • Computer-aided software engineering
    Computer-aided software engineering
    Computer-aided software engineering is the scientific application of a set of tools and methods to a software system which is meant to result in high-quality, defect-free, and maintainable software products...

     tools
  • Software development kit
    Software development kit
    A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.It may be something as simple...

  • Configuration System
  • Toolkits for User Innovation
    Toolkits for User Innovation
    Toolkits for user innovation allow manufacturers to " abandon their attempts to understand user needs in detail in favor of transferring need-related aspects of product and service development to users along with an appropriate toolkit"...

  • Software engineering
    Software engineering
    Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

     and list of software engineering topics
  • Software systems
  • Computer science
    Computer science
    Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

  • Scripting language
    Scripting language
    A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK