A programming language is a notation for writing programs, which are specifications of a computation or algorithm. Some, but not all, authors restrict the term “programming language” to those languages that can express all possible algorithms.
Traits often considered important for what constitutes a programming language include:
Function and target| A computer programming language is a language used to write computer programs, which involve a computer performing some kind of computation or algorithm and possibly control external devices such as printers, disk drives, robots,and so on. For example, PostScript programs are frequently created by another program to control a computer printer or display. More generally, a programming language may describe computation on some, possibly abstract, machine. It is generally accepted that a complete specification for a programming language includes a description, possibly idealized, of a machine or processor for that language. In most practical contexts, a programming language involves a computer; consequently, programming languages are usually defined and studied this way. Programming languages differ from natural languages in that natural languages are only used for interaction between people, while programming languages also allow humans to communicate instructions to machines.
Abstractions| Programming languages usually contain abstractions for defining and manipulating data structures or controlling the flow of execution. The practical necessity that a programming language support adequate abstractions is expressed by the abstraction principle this principle is sometimes formulated as a recommendation to the programmer to make proper use of such abstractions.
Expressive power| The theory of computation classifies languages by the computations they are capable of expressing. All Turing complete languages can implement the same set of algorithms. ANSI/ISO SQL-92 and Charity are examples of languages that are not Turing complete, yet often called programming languages.
Markup languages like XML, HTML or troff, which define structured data, are not usually considered programming languages Programming languages may, however, share the syntax with markup languages if a computational semantics is defined. XSLT, for example, is a Turing complete XML dialect. Moreover, LaTeX, which is mostly used for structuring documents, also contains a Turing complete subset.
At heart, R is a programming language, but it’s more of a standard bearer for the world’s current obsession with using statistics to unlock patterns in large blocks of data. R was designed by statisticians and scientists to make their work easier. It comes with most standard functions used in data analysis and many of the most useful statistical algorithms are already implemented as freely distributed libraries. It’s got most of what data scientists need to do data-driven science.
2. Java 8
Java isn’t a new language. It’s often everyone’s first language, thanks to its role as the enterprise favourite for AP Computer Science. There are billions of JAR files floating around running the world.
Apple saw an opportunity when programming newbies complained about the endless mess of writing in Objective C. So they introduced Swift and strongly implied that it would replace Objective C for writing for the Mac or the iPhone. They recognized that creating header files and juggling pointers was antiquated. Swift hides this information, making it much more like writing in a modern language like Java or Python. Finally, the language is doing all the scut work, just like the modern code.
When Google set out to build a new language to power its server farms, it decided to build something simple by throwing out many of the more clever ideas often found in other languages. They wanted to keep everything, as one creator said, “simple enough to hold in one programmer’s head.” There are no complex abstractions or clever metaprogramming in Go—just basic features specified in a straightforward syntax.
For many programmers, there’s nothing like the very clean, simple world of C. The syntax is minimal and the structure maps cleanly to the CPU. Some call it portable Assembly. Even for all these advantages, some C programmers feel like they’re missing out on the advantages built into newer languages.
Just like CoffeeScript, Less.js is really just a preprocessor for your files, one that makes it easier to create elaborate CSS files. Anyone who has tried to build a list of layout rules for even the simplest website knows that creating basic CSS requires plenty of repetition; Less.js handles all this repetition with loops, variables, and other basic programming constructs. You can, for instance, create a variable to hold that shade of green used as both a background and a highlight color. If the boss wants to change it, you only need to update one spot.
Most people take the power of their video cards for granted. They don’t even think about how many triangles the video card is juggling, as long as their world is a complex, first-person shooter game. But if they would only look under the hood, they would find a great deal of power ready to be unlocked by the right programmer. The CUDA language is a way for Nvidia to open up the power of their graphics processing units (GPUs) to work in ways other than killing zombies or robots.
Everyone who’s taken an advanced course in programming languages knows the academic world loves the idea of functional programming, which insists that each function have well-defined inputs and outputs but no way of messing with other variables. There are dozens of good functional languages, and it would be impossible to add all of them here. Scala is one of the best-known, with one of the larger user bases. It was engineered to run on the JVM, so anything you write in Scala can run anywhere that Java runs—which is almost everywhere.
Scala isn’t the only functional language with a serious fan base. One of the most popular functional languages, Haskell, is another good place for programmers to begin. It’s already being used for major projects at companies like Facebook. It’s delivering real performance on real projects, something that often isn’t the case for academic code.
When XML was the big data format, a functional language called XSLT was one of the better tools for fiddling with large datasets coded in XML. Now that JSON has taken over the world, Jolt is one of the options for massaging your JSON data and transforming it. You can write simple filters that extract attributes and JOLT will find them and morph them as you desire. See also Tempo and using XSLT itself.