Java: The Next Generation





  • And it uses the PASCAL assignment operator... WTF.

    (I do love how he identifies Ceylon improvements by pointing out what version of C# has them already-- hah! Why not just use C#?)


  • Discourse touched me in a no-no place

    @blakeyrat said:

    (I do love how he identifies Ceylon improvements by pointing out what version of C# has them already-- hah! Why not just use C#?)
    Because some cockpunch has already tied you to the JVM, perhaps.

    I ran into an issue today where a particular barcode scanner behaves COMPLETELY DIFFERENT with its USB cable versus its serial or PS/2 cables. Turns out that the bastards designed the USB mode to be usable only in OEM software bundles - it gives you the bare minimum data out a HID device, and everything else is buried by another driver. The only library to interface with that driver? Java.

    Fortunately my application only needed to take that bare minimum data and I now just .toUpper() everything coming into a barcode control. I probably should have done that anyway, since "Configure your barcode scanner to output capital letters only" might confuse some of our dumber clients.



  • @blakeyrat said:

    (I do love how he identifies Ceylon improvements by pointing out what version of C# has them already-- hah! Why not just use C#?)

    "There's a programming language that already does what I want, but I can't use that language because it's made by THE EVIL EMPIRE, so I'll just fork an existing language and add those features. Never mind that doing so is completely unnecessary and will only create fragmentation, my ego must be stroked."

    Apparently the dumb fuck spent 2 years developing his own version of Java. If he had any actual intelligence he would've spent those 2 years adding code to Mono, which incomplete as it is, sadly is already superior to Java.



  • @blakeyrat said:

    And it uses the PASCAL assignment operator... WTF.

    (I do love how he identifies Ceylon improvements by pointing out what version of C# has them already-- hah! Why not just use C#?)

    That blog post doesn't really give enough detail to create an informed opinion, but the C# stuff was the blogger's short hand (no doubt at least some of those appeared in other languages beforee C#..hah!). Anyways, when you build a new language, you'd expect most of it to already exist in other languages. I suppose we could list which C# features were already in some other language, too.

    The post doesn't say, but I guess this was based on the blogger sitting through the keynote. After a little bit of searching, most of the information (that isn't in Chinese) seems to come from this blog.



  • @blakeyrat said:

    I do love how he identifies Ceylon improvements by pointing out what version of C# has them already-- hah! Why not just use C#?

    Because until it's able to be run and supported on real server OSes non-Windows OSes, it's simply not an option. Even if I wanted to, there ain't no way we're running business-critical applications on a Mono port. The JVM is the only common runtime in our heterogeneous ("nimble") infrastructure, and so it will be used. Fortunately, it isn't half bad.



  • @Xyro said:

    Because until it's able to be run and supported on real server OSes non-Windows OSes, it's simply not an option. Even if I wanted to, there ain't no way we're running business-critical applications on a Mono port.

    Bwah?

    @Xyro said:

    The JVM is the only common runtime in our heterogeneous ("nimble") infrastructure, and so it will be used. Fortunately, it isn't half bad.

    No, it's all bad.

    Look, if you're using the JVM to run server applications, well... ok. I still think the language kind of sucks, and I still think the JVM really sucks, but for server apps, fine.

    If you're subjecting your poor users to it, though... wow, you're an evil bastard. First they get their computers infected by the Vundo virus, because the JVM is a buggy piece of shit with more unpatched security holes than IE6. Then they have to have the patience of a saint to tolerate the extrodinarily long boot times of every single Java GUI app, and the general sluggishness they all suffer from. Then, and by far the worst, they have to actually use the bug-ridden, featureless, coded-by-an-idiot Java UI. Blind users? Good luck getting the screen reader to work with Java! Poor vision? Too bad! Java ignores OS theme settings! Tablet PC? Hah!





  • Don't confuse the JVM with Java-the-language. Java has more than a few of rough edges, though you can get the job done with it. The JVM, the major vendors' implementations at least, is seriously impressive technology. Read up on HotSpot some midsummer's weekend and all the nice runtime optimizations it performs. (I can't say that the CLI runtime is better or worse, I wouldn't know. I also wouldn't claim that HotSpot is revolutionary or new technology (after all what has been invented since lisp?) I'm only saying that it does what it does well and it's pretty cool.)

    And no, I am not an evil bastard ... with regards to forcing users to run JVM clients. The server-side is where the power is at, and all my UIs are web-based. If the client-side was our focus, we probably could get away with .Net+Mono, I think. But who cares about the desktop*? My whole point is that we simply cannot use .Net. It is not an option. It cannot run where we want it to run. So why not let some guy build a new JVM language that uses C# features? Heck, if someone totally implemented C#-the-language in the JVM I'd be thrilled!

    Also, Vundo isn't Java-specific, or really has anything to do with Java. It's true vector is the browser's plugin arch, from what I understand of it. If it was a true Java virus, then it would be cross-platform or somesuch. Unsurprisingly, the virus only runs on Windows.

    In other news, I have a few .Net apps that I run daily. They take quite a while to start up, too. Is this typical behavior? Who cares, I have an anecdote!!



  • @Xyro said:

    Don't confuse the JVM with Java-the-language.

    I didn't. But thanks for the warning, I guess?

    @Xyro said:

    Java has more than a few of rough edges, though you can get the job done with it.

    The same could be said about almost any language, no matter how shitty. The point is, I like to work with language that actually do not have rough edges. Is Java better than PHP? Yeah. Is it better than C#? Not even in the same league.

    @Xyro said:

    And no, I am not an evil bastard ... with regards to forcing users to run JVM clients. The server-side is where the power is at, and all my UIs are web-based.

    Ah, so you're an evil bastard just for a slightly different reason.

    @Xyro said:

    If the client-side was our focus, we probably could get away with .Net+Mono, I think.

    If the client was your focus, you wouldn't even for a split second consider Java. Unless you're fucking insane. Or, as previously implied, you literally hate your users. (Also you probably wouldn't write a web-based application, at least in the vast majority of cases where usability trumps availability.)

    I'd like take a break here to note that in your original post, you didn't actually say you were referring to Java only as a server-side language. If you had said that at the start, I probably wouldn't have posted the list of gripes. Because, as I already posted, I think Java's acceptable as a server-side language.

    @Xyro said:

    My whole point is that we simply cannot use .Net. It is not an option. It cannot run where we want it to run.

    But you haven't yet stated why that is. Oh wait, now you're saying .net specifically and not C#, so I guess KEEP MOVING THOSE GOALPOSTS!!

    @Xyro said:

    Heck, if someone totally implemented C#-the-language in the JVM I'd be thrilled!

    From my understanding, it can't be done without major hackery, because the JVM lacks many features needed for reflection. Anyway, I doubt you'd be "thrilled", most likely you'd just find another way to move those goalposts, because Microsoft is TEH EVIL.

    @Xyro said:

    Also, Vundo isn't Java-specific, or really has anything to do with Java.

    It doesn't have anything to do with Java. Except the Java VM is the primary way it spreads. But it doesn't have anything to do with Java, other than completely relying on it!

    @Xyro said:

    In other news, I have a few .Net apps that I run daily. They take quite a while to start up, too. Is this typical behavior? Who cares, I have an anecdote!!

    Show me a Java GUI app that isn't sluggish. Show me one that has a UI that doesn't suck shit. Show me one that supports all the OSes accessibility features. Put your fucking money where your mouth is.

    Of course I don't know why you're defending it for desktop applications, since just a paragraph ago you seemed to agree with me that it's shit for desktop applications.



  • @blakeyrat said:

    Ah, so you're an evil bastard just for a slightly different reason.

    I can neither confirm nor deny this allegation.

    @blakeyrat said:

    If the client was your focus, you wouldn't even for a split second consider Java. Unless you're fucking insane. Or, as previously implied, you literally hate your users. (Also you probably wouldn't write a web-based application, at least in the vast majority of cases where usability trumps availability.)

    Oooor if we had to support more than just Windows. Linux and Mac can run Mono, so it might work out, I don't know. Or we could waste out time writing native clients, I suppose, but I'm really not into BDSM...

    @blakeyrat said:

    @Xyro said:
    My whole point is that we simply cannot use .Net. It is not an option. It cannot run where we want it to run.

    But you haven't yet stated why that is. Oh wait, now you're saying .net specifically and not C#, so I guess KEEP MOVING THOSE GOALPOSTS!!


    Correct me if I'm wrong, but you can't have C# without .Net, no? So saying that .Net is not an option logically implies that C# is not an option. There is no goalpost movement, but the mind that is moving (neither the wind nor the flag). We can't use C# because it runs in the .Net runtime which is not available for the servers in our heterogeneous infrastructure, as previously mentioned. (In particular, it cannot run on HP-UX, which has been my main mode of Unix for the past few years.) See? My words make sense after all.

    @blakeyrat said:

    @Xyro said:
    Also, Vundo isn't Java-specific, or really has anything to do with Java.

    It doesn't have anything to do with Java. Except the Java VM is the primary way it spreads. But it doesn't have anything to do with Java, other than completely relying on it!


    [url]http://www.symantec.com/security_response/writeup.jsp?docid=2004-112111-3912-99&tabid=2[/url] I see no mention of Java on Symantec's writeup. FWIW, the only mention of Java on Wikipedia is as an example of a plugin. There are some words about Java on its discussion page which agree with my understanding of it. FWIW.

    @blakeyrat said:

    Show me a Java GUI app that isn't sluggish. Show me one that has a UI that doesn't suck shit. Show me one that supports all the OSes accessibility features. Put your fucking money where your mouth is.

    I think the only ones I use are Eclipse and NetBeans... NB can be a little chunky at times, though I'm a bit more of a power user with it. Some of our vendors use Eclipse plug-ins as their primary GUIs, and we've never had any problems with them... /anecdote.

    (This is not to say that I am unfamiliar with sluggish Java GUIs. I don't like them any more than you do.)



  • Eh, let me just sum up my post with this: the JVM (and thus Java) is cross-platform, at least to the degree that we require of it. The .Net CLI (and thus C#) is not cross-platform, at least not to the degree that we require of it.

    So if a guy wants to write a C#-alike for the JVM, then that's great for us. See? There's a good reason to do it right there.

    Edit: Also, maybe I should clarify: heterogeneous infrastructure doesn't mean a couple different versions of Windows and an XBox in the corner.



  • @Xyro said:

    Oooor if we had to support more than just Windows. Linux and Mac can run Mono, so it might work out, I don't know. Or we could waste out time writing native clients, I suppose, but I'm really not into BDSM...

    Or you could use something like Runtime Revolution or RealBasic. Basically, open your eyes to the whole wide world of software development tools.

    @Xyro said:

    Correct me if I'm wrong, but you can't have C# without .Net, no?

    This all depends on whether you believe Mono == .net. Personally, I'd say .net refers to the Microsoft implementation specifically, while Mono is an independent implementation of the CLR as described in the relevant standards docs. So maybe we have a terminology gap.

    Either way, you're obviously aware of Mono, and so you're obviously aware that you can use Mono to run your C# apps on Linux and OS X. That doesn't solve the UI problem on OS X, because it would use X11 there, but at least it would run.

    @Xyro said:

    We can't use C# because it runs in the .Net runtime which is not available for the servers in our heterogeneous infrastructure, as previously mentioned.

    But... Mono? You still haven't said why you can't run C# apps in your server room! That's all I want to know!

    Also, if your server room is heterogeneous, that implies you have one or more running Windows... so why would this be an issue?

    Also, are you the last company on Earth to not have virtualization in the server room?

    @Xyro said:

    (In particular, it cannot run on HP-UX, which has been my main mode of Unix for the past few years.)

    ... I don't even have the words.

    So you don't use Mono because it doesn't run on your personal development machine. Which runs an OS you chose on purpose that not only costs significantly more than Windows, but has significantly fewer tools available for it.

    How do you justify this to your management?

    "Hey guys, I need to renew my HP-UX license."
    "Wow that's costly... so I guess this gives a huge performance benefit over our free Linux distro?"
    "Uh, no."
    "Oh, so I guess it has some killer development tools that make you a lot more productive?"
    "Uh... well it runs the same Java shit everything else does."
    "Oh, well... at least it's the same environment as our server room so it reduces deployment headaches?"
    "Uh no, we have all sorts of different OSes on our servers."

    My brain is overloaded with WTF right now. I gotta go sit down.

    @Xyro said:

    I think the only ones I use are Eclipse

    If you think Eclipse isn't sluggish, you're either moving in some kind of weird sci-fi time pocket in which a minute passes in the real world for every second you experience, or you're a fucking liar.



  • @blakeyrat said:

    I'd like take a break here to note that in your original post, you didn't actually say you were referring to Java only as a server-side language. If you had said that at the start, I probably wouldn't have posted the list of gripes. Because, as I already posted, I think Java's acceptable as a server-side language.

    I thought it was pretty obvious:

    @Xyro said:

    Because until it's able to be run and supported on real server OSes non-Windows OSes, it's simply not an option. Even if I wanted to, there ain't no way we're running business-critical applications on a Mono port. The JVM is the only common runtime in our heterogeneous ("nimble") infrastructure, and so it will be used.

    As someone once said around here, reading is FUNdamental.



  • @blakeyrat said:

    Also, if your server room is heterogeneous, that implies you have one or more running Windows... so why would this be an issue?

    Oh, you!

    @blakeyrat said:

    HP-UX blah blah

    Our HP-UX machines are significantly more powerful that some dumpy x86 Windows box. HP-UX doesn't run my personal development machine, we are assigned Windows. I'd use Linux if I had the choice. We have a non-trivial set of business applications that run on Unix, some third-party, some not, and much of the Java code I write is to support them. Convincing our admins to manage a cluster of Linux or Windows virtual servers just so I can write in my favorite CLI language would be an even more ridiculous dialog than what you've proposed.



  • @blakeyrat said:

    And it uses the PASCAL assignment operator... WTF.

    First, Pascal is not an acronym.

    Second, it has a definite usability advantage over the C style: no = vs. == confusion!




  • This language sounds like it is attempting to do with java what D attempted to do with C++, which is basically try to fix the issues with the language but eventually fade into obscurity due to inertia of the older languages and providing no real benefit for using it over the other language.



  • @Mason Wheeler said:

    @blakeyrat said:

    And it uses the PASCAL assignment operator... WTF.

    First, Pascal is not an acronym.

    Second, it has a definite usability advantage over the C style: no = vs. == confusion!


    This. I see absolutely no disadvantage in :=, except a few assholes aren't used to it and therefore think it must be crap. It isn't. It's helpful. Simply because there is a use for "if (A := B)", but never for the line "A==B;" without any fork. Therefore, if you do write "A=B;" (assuming Pascal syntax), the language can easily treat it as an error, as "A==B;" would most likely get optimized away anyway.

    An exception is, of course, languages like Ruby, where a value on the last line of a block is treated as its return value. But I don't think compiled languages do that a lot, and if they do, they can at least push a warning here as well, and therefore, the Pascal way has a similar danger to the C way, but it still not worse.



  • @Xyro said:

    Convincing our admins to manage a cluster of Linux or Windows virtual servers just so I can write in my favorite CLI language would be an even more ridiculous dialog than what you've proposed.

    Yes, this highlights one of the advantages of java, which is that you don't have to develop on the same platform as you deploy (assuming it's purely a server side application, of course). Usually, this means allowing your basic interchangeable enterprise developer to run windows, even though you deploy to some unix like platform.



  •  @blakeyrat said:

    This all depends on whether you believe Mono == .net. Personally, I'd
    say .net refers to the Microsoft implementation specifically, while Mono
    is an independent implementation of the CLR as described in the
    relevant standards docs. So maybe we have a terminology gap.

    Personally, I've always thought of .NET as being the framework classes, the runtime is the CLR- and Mono is another implementation of the CLR for another platform, that uses a .NET framework that for all intents and purposes acts the same.

     

    Did they have to rewrite the framework, though? I can't remember.

     

    as for the assignment operator, it's no different IMO then the difference between languages that use semicolons to end statements and languages that don't. The only reason you would prefer one over the other is because when you try to use the other one you find yourself <constantly> typing stuff you shouldn't or not typing things you should. 



  • @BC_Programmer said:

    Did they have to rewrite the framework, though? I can't remember.

    Part of it at least, the part that was tighly coupled with the OS, mainly the graphics part



  • @Mason Wheeler said:

    @blakeyrat said:

    And it uses the PASCAL assignment operator... WTF.

    First, Pascal is not an acronym.

    Ever heard of the use of caps for EMPHASIS? (Although I can think of a number of ways to acronym-ify Pascal. With swear words, because those are the only appropriate words for it.)

    @Mason Wheeler said:

    Second, it has a definite usability advantage over the C style: no = vs. == confusion!


    That's because C-style languages follow the INCREDIBLY SENSIBLE (see that? EMPHASIS!) standard of having the assignment operator be shorter to type than the comparison operator, because you generally do more assignments than comparisons. I'm inclined to write the "accidental assignment instead of comparison" urban legend off as exactly that. In the decade I've been coding it's happened to me exactly 0 times, and no programmer I've ever asked about it has ever done it either.

    Also, if you can't differentiate between 1 equals sign, as opposed to 2 equals signs, you're either illiterate or innumerate, or you're using a shitty font/IDE, or you're coding at ungodly hours, or you're drunk/high/in a state when you really shouldn't be coding. None of which are the fault of the language.

    Basically every time I have to work in Delphi my fucking code doesn't compile and then I remember HEY I HAVE TO PUT A COLON BEFORE MY EQUAL SIGNS and then I stab myself in the dick so I remember next time. And then I curse Niklaus Wirth for making his language different instead of usable.



  • @The_Assimilator said:

    @Mason Wheeler said:

    @blakeyrat said:

    And it uses the PASCAL assignment operator... WTF.

    First, Pascal is not an acronym.

    Ever heard of the use of caps for EMPHASIS? (Although I can think of a number of ways to acronym-ify Pascal. With swear words, because those are the only appropriate words for it.)

    I would like to have it on the record that I ignored The_Assimilator's fucking pedantry instead of griping about it. At least I did until now. Fucking pedants.

    And my gripe is mostly, and probably unfairly, founded on the fact that typing := frequently is really, really awkward.



  • @The_Assimilator said:

    I'm inclined to write the "accidental assignment instead of comparison" urban legend off as exactly that. In the decade I've been coding it's happened to me exactly 0 times, and no programmer I've ever asked about it has ever done it either.

    Also, if you can't differentiate between 1 equals sign, as opposed to 2 equals signs, you're either illiterate or innumerate, or you're using a shitty font/IDE, or you're coding at ungodly hours, or you're drunk/high/in a state when you really shouldn't be coding. None of which are the fault of the language.

    You must not know many coders. I've done it a few times. Not my biggest or most common typo / bug, but it happens occasionally. I wish I were as perfect as you and your friends.

    @The_Assimilator said:

    Basically every time I have to work in Delphi my fucking code doesn't compile and then I remember HEY I HAVE TO PUT A COLON BEFORE MY EQUAL SIGNS and then I stab myself in the dick so I remember next time. And then I curse Niklaus Wirth for making his language different instead of usable.


    This isn't any different than, say, forgetting semi-colons. Or missing a comma in between some parameters. Or misspelling something. Or...well, lots of silly bugs / typos that pretty much everyone does from time to time. It's not like Pascal started that or anything, so either choice would have been different than something. Some people were meant to code in only one language (if that). Maybe that's your issue?



  • @The_Assimilator said:

    And then I curse Niklaus Wirth for making his language different instead of usable.
     

    He didn't make it different.  He made it the same as the current standard, ALGOL, which Pascal was an evolution of.  C came around a few years later, and made it different.

     



  • @blakeyrat said:

    @Mason Wheeler said:

    First, Pascal is not an acronym.

    I would like to have it on the record that I ignored The_Assimilator's fucking pedantry instead of griping about it. At least I did until now. Fucking pedants.

    And my gripe is mostly, and probably unfairly, founded on the fact that typing := frequently is really, really awkward.

    Noted. Although to be fucking pedantic, it was really Mason exhibiting pedantry here.


  • Ok, can we discuss something more relevant?

    If you have a decent IDE to code like Visual Studio, this stuff gets detected inmediately because the syntax is less permisive and you can't get away with "witty" code like you can with C/C++ and in the few cases it could go both ways it issues a warning.

    So unless you are using shitty or old software this disscussion is moot



  • @boomzilla said:

    @blakeyrat said:
    @Mason Wheeler said:

    First, Pascal is not an acronym.

    I would like to have it on the record that I ignored The_Assimilator's fucking pedantry instead of griping about it. At least I did until now. Fucking pedants.

    And my gripe is mostly, and probably unfairly, founded on the fact that typing := frequently is really, really awkward.

    Noted. Although to be fucking pedantic, it was really Mason exhibiting pedantry here.

    Yes, well, I don't know how to use quote buttons, obviously. So I apologize for that.



  • @serguey123 said:

    Filed under: [url=http://forums.thedailywtf.com/tags/let+us+discuss+the+fact+that+spectate+is+missing+instead/default.aspx]let us discuss the fact that spectate is missing instead[/url]

    This has me worried as well. I get really nervous after he stops posting for a while... Has be been arrested for indecent exposure while rain dancing? Has be finally OD'd on his medicine? Is he abusing children in his swamp shack? Or worse yet, has he resumed coding? Oh god...



  • @The_Assimilator said:

    That's because C-style languages follow the INCREDIBLY SENSIBLE (see that? EMPHASIS!) standard of having the assignment operator be shorter to type than the comparison operator, because you generally do more assignments than comparisons. I'm inclined to write the "accidental assignment instead of comparison" urban legend off as exactly that. In the decade I've been coding it's happened to me exactly 0 times, and no programmer I've ever asked about it has ever done it either.

    Also, if you can't differentiate between 1 equals sign, as opposed to 2 equals signs, you're either illiterate or innumerate, or you're using a shitty font/IDE, or you're coding at ungodly hours, or you're drunk/high/in a state when you really shouldn't be coding. None of which are the fault of the language.

    Basically every time I have to work in Delphi my fucking code doesn't compile and then I remember HEY I HAVE TO PUT A COLON BEFORE MY EQUAL SIGNS and then I stab myself in the dick so I remember next time. And then I curse Niklaus Wirth for making his language different instead of usable.

    As I assumed, it's just a matter of not being used to it.

    Of course, if you only write C-type languages, you're likely not to confuse it a lot. However, let's be honest. There's lots of dicks out there who use an assignment in an if condition (me included - it's so convenient sometimes!) and fail to document it correctly. Now you tell me when you see this, is it a bug or feature?

    The excuse of "but if it's two characters I have to type so much more characters!!" I account to dickery. Also, the last point I want to bring up (though it's not really in the favor of either, but more criticizing that two ways to do it exist in the first place): if you frequently have to change between a language that does it this way and one that does it another, ending up with compile errors because you forgot a : as not as much of a problem as accidentally assigning in an if condition.

    Edit: ignore that, I only just noticed this thread is now about SpectateSwamp.



  • @derula said:

    Also, the last point I want to bring up (though it's not really in the favor of either, but more criticizing that two ways to do it exist in the first place): if you frequently have to change between a language that does it this way and one that does it another, ending up with compile errors because you forgot a : as not as much of a problem as accidentally assigning in an if condition.
     

    This.   If a C coder has to do something in Delphi and they accidentally get the assignment wrong, the compiler will call them on it.  If a Delphi coder has to do something in C and they accidentally get an equality check wrong, the compiler will allow it, and you'd better hope he catches the wrong behavior in testing!

     



  • @derula said:

    Also, the last point I want to bring up (though it's not really in the favor of either, but more criticizing that two ways to do it exist in the first place): if you frequently have to change between a language that does it this way and one that does it another, ending up with compile errors because you forgot a : as not as much of a problem as accidentally assigning in an if condition.

    The Atlantic Ocean cannot stop these bugs (just trying to stay on topics), but compiler errors can!



  • @boomzilla said:

    @derula said:
    Also, the last point I want to bring up (though it's not really in the favor of either, but more criticizing that two ways to do it exist in the first place): if you frequently have to change between a language that does it this way and one that does it another, ending up with compile errors because you forgot a : as not as much of a problem as accidentally assigning in an if condition.

    The Atlantic Ocean cannot stop these bugs (just trying to stay on topics), but compiler errors can!

    1. AFAIK, an assignment in an if condition must not be treated an error, at most a warning.
    2. Yes, a forgotten colon in Delphi will yield an error, but as The_Assimilator pointed out, it's sometimes hard to guess what its cryptic complaint means.
    3. Some kind of rip in the fabric of space... That would... Well, it'd be like, I don't know, something that would help with discussing Swampy's whereabouts, I guess. I haven't worked this idea out as much as the compiler error ones.


  • @blakeyrat said:

    Show me a Java GUI app that isn't sluggish. Show me one that has a UI that doesn't suck shit. Show me one that supports all the OSes accessibility features. Of course I don't know why you're defending it for desktop applications, since just a paragraph ago you seemed to agree with me that it's shit for desktop applications.

    Ok, I have to throw my two cents in: PCGen is a java app that does, and i've tested this, work with the host OS's theme settings and features. sure, it may be a little slow switching Tabs, but it a very indepth D&D 3.5 character creator, which supports most D&D 3.5 book options and allows you to create custom content.

     Sincerely,

             The Zombie Steeldragon

     

    *resumes lurking*



  • @derula said:

    2) Yes, a forgotten colon in Delphi will yield an error, but as The_Assimilator pointed out, it's sometimes hard to guess what its cryptic complaint means.
     

    Cryptic? I just tested it with "x = 5;" and got ":= expected but = found." IMO that's about as clear and simple as you could possibly get for that particular error.



  • @blakeyrat said:

    the fact that typing := frequently is really, really awkward.

    Do you have a usability study on that?



  • @Spectre said:

    @blakeyrat said:
    the fact that typing := frequently is really, really awkward.

    Do you have a usability study on that?

    Don't quote me out of context. I said it was a probably bullshit belief in the post, you just clipped that part out.



  • @blakeyrat said:

    @The_Assimilator said:
    @Mason Wheeler said:

    @blakeyrat said:

    And it uses the PASCAL assignment operator... WTF.

    First, Pascal is not an acronym.

    Ever heard of the use of caps for EMPHASIS? (Although I can think of a number of ways to acronym-ify Pascal. With swear words, because those are the only appropriate words for it.)

    I would like to have it on the record that I ignored The_Assimilator's fucking pedantry instead of griping about it. At least I did until now. Fucking pedants.

    I love you too blakey. :p

    @Mason Wheeler said:

    @derula said:

    2) Yes, a forgotten colon in Delphi will yield an error, but as The_Assimilator pointed out, it's sometimes hard to guess what its cryptic complaint means.
     

    Cryptic? I just tested it with "x = 5;" and got ":= expected but = found." IMO that's about as clear and simple as you could possibly get for that particular error.

    Sounds like you're lucky enough to be working in a newer Delphi version. When I have to work in Delphi, it's either Delphi 5 or (shudder) Delphi 3.... these are so old that they sometimes shit the bed when doing a compilation (rlink32 error anyone?) and then the IDE shits itself and has to be restarted. When this happens once out of every 2 compilatioins, it gets really old really quickly.

    tl;dr I don't really have a problem with Pascal the language itself, my main gripe is with Borland's IDEs that have made coding Pascal such an enormous PITA. I blame it on Borland being shit and making programmers' lives miserable for more than a decade.



  • @blakeyrat said:

    And my gripe is mostly, and probably unfairly, founded on the fact that typing := frequently is really, really awkward.
     

    Let it be noted that nearly every language under the sky has two different syntaxes for "compare these two things for equality" and "assign the thing on the left the value on the right".  In nearly every case, one or the other is a multi-character operator.  Sometimes (I'm thinking back to FORTRAN's .EQ. compare op) you can drive yourself nuts with all the extra keystrokes.

    Two notable exceptions I've had the good fortune to work with:

    PL/I: both "compare" and "assign" use the bare =. (We pause now to consider the effect on the newbie programmer who stumbles across A=B=C and thinks it means something different from what it actually does.)

    APL:  "compare" is the equal sign, "assign" is the left-pointing arrow.  You can do things like that when you overload practically the entire QWERTY keyboard with mysterious hieroglypics.



  • @The_Assimilator said:

    I don't really have a problem with Pascal the language itself, my main gripe is with Borland's IDEs that have made coding Pascal such an enormous PITA. I blame it on Borland being shit and making programmers' lives miserable for more than a decade.
     

    I haven't touched Delphi for many years, but i remember Borland IDEs being one of the best back in the win9x days,  more so compared to MS Visual-i-need-1gb-ram-just-to-render-my-fucking-splash-screen-Studio.

    Also := is 10 times better than =, ==, ===, !== and so fucking on.



  • @bdew said:

     =, ==, ===, !== and so fucking on.
     

    I work in php. I don't like being told every so often that 10 is less that 2. As a result my = key is getting pretty worn.

    PS I just applied for another php job, which leads me to conclude that I hate myself.

     



  • @The_Assimilator said:

    Sounds like you're lucky enough to be working in a newer Delphi version. When I have to work in Delphi, it's either Delphi 5 or (shudder) Delphi 3.... these are so old that they sometimes shit the bed when doing a compilation (rlink32 error anyone?) and then the IDE shits itself and has to be restarted. When this happens once out of every 2 compilatioins, it gets really old really quickly.

    My first encounter with Delphi was with Delphi 1.0 .... It crapped out at the last disk... I liked Pascal but Delphi... to make things worse I even taught the thing for a while



  • @da Doctah said:

    (We pause now to consider the effect on the newbie programmer who stumbles across A=B=C and thinks it means something different from what it actually does.)

    How is that hard to figure out? Comparisons and assignments are easily differentiated by their context in every language I've ever used.



  • @da Doctah said:

    (We pause now to consider the effect on the newbie programmer who stumbles across A=B=C and thinks it means something different from what it actually does.)

    How is that hard to figure out? Comparisons and assignments are easily differentiated by their context in every language I've ever used.



  • @da Doctah said:

    @blakeyrat said:

    And my gripe is mostly, and probably unfairly, founded on the fact that typing := frequently is really, really awkward.
     

    Let it be noted that nearly every language under the sky has two different syntaxes for "compare these two things for equality" and "assign the thing on the left the value on the right".  In nearly every case, one or the other is a multi-character operator.  Sometimes (I'm thinking back to FORTRAN's .EQ. compare op) you can drive yourself nuts with all the extra keystrokes.

    Two notable exceptions I've had the good fortune to work with:

    PL/I: both "compare" and "assign" use the bare =. (We pause now to consider the effect on the newbie programmer who stumbles across A=B=C and thinks it means something different from what it actually does.)

    APL:  "compare" is the equal sign, "assign" is the left-pointing arrow.  You can do things like that when you overload practically the entire QWERTY keyboard with mysterious hieroglypics.

     

    Doesn't BASIC (and all its dialects) also use a single = for both assignment and equality?

     



  • @Master Chief said:

    @da Doctah said:
    (We pause now to consider the effect on the newbie programmer who stumbles across A=B=C and thinks it means something different from what it actually does.)

    How is that hard to figure out? Comparisons and assignments are easily differentiated by their context in every language I've ever used.

    All right then, after the execution of that statement, tell me: is the value of A a boolean, or is it equal to B and C? And is A=B=C; if (A) {...} different from if (B=C) {...} ? If they are different, is there a way to store the value of a boolean comparison without using branching? Does it depend if A is typed to be a boolean? If they are not different, is there no way to assign the same value to more than one variable in one statement? If not, I guess that's fair, but it's an arbitrary limitation brought on only by overloaded syntax and not an actual design problem/solution.



  • @token_woman said:

    I work in php. I don't like being told every so often that 10 is less that 2. As a result my = key is getting pretty worn.

    I'm sure none of us like being told that. For the [fortunately] php-impaired, how does that happen?



  • @Xyro said:

    @Master Chief said:
    @da Doctah said:
    (We pause now to consider the effect on the newbie programmer who stumbles across A=B=C and thinks it means something different from what it actually does.)

    How is that hard to figure out? Comparisons and assignments are easily differentiated by their context in every language I've ever used.

    All right then, after the execution of that statement, tell me: is the value of A a boolean, or is it equal to B and C?


    Indeed. That's language dependent. I remember trying to set two values in one statement like that back on my C64, and being surprised by the result, but knowing that the '=' operator operated differently as part of a RHS vs LHS expression (of course, languages that follow C's example don't have such a sharp distinction), it's obvious now. But you have to know.



  • @boomzilla said:

    @token_woman said:
    I work in php. I don't like being told every so often that 10 is less that 2. As a result my = key is getting pretty worn.

    I'm sure none of us like being told that. For the [fortunately] php-impaired, how does that happen?

    PHP is weakly-typed, so == compares the values of two variables and automatically coerces type(s) as necessary, whereas === checks the types first, and only compares their values if both are of the same type (if the types differ the comparison is guaranteed to return false). Given PHP's funky rules for type coercion, this leads to some interesting behaviour, for example:

    $variable = true;
    

    if ($variable == "something") {

    //This code will always be excecuted

    }

    (Read the comments here for examples of how untyped comparisons can trip you up in that language - above code taken from said comments.)



  • @boomzilla said:

    @token_woman said:
    I work in php. I don't like being told every so often that 10 is less that 2. As a result my = key is getting pretty worn.

    I'm sure none of us like being told that. For the [fortunately] php-impaired, how does that happen?
     

    I was being a bit flippant there regarding 10 and 2 because actually PHP doesn't overload the < operator with string comparison. That actually happened in some other code I was debugging ( in a different language). Whoever wrote it had thought it fit to put quotes around everything. They were the WTF in that case, not the language. 

     But the gist of what I was saying is apparent when we look at something like this:

     <?php

    $a = "a";
    $b = 0;
    $c = "0001";

    if ($a == $b) echo "a equals b<br>";
    if ($a) echo "a evals to true<br>";
    if (!$b) echo "b evals to false<br>";

    echo "<br>c is equal to $c<br>";
    if (gettype($c) == "string") echo "c is a string<br>";
    if ($c == "1") echo "c is equal to 1<br>";

    ?>

    The output is:

    a equals b
    a evals to true
    b evals to false

    c is equal to 0001
    c is a string
    c is equal to '1'

    I kind of got it to say true and false were equal, there. Why does "a" equal 0? Why indeed.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.