Readit News logoReadit News
kypro · 4 years ago
Oh wow, that's an IDE I haven't heard about for a while! We used to use this in school for learning Java. If I recall correctly BlueJ used to generate some nifty class diagrams to understand how your code fits together. That's about the feature I remember though.

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]".

Timpy · 4 years ago
I learned on Java and I really feel like it slowed me down in some fundamentals of programming logic. Books were raving about garbage collection, JVM, "everything is an object"; I had no idea what any of that meant or why it would make Java "superior". Boilerplate like `public static void main(String[] args)` got me into the habit of ignoring things I didn't understand. The netbeans IDE was doing a lot of great quality-of-life stuff like handling imports for me and as a consequence I had a very poor understanding of how any of that worked. When you don't know how to write a for-loop yet things like accessor methods, pointers, or encapsulation are going to go way over your head.
jjice · 4 years ago
My highschool "Intro to Programming" class teacher (she is a wonderful woman) would say out loud "string box args" to have us memorize the boiler plate. Needless to say, we never even got to loops in that class.
Aperocky · 4 years ago
Java is great for learning OOP and certain design patterns, but eludes all other programming knowledge. They are 'encapsulated'.
the_doctah · 4 years ago
It took me forever to understand what the heck the Java classpath was.
StevePerkins · 4 years ago
The problem with selecting programming languages, application frameworks, or anything else based on their "Hello World" example is that before you know it, you find yourself writing something more complex than "Hello World".

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.

BeFlatXIII · 4 years ago
Selecting languages based on their "Hello, world" complexity _is_ a useful metric when selecting a first programming language for the classroom. Both C and Java are inappropriate for that task: C has bookkeeping that's too easy to get wrong; Java is full of "you'll learn it when you're older" magic incantations.
crabmusket · 4 years ago
I learned Java in high school with BlueJ! That takes me back.

> it falsely assumes OOP is a good approach

I'd say the bigger unspoken assumption there is that Java is good at OOP!

andrekandre · 4 years ago
i can't remember who said it, but its been claimed java isn't even an oop: its more class oriented programming...

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)

RockingGoodNite · 4 years ago
> ...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]".

I weep for the world of programming.

cies · 4 years ago
Here Dijkstra weep with you:

https://chrisdone.com/posts/dijkstra-haskell-java/

But for going to Java from Haskell :)

gourabmi · 4 years ago
BlueJ was part of the recommended curriculum for Std 8th and 9th (I think) in some Indian schools circa 2005. My school wasn't in the same system. I had to learn PASCAL for the time my friends in other school systems had BlueJ in their curriculum. I used to be lowkey jealous of them back then. lol
_fat_santa · 4 years ago
I remember being told to use BlueJ in a CS class back in college. I realize it's an IDE made for learning but when I booted it up I was profoundly confused. I think I spent the first class playing around with it and downloaded Eclipse when I actually had to work on assignments.
xhevahir · 4 years ago
Last weekend a high school sophomore told me his class was using Java with BlueJ. He'd never heard the term "object-oriented," which I thought was interesting. He said the previous year his class had covered some Python. Using Java in high school didn't sound very motivating, but then, my earliest memories of doing programming in school involve the gym teacher instructing me to type mysterious stuff like "GOTO 40" until finally a bunch of flashing lines appeared on my monitor...so maybe I should be envious.
henkdehenker · 4 years ago
Wow, I also had to use blueJ when I had to program in Java. It felt really weird to me as there as so many better alternatives. Any chance this was at the Erasmus University?
black_puppydog · 4 years ago
I had the same experience, TU Dortmund in 2007, algorithms 101.

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 :)

phinnaeus · 4 years ago
I've never heard of Erasmus. I used BlueJ to learn Java in intro to Comp Sci classes in 2010 at a small school in North Carolina.
jen20 · 4 years ago
Bath (UK) also used it in the early 2000s, I believe faculty at Kent (UK) had some kind of hand in building it too.
cies · 4 years ago
Yups this was at EUR (Erasmus).
lwn · 4 years ago
Me too! But it was in Groningen
omnibrain · 4 years ago
We had to use "Java-Editor" https://javaeditor.org/doku.php?id=start It was actually ok, because it integrated the Java help and a freely available Java book.

It also has some features you need in school, like a structogram editor, UML diagrams and so fort.

saikatsg · 4 years ago
>And it seems in recent years schools have been preferring Python as a first language

JetBrains is trying to change this using Kotlin

