Felix Rambles

Another step to taking back control

Ramblings about Java

12 September 2018 — Felix Pleşoianu

So, the other day me and a bunch of other people were discussing programming languages on Discord. We happen to have a very knowledgeable person in that group, who pointed us at an epic rant they wrote some three years ago (it seems) on why Java is bad for you. Having some experience with the language myself, that resonated with me.

One place where I disagree with Mr. Mallett: the thought of prototyping software in Java is terrifying to me. Spending hours thinking how to formulate something in hundreds of lines of code just to throw it out? In Python, I spend that time thinking what to formulate, exactly. The code is often a one-liner. No, seriously. Java, with its endless chains of public static void eeny meeny miny moe... is anthithetical to experimentation.

Also, is it a surprise that Java is slower than C++? It's running in a virtual machine, FFS! Sure, it uses JIT compilation to make native code... for parts of your program... after noticing certain patterns. It works great for specific things, such as running the same script repeatedly in a simple interpreter. But take it out of its comfort zone, and you might just as well code in Lua. The same thing happens with Javascript, which can rival native code in highly contrived applications written by the same people who made the VM and compiler. Gee, thanks. And yes, I was naive too once.

Moving on, if you think Java programmers are ignorant, try PHP programmers. I once had to teach a former colleague that when a script keeps running out of memory, it just might be from too many database queries with not a call to mysql_free_result. Surprise, dear young programmers! Your computers do not, in fact, have unlimited resources, and the garbage collector can't take care of everything. And speaking of PHP, that's another terrible language for beginners, because while it's easy to pick up it also teaches you nothing about the hardware that will struggle to run your code, while encouraging terrible coding practices, regarding security in particular.

Oh by the way: I'm pretty sure interfaces in Java were meant to enforce type discipline. Like Pascal before it, it's a language designed to protect people from themselves by leaving them handcuffed in the path of a flash flood. Which is exactly why teachers love it: many teachers, you see, think their students are mentally challenged subhumans who can't possibly be allowed to do their own thing.

Except, of course, in Java you can easily just declare everything as an Object and make the language dynamically typed in essence.

I'd better stop before this gets too long. Go read the original rant.

Tags: programming, education

Comments? Tweet  

On helping people

26 August 2018 — Felix Pleşoianu

There are two kinds of people you're likely to meet who are unskilled in a game or craft.

The newbie is genuinely just starting out, and hasn't learned the ropes yet. That makes them prone to asking silly questions, and making silly mistakes. But you can't possibly miss their interest, or fail to notice their progress after a while.

Now the noob (sometimes spelled with zeroes instead in a parody of leet speak), is someone who never actually learns. They may have been at it for a while, but never got anywhere, despite obvious efforts.

It's an important difference, you see, because while the newbie may have difficulties, needing some things explained multiple times, or in different ways, they still want to learn. Whereas the noob isn't just failing to, but actively rejecting any clue that may be coming their way. You know how knowledge often springs from unlikely sources, when least expected? It takes a special kind of dedication to dodge it all.

For decades now, too much software has been written for the exclusive benefit of noobs. You can tell because it offers no way forward, no path for improvement, and definitely no option for experts, which is what newbies turn into sooner or later.

If you give them half a chance.

Oh, you can go too far in the other direction, too. My own software could be more helpful to newbies. In my defense, it's hard to write genuinely helpful software (as opposed to the kind that pats you on the head condescendingly). My guides and tutorials do a much better job of it. Or so people who read them have told me.

Speaking of which: another thing I've learned in life is to never try and help someone unless they ask for help. You're a lot more likely to make a big mess. If they seem to need assistance yet failing to ask for it for whatever reason, let them know you are there. Carefully, though, lest you turn into Clippy. Remember Clippy? Is that the IT you want?

Choose wisely who you help, and how. Life is short.


Tags: education, software

Comments? Tweet