back to article Q. What's today's top language? A. Python... no, wait, Java... no, C

Among developers, Python is the most popular programming language, followed by C, Java, C++, and JavaScript; among employers, Java is the most sought after, followed by C, Python, C++, and JavaScript. Or so says the 2017 IEEE Spectrum ranking, published this week. IEEE Spectrum, a publication of the The Institute of …

On Another Note

I'm not going to get involved in a 'my language is better than your language' discussion; I've got the battle scars from too many of those already.

What did strike me as a bit strange was characterising a professional institute with a royal charter as "a technical advocacy organization". I wonder if that doesn't sell them a little short. Mad Bob the technology yogi is a technical advocacy organisation, albeit not for any technology that exists, and I'm not sure that's really comparable.

Rosie

3
1

Re: On Another Note

The IEEE has a royal charter? That must annoy the IEE.

3
0
Anonymous Coward

Re: On Another Note

Or even the IET as it's now called... My charter certificate is old enough to say IEE.

I once had a very confusing conversation with someone who hadn't heard of the Institute of Electrical Engineers, but had heard of the Institute of Explosives Engineers. Now like every decent electronics engineer I have blown up various things in my time, but only tantalum capacitors or power supplies. This was an aspect of the conversation that took a while to resolve, via puzzled enquiries about really being allowed to do such things in one's bedroom at University...

3
0
Silver badge

I learned Swift, but it made my head explode.

All Swift learning spilled out.

4
0
Silver badge

BTW, for me the top language has to be Swedish, closely followed by English, and then C. Quite like Tcl and Awk too. Awk because it's awkward, which I like. Never liked C++.

5
0
Vic

Awk because it's awkward, which I like

I dislike awk intensely. But for some tasks, there is no sane substitute...

Vic.

4
0
Silver badge

"I dislike awk intensely. But for some tasks, there is no sane substitute..."

One can use sed as well for quite a lot. Even hairier than using Awk.

Done quite a lot in "sh" as well. (Think this was before Bash, so was more limited. Bourne Shell, as opposed to Bourne Again Shell, if my memory serves me?)

3
0
Roo
Windows

Intuitively awk feels like a mash-up of grep, c-shell and a stream fed spreadsheet. I'd have been curious to find out what drove the authors to produce that immortal chimera.

0
0
Silver badge

Doing as much as possible with as small resources as possible in an interpreted simple language, I would suspect.

3
0
Anonymous Coward

"One can use sed as well for quite a lot. Even hairier than using Awk."

Matters got somewhat hairy when I ended up using sed to generate more sed.... I don't think I've ever come up with something so utterly unreadable to me. Worked though :-/

0
0
Silver badge

Re: "One can use sed as well for quite a lot. Even hairier than using Awk."

That's the kind of programming that gives hair on the chest! (Or is it a neckbeard?)

0
0
Anonymous Coward

anything but python

simply because of the dumb fucking idea of spaces.

15
4
Silver badge

Re: anything but python

You can tell it to rely on parentheses rather than indentation - comes in handy when doing things like keyboard/mouse handlers and other complicated things that just wont be broken down into smaller functions in a desperate attempt to fit in 80 chars. I can only thank god that no-one has written a python ASP thing like PHP - imagine following indentions down through that code!

0
0
Anonymous Coward

Re: anything but python

I wish I could upvote you a million times. Significant whitespace has to go down in history as one of the dumbest decisions ever (along with the GIL).

The reason is simple. Your code becomes nightmarishly difficult to refactor. Refactoring is one of the most important tasks in large scale software development since it allows your design to develop with the changing use-cases. But when you have to be ridiculously careful about making sure that things end up at the correct indent level it becomes a nightmare problem. The number of times I've fixed someones bug where they accidentally changes the indentation of the last line of a loop or similar.

Personally, I would have had a terminating token for the end of functions/loops, but made it a syntax error to have invalid indentation. That way after a refactor you can use your editor/IDE to fix the indentation.

I have a few other Python gripes - one of the biggest being the absence of a perl-like use strict type construct. If you have ever had to debug a problem where a thread dies due to a syntax error in a little used code path, you will totally get my annoyance.

Incidentally, and without wishing to start a flame war, my favourite language is C++, and I think Julia is the one to watch for.

12
2
Silver badge

Re: anything but python

Seconded, Python is horrid.

