Ten top programming languages 2017 - IEEE

Can confirm, I’ve spent the last two weeks writing python tools that are solely for internal use. It’s a great “glue” language. Definitely wouldn’t say it’s just a west coast thing. Might be a bit more of a startup thing though :stuck_out_tongue:

Python is also popular as a MATLAB alternative that doesn’t require selling kidneys to get.

Have always thought of Python as a “jack of all trades, master of none” kind of analogy but it excels other languages in some key ways.

  • It arguably has the easiest syntax of any of the languages listed
  • Has a massive library support for all kinds applications, (web applications through, data analysis, and even embedded systems if you consider Raspberry Pi)
  • Doesn’t have the overhead required by some languages (eg. JVM)
  • Is pretty much the go to languages for machine learning
  • Free/Open Source (I’m looking at you Matlab)

Python and Ruby have GIL which matters to multi-threaded applications:

https://www.google.com/url?sa=t&source=web&rct=j&url=http://www.dabeaz.com/python/UnderstandingGIL.pdf&ved=0ahUKEwjfyvKchJvVAhVj54MKHVJ1DgUQFggpMAE&usg=AFQjCNHxiCHDRmBCgAtB8FmRDlYwlPqeeg

Have a lot of fun with both but this detail matters in some high performance cases.

Have a look at Octave.

As noted above, Python isn’t used much for writing applications, but everybody I know who does system adnimistration or similar activities uses it, and it is the “official” application scripting language of a number of technical applications. It seems to be replacing shell and perl as the go-to language for maintenance, administration, and “glue” scripts.

But Matlab to Python? Their domains of high applicability don’t seem to have a whole lot of overlap.

I would beg to differ, for example:

Bank of America uses Python heavily for banking applications.

http://thegatewayonline.com/technology/technology-at-a-bank/bank-of-america-merrill-lynch-become-part-of-the-quartz-community

Python is also a common tool for system configuration management through SaltStack/Ansible and is a key element in dynamic compute cloud API tools like Boto.

I was busy earlier today in PyODBC sitting on top of UnixODBC/LibMyODBC writing a DSN connected MySQL application for a healthcare company. That company uses a mix of Java/R/Ruby and Python. The MySQL backend is in a private Amazon RDS instance running MySQL because of a compatibility issue with Aurora.

I often use Flask for quick and dirty internal REST services.

Note: I do not work for Bank of America or Amazon but I have a professional relationship with both.

Correction: It’s not a programming lanugage strictly speaking. It’s a markup language. Still a language.

For Python, if you use the multiprocessing library, you can get around the GIL.

I love AWK also, it’s my goto language for something I need to do as quick and dirty under 100 lines. For people that use it all the time it is amazing how much you can get done in a short time (and a few lines of code)

I’ve been doing more and more with Lua since it’s showing up imbedded in lots of software as a scripting language. The guys that run the Lua project are pretty keen on not adding a lot of cruft to the language. Lua has a feature that I like, a function can return multiple values.

Is there a strong argument against that feature (multi var returns)? Why dont we see it implemented in more languages?

I could see how it might lead to “lazy” programming (where objects could be used properly to obtain similar results), but I see the laziness arguments as a moot point since programming is all about getting the most done with minimal time. Maybe its not as clean/easily documentable? But with LUA thats fine since LUA is a “glue” language as someone above noted.

A Python function can return a container object that can be unpacked and it easily unpacks as a tuples.

Looks like:


def myFunction():
  a = 1
  b = 2
  return a, b

c, d = myFunction ()
# c equals the value of a, d equals the value of b

This trick can be done in many languages with array, list, dictionary and containers being returned from a function. It is not lazy but it should be carefully QAed because depending on how it gets packed and unpacked, referenced or otherwise it may behave strangely. It works well in Python. Lots of other professionals and myself use it often. It works in both Python 2.7x and Python 3.x.

Multi-threading is single process: lighter weight, lighter I/O, implied scope.

Multi-process by spawning through the OS adds memory, I/O and depending on IPC selected could have greater attack surface. Plus if you kill a process consider how it degrades.

Not to say this is not a great library but it does not really address the GIL threading issue in the most elegant way.

Apache can call Python in a CGI script behind a website as well but then each user has their own 20MB of Python interpretter running.

Data science… Yeah, R exists, but you don’t have to use R when libraries like numpy, scipy, and tensorflow exist for Python. You can also use Python in some high-spec embedded systems, instead of C/C++ or Java or Rust, which admittedly is quite rare, but it does exist.

Why do you say C++ “should” be number 1? It isn’t beginner friendly, most schools use C (or just pure ASM) instead of C++ for low-level classes, and in the modern age of web 2.0, C++ is only used as the building blocks of things like Node.

Anyway, here are some relevant stats, maybe more relevant than IEEE: Stack Overflow Developer Survey 2017

I think Python killed Perl a long time ago.

MicroPython is a thing too. It can run on MCUs like the ESP8266 or Atmel ATSAMD21-based processors (ARM Cortex M0) among others. While those are both 32-bit processors, they are both pretty common in embedded applications. And they are not exactly high-spec, at least compared to a Raspberry Pi Zero or something along those lines.

And more things like this are coming out. This PYNQ board is a Python controlled embedded platform with an FPGA on it.

Goodness, you drop in every now and then with a doozy. I’m looking closer at Octave now. I was warped as a programmer by learning APL first…

Thanks for the pointer to Octave … Should be fun to work with!!

Microchip ATSAMD21

We bought Atmel over a year ago…

Watch for the D50

You’re right - I incorrectly paraphrased a paragraph in a similar IEEE article with the same title: http://spectrum.ieee.org/computing/software/the-2017-top-programming-languages. Thanks for pointing this out.

I’ve programmed in 6 of those:

  • C (mostly on Atmel AVR, some CLI via GCC)
  • LabView (back when I was in FRC, 2011, loved it)
  • HTML (for a high school assignment, I use a lot of vBcode which is a derivative so that kinda counts too???)
  • Shell (linux and windows/dos, various things)
  • Ladder Logic (Heavily in my current job, love it, I’ve done mostly Mitsubishi (GxDeveloper and GxWorks2) with some Automation Direct(Koyo) and Oldschool AB RSLogix 5 in college)
  • Arduino (hated it, libraries are nice but I much preferred straight up C)
  • Assembly (not counting it, very limited programming experience)

And the ones not listed

  • INFORM II (Motoman/Yaskawa Robot Language, based on BASIC, Love it.)
  • AS Language (Kawasaki C-series Robot Language, hate it, wildly obsolete but the robots still dance to this day)
  • Solder (my first and many times favorite language :smiley: )

Of those, for work it’s all Ladder and Robot Programming/teaching, then again, I’m an Industrial/Automation engineer (electrical and mechanical), not a software developer. Programming isn’t just for computer science.