Click here to Skip to main content
15,900,403 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: beeping the system speaker Pin
udi3219-Aug-04 14:12
udi3219-Aug-04 14:12 
GeneralList Control with Grouped View Pin
AndyCheetham17-Aug-04 8:16
AndyCheetham17-Aug-04 8:16 
GeneralRe: List Control with Grouped View Pin
David Crow17-Aug-04 9:38
David Crow17-Aug-04 9:38 
GeneralRe: List Control with Grouped View Pin
AndyCheetham17-Aug-04 21:45
AndyCheetham17-Aug-04 21:45 
GeneralRe: List Control with Grouped View Pin
David Crow18-Aug-04 4:55
David Crow18-Aug-04 4:55 
GeneralRe: List Control with Grouped View Pin
AndyCheetham18-Aug-04 6:28
AndyCheetham18-Aug-04 6:28 
GeneralLoving Linux Pin
Rafael Fernández López17-Aug-04 7:49
Rafael Fernández López17-Aug-04 7:49 
GeneralRe: Loving Linux Pin
Jim Crafton17-Aug-04 10:22
Jim Crafton17-Aug-04 10:22 
Well since I am bored, and have already hit my productivity quotient for the day, I'll bite.

I think that as a kernel Linux is fine. It has some nice features, scales well, is reasonably stable, and the new 2.6 version adds some nice performance improvments. So from a 10,000 foot view, it's OK, no better or worse than other kernels out there (well maybe a bit better, at least in terms of flexibility). However from a design standpoint, from a "lets try something new" standpoint, it's mind numbingly boring in a lot of ways. Linux carries on many unix traditions as if they were the be-all end-all of computer OS design, which is a shame, because IMHO, in 2004, many of the Unix design decisions are fairly lame. For example, security. Linux (and most Unices) security is *still* implemented as nothing more than a 32bit value that gets set. Win32 security mechanism (which is almost a direct copy of what's been used on VMS for the last 20 or so years) is infinitely more flexible, and far easier to admin in terms of understanding it, and making changes to the system.
Another example is the insistence on *everything* being a character stream (or practically everything). That and an incomprehensible naming pattern that makes understnading what devices you have connected to the OS extremely difficult. Don't beleive me? Look in /dev and tell me what all that is?

Linux the OS, i.e. all the userland stuff, like cp, ls, man, rm, cat, etc, is a dog, in my opinion. Most of the brain dead unix design decisions that were made in the 70's are *still* there in Linux! Keep in mind that the same group that whines, cries, and belittles MS for being un-innovative, has done *nothing* to bring linux forward using state of the art OS techniques and designs. From incomprehensible commands like cat, rm, ls (WTF is ls? please try explaining that to anyone not a programmer), awk, groff, sed, and on and on and one, ad nauseam.
And if you thought the commands were weird how about getting help? Want help? type man! What's "man" you ask? Why isn't it "help" (this is what VMS uses)?
Once you get used to terse 2-3 letter commands you have the joy of the linux file system to uncover. Want to find where something is executed from? Is it /usr/bin, /bin, /sbin, /usr/sbin, /usr/local/bin, etc etc. What's "bin"? What's "usr"? It's 2004, why can't we move forward and give human readable names to things. Keep in mind this is linux we are talking about - a freely available system that could be changed, but rarely is. Don't get me wrong, there are projects that attempt to changes bits and pieces of all of this, but none which do so in any well thought out cohesive manner. What's even worse is that even if it was done it's adoption would be glacial at best, since by and large the linux community appears to be every bit as conservative and locked into the past as the companies that the community makes fun of.

Another example of linux dippiness: shared libraries. People continually piss and moan about DLL Hell on Win32. And it's a completely valid criticism. Only its just as bad on linux/unix! You have stuff spread out all over the place, in directories whose location you're not even sure about, with symlinks to this, that and the other till you're blue in the face. All so you can load up the *right* version of your SO. When even the easiest option, i.e. putting the library right in the same directory as an exe, and the exe can't load it up! That's right, the ld program (the one responsible for loading the shared library), cannot find a SO that's in the same dir as the starting exe unless the lib is either added to the LD_LIBRARY_PATH, or hard coded into the exe's ld path during compilation/linkage. This is a carry over from unix, and never once has it been questioned AFAIK!


Do you use Linux for programming?

Well that depends on what kind of programming you're referring to. If you mean general system level stuff, then yeah I can imagine using it. But if you mean the nightmarish hack that is linux GUI development then hell no. Why do I say this? Good question!
Linux GUI development is a nightmare for several reasons. But the number one reason is the utter, and complete lack of any sort of suitable basic API to work with. Unlike Win32, MacOS Classic/OSX, AtheOS, NeXT, SkyOS, or BeOS (I threw in some hobby OS's just to show that even non-commercial attempts can get it right), the linux GUI has no standards, no base API to which a developer can write against. Instead there is simply a gaping vacuum that various toolkits try desparately to fill, causing endless, repititious re-invention of the wheel at almost every basic level of UI functionality, with varying degrees of success. For example, in most OS's the core API's you work with provide such basic features as:
-Clipboard support (both text and binary) for Copy/Paste
-Drag/Drop (or direct manipulation)
-Standard directory locations and API's for locating them
-basic graphics routines
-basic font handling and text drawing routines
-Menu bars, menus, and menu items
-tooltips
-a basic help system
-standard controls, like a text control, list control, dropdown, tree control, push button, radio button, check box, etc

When programming a GUI for linux NONE of this is "standard". Part of the treat of linux, one of the things that its' fans make such a big deal of, is the concept of "choice", that you can choose to use what ever you want. This is great from a system designer standpoint, or to someone putting together an OS distro. It's less than helpful to a developer who just wants to write their application. For example, in Win32 or OSX (or the other's I mentioned), one can request a font by passing in a font name (like "Times New Roman", or "Lucida"), and optionally a size, and maybe a few other parameters, and the system will guarantee to return you a font that matches as closely as possible to what you requested. This is accomplished because all these OSs build in a font mapper that knows how to do this.
Now attempting the same thing in linux is nowhere near as simple. First you must choose what toolkit you want to use. Why? Because unlike the other OSs linux has no native, core API's that handle this. B-b-but it has X, you say! X (or X Windows), in it's infinite wisdom, has no support for this either. It forces the end user to implement font mapping behaviour themselves! At best X can plop a rectangular window on a screen (but hey! it can do this remotely too! Woot!), and that's about it. Of course there are extensions to it (like XRENDER, XDAMAGE), but not everybody has them, and then you have to test for them, and ad nauseam, blah, blah, blah! Because X implementers and designers chose the path of least functionality (part of their mantra of "mechanism not policy"), the whole desktop has suffered. Great for university UI designers to play around with research ideas, but utterly lousy for developers who want to write real world applications with a standard UI.

Once you choose a toolkit you now have another problem. Each of the toolkits tends to be kind of mutally exclusive - you don't write an app in Qt and then add Gnome features, or a Gnome app and then add KDE features. It might be possible but it's ugly partially because your app is FORCED to load up both toolkits go achieve this, and then the user is of course forced to have both toolkits on their machine. Thus an application tends to be completely locked in to one toolkit, it's too expensive to change. And since linux offers no base library for any of the features listed above, every toolkit must implement these, which if we have the case above, means loading up dozens and dozens of smaller libraries, duplicating functionality all over the place. Keeping in mind that Gnome and KDE are both multi-million LOC projects.


Have you ever heard about Mono project? .NET strategy is working now under Linux. What do you think about that?

Yes I have heard of it. And I have said many times here on discussions about it that I think it's a walking lawsuit! If you had paying customers, on whose revenue and goodwill you dependended on for your livelihood, would you be willing to bet all of that on a Mono based solution, all on the chance that Microsoft will break with all prior behaviour and not pile-drive Mono into the ground should they ever start to catch on? Of course I'm not really a fan of .NET anyhow, much carbon copy of it, whose legality is kind of shaky at best.





¡El diablo está en mis pantalones! ¡Mire, mire!

Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!

SELECT * FROM User WHERE Clue > 0
0 rows returned

GeneralRe: Loving Linux Pin
Ryan Binns17-Aug-04 19:15
Ryan Binns17-Aug-04 19:15 
GeneralRe: Loving Linux Pin
Jim Crafton18-Aug-04 15:43
Jim Crafton18-Aug-04 15:43 
GeneralRe: Loving Linux Pin
Neville Franks18-Aug-04 12:15
Neville Franks18-Aug-04 12:15 
GeneralRe: Loving Linux Pin
Jim Crafton18-Aug-04 15:42
Jim Crafton18-Aug-04 15:42 
GeneralRe: Loving Linux Pin
Henry miller18-Aug-04 5:46
Henry miller18-Aug-04 5:46 
GeneralRe: Loving Linux Pin
Jim Crafton18-Aug-04 16:07
Jim Crafton18-Aug-04 16:07 
GeneralRe: Loving Linux Pin
Henry miller19-Aug-04 3:37
Henry miller19-Aug-04 3:37 
GeneralSet Font for Windows Pin
Khanh Trinh17-Aug-04 7:33
Khanh Trinh17-Aug-04 7:33 
GeneralRe: Set Font for Windows Pin
David Crow17-Aug-04 9:29
David Crow17-Aug-04 9:29 
GeneralRe: Set Font for Windows Pin
Khanh Trinh17-Aug-04 19:01
Khanh Trinh17-Aug-04 19:01 
GeneralRe: Set Font for Windows Pin
David Crow18-Aug-04 5:29
David Crow18-Aug-04 5:29 
GeneralRe: Set Font for Windows Pin
Khanh Trinh18-Aug-04 7:01
Khanh Trinh18-Aug-04 7:01 
GeneralgetExitCodeProcess Pin
ns17-Aug-04 7:22
ns17-Aug-04 7:22 
GeneralRe: getExitCodeProcess Pin
David Crow17-Aug-04 9:31
David Crow17-Aug-04 9:31 
GeneralRe: getExitCodeProcess Pin
Ryan Binns17-Aug-04 19:20
Ryan Binns17-Aug-04 19:20 
Generalserial link question (COM port on pC) Pin
jetournier17-Aug-04 7:02
jetournier17-Aug-04 7:02 
GeneralRe: serial link question (COM port on pC) Pin
valikac17-Aug-04 7:33
valikac17-Aug-04 7:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.