What programming language would most likely be used these days?

I thought this thread was going to be about the recent IEEE Spectrum rankings, but then I saw it was a revived zombie and that the reviver was going to link to the rankings … Oh, well.

Anyway: Some actual data.

Java is the winner but overwhelmingly for Android purposes. In short, mobile devices are the big growth field for programming by a very long shot.

Note that the list is odd in its groupings. It throws assembly languages into one lump. Ditto “shell”. Arduino gets its own listing, etc.

My career has seen Java change from the “neat, new language” to the “old standard language”. I personally always recommend it as an “Object-Oriented Beginner” language – for learners who know basic “this is a variable, this is an ‘if statement’, this is a ‘for loop’” programming, but not OO.

Pretty sure most of those old fart “Real Programmers” are dead or retired by now.

Why would you not recommend it for OO?

leahcim is saying he would recommend Java as a first introduction to OO for learners who are familiar with other programming but not yet familiar with OO.

Yes, exactly that. :slight_smile:

Core Java is a simple, basic OO language. None of the painful boilerplate from C++, nor a lot of the syntactic sugar that makes professional programmers’ lives easier, but impedes learning.

Ok, I understand now.

Most, but not all. I have “Here sits Mel” written on the top of my whiteboard.

Hey!
I learned to program on the LGP-21, the next generation of the LGP-30 mentioned in the article, and one of my early programs on it was a tic-tac-toe program which fit into the copious 4K memory of the beast by switch a bunch of adds to subtracts when going from figuring out its move to the opponents move. On the fly. The program started with an initialization routine to make sure the adds were adds.

Though I did write in Pascal and taught Pascal. My dissertation consisted of rewriting Jensen and Wirth’s original Pascal compiler into a compiler for an object-oriented microprogramming language I designed.
But I suppose I wasn’t a real programmer since I knew both my wife’s name and the ASCII character set by heart.

Aside from syntax, how does it differ from Visual Basic? I was thinking of relearning VB, and I bought a beginner’s book and downloaded the free compiler. Should I just chuck it and learn Java instead? There’s a job I really want at a ski lodge in Oregon, but I’m only partially qualified for it. It’s mostly running a small 60-client Windows Server network. I figure knowing basic database skills wouldn’t hurt, so I’m teaching myself SQL as well. Is VB still useful for writing front ends for database administration purposes? It’s been a long time for me; I haven’t written a line of code in over a decade. I feel as if I’m almost starting all over again.

For back end record processing? Well yeah, Cobol (with embedded squeal).

I inherited some code in Erlang. I’ve had to make a few changes to it, but haven’t had time to actually learn the language. How well do you know it? Got any favorite tutorial that I might want to lean on?

(I’m an old school Unix kernel ‘C’ guy, pretending to write in C++ these days)

friedo. This is the first I’ve heard about Go. Do you use it?

Go is my main language, I have about 3.1k Stack Overflow rep almost entirely answering questions about Go. If anyone has any questions about it, I can probably answer them. (Except questions pertaining to the current market adoption of the language, which I don’t have a great pulse on).

You’ve probably researched this already, but make sure you look up GOMAXPROCS, simply calling the go command doesn’t launch a new thread, it’s a common newbie mistake. (Go uses a dynamic N:M threading model).

Jragon, what type of applications do you write in Go? What platforms? What language would you code in if you didn’t code in Go? - Thx.

Another old-timer here. I actually rebuilt an LGP-30 and learned to program it. Also a CDC 160A (with the optional math unit). Then on to Data Genera Nova, IBM 370, PDP-11, and VAX. What little programming I do these days is generally C on FreeBSD (mostly I do architecture these days).

There is no single answer to the question as posed. Fastest execution? Fastest to get a proof-of-concept written? Is it important that the program run on a specific system (for example, if the target is an Android phone, MUMPS is probably not a good choice). Is the algorithm unique enough that it represents most of the value (as opposed to the implementation)? If so, an interpreted language is probably not a good idea. Are you doing this just to mind-warp other people (if so, consider INTERCAL).

In many cases, the answer is “whatever gets it done”. But beware of taking that too far - this is an overly-cynical view of what can happen, but it isn’t totally off-base.

I don’t know that much about VB, but if is like other Basics I’ve used, the main differences are:

[ul]
[li]Static typing – variables have a type declared at compile time and any values contained in those variables must be that type (and conversely, is guarenteed to be that type).[/li][li]Object orientation – Every bit of code is associated with a class as part of a method on that class.[/li][li]Just generally more “structure”.[/li][/ul]

Object orientation is the big conceptual thing when switching to Java from a less-structured language. To give a grossly oversimplified broad overview, OO programming involves a lot more definitions of new types to model your problem domain, as opposed to just sequences of “do this, then do this, then do this, &c”. This pays dividends for large projects, but can be annoying for very small ones.

For that, I would stick with VB. You can do anything in Java, but there isn’t any particular thing that is particularly easy. As I understand it, VB is made for little GUI front ends, and if that’s what you’ll be doing with it, that’s the tool you need.

Instead, Java adds its own mountains of boilerplate. :wink:

It’s a good idea to know Java these days, but of all the reasons to recommend it, its OOP support is not one that springs to mind. What I’ve generally seen is that Java programmers (especially young kids fresh out of school who did most of their learning in Java) have come away with the fairly horrifying idea that “OOP” means “uses classes.” Java’s design decision that everything must go in a class leads to a lot of clunky code, and teaches beginners a lot of bad habits. These days Java’s really a dinosaur; the COBOL of our era. It has become a widely supported and productive platform, but in terms of language design, it was outdated even in the 90s, and it has not aged particularly well.

My advice for beginners would be to start with something easier and more modern, like LISP.

Just build a shitty Rails app and abandon it like everybody else does.

Assuming this isn’t a whoosh, the Java specification was released in 1995. The Lisp specification was released in 1958–it’s almost the oldest language still in common use. And in my experience teaching people programming, the only people who find Lisp/Scheme easier are people with mathematics degrees who don’t like state because it means they have to think of more one-letter variable names.:slight_smile:

ETA: More seriously, it’s been my experience that teaching people who know C-class languages (C, C++, Java, Objective-C, C#) Lisp is fairly easy. Teaching folks who only know Lisp a more conventional language basically involves starting from scratch. I know Scheme, in particular, is academically popular (like Haskell), but they’re pretty much useless in the commercial world unless you’re going into a few specific academic fields.