Most Internet discussion forums are absolutely insufferable, because the population is disproportionately students who haven't gotten past that stage yet. Or junior professionals who find that their jobs are more messy and boring than they expected, and want to spend their hobby time dabbling in one-person side projects that never get past that stage.
Among this audience, in that space, sure... static type checks are "cumbersome", testability is "overkill", refactoring never happens, etc etc etc.
> it falsely assumes OOP is a good approach
I'd say the bigger unspoken assumption there is that Java is good at OOP!
i.e your not really dealing with objects all the time like in smalltalk but just "blueprints" that are a far shadow of what things should be (if i remember the claim correctly)
Alan Kay himself said he regrets coining the term as "object" oriented, and wishes he had emphasized "messages":
Not everything is an object, as someone said, there are also primitives.
There are many other "things" in Java that are not objects (operators, statements, etc.).
Kotlin does set some of this straight. Everything inherits (indirectly) from the Any class. And primitives do not exist in Kotlin (as in Ruby or Smalltalk).
I weep for the world of programming.
https://chrisdone.com/posts/dijkstra-haskell-java/
But for going to Java from Haskell :)
I always figured the tool was deliberately chosen because it gave just enough support to the learner (syntax highlighting and class diagrams) but didn't offer any other safety nets or convenience. Kind of just one step away from programming in notepad.exe :)
That's correct! Michael Kölling, one of the original authors, was a lecturer who wrote it originally. All of OOP classes were taught with BlueJ, but we were allowed to other editors, though not many did.
It also has some features you need in school, like a structogram editor, UML diagrams and so fort.
JetBrains is trying to change this using Kotlin
All the bells and whistles of more "mature" IDEs can make the whole thing more daunting for a newbie.
When I taught AP Comp Sci and was doing Java, we used BlueJ in class.
Why wouldn't a teacher start off teaching the basics of programming with Python and then move to OOP with Python which wupports an OOP style? It may be a little frowned upon, but I mix up my styles depending on what's called for all the time. It's great and feels so naughty coming from someone who started out learning Basic then Java as my first "serious" language =)
My school has gone back and forth with starting with Python or Java in the Pre-AP course. There are pros and cons for both options, but ultimately a language is just a language. The concepts are what is really being taught.
The difference between a math variable and a computer variable and how "x = x + 1" works can be difficult for some students to wrap their minds around. Getting students comfortable/competent with a language and then switching it mid year would be a tough ask for quite a few students.
Keep in mind, many of the students taking Computer Science in high school are not exactly the same students that would have taught themselves to program at 15 and 16. Self-taught students are easy to teach (although they provide their own challenges), but you have to approach things much differently (and often slowly) for students that don't already "think like a programmer".
In BASIC you can say "LET X = X + 1" which really helped me grasp the assignment operator when I was starting out.
We used BlueJ in my comp sci intro courses, but I had already taught myself BASIC in high school using QBASIC and making extensive use of the built-in documentation. It was helpful to have some programming experience coming into it. I had to unlearn a lot of outdated or unfashionable practices, though. If I had learned how to use subroutines instead of relying on GOTO that probably would've helped understand methods a little better.
I'd argue the fact an IDE like BlueJ is needed suggests Java isn't an appropriate language for beginners though. And it seems in recent years schools have been preferring Python as a first language which I think is far more appropriate. My teacher used to argue Java is good for beginners because it's a strict OOP language and teaches good habits, but I question how true that is. For one, it falsely assumes OOP is a good approach for an application that asks you to enter your name then prints, "Hello [name]".