Computer programming - eMyTextBooks

Search:  

Free online books - just read it!

See live article   •   Computer programming
 

Computer programming

Table of contents


The scope

Computer programming is the craft of writing useful, maintainable, and extensible instructions which can be interpreted by a computing system to perform a meaningful task. Programming a computer can be performed in one of numerous languages, ranging from a higher-level language to writing directly in low-level machine code (that is, code that more directly controls the specifics of the computer's hardware).

Computer programming is one part of a much larger discipline known as software engineering. The Software Engineering Body of Knowledge (SWEBOK (http://www.swebok.org/)) divides software engineering into 10 knowledge areas:

  1. Software requirements
  2. Software design
  3. Software construction
  4. Software testing
  5. Software maintenance
  6. Software configuration management
  7. Software engineering management
  8. Software engineering process
  9. Software engineering tools and methods
  10. Software quality

The subject of this book is software construction, that is, programming.

Programming Concepts

Key concepts

All programming languages share general concepts since they are all roughly designed to manipulate the same device. This is why the following articles are available for various programming languages. The text is often the same and just the examples are done using the indicated programming language.

Available articles for "Key concepts in programming"
Wikicode Ada C C++ Python VB Classic
Statements yes yes yes yes yes
Control Statements yes no no yes yes
Variables yes yes no yes yes
Types yes yes yes yes yes
Mathematical calculations yes no no yes yes
Procedures and Functions yes no no yes yes
Function overloading yes N/A no N/A N/A
Structure and Style yes no no no yes
String manipulation yes yes no yes yes
Input and output yes no no N/A no
Memory management yes yes no no N/A
Error handling yes no no yes yes
Object Oriented Programming yes N/A no no no
Generic programming yes N/A no no N/A
Concurrent programming yes N/A no N/A no
Packages and Modules yes N/A no yes no
Libraries yes no no no no
Combining Languages yes no no no no
yes 
Yes, article available.
no 
No, article not available. If you know the language and subject please provide one.
N/A 
Not applicable. Programming language does not provide or need support for this concept.

If you want to add articles for another language then feel free to do so. Please keep the languages sorted alphabetically. But do not add another language without providing at least one article.

For a list including various computer languages arranged together by syntax terms and patterns, see "Lists of computer syntax patterns" on Wikipedia.

Data Structures

Algorithms

Advanced Data Structures and Algorithms

Paradigms

Programming Systems

Programming Languages

Many people think they must choose a specific programming language in order to become a programmer, believing that they can only do that language. They ask themselves, "should I be a C programmer or a Java programmer?" That's completely the wrong question. The right question is "How can I become a good programmer?" The question about the programming language is actually largely irrelevant; the reason for this is quite simple: each and every programming language is based on the same fundamental concepts. Once one understands these fundamental building blocks of programming, learning a new programming language requires no more than a few hours.

The following languages have a significant large WikiBook tutorial and you can learn them right here. To help you along we also provide a short intro on what a particular language can teach you.

There are many more languages available; see programming languages bookshelf and Category:Programming.

Ada - (Jul 27, 2005) - (Book of the Month September 2005) 
Ada is a very well structured language with a Pascal like syntax which makes Ada a good teaching language. Learning Ada will teach you the following Paradigms: Structured, Imperative, Procedural, Object oriented, Concurrent, System and Embedded programming - the Wikibook for Ada is the only Wikibook which has an entry for all Key concepts. Apart from academic use (http://www.adacore.com/academic_overview.php), Ada is professionally used (http://www.adacore.com/aa_lookwho.php) in Air Traffic Control, Aviation (Commercial and Defense), Rail Transportation Communications (Satellites and Receivers) and Swiss banks - most of which are constantly on the lookout for good Ada programmers.
C (unknown) 
C is a system programming language and has a fairly simple syntax and a small set of keywords. Using it effectively, however, usually requires a good knowledge of extensive libraries and of the techniques used to overcome some of the shortcomings of the language. It is also one of the most used languages. C is pretty much as low-level a programming language as you can get before assembly language, and therefore executes very fast. C was originally designed to write operating systems with - specifically, it was designed to implement UNIX. It compiles to very small executables and it is used extensively in embedded systems with limited memory. Learning C will teach you Structured, Imperative and Procedural programming. C is the basis for, or has greatly influenced many modern programming languages such as Java, C#, PHP, and Python.
C++ (unknown) 
C++ is an object-oriented language, designed to be the successor to C. Difficult to learn but also one of the most used languages, so learning C++ might get you a job. Learning C++ will teach you Structured, Imperative, Procedural and Object oriented programming.
D (unknown) 
D is a programming language created by Walter Bright (http://www.walterbright.com) and available at Digital Mars (http://www.digitalmars.com/d). It's a C++ successor with emphasis on execution efficiency, simple semantic models and safe features. It supports object-oriented, functional and generic programming. There is a comparison table (http://www.digitalmars.com/d/comparison.html) available to show some of the features of D compared to well-established ones.
C# 
C# is a relatively new object-oriented programming language very similar to Java and is one of the four built-in languages for the .NET Framework by Microsoft. The Mono Project has also implemented much of .NET for Linux. C# incorporates several new programming paradigms that are not found in other languages and directly supports several of the fab four's design patterns. It addresses many of the shortcomings of C++, and a few of Java. However it is often perceived as a vendor-specific language, even though a standard for the language exists.
Java 
Java is a "pure" Object-Oriented Programming language and as such can teach the benefits of OO design and development. Java can also teach such advanced programmatic concepts as Concurrent programming, exception handling and garbage collection (automatic memory management). Java is rapidly becoming a de-facto industry standard language for 'server side' applications development.
Objective-C 
Objective-C is the main language for programming MacOS and Cocoa. So if you use Apple Macintosh Objective-C is your language. Learning Objective-C will teach you Structured, Imperative, Procedural and Object oriented programming.
Pascal 
Initially, Pascal was a hypothetical language intended to teach students structured programming, and generations of students have "cut their teeth" on Pascal as an introductory language in undergraduate courses. Variants of Pascal are still widely used today, both in education and software development.
Perl 
Perl is an interpreted language. It is commonly used as a text manipulation, reporting, glue, and as a general programming language. It's availability on multiple computer platforms has led to it's use as a cross-platform development tool. In the Unix environments it is often used as a substitute for shell scripting.
PHP 
PHP is a server side language that is used in the development of dynamic webpages. PHP syntax is very similar to C syntax. PHP usually uses the MySQL database server to load page information, although it can connect to other database servers like Oracle or Microsoft SQL Server. PHP was originally based on Perl.
Python 
Python has a very clean and readable syntax and is run through an interpreter, which makes it easy to play with small examples. Python is used for many real world, large scale projects such as MayaVi and Zope, and has been employed by organizations such as NASA for coordinating large banks of computers--a task Python has proven well-suited for.
Visual Basic Classic (Aug 14, 2005)  
Visual Basic is good for people who just want to make a program that works and has a GUI. Can only be used for Windows based systems however. Very good for Rapid Application Development but also perfectly usable for general purpose programming of many kinds.
Visual Basic .NET (unknown) 
While Visual Basic .NET retains most of the keywords that define the Visual Basic language its structure has been altered considerably. Within the .NET Framework it has become a powerful and flexible language now implementing true object-oriented design and threading amongst other enhancements. While it is still largely limited to the Windows platform the Mono Project does support it on Linux.

Programming implementations

Programming for platforms

Additional Information

Editors

It is said that a programmer's best friend is his editor. A good editor is lightweight, has only essential tools and should support syntax highlighting for your language.

Examples of good editors are:

Anjuta (http://anjuta.sourceforge.net/)
An IDE for various languages for Gnome on Linux.
Emacs (http://www.gnu.org/software/emacs)
An editor popular amongst many Linux/Unix users but also available on Windows. Emacs is known for its power and flexibility though it has a pronounced learning curve. Originally designed by the godfather of the free software movement, Richard M. Stallman.
Vim (http://www.vim.org)
An abbreviation of Vi Improved, this editor is modelled on the classic Unix editor vi. However, Vim is a much more modern editor with an optional graphical interface and quite a few features vi doesn't have, making it the editor of choice for someone experienced with vi.
NEdit (http://www.nedit.org)
A fast, Open Source programmer-oriented editor which combines ease of use and flexibility.
KDevelop (http://www.kdevelop.org)
An IDE for some popular languages. KDevelop is available with KDE on Linux.
JEdit (http://www.jedit.org)
An editor written in Java. JEdit is small and flexible yet has many features including syntax highlighting for more than 25 languages and the ability to extend fuctionality with the use of plugins.
TextPad (http://textpad.com/)
A powerful, general purpose editor for Windows. Very simple and flexible, TextPad is a good replacement for Notepad.
UltraEdit (http://www.ultraedit.com/)
A powerful text editor for Windows. An even better replacement for TextPad which contains some very powerful tools such as column editing.
SciTE (http://www.scintilla.org/SciTE.html)
A text editor modelled on the Scintilla lexical analyzer, hence it's name, Scintilla Text Editor. SciTE is a lightweight editor with easily customizable syntax highlighting for many languages.
Eclipse (http://www.eclipse.org/)
Java-based Open Source IDE with huge commercial backing from corporations such as IBM, Intel, Red Hat and Borland. It is designed from the ground up to be a complete development environment. A heavy, powerful tool for software developers.
Syn Text Editor (http://syn.sourceforge.net/)

Tools

Popular libraries

Unix native

Windows "native"

Format Reference

  • Poor Text Format

Misc

Bibliography



Also helps finding: Computerprogramming, compter, programing, comptuer, programmin, comuter, progamming, computar, prgramming, compuer, programmming, coputer, porgramming, komputer, programmign

   
 
  
Add to bookmarks
Related Articles
 
Introduction to Sociology/Race and Ethnicity
Computer programming/Control:0
Computer programming/Control
Programming:Python:Statements
Programming:C:Statements
Ada Programming/Statements
Computer programming/Statements:0
Ada Programming/Variables
Computer programming/Variables:0
Computer programming/Function overloading:0
Ada Programming/Function overloading
Computer programming/Function overloading
Dewey 000
Main Page (table free)
Computer programming/Statements
Ada Programming/Control
Main Page (text only)
Ada Programming
Main Page:Italiano
Main Page/test

... view all
Search LiveJournal blogs for Computer programming
 

Wordpress Themes  •  Wordpress Themes  •  Advertising  •  Credit Consolidation •  Business Gifts

Copyright @ 2005 eMyTextBooks.com
This article is from Wikibooks. All text is available under the terms of the GNU Free Documentation License.