What programming language SHOULDN'T you learn?
6 30 Sep 2016 04:02 by u/Omnipresent
What language do you recommend one should not bother learning, and why?
6 30 Sep 2016 04:02 by u/Omnipresent
What language do you recommend one should not bother learning, and why?
61 comments
9 u/BakedMofoBread 30 Sep 2016 04:23
Brainfuck
2 u/GrislyAtoms 04 Oct 2016 02:43
I guess this probably goes for all of the languages listed on Esolang?
7 u/Morbo 30 Sep 2016 04:24
Whitespace
4 u/brownja 30 Sep 2016 12:52
I started out using FORTRAN. My mentor at the time said "don't ever learn COBOL".
His reasoning was that it would be too easy to get a job doing boring and stupid business programming and that I'd never do anything interesting again.
He was right. I didn't learn COBOL, but RPG instead (it's like COBOL without vowels). I've been making a good, easy, living for almost 30 years, but it is boring.
3 u/omegletrollz 01 Oct 2016 15:14
Perl: as stated in a recent article posted here about the while statement (which I can't find because Voat search sucks) Perl has tried very hard to offer absolutely every possible coding mechanism ever offered by any other functional language. The result is that everyone writes code in their very own way and comparing person X's code to person Y's code could make you believe they're actually different programming languages. In-line regular expressions, operator overloads and implicit variables are just a few examples out of many that makes Perl one of the hardest non-crypto languages to read.
If you're looking for a scripting language Python, Ruby and others are actually sane alternatives - Python even has as one of its core design principles that There should be one-- and preferably only one --obvious way to do it - which seems to me as a direct jab at Perl development history. For the same reasons I'd say people are better off using
#!/usr/bin/python3than BASH when doing their Linux scripts. I know I do. Lua is also a lightning fast and embeddable scripting language for your projects.Here is an example line of Perl code, taken from their regex guide:
PHP: If you look at PHP's premise you'd think it's all good, right? A templating language that is super fast for the web. Right? Right but it has a lot of problems. It's a way more low-level language than it should be for working with the web (many of it's core functions are just direct calls to C standard library, which is crazy and super outdated nowadays) - this alone means silly web developers will try to use it for a ton of backend processes that really shouldn't be done in a templating language.
The major problem for me is the userbase though - PHP developers (the big frameworks you'll end up using with PHP included) can't help but repeatedly choose the weird and bug-prone ways of implementing things instead of good design, which results often in hard-to-debug errors and weird situations you just can't seem to get away from. I'm not a huge PHP coder though I've done my share but it seems to me that when the entire community has to quirk around a language then that's either the language's fault for making this easier to do than to create proper code or even for allowing it at all! Also there are a ton of crash courses promising "good IT money" and will teach you basic PHP, which means the market is flooded with Wordpress projects that are crap-full of copy-pasted boilerplate code where none should be, which the creator just puts up and gets the money from the client but it's impossible to maintain later on - which means it will fall on your hands instead once it needs more work and you'll have to do it all over again and explain to the client why it's even more expensive doing so than the few hundred bucks he paid to get the site up to begin with.
Again, there are dozens of modern scripting languages and frameworks that are better alternatives to PHP. Practically every language now has a templating framework, from Java to Python - just pick one you like and let me know what's your favorite alternative since the jury for templating is still open for me. Much more flak on PHP if it's your favorite language and you're thinking welp this guy is being a bit too harsh http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
1 u/RevanProdigalKnight 05 Oct 2016 02:27
How to shoot yourself in the foot using PHP:
2 u/RidinMyGoatCart 30 Sep 2016 04:13
Haskell, it sucks
0 u/hereonachair 30 Sep 2016 14:22
I like it.
2 u/captbrogers 30 Sep 2016 05:15
I'm before PHP is brought up.
But seriously listen to SamBone, he just laid out some great wisdom.
2 u/SwiftLion 30 Sep 2016 12:00
Basic and visual basic. They were so watered-down that they were really for, "If you're never going to learn to write software, learn this instead, and you can get along".
1 u/Empire_of_the_mind 30 Sep 2016 04:17
LOLCODE
1 u/raydeen 30 Sep 2016 06:20
I don't know. Lolcode is actually pretty fun.
1 u/Atarian 30 Sep 2016 04:38
Java.
It's fucking horrible.
1 u/Omnipresent [OP] 30 Sep 2016 04:42
What makes it horrible? How does it compare to perl, python, c?
1 u/rwbj 30 Sep 2016 05:27
Java is fine but outdated. You can do more in C# and you can generally do it far cleaner. C# played catchup for the early part of its life, but for years now Java has been playing catchup to C#. And Visual Studio is more or less built around C# and vice versa. Java, last I was using it, is severely lacking in the IDE department. As just one small thing building a GUI in Java vs one in C# is just night and day. C# also plays much nicer for those instances when you need to break out of idiomatic C# and go native, execute unsafe code, etc. Java is basically idiomatic or GTFO.
And something not at all directly related to the language, but the original style guidelines for Java suggested the god awful brackets on same line as statement/declaration style. For the life of me I cannot figure out why a single person would ever like this. You save a line of white space, which has no tangible value, in exchange for a substantial penalty to readability which has a massive value. Why? WHY?? This legacy still carries through to many projects and it makes my eyes bleed.
2 u/hereonachair 30 Sep 2016 14:20
Object Oriented programming is cancer.
0 u/Omnipresent [OP] 30 Sep 2016 20:21
Why do you say that? Honestly asking.
2 u/hereonachair 30 Sep 2016 21:02
OO was invented originally as a system of abstraction that could be used to attract people to computer science programming and that could be explained/sold to the business people who are sponsoring projects which don't understand the technical side at all (just like things like Agile and etc are now.) It was very convenient because it "solved" both these problems well, because it related abstract computational entities to RL entities like cars/bicycles and their parts.
Unfortunately like most multi-purpose solutions it is actually a poor solution for at least one of its intended problems, in my opinion it is definitely bad for the programmer, here are some examples of why I think it's bad.
Classes: They serve both as data-types and modules. It doesn't make any sense from computer architecture standpoint and little sense from RL standpoint too (which is supposed to be the selling quality.)
Yes, bicycles have wheels and stuff, but bicycles don't have "methods". "Driving" isn't a property of a bicycle it is an abstraction over its intrinsic physical properties. If the block of the bicycle class is meant to represent stuff that a bicycle has, the internal state of the bicycle should be logically separated from the functionality it's capable of.
From the technical standpoint it doesn't make sense either. The default elements of programming are datatypes and functions. Functions are blocks of data that can be executed, datatypes are look up tables into data that describes the properties of the datatypes. A Class defines both a type and functions. Functions are united together into modules which are a good abstraction over the program memory of the program. Datatypes are compile-time elements, while data objects are pieces of memory that are meant to follow the properties of the corresponding data-type. But in OO if I instantiate an object of a certain class it seems like you also instantiate the methods corresponding to that class. that would be horrible inefficient and in reality it does work the same way as in imperative or functional programming (tables of function pointers) however it doesn't change the fact that a "Class" is a concept that's overloaded it's both a data-type and a module, this makes it a bad abstraction for programming.
It is true that Interfaces are meant to alleviate this problem, but the fact that you can define method prototypes in classes and not just interfaces opens up the possibility for poor programming style.
Will continue later.
Continued: another problem with OO is that the facility for generics are abysmal. Basically the object you're calling a method on can be generic but no other parameters easily can with any useful guarantees. The reason this is a problem is ultimately because object methods have ownership over their methods, but the type parameters of the methods don't. This is a problem that interface don't fully fix either.
Subtype polymorphism or inheritance (the signature feature of OO) is also very limiting. It forces you to implement methods youll never use or to refactor inheritance hierarchies frequently, as a result its best not to use inheritance hierarchies as little as possible and just rely on interfaces which are quite limiting in comparison to some of the features other languages have like typeclasses.
2 u/Atarian 30 Sep 2016 19:35
Semantics for one. The language is not fun to program in. There's oodles of boilerplate. The stacktraces are near incomprehensible. The UI library (swing) was coded by a lunatic sadist, and when you finally manage a UI it looks like shit.
There's the overhead of the JVM too, but I'm not so concerned with that (I code in CL so I have to deal with a large compiled binary, which is kinda similar to your Java program + the JVM runtime).
Coding in Java basically feels like having an old man with bad teeth licking your ear.
1 u/Northvvait 30 Sep 2016 21:00
Heh heh... "the JVM". I've seen stuff inside my org fail because not only did someone not use a very specific version of the JVM but also used the wrong brand (Oracle vs IBM).
Do you want the old man with bad teeth because half have fallen out or the old man with bad teeth because they're all a lovely shade of green?
3 u/Northvvait 30 Sep 2016 04:43
Agreed. OOP is useful, so if you're going to go for it, go C++ (real C++ not just C in a C++ wrapping) or .NET. .NET took everything good about Java and left behind (mostly) everything bad about it.
2 u/rwbj 30 Sep 2016 05:09
.NET is a framework, not a language. It supports dozens of different languages. I assume you meant C#.
1 u/Northvvait 30 Sep 2016 12:36
There are no .NET languages compiled into IL that are not OO.
0 u/rwbj 30 Sep 2016 12:49
Lol, the internet where you can never be wrong.
Yes there are. There are dozens of CLI languages and many are not OO. This is a non-comprehensive list of some including various functional languages like Lisp, specialized languages like Prolog, and so on.
3 u/Northvvait 30 Sep 2016 12:59
I was very careful to say IL, not CLI.
0 u/DickHertz 07 Oct 2016 05:58
How about IL Assembler?
Oh yeah forgot F#.
1 u/hereonachair 30 Sep 2016 14:18
C++ is not OO, it's many things and OO is one of its worst things.
Using C++ like C but with the semi-automated memory management features and good libraries like Vector is a very good and may actually be the best way to use C++. Modern C++ is also ok if you know how to use its features without inducing sickening compile times.
0 u/Northvvait 30 Sep 2016 21:22
Thanks for the recommendation with Vector. Manual memory management is kind of a pain (and, honestly, if I'm going to explicitly allocate and deallocate, I'm probably going C), but automatic memory management isn't really a requirement of OOP. Polymorphism is, and if you're using the C++ runtime, you're using it! That said, I'd be lying if said I never saw someone use printf inside C++...
C++ isn't without it's problems but overcoming those problems can help with pretty much anything, whereas learning to overcome Java's problems only really help for Java.
0 u/hereonachair 30 Sep 2016 22:57
I prefer printfs over C++ dumb << >> overloading. In C you can achieve polymorphism for specific type instances with some boiler plate. It's definitely not optimal.
Yes, you can't have OO without polymorphism but you can have polymorphism without OO, and it's the better kind of polymorphism.
1 u/Firevine 30 Sep 2016 06:15
Basic.
#Atari4Lyfe
0 u/raydeen 30 Sep 2016 06:21
Apple Basic. Variables with only two unique letters. Oy vey.
0 u/Atarian 30 Sep 2016 19:37
I can respect this.
1 u/Master_Foo 01 Oct 2016 23:02
Learn languages you'll be paid to use. If you do this then you will focus on the languages you SHOULD learn as opposed to the ones you shouldn't.
But my two cents here. Certain languages are dead and are probably not worth the effort for a hobbyist. Obvious ones are PERL BASIC, etc. Less obvious is PHP. These languages are used by Greybeards or by newbies who have a Greybeard as a boss. But, it's rare to find a modern project written in PHP, PERL, etc without the influence of a Greybeard.
The standard I like to hold is "If we were recovering from a zombie apocalypse and we had to become serious about choosing a language, which languages would make the cut"
C/C++, Assembly, Python, and BASH would be in. MAYBE javascript, but that is a stretch. Ruby would be out. C# and Java would be out.
1 u/CameBackForAVent 02 Oct 2016 09:14
Along with pretty much anything listed here: https://esolangs.org/wiki/Language_list
0 u/flope_de 30 Sep 2016 04:27
Forth. For your own good: Do not use Forth!
I did it for a while, (Because I was young and needed the money.) and it broke my brain and hurt my soul.
0 u/waylon531 30 Sep 2016 04:27
Javascript
1 u/Omnipresent [OP] 30 Sep 2016 04:41
Everyone and their mom uses it, though. Do you have any particular language to use in Javascript's place?
3 u/waylon531 30 Sep 2016 04:43
Anything else that compiles to javascript
1 u/Atarian 30 Sep 2016 19:39
Clojurescript.
0 u/whisky_cat 30 Sep 2016 05:09
I got tired of Lingo a long time ago...
0 u/Datawych 30 Sep 2016 18:49
Fortran.
Also, anyone who hates OOP is a backwards-ass retard who's stuck in 1993.
0 u/Atarian 30 Sep 2016 19:40
Common Lisp 4 lyfe, niggah.
0 u/DrBunsen 30 Sep 2016 19:08
PHP
Mathlab
LabView
The first two are not descent with their variables, you can't define the variables and while working with them, in Mathlab's case, they will change to another data type without any valid reason.
And LabView is just weird, and overly complicated.
0 u/monetus 02 Oct 2016 23:27
Just to nitpick, its matlab. Somebody probably copyrighted mathlab...
0 u/DrBunsen 03 Oct 2016 07:18
;)
-2 u/fouend1 01 Oct 2016 11:30
Multiplex Garcinia consuming small portions and cutting things down is a completely sensible idea. that is where many humans get confused and feature a hard time because they may be so used to consuming larger food. but, reducing those down will assist to cut that calorie intake down in order that the body does start to lose kilos. that is one of the very first-rate weight loss guidelines that humans have been capable of use nowadays.http://greentheorygarcinia.com/multiplex-garcinia/