18 comments

8

I'm rather skeptical of a lot of things that claim that "XYZ language sucks so bad." Truth be told, how bad something sucks is often going to come down to someone's specific opinion, and in some cases, specific beefs. If someone thinks that using direct machine language is a disgusting, barbaric approach, they're going to think that writing code in C and/or non-managed C++ should be a capital offense with no appeal. If someone thinks that interpreted languages are basically a pile of bloated abstraction layers fit only for the lazy or grossly ignorant people who shouldn't program in the first place, they're going to think the same thing for managed systems and scripting languages. People who value mathematical precision will scoff at procedural languages, fans of speed and simplicity will say that functional languages are a pile of brain-bending gibberish. This is to the extent that some computer science professors thoroughly enmired in theory think pretty much all languages that people actually use are abominations, and then wonder why nobody takes them seriously.

No language is going to be perfect, and neither is the software that makes it manifest (e.g. compilers or interpreters). If this eludes you, you are probably going to be in for a rather rude dose of reality at some point.

...except for Prolog, that shit's just plain nasty.

0

Is there a good list of language types and their pros and cons?

1

I would use Wikipedia as the starting point, with their list of programming paradigms, which seems decent on a cursory examination:

https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms

However, you must keep in mind a few things.

First of all, there are a lot of lists like this, and most people have one language type they adhere to and may view the other language types as fit only for barbarians (and in some cases the authors are complete assholes about it, which makes me wonder if they have any idea of what they're really talking about, even if they make good points). Most, if not all, paradigms have a place, even if the author is so obsessed with their own concept of "the right thing to do" for programming that they're willfully blind to this.

Second, a lot of languages are, to some extent or another, hybridized. Sometimes this is done for efficiency, sometimes it's done because the language designers needed or just wanted it, sometimes it's there because the language was designed by committee. Just about every one I've run into has some dominating paradigm, but the others mixed in there may make sure that the dominance of that main paradigm may not be by a whole lot. So the specific languages in question the implementation of the paradigms are important, too.

Third, a lot of languages have many dialects. Some are particularly bad with this, wherein everything from modern object-oriented code to TI-82 code to line-numbered GOTO-infested code from 1977 are all considered some dialect of BASIC. So the individual implementation of the language is also important, and if there is a generally accepted standard (e.g. C99), that is also important.

Fourth, some problem domains just blatantly encourage a particular paradigm. For instance, if for some reason you want very compact code, you may find yourself going to a pure functional language, even though there may be other drawbacks such as performance and stack space penalties. Others may be more oriented towards, say, being able to be changed quickly, as well as established norms, as you'll often find with the scripting languages in web development projects. So even if a paradigm is repugnant for you in terms of regular projects 99% of the time, there is probably a 1% of the time that somewhere, nothing else will fit quite right for one reason or another, no matter how much you may hate it.

So in short this is not a simple problem to approach. Your best bet is likely to learn about the generalities and pick up some familiarity with several different language types (including assembler). Then you'll be better equipped to evaluate what a language actually is, what it's good for, how to write code that uses the paradigm rather than trying to bash it into the syntax so it fits, and have an overall idea of how it does what it's trying to do. Note also that you do not need to LEARN dozens of languages to pick up this much, although a lot of people learn a lot of languages - and understanding this stuff can go a long way to rapidly picking up enough of a language's syntax to have a minimum level of competency in a short period of time.

7

I actually like Java, though it's quite verbose and often annoying because of that, I think it's oddly elegant and full-featured. I enjoy coding Java. Now, fixing other peoples' Java on the other hand...

2

Java brought a lot of cutting edge design patterns and such but Oracle owns it now so ... Burn!

2

Ah crap, I forgot Oracle owned them now. Dang it.

5

I am interested in what this guy uses? If java and .net are such garbage please tell us what what God giving programming does he use?

6

Assembly of course, anything higher level is trash.

2

And even then only 6502 or 68000 assembler. 8086 is nasty.

1

This is really pushing the "anyone worse than you is a noob, anyone better than you has no life" to the corner.

1

Haha, I agree. I'm of the belief, right tool for the right job, and I don't mind Java or .NET.

I'm surprised someone else didn't argue that software is crap, you need to design the hardware to do all your work!

6

I'm a MS hater but C# is pretty decent from what I hear.

3

C# is great. And it's only getting bigger each day.

2

I keep hearing that. Would you say it's better than what Apple puts out? Swift / apple's objective C?

3

C# is one heck of a great language. But the language itself is only partially the reason. It is because of fantastics tools like Resharper that makes developing in C# really fun.

1

It tries to become too many things and in the end it fails in every single thing. It tries to be too generic. Java clients tends to look like created by a hobbyist compared to applications created in their native language for specific devices.

And sadly enough that is exactly what Microsoft is now doing by dumbing down their Office to these stupid apps Office thing. It tries to run on any device but it it sucks on any device.