grendelt · 4 years ago
I use Python as an instructional first language when teaching beginners. I use the Thonny IDE because of its simplicity and limited "visual noise".

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.

UnpossibleJim · 4 years ago
>>>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<<<

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 =)

hdctambien · 4 years ago
The AP Exam covers Java and you have less than 180 days to cover everything from "what is a variable" to inheritance, recursion, and sorting algorithms.

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".

JeanMo · 4 years ago
We were forced to use this ide back in the days when I went to school. I never encountered something more worse to use then this "IDE". Not to mention we were told to use notepad in the beginning... Can't make this sh* up.

From my perspective its very confusing for beginners to switch to a proper IDE after using this. And I will not mind the argument that "proper" IDE are overwhelming. If you are new to programming most likely everything, including BlueJ, is overwhelming. And with a good teacher and a good introduction I don't think its too much for beginners to use something like IntelliJ.

Just use the "correct" tools right away.

//edit: The IDE might improved a lot since the last time I used it. Didn't wanted to talk bad on BlueJ itself.

preya2k · 4 years ago
My experience was quite the opposite: We used this IDE in the first (maybe two) semesters of my Computer Science bachelor's programme (obviously not for all classes), and it was great. BlueJ allowed us to focus on the modeling and structure aspects of programs. For introduction into OOP it was a very nice tool.

Obviously after a couple of months, it's quite limiting – you don't want to write any proper programs in it, but for educational purposes and classes it's great.

maxehmookau · 4 years ago
100% agree with this. As a way to learn about OOP concepts from first principles, it was fantastic.

Obviously not something to use as a professional, but as a learning tool it was unmatched.

vestrigi · 4 years ago
I also used BlueJ in the first semester of CompSci and it was an easy start but I think it can give a false understanding of how things actually work. The fact that you can instantiate objects and call any (public I guess?) method without using code is nice at first but doesn't encourage students to write tests or to concentrate on writing a proper main class. All things that arent't that bad when there's good guidance to the students that this is not all given. Also I'm surprised that this has an actual debugger and not just the inspector, could have used that feature very well but I thought the inspector was all there is.
kjeetgill · 4 years ago
That's fascinating, I don't think we got into real OOP stuff until much later. Definitely not in the first year I think.
3nt3 · 4 years ago
I am currently being forced to use it for my compsci class and it really is horrible from a UI/UX standpoint (doesn't even have dark mode lol). It does not enforce any syntax style or proper formatting which makes beginners learn that "it doesn't matter" which is wrong imo and leads to horrible looking code.
KronisLV · 4 years ago
> It does not enforce any syntax style or proper formatting which makes beginners learn that "it doesn't matter" which is wrong imo and leads to horrible looking code.

This is a good point and IMO "format code on save" should be the default in most IDEs and editors - that way if you need a specific set of formatting rules you can configure them, but you won't end up with no formatting (or different people having different ways of writing code) by default.

I think that Go in Visual Studio Code did something like that by default, where you saved your changes and it also formatted everything. Annoying at first, but I came to appreciate the idea.

You can technically achieve the same with something like Git hooks but setting those up is error prone and can be annoying once people get too trigger happy (e.g. someone eventually putting running tests in Docker containers in there before you can commit your changes).

To me code formatting feels about the same as the tabs vs spaces "debate": if you're having it in the first place, you're possibly doing something wrong. Use tab key for indentation, have the IDE insert whatever is configured for the project/org, be it tabs or spaces (e.g. smart tabs), automate it away.

jackpeterfletch · 4 years ago
See it through. I know sometimes at university it can feel like your having your wings clipped, or that your not getting the 'real' experience.

But it won't last forever, and what it does well - conveying often unintuitive OOP concepts - it does do well.

Your course conveners job its to teach the fundamentals, tooling is for you to shake out as you gain experience and scale up, and from their perspective - imagine trying to wrangle random IntelliJ/Eclipse issues with a cohort of 120+ students, for many whom this might be their first introduction to programming!

Scaling things back probably genuinely allows them to provide a better learning on ramp.

twic · 4 years ago
Are you already familiar with better IDEs? Then of course using this is painful.

If you're learning to program for the first time, then i believe using a simpler tool is better, because there is less to learn all at once, and less that is hidden from you. I started programming in EditPad Lite, and that was absolutely what i needed until i started tackling larger projects, at which point it was worth spending the time to learn Eclipse.

twodave · 4 years ago
I hear this. I think much of my early frustrations in programming were things a decent debugger or intellisense would have quickly taught me. That said, having worked with a bunch of folks who got the big nice IDE right away, what I am noticing is they do tend to use the IDE as a crutch. I use my knowledge of the tech to solve a problem efficiently, while they blunder through to a (usually sub-optimal) solution using whatever guard rails the IDE puts in their way. This is a generalization, of course, and even those raised on an IDE can transcend it. But they’re not really being taught to effectively in my opinion.

Deleted Comment

davidork · 4 years ago
I started programming in high school, probably around 9th grade, I picked up a book on c at B&N, it was written with devC++ in mind as the IDE.

The next year I took my first "formal" programming class. Programming 1 at my highschool was based on visual basic.net. I had already learned how to make my own "debugger" using console out, but being able to add watches and breakpoints and actually see the internals of my program shift about as I stepped through it was awesome.

Despite having a proper IDE, my Programming 1 class spent all of 1 class period on how to use the debugger built into visual studio.

Having taken programming 2 in high school (java) then Liberty basic in freshman year in college and then back to c/c++ again in college I can say without a doubt programming classes massively undervalue debugging skills.

Once you get your first language under your belt the other languages come easier, as most of them are vastly similar. variables, limits, etc, how things are passed around and referenced change, but the basic function and control structures if then else switch case, for,do,etc are all roughly the same. - edit- at least higher-ish level languages,

I think programming curriculums should include an entire section on debugging. How to isolate specific issues, watches, off by one errors, byref/byval issues, top down order of operations issues, figuring out how a language handles a datatype mismatch etc.

mdmglr · 4 years ago
I learned Java with this IDE and thought the class diagram and the color coded blocks helped a lot. I wish VS Code has a similar setup for real projects. I’ve worked in code based where a real time class diagram would of been super helpful.
SomeBoolshit · 4 years ago
Same experience in university. I had no prior programming experience and the professor insisting on the use of BlueJ caused me to repeat that course because I did not get the concept of object oriented programming at all.

The following year I got a different prof who used Eclipse and things started making sense.

aspyct · 4 years ago
Same here. I had been using eclipse and codeblocks for years, yet was forced to use this thing.

It's probably super nice for beginners, because it removes a ton of friction. But why force people?

pavo-etc · 4 years ago
Used it in 2020 for my uni, still utter dogshit.
Netcob · 4 years ago
I'm not sure what the proper didactic concept is to teach programming. I'd love to see some data, because my personal feelings probably aren't of much use.

BlueJ does have a number of concepts that can be useful in the beginning. The UML view of the classes is a nice way to connect something very abstract with the actual code. Scope highlighting is a great idea too - I tried teaching some people to code and scopes seem to be as difficult a concept as classes are. Having the IDE change based on some text you wrote is pretty good too - like seeing relationships form in the UML view, listing public members on classes and so on.

The only problem I see is helping people move on from BlueJ. Some people who struggled a lot learning the basic concepts may feel like they finally managed to find a setup that "works" for them that's mostly based on a task-based understanding:

"I click on the BlueJ icon on my desktop, I click here to create a new class, if something doesn't work I better delete everything and start again because I don't know where to go from there"

Other IDEs aren't necessarily better! What does it actually do under the hood? How do I create a program that I can run outside of the IDE, not to mention on another person's computer?

Maybe that's not the problem of an IDE, rather it's the teacher who needs to include that transition in their course. I remember how back in school/university that was hardly mentioned at all.

cultofmetatron · 4 years ago
blueJ is a terrible first IDE. but mostly because JAVA is a terribly first language for new programmers. New programmers should be focused on variables, control flow, functions and io. The absolute minimum to do something useful. abstraction should come later as the scope of what they are trying to accomplish outpaces their ability to manage complexity. java centric first programming classes are so idiotic it drives me mad. Some of these classes go so far as to model toy problems as MVC using classes when the students aren't even comfortable using a LOOP!!

Drives me crazy. We should be starting them on python in repl.it. easy to get up an running. minimum amount of stuff you need to know to do something interesting.

Java as a first language pushed on new CS students has caused untold damage to the industry.

BeefWellington · 4 years ago
> Java as a first language pushed on new CS students has caused untold damage to the industry.

I'd argue that the true Dark Times™ were the days before Java. Forcing students to write Scheme or C as intro languages was far worse.

These days, I'd say something like Python to get the basic concepts down and then moving on to things like Rust or Go then Java, C++, or C# are probably better moves.

e3bc54b2 · 4 years ago
I get resistance to C, it is quite simple and straightforward language, but pointers aren't for beginners.

But hey, scheme is nice. No manual memory management, as simple as it comes syntax, very little to get started, excellent REPL, if it were in my power, I'd go back to college and have my first programming class in Scheme.

BeFlatXIII · 4 years ago
As someone who learned lisp-like languages well after "baby's first program", what places Scheme in the same group as C in terms of "even worse than Java for n00bs"?

Deleted Comment

mdmglr · 4 years ago
Disagree. Python has is caveats as well. Learning architectural patterns is as important as control flow. I taught Java to beginners for a few summers in college and Java syntax was never a problem. You can code everything in one function if you so desire.
kjeetgill · 4 years ago
> Java centric first programming classes are so idiotic it drives me mad.

Sorry you're having such hard time :D. When I started first had programming classes we had a few months of a toy programming language called karel++ and then were given C++. Now the point wasn't really to learn C++ as you've pointed out, it's just a language (any language) to get comfortable with sequences of commands, basic logic, loops, etc.

I don't think any progressional language could be quite as good as a purposefully crafted toy/educational language, but I actually think Java is still close to the top. If it wasn't for the 'class Main { public static void main(String[] args) {}}' bit I think it'd be pretty great. For anything a new student needs it's reasonably identical to C or C++ without pointers and segfaults. NPEs are a godsend.

I think python is pretty okay for a first language, it has a lot going for it! Its simple to start. A repl is convenient to experiment. But imho it's probably worth introducing typed variables, braces for scope, a compile step that checks a few things for you pretty early. I think significant whitespace is fine but as with most things in python, the reduced structure makes it look simpler but alse the errors it'll cause are way more frustrating starting out. Way more than missing semicolons.

The only other consideration is JavaScript. But I don't have the imagination for a intro CS class without a terminal prompt assignment.

s-zeng · 4 years ago
Consider also Racket scheme! Has a great starter IDE, an absolute barebones teaching variant that exposes the minimum amount of primitives required to do computations, a repl, as well as a typed variant. Has braces for scope, extremely clear error messages with literal arrows tracing exceptions through your code, and is quite amenable to terminal prompt assignments.
cultofmetatron · 4 years ago
> Sorry you're having such hard time :D.

I had zero issues learning java in college. but I already had self taught myself python in highschool. all I had to learn was java syntax and OO while I watched others struggle needlessly. python would have been a far gentler introduction before ramping up

_fat_santa · 4 years ago
I think the reason they make you use Java instead of something like Python, is with Java is explicit whereas with Python lots of things are implicit like type inference.

IMHO the best language to teach with now is Typescript. You get the explicit benefits of Java without the OOP mess.

JCWasmx86 · 4 years ago
And some sort of extension of BlueJ is Greenfoot [1]: It is an "IDE" for making simple games using a really simple API[2].

I used it in school for making a game during my A-Levels for my scientific seminar (W-Seminar in german). While the concept is good, the editor is really not that good for anything bigger. You e.g. have no package support in Greenfoot (Or I was not able to find it), and e.g. if you restart a so called "scenario", the JVM does not get reset. Sure I did maybe go to the limits of Greenfoot with my game, but nevertheless it was really fun to work with

[1] https://greenfoot.org/door

[2] https://greenfoot.org/files/javadoc/

jbgreer · 4 years ago
Back in 2006-8 I had an NSF teaching fellowship, and my peers and I used BlueJ as an introductory IDE in high school CS classes. BlueJ has a feature called “Object Bench” whereby one can instantiate and invoke methods on an object. The main thing I remember from that period is that Microsoft copied that functionality into Visual Studio, calling it “Object Test Bench”. Microsoft even admitted they were influenced by feedback from BlueJ users. Imitation, flattery, right? Then Microsoft filed a patent covering Object Test Bench. Suffice it to say Kolling et al. weren’t happy, and the news made it to several popular sites (Slashdot, etc.). Having been called out so publicly, and having basically admitted their knowledge of prior art, Microsoft withdrew the patent application.
mnd999 · 4 years ago
Great to see the University of Kent getting some publicity on hacker news, even if the BlueJ reviews are somewhat mixed.

Ian Utting and David Barnes gave my first CS lecture.

ejpo · 4 years ago
Came here to say this.

I personally did not like BlueJ as an IDE, but I found that the module that was built around it at Kent and the speed at which you can test classes you have created in isolation were a great aid for teaching people basic OOP principles.

mirkules · 4 years ago
I cannot believe this IDE is still alive, 22 years after I last touched it. I would rather use vim to code in Java.

Deleted Comment