5 ms·
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
by cultofmetatron 4y 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.
- kjeetgill 4y 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 4y agoConsider 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 4y 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
- BeefWellington 4y 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 4y agoI 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.
- BeefWellington 4y ago> 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. I'd argue that C-style syntax has largely (though not completely) won out. Python is a departure from this for sure, as well as various functional languages, but Scheme and other LISP languages are an order of magnitude more different. The basics like function definitions, not actually quoting both ends of strings in all cases, etc. It's just very different than basically the rest of the languages out there. This alone makes learning with Scheme to start not really better than what this thread is about -- complaints about the way BlueJ was pushed in university to have next to no real-world applicability. Yes, you can get jobs writing Scheme and you can write productive applications. However, you're going to be a step behind everyone else trying to figure out C or C++ for the first time and those syntax semantics matter a great deal when they're essentially reused in 80-90% of other languages out there. Also, in the pre-Java days "excellent REPL" wasn't really common, so you're really comparing more modern versions and what we have today to the times before Java sort of became the de facto "intro to programming" language. Sure, it has some pros but I think it was a mistake to make it the intro to CS language of choice, even over something like BASIC or Delphi. In my professional life the closest I've come to needing to write Scheme is in working with LDAP queries.
- _fat_santa 4y agoI 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.
- mdmglr 4y agoDisagree. 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.