Posts tagged "programming languages"


8 Programming Languages That Scientists Use

May 10, 2019 Posted by Programming 0 thoughts on “8 Programming Languages That Scientists Use”

There are a lot of general purpose programming languages out in the wild that can theoretically do anything that another language can. For example, Python and Ruby are pretty identical languages. The only reason one has become the dominant language of data science is because of the ecosystem that developed around it. Now, Python is nearly synonymous with data science. But there are other more specific programming languages that cater to a field of science. These are the languages that are considered niche. Those who use them swear by them. To outsiders, you might as well be speaking greek.

Here are eight programming languages(not named Python) that scientists use.



Image result for matlab

credit: Mathworks

Matlab is a programming platform developed by MathWorks to allow for matrix manipulations, plotting data, implementation of algorithms, creation of users interfaces. The language is used mostly by students in university level courses. Matlab comes with an IDE, debugger, and a suite of tools and built-in methods, like most other languages.



Image result for fortran

Though Fortran may seem like a relic today(I posted an article about how it was all the rage in the 80’s), it’s still chiefly used by physicists. The main reason for its continued existence is it’s speed and flexibility when it comes to built-in parallelization and arrays. The language is used along with C++ for high computation tasks that involves modeling stars and galaxies, climate, and electronics.



Image result for ALGOL

This language is a bit ancient and perhaps only in use in certain mainframes–even then its superset ESPOL would be in use. Why ARGOL is relevant now is that it lay the groundwork for languages like Simula, Pascal, C, and Ada. The reason for ARGOL’s influence lay not only in its syntax but its extensive use in academia. Since ARGOL became the lingua franca of algorithmic description, later works would continue to add new ideas to the world of language and algorithm development, one of them being the ALGOL 60 Report edited by Peter Naur. The grammar description later became standardized and was called the Backus-Naur Form.


Image result for apl programming language

The APL programming language is a programming language for the mathematically inclined individual. Like many other programming languages used for mathematical modelling, the multidimensional array is the primary data type of this language. Unlike many other computational languages, APL is hellish to read. The language attempts to abstract complex mathematical functions into representative symbols. In so doing, skilled APL programmers can increase productivity.



Image result for j programming language

credit: iTunes

J is what you get when a developer looks at the crazy symbols in APL and says, “I can fix that.” Instead of relying on foreign symbols, J relies on the tried and true ACII character set. Still, J is notorious for its conciseness. One line of J can do more than one page of code in many other languages.  The language is used for mathematical and statistical programming.



Image result for julia programming language

credit: Wikipedia

Julia has the look of a dynamic scripting language, but it’s multiple dispatch system gives Julia the flexibility to be both dynamic and strongly typed; functional and object-oriented. This means Julia can be applied to various applications. The very ethos of Julia is flexibility. It’s founder, Professor Alan Edelman, wanted Julia to have “the speed of C with the usability of Python, the dynamism of Ruby, the mathematical prowess of MatLab, and the statistical chops of R.” While the language may not have met those loft goals, the principle behind its design makes Julia a handy Swiss Army knife for data scientists.

Wolfram Language

Image result for wolfram language

credit: Wolfram

The Wolfram Language, formerly known as Mathematica, is a language that represents data like strings and integers as symbols. It’s highly symbolic nature is great for representing large data in a clean, readable way.



Image result for r programming language


The R programming language is a language centered around statistical computing. According to the R website, R is “an integrated suite of software facilities for data manipulation, calculation and graphical display.”



image credit:


Lucas Vasques

Please follow and like us:

Haskell beat C++ in Prototyping Experiment

April 4, 2019 Posted by Programming 0 thoughts on “Haskell beat C++ in Prototyping Experiment”

Functional programming is a declarative  style of programming which is concerned with  producing values. Some elements of functional programming include pure functions and immutable data. These elements lend themselves well to prototyping because the result of  copying data and keeping functions pure allow for much better readability. As a result, software developers can better understand the code; they know exactly what the code does.

As functional programming is increasingly used in imperative programming languages like C++, JavaScript and the like, Haskell stands out as a language that was built to be used purely for functional purposes. So, one would assume that it should trump other imperative languages in the arena of functional programming.

With that in mind, a research paper written by Yale professors Mark P. Jones and Paul Hudak in 1994 details how the Navy came to conclude that Haskell is a better language for prototyping.  According to them,

‘The resulting programs and development metrics were reviewed by a committee chosen by the Navy. The results indicate that the Haskell prototype took significantly less time to develop and was considerably more concise and easier to understand than the corresponding prototypes written in several different imperative languages, including Ada and C++.”


The experiment involved creating prototypes for a geo-server. Each prototype would be developed with a  language created by the ProtoTech program, launched in 1989 to “develop the languages, tools, and infrastructure necessary to enhance the prototyping process.” Here’s the result of the experiment:


