Software Engineers/Programmers: What language would you prefer to be working in?

I’m a Java programmer, and I love how every new, non-MS software engineering tool (UML2, Aspect-Oriented Programming, Apache stuff, etc.) is implemented and freely downloadable for Java. And I love Eclipse, though the learning curve can be steep.

That said, I’d take Python over Java any day of the week. It’s just so much more intuitive and easy to use. Simpler to deal with collections, file access, and input/output.

Ah, well.

I started in APL on a Teletype terminal about 1977

Went through various BASICs on pre-IBMs and then got a handle on ASM in 1987

  • TSRs, Device Drivers

In 1987 I read K&R’s White Book, and was bemused - why use ‘C’ ?

Reluctantly I eventually migrated to Windows and landed up with a combination of VB and Delphi - both have their strengths, and both have their weaknesses

On balance Delphi is the more powerful language, yet it is cretinous when it comes to clearing local stacks - which it has to do, but only implements selectively.

I detest ‘C’

  • if I am feeling autistic then I’ll use raw ASM - or my tailored version of MASM

I have seen very good BASIC and ASM coders turned into non productive morons when they moved into ‘C’

It’s really nice to see BASIC-related products being discussed maturely.

I guess C++ but really it’s because it’s the one I’m most familiar with.(Haven’t seen much java to be honest. I’ve done some C and of course I’ve seen other languages in college like prolog, CAML, etc)) Of course since some of us have mentioned languages we don’t like the one language I absolutely despise beyond all else is that abomination known as LISP. I hate all the parathesis and I hate how if you had one too many or one too few things tended to go wrong. (Well that and how it seemed so many of the LISP examples were written by people who probably had massive problems writing run-on sentences. I mean it seemed like every LISP program was 4 lines long. Each line being between 1000 and 50000 characters. :smiley: OK, I kid to some degree but it really seemed to me that most LISP people forget to hit the return key.)

Were you using xemacs? It highlights the opening parenthesis as you type a closing one, in order to ensure that you get all the parentheses correct.

I’m currently working in Java (using Eclipse and the Together plug-in, which I have to say is the bee’s knees for UML round-tripping), VB6 and VB.NET, and I like all three. VB allows me to make very quick-and-dirty prototypes, VB.NET keeps most of the familiar syntax and adds proper object-orientation and exception handling, and Java… well, I learned my OOP on Java, so I have a certain nostalgic fondness for it, and the cross-platform ability has come in handy a few times.

Actually no, I was using plain old GNU emacs for that I think.(Basically I was doing this in the early 90’s and we used old VT220’s so I don’t remember anything matching parens. It would have helped though since like I’ve said, I always seemed to get the number of parens wrong which isn’t much of an issue in C but boy does it matter in LISP.)

The Corporate State used Delphi going back long before I was assimilated into their ranks; I think they started with Delphi 1. By the time I arrived on the scene they were going from 3 to 5, and they’re now using 7. There are some occasional irritations and potholes to deal with when converting an application from 5 (or 3) to 7, depending on which control classes are involved. Some things that were handled using third-party (but bundled) class libraries are suddenly implemented with completely different classes. (I’m thinking of things like Internet-related control classes and things like that.) So there is sometimes the need for a rewrite of some pieces of code. But they’re fairly rare (at least in our enviornment); most code will go from 3 to 5, or from 5 to 7, fairly smoothly. Making the jump all the way from 3 to 7 or beyond might be a bit more problematic, but probably not a huge deal.

I’m curious how many of you have used C#?

I started programming in Basic and C, almost 30 years ago. Since then, I’ve programmed in assembler, Pascal, Modula-2, C++, Java, Visual Basic, Java, various scripting languages, and now C#.

Before C#, I preferred Java to all the rest. Nice clean object model, managed code. I grew to dislike C++ (I switch back and forth between them depending on which project I’m working on), because of all the boilerplate crap you have to worry about. But Java has its problems as well. Trying to write performant code has always been somewhat tricky because of the Java garbage collector.

We wrote an enterprise application in Java a couple of years ago, and we’re always having to tweak garbage collector settings on each installation to get it to perform reasonably well (part of that could be the developer’s faults - there were six of us on the project, and it was our first Java project, so for all I know there could be code in there that creates giant objects and destroys them, code that does lots of string concats instead of using stringbuffers, etc). Nonetheless, performance always seems to be a challenge. And I HATE swing - perhaps the crappiest piece of UI software ever. Non-standard controls, ugly, and arcane. Yuck. Swing apps always seem to look like crap.

And don’t get me started on Applets. Our application uses a client applet, and managing that damned thing has always been a pain. We get more support calls about getting the damned applet to work than for the rest of the product combined.

Recently we began a new project in C#, and man, I just love it. It’s got all the advantages of Java with none of the weaknesses. Especially when you add in .NET 3.0, WPF, a better XML model, awesome support for Web Services, and other cool enhancements. You can just get the job done. WPF in particular is just the cat’s meow. Compared to WPF, Swing looks ancient and arcane. IMO, for the Windows platform, C#/.NET 3.0 is just in a class by itself.

Yeah, Swing is garbage.

I’ve used C# a little (and its libraries quite a bit through rubyclr). For native looking graphical apps on Windows it can’t be beat, which makes sense, but I know my Mac-using friends look at me sadly if I wrote anything useful in it, so I always wind up doing “real” GUI projects with wxWhatever (wxPython right now). I don’t use it at work and don’t really expect to, though with this new XNA thing, who knows?

Yes, my biggest issue with the .NET languages is that, despite the existence of Mono and the like, they really can’t produce anything except Windows apps. That’s all right for the day job (industrial environment where we can specify the OS to run on), so we use .NET there.

For my home business, I have a customer base that’s about 50/50 Mac/Windows, so .NET (C#, VB) is a non-starter. I use a home-brew cross-platform Mac/Windows C++ application framework for my work there (includes 3D OpenGL “fast” apps, so Java isn’t an option, either). Took a lot of work to write it, but maintaining it is easy. And because I wrote it, it’s suprisingly well suited to the applications I write.

All of which is a way of answering the OP: I prefer to not have to do more work than necessary, which means my preferred language depends an awful lot on what I’m writing. You basically can’t write 3D games in anything high-level with decent performance, but Windows-only GUI apps in standard C++ aren’t worth the effort when Windows Forms are around. Small, standalone, cross-platform apps that aren’t performance sensitive? Java’s the way to go.

I’m old guard, I still write (gasp) desktop applications rather than web-driven stuff, so I haven’t done a lot of it. But there, Perl/Ruby/Python/.NET seem to be the defacto standards.

I feel pretty stronly that if you prefer a language to the point where you just default to it, you’re doing yourself a disservice. There are only 4-5 different “classes” of languages out there: Assemblies, the Lisps, C/C++/Pascal, VM-based (Java, Anything.NET), and script/web. Learn at least one of each class(maybe not assembly any more), and you’ll be prepared to take on pretty much any task, since the differences between languages in a class are much smaller than their similarities. (Note my classes only include the general-purpose languages. It wouldn’t hurt to learn SQL (a very simple language, easy to learn) for databases and PostScript or PDF for page layout, just for the experience.)

That’s interesting. I think Forms is just about the easiest tool there is for building database applications. PL/SQL is fairly intuitive as well. I’d much rather use Reports than other mainstream report writers such as Crystal. I’d love to move to java and JDeveloper to rewrite some of our applications but the learning curve seems incredibly steep.

Where do functional and logic languages fit into your hierarchy? Lisp is hardly functional in the same way that Haskell is.

Yes, it’s great if you’re dealing with base-table blocks and using the built in functionality where it takes care of row locking***** and querying master detail records, it is very good at that. . . The problems start to turn up when your forms get more complicated. Validation fires when you delete a record – WTF? Raise Form_Trigger_Failure sometimes doesn’t stop further processing? Scrollbars that decide to stop working. The strange disappearing program unit problem where there is code in (say) a post query trigger but it doesn’t get compiled into the runtime until you physically edit it? Stuff that works client server that breaks when you run it on the web?

I don’t hate Forms (I *do * hate Reports) but it has its problems.

***** seeing the unconnected model that C# and Java use was a bit of an eye opener, looks like you have to do all this stuff explicitly. You get a nice GUI but you have to do all the nasty database stuff by hand.

Thanks for that. BTW, what reporting package (for printed output) is used in the current Delphi version?

I don’t use 3rd party stuff, normally, exceptions being Dave Balwin’s THTML and KPZip.

However the Delphi News Groups are not very active, but very good.
Here is a selection :-

alt.comp.borland-delphi
alt.comp.lang.borland-delphi
alt.lang.delphi
comp.lang.pascal.delphi.misc

I started with Delphi1 in 1996 when I just wanted a way of getting at ASM for a rush job. To get the licence I had to buy D2 and upgrade to D3 then D4 was a no brainer, I did not bother with D5 as a Borland salesman rang me, he knew nothing about reference counting and was yammering on about improved Internet components - which I did not want.

D7 is the latest pure Win-DOS version, it has something called ‘Frames’ which are the equivalent of UserControls that I rather lust after.

If you posted a question in one or all of these groups (cross posted) then you’ll get some pretty fair feedback - some will be abrasive, but those are the guys who are most helpful for tricky stuff. We also have a FAQ.

I strongly recommend that you start disecting what the legacy App is using in terms of 3rd party stuff, also whether you have source or just DCUs.

I also recommend that you aim for a functional re-write, the code might port easily, but after D3 they gave us some interesting things like Dynamic Arrays which get rid of the need for obscure memory manipulation.

C/C++, because it’s so versatile. It’s a good tradeoff between allowing too much freedom, vs. allowing for stupid coding practices

Assembly is even more versatile, but at the expenses of allowing for boneheaded coding, and taking so long to implement anything.

Java covers up some of the stupid coding ptential of C/C++, at the expense of losing versatility.

FTR, I’ve also worked in Pascal, FORTRAN, PL/I, CMS/2, and a short handful of specialty languages.

I didn’t say it wasn’t buggy, I said it was easy. :wink:

Good point. I was really only talking about languages that have commercial use. There’s a whole set of academic languages that probably should get their own category. But if I had to, I’d toss Haskell in with Lisp, anyway. Sure, they’re significantly different, but the fundamental ideas under them are pretty similar, and the same program written in both languages would look a lot more alike than, say, Haskell and C.

The main difference of the academic languages is that they’re generally very limiting in some way (“no state” is a common one) in order to teach specific topics–desirable in an academic environment, but commercial developers generally don’t pick languages by what features they disallow.

Still, my overall point was that different programs are best written in different languages, and that learning several helps you learn more. I didn’t mean to get sidetracked in the categorization: like any categorization, different people will categorize things differently. It’s why pretty much any discussion of “how many different kinds of X are there?” is doomed to GD or the Pit.