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 Toolkit • API's • Database Tools • Modeling & Design • Multimedia • Maths 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:
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.
Modern Programming LanguagesHere 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 LanguagesWhich 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.
Implementation techniques include imperative languages
(object-oriented or procedural),
functional languages,
and logic languages.
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.
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. 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++).
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. References
|