Language Lines of Code Lines of Documentation Dev Hours
Haskell 85 465 10
Ada 767 714 23
Ada9X 800 150
C++ 1105 130
Awk/Nawk 250 0 50
Rapide 157 50 54
Griffin 251 0 34
Proteus 293 79 26
Relational Lisp 274 12 3


Haskell came in at only 85 lines of code compared to C++’s 1205 lines of code. The  lines of documentation  to lines of code is the greatest, which gives you an idea of how well the engineers were able to understand what the code does, which, in turn, is exactly why you’d want to use a functional programming paradigm. Still, the ratio alone says nothing about why programmers at NSWC preferred Haskell over the other programming languages.

According to the authors of the paper, there are three reasons why Haskell makes for a great prototyping tool:

  1. Haskell’s simple syntax
  2. Haskell’s use of higher-oder functions, made easy to use due to Haskell’s focus on functional programming
  3. The use of standard list-manipulating primitives in the standard prelude




So, why isn’t Haskell being used more today if it’s such a great tool and if functional programming is rising in popularity? Despite the findings of the researchers, for junior developers and hobbyists, Haskell’s syntax is far from simple and its dirth of tooling means you have to learn what a monad is  just to write a program that can read a file. It’s a great language to use if you know what to build, if you have a strong background in mathematics(as those who used Haskell most likely would have had), and if you decide to make an in-house tool or prototype. But, if you decide to go into production with Haskell, suddenly you have to deal with Haskell’s lack of backwards compatibility, among other quirks that make it unwieldy in this age of speed and portability.



Please follow and like us:
swift 5 bird

Swift 5 Releases With ABI stability

March 26, 2019 Posted by News 0 thoughts on “Swift 5 Releases With ABI stability”

Swift has finally gotten a version update. The most notable inclusions that Swift 5 brings is ABI stability and binary comparability.

With ABI stability, you can say goodbye to having to add a .dylib to your framework and fretting over the exact version of that library because, according to the Swift team, Swift’s runtime will be embedded into “every macOS, iOS, tvOS, and watchOS release going forward.”

Currently, Swift 5’s ABI is only stable on OS. Swift developers–wherever they are–who work on Linux and Windows platforms may have to wait quite some time to see any ABI stabilization. Jordan Rose mentioned in his blog post that, “As development of Swift on Linux, Windows, and other platforms matures, the Swift Core Team will evaluate stabilizing the ABI on those platforms.” In other words, there is not a large enough ecosystem of Swift developers on other platforms for ABI stabilization on those platforms to be a feasible option for now.

You can’t talk about ABI stability for long without mentioning binary compatibility. Jordan Rose, a developer working on Swift, explained what that would mean for developers later on Swift’s blog:

“Swift 5 provides binary compatibility for apps: a guarantee that going forward, an app built with one version of the Swift compiler will be able to talk to a library built with another version. This applies even when using the compatibility mode with older language versions (-swift-version 4.2).”

Take an app built with Swift 5, using a compiler that supports ABI stability.

Credit: Swift


There are other gems in this Swift 5 release worth mentioning.

Swift 5 comes with exclusivity enforcement during release builds


Swift 5 now supports exclusivity enforcement in release builds. Andrew Trick explains in another Swift blog post why this new update  further increases the safety of the language:

“By shipping with full exclusivity enforcement enabled in Release builds, Swift 5 helps to eliminate bugs and security issues, ensure binary compatibility, and enable future optimizations and language features.”

Due to the strict checking during release, previously working code may trigger errors, as Trick explains:

“Swift 5 fixes the remaining holes in the language model and fully enforces that model1. Since run-time exclusivity enforcement is now enabled by default in Release builds, some Swift programs that previously appeared well-behaved, but weren’t fully tested in Debug mode, could be affected.”

You can always turn this mode off in XCode’s Exclusive Access to Memory setting if you’re unhappy with the memory overhead accrued from the exclusivity enforcement. But the principle of the update is to take the burden of remembering to follow every single rule away from the developer.  Poor implementation of these rules can result in exploitable memory leaks in future Swift releases.


Swift 5 also now includes dynamic types which will facilitate Swift’s portability with other dynamic languages like JavaScript, Ruby and Python.


Here’s the Swift team’s reasoning behind including the much maligned dynamic typing to Swift 5:

“Swift is exceptional at interworking with existing C and Objective-C APIs and we would like to extend this interoperability to dynamic languages like Python, JavaScript, Perl, and Ruby. We explored this overall goal in a long design process wherein the Swift evolution community evaluated multiple different implementation approaches. The conclusion was that the best approach was to put most of the complexity into dynamic language specific bindings written as pure-Swift libraries, but add small hooks in Swift to allow these bindings to provide a natural experience to their clients. SE-0195 was the first step in this process, which introduced a binding to naturally express member lookup rules in dynamic languages.”

