Programming language decisions

I’m old-school and think everyone should learn to program without using an IDE at first. It demystifies what’s actually going on. Especially since Eclipse (for example) hides the compile step from you. Newbies often seem to not see the line between the IDE, the compiler, and the language.

Having decent experience in one language might obviate the need for doing this when learning a new one, but for first-time programmers I think it’s important. But then again, maybe I’m just an old fart.

No you’re not, I’m 16 and having learned to code using Microsoft Notepad + command prompt, I absolutely agree with you :slight_smile:

I learned without an IDE, and sure, I recommend people learn simple programs without an IDE. It still doesn’t mean I want to have anything to do with programming without an IDE for any kind of real-world code.

With SBT, I find it’s pretty easy to drop in snippets. I just have a window running “~ compile” and as soon as I drop a file in, it gets compiled, then recompiled on every change. So I could use that like it was an IDE, but even I’d rather have a decent java-aware editor.

emacs: there is no substitute.

I learnt programming at University using BlueJ, and I saw exactly what you are talking about happen with other people in my year. People thought it was BlueJ that allowed them to run applications, and not Java.

But in many of those occasions, I think just sitting them down after they have learnt to code, and going through running Java from the command line, would have solved that issue in an afternoon.

OF course there is. Vim! :wink:

I wrote Hydro Hydra - 2nd Dive and all my other java games using Textpad.
Ok, it isn’t a totaly plain text editor as it adds a bit of syntax highlighting, allows external tools to be used and jumping to the pieces of code the compiler complains about.
But I’m confident that I could have lived without those features (My current unity working enviroment is in fact missing the last feature I listed).

Whenever I pull up an IDE I always find myself frustrated with how hard simply typing plain text becomes (Monodevelop blocks End-key presses at times!)…
I also find that working in a plain text editor keeps you much more aware of what’s going on behind the scene, allowing certain problems to be solved faster and more easily (but of course some might be harder…).

  • Scarzzurs

A thousand times yes. This is what really annoys me with MS ecosystem and toolchain - it’s actually really hard to decouple the tools from the gui apps. I got a C# book when I was trying to learn it a few years ago and the first few chapters were all on installing and setting up VS, creating a VS project and hitting ‘compile’ in VS. It’s horrible - and it’s harder still to actually find any information on how to actually compile something via the command line.

XNA is even worse - their content pipeline is tied directly to the VS plug-in, so if you want to manually do a content export (say, for automated build) you actually have to start up an instance of VS to have it do your export.

gedit!

IDE actually just tool to speed up your progress, that’s why they make it easy to, let’s say, import a class. However it will make you don’t remember the stucture of packages.

Don’t mean to interrupt the ongoing war but here are my two cents…

I used to program in C++ because I wanted to have the same toys the big boys play with… Then, in a moment of clarity and after many failures I decided that I could not be trusted with such power and switched to Java. I’m not a computer science graduate and although I known my share of design patterns and the ten commandments of OOP I think I’m just too stupid to write good software in C++. Java on the other hand is a very strict, monolithic language with fixed rules, which is why everything that isn’t OOP (entity systems…) is doomed to fail. The rules are sometimes in the way, but for me, this is the reason why I use it: More often than not the true reason for Java being in the way is bad design. I’m a (probably not very skilled) hobby programmer, so of course this does not neccessarily apply to developers who know what they’re doing.

Designing interacting, complex systems that know as little as possible about each other is tough. C++ gives you a hundred ways to shoot yourself in the foot and I think I abused most of them for some dumb reason I can’t even remember. On the top of that, C++ is actually four languages in one, each one following different conventions and rules: There is C, “basic” C++, the STL and templates… And you HAVE to know all of them if you want to use third party code like SDL, Lua, etc.

I think Java is the best platform available for most general tasks. It’s fairly easy to use and you can produce excellent results in a reasonable time window with a fair amount of work. The resulting programs cover an amazingly wide area like servers, desktops (GUI), games, etc.

I’ve professionally programmed many years in assembler, C, C++, Pascal/Delphi, Java and even particpated in some 40 years old Fortran programs (that’s not so funny). But Java was and is the only platform I see as a really smart tool to produce the software you actually need to, without too many restrictions and crazy hurdles.
(I.e. when you’ve to hunt “memory leaks” in a huge C++ application developed by a team of people including you in several years of work, you’ll see that basically C is just another variation of macro assembler and C++ is just an object orientated macro assembler. So, no matter if a byte shifting program in C is 20% or 30% faster than a Java byte shifter, you really don’t want to go back normally. And I didn’t mention byte shifting accidentidally, because today’s software usually is no byte shifter anymore because you’ve got your hardware or libraries for that. Using the correct algorithms and data structures (Collections) in your application is usually the key for performance.)

By using Java as platform you don’t get chained to a certain operating system and still have got a powerful programming language at your hands.
Usually as a software developer you’re confrontated with certain tasks to solve in software for a certain platform, and the main question is: will you manage to develier the finished product? And for all that Java is the real “Software Swiss Knife” in my experience. It’s still a knife, and work will always be work, but it’s a smart tool for a good work.

Howgh. :slight_smile:

It seems most of what you say applies to C# / Mono, only I’m still not really aware of a way to bring Java code directly to iOS.