Plus there's no such thing as Python. There's Python 2, and then there's Python 3. Which one to use? Solving this by going polyglotal is madness.

2
2
Silver badge
Happy

Re: anything but python

@AC

I went to upvote this post and got the following response

"Oops. Alert the Moderatrix - the coders need whipping"

...my internet connection had dropped

2
1
Silver badge

Re: anything but python

> I can only thank god that no-one has written a python ASP thing like PHP

http://www.4guysfromrolla.com/webtech/082201-1.shtml

0
1
Silver badge

Re: anything but python

> But when you have to be ridiculously careful about making sure that things end up at the correct indent level it becomes a nightmare problem.

I don't have problems with that, but then I have chosen tools, and configurations of those, that would seem to be more appropriate than the ones that you are using.

> If you have ever had to debug a problem where a thread dies due to a syntax error in a little used code path, you will totally get my annoyance.

Syntax errors are discovered during the load/compile phase so you are probably referring to something different. There is usually an exception trace produced unless you deliberately ignore exceptions.

3
1
Silver badge

Re: anything but python

> Plus there's no such thing as Python. There's Python 2, and then there's Python 3.

What's your point? There is Java [1], Java 2, Java 3, ..., Java 8; C++ 3, C++ 11, C++ 14, C++ 17.

0
1
Anonymous Coward

Re: anything but python

I've not used python 3 yet because I haven't had to, but it would appear to be very different from 2.

I hate the whitespace thing too. Syntactically, c and Perl have always made the most sense to me.

1
0

Re: anything but python

>> What's your point? There is Java [1], Java 2, Java 3, ..., Java 8; C++ 3, C++ 11, C++ 14, C++ 17.

