As Wikipedia defines it, "a programming language is a formal language that specifies a set of instructions that can be used to produce various kinds of output. Programming languages generally consist of instructions for a computer. Programming languages can be used to create programs that implement specific algorithms." In other words, programming languages help you create, effective ways to understand and make sense of instructions, requirements, and much more.
Modern programming languages derive from ancient programmable machines, and goes back as far as the 9th century during the Islamic Golden Age. The Musa Brothers from Baghdad created books on automatic machines and mechanical devices. The earliest known programmable machine that preceded the invention of the digital computers was the automatic flute player that was in the Musa Brothers' books.
Following the 9th century, in the 17th century, musical instruments such as Jacquard looms and player pianos were programmed. Of all programming languages, even if a lot differ, one characteristic that remains similar is the imperative form (sequence of operations to perform) or it's declarative form (desired result is specified, but not defined into how to go about achieving it).
When computers were first developed, they were developed without the help of a programming language, by writing programs in binary or decimal form, and they were read in punched cards or magnetic tape, toggled in on switched on a computer. These languages were also known as absolute machine languages.
2GL, or also known as assembly languages, were instructions set architecture based programs for the specific computer, which made it user friendly for users in reading and programmers lives got much easier as there were less error-prone address calculations.
3GL, or also known as high-level programming languages, were written in the 1950's, written by Konrad Zuse. The language was known as Plankalkul. John Mauchly's Short Code proposed in 1949 was developed for an electronic computer. One disadvantage that it followed was having to translate the code into machine code every time it ran, which made it much slower to perform and utilize.
According to the IEEE Spectrum and Tiobe Index, the top three languages right now as of November 2017 is Python, Java, and C++. The ranking was done by demand and by popularity. IEEE Spectrum puts these languages as the top three languages highest demanded by employers. The analysis was based on extensive research of contexts such as social chatter, open source code, production, and job posting
Tiobe Index ranked Python, Java, and C++ as the top three popular languages as of November 2017. This index is updated once a month and ratings are based on the number of engineers around the world, courses, third party vendors, etc. Popular search engines such as Google, Amazon, Youtube are used to calculate these metrics.
Python was created by Guido van Rossom during his winter break in February 1991, deriving i ts features from an interpreted language called ABC. Its interesting to note that the name of the language did not derive from the dangerous reptile, rather a comedy series in BBC in the 70's called "Monty Python's Flying Circus." Rossum wanted a name that was interesting and myterious, and he was a big fan of that show.
In the Python's main website, Rossum gives an insight on the origins of Python:
In December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/Chackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python's Flying Circus).
As Python.org would describe it, Python is a "programming language that lets you work quickly and integrate systems more effectively." Some of Python's feature include easier readability, easy to learn, comes with large free standard library that supports many common programming tasks such as connecting to web servers, searching text with regular expressions, and changing file types. You can compile other languages within Python, such as SQL, C. C++. It can also be embedded into an application to provide programmable interface. It is OS friendly as well, since you can run it in Mac, Windows, Linux, and Unix. Finally, it is an open-source, free software, that can be freely modified and re-distributed (of course, with an open source license).
There are many pros and cons of using Python. Some advantages of using Python is using its human friendly syntaxes, and readability in general. It requires less effort to not only read, but write Python, vs another language such as C++ or Java. Python is also quite popular in academia, creating a "large talent pool," says Sumit Chachra, CTO at Tivix (Krill). Along with its built-ins and standard library, with the availability of many third party open source libraries and modules, the code is easier to not only use but maintain as well. With the option of ease of use, and readability, there is also asynchronous coding benefits, as the code is easy to run many processing loops without confusing the content and performance.
Unfortunately, not all coding languages fit everyone's expectation. With Python, although a lot is advantageous for developers, there are also some cons that come along with it. For starters. since it is an interpreted language, the speed of the code can be slower than compiled languages. As the executiion is slow, it could be quite time consuming to wait for performance to be evaluated. Second, as we approach more into the generation of mobile computing, Python can be weak in that field. Very few smartphone applications are developed with Python, and is rarely seem on User-Interfaces. Python also lacks security, which makes it quite difficult to execute on browsers without causing a risk of breach. Lastly, there are also design restrictions associated with Python. Since the language is typed, it requires a lot of time for testing and fixing errors(which only shows up on runtime). Lastly, Python is very strict on its indentation, which is good as it will force a developer to be more organized witht he code, and readability, but at the same time, it causes errors if not taken care of.
To understand why Python is suddenly in high demand, we have to go back to the late 80's, when it was first introduced. With the absence of proper marketing, the language was not known to many companies. However, in the recent years, Google brought attention to this language and assisted in changing some of the configuration and set up which made it easy for programmers to perform this new enhanced update. There were also efforts taken to delete any duplicated, unnecessary library modules, making it a smooth program for programmers.
Another reason for it's popularity is allowing developers to build Applications in various Domains. Python was inspired by Java and C++, and similar features make it easy for any developers to set up an application. It gives programmers and companies the chance to collaborate and integrate and gives flexibility to any programmers to use this to build applications, hardware programs, and smartphone games.
Lastly, we also must look at the fact that since it sia language that is quick to understand, easy to learn, and fast to learn, it is much more efficient for companies to invest and hire someone and get them started in working on projects in Python. It is also important to note that since there is a high demand for Python develoeprs, the IT enterprise offers a great deal of money/salary for people who have those skills.
It may come useful for developers to know that Python is used for far more than back-end developing. With the shift in Python demand, there are many companies that are looking for people with Python skills. These skills could be first broken down into many subcategories, where Python is used. Python is used in web development, games, graphics, finance, science, electronic deisgn automation, software development, education, business software, in the government, etc. Large organizations such as Wikipedia, Google, Yahoo!, NASA, Capital One, uses and needs more people with Python skills. Social networking site such as Reddit is created entirely on Python, and are always hiring people with similar background to maintain its business. If one is interested in working with Python, they may be interested in working in the finance industry, as shifting from manual process to automation is the trend for banks and insurance companies in this day and age.
To discuss the development of C++, we must go back to its parent language that it derives from: C. In the 70's, a Dennis Ritchie of Bell Laboratory created a new operating system with self-made programming language that produced compact and fast-paced programs. This programming language was called C. In the early 80's, also at the Bell Laboratory, Bjrane Stroustrup took the C language, and enhanced it to fit better for writing good programs easier and more pleasant, by adding Object-Oriented Programming features to C, and called it C++. An interesting fact about C++ is that the special effects for Star Wars movies were programmed with C++.
C++ is a programming language that can be used for any general purpose since it is imperative, obkject oriented, and generic. It is imperative in the sense that it, when executed appropriately, focuses on describing how a program operates. As opposed to a declarative programming language, which focuses on what the program should accomplish without enough specification to how something can attain such results. C++ is also object oriented, just as Java, and Python, which is based on the concept that objects which many contain specific data or field (attributes), can be accessed and modified. These are also known as multi-paradign programming languages. C++ is generic in the sense that it uses algorithm that are instantiated when needed to provide specific parameters. Think of it as writing common functions or types that differ only in set of types. This will reduce duplication. The current C++ is C++17, which has new features and an enlarged standard library that supersedes previous versions.
Since we now know that C++ is inherited from its parent language, C, it is important to note how they are similar and different. As in C, C++ supports object storage. This means, it supports memory management, such as static storage, thread, automatic and dynamic storage. To make it clear, we can compare C and C++ to a traditional typewriter with an electrical type writer. C++ is better, efficient, has a better object oriented layer, and is faster than C. On the other hand, C is quite generic, it doesn't support classes and objects like C++ does. C++ is lightweight, and compiled, and a developer has the option to either benefit from it by utilizing it as a high level or a low level programming language.
There are several pros and cons associated with using C++. Some pros include: it is extremely popular (which means there are a lot of support, and demand from companies, as well as research), it has a lot of free code for download (including templates). C++ is also quite powerful, as it can be used to create just about any programs. Since many languages are created with inspiration from C++ (such as Java), first time users of C++ will have some understanding of the language to use it.
While it is a powerful language to use, it is important to note that it is not as safe of a language as we may want it to be. There are many security issues and memory leaks with their memory management system, which causes extra time and effort to fix for programmers. Since there are no built-in memory, developers must use external libraries to fix such leaks. If a developer want to calculate systematic functions, they will come across trouble with calculating metrics, since C++ does not offer full algebraic data types ("C, Wikiversity). Unlike Python, the syntaxes are difficult to learn and understand for first time programmers, so such complexity quires a lot of self-learning and tutorials. Some famous programmers such as Joshua Bloch (former sofrware engineer of Google) described C++ as a language that is "pushed well beyond its complexity threshold, and yet there are a lot of people programming it." Ken Thompson, the original designer and implementer of Unix, calls C++ a "bad language. It does a lot of things half well and it's just a garbage heap of ideas that are mutually exclusive." ("C," Wikipedia).
Most gaming companies use C++ to program their games, therefore it is always a high demand for gaming companies. As for more of the generality of the concept, C++ is portable and already established, it is also quite fast. Managed code is easy to decompile with C++, and a features like multiple ingeritance and templates lets you work with unmanaged code.
As mentioned previously, most gaming companies look for C++ skills. It is important to note that C++ could be utilized in many ways, but usually any company that works iwth low level systems or develops high performance software, will usually use C++. This includes Quora, Facebook, Google, Microsoft, NASA, Uber, etc. Outside of the more famous companies listed, almost all electronics companies use C++ as well. This incldes, ARM, Qualcomm, MediaTech, Intel, Samsung, Sony, HP, FitBit, etc.
Not to get confused with the delicious Java-Chip Frappe from Starbucks, or the beautiful island off the coast of Indonesia. Java was developed by James Gosling at Sun Microsystems (now aquiring by Oracle), and released in 1995. Its syntaxes derive from C and C++, and was initially created for designing interactive television. It's interesting to add that Java was too advanced for its development at the time in the mid 90's, since digital cable was not as advanced.
Java is known for its easy implementation once actually written. To begin the definition of Java, it's important to understand that Java is concurrent language, meaning that executing happens with overlap, unlike sequential computing where one completes before the next starts). Java was designed in a way where only few implementation is required, since it is intended to let application developers write once and run anywhere. This is a great news for developers since Java code can run on all platforms, without the need for continous coding. ("Java(Programming LAngiage)"). Java can be run in JVM (Java Virtual Machine) on any OS, and its used particularly for client-server web applications.
There are many pros to using Java. For starters, the syntaxes are familiar to C, C++, and C#. Second, there is an automatic memory management created by Garbage Collection, Java has a very large standard class library, as well as third party libraries. Even though syntaxes are familiar to c, they are much more simplied syntax.
There are a lot of disadvantages of using Java as well. For starters, performance is significantly slower and more memory consuming than other compiled languages such as C or C++. Since Java was inspired by C and C++, it is also inherited some of the quirks and traps of those languages. For instance, semicolon placement can easily trip up a beginning. There is also a lack of enumeration, no local constants, and no separation of specification from implementation.
Even though there are a lot of disadvantages, there is still a high demand for Java. According to Codingdojo, the number of Java positions on Indeed went up by almost 30,000 in 2017 compared to 2016. The conclusion was made by analyzing the rise of Android users in the market, since Android applications are built in Java and 90% of Fortune 500 companies use Java as a server side language for their backend development (Patel).
Companies such as Fitbit, Google, Linkedin, Thumbtack, T-Mobile, and Zillow are using Java and are always looking for Java Developers. The salary range of Java can range between $62,000 to $127,000, and the national average of $86,028.
It is no secret that going forward in the future, Artificial Intelligence technologies will dominate the world's capacity. AI Technologies are displayed by machines, in constrast to natural intelligence, that's displayed by humans and animals. AI Technology is the study of intelligent agents, such as any devices that perceives its environment and takes actions to maximize profit and production..The future of programming will eventually integreate of robotics and automation, that will revolutionize business needs, transofrming from tedeious manual processes to automating systems. According to the Robotiq Blog, Python, C++, and JAVA are dominant languages that will play a key role in creation of Al technologies (robotics including). C++:This is a good starting point for people getting into robotics, as most common hardware libraries use this language. PYTHON: This is briefly used for ROS (Robotic Operating System), and it is quite easy to learn and use, as well as easy to implement basic functionalities. Another advantage of using Python for robotics is that it allows binding with C++ code, which means you can perform and measure heavy duty functions by avoiding performance loss.