Mono Poises to Take Over the Linux Desktop
Edd Dumbill writes "Miguel de Icaza and the Mono team recently hosted a two day open meeting in Boston. O'Reilly have just published
my report of the meeting. Highlights include
Miguel's view that 'C is dead!' and the Mono approach
to dealing with Microsoft patents on .NET."
I realize that this is an unpopular opinion here on Slashdot, but C# is actually a pretty cool language and the .NET runtime is a promising platform. Microsoft didn't just dream this up overnight... they had a lot of smart people working a long time creating this beast.
It would certainly benefit us to learn about these technologies and leverage them, rather than to unilaterally declare them evil, wrong, stupid, etc. and just bury our heads in the sand and pretend they dont exist.
Aside from being a the primary source of Mediterranean winds, Icaza has apparently forgotten about that whole "Linux" thing that is built on that whole "UNIX" thing that was built using that whole "C" thing. I applaud his salesmanship. I deplore his view that the desktop is equivalent to the operating system.
You need a solid underground when programming...
MS and solid? hmm...
It would certainly benefit us to learn about these technologies and leverage them, rather than to unilaterally declare them evil, wrong, stupid, etc. and just bury our heads in the sand and pretend they dont exist.
I think that about a lot of Microsoft technologies -- but to be fair, I'd say that the mere existence of Mono is evidence that a process such as you have described is already in motion.
The coolest voice ever.
Also, .NET is much like Java, and C hasn't died from the adoption of Java.
I realize that this is an unpopular opinion here on Slashdot, but C# is actually a pretty cool language and the .NET runtime is a promising platform. Microsoft didn't just dream this up overnight...
.Net is a nice language with some advancements over Java, but not different enough from Java to make its existence worthwhile. It's just leading to a lot of duplication of effort across the world (like Ant and Nant, or JUnit and NUnit).
Yes, it took at a least a couple of days to copy all the Java libraries and ReCapitalizeMethods,
Seriously though,
Now if they'd come up with something like Haskel# as the primary language (instead of hamstringing other languages and making all of the core libraries Java like) or something really different that actually advanced the field of programming as a whole, then I might be more appreciative But as it is I see the tremendous duplication of effort across the world to do the same things in Java and C#, and it just makes me sad.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
.....at their own game.
.NET than .NET
You can't a better
Anyone remember "a better Windows" than Windows called OS/2?
--fatboy
As it is, I don't want to even attempt to emulate another 'grand MS idea'...especially since there are already superior non-MS systems out there that puts .net to shame. No, I'm not going to cite those systems...do your own research. You'd be surprised.
Die Mono Die!
Yeah, it's crappy. But heck, it's a move in the right direction. I know certain people (cough... slashdotters) are quite protective of the purity of writing unmanaged code.
.NET has trippled my productivity (on the Windows platform) and my approval rating at work has skyrocketed as I have rolled out several solutions on .NET that are stable, solid, and effective.
.NET equivelent (sp?) - cause then I could completely abandon Windows at home. But as long as I can code C# with such RAD success, Linux is going to have catching up to do.
.NET, and Windows Forms (and hell, ASP.NET) is. RAD is so important in the real world, that Linux would only benefit - incredibly - from a .NET like solution.
But that said, I have never developed software more rapidly than in C#.
I really wish that Linux had a stable
I applaud MONO. It's far from ready, but keep going. Keep working. Please - make MONO (or something else) as good as C#,
Excuse my speling.
Making The Bar Project
1) Rave about C# .Net
2) Convert everything to run on Mono C#
3) Get sued bad by the world's most deep pocketed software publisher except that unlike SCO vs. Linux this time the evidence is on the side of plaintif.
I'm not sure I dig the idea that the future of app development comes down to a choice between MS and Sun.
Exactly, there will be "kind of" a functional language - which has to use the same libraries everyone else does, which are all just like the Java libraries. So people using this pseudo-functional language will be hard-pressed to really see the advantages of a functional language as you would if you had a real function language with a set of libraries as broad as that offered by Java.
.Net and C# is the perfect vehicle to migrate users of all other languages to C#, not really to make life easier on people who want to work in one of the non-C# languages.
I formed this opinion long ago, just around when C# first came out, when I read an article by one of the founder of Eiffel talking about how Eiffel# would work (I wish I had not lost the link - I can no longer find this article). He saw opportunity at that point to gain new Eiffel programmers. But I saw only a tar baby, where the longer you worked with the system the more you just said "Well, all I'm doing is calling C# libraries with this weird syntax so I might as well make life easier by just using C#".
"There is more worth loving than we have strength to love." - Brian Jay Stanley
With new versions coming out regularly, any clone will never be caught up to the status of the original project.
I've been using pygtk on and off for the last year or so and i've got to say that when used in combination with glade it's a real dream to work in. I think if a Visual Basic like IDE could be created for those who are afraid of the deep end of text editor, command line tool development we could have a real open source Visual Basic killer on our hands. And i'll take that over C#/Mono any day of the week.
slashrank
.Net is the platform in which C# is the closest natural representation of what the bytecode is like. As such, .Net is a vehicle for C# and a distorted reflection of all other languages.
.Net is the VM and C# the language. But as Java has shown, it's not really so easy to keep the two wholly separate. They are interdependent to some extent.
Yes,
"There is more worth loving than we have strength to love." - Brian Jay Stanley
My guess is that Microsoft will significantly alter the .NET APIs for Longhorn, leaving Mono behind with older legacy libraries that are no longer interoperable with the Microsoft compiler and the rest of the Windows-using world. Needless to say, that would be bad for the Mono team.
.NET is designed to be and sold as a "cross platform" solution--a real way to do Java's "write once, run anywhere" line.
.NET and not Longhorn.
.NET work better", I'd agree with you. But that's not what you said.
Uhm, why would MS do this?
Introducing a crippling change for Longhorn would not only hurt this goal, but it'd bring down the rath of a few regulatory agences all over again--and piss off everyone using
Now, if you said "my guess is that MS will introduce custom APIs in Longhorn that make
There is almost no difference between C#/Mono/.NET and Java, but almost no Linux developers write in Java. Check out your distribution's packages and you'll almost see more JVMs than Java apps. And for some reason Linux developers avoid Java like the plague, even though it's got a godzillion features that make everything so much easier (garbage collection, huge consistent class library, security, etc). Put in a GTK or QT library interface instead of the slow and huge Swing (that Smalltalkers foisted on Java) and you're golden -- there's every reason to use Java, especially for applications.
The Linux culture has so far prevented Linux from taking the next step. Just look the (essentially) complete lack of interest in gcj (gcc open-source java). Just look at the slow pace of Mono. It isn't goind to happen anytime soon, unless the Linux app community wakes up and sees the future. Yeah, 10 years from now we'll still be doing manual memory management. Sure...
... to attack Microsoft on the .NET front. We have all the components of a powerful, truly cross-platform development platform; they just need to be packaged in a way which can compete with the cohesive API that is .NET.
.NET with a standardized set of support stuff on each platform, with a single installer to support the entire shebang. Why can't this be done? If I had the time, I would, but I don't. But if there was one place the open source community can take on Microsoft, it's development tools. And the time to do it is before .NET gets too entrenched.
Now, I'm not trying to start a flamewar here, so I'm not going to insist on specifics here, but what needs to be done is to create essentially a "distribution" of a powerful language (I'd use Python), a good cross-platform widget set (I'd use Qt, were it not for the license issues - personally I don't blame Trolltech for the licensing scheme, as $2500 is chump change to any real development house anyway, but in this case it would hinder adoption. Maybe wxWidgets then, or GTK+ configured in a way to appear like native widgets, but gah, GTK+ is such a hideous API), a selection of useful Python (or whatever) modules, and so on.
Like I said, this is nothing that didn't exist before, but it should be packaged in such a way as to provide a standardized environment on every platform that applications can rely on. Come to think of it, rather than use a specific language like Python, maybe the whole thing should just be wrapped around Parrot.
Anyway, the specifics don't matter. It's the idea of having a good competitor to
So now Miguel de Icaza is saying all that stuff is soooo passe, everyone cool has moved on to the next big thing. Excuse me? It can be passe if it isn't even stable and working yet!
Okay, YMMV. Maybe my experience is particular to what I'm doing, which is compiling from source using the FreeBSD ports system. But I have to say that the experience wasn't much different when I installed binaries rather than compiling from source. The shared libraries are changing their APIs constantly and breaking binary compatibility.
And then there's the performance issue. The last time I tried the GNOME desktop, it was just ridiculously slow. I mean, I'd click on an icon in the file manager, and I'd have to go get a cup of coffee and come back and see if it had opened it. People said, "OK, that was the old versions, now GNOME is more optimized," so I came back and tried it again, and it was just as slow. Well, if it's that slow when you're running all the stuff written in C, imagine what it'll be like when you're running .NET.
Find free books.
Saying C is dead is such a stupid comment, it invalidates anything else he might say.
New news forum for Canadians - CanadaSpeaks
For the same reason they did it with Java - if it's "write once, run anywhere", then why would you buy Windows licenses? Microsoft (quite naturally) wants everyone to run a Windows server and a Windows client, and having Linux be able to take either role with ease doesn't give them the leverage they need to continue their marketshare.
I have a dollar that says C is going to outlast C#. Right next to my other dollar that says UNIX (or derivative) is going to outlast Windows.
Why don't you use Java?
8 of 13 people found this answer helpful. Did you?
C is inferior, yes. It's hardly dead though.
I think C deserves a little more respect than a blanket comment like this.
We still have assembly languages today for several reasons, even though it's been "dead" since the 80's. Driver writers, compiler writers, and high performance inner-loops of scientific apps NEED snippets of assembly.
Thanks to the design goal of c (as the paint on the metal), you can now program in mixed c/assembly and thus never have to actually write anything in raw assembly files anymore. But you still write with the intention of generating specific sections of assembly.
The people that write c are those that are resource conscious. I am not aware of ANY other language that is allows resource management as well as C. "performance" is just one resource, and I know many argue that JIT's counter-balance the performance advantages of optimized c. I still refuse to belive JIT's have ever approached -O3 performance, but am willing to concede that a well written VM app can perform acceptibly.
ButMemory is another key resource management position that sometimes requires hard computer science to derive workable solutions.. When you abstract how resources are utilized (via a VM), then it negates the value of such hard computer science. Note that this ONLY applies to a particular problem space. Though, a non-trivial problem space to be sure.
The point is thus that the classic paradigm of "the right tool for the job" is essential here. There are MANY problems that are best done with low level, very concise languages like c. Most OS components, VMs, or fast-duty-cycle applications should very well have core work done in c/assembly.
The obvious other end of the stick is managing large amounts of code, for which assembly need not apply, and c is indeed becoming a distant memory as I think you are implying. Yes, web-services and many such fast-to-deploy applications transcend c, but don't be too quick to write-off the value in having a generation of computer scientists that are not well enough versed at writing low level applications.
-Michael
If you had even bothered to read the article, or even found the actual original statement you would know it was taken out of context.
Miguel even says in his very next statement words to the effect "c is dead, except for the JIT".
In other words, as far as application development is concerned (the main target of the CIL) c is dead.
Come on, lets not go on flaming without at least considering context.
My guess is that a PHB is more willing to switch applications as long as they still run in on windows, than to switch from windows to Linux.
So the most interesting thing for free software is not if windows apps are written in C#. The interesting thing is to port free Linux apps to windows, and so to speek invade the windows domain with free software.
That way windows users can get a first taste of what Linux can offer without leaving the confort of their familliar windows environment. It will also force propriatory software companies to compete against free software on the windows arena. Their chances of being succesful in that competition increases if they can offer cross platform solutions just like their free replacements.
If windows users start to use these free apps instead of closed source ones from venders like Microsoft. It will be much easier to switch OS from windows to Linux.
God is REAL! Unless explicitly declared INTEGER
How true, how true :) Although, this is coming from a VB job. My position, as a senior software engineer, is one of having to produce massive amounts of working code in short periods of time. Yeah, it sucks. Yeah, it's against everything I hold dear about programming. But Yeah, it pays the bills readily. So we used to use VB for ActiveX mixed with ASP for web front ends where necessary (MS was mandated from above.)
.NET and I have seen massive productivity from myself and my staff - and most importantly, it's f'in nice to be back in a C type syntax. Nothing was worse than code sans-line-terminators!
.NET and C# was more than alright with me.
Now we've moved to
So yeah, JAVA would be ok but wasn't allowed (prior to my obtaining this position) and VB was already prolific in the enterprise so the move to
Excuse my speling.
Making The Bar Project
There isn't a demand for anything like that on linux though. Linux programmers tend to know a few different languages (a couple of high level perl/python like ones, C or C++, bash/tcsh/ksh/etc shell scripting, and sometimes Java) and use what ever one is appropiate for the job (I over generalized, I should say, that's what I do). You know pretty early on what language your program needs to be written in. The problem with just using C# is your still just using one language. You're not using the right tool all the time. It's the same reason I tend to disagree with Sun's attempt for Java to take over the world. You end up driving in a screw with a hammer.
First, I would say that Operating systems are in the same boat as operating systems. Maybe this was supposed to say "Operating systems aren't in the same boat as programming languages"?
I think the implication is that, if you trust Microsoft to set the standards, you'll spend all your time and effort playing catch-up to them when they change to a new standard.
For an example of this, look at the Samba project. Yes it's been successful, but look at how difficult some of the advanced functionality was to get correct (Active Directory for starters)
Mono will always be a second-class citizen in the .Net world, precisely because it isn't supported or backed by any truly large player that can hold some influence with Microsoft.
Overrated / Underrated : Moderation
Mono is a DotNet wannabe.
DotNet, of course, is a Java wannabe.
Why not just use Java? Oh, that's right:
Microsoft - Duplicates anything they don't own and control
Open Source Movement - Duplicates anything someone else owns and controls
So is much of the class library. Same goes for Java, they have a small-as-possible native layer somewhere further down and implement everything above it in the language itself.
Karma: It's all a bunch of tree-huggin' hippy crap!
If I need to write a daemon that handles 250,000 hits/hr, I write it in C. Hands down, C is the only language I know where I can control memory and CPU usage. The only language where I can predict what will happen with some accuracy. If I write a program in Python or Java or whatever, it starts consuming RAM, it starts context switching at the wrong times, etc. On a recent Python project I had to actually go into the Python memory allocator (written in C) and do some hacking, because it didn't work right for my project. So obviously C is well and alive.
.NET program on Windows, I ... USE WINDOWS! Maybe I'll "play" with Mono, but at the end of the day the only reason I'd use Mono is for Windows interop. Not to replace Windows.
.NET's dev tools and IDE for Ruby, then I'll get excited.
If I need to write a quick script, but make sure it's clear enough to understand next week, I use Ruby. A lovely, well-designed language. Why bother with compiling and linking? Go dynamic.
If I want to use an awesome development environment, I use Mac OS X. Aside: sometimes I wonder if people who rave about the latest scripting language or the latest Windows dev tool, have ever actually *used* NeXTSTEP/Cocoa! It's still light-years ahead of what most people use. Look how many examples in the Gang of Four patterns book come from NeXTSTEP!
And, if I need to write a
C# is a nice improvement on Java. Which isn't hard to do.
Like a lot of folks I look at Mono and I just don't get the point of it. It's Microsoft's technology, it's always going to be playing catch-up... to a mediocre environment.
Give me
I respect Miguel, but I think he seriously underestimates the risk posed by MSFT's patents in this area. Quoth the article:
Microsoft has granted a license to use this technology under so-called "reasonable and non-discriminatory" terms.
"Reasonable and non-discriminatory" (RAND) does not imply "free". RAND was the proposed licensing requirement for W3C patents that was howled down by the community.
Given that MSFT is willing to finance SCO to use arguably illegal tactics to destabilise and discredit free software, who would expect that they are above enforcing a small fee for every patent needed to implement Mono? They needn't do this immediately, in fact it is in their interest to wait until the technology is widely adopted, so they can slug everyone at the same time. Note that the usual legal defences against "submarine patents" won't work either if the terms have been disclosed to be RAND all along.
Obviously this guy has never been in an Engineering College lately. We are still learning C. Not C++, Not C#, Not Java, C. As in where you have to declare all your variables at the very beginning and can't declare them anywhere else. It's how we program microprocessors (among other things) in something other than assembly. And I highly doubt they will make a Java compiler for PICs, Motorolla HC11 and HC12's and various other devices any time soon. Besides, I here places are still looking for COBOL and FORTRAN programmers. Seeing as how those two are still here, C still has a long way to go before the white lillies come around.
Fly me to the moon Let me sing among those stars Let me see what spring is like On jupiter and mars
Is that 'C' or 'C-Bang'?
I think Mono is a really nice way of putting gnome a bit to much in the way of the Microsoft Bulldozer.
Do ANYONE think that MS would let the oppurtunity to use a patent against OSS go by?
Without a written consent from Microsoft openly stating they wont sue and slander i cannot give in to Mono. If gnome is built upon it i will go elsewhere with my business.
Call it damage control in advance.
HTTP/1.1 400
No language can replace C until it can compile its own compiler written in itself.
now we need to go OSS in diesel cars
Intel have a C compilers on a bunch of platforms. So does GNU (and Sun, and Microsoft).
Software doesn't suddenly become useless simply because another vendor releases a competing implentation on the same platform. If MS do release a
Boffoonery - downloadable Comedy Benefit for Bletchley Park
C is a language with the flexibility and speed of assembly combined with the ease of use of assembly.
Of course, that's tongue in cheek, and yes, C's concept of arrays is perhaps too tied to a specific kind of machine architecture (and to BCPL's concept of arrays),
but
while C is far more portable and easier to code in than assembly, one great feature of C is that, if you know a particular machine's assembly language, you can look at your C code and pretty easily guess what assembly instructions will be generated from it.
I recall when I was first learning C++ -- and no, I'm not a C++-hating C bigot -- one thing that annoyed me was the realization that what seemed a straightforward C++ function call -- or even more straightforward, an operation like i + j, when performed on class instances, could be much much more involved.
(Consider the example I just gave, i + j: in C++ this could easily be i.operator+( j ), which might involve an implicit converting function or constructor to make j into the right type for i's operator+, and operator plus could easily be a virtual function that did some work and then called a super-function to do the rest of the work, and it wouldn't be a good operator+ unless it returned by value, which would mean that there'd be a (probably implicit, in the code) call to the constructor for whatever class i was an instance of. And we haven't even mentioned Handle-Body Idiom or Template Method Pattern or Pimpl Idiom or exception handling yet.)
I soon got over my annoyance when I realized that it was precisely this ability to concentrate this much -- and much of it mostly automatic, as with converting functions of constructor calls -- into the semantics of addition, i + j, that makes C++ such a powerful tool in the hands of the right programmer.
The trade-off, of course, is not being able to see the assembly language instructions in your mind anymore. The good programmer chooses his tools and his trade-offs.
So to bring this back onto the topic of the post, I highly doubt C is dead or even dying or even a bit ruffled around the edges -- there are still, and for the foreseeable future, there will be, very very good reasons to use C -- it's the portable lingua franca of programming, and it's a remarkably clear language that allows one to concisely describe what otherwise would require lots more asembly instructions.
Opinions on the Twiddler2 hand-held keyboard?
Why develop your own IDE? Why not write a plug in for eclipse?
Bah, you probably wanted something written in C#. So much wasted effort.
The best way to support the US war effort is to continue buying American products.
"Would it be more secure?"
;)
Not necessarily. It could just as easily be a gaping hole. It depends on the quality of the code.
Would it be a bloated pig? Now that's another story.
Seriously... There is no magic bullet.
No miracle language, no supa dupa development method, no virtual virtualization, is going to replace a competent coder. Get over it.
Yep, I read your link. I have a philosophical difference, however. If someone has to know all that esoterica to be a "real" programmer than it's the language that is broken. That language just begs for problems (and bugs).
--
The early bird catches the worm. The worm that sleeps late lives to see another day.
A man is a good programmer or he is not a good programmer. He is not "a good C++ programmer". Whether he has learnt some esoteric nuance of a language does not make him a good or bad programmer. A particular language is just an interface to the act of programming, like a GUI is an interface to the act of using, and if it does something surprising, the problem is likely with the language, not the developer.
When over 95% of "C++ programmers" that I interview can't even answer this: straightforward question about virtual methods, I see no hope for the language. It seems most people who claim to be C++ programmers just say that because they use a C++ compiler and stick their functions in objects.
I'd like to point out that there is absolutely nothing wrong with writing "C with Classes." It makes a whole lot more sense than trying to fake it with structs and function pointers with only a minimal loss of efficiency. Certainly replacing all char pointers with strings would make up for the inefficiency with the huge amount of time saved debugging. Just because operator overloading, templates, references, etc. exist doesn't mean you have to use them. I mean, no one puts a gun to your head and forces you to use Swing in Java just because it is standard.
Second, that question should have been rather simple to answer for anyone who was aware that the std::complex template has a copy constructor with an implicit conversion. Not everyone knows that simply because complex isn't exactly the most widely used thing in the world. If you are going to ask that quesiton, I'd recommend defining a template in the code to make it obvious.
The language features in C++ can be abused, but a huge number of errors I see are from misusing APIs and none of the high level languages like Java are going to make sure you are paying attention to what you are doing.
The world is neither black nor white nor good nor evil, only many shades of CowboyNeal.
Microsoft has a *huge* patent portfolio. If you honestly believe that Microsoft doesn't have at least one patent against most major projects, you're being terribly optimistic.
May we never see th
Seriously dude, that is most definitely not a straightforward question. It's carefully designed to test your understanding of some of the subtle tricks and traps of C++. And one of the "tricks" it uses to mislead you has nothing to do with inheritance, rather with implicit casting.
I must admit I got tripped up on it though, mainly because I'd forgotten the distinction between hiding and overriding. The question is nasty, ugly, and was intended to be as confusing and tricky as possible... and any programmer that writes code like that (especially something involving changing the default value of a parameter for an overriden method) ought to be shot.
BTW, if you're asking questions out of GOTW as interview questions, I can only say that that's pretty nasty - except perhaps as a final round question for some of the really cocky smart-arse types :-). Or if you're looking for a seriously hard-core C++ expert, in which case you'd probably expect him/her to have read all of GOTW and Sutter's books and know all the answers off by heart anyway.
There's certainly a depressing number of such people about - though nowadays they're mainly moving into Java, a language better suited to their limitati^Wcapabilities. And I say "Hooray!" to that :).
Pete (who has for the last two months been maintaining/debugging/adding features to a 1998-era MSVC6 project, written by a guy who really had no idea about C++. Sigh.)You know what? You don't have to even use pointers in C++.
The idea that a C/C++ program is more likely to be buggy than a VM that is also a C/C++ program is a bit off. They are both C/C++ programs... hey! I know... do what the geniuses that work on JIT or VMs do!
I have a theory that programmers should understand memory.
I also have a theory that next programmers will complain about having to use end-paren and close-bracket... "we're only intested in begining the function parameter list... the computer should close it for us!
-pyrrho
half that esoterica wasn't even implimented while C++ became popular.
Because functions declared in structures is 90% of what C programmers wanted out of it at the time. Having constructors and destructors was also quite nice. And that is enough to use C++ right there.
You are not supposed to use all the esoterica.
-pyrrho
However note that you can write insecure code even with MSWord or Excel macros.
(but yeah, I agree with you in general - high level applications shouldn't be worrying about the stuff you mentioned)
I know a dozen other people have probably already said this, but if you think that question measures whether someone is an effective C++ programmer then the problem is with you.
It's a neat trick and the last bit (where default params are resolved based on static type while method calls are resolved based on dynamic type) fooled me. But it has nothing whatever to do with a software engineer's job, unless that job is writing C++ compilers.
Put away your book of trick questions and hire a C++ programmer who understands patterns, algorithms, project management, requirements, and important standards and protocols.
Whence? Hence. Whither? Thither.
I have to agree. C is not suitable for general application development any more. 'back in the day' we were forced to use C because of performance reasons, but now computers have more than enough horsepower to run higher-level languages smoothly.
You can already see this with web applications: almost nobody writes them in C. They use PHP or Perl. There languages are just far better suited for web development than C.
It may well be that Mono/C# is becoming more suited for general application development than C. Or maybe Python. Or Perl.
I think that in the not-so-distant future C will only be used at places where performance really counts, hidden deep away in libraries and the operating system.
The advantage of replacing C with a higher level language: programmers will be able to concentrate more on the application they're writing and less on the low-level things like coding linked lists, hash tables, etc. This will improve the quality of the applications. Or make applications more complex with constant quality.
An advantage of C#: developers will be able to distribute just one binary version of their application, it'll run on any platform. Not very important in the world of Open Source, but still a nice thing to have.
This is your sig. There are thousands more, but this one is yours.
That link is a good puzzle but I don't know how well its going to help you find good developers in an interview. I remember I was about a year out of college when I discovered such details of C++. I was like, "WTF? I'mn not overloading that one...why am I here?". About 5 minutes and 1 small program resembling the one in your link I had my answer and moved on.
So was it that one year of experience you would be seeking? Or would it be my problem solving skills that when my code doesn't work I'll find the answer quickly and consistently? When I interview, I try and discover one's problem solving abilities, not one's specific knowledge. It obviously all depends on what role you need filled.
A C/Java world with no C++? Most of the software I've written in the past few years has been C++ with lots of C influence. Lots of functions, few objects. I probably have more structs in cvs than classes. Its really nice to have my function/struct style code and my message/class style code coexist freely.
For example, I have a system I wrote that the backend database is all in shared memory. I played with classes in shmem and I put some templates there, too, with the Allocator. In the end, I chose structs because I was able to exploit their fixed size to make things quite speedy.
But now I have a Phd physicist that needs to do some serious matlab-style maxtrix maninpulation of my struct-based data. And he can 'kind-of' code. It was nice wrapping up access with some matrix classes so it all looked more like matlab to him.
I think there is still value in having all that in one language, even though it can make it an ugly one.
Before you go ripping me about my opinions on Java, ask yourself: Can you program in Perl or Python?
I code C, Ruby, Perl (when I have to), Java, on a daily basis and I still disagree with you. Before you go making uninformed statements, ask yourself: Have you actually any foundation to make claims about Java?
All interpreted languages are abstractions over Lisp
So why did he define an overloaded '+' for strings?
My concern is that Python is still a work in progress as a Java replacement. Notable lacking is an array type (list of elements of all the same type making it more efficient than the list-of-objects approach in both memory and speed). How is a person supposed to do graphics by computing rasters without a good array type? I believe Lisp was originally everything-is-a-tree-data-structure, but they must have added proper array types in the Lisp machine days.
But what about Numeric? Well yes, you can use C extensions to define whatever kind of Python container object to serve as a proper array, but that container object becomes this atomistic entity that requires copying all the elements in and out to Python lists to interface with just about everything else. And Numeric is a work-in-progress because it is being replaces with NumArray which is in some state of beta test. And are these things standardized enough that you can say (like in Matlab), here is an array of pixels I have created, plot them as a bitmap image?
It's just Another effort to make Gnome "multiple programming language friendly" than "user friendly". Geez aren't they obsessed.
Time can be better spent elsewhere, for example, using network transparancy of CORBA, adding back features deleted from Gnome 1.4 in the name of "simplicity" (sorry, it is not defined that way), creating a better open file dialog box, and fixing bugs.
I completely agree with this previous story and think Miguel is leading Gnome to a wrong direction. I'll stay with the other favorite desktop.
But, I think that if anyone can pull this off, Jim can. The concern I have is whether he can keep the language alive. Development on his Jython project seems to have ground to a halt since the release of Jython-2.2a1 last summer.
the growth in cynicism and rebellion has not been without cause
I think the implication is that, if you trust Microsoft to set the standards, you'll spend all your time and effort playing catch-up to them when they change to a new standard.
.NET is not in any technical merits/demerits, it's in the fact that it is Microsoft's!
Yes! This is the biggest problem I have with any Microsoft standard. They have done this since they started; create/coopt a standard, change the standard with every release and deliberately break compatibility with any previous version. It allows them to "churn" all their competition, tying them up with changes just to make existing stuff keep working while Microsoft "innovates".
Mod me as Troll if you must, but the biggest problem with
It is almost ironic, that while both Mono and DotGNU aim to support .NET on Linux and various platforms, Miguel claims that "C is dead" while the folks over at DotGNU have been working on the C compiler portion of pnet. In my opinion, it's much more advantageous to support multiple languages and platforms, as to bring in developer support and a wide userbase, than to narrow yourself to a few platforms (I read about Mono just getting ported to Sparc64, while DotGNU's pnet has ran on it for some time, among many many other platforms. Ranging from the Playstation 2, to the iPaq.) and trying to depreciate (In verbal statements or otherwise) other languages. Sone of the major points of the IL platform in general, are it's ability to run the same binary on multiple platforms and operating environments, and also the ability to compile multiple, and completely different languages to it. It seems like Mono is sort of missing the boat on both of these to a certian extent.
Regards,
Chris Gilbert (Neovanglist)
I would prefer to hire a C++ who did *not* know the answers to those questions. Why? Because a good C++ programmer would never write the sort of ugly code where it would even be necessary to know the anwers to those "language lawyer" type questions.
But I think the main reason it is a higher level language is because java code can run on any machine.
;) ).
ANSI/ISO standard C++ code runs on any machine with a C++ compiler just like Java code runs on any machine with a JVM. Note that I'm assuming that you're using C++ for its C++ features and not for some of the ultra-low-level C features like embedded assembly language and what not.
It is my opinion that jobs are simply human economic slavery (stop rolling your eyes
I am a conservative, but I also agree with you for the most part. Most people do a job that they hate because they have to pay the bills. I wish they could/would do a job that they like instead.
Therefore, I don't know how you can honestly call for the vast majority of programmers to be fired. If the vast majority of programmers should be fired because they are "bad", then the same should apply to police officers, doctors, scientists, sanitation workers, and so forth.
Well, I think if they're not good at their job, they should be fired. If you can't handle the job and aren't qualified, then you have no business doing the job. You may think this makes no sense, but I don't think people with no skill should be doing skilled jobs. It's not in the employer's best interest to employ people who suck at their job. I don't think you should develop languages so that bad programmers can make bad software. You should develop languages so that good programmers can make great software. I'd even be ok with allowing mediocre programmers to make good software, but I feel that a lot of the new languages are dumbing things down so that bad programmers can make bad-but-not-terrible software. Yes, C++ allows a bad programmer to make catastrophic software, but they have no business making software at all.
You seem to create a totally efficient world where humans are operating at 100%. Unforutnately for you, it isn'g going to happen. You literally have to replace humans with robots for that to happen.
I don't really want 100% efficiency. Sure, it'd be great because 100% efficiency would pretty much mean that humans can sit around and do as much or as little as they want, and everything would "magically" appear like in Star Trek. In our current system though, I just think you should get the best person for the job and develop tools to allow them to work better instead of developing tools to allow unqualified people to work somewhat less dangerously but in other ways more dangerously. (I assert that software should work perfectly, fail gracefully, or fail catastrophicly. Software written in "high level" hand-holding languages by bad programmers will often fail silently, continue running, and break important things due to logic errors. At least C++ will usually cause the problem to dump core due to a memory error before it smashes things up too bad.)
I expect bad programmers in India just like in USA. In any case, jobs are being outsourced for financial reasons--not quality.
Perhaps I wasn't clear enough. What I meant was that in my experienced it's bad programmers who get outsourced because you can get better-or-equal performance for a lot less money. Good programmers don't tend to get outsourced because they're cost effective. That is to say, I don't think bad programmers in the US deserve the same salary as good ones.
I don't know THAT much about languages but I don't think C++, even written to ANSI specs, would be machine compatible across platforms. Wouldn't things like 'little endian vs big endian' cause problems? I am assuming those problems don't exist in C# since it uses a VM (that's my impression). In any case, most people don't write ANSI standardized code.
It's source-portable, not binary portable. Java and C# aren't machine portable anyway. They're bytecode portable and interpreted by the VM into machine code at runtime. That's why I said it's portable as long as you have a compiler, but non-standard C++ isn't C++. Non-standard Java isn't Java, and non-standard C# isn't C#. The standard defines the language.
Only a minority of people are good (in the sense that they do the work, perform well at school, etc). Yet you cannot only have schools for these good people. You need schools for everyone.
You can fail them until they learn the material, or you can make the school teach them how to do things in a way that they can learn.
But that is never the intention. I am sure that the computer scientists who create new languages never have the intention of building a language for bad programmers.
I'm sure that they don't, but if a language hinders good programmers while enhancing the performance of bad programmers, I think it's a bad language. That's all.