Fog Creek Software
Discussion Board

Who has been keeping this a secret?

I'm sure this will start a language war, but...

For years I have been a happy C++ developer. Now I have to use Java. Yuk. Slow, or what?

Well, yes, but what a productivity gain! I'm amazed. I'm by no means an expert in it yet, but I am just blown away by how quickly I can get things written and working, maybe because it fits well with the way of thinking I have. There are obviously things for which Java is not suitable, and things it can't do (pass the n-th element and onwards of an array to a method expecting an array, for example) which would be oh so easy in C/C++/whatever, but still... Jeeeesus!

Sorry, just felt like I had to share what, for me, is a bit like that Eureka! feeling.

A happy programmer
Friday, April 30, 2004

Do yourself a favor and don't touch a weakly typed language, like Python. You risk just dying from amazement, if you do.

Friday, April 30, 2004

Ah, but rather than use an array, if you use something which implements List (e.g. Vector, ArrayList), then you can use List.subList(int,int) to do what you want.

Of course, then you have all that ugly casting which will be associated with Java collections until 1.5 is released.

Tom (a programmer)
Friday, April 30, 2004

Egor, I actually tried Python and perl, but couldn't get along with either of them. Sorry, but at least for now I'm a firm believer in strong typing. Maybe I'll try again in a few months, perhaps one has to get to those languages via a language which doesn't have pointers.

Tom - would be nice, but I have to live with current implementations out of my control and memory limitations which are not going to go away any time soon.

A happy programmer
Friday, April 30, 2004


- Java
- C#
- Delphi
- Python

They all give you a major speed boost over C++.

Friday, April 30, 2004

Bah! Weaklings!

Real men program in Befunge!


Paulo Caetano
Friday, April 30, 2004

The terms "strong" and "weak" typing are meaningless, and I wish people wouldn't use them.

There are two issues with respect to Types.

The first is Static (determined at compile time) or Dynamic (determined at run time).

The second is Safe (e.g. you can't assign a string to an integer) or Unsafe, (you can assign anything to anything and hang the consequences).

Languages can be any combination of the above, hence the terms "strong" and "weak" typing being meaningless.

Now cue some bozo to make a smart-arsed comment about touch-typing or similar...

David B. Wildgoose
Friday, April 30, 2004

MX - actually I was one of the Delphi "pioneers", using version 1 (it had just been launched, nobody on the project I was on had ever used it before that). Can't say I thought it was that brilliant actually, though it has no doubt moved on since then. It was a more powerful langauge than VB but not as good as Visual C++ as I recall since it lacked some tools. C#, I dunno, I really don't see any need to marry Microsoft _again_!

A happy programmer
Friday, April 30, 2004

"C#, I dunno, I really don't see any need to marry Microsoft _again_! "

Don't marry her! I did, and she
- took my money
- got a lot of strange diseases
- threw away my work from time to time, so I had to start over.

Boy, was I happy after the divorce!

Martin A. Bøgelund
Friday, April 30, 2004

It is no secret that Java is more productive. And more people would be using Java if it wasn't for the memory and CPU hoggin'

Friday, April 30, 2004

Strong and weak are not meaningless, at least not for me. I understood Egor's point.

Ignore my ignorance
Friday, April 30, 2004

Python is a strongly typed language. Dynamically typed, but still strongly type. There's a big difference.

Tom H
Friday, April 30, 2004

I was indeed thinking static/dynamic, not strong/weak when I made my remark. Yes, my mistake.

Friday, April 30, 2004

The thing that amazes me in all the language flames pro or anti java that everyone just ignores the fact that Java's performance disadvantage (slight these days) and memory disadvantage (still signifigant but much better than it used to be) is a direct consequence of things Java's designers did to enable security.

Everyone complains about security these days but no one seems willing to take the performance hit required for a language that makes security easier to implement.

It is astounding to me that we still read about over-run vulnerabilities these days.  Write your server processes in Java and you would have to do some pretty fancy programming to put a buffer over-run in.

name withheld out of cowardice
Friday, April 30, 2004

Mr Happy, I take you haven't got on to J2EE yet? You have years of excitement ahead of you, and then you will be able to return to JOS and understand our mocking of Java.

Friday, April 30, 2004

That last comment was just waiting to be written.

Friday, April 30, 2004

My experiences:

* I first tried Java in 1998 and was blown away by its elegance. I loved the libraries. I love exception handling (even if Joel doesn't). I loved not having to worry about memory allocation and avoiding buffer overruns. I decided immediately I would rename myself a "Java programmer"

>>>>  Fast forward to 2004 >>>>

* "They" now make me use J2EE. Productivity of Java - gone! Elegance of code - gone! My life is a nightmare of libraries on top of libraries on top of libraries. I curse the people who decided that JSP was too messy so we needed Struts, but that was too messy so we need to use JavaServer Faces too. Don't even get me started on JDO.

Now, for the first time in my programming career I never feel I quite have a full understanding of what is going on in my software. I long for the days when I got to cobble together web applications in weeks, rather than months.

I thought I would never say it, but I would be grateful to be assigned to a ".NET" based project, and to take a break from the J2EE madness afflicting the corporate world here in Europe.

Herr Herr
Friday, April 30, 2004

The obvious meaning of strong and weak typing is this

Strongly-typed language : Possibility of having a
                                          halfway decent compiler

Weakly-typed language  : Language is so shitty
                                          you can't even static check
                                          your code for type errors

Any Lisp weenies or any others who say things like
"Oh, it IS strongly typed, it's just DYNAMIC" are just
bullshitting; Use those languages and get shitty
run-time bugs

Tired of this nonsense
Friday, April 30, 2004

You don't have to use Struts or java server faces or JDO to use J2EE.  You don't even have to use Enterprise Java Beans.  I, for example, don't find Entity Beans all that useful. Message Driven Beans (MDB) on the other hand are a miracle and can save you untold hours of coding.

J2EE isn't the java language anyway.  It is a standardized way to build app servers which in turn are a way of making it so you don't have to write a huge amount of custom code to handle all the aspects of your server processes.

If your application is so simple in it's needs that using an application server doesn't save you any time then don't use one and don't use J2EE, duh!

I am astounded that people are complaining about the complexity of a tool that they don't need.  Use some judgement.  Now, if the tool is being forced down your throat uneccesarily, then you have a problem with management, not J2EE.

name withheld out of cowardice
Friday, April 30, 2004

When STL is considered, C++ has a large number of features that Java doesn't.  I'm not saying either is the better language, but there are definitely huge advantages to using C++ in certain situations.  Check out the boost libraries for an example:

It's worth revisiting C++ from time to time because the language changes a lot.

Friday, April 30, 2004

>> I am astounded that people are complaining about the complexity of a tool that they don't need.  Use some judgement.

That's incorrect.  We're complaining about the complexity of a tool that is unnecessarily complex.

Friday, April 30, 2004

J2EE is uneccesarily complex for your needs.  So don't use it.  It has nothing to do with whether Java the language has good things in it.

If you think you are capable of producing a better design for something that does what J2EE does then my hat is off to you.  The thing is though that you are probably just engaging in a session of asuming that everyone else's needs are the same as yours.

I find many parts of J2EE very useful and the complexity is not too much for me to wrap my brain around.

name withheld out of cowardice
Friday, April 30, 2004

"Tired of this nonsense," I don't quite understand why you think lispers are against static typing. If you want, build a lisp code walker. The reason lispers don't use static typing much is because they can write little type systems for the tasks they want it.

I've heard rumblings that some CMUCL lisp contributor(s) are even messing around with static typing. Just don't attribute prejudice to lispers, just because some vocal usenet flamewarrior gave you that impression one day.

Tayssir John Gabbour
Friday, April 30, 2004

Incidentally, no one would use Python if it had a static type system. Wouldn't exist. The big reason for Jython -- to escape Java's S&M. (S&M's only fun if you get to choose it.) People who want correctness can write pre- and post- conditions. And remember, Java has no type inference. So you're typing in more type tags than you need, because the compiler can't infer them. So do you want Python with a BS type system that no one wants?

I think there's some place for various proven guarantees, but not for every computation if it requires extra code. Static type checking hasn't yet removed all bugs, and Python comes with unit testing modules and asserts. Which I think is often better than just a type system.

Tayssir John Gabbour
Friday, April 30, 2004

Just to step around all the language wars...

Similar to the leap from C++ to Java (imho) is the leap from all other java IDEs I've used to Idea ( ).  You know how you're wondering how or why you ever got stuff done before Java?  Soon you'll be wondering how you ever got anything done without Idea.

(I have no affiliation with JetBrains or Idea other than being a happy customer.)

Friday, April 30, 2004

Here's an excellent page on strong/weak static/dynamic:

Friday, April 30, 2004

I've been keeping python a secret. Please don't try it.  You'll act like a fool (in all your spare time)

fool for python
Friday, April 30, 2004

Like "a happy programmer", I too started with C/C++ and ever since switching to Java have been very happy with how quickly I can write code.

I'd say that the "cognitive overhead" of a single unit (line of code, method, class) in Java is much less than in C++.  In C++, there are 10 times more things to keep track of at a time.  The capabilities and features of the Java language and the VM make it possible for me to focus most of my attention on the design and logic of the code.

Should be working
Friday, April 30, 2004

"J2EE is uneccesarily complex for your needs.  So don't use it."

Ain't so simple.  Unless you have your own company, or are otherwise given lots of control in your development choices, you just have to use what the company is using.

Certain parts of J2EE like servlets are great, but for the most part it is overdone bloat.  Unfortunately you can't easily avoid it because there is hype driving the use of J2EE, as this is a hype-driven industry, and management will force J2EE on you even if it is unsuitable 80% of the time.

T. Norman
Saturday, May 1, 2004

Well T.  Then management is your problem- not J2EE.  I can tell you from experience that much of that complexity has uses and my guess is that the rest of it does too (though for the rest of it I only speak based on experience).

name withheld out of cowardice
Saturday, May 1, 2004

J2EE? There's not much call for it in embedded systems.

A happy programmer
Monday, May 3, 2004


Wednesday, May 5, 2004

*  Recent Topics

*  Fog Creek Home