Design World
| July 8, 2022
Leland Teschler • Executive Editor
Every year, a software bootcamp web site called Coding Dojo announces the top programming languages based on what employers are looking for from applicants. For its study, Coding Dojo looked on a job site called Indeed to discover which languages crop up most often in job descriptions compared to those from previous years.
It is interesting to review Coding Dojo’s list, particularly for engineers who are in mid-career — some of the most popular languages were only invented a few years ago. With that in mind, here are languages in highest demand, according to Coding Dojo, along with a brief description of them for those who haven’t darkened the halls of academia in a while.
Assembly code, of course, refers to any low-level programming language that has a strong correspondence between its instructions and the architecture’s machine code instructions. Assembly code gets converted to machine code by a utility called an assembler, which often supports additional facilities such as constants, comments, symbolic labels, and macros called assembler directives. And of course, each assembly language is specific to a particular computer architecture. Assembly language uses a specific mnemonic to represent each machine instruction, directive, register, flag, and so forth. Assembly language instructions usually consist of an opcode mnemonic followed by an operand which might be a list of data, arguments, or parameters.
Electrical engineers of a certain age generally once graduated with familiarity with only two languages, Fortran and assembly code. Their assembly code work likely took place on a PDP-11 minicomputer or something similar. Today, assembly code work generally is confined to embedded devices where memory space and other hardware resources are at a premium, or to run specific routines within larger systems implemented in a higher-level language as a way to boost machine performance. For example, just under 2% of version 4.9 of the Linux kernel source code is written in assembly while more than 97% is written in C.
Ruby was conceived in the early 1990s and really got going late in that decade, by which time it was said to be more widely used than Python in Japan. Ruby is sometimes described as a good first language to learn. It is used for a lot of web-based tasks such as building static websites, or web scraping and crawling.
The Ruby syntax resembles that of Perl. It is an interpreted language and also object-oriented: every value is an object, including classes and instances of types that many other languages designate as primitives (such as integers, booleans, and “null”). Methods defined at the top level scope become methods of the Object class and are also visible in all scopes, effectively serving as “global” procedures.
Ruby is a multi-paradigm programming language: Besides being object oriented, it allows procedural programming (defining functions/variables outside classes makes them part of the root, ‘self’ Object), with functional programming (it has anonymous functions, closures, and continuations; statements all have values, and functions return the last evaluation). It has support for introspection, reflection and metaprogramming, as well as support for interpreter-based threads. Ruby features dynamic typing, and supports parametric polymorphism.
You can thank programmers at Google for creating the Go language back in 2007. Their primary motivation seems to have been frustration with the complexity of the C++ language. They devised Go to improve programming productivity where multicore, networked machines and large codebases are involved.
Go is, of course, compiled and is syntactically similar to C but with memory safety, garbage collection, structural typing, and CSP (communicating sequential processes)-style concurrency. However, it is said to be more readable and usable than C with the goal of making the language specification simple enough to hold in a programmer’s head, partly by omitting features often found in other languages. In that regard, its syntax adopts patterns often found in dynamic languages where numerous programming behaviors execute at run time whereas more static languages generally build the same behaviors into their compilation. Go also has optimizations for specific kinds of programming problems: There are built-in concurrency primitives, light-weight processes for multitasking, and channels for message passing and synchronization.
To complicate matters somewhat, there is another computer language called Go!, with an exclamation point. Go and Go! are completely unrelated.
First devised in the early 1970s, C originally was conceived for constructing utilities running on the Unix operating system. It’s perhaps best known for providing low-level access to memory and language constructs that map efficiently to machine instructions. All its executable code resides within subroutines, also called functions. The language has a small, fixed number of keywords that include flow control primitives, numerous arithmetic, bitwise, and logic operators, and weakly enforced data typing.
Numerous other languages have borrowed ideas from C, particularly its control structures. Ditto for borrowing C syntax. And, in fact, a lot of compilers and interpreters of other languages are written in C. C syntax makes prodigious use of graphic characters such as ( ) + / { } [ ] % $ # and so forth. The language remains widely used for a variety of reasons, including its fast execution on most platforms, and that the code generated after compilation of a C program doesn’t demand many computer hardware features. Moreover, C code can call libraries written in assembler and may be called from assembler. In a nutshell, C makes for efficient algorithms and data structures because the abstraction from hardware is minimal and overhead is low.
C#, or C sharp, came out of Microsoft in the early oughts. C# applications have economical memory and processing power requirements, but the language isn’t intended to directly compete with ordinary C. Still, it is designed as a general-purpose object-oriented language intended to handle applications in both embedded systems and big hosted environments. Whereas C has 32 keywords, C# has 86. The C# syntax is also quite different from that of C.
C is generally described as supporting a top-down structure, where the most outline of the tasks and algorithms are defined first, and the detailed specifications are ironed later. C# is generally described as supporting a bottom-up structure, where individual elements of the system first get specified in detail, then get linked together to form ever-larger subsystems.
Perhaps the most important difference between C and C#, though, is that C# requires the open-source .NET software framework to be present. C does not.
C++ is basically the object-oriented version of C. It is the creation of a Danish programmer who first released it in the 1980s. It is meant as an extension of C and was initially dubbed C with Classes by its creator. The syntax is a lot like that of C but as the original name suggests, it provides classes while going farther than other OOP languages by supporting what are called deterministic destructors, a technique for freeing up resources once objects are done with them. C++ also originated the resource acquisition is Initialization (RAII) concept, a similar resource handling concept.
Most C code can easily be made to compile correctly in C++ but there are a few differences that cause some valid C code to be invalid or behave differently in C++. Recently defined C++ standards also introduce some incompatibilities, and there are specific steps required when a function declaration or definition is to be called in both C and C++. Such complexities make it difficult to write C++ programs that are easily portable between differing systems.
If you are creating web pages you are probably programming in JavaScript. All major web browsers contain a dedicated JavaScript engine to execute the code. JavaScript is a high-level just-in-time complied language, a long way of saying it is a scripting language. This means the code is compiled during the execution of the page rather than before it. JavaScript engines were originally used only in web browsers, but are now fundamental in some servers and in numerous applications. The most widely used runtime system for JavaScript is Node.js — temporarily notorious when it was recently found to be at risk for remote code execution attacks.
JavaScript has a lot of the same structured programming syntax as C such as if statements, while loops and do-while loops, switch statements, and so forth. The run-time environment (e.g., a web browser) typically provides objects and methods by which scripts interact with the environment (such as a web page). JavaScript is the dominant client-side language of the Web. Consequently, transpilers have been created to convert code written in other languages into equivalent JavaScript.
Note there is a similar language called Java that is sometimes confused with JavaScript. Java came out of Sun Microsystems in the 1990s. As you might expect, the two languages are related. Both have a C-like syntax. But Java isn’t a script language. It is more along the lines of a traditional object-oriented language. JavaScript was designed with Java’s syntax and standard library in mind. In particular, all Java keywords were reserved in original JavaScript, and JavaScript’s standard library follows Java’s naming conventions, and JavaScript’s Math and Date objects are based on classes from Java 1.0.
However, the two languages are more different than similar. Java has static typing, while JavaScript’s typing is dynamic. Java is loaded from compiled bytecode, while JavaScript is loaded as human-readable source code.
SQL or structured query language is used for programming and designing with data held in a relational database management system, which might be characterized as a spreadsheet on steroids. It came out of IBM in the 1970s. SQL language has several elements that include clauses, expressions, predicates, queries, and statements. These are all specific to handling common tasks in data manipulation. Expressions, for example, can produce tables consisting of columns and rows of data.
Superficially, SQL source code can look a little like that of other high-level languages such as Basic or Cobol, but it is completely different from these languages. Basic, for example, is considered an imperative programming language because it uses statements that change the program’s state, whereas SQL is declarative language in that it’s statements just handle computation logic. That said, over the years, extensions to SQL have added capabilities such as control-of-flow constructs and even object-oriented programming.
A point to note is that SQL implementations are typically incompatible between vendors because they don’t necessarily follow language standards. And widely used implementations of SQL commonly don’t support basic features of standard SQL such as date or time data types. Consequently, you can rarely port SQL code between database systems without first modifying it.
Python may be new to you if you graduated before the early 1990s. Created by a researcher in the Netherlands, it is a high-level interpreted language that includes facilities for programming paradigms that include object-oriented and functional programming as well as procedural programming. The name is a tribute to the British comedy group Monty Python. In the same vein, its tutorials and reference materials occasionally are written with a playful approach.
Python is considered a scripting language and is meant to be easily readable. Its formatting is visually uncluttered and often uses English keywords where other languages use punctuation. Unlike languages such as C, it does not use curly brackets to delimit blocks, and semicolons after statements are allowed but rarely used. It has fewer syntactic exceptions and special cases than C. Python was also designed to be highly extensible via modules. This aspect has made it particularly widely used as a means of adding programmable interfaces to existing applications.
Java is an object-oriented language designed to have as few implementation dependencies as possible. It does so via what’s called a Java virtual machine JVM. Java code gets compiled into a bytecocde, basically an intermediate representation, rather than into machine code for a specific architecture. The bytecode then runs on a JVM regardless of the underlying computer hardware.
Java syntax resembles that of C and C++ but with fewer low-level facilities. The Java runtime provides dynamic capabilities, such modifying its own code, typically not found in compiled languages. All code is written inside classes, and every data item is an object, with the exception of the primitive data types, (i.e. integers, floating-point numbers, Boolean values, and characters), which are not objects for performance reasons.
There are some special Java classes which turn up frequently. Java Applets were small application programs that were embedded in other applications (typically web pages). But they haven’t been used much since 2017. Java Servlets run on servers and generate responses to requests from clients. This usually means generating HTML pages in response to HTTP requests. JavaServer Pages also generate responses, typically HTML pages, to HTTP requests. JavaServer Pages basically embed Java code in HTML pages. A Swing in Java is a GUI library by which it is possible to specify a specific look and feel. Similar to Swing is JavaFX which specifically works on desktop computers and web browsers. DW
Browse the most current issue of Design World and back issues in an easy to use high quality format. Clip, share and download with the leading design engineering magazine today.
Top global problem solving EE forum covering Microcontrollers, DSP, Networking, Analog and Digital Design, RF, Power Electronics, PCB Routing and much more
The Engineering Exchange is a global educational networking community for engineers.
Connect, share, and learn today »
Copyright © 2022 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us