Computer programming (or programming) is a field that has to do with the analytical creation of source code that can be used to configure computer systems. programmer Computer programmers may choose to function in a broad range of programming functions, or specialize in some aspect of development, support, or maintenance of computers for the home or workplace (See: Programmer's Corner, ACM Programming Contest). Programmers provide the basis for the creation and ongoing function of the systems that many people rely upon for all sorts of information exchange, both business related and for entertainment purposes. Computer programs (or just programs) are instructions for a computer (see also: Quantum computer).
A collection of computer programs and related data is referred to as the software. A computer requires programs to function, typically executing the program's instructions in a CPU. [1]

Articles about the history of programming from the earliest known programmable machines were Al-Jazari's programmable Automata in 1206, Von Neumann architecture, Charles Babbage and etc. [2] [3]

Algorithm - Algorism and Algorithm stem from Algoritmi, the Latin form of Al-Kharizmi's name, a Central Asian mathematician who wrote an influential treatise about algebraic methods.

Here in this page, we keep to store the most common tools used by a developer during project development phase.

Other Tools: Java ToolkitAPI'sDatabase ToolsModeling & DesignMultimediaMaths and Science

Modern Programming

Programming language evolution continues (e.g. Human computer interacton programming-emotiv.com), in both industry and research. Depending on these evolution, methodology of software development is changed and as a parallel for this quality requirement is enriched as well. New technologies are innovated for measuring the software language usage and debugging mechanism is integrated into development-tools. Also some other project health tools are developed and used during project-development. E.g. static analysis tool can help to detect some possible problems. In this section we focus on the below list of items:

  1. Modern and Future P.L
  2. Quality requirements
  3. Methodologies
  4. Debugging
  5. Algorithmic complexity
  6. Language usage

As an extension for this section, or specialized tools on Java, see Java Development Tools page, Web Development GUI Tools, and API's.

Modern and Future Programming Languages

Programming Language History - discusses the major developments in the history of programming languages. As an example, see Internet age language.
See also: scriptol.com, Wiki, levenez.com, Hardware History, Computer Science History, History of Modern Computing book, Milistones in CS and IT

Modern Programming Languages

Here is the list of Current trends of programming languages, also you can study some of them as JVM Languages. More about MPL: Modern Programming Languages: A Practical Introduction, Post Moder Programming - Martin Fowler, Notes on Post Moder Programming. Below is just some esamples of them [4]

D 2.0 is like C/C++ a system-level language, but with garbage collection and integrates imperative object oriented programming with functional and concurrent programming (actor model). Erlang is a concurrent programming language with a functional language as it's core, strict evaluation and dynamic typing. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, concurrent systems and has been used esp. in the telecommunications area. Fortress is brand new specification of a next generation programming language specifically designed for high performance computing (HPC). It is very innovative, but not yet ready for practice. Haskell is a purely functional programming language. Python is a multi-paradigm programming language that incorporates imperative, functional and object-oriented features. Python has a dynamic type system. Ruby is a reflective, dynamic, object-oriented language and often used in web development.

Future Programming Languages

Which are the best programming languages to learn right now considering the future? It depends on what do you want to do, in which field, running on which hardware and etc. If you are quite clear with your road-map then select the one from the already in use languages. In case, your domain has some architectural complexity (e.g. parallelity or artificial computational) or requires quite new technology integartions then study the current languages feature and choose the one (e.g. Java, why JAVA, JVM Languages) which has more future language-improvement plans (Java version history, Features and JavaOne ), provides platform for executing other languages (JVM Languages) and easy to integrate with other new frameworks and enterprise-technologies (Application, Integration), wide range of usage by big market vendors (e.g. Oracle, Android Google, etc.) and provides open-community for discussing the possible issues.

Below articles gives more information about the Future of Computing, The Future of Computer Programmers: 10 programming languages that could shake up IT, Future Of Programming Languages, Article, Interview with Yukihiro Matz Matsumoto .

Meanwile there are some new languages which are under development or in their experimental phase. Time will show how they will be successfull in the market and gain their users. Below is just some esamples of them [4] Chapel is a imperative and concurrent language and has an interesting concept of "domain maps" to partition data onto processors. Fortress is an specification of a very advanced programming language that resembles mathematical notation. It is so advanced that there is no implementation available yet. X10 is developed by IBM and supports the hardware of IBM, esp. the "partitioned global address spaces" (PGAS).

Quality requirements

Whatever the approach to software development may be, the final program must satisfy some fundamental properties. In quality requirements the following properties are among the most relevant:

Methodologies

The first step in most formal software development projects is requirements analysis, followed by testing to determine value modeling, implementation, and failure elimination (debugging). There exist a lot of differing approaches for each of those tasks. One approach popular for requirements analysis is Use Case analysis.

Popular modeling techniques include Object-Oriented Analysis and Design (OOAD) and Model-Driven Architecture (MDA). The Unified Modeling Language (UML) is a notation used for both OOAD and MDA.
A similar technique used for database design is Entity-Relationship Modeling (ER Modeling).

Implementation techniques include imperative languages (object-oriented or procedural), functional languages, and logic languages.
See also: Software development methodologies, New Trends in S.M., Methodologies and Software Engineering, OO Programming, Beyond OO Programming

Debugging

Debugging (failure elimination) is a very important task in the software development process, because an incorrect program can have significant consequences for its users. Some languages are more prone to some kinds of faults because their specification does not require compilers to perform as much checking as other languages. Use of a static analysis tool can help detect some possible problems.

Debugging is often done with IDEs like Visual Studio, NetBeans, and Eclipse. Standalone debuggers like gdb are also used, and these often provide less of a visual environment, usually using a command line.
See also: Debugging, Systematic Debugging, Advanced Debugging, Debugging, Debugging by Thinking

Algorithmic complexity - Big (O)

Algorithmic Complexity is concerned about how fast or slow particular algorithm performs. Webpage covers the space and time Big-O complexities of common algorithms used in Computer Science. The academic field and the engineering practice of computer programming are both largely concerned with discovering and implementing the most efficient algorithms for a given class of problem. For this purpose, algorithms are classified into orders using so-called Big O notation, which expresses resource use, such as execution time or memory consumption, in terms of the size of an input.
See also: Algorithms in Java, Computational complexity theory, Kolmogorov complexity

Measuring programming language popularity

Algorithmic Complexity It is very difficult to determine what are the most popular of (measuring programming language popularity) modern programming languages. Some languages are very popular for particular kinds of applications (e.g., COBOL is still strong in the corporate data center, often on large mainframes, FORTRAN in engineering applications scripting languages in Web development, and C in embedded applications), while some languages are regularly used to write many different kinds of applications. New languages are generally designed around the syntax of a previous language with new functionality added (for example C++ adds object-orientedness to C, and Java adds memory management and bytecode to C++).
See also: Java Leads Programming Language Popularity, TIOBE Index

Programmers Corner

The computer programmer or software developer often focuses on the development of software that allows people to perform a broad range of functions. Computer source code is often written by professional computer programmers. Programmers may contribute to user guides and online help, or they may work with technical writers to do such work. In practice, programmers often are referred to by the language they know, e.g. as Java developers, or by the type of function they perform or environment in which they work: for example, database programmers, mainframe programmers, or web developers. Below items in the list are their jobs usually involve and the technologies which they use:

Software Development Tools Classification

Here you will find links to tools related to all areas of software development: programming editors and frameworks (Java, .NET, PHP, C#, JavaScript, XML, Ruby, Ajax, etc.), software testing, software configuration management, databases, project management, UML, etc.

Licence 
GNU licence, About Licencing,
Open Source, Freeware, Shareware, Web Hosting
Programming Languages 
Taxonomy of Languages, JAVA,
Client Side, Server Side Languages
Running Platform 
Windows, Unix/Linux, Embedded & Phone
Application Programming Interface - API
Tool Form 
Software, Plugin, Framework,
Code library, Component
Project Management
Software Development Process
Configuration Management
Build, Source Control, Deployment,
Continuous Integration
Software Testing 
Testing Frameworks, System testing,
Performance, Bug tracking
Approach
Ajax, UML
Tool Function (ide, gui, editors,..)
IDE, Web Tools, Database, XML,
Enterprise Modeling & Design , Multimedia,
Maths and Science, API
Database 
DBMS, Oracle, SQL Server, Non SQL

Evergreen (software)
is a automated webinar platform
Interview Tips 
All about, Unix/Linux, Web, Java Interview
Resources for Developers 
Icons, Animations, Java source, Computer books,
PDF database, Java Guru Search,
Java doc write, Music
Software News
Data Definition, Info world, Java Magazine,
Computer world, Softare news, Yahoo
Some Discussion Blogs
Software, CIO, Java, Oracle, Web
Internet Services - Searh Engines and etc
Google Services, IT Laboratory SourceFORGE

References


  1. 1. Wise GEEK
  2. 2. Wikipedia
  3. 3. The evolution of computer languages
  4. 4. Modern Programming Languages
  5. ELSEVIER - Science of Comp. Prog.
  6. History