If you’re excited about this new capability, then check out their README which gives a detailed overview of their new user-defined dynamic types.


Those new features aside, the release notes also includes a rundown of minor updates:

  • String reimplemented with UTF-8 encoding which can often result in faster code (See the UTF-8 String blog post for more background on this change)

  • Improved support for raw text in string literals (See the String Literals blog post for more background on this refinement)

  • Result and SIMD vector types added to the Standard Library

  • Enhancements to String interpolation, adding more flexibility to construct text from data

  • Performance improvements to Dictionary and Set





Please follow and like us:
hard programming languages

Hard Programming Languages To Learn

March 25, 2019 Posted by Programming 0 thoughts on “Hard Programming Languages To Learn”

Many can agree that hard programming languages do exist since programming languages generally fall on a range of difficulty. For example, assembly language is a low level language that some programmers would find too arcane to grasp. Then there’s a slightly higher level language like C – – that closely resembles assembly but whose syntax affords more readability. C – – language can be difficult to learn for the simple fact that the application of the language deals with code generation which involves building compilers.

Finally, you have the ever present high level languages like C++, Java, Ruby, JavaScript, etc. These programming languages in general are easier to learn because of the abstractions from the lower level languages. But even within the bracket of high level programming languages, there are varying degrees of difficulty that pertain to syntax and certain concepts that these programming languages stress.

For example, C++ emphasis memory management, a concept that assembly programmers will be all too familiar with. This may make C++ among a hard programming language to learn when compared to Ruby, which not only takes care of memory management automatically but also removes the need to include curly braces and semicolons.

Still, difficulty or the lack thereof can easily be based on personal strengths and weaknesses. So when the question about what programming language was most hard for a developer to learn, it’s fascinating to see the varying responses. We’ve collected some responses to this very question to give you an idea of what developers considered hard.


Sergiu Mureşan

I think Prolog was the weirdest of the bunch. Having backtracking done automatically in a language is a far from normal concept although, once you get used to that, you can implement some software in a couple lines that would take hundreds of lines in C.


Nurbol Alpysbayev

Javascript. I mean, seriously, it took years for me to understand prototypal inheritace, function as a constructor, this behavior, event loop. I managed to finally comprehend the concepts right by the time es6 was out, ironically.


Brian Kephart

JavaScript is hard for me for a different reason. The paradigm just doesn’t fit well in my head. Is it object-oriented? Functional? Procedural? What’s the deal with prototypical inheritance? Am I returning a function, or the result of that function? Every time I have to spend extended time with JavaScript, my progress is much slower than in languages like Ruby or Python (and I’ve barely used Python) because I find it more difficult to reason about.



I’d have to point at 6502, Prolog, LISP / Scheme, and F#.

BASIC was the first language I learned. 6502 assembly was the second. 6502 was “hard” only because I was self-taught, and I was a kid.

(Learned 68000 assembly later, and my 6502 experience made me appreciate both the simplicity of the 6502, and the orthogonal expressiveness of the 68000.)

I learned Prolog while I was a linguistics major. It was very different from the procedural languages I learned. I had to do a lot of learning on how to use it. (Shout out to Dr. Kac, he’s awesome!)

I learned LISP / Scheme as a computer science major, with a professor who didn’t click for me. I wouldn’t call them “hardest”, but rather “least appreciated at the time” and I didn’t like them much. I think I have better perspective these days to appreciate how powerful they are.

I learned F# a few years ago. Technically, wasn’t hard… once I found a good book (after slogging through a half-dozen books that didn’t work for me). It was fun! But it was mind-blowing and a very different programming paradigm than what I was used to. And coming to grips with a different paradigm like that is hard. Makes me cringe when people call C++ or JavaScript functional programming languages.

Haskell is pure FP, Scala is OO w/FP, F# is FP w/OO on the edges (the OO being necessary to fit into the .NET context).


John Kazer

First language was LISP, for programming neural networks in the early 1990’s which was ok but followed by prolog for natural language processing which definitely was not. C was easy by comparison and JavaScript but never really got on with VBA or C++ for anything properly object oriented.


Ian Ross

It’s not shockingly original on this thread, but for me it was trying to do anything even remotely serious in C (as in, outside of basic, classroom-like exercises). Coming from JavaScript, it was the memory management that felt like I was swimming with sharks — as it has been for many others.

Though I would say that’s the “hardest” I’ve learned in terms of the challenge, I actually found myself really enthused at getting into the low-level realm of programming, and felt far more excited by the nitty gritty of C than when I learned Python not too long after. I’ve considered diving into Scala, but haven’t taken the plunge quite yet.

I adore the learning process of taking on a new programming language, and so have just started exploring Rust, and am liking what I’m seeing so far.


Chad Smith

While not the hardest really, JavaScript really gets to me sometimes. ES6 has helped but also frustrated me more (I sort of feel like changing how this operates in arrow functions just made the language inconsistent).

Coming from a languages like C++ (my first language, don’t use it at work, but it’s my favorite), I don’t understand why they had to make JavaScript seem so similar to other languages yet so different at the same time.

Like I understand how this works in JavaScript yet when I use it everyday still, I STILL run into issues with me not using it correctly because the meaning in my mind is not what I was taught when I first learned programming.


Eric J. Falgout

After focusing on writing a parser in C, I was told that I had to then rewrite it in Java.

Since I had just taught myself C, to write the parser, I assumed that teaching myself Java wouldn’t be much more difficult and probably easier.


It was my first taste of OOP and the contract ended before I could wrap my head around the concepts much less the differences.


Jim Kopps

My first language in school was c++. I hated it, figured I wasn’t cut out to code. Then a couple years later I started playing with some javascript and then Python. At some point I realized that I could do this, but I’m not using c++ to do it.


Rob Hoelz

In recent memory, Idris was the most mind-bending language I’ve tried out. It’s capable of some really astounding feats, but wrapping my head around dependent types was really challenging. It was very rewarding though; I recommend checking out Idris if you enjoyed Haskell!


Andrew Davis

Probably Rust and Elixir for me. I felt like if I had given it a little more time, I could have gotten to an aha moment with Elixir, but needed more practice. Rust’s memory management is really hard to grok and the difference between str and String was frustrating. One of the reasons I really like Go is that you get the static typing and speed of Rust, but it has a lower learning curve.


Janne “Lietu” Enberg

Likely C++, and not because the language is supposed to be somehow particularly difficult, but because it’s terrible.

The compilers are useless at telling you what is wrong, even when it’s something super obvious to every other language’s compiler on the planet. The language is full of gotchas, “oh your destructor isn’t virtual so I’m not going to call it” kind of things.


Casey Brooks

Working with Verilog (a hardware-description language) in college was a real struggle for me. Even though it looks kinda like conventional code, it does not execute like conventional code, top-to-bottom. Instead it executes as hardware would, in “time-slices”, which made it very difficult for me to reason about. It was really cool when I simulated a MIPS CPU entirely in Verilog, except that I could never get it working properly.


Shawn McElroy

I tried learning Scala early in my career (started from PHP), and I felt it was over my head. I tried for a month or so and eventually gave up. It was a nice language, but I realized over time, it just wasn’t what I needed, or wanted.


Ben Halpern

Objective C always makes my eyes glaze over. I wanted to do some iOS development and that language always made me give up. I basically learned the language but never found it very easy.




The languages that developers generally found to be the hardest to learn, based on the number of mentions, is Haskell, Prolog, JavaScript, C++, and Assembly. All of these programming languages either have peculiar quirks that differentiate them from most other languages or are used for advanced applications.

Answers were sourced from

Please follow and like us:

What Is the C – – Programming Language?

March 20, 2019 Posted by Programming 0 thoughts on “What Is the C – – Programming Language?”

C – – is a compiler language created by Simon Peyton Jones and Norman Ramsey that’s intended to be the output of compilers used in high level languages.  A great way to remember the purpose of the language and its relation to C is to think of it as a low level C, hence the double minus. Version 2 of the C – – specification defines the purpose of the language as follows:

  1. C-- encapsulates compilation techniques that are well understood, but difficult to implement. Such
    techniques include instruction selection, register allocation, instruction scheduling, and optimization
    of imperative code with loops.
  2. C-- is a language, rather than a library (such as gcc’s RTL back end). As such, it has a concrete syntax
    that can be read by people, and a semantics that is independent of any particular implementation.
  3. C-- is a portable assembly language. It is, by design, as low-level as possible while still concealing
    details of the particular machine architecture.
  4. C-- is independent of both source programming language and target architecture. Its design accommodates a variety of source languages and leaves room for back-end optimization, all without upcalls
    from the back end to the front end.
  5. C-- is efficient—or at least admits efficient implementation. So C-- provides almost as much flexibility
    and performance (assuming a good C-- compiler) as a custom code generator.

C-- is not related to C, as some may be lead to be believed. C-- is much more related to assembly in that it exposes the word size, byte size, and “endian.”  This means that you can’t easily portC-- code written for one architecture to another architecture as you would be able to with C++, for example. The language also does not come with all the bells and whistles of a platform like JVM or LLVM. JIT compilers and libraries aren’t a feature ofC--. Rather, the language sacrifices features found in higher level languages for versatility. WithC--, a developer can develop their own code generator from the ground up.

Here’s an example of how a developer might implement recursion in C--:

/* Ordinary recursion */
export sp1;
sp1( bits32 n ) {
bits32 s, p;
if n == 1 {
return( 1, 1 );
} else {
s, p = sp1( n-1 );
return( s+n, p*n );
/* Tail recursion */
export sp2;
sp2( bits32 n ) {
jump sp2_help( n, 1, 1 );
sp2_help( bits32 n, bits32 s, bits32 p ) {
if n==1 {
return( s, p );
} else {
jump sp2_help( n-1, s+n, p*n );

If you’ve ever looked at assembly code, you’ll notice the more semantic C-- version of the jump command and the explicit reference to memory with bits32 as opposed to a type reference like int. Though C-- is not C, it’s obvious that it borrows heavily from C in terms of syntax. It’s just important to keep in mind that the strong similarity is merely superficial. The maintainers of the language explain the reasoning behind making C--‘s syntax similar to that of C:

“Many compiler writers have significant experience reading low-level C code; making the syntax C-like helps them benefit from this experience. There are a number of syntactic tweaks in C-- that make it easier to generate than C; for example, every operator has a prefix form, so it’s not necessary to use infix operators.”


In the end, the next time you hear a C-- joke between compiler engineers, you’ll know what they’re talking about.



If you want to learn how to develop in C--The C-- Language Specification Version 2.0 is worth a read.

Please follow and like us:

4 Basic Programming Languages For Beginners

March 19, 2019 Posted by Programming 0 thoughts on “4 Basic Programming Languages For Beginners”

The field of programming can seem intimidating if you’re a newcomer–everywhere you turn, there seems to be yet another programming language lurking. You search on Google and find an article that lists 50 programming languages and you think to yourself, how am I supposed to know which one to choose?

Well, choosing a programming language shouldn’t be your entire focus if you’re a beginner. Your choice in a career will dictate what language you should learn, for the most part. For example, if you want to design websites, you should learn JavaScript and a scripting language like Python. Still, since you’re an absolute beginner when it comes to programming, it may be better off to forgo learning these languages until you truly understand what programming is all about.

In other words, you should learn how to cook before you worry about fancy tools; because languages are just tools used to solve problems and a good programmer knows what tool is best suited for a particular job. To become a good at programming, we should start from the basics. Below is a list of 3 basic programming languages for beginners.

It’s important to note that some of the basic programming languages here were defined as such due to the opinions of researchers and teachers. To define a language as being a basic programming language for beginners we also considered the context in which the language is used.


CoffeeScript and CodeMonkey

Image result for Codemonkey


CoffeeScript is not “basic” in that developers use this language in serious projects, though CoffeeScript is branded as ,” a little language that compiles into JavaScript.”

That in itself doesn’t make this language a basic language, but, when you pair it with CodeMonkey, you get to code with CoffeeScript in a very basic manner. You’re introduced to CoffeeScript in bite-sized chunks as you learn programming concepts like loops. And as you code on CodeMonkey you actually get to build games.



Image result for scratch programming

Scratch is a block-based programming language that was created by MIT Lab’s Lifelong Kindergarten Group. Led by Mitchel Resnick, the team released the first version in 2003.  Now, as of 2019, there are over 46 million projects shared worldwide.

Scratch is basic in that blocks represent chunks of programming logic in colorful blocks. It’s the bright and interactive interface and the power behind the blocks that makes Scratch different from many of the other block based programming languages.

What makes text based programming languages difficult is not only the syntax, but the amount of code that has to be written before you can see some notable results. Scratch solves that by simplifying animations and game design processes.



Image result for alice programming

According to Randy Pausch, lead developer of the bloc-based programming language, Alice was named after Lewis Carol’s creation: “Carroll was a mathematician, novelist, and photographer. Most important, he could do intellectually difficult things but also realized the most powerful thing was to be able to communicate clearly and in an entertaining way. This inspires our efforts to make something as complex as computer programming easy and fun.”

Alice, like other block based programming languages, uses a drag and drop interface to facilitate easy development. Despite the absence of syntax, the language teaches its users how to build programs using object oriented principles that are often used in text based programming languages.

A key thing to note about Alice is that its interface isn’t as simplified as Scratch. The work environment emulates an IDE. At the same time, the muted colors remove the stigma that block based programming languages have, that these languages are kid-only languages. If you’re above the age of 16 and you’re uncomfortable using something that is clearly geared for kids, you have this option.



Swift and Swift Playgrounds

Image result for swift playgrounds

Swift, a text-based language, is Apple’s proprietary programming language used to build iOS apps. You can learn how to program in that language by using Swift Playgrounds. In some ways, Swift Playgrounds embodies the principles of block-based programming languages because you can make elements move by using “function blocks.” Yet, you still get the practicality of text based languages.

With Swift Playgrounds, you can truly learn what functional programming is all about. You can string a bunch of small functions and put them all into one function that will execute them, you can loop functions, and so on.

The clean interface encourages creativity and exploration. You can go as far as programming drones, so there is room for beginner and advances users alike. For Apple users, the best basic programming language to choose within a user-friendly context just may be Swift.





Please follow and like us:

5 Programming Languages Used To Program a PLC

March 5, 2019 Posted by Programming 0 thoughts on “5 Programming Languages Used To Program a PLC”


Before we go through the 5 PLC languages, let’s briefly mention what a PLC is. Programmable Logic Controllers(PLC) were designed to replace electromechanical relays. Back in the day, you had to get an electrician to risk life and limb to rewire the relays if you wanted to make an adjustment to a line. With the advent of PLCs, electricians were taught how to use programmable logic to make updates.  

Programs that allow for such updates are often written on a PC, and then transferred via cable or USB to the PLC itself. These programs are stored in non-volatile memory to ensure that the processes they are designed to control continue to run smoothly. You don’t want the program that controls prison doors in high security prisons to suddenly be wiped out.

Like any other machine that can execute programs, there are a bevy of languages available to break down into machine code. The languages below have their use cases. Some are great for their simplicity within the context of electromechanics while others are great because of their complexity.

There are only 5 languages that are considered to be standard languages for use on PLCs, according to IEC section 61131-3. Here they are:


Ladder Diagram (LD)

Image result for ladder diagram

image source: Wikepedia


Ladder Diagram is the oldest PLC language. This graphical programming language was modeled from relay logic to allow engineers and electricians to transition smoothly into programming PLCs.

Within Ladder, rungs and rails represent the real world electrical connections. Specifically, the vertical “rails” represent the supply power of the device while the rungs that are connected to the rails are equal to the amount of control circuits.

Input conditions can be written in input terminals, which then impacts the output on the output terminals. The dearth of instructions in ladder logic makes it difficult to model motion or batching–understandably so, because ladder logic strictly adheres to the on/off logic of hard-wired relays.


Sequential Function Charts


image source: inductiveautomation


A sequential function chart is a graphical programming language that mimics a flow chart. You use steps and transitions to get output.

Steps are functions within the program and house events that are activated based on state and other specified conditions.

Transitions are instructions based on true/false values that move you from one step to another.

Branches are used to initiate multiple steps at a time. The branches act like threads where functions can run concurrently.

All of these steps, transitions, and branches are housed in a series of scripts that execute in a procedural manner. The visual nature of the language allows users to monitor processes that both heavily use conditional logic and run parallel instructions. PLCs that are prone to suffering from bottlenecks can be more intuitively maintained and troubleshooted using the chart to follow the logic of the program.


Function Block Diagram


Image result for function block diagram

image source: shneider-electric

Block based programming languages are a type of graphical language that minimizes code into blocks, which allows for a simple way to create executable commands.

FBD in particular describes a function between inputs and outputs that are connected by connection lines. The logic of the inputs and outputs are stored in blocks. The blocks are programmed onto sheets and the PLC scans these sheets in order or by specified connections between blocks, much like procedural languages.

The I/O focus mirrors that of ladder logic. Yet, the code that the blocks contain allow engineers to develop more complex batch control tasks among other repeatable tasks.


Instruction List


Image result for plc instruction list

image source: ResearchGate


This is the PLC’s equivalent to assembly language. This gives you immediate access to the machine itself, which allows you to write code that is compressed and fast. The code is represented in the manner that the language’s name suggests: in a list of commands.


Structured Text

Image result for structured text

image source: contactandcoil


Structured Text  is a high level language designed to program PLCs. This is essentially the C++ of the PLC world. Any PLC that requires complex data handling will most likely use ST.





Please follow and like us:

50 Most Popular Programming Languages of 2019

February 26, 2019 Posted by Programming 0 thoughts on “50 Most Popular Programming Languages of 2019”


Programming languages are sometimes talked about as if they are interchangeable. The C++ engineer may espouse a thousand reasons why her programming language is better than Java or Kotlin. Yet, for most Android apps, a majority of the code is written in Java or Kotlin.

So, within the framework of mobile development, the Java engineer has no time to argue about the pros and cons of her language. The ubiquitous nature of the IoT and the number of developers who are proficient in Java combine to make Java a very popular language despite its known flaws(Kotlin was created as a sort of bandage).

We can conclude that popularity does not necessitate that one language is better than the other. Trends often dictate popularity. For a time, Ruby was one of the most popular languages and its growth positively  correlated with a   rise of coding bootcamps. As coding bootcamps have waned in popularity, Ruby has also waned in popularity. It has now been usurped by Python. And what’s popular now? AI.

Below is the top 50 programming languages so far in 2019 according to the TIOBE index. The software quality company rated these languages by analyzing results from search engines that include the number of skilled engineers, courses, and third party vendors. Description of the languages have been added below.


1 Java

Java is a general purpose programming language that is highly portable due to the fact that compiled code runs on a Java virtual machine.

2 C

C is a low level programming language that translates efficiently into assembly code. Because of this, it is used to write other high level languages.

3 Python

Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace.

4 C++

C++ is a compiled programming language designed for  system programming with performance, efficiency and flexibility of use as its design highlight.

5 Visual Basic .NET

Visual Basic .NET is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework. Microsoft launched VB.NET in 2002 as the successor to its original Visual Basic language.

6 JavaScript

JavaScript is a single-threaded non-blocking asynchronous concurrent language used mainly to create interactivity in web pages.

7 C#

C#, not to be confused with C or C++, is actually a product of Microsoft’s .NET initiative.


PHP is a dynamic programming language primarily designed to create web applications.


SQL is a domain-specific programming language in that it has a singular purpose: to query a database.

10 Objective-C

Objective-C is a general purpose programming  language that was widely used to develop iOS applications before Swift arrived.

11 Assembly language

Assembly Language is a low-level programming language. Only machine code is lower than assembly code. An assembler compiles assembly code into machine code.


MATLAB is a computational programming language developed specifically for MathWork’s software.

13 Perl

Perl is a dynamic programming language that borrows features from C,shell script, AWK, and sed.

14 Object Pascal

Object Pascal is an extension of the Pascal language that was developed at Apple Computer by a team led by Larry Tesler in consultation with Niklaus Wirth, the inventor of Pascal.

15 R

R is a programming language designed for statistical computing and graphics. The R language is widely used among statisticians and data miners for developing statistical software and data analysis.

16 Ruby

Ruby is a dynamic programming language that is often used in conjunction with Ruby on Rails to scale web apps quickly.

17 Visual Basic

Visual Basic is an event-driven programming language that was derived from BASIC. It is no longer updated.

18 Go

Go is a procedural programming language developed by Google with the benefits of a dynamic scripting with the inclusion of a packet management system.

19 Groovy

Groovy is a functional programming language that is compatible with the Java platform due to its similarity in  syntax.

20 Swift

Swift is a general purpose language that was developed by Apple. It is compatible with  Objective-C, which is compatible with C++.



PL/SQL is a procedural language designed specifically to embrace SQL statements within its syntax.

22 SAS

The SAS language is a computer programming language used for statistical analysis.

23 D

D is a general purpose systems and applications programming language that is used to interact directly with the operating system API’s and with hardware.

24 Lua

Lua is a embeddable scripting language that allows for  an all in one package of procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

25 Dart

Dart is a general-purpose programming language used to build web, server, desktop, and mobile applications.

26 Fortran

Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.


COBOL is a compiled computer programming language designed for business applications. It has always been imperative and procedural and has recently become an object oriented language

28 Scratch

Scratch is a visual programming language for kids where blocks are used to represent chunks of code.

29 Scala

Scala is a general purpose programming language that combines object-oriented programming and a functional programming. It’s concise, statically type design addresses the criticisms of Java.


ABAP is a programming language used to develop business solutions using the SAP Application Server in conjunction with the language.

31 Lisp

Lisp is one of the oldest high-level programming languages. Because of its focus on data structures, Lisp was used for data modeling. Languages like Scheme, Closure, and Common Lisp derived from Lisp.

32 Logo

Logo is a general purpose language that provides a watered-down version of Lisp for use in an educational setting.

33 Ada

Ada is a structured, statically typed, imperative, and object-oriented high-level computer programming language, extended from Pascal and other languages.

34 Transact-SQL

T-SQL (Transact-SQL) is a set of programming extensions from Sybase and Microsoft that add several features to the Structured Query Language (SQL), including transaction control, exception and error handling, row processing and declared variables.

35 Prolog

Prolog is a logic programming language associated with artificial intelligence and computational linguistics. It is not algorithmic.

36 Scheme

Scheme, a dialect of Lisp, is a general purpose programming language created at the MIT AI Lab in the 1970’s

37 Rust

Rust is a general purpose programming language that was designed to provide a safer alternative to C++.

38 Kotlin

Kotlin was developed to overcome Java’s major flaws, some of which include raw types and checked exceptions,

39 Haskell

Haskell is a statically typed, purely functional programming language. It’s mainly used for business logic and prototyping.

40 G

A visual programming language used in conjunction with labVIEW(Laboratory Virtual Instrument Engineering Workbench).

41 Julia

Julia is a high level dynamic language designed for numerical analysis and computational science.

42 Tcl

Tcl is a dynamic programming language that is commonly embedded into C applications for prototyping and testing.

43 PostScript

PostScript is a page description language in the electronic publishing and desktop publishing business. It is a dynamically typed, concatenative programming language and was created at Adobe Systems

44 Ladder Logic

Ladder Logic is a programming language that produces a graphical diagram based on the circuit diagrams of relay logic hardware.

45 PL/I

PL/I(or Programming Language One) is a procedural programming language that can manipulate complex data formats.

46 Hack

Hack is a programming language for the HipHop Virtual Machine, created by Facebook as a dialect of PHP.

47 Erlang

Erlang was developed by Ericsson to aid in the development of software for managing a number of different telecom projects, with the first version being released in 1986, and the first open source release of the language in 1998. It’s most noted for its simple concurrency model.

48 Standard ML

Standard ML is a functional programming language that is widely used by compiler writers and computer science researchers.

49 RPG

Not to be confused with the video game genre, RPG is a high level programming language internally used by IBM.

50 Bash

Bash is a command language written by Brian Fox and is used within the Bash Shell, which runs Bash scripts. Confused yet?


Please follow and like us:

Retired Hacker In The 80’s Wrote “Raunchy” Code With BASIC Programming Language

February 25, 2019 Posted by Programming 0 thoughts on “Retired Hacker In The 80’s Wrote “Raunchy” Code With BASIC Programming Language”

After digging through the archives, I pulled up some raunchy algorithms written by an amateur programmer in the 80’s. What’s interesting to note is how amateur hackers back in the 80’s sometimes worked like pulp fiction writers by publishing code to computer books and magazines. The contributor to The Dirty Book was a retired Ham Radio Operator who knew how to write BASIC code on a Commodor PET. To have his submission fit the style of the book, he wrote a “Dirty Word” generator.

Another point to take away is that during the period of the 80’s, especially with the advent of Atari, software and code started moving out of laboratories and into homes where hobbyists would make software on their free time. Whereas you now need teams of engineers to complete tasks, you only needed one coder to sit in their home office and spin up code Bandersnatch-style.

Here’s the BASIC code. The profanity and suggestive terms have been removed and what you have left are funny verbs, adjectives, and adverbs:

Please follow and like us:

Students In Pakistan And Afghanistan Are Learning How To Program

February 22, 2019 Posted by Programming 0 thoughts on “Students In Pakistan And Afghanistan Are Learning How To Program”

Programming is a worldwide phenomenon that has produced some of the most notable apps known to humankind. As more and more citizens expect to be serviced in some way by one app or another, the demand for programmers will only begin to grow. In 2016, there were over 35,000 Computer Science degrees awarded in the United States alone. China and India have also seen a rise in their tech sector and have been considered within the same league as Silicon Valley’s startup culture.

Countries that are not often mentioned when talking about the rise of developers is Pakistan and Afghanistan. Despite the political strife that have embroiled these countries in violence, there are still ordinary students who dream to one day become developers. In order to help make this dream come true, FreeCodeCamp has set up base in both of these countries to teach aspiring students there the fundamentals of web development.

FreeCodeCampKarachi has a Facebook page that welcomes fellow coders to join their program and meetups whether they be male or female. The contributors are students, workers, and entrepreneurs whose goal is to spread JavaScript knowledge to beginners.

In so doing, they’ve make Karachi, Pakistan an incubator for young talent. Experienced coders are paired with those who are less experienced and all the while the values of Open Source development are imbibed into the coders.

The group even has a podcast with topics that discuss women’s roles in tech and breaking down stereotypes among many other social and technical topics.

Just an hour’s flight away, CodeWeekend is creating savvy developers in Kabul, Afghanistan. By combining weekly practise sessions and monthly networking events, CodeWeekend’s organizers are allowing young Afghans the opportunity to achieve success in a country that has been frayed at the edges by war.

It’s appropriate that freeCodeCamp’s symbol is a torch because the non profit organization that has been based in Kabul have been living examples that shared knowledge is a light that overcasts any shadow.

Taking all of this into account, we can see that the world has become increasingly more app-based and wherever you look, there’s someone who now wants to learn to code. Routers and modems have become the highways of the 21st century, spreading information across the globe. Because of this, a web surfer from Indonesia might be reading this article right now.

We’ve become a more connected society. No longer can we turn a blind eye to the suffering of Syrian refugees or the persecution of Uyghurs. Software engineers and their entrepreneurial leaders have forged our ties to places like Twitter and Facebook. There is still a west and a east, but now we’re simply separated by artificial VPNs and firewalls and censorship.

Perhaps learning to speak the same language, the language of code, may finally bring us together. At least a small group of students in Kabul and Karachi are trying to impact their own societies by learning the languages that make the web run.

Please follow and like us: