POV-Ray : Newsgroups : povray.off-topic : My Experience with Visual C++ 2008 Express Edition Server Time
15 Nov 2024 12:12:43 EST (-0500)
  My Experience with Visual C++ 2008 Express Edition (Message 131 to 135 of 135)  
<<< Previous 10 Messages Goto Initial 10 Messages
From: nemesis
Subject: Re: My Experience with Visual C++ 2008 Express Edition
Date: 22 Feb 2008 09:00:02
Message: <web.47bed54d3fe42908bf7e3e540@news.povray.org>
Invisible <voi### [at] devnull> wrote:
> Darren New wrote:
> > Nicolas Alvarez wrote:
> >> That's an implementation bug. Invisible is talking about AWT *design*,
> >> which can't be just "fixed on the next release".
> >
> > Yes. He was changing the topic, and I was still on the original topic.
> > :-) Just saying, AWT wasn't the worst of it. Java had all kinds of evil
> > brokenness, and still does.
>
> So does .Net have a less horribly broken library design then?

probably and sadly yes.  Because it was made to run on a single OS from a single
company.  Many choices and tradeoffs are easier to make as is making it work
nice with the underlying architecture.  of course, it's less broken but much
more evil than Java. ;)


Post a reply to this message

From: Nicolas Alvarez
Subject: Re: My Experience with Visual C++ 2008 Express Edition
Date: 22 Feb 2008 09:08:30
Message: <47bed75e$1@news.povray.org>

> Darren New wrote:
>> Nicolas Alvarez wrote:
>>> That's an implementation bug. Invisible is talking about AWT 
>>> *design*, which can't be just "fixed on the next release".
>>
>> Yes. He was changing the topic, and I was still on the original topic. 
>> :-) Just saying, AWT wasn't the worst of it. Java had all kinds of 
>> evil brokenness, and still does.
> 
> So does .Net have a less horribly broken library design then?
> 

AFAIK, The library for making windows and stuff is less broken than Java 
AWT, *because* it's too Windows-oriented. Since they didn't bother with 
any crossplatformness, the API is simpler...


Post a reply to this message

From: Darren New
Subject: Re: My Experience with Visual C++ 2008 Express Edition
Date: 22 Feb 2008 11:11:31
Message: <47bef433$1@news.povray.org>
nemesis wrote:
> probably and sadly yes.  Because it was made to run on a single OS from a single
> company.  Many choices and tradeoffs are easier to make as is making it work
> nice with the underlying architecture.

Other than some of the low-level windowing stuff, what do you see in the 
.NET libraries that would be difficult to implement on (say) Linux?

The only bits I've seen that are actually Windows-specific were the bits 
that were either accessing directly the win32 stuff (like turning off 
particular windows message pump messages), which you don't need to do. 
Or stuff that Linux doesn't support anyway, like distributed 
transactions. (E.g., AFAIK, you can't write code in Linux to rename 
three files from A,B,C to D,E,F in such a way that nobody ever sees D 
without seeing F, and a powerfailure after you rename A and before you 
rename C undoes the renames you've done so far.)

The stuff you'd expect to be portable (web stuff, file stuff, threads, 
data structures, code generation, library management, temp files, etc) 
are all quite portable.  Just off the top of my head, I'd say maybe 10% 
of the library routines, tops, have an API or functionality that makes 
them hard to port, and maybe 1% have an API or functionality that makes 
them hard to port to an OS that actually supports that kind of 
functionality.

Of course, it's *difficult* to port the windowing stuff, but that 
doesn't mean it's inherently non-portable. Only that it's complex. It's 
difficult to make X programs run under Windows, too, without writing an 
X server.

What classes do you think are unportable?

-- 
   Darren New / San Diego, CA, USA (PST)
     On what day did God create the body thetans?


Post a reply to this message

From: Darren New
Subject: Re: My Experience with Visual C++ 2008 Express Edition
Date: 22 Feb 2008 11:11:44
Message: <47bef440$1@news.povray.org>
Invisible wrote:
> So does .Net have a less horribly broken library design then?

I would say it does, actually, yes.

Now, granted, it's very *complex*, because it has a lot in it. And some 
of the design decisions aren't obvious unless you actually read the 20 
or 30 pages of "this is why we did it this way" documentation.

For example, most of the classes say "static class methods are not 
thread-safe, but instance methods are."  Huh?  Why would you do such a 
thing?  But the rationale is actually quite reasonable, and it's obvious 
the designers had spent some time thinking it through.

The same with the organization of complex callbacks/events, where you 
have a pre-change callback, a post-change callback, and throwing errors 
results in different behaviors at different points in the process. 
Complex, but when you go looking for "how do I do this..." you go "Oh, 
they already made that work right."

The regexp matcher, for example, is also way complex compared to what 
I'm normally used to. But it lets you match on one call multiple 
subexpressions, find out where they matched, and so on. In that case, 
there's really no "simpler" version, and the documentation is mildly 
obtuse, but playing around with it a little and looking at the result 
set in the debugger made it clear.

It also helps that there are things like events (linked lists of 
callback pointers) and properties (automatically-named getter/setter pairs).

There are, of course, still warts, many caused by the static typing. For 
example, the return type from the regular expression matcher is several 
inter-related classes all referencing each other. Confusing, until you 
actually read all the docs. Not more confusing than, say, trying to 
understand C socket programming based on the man pages, tho.

There are also warts caused by interfacing to systems (like SQL) with 
different data models (like, there's an "int?" type, which allows for 
integers or NULL, but the IDE doesn't generate code to use that, instead 
requiring things like resultset.column[2].isnull()).

The encryption stuff is kind of funky, as half of it is still using the 
Windows library things, so like the encryption stuff only works if 
you're running web pages under IIS, because it's using IIS's encryption 
library.

I haven't had to deal with reflection, introspection, or code 
generation, nor with all sorts of dynamic loading/programming/etc.

But overall, it's surprisingly clean.

-- 
   Darren New / San Diego, CA, USA (PST)
     On what day did God create the body thetans?


Post a reply to this message

From: Invisible
Subject: Re: My Experience with Visual C++ 2008 Express Edition
Date: 22 Feb 2008 11:30:17
Message: <47bef899$1@news.povray.org>
>> So does .Net have a less horribly broken library design then?
> 
> I would say it does, actually, yes.
> 
> Now, granted, it's very *complex*, because it has a lot in it.
> 
> But overall, it's surprisingly clean.

Java has a long list of brokeness. The language itself is horridly 
broken, but the standard libraries are insane...

It's been a while since I actually used Java. But IIRC, the Object class 
has a surprisingly vast collection of methods. The base class for AWT 
widgets is *huge*. And there are multiple methods which apparently do 
the same thing... except... they don't... but it's not documented... Hmm.

Other fun things include the frequency with which they deprecate massive 
sections of the API and provide new ones. (IIRC, originally we did 
stream-type stuff with stream wrappers. And then they added "readers" 
and "writers" and deprecated all the old interfaces.)

Basically, if you run the same program on several different JVMs, you 
get wildly different behaviour, because nobody is sure exactly what all 
the GUI-related method calls are actually *meant* to do...

I really hope .Net has managed to avoid all that...

-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*


Post a reply to this message

<<< Previous 10 Messages Goto Initial 10 Messages

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.