Yes, but by & large they have backward compatibility. At least java does. I haven't touched C++ in years but as has been amply pointed out in this thread (I'm paraphrasing a bit) "You can write K&R C in any language" (including C++ last time I checked) at least with a few gcc flags and ignoring the warnings; . This is *not* true of Python (or for that matter, my own favorite scripting langauge perl, though in fairness I'm guessing that the vast majority of all perl ever run in production anywhere was perl 5.x).

My $0.02.

2
0
Silver badge

Re: anything but python

> Yes, but by & large they have backward compatibility.

Yes, but it is only "by and large". When moving from one version of C++ or Java to the next there will always be some issues which need resolving, except in trivial code.

Python3 is a new version of the language designed to be a significant improvement. Python2 is still developed and supported and has 'futures' and other tools to ease the transition to the new language. This has been done by numerous languages: extreme examples are: Pascal to Modula2; VisualBasic - numerous times;

Python3 vs. Python2 should be compared to Kotlin vs. Java. Kotlin is designed to make Java into a modern language and drop 22 years of baggage that it still carries. C++ has 36 years of baggage.

> "You can write K&R C in any language" (including C++ last time I checked)

Actually you can't. K&R C (edition 1) was replaced by ANSI C and few modern C/C++ compilers support the original K&R (though gcc may still do so). And that is hardly "any language".

And I don't know that anyone said that; what they did say was "You can write FORTRAN programs in any language", which is quite a different thing.

0
1
Silver badge

Re: anything but python

> c and Perl have always made the most sense to me.

Python 3 does have differences from Python 2, but Perl has been through several rewrites, each of which were incompatible which previous version source code. If Perl makes "most sense" then you obviously never used Perl4 and haven't looked at Perl6 because these are quite different languages.

https://docs.perl6.org/language/5to6-nutshell

0
1
Anonymous Coward

Re: anything but python

I was talking about two different things...

0
0
Silver badge

Note that there were "popular" shitty languages in the past

Like PL/1 for example, a language trying to do "everything".

Here's a review of it:

https://plg.uwaterloo.ca/~holt/papers/fatal_disease.html

1
0
Silver badge
Unhappy

Re: Note that there were "popular" shitty languages in the past

and there are a few in the present - like "C-pound" which relies on ".Not". Both equally shitty.

I think Python has its uses, but is ripe for ABuse and I see this in poorly written DJango code (and imported objects) INCLUDING the DJango implementation itself.

And too many people say "Write that in Python" or "I can write that in Python" when it SHOULD be done as a C utility, at least for efficiency. [converting binary data in python is the *WORST* possible implementation I have *EVAR* seen, because Python is afraid of pointers and C-style structures, apparently, and YES, I'm currently tasked with maintaining code that actually *DOES* this, because python 'expert' did a rage-quit].

0
1
Silver badge

Re: Note that there were "popular" shitty languages in the past

> "I can write that in Python" when it SHOULD be done as a C utility, at least for efficiency.

Not all C programs are efficient. I wrote a text merge program in C. It was quite slow due to the str..() library, in particular strcat() having to scan along the strings to get the length. A rewrite in Python was 10 times faster.

0
1
Silver badge

Re: Note that there were "popular" shitty languages in the past

Not all programmers know how to write efficient code in C.

FTFY, no charge.

0
1
Gold badge
Trollface

OT. Way to get a C dev to fall in love with another language.

Simple. Let them take a pointer to a procedure (or function) and put it in an array in that language.

Which (IIRC) even Ada allows (called "reference" variables), but strongly discourages.

Give them that, and at least 8 character variable names and they're yours.

They'll even tolerate garbage collected memory

3
0
Silver badge
Mushroom

Re: OT. Way to get a C dev to fall in love with another language.

> They'll even tolerate garbage collected memory

NEVARRRR!!!

10
0
Anonymous Coward

Re: OT. Way to get a C dev to fall in love with another language.

void *my_functions[100];

or in C++

std::array<std::any, 100> my_functions;

if you want to be particularly smart, wrap it in a simple class that has a std::enable_if that only allows you to store things for which std::is_invocable is true...

3
0
Gold badge
Unhappy

They'll even tolerate garbage collected memory. NEVARRRR!!!

I did say tolerate.

"Liking" is a bit too much to ask for, given the loss of absolute control.

But I may have been a bit too optimistic there.

0
0
Silver badge

Re: OT. Way to get a C dev to fall in love with another language.

return_type (*array_name[])(parameter0_type, parameter1_type, ...) = {function0, function1};

Works fine. Eve's C compiler was limited to 8 letter variable names because of the limited storage capacity of flint chips. Ancient Greek clockwork compilers allowed arbitrary length identifiers, but only the first 63 bytes were significant.

1
0
Silver badge
Pirate

Re: OT. Way to get a C dev to fall in love with another language.

'std' class template-based implementations are HIGHLY overrated. They try to be too much, are sometimes collection (instead of array) based, have some cryptic built-in requirements for memory manager objects and other irritating things, and can be best re-implemented in only a few lines of code by someone who knows what he is doing (like me).

But the C++ language doesn't require 'std' usage so it's all good. I think that the 'std' class templates were written by "Academic Arrogance" types that haven't coded in production EVAR in their entire lives, nor had to MAINTAIN someone else's crap-code. So they're clueless about the real world. And it's reflected in the design.

pirate icon, just because I'm a rebel

1
1
Anonymous Coward

Xcode / Swift

I've decided to start learning Xcode / Swift, only as a hobby mind. If that leads to the ability to work from home and be on better wages than I'm on now, perhaps I need to ramp up my speed of learning it! Would welcome comments from anyone with knowledge about this language and career prospects.

0
0
Anonymous Coward

Broken link http://spectrum.ieee.org/ns/IEEE_TPL_2017/index/2017/1/1/1/1/1/25/1/25/1/50/1/25/1/25/1/50/1/25/1/25/1/100/1/100/1/25/1/40/

0
0

Any language where whitespace dictates what is inside a conditional and what isn't (eg Python) needs to die a slow and painful death IMHO.

12
4

You mean the creators of such languages need to die a slow and painful death.

The language itself can't die fast enough...

6
1
Silver badge

> Any language where whitespace dictates what is inside a conditional and what isn't (eg Python) needs to die a slow and painful death IMHO.

No one cares if you don't use Python (unless your managers do). If you are forced to use it, then get better tools and learn how to use it better.

In what way is 'what is inside a conditional' not determined by the colon that terminates it. Perhaps you are thinking of some other language.

1
2
Silver badge

@Clive Galway

Could be worse. Imaging what could go wrong if a language allowed:

⎵⎵⎵⎵⎵⎵⎵⎵if (is_elephant(animal))

⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵if (is_white(animal))

⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵white_elephant(animal);

⎵⎵⎵⎵⎵⎵⎵⎵else

⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵⎵not_elephant(animal);

0
0
Silver badge
Devil

"Any language where whitespace dictates what is inside a conditional and what isn't (eg Python) needs to die a slow and painful death IMHO."

I just think of it as 'Allman Style' without the curly braces

https://en.wikipedia.org/wiki/Indent_style#Allman_style

And if you put the ':' right after the control statement, it doesn't look a THING like K&R style (which I HATE)

(and I also dislike hard-tabs, so multiple spaces are fine, and pluma does auto-indent, and highlights things in a readable manner)

0
0

I meant what is inside the code block, not what is part of the condition.

numbers = [2, 4, 6, 8]

product = 1

for number in numbers:

....product = product * number

product = product * number is only part of the loop because of it's indenting. This is what I was referring to.

Trying to post some Python code somewhere that does not allow indenting (I cannot figure out how to do it on this site, even pre blocks strip out leading whitespace) and you simply cannot post valid code.

What happens if somehow you end up with source that contains spaces and tabs? The code could then surely APPEAR to mean one thing, but in fact means something completely different.

2
0
Silver badge

> Trying to post some Python code somewhere that does not allow indenting ...

That is not the fault of the language, but of the site. This site recognises &lt;code&gt; and &lt;pre&gt; tags but fails to implement them in a useful way.

> What happens if somehow you end up with source that contains spaces and tabs?

You fire the programmer and/or get better tools and/or use how to configure them.

> The code could then surely APPEAR to mean one thing, but in fact means something completely different.

Like in C:

total=0;

j=0;

for (int i=0; i<10; i++)

....total+=i;

....j++;

0
4

Nothing like C.

With C, the rule is that if the conditional has no braces, then the first line after the condition is in the block and nothing else.

Whitespace in this case is utterly irrelevant

1
0
Silver badge

>> The code could then surely APPEAR to mean one thing, but in fact means something completely different.

> With C, the rule is that if the conditional has no braces, then the first line after the condition is in the block and nothing else.

Exactly. That is why my example in C was illustrating that "the code could then surely APPEAR to mean one thing [according to the indent], but in fact means something completely different."

0
0

Write it out in mnemonics, translate ,by hand,from memory to opcodes (hex notation) and send it directly into unalterable masked read only memory. Should work first time right.

Anything else is for wannabe's.

ps: use lots of absolute jumps (GOTO) and globals with hardcoded addresses just to piss off the modular/reusable crowd.(because such programs run much faster since they don't have waste cpu cycles pushing and popping stuff onto/off the stack and moving data)

5
0

quote: use lots of absolute jumps (GOTO) and globals with hardcoded addresses just to piss off the modular/reusable crowd.(because such programs run much faster since they don't have waste cpu cycles pushing and popping stuff onto/off the stack and moving data)

Heh. Exactly what I am doing. Ruby has crappy garbage collection. Unwrapping some of the loops can also work well.

1
0

Coding 54 years

Started when 13 on a Bendix G-15. A machine with little glass tubes filled with nothing. Writing code that resembles BrainFuck. Grew up spitting distance from the Valley. Moved on to Fortran at UC Berkeley and also studied psychology since I wanted to get into AI. AI still doesn't exist.

Moved on to BASIC but quickly dropped into machine code for the speed. Then figured out how to overclock everything. Designed and built bit mapped video cards before the concept existed. Rewrote the BASIC interpreter. Wrote a little program called DamBusters for the PET as well as some others. Published in Transactor. Worked on the computer side of Xerox and also met with Gates and others at the first Computer Fair in San Francisco. Most likely was watching Jobs helping himself to everything he could at PARC.

Since then have worked with various languages but am mostly interested in anything to do with graphics. Python works well in that respect. Have helped to develop the AutoCAD 3D turbulence modeling. C is OK but don't need the speed for what I am now doing. Have figured out how to do brain mapping using Ruby along with some cool sonification using Sonic-Pi.

The thing that gripes me the most is the FLAT everything. If it is a button it should look like a button. It is all about users. Thinking like a user isn't easy. I have been teaching users for many years. I developed the very first computer science course for Thompson River University back in the early 80's.

9
0

Re: Coding 54 years

"AI still doesn't exist"

Of course not. It's to be expected, as natural intelligence barely exists and was some 4 billion years in development.

3
0
Anonymous Coward

Fermi/Fermats last theorem ...

I suspect that Fermat was wrong, and if we had a chance to see his much vaunted proof, we would have found it flawed.

0
0

Page:

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Forums

Biting the hand that feeds IT © 1998–2018