The Problem Of Developing
A reader writes "ZDNet News is running an editorial about the choice of programming languages for developers today. The author suggests that developers have been left with little choice because all of the current programming languages are essentially the same."
They both are brilliant innovations by Microsoft that will carry us all into the wonderful future on the information superhighway!
The owls are not what they seem
where do they get the idea that c# and J2EE dominate the market now? i still see a lot of development with c or c++ for speed reasons. Java may be a great language in theory, but it still has issues with speed over a native language.
The author obviously is not in the right industry if he thinks developers only will program in VB.NET, C# or Java. I suppose I shouldn't show up to work on monday for the job I got programming C, because once the word gets out I'm *sure* that C will only be found in a museum.
Yes but every time I try to see it your way, I get a headache.
There may be only two choices for making internet apps, but a lot of development is still going on that uses neither .Net nor J2EE, and will continue to do so for the forseeable future.
He needed to make it clear that his scope was only web-based development.
I think this article is basically ZDNet trolling again. After all, the more "controversial" the article, the more hits they get = more ad revenue.
So today's developers will use one of three languages: Java, C# or VB.Net.
Strange, a lot of projects I'm familiar with don't use any one of those languages. I think it depends who you talk to.
I think the author believes in two common fallacies:
I'm sure the argument is a lot more valid for big corporations, but they've always been bastions of VB and "4GL's" (even when 4GL was just a marketing term). Basically, /. has been trolled again.
---Windows 2000/XP stable? safe? secure? 5 lines of simple C code say otherwise!
The short editorial is good in that it points out what I suspect most developers already knew (but the marketers would never admit) -- there basically are very few choices offered in terms of "how to do it". As a matter of fact, I know in my part of the country, 95% of Internet application work being advertised is one of two things: ASP/DCOM apps, or J2EE apps (using IBM Websphere, sometimes WebLogic).
That's it. No Web job I looked at in my two months of searching for a job recently specified anything else. No Perl. No C++ unless the job also specified ASP and DCOM. Certainly no Zope, Tcl, etc.
Is this because no one uses any other technologies? No, of course not... but those other approachs lack a strong marketing organization behind them... Programming is as prone to the influence of hype as anything else.
That is what I think is important to assert; that other choices do exist, and it should be our job as supposed experts to investigate all the options. Diversity is a healthy attribute to have... Let's hope the "hyped" languages never succeed in marginalizing all other approaches.
It's a strange world -- let's keep it that way
Except in the bizarre world of the CLR.
.NET have limited themselves to C# and its "skins", as pointed out in the article.
Programmers have many choices. Programmers who choose to use
--
E_NOSIG
Just intriguing to see. J2EE, .NET, etc., all definitely have a place, but it is interesting seeing how many people hop on the bandwagon without requiring the developing company to prove that they eat their own dogfood.
Turing wrote something about this awile ago..
The question left for the reader is where this leaves developers. Was it a better world when developers could chose different languages based on the requirements of the application? Or should all languages do the same thing with different syntaxes? Microsoft has decided which way it prefers, and choice is out.
You still can choose different languages. Nothing says you can't use C/C++, VB 6, Perl, Python, or whatever else you want. While the implication in the article is that all developers have only two choices, the article should have said that Windows-specific developers are left with the two choices of Java or the CLR languages while other developers are still free to choose the tools that fit the problem. Nothing has changed unless you are only going to do Win32 programming.
He's got a good point. .NET may give you a choice of language but it really pretty much boils down to the same choice, that is using the .NET framework libraries and CLR. In other words, writing C# code is much more similar to VB.NET programming than it is to "legacy mode" C++, for example.
The skins analogy is really neat, too.
Maybe all programming languages are becoming more similar because early programming languages were inefficient or lacking in some way. Everyone is striving for the same efficient design and structure.
I'm not afraid of falling, it's the sudden stop at the end that frightens me.
...the programming language being used by a potential employer.
Hmmm all languages are the same ... maybe that's because all languages end up doing the same thing: pushing bytes and pixels around.
Ansatz: programming will change when the underlying fabric of computation changes. For right now that's probably not until the advent of quantum computing.
The article is overall pretty positive, but I do disagree with a few things.
I specified VB.Net as opposed to VB; even though Microsoft would have you believe otherwise, the two are really different languages.
I don't think MS is really trying to hide that VB.Net is very different, and many many VB developers are mad at it for changing things so dramatically. Although the syntax is close, there were many changes, some make necessary by the fact that everything is now an object, and some just to drop bad practices (Wend, Goto, Variant, As Any, etc.).
The article also makes it seem like MS is advocating C# completely replacing C++, which it is not. C++ is still included in Visual Studio.NET and although MS is pushing C#, it's not going away in the MS toolbox.
If you want an example of MS dropping a language, look at Visual FoxPro. Anyone remember FoxPro? MS is still officially "no comment" on the matter, I wish they would just come out and announce that it's dead.
The different languages for CLR being alike to skins is a pretty original argument. We could pick it apart, but I see where he's going with it.
Please subscribe to see the more insightful version of th
It's almost as if the only publications he reads is Zdnet and has developed a very narrow focus. What about PL/SQL, SQL, Perl, PHP, Python, Microstation, Forms, Reports, Delphi, and on and on.
.NET - some of us have to make a living.
Not everyone is doing just J2EE or
As far as I know (not far?) C++ and C are still widely used in industry. The editor speaks of C++ significance as something of the past: 5-years ago.
GUI skins are discussed as a pretty weak analogy of language interfaces to common runtime libraries. Then of course, the editors example of a GUI skin is Windows XP.
Where I work, C++ is the prime langauge. But then, we're worried about cross-platform development. Maybe that's a thing of the past, too.
Don't waste too many brain cells on this one.
XML causes global warming.
I one thing I haven't seen much comment on through the whole .NET debacle is whether MS is going to force everyone into their .NET VM. I can't imagine that the next version of SQL Server (for example) is going to be rewritten in C# and run in a VM, so they must have a real compiler left somewhere in the company. Plus device drivers still need to live underneath the VM, not on top of it.
.NET is the only way to write code now (hey, it's not like anyone's going to miss Win32 :) ).
Can end users still buy VC++ instead of Visual Studio.NET ? I tried poking around on the MS web site and couldn't see it. MS seems to be trying really hard to convince everyone that
Hmm... I'm no expert, but neither, apparently, is this guy.
A) All languages share a common runtime: Assembly. Just because I can run LISP and C on the same computer/runtime doesn't mean that they're similar. CS is all about abstraction. Of course you can have the same underlying structure, you can have different underlying structures too. That's the beauty of abstraction!
B) Java and C# are not the logical successors to C/C++. They're more like a smalltalk with a C-syntax and some trade-offs for efficiency. In terms of providing system calls and API's that are cross-platform... Well, even more like smalltalk!!
C) Remember, C++ started out as a preprocessor for C. Any "C++" code just became C code that was uglier to look at. The difference between procedural and object-oriented isn't that big a deal, other than it's often easier to think in OO and easier to implement a language that's procedural.
For a more interesting observation about the same problem that comes from Rob Pike (big UNIX guy at Bell Labs, co-wrote the UNIX Programming Environment) go here: Systems Software Research Is Irrelevant. It makes many good points about how cs is more the same than different now as compare to 10, 15 even 20 years ago!
- .NET is a Java rip-off, pure and simple, maybe it sounds a bit exaggarated, but it's true nonetheless. Microsoft never does things right.
- Rather than considering Java an evolution to C++, I'd much rather call Java a supplement to C++. C++ is still being widely used as the choice language for system development on UNIX, and where maximum performance is required. Have you ever tried to run a web server written in Java as opposed to a web server written in C++ (like Zeus or even Apache)? You'll know that instant where C++ has its purpose. Besides, C++ today is ISO standardized so programming in C++ and sticking to the ISO/POSIX standards will allow you nearly the same platform independence as Java does (w/exception to stuff like the GUI's). Java offers this 'language centric' approach to programming, where the language itself shields the programmer from being sloppy or not careful enough, however that comes at a price of losing closer control of the platform you are working on, which is fully there when developing in C++. You cannot make low-level system calls in Java. Functionally you can achieve probably the same in Java, but the total control aspect is not there as when programming with C++. This is one distinction many 'language' evaluators do not make between Java and C++.
'A lie if repeated often enough, becomes the truth.' - Goebbels
correct me if I'm wrong here, but... object-oriented programming is not a language so much as a development philosophy. "Procedural" Java code is certainly a reality, even if the language was not designed to be used in this way. And VBA within the Excel and Word object models sure seems like a proper OO language to me...
-rene
See you on the playa.
I thought the author was claiming that this would become the case only if .NET squashed Java. He doesn't suggest that J2EE and C# are the same.
The same means lower learning costs and a greater ability to communicate and share code between programmers.
The overall cost of a new language outweigh the benefits. This means no new languages until something comes along with an overwhelming benefit.
Don't hold your breath, but when it comes, it'll really be worth the wait.
There are still millions of lines of COBOL, FORTRAN. And you can still develop in ADA, LISP, Scheme, etc. Compilers exist.
Sure - Java, Pythol, C# are pretty similar. But what about Lua? PERL? Or CURL?
Sounds like a case of the "good ol' days".
or did this guy not seem to know what the heck he was talking about. Plus he completely ignores languages like Delphi, Kylix, PERL, PHP, etc.
Or is it just that he works for ZD?
Nearly every programing lanagage is turning compatable (or turning complete). There really isn't much more to say. If you can write the program, you can in any language.
The only exception I can think of is sql, and that was never intended to be a programing language. (although i've not kept up, it might be turning complete by now with extentions I'm not aware of)
Revolutionary devolpment has stagnated, but that is good. House devolpment has pretty much done the same thing, I know people who live in houses 150 years old, and they are contrstured much the same as modern houses. Sure a 2x4 has a standard size now, while it didn't then, but that is a minor evolutionary change, not a revolution. We no better than do write languages the way cobol was written, but the only revolution since cobol is OOA, and there is OO-cobol for those who want it. (there were other evolutions that cobol missed out on, and some would argue that OOA isn't not a revolution either.
The author suggests, clearly "Microsoft has decided which way it prefers, and choice is out.", and not that developers face today a hard choice when looking for programming languages.
It's easy to see the difference here. This article only scratches the "All languages look the same", specially for coders. Maybe for deployers (if you make this separation).
He even let the essential point, for developers, by throwing questions (2) to the air.
Well, let me answer what the article should have touched. It's not the programming language that MS or Sun is controlling, but the tasks to be performed that they are limitating. By making a common programming framework, so widely marketed and, good or bad, soon to be accepted, from Microsoft or not, they are essentially narrowing the solutions that one might come for a problem, since you have to do the 'framework-way'.
Yes, it's good to have a common ground where applications, services and solutions can be distributed. But a lot of problems will arise when you can't (or perhaps should not) use the right tool for the right job.
Buy a Nintendo DS Lite
Choosing a programming language is fairly easy. I don't know what this guys problem is, sure most of them are the same, IN SYNTAX, but each have their advantages/disadvantages.
First you decide what you want to do with your program.
If it's purely web based, like most of the applications I write, then it's easy, you've got java, php, perl, maybe some others. Now php has high security risk, so rule that out. Perl is much more secure than java, but java is more portable, so there's your trade off, decided what is more important.
If it's system based, then it wouldn depend on the target OS. If it's linux then you choose perl or C depending on how low level you need your program to be. If it's not linux, you speak to the project leaders, and get them to make it linux.
Basically it boils down to, perl or some crummy other language.
Kids, you tried your best and you failed miserably. The lesson is, never try. -- Homer J. Simpson
We have C derivatives (C, C++, C#, Java). They all have their benefits and weaknesses.
.NET's CLR, unless somebody comes up with a hardware CLR processor, or hardware JVM. Yeah, right)
We have things like Pascal (none of which IMO, are very powerful).
Then we have LISP, which scares the hell out of me. [I won't thouch that with a 20-foot pole]
All of these are OO in some shape or form, but some are better in certain places. I have never cared for Java, or interpreted languages period, but I suppose they've got advantages like Java does in web plugins. So there is no 'logical evolution,' but just a wider variety of niche languages. (Somebody still has to use stuff like C and C++, to run interpreted languages like Java and
People have strayed from languages like LISP because it is so radically different, and most programmers are familiar with C-style programming. Personally, I have no dillema - I don't see C or C++ going out of style anytime in the forseeable future. Maybe you have one if you're a newcommer.
Just my $0.02
Usually in media the editorial process is such that the writer doesn't determine the headlines or titles for his articles -- that'll happen at the production stage, at which point the article is out of the writer's hands. I agree that it should have been made clear, though, and if I were the writer I'd be getting on the editorial staff to get on the web staff to change it, because it reflects poorly on him, when it shouldn't.
--------
Bleah! Heh heh heh... BLEAH BLEAH!!! Ha ha ha ha...
The author has brought up the point that since the CLR is being used that the functionality offered is essentially the same, regardless of the language, and that it is similar to the "skinnable" feature of windows XP. That is syntax from language to language is similar, but since they are running under the CLR, the functionality has to be the same.
Hello? How is this different than compiled languages? Ultimately, machine code gets executed, whether you are writing C++, C#, VB, whatever, and machine code has a fixed number of instructions. Any feature of a language is simply compiled/retranslated into machine code anyway. Thus the limiting feature set is what you can do with the machine code. Period. And it has ALWAYS been this way. How does using a CLR make this any different?
Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
This guy is saying that programmers only have 3 choices; Java, C# or VB. He backs this up by stating Java is what you learn in school these days.
Do not buy into his "reasoning". When I was in school, they were teaching Scheme and Lisp--make no mistake, what they teach is school is not what will build the future! The programmers who only learned what the professor told them became tech support and helpdesk. In those days, to be a 'real programmer' you had to know assembler and 'C'. They made the big bucks, and all major operating systems and applications were written in them.
Today, things haven't really changed that much. Professors are teaching goofy stuff, programmers get a degree but never learned pointers, and the major software is still written in C. The major difference is the success of C++. Yes, there are lots of Java programmers out there, but really fairly few *major* Java programs. The major OS's and applications are still written in C and C++,rather than assembly.
Of course, in the end, if you learn 'right', what language you use is simply a choice, like a carpenter might use a metal hammer for nails, and a rubber hammer for wooden pegs. The right tool for the job. Today, the jury is out on C# being the right tool for anything, and even Java is still a new fangled gadget that hasn't fully proven itself in the toolbox.
While there is some overlap definitely, each language currently available has it's own strengths.
If I want to do some simple coordination between a webpage and a mySQL db, I use PHP. If I want some useful scripts on the server to handle various administration tasks, I switch to Perl. Sure, either one could do the job of the other, PHP can run in place of shell scripts on the server, and Perl has a long known history of its usefulness in CGI, but I believe you use the best tool for the job at hand in either case.
Other languages out there have similar strengths and weaknesses...Javascript handles framed webpages brilliantly, but I didlike it for handling anything else (personal opinion). C is faster than Perl (without getting into mod_perl or various tweaks) if you are running a CGI on a webpage that will deal with heavy load. Visual Basic provides an interface (not saying a good one) to creating full blown Windows applications, you can do the same in Visual C++, but that depends on preference.
To say they are all the same shows how little the author of this article knows about working in the real world, with real problems.
Kickstart
2d sentence is redundant to 1st, pls fix, thx.
Example:
Look at some of the other languages that have been ported to the CLR. In every case, those languages have had to lose something important that made them different to fit the common dominator offered by the CLR. Microsoft has brought the notion of skins to programming indeed.
(emphasis mine)
What a gratuitous (and feeble) claim. The author obviously think that about 3 languages exists: C(and friends), Java and VB.
Some functionnal languages have been successfully ported to the CLR, and they didn't need to be amputated for that.
For example, Standard ML and Mercury. Both have been succesfully ported to the CLR without violence to those languages.
So, in conclusion, I agree that when you know only 3 procedural/OO languages you might be under the impression that all languages look alike.
Move along, nothing to see here.
cheers
What's .NET written in?
oh...
hmmmm....
GOODNIGHT EVERYBODY!!!!!!!
Ok Everyone who loves Java, Post to the left.
Everyone who loves C, C++, Post to the right.
Perl, Python Can post to the Right as well.
I guess I'll have to tell my boss I can no longer do Perl scripting for him. And I suppose I'll have to stop writing the shareware game I'm working on until I have time to convert the existing Objective-C to C# - assuming that there will be a MacOS X C# runtime and IDE that I can use. And I suppose all of that C code I've written in the past will have to be junked by the people using it.
Oh, well. Another day, another stupid analyst.
-- Two men say they're Jesus. One of them must be wrong. - Dire Straits
That's funny...I've been developing for many years, for a number of very large companies, and I've seen no indication of a mass exodus towards J2EE and .NET. With a large base of C/C++ legacy apps already in place, there's not a chance in hell J2EE and .NET will "rule the world" anytime soon (if at all). I've seen too many "large-scale enterprise solutions" become waterlogged by voluminous requirements birthed from the loins of the J2EE standard, or slowed to a crawl by megadollar application servers that simply can't scale worth a damn.
Sounds like this guy's just trying to make a name for himself. To me, it simply appears to be a load of FUD, with no basis in fact (like most FUD).
The author suggests that drivers have been left with little choice because all of the current cars only have four wheels and an engine.
"Argue with idiots, and you become an idiot." -- Paul Graham
I run a software development section for the Marine Corps and we use two languages that are very different.
C is used for all our web based stuff to ensure that it is platform independant. We could have used C++, but most of our programmers are folks who have a limitted background with computers so we keep it simple. Java was also rejected for reasons of simplicity as well as the sheer number of pages I've seen crap out do to poorly written scripts.
VB is used in conjuction with MS Access when we need a quick and dirty DB for someone to do some custom queries on. Again, choice of language is mainly due to simplicity as well as the DOD's preference for MS on the desktop.
While these two languages really don't look that different just looking at the code itself. The environment and process of writing in them is completely different. We have actually found it better to train our folks in VB first because once they learn C, they usually have an aversion to going back to VB's limitations despite its simplicity.
Other languages such as Perl, php, and C# were considered, but rejected to stay inline with the majority of software developed for DOD.
Hope this was informative.
I've dirtied my hands writing poetry, for the sake of seduction; that is, for the sake of a useful cause. --Dostoevsky
I'd argue that there's a lot more perl out there doing heavy duty than there is Java. Python (by way of Zope) is also gaining in popularity.
this is getting old and so are you
blog
Author seemed to not consider Scheme and Prolog. Meanwhile its not widely used, they find a niche in research community. They use different paradigm, not just a mere different syntax.
It is true that general programming language is dominated by OO-based or imperative based programming language, but things keep improving. Like Java -- it includes features on type safety to some extent. Newer programming languages are designed to ease developers for rapid development phase and overcome various limitations from their predecessors. Thus, developers in turn do have choices: Whether they want to use the newer ones or not.
Since programming languages are designed to ease users, they are specifically designed with as minimal amount of learning as possible. Hence, since virtually all programmers are familiar to C/C++ syntaxes, the design of the new programming languages tend to adopt them in the hope that the language will be quickly embraced. Thus, this explains why the newly programming languages are like C/C++ or using this paradigm.
Now OOP paradigm has "invaded" the market. Aspect Oriented Programming is yet another new concept to supplant the OOP. When better paradigm comes, it will eventually be embraced after it has been proven cost-wise and time-wise worthy. We will witness whether this is true in the near future.
Just my 2c.
--
Error 500: Internal sig error
In fact, if one were to look at computer science departments across the country, you'd see that Java has replaced C++.
Yes, and don't we all remember computer science departments espousing all sorts of other languages that had no commercial following (AlgolW) or limited mainstream application (Pascal)?
Computer science courses use computer languages for a variety of purposes, such as teaching algorithms, language design and compiler writing, several of which are quite different to the requirements of engineers building substantial systems.
Yes, language B might end up supplanting language A, and if it does you might note in retrospect that computer science courses started using language B before engineers, but you can't make the deduction the other way around.
Just check out how many Java contractors are currently out of work in the UK and compare with C++ contractors.
From the article:
So today's developers will use one of three languages: Java, C# or VB.Net.
Does anyone else get the feeling this guy has never done any serious programming?
- VB.Net is completely useless for the majority of software being developed. (Personally, I think it's totally useless but I digress...)
- C# hasn't really shown me anything that Java hasn't so I don't really see how it's going to replace C/C++ in places Java hasn't.
- Java... wonderful Java... the same Java that was predicted to take over the world several years ago (much like this article is saying). Now, I personally think Java is great for many things but I also think it's unsuited for many others.
And I really don't see scripting languages (e.g. Perl, Python) going away real soon... and C isn't going ANYWHERE for quite awhile - what language do you think your OS is programmed in? How about your cell phone software? Palm software? I don't see any of these programmed in ANY of the languages the author mentions.
Oh and what about AI? Which of these is going to replace Lisp and other functional languages?
Nosce te Ipsum
I am astonished that this commentary could completely ignore C++. I am currently enrolled in classes in the ACS department of the university where I work. Java was considered as the teaching language but C++ was the final choice. The reason for this was that a survey of other colleges showed that C++ was still the language to go with. Thus being of greater use to students as they will graduate with the same skills as future competitors.
.NET and JAVA is asinine. Frankly, with the amount of "Legacy" code out there in COBOL I think that is a language that many are "forced" to choose. Additinally what about MAC OS X bening based on objective C or the hundreds of other languages out there. Hell I know some people using RealBasic! As far as moving to .NET or JAVA I would have to say that the development world has quite a while before being forced to make that choice.
/.
Making a claim that developers "Must" choose between
This crap should wind up in the editor in chiefs waste basket. And definitely not make it to
Perhaps this is the result of being stuck in an academic situation right now, but perhaps the idea that all languages are the same is because - get this! - they are.
When one can reduce anything to a Turing machine, there isn't anything we can't do with say BASIC that we can now do with C# or Python. It might be faster (to a degree) or more elegant, but still possible.
Perhaps we should focus on pushing the envelope computationally by demanding new models of computation that would break the Church-Turing universiality of computation. Biological or quantum computers have the means to give programmers new ideas that are completely different from what we've already seen - just look at Shor's or Grover's algorithms for quantum computers. These CANNOT be done on a regular computer.
----------
I am an expert in electricity. My father held the chair of applied electricity at the state prision.
By the end of the year, two platforms--J2EE and .Net--will essentially control the programming languages market.
What the hell is he talking about?
Here's another fellow that just reads the headlines of the marketing speil he's fed. He is obviously talking out of his hindquarters.
.NET are all that there is are Sun and Microsoft. You just don't see Guido or Larry or Bjarne sending out PR statements that frequently.
C/C++ are still widely used and widely supported. Most shops do not dictate the implementation language. That decision is left to the project leads. Software engineering projects at most companies vary in scope greatly. Some projects must be done at a lower level than Java and require C/C++ or even assembly. For other projects, Python might be a more reasonable choice. Hell, for some projects Lisp or Guile might be the language of choice. Just because it is uncommon does not mean that choices don't exist.
In any case there is a wide range of tools available. The only folks saying that Java and
the growth in cynicism and rebellion has not been without cause
Do you think that all the software developers out
there are writing commercial apps?
I doubt it.
More likely, the vast horde of swengers is
writing custom apps for their employer.
Only a small percentage are writing shrinkwrap crap.
Firstly, the writer has donned blinkers and cannot see outside the very limited problem of the quick construction of client-server systems based on reusable components.
Secondly, it really doesn't matter what the implementation language is. It never did. A talented programmer will use what is there. In the course of my career I have used everything from PDP11 assembler to perl by way of Cobol, Pascal, C/C++ and Java. The writer just doesn't seem to appreciate how much code holding the internet together is in languages that are rather more mature and fitter for purpose than the latest craze has a chance to be.
Color me cynical, but I suspect he's only talking about this particular thing because that's the kind of thing that gets convention-goers to bug their bosses to send them to.
Whatever happened to "Use the right tool for the job" ? There still isn't a language half as expressive as Perl, for things like text manipulation. Sure Java has a regular expression library, but things like in-place text substitution, and a myriad of other conveniences are built into Perl - that would just be painful to do in Java (which I understand fairly well), or C#/VB (which I know little about, admittedly).
It doesn't matter what development tools you have, it's what you do with them that counts.
Comment removed based on user account deletion
Neither is new or inovative. C# is a combination of C++ & Java with a few changes here and there.
.NET, Microsoft just combined existing technologies for other areas. Take there idea to compile everything down to one to one language. It is not new. I go into this here. The only thing Borland didn't do is create a an interpreter for the common language. If they would have done that, you'd have part of the new compiler that Microsoft has in VisualStudio.Net. I should also mention that Microsoft owns a portions of Borland.
As for
The idea that Microsoft created this completely new and innovative technology is strictly a PR campaign.
At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
Oh my god. Moses handing down tablets from on high? A sweeping statement supported by no figures, no examples. Why will they be dominant? Why will they supplant C/C++?
I would assume that basically all of the Unix market will remain on C/C++/fortran/cobol. Why? Because J2EE and .Net are buzzwords and Unix people have an uncanny nose for sniffing out this kind of crap. And the Unix market is big enough to ensure that your virtual-machine-of-the-month based language "controlling the programming languages market" is always going to be a dream.
And everyone will shop online, and bookstores will go out of business. I'm sorry Matt, haven't you heard of MY object orientated virtual machine based runtime enterprise kidney beans based language? It's called Bollocks# and I think you will be finding it dominating the programming language market this year.
Java is the natural place that people flee to when they can't cope with memory management and pointers. Java is a beautiful language, and the class library is exceptional. But the layers of indirection added through the JVM will always make it slower, and never a language that will replace C++. Just as C++ will never replace C (in the forseeable future), because C++ has its own levels of indirection and safety which slow it down (RTTI, virtual tables, etc). Different tools for different jobs matey, not "one language to rule them all".
Java is easier to learn. Hence you can push out more graduates from Compsci courses with it. Unfortunately, you can't apply those guys to say, kernel programming or embedded systems work because they are clueless w.r.t memory management and the guts of the machine. And when speed is paramount, what is a Java programmer going to do? Turn the hotspot flag on and hope for the best? What if it needs to be *reallly* fast, like "we want operation X under Y instructions on the CPU". You're out of luck. Wrong tool for the wrong job.
Fuck I'm sick of reading this. Another pundit just jabbering off his ideas with only a market analysis background (a poor one at that), not a technical one. I'm sure heaps of IT managers will be reading his column around the world, nodding their heads sagely.
I haven't even had a coffee yet.
Ash OS durbatulk, ash OS gimbatul, ash OS thrakatulk, agh burzum-ishi krimpatul! Uzg-MS-ishi amal fauthut burgulli.
To cite just one example, the author seems never to have heard of the venerable UCSD P-SYSTEM
Sig: What Happened To The Censorware Project (censorware.org)
Beyond that, little has changed in terms of choice. If you don't want to go with the industry standard, you can still program in Lisp, Smalltalk, SML, Ada, Objective-C, or whatever else you fancy.
Does C++.NET still support multiple inheritance?
...richie - It is a good day to code.
I think the editorial dude is right... I mean look at this!
/n
/n
/n
/n
/n
/n
Return Line:
Perl -
C -
C++ -
Pascal-
Delphi-
Batch -
My god.... they are all the same!!!!!
www.slightlycrewed.com - Because aren't we all?
Interpreted languages pushing aside compiled languages for high performance computing? Uh, no, that doesn't follow, and the reason is that if you need the maximum possible speed and efficiency, you don't want the over-head of an interpreter. In other words, if you can get by with using an interpreted language, it is not high-performance by nature. Only by having the luxury of more-than-adequate system performance can you afford to interpret everything.
But, on a different tack, why do we care so much about the languages we use? Why are we so stuck on "my-flavor versus your-flavor"? And more importantly, why is there always this huge push to make one language dominant over all fields? Why can't I just use the language that best expresses my ideas? (if starting a new project ;-)
"Avast! Prepare for the rodgering!" THWACK! "Arrr.. me nards.."
Just to close out the whole function language argument that came up the last time .NET and languages came up, here is a link to a paper that was in Dr. Dobbs about a functional language for the .NET platform: http://research.microsoft.com/~emeijer/Papers/Mond rianDDJ.pdf
Sometimes it's best to just let stupid people be stupid.
Because all languages can be reduced to a Turing Machine, we should all program in UTM.
Fascism starts when the efficiency of the government becomes more important than the rights of the people.
I've been programming for more than a decade using Objective-C, until recently on Yellow box, and not so long ago, switched to GNUSTEP and Cocoa.
Even if the syntax is very close from C if you want it to be that way, I've never had the feeling of programming with a language that ressembles any other C based languages.
It's quite powerful, indeed, and gets your projects done in less than anything else I know of, and the environment is just beautiful too.
PPA, the girl NeXT door.
-- I feel better now. Thanks for asking.
>>If this is true, then how did Java get into the >>mix after starting from scratch only five years >>ago? As you may have guessed, many people see >>things a little differently to the way
>>Microsoft does.
5 years ago? Strange...... i must have been halucinating when i was running Sun's HotJava web browser on my Sparc10 back in '94.
And before it was branded 'java' it existed as 'oak'.
Not to slag Sun since i think java is pretty sweet, but you'd think in the EIGHT damn years since it first came out they'd have sorted out some of these same platform incompatibilies that plague java developers. "Write once - debug EVERYWHERE".
Well, at least they admitted AWT was a piece of shite and moved on to Swing (which is nice, but a reasource hog).
Becuase in some cases it is just barely coming alive. If you look at the source code for most of the Open Source Projects you can see that a vast majority of them are still written in C. C++ still does not have as much of an installed base as C.
.NET technology is going to knock off a language base over night is just plain false when one considers just how many technologies are all ready implemented in that langauge and how important it is that those technologies be maintained.
.NET will be a short lived fad than the likelyhood that an established technology will just disapear in the night.
Predictions that the
It is more likely that
There are still many other languages in use. People will not abandon all others for these. Platform independance is nice, but somebody has to write the J2EE and .NET environments. Not only that, but somebody has to be able to write device drivers, operating systems, and other programs that would be difficult to write in such a framework. This all seems to assume that anything but web programming is dead.
Given that Perl imitates Lisp and Scheme more closely with each release, that GC made it into the mainstream with Java, and that Python eventually got lexical scoping, maybe you should revisit your idea about whether what they teach in school is what will build the future.
Interesting perspective..
What I got out of the article was:
Because of CLR, most languages for a common runtime will end up having the same abilities, just different syntaxes.
So, if you know VB.Net, you'll be as 'powerful' a developer as someone who knows C#. But then your C# is probably watered down also.
I think he's saying CLR has it's advantages, BUT keep in mind you may be sacraficing a better tool for the current job.
Kinda like Java.. choose interpreted platform interoperability over compiled speed.
I saw/remember nothing about "All other languages will die.." What would I do with my REXX knowledge? :)
"I can't give you a brain, so I'll give you a diploma" - The Great Oz (blatently stolen sig)
Maybe languages are close to the same because a) they evolved from the same root, or b) they are settling in to some pattern that meets most of the needs of programmers.
For example, say you had a function which performed a series of calculations and returned an list of integers. You then wanted to know what the first of these numbers was. The haskell statement for this is:
head yourFunction
Unlike Java/C++ the whole of 'yourFunction' isn't evaluated, just enough to generate the first element, as that is all that is required. It isn't necessary to write a function which specifically works out just the first element with the minimum amount of work. Well, this example is trivial but you can imagine this has many time saving / code simplifying advantages.
Strangely enough, Haskell is nothing like any of the mentioned programming languages...
...because the language market is not only j2ee and .net. I mean, come on: these are server-based technologies. What makes them useful for the average (read: non-connected) desktop application? Ok, I need to edit a text file, but before I can do that, I need to fire up my own personal .net server or bea server or whatever. right...
That is like saying computers are only for the internet.
-- yawn. --
The most widely deployed Turing Complete machine/language is a close race beteween Javascript and the Wintel machine code, with Java a distant 3rd. Since there is a problem with reliance on machine code for dynamic installation of software over the network, that leaves Javascript the most obvious candidate in which to write other languages. Most people never thought of Javascript as anything but an afterthought to HTML so they might have their eyes opened a bit to the power of Turing Completeness by seeing the TIBET virtual machine written in about a 100K Javascript embeded in a web site's (gzipped) HTML. It gets away with this by dynamically patching (Perl-config style) Javascript incompatibilities and building out from the set of features thereby supported cross-browser.
As I've written elsewhere, this isn't the ultimate language by any means -- but it is a critically needed repair to the foundation of the web that can be followed by more advanced VM's later on.
Seastead this.
Hah! That bug was in certain versions of the commodore 64 rom (backspacing over an extended line could crash the machine). Of course commodore basic was originally written by ... microsoft!
This is the worst piece of trash I've ever read. I hope this doesn't do any harm to the industry. I guess I'm going to have to learn VB.net or C# if I want to keep my job huh? I don't plan on learning those anytime soon. If my company requires it, I'm leaving. I'll go work at Taco Bell and get discount meals and paid vacation!
*Only* C# can access the whole feature set of the CLR. Other languages get close to varying degrees. So the C# developer reigns supreme in the .NET universe.
--
E_NOSIG
... is being an engineer who's boss will read this article and take it as The Truth.
Nosce te Ipsum
I understand your point and his ... its the framework not the langauge. The problem is that the J2EE and .NET framework do not solve all of the programming problems out there, especially in the low level system and the embedded world.
.NET.
Also the power of different languages is in their implementation methods particularly procedular versus object model designs. Again one or even two frame works cannot solve all of the problems out there. If the author's piece is in the view of web services the I agree you will most likely be using J2EE or
Yes but every time I try to see it your way, I get a headache.
Delphi and Kylix are exceptional languages, though essentially the same, which offer many benefits over VB, especially in their cross-platform support.
It is now Ada.NET
Steve Ballmer: developers developers developers developers...
developers developers developers developers...
developers developers developers developers...
developers developers developers developers...
The funniest video I've ever seen...
And there may be other three-wheelers out there.
I suppose the key advantage of microsoft's new langauges is their accessibility. They make programming easy and allow just about everyone and their pet monkey to make interactive web-based services. The problem with the article is that it refers to the majority of programmers and not the majority of programming. I'm sure 5x as many people are employed using these langauges, but I truly believe they are doing 5x less programming from a difficulty standpoint. The difficult applications (signal processing, computer graphics and games, server and embedded systems, AI, whatever) are all developed using C, assembler, or some other more empowering language. I think we need to develop a distinction between end-user net-service based programmers and true developers. Something like the distinction between a carpenter and my sister who assembles furniture from ikea. I apologize to everyone I have offended. But all the hard stuff is still done with langauges that I respect.
Autocoding project proposal
If you cannot tell the difference between a three deminsional data array or 3D computer graphic from
3 dimensional Reality, then the Matrix has you. If you are confused about the three deminsions of length,
width and height, then the matrix has you and you don't know it.
But seriously, see the code for what it is, super-impose the nine action constants upon what you do in
coding to find the control points for automating.
As an example of these nine action constants, everybody uses them all when
comming to slashdot, reading and posting comments.
It's physics!
Lets see now:
Switch (AI - alternate/activate interface) - start and stop, change
interfaces - Uh, start up Web Browser and connect. Go to slashdot,
newsarticle, thread....
Apoc (PK - Place Keeper) - keep track of where you are - Pick up where
you left off on the thread..
Tank (OI - Obtain Input - Output to-> Input) - get input - read with eyes.
Mouse (IP - InPut set) - input from - internet and monitor
Dozer (OP - OutPut set) - push output to - via keyboard/mouse to
Slashdot comment posting
Neo (SF - Sequence stufF) - one step at a time - damn this non-polyphonic
qwerty keyboard and mouse...
Morpheus (IQ - Intelligence Quotient) - what's the meaning of the post
I'm reading, what the meaning I want to respond with - within the
(KE'd) constraints of
Trinity (ID - IDentify) - identify posters and forum - hey there is one
by ____ in ____ forum, now I know to be (KE'd) constrained as to
how I respond.
Cypher (KE - Knowledge Enable)- constraints to apply to Morpheus (IQ)
meanings and Trinity (ID) poster named _____ and _____ article.
which is why the russians moaned that your software kept losing them...
As recovering former ZD employee, I can attest that the "the glory days of pitting WP against Word against Ami Pro" is dead on!
My conclusion: The author is trying to reach a broad number of readers, many who aren't familiar with .NET, the CLR, Java and how thier programming paradigms are almost virtually identical. (I've mentioned it before, .NET is a Java rip off)
.NET being the only 3 choices in the future." I guess he figured that C is going to go way of assembler as virtual machines begin to outperform C code with super optimized JIT code.
.NET are only capable of supporting the language paradigm that Java and .NET share.
.NET...
.NET's CLR. I suspect that Sun is probably working on an Interoperation method somewhere...
As far as his claim is concerned, "Java and
In light of all this, the author has concluded that any modern language will be a Java clone only varying slightly in basic expression syntax.
Futher, he seems to suggest that Java and
THIS ISN'T TRUE...
People have already implemented a number of alternative languages for the Java platform including Lisp, Python, and god knows what else.... The same for
THIS DOESN'T MEAN THERE ARE NO ISSUES
The big issue with JavaLisp, JavaPython, and JavaBasic is how to get them to interoperate. Microsoft provides the interoperation with
In conclusion: He's wrong and he's right...
"Communism is like having one [local] phone company " - Lenny Bruce
I disagree slightly that Java was the logical evolution of C++, because it lost something that the creators of C++ tried very hard to maintain when they "upgraded" C: efficiency. Java, whatever the excuses, is not very efficient, and most developers know it. This is NOT to say C# is much better, but it does leave us wondering why Java, which had such a big head-start on MS, could not have done a better job with the architecture of Java.
A virtual machine runs bytecode. Bytecode is generated by a compiler. The high-level language is superficial. How exactly is this a hack?
"He was a wise man who invented beer." -- Plato
From the article:
Matt Liotta has been a software architect for several start-ups in San Francisco and Atlanta. He is now an independent consultant and speaker at industry conferences.
He did some quick programming for some failed startups and realized that the money was in being a consultant and talking about software rather than creating it.
Anyone surprised he does not know what he is talking about?
.
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
No surprise that frameworks designed for the same market provide similar interfaces. J2EE and CLR compete for infrastructure ubiquity, so their goal is to be portable and invisible. The interesting work takes place at the layer below (operating system VM) and layer above (application-specific libraries).
The layer below will be done by Sun, Microsoft and assorted platform vendors. Over time, the VM's will be optimized up to platform limits. But the application layer will remain wide open for innovative, industry-specific libraries.
Vigorous competition will take place among Visual Basic and Java/J2EE components (ported to their web-services equivalent). To speculate on the topology of that landscape, one could interview domain experts (e.g. telecom, bioinformatics, finance, geodata, defence) about their investment in application toolkits.
A question worth asking -- at what stage of its evolution will the Apache API gain "language" status?
Don't miss the Feb 2002 article on the MIT Lightweight Languages Workshop.
Rich
IMHO the ideal language would have the following: objects/classes, inheritance, polymorphism, private data, public data, NO MEMORY allocation or automatic like perl/Java and a good clean garbage collector (like perl), i.e this leaves out C/C++ as both require either you write a garbage collector or you do the alloc/free. Compiled to executable code, with a fast easy to use GUI IDE for graphics, cross platform capability with NO "if window do this else if mac do that etc. (Java is not compiled to native exe). Also it needs the standard for/next, switch/case, while/do, etc. Visual basic comes close but it is not cross platform compatible. Lastly it needs to be fast. What language do you know of that fits this? Oh and there is more......
Only 'flamers' flame!
Well, until you write a different "dialect" of your language, like using Eiffel# instead of Eiffel - which is not really an improvement and not the vast world-changing development improvement that Microsoft said it would be.
I wish I could find the previous /. or k5 story that had a link to this article, but basically someone did the math and discovered that the CLR only really supports certain kinds of language characteristics, and so eventually to use the full power of it you have to use a language that is essentially C# with different tokens. C# is the "common denominator", and other languages will need a C# compatibility layer of varying complexities, depending on their similarity to the concepts that make up C#.
Your right to not believe: Americans United for Separation of Church and
Delicious mix of procedural and object-orientedness expressed like smalltalk that can control most applications on the platform, now with Aqua UI. Course, it is slow, it is interpreted, but it's faster than doing it by hand.
Do I get to be a developer? I've only been making programs for eight years, though.
The real problem with languages today are that they aren't created to solve a problem, they're created to make money. Languages used to be developed to make systems programming easier than doing it in assembler (C), or make logic programming easier for first order predicates (Prolog). VB.Net and Java are there to make money for their creators (Sun and Microsoft). They have a kitchen sink attitude with features and are targetted at applications developers with sometimes no formal training in Math or CS. They're not efficient, different or revolutionary. They're designed for what Sun and Microsoft think the IT market wants.
Leave the gun, take the cannoli -- Clemenza, The Godfather
Whether this claim has any merit or not is left as an exercise to the reader.
"Biped! Good cranial development. Evidently considerable human ancestry."
We're just now getting standards-compliant compilers, implementing the fancy stuff like partial template specialization. At the same time, people like Andrei Alexandrescu have just lately (past couple years) showed us what can be done with these capabilities. The combination of operator overloading, multiple inheritance, and fully-implemented templates lets you do some flat-out amazing things.
To paraphrase Andrei's book: You have a meeting about this big app you've written. You decide Module X needs to be speeded up, so all the smart pointers should go unchecked. You change one line of code. You discover you need multithreading in module Y, and all the smart pointers need to handle multithreading and locking. You change one line of code...
That's policy-based programming, which is just one of the techniques Andrei presents. Design your app right, and you can put off all sorts of architectural decisions until later, and change them whenever you want. And this flexibility costs you nothing at runtime.
What about Python?
Python is not "like" any other language- it is an amalgamation of the best features of many languages.
I program in Python because the language does not get in my way- of doing things. Later its easy to port Python apps to C, Fortran, whatever. The opposite route is pure hell.
Replacing a position because some guy back in '83 decided to use the odd-ball programming language : $120k
Maintaining 17 different operating system at once : $225k
Answering calls from 200 end users with slightly different desktops : $57k
Having your entire network, the networks of all your end users, and your entire array of backup systems turned into incomprehensible mush overnight due to an advanced virus that could easily target and replicate in your undiversified computer systems : Priceless
"Your superior intellect is no match for our puny weapons!"
I largely agree with you about Smalltalk. I often rant in a similar veign myself. I just want to present some things that have given Java (at least) something of an advantage:
1. Memory usage. I know its somewhat spurious, but things like VisualWorks could get really huge. Squeak is better, and of course computers have largely caught up, but Java's one-application-per-process approach and dynamic class loading has arguably been more practical than the Smalltalk wopping great image file approach.
2. Dynamic compilation. OK, it was invented for Self, which is arguably even neater than Smalltalk, but its finally found widespread use with Hotspot.
3. Static typing. I'm unconvinced myelf, but a lot of people are very suspicious of dynamically typed languages, probably because they're confusing dynamically typed with weakly typed. However, it does help with static analysis - although of course 99% of Java environments don't do this.
Where is it?
You know, real programmers code their apps in Fortran 95. Well, I suppose real programmers program in 66, or FORTRAN IV or something, but I'm young and I don't take to Hollerith. Fortran!
Fortran programmer...oh yeah. Array math for life!
There are huge numbers of major Java projects. You just haven't seem them because they are used internally by large corporations in "invisible" roles. Absence of evidence is not evidence of absence. I happen to have lots of evidence of presence.
I hate how corporations feel like they get to dictate when things as global as the internet need to change just because they want to. Let the people catch up to the langauges. I am just learning Perl, my first programming language, and MS already has 2 new languages that are supposed to be the norm for the Net.
s/Microsoft/Greedy-Mongrosoft/g
ZERO ZERO ONE ZERO ONE ZERO ONE ONE! Just brushing up for my next big invention: Ethernet over Voice (EoV)
You could explain to anyone with a modicum of intelligence how C's pointers differ from object references in Java in about 10 minutes. Anyone with a CS degree will know about the memory model of computers well enough to understand.
I don't know what planet you live on, but on mine "top coding jobs" rarely hire people on the basis on knowledge of awkward features of aging programming languages.
>In fact, if one were to look at computer science departments across the country, you'd see that Java has replaced C++.
Too bad they don't define the standard languages... PASCAL anyone?
This guy had no idea what is going on in languages. IMNSHO.
-pyrrho
I don't know what language we're going to be using 25 years from now, but it's going to be called FORTRAN.
(sorry, someone had to say it.)
Tarsnap: Online backups for the truly paranoid
That's the prequel to the movie "The Unbearable Lightness of Being", right?
Help me out here, c'mon.
Thanks.
Is that they really don't improve programmer efficiency over the languages made yesterday.
Java is not much better then C, C# and Java are very much the same. VB, well VB doesn't make it easier to program. All these languages suffer from the same problems.
It's still very easy too.
Write unmaintainable code.
Write APIs that make no sence.
Write insecure code.
Write code that nobody else can use.
And too hard to write code that is..
backwards compatable
self-documenting
easy to read
self organizing
Without good programmers it doesn't matter which language you are using, as all of them suffer from the same faults. Where are the totaly visual languages, LabView anyone? Not as good as it could be, but it's a start.
Why are all new languages text-based? None use color (does color fourth count?). Python uses whitespace as a way to imply function (a good thing). With 17" COLOR monitors being the minimum that a new or year old computer has as it's display you would think that us developers could devise a language that allows us to express to ourselves as well as it expresses to the computer.
You can write unmanaged C++ and target the CLR, in the sense that the compiler will generated CIL, and a CLR-compliant execution environment will be able to run it. What you cannot do is have the CLR understand your C++ classes and objects as classes and objects, because the CTS object systems only supports single implementation inheritance, uses a garbage collector and so on. To shoehorn C++ classes into the CTS object model you have to use managed C++ (which is really gross lookinng).
In order to interoperate with other CLR languages you need to comply with the CLS as well. This limits the use of various things. I think it is at this level that you lose templates.
This editorial shows how completely out of touch zdnet has become. EVERY project I've done for my CS degree has been in C or C++. I've NEVER had a class that used Java for ANYTHING. And I'm at a very major engineering university. VB and VB.NET my ass.
Someone who doesn't know much about the deep technical levels of programming has been writing this article or he is attempting to aim the article at a non-technical audience.
.NET initiative. The rest moves toward Java. In the company I work we have productions on both platforms. We don't have the focus on the name of the language anymore. For us its much more important to make the correct architectural design of the system as a whole, and this require skills in IT architecture (especially OOA). In that sense I agree with the article, when it says the choice of language is not the key issue.
First many will note the lack of many common programming languages. As an example, have I seen quite huge programs made in Perl.
In my experience (by now I know more than 15 programming languages and shift between them depending on assignment or task) I have only found two major categories of programming languages. Sequential (C, Perl etc...) and Object orientated (Java, C++ etc...). When you know 2-3 languages in each of these categories it becomes more a question about knowing the syntax and knowledge of the language supporting procedures (or libraries if you prefer).
Today the OO languages become more and more commonly accepted as best practice. I believe that's why Microsoft goes the OO way with their
Some of the solutions I have been involved in I have found some algorithms to be more effective to optimise when using a sequential language. Especially when you have to work on long arrays of data or the amount of objects that interfere with each other increase dramatically. (I have seen this in some chemistry and physical models.) It is therefore not easy to conclude anything in general, but choices have to be made case-by-case.
Other things to consider are the computer on a hardware level. A CPU typically runs programs sequential order. Those working with assembler know this. (Of cause some may be working with parallel computing and multi processors, but that's an entire story of its own...)
-:) Oh no - not again.
www.rednebula.com
Sometimes you have to look at the content of the message to determine its validity.
Here are some stats:
Article paragraphs 16
Words 2257
Lines who cares
Is it even remotely possible to make a detailed, technological, informative argument comparing the costs-benefits of all the different programming language and runtimes available in 2257 words.
I think not.
managers...why god invented purgatory
Java is way up, but recently .net is getting some of its share. VB is down over the past two years. C/C++ is down but holding on, expecially for embedded applications. Delphi never was big, but it is hanging in there ok. Cobol is way down, about equal to Delphi now for advertised positions around here. SAS is also small but strong. Demand for Perl and Powerbuilder are shrinking fast. Python was a little blip a year or three back, but it has just about vanished. All the other favorite languages are very rarely advertised for anywhere I can see here. Demand is nearly nil for all the functional and constraint languages, also for Smalltalk and Tcl (which were very hot five or six years ago), also for awk, Eiffel, Modula, Ada; I've got three hard drives full of worthless software, and no income to get updated with.
Good analysis. I find writing in Java to be a very pleasant experience. But when I'm searching for a utility on Freshmeat, the Java programs don't get even a glance. I'll always prefer programs that are faster and smaller to those that are slow and bloated.
Of course marketing types will always write articles like this, and the definition of "using" a language is dependent on how many tools you buy.
There are lots of people out there maintaining COBOL and Fortran.
There are lots of C programmers using vi who don't show up in marketing research reports because they aren't buying the latest tools, and are just busy writing code.
There are lots of people working in C++, because while Java provides a lot of nice features, power is nice too, and it is easy getting used to templates, operator overloading, inline methods, etc, etc, etc.
Java is nice (it is what I have used for the last few years), and is a good general purpose programming language, after you get over not having destructors, etc, etc, etc.
There are lots of oddballs out there using Objective C, Smalltalk, Lisp, Prolog, etc, etc, etc. My first professional programming job involved using Commodore 64 BASIC. It was perfect for our application, and at $120 a shot, it was by far the cheapest solution.
There will always be a diversity of programming languages, especially with middleware like CORBA and XML to allow old code to communicate with newer code.
When did
What language is the Java VM written in? What about the C# compiler? What about the network drivers that
Maybe weenies will be using Visual JavaBaby#.NET in years to come but the people who write the 90% of the iceberg journalists don't see will be using real programming languages.
-- SIGFPE
Mr. Software Architect in this article clearly doesn't ever touch programming languages. I do hope we can all at least agree that he has no business writing about the evolution of development tools.
Hell, I am tired of arguing over what language to use to do simple applications, and most applications are pretty simple. Don't believe me? Then consider the poliferation of applications that are written in VB.
I take the "if it feels good do it" approach to programming. If you like the language and feel productive with it, then, hell, use it.
I like writting apps that do things, not learning new languages or arguing what language it better.
The author has over simplified multiple things in his article. Every simplification has enabled him to claim things that on the surface seem reasonable but in practice are false. To further increase the noise he has a lot of his 'facts' and 'assumptions' incorrect.
1) "J2EE and .Net--will essentially control the programming languages market"
How does he define the programming languages market? There are more people employed writing "vertical applications". Their choice of language and libraries is typically dictated by legacy: fortran, cobol, lisp, C, pascal, etc. What about embedded systems: assembly language, C, C++, Forth. High performance computing using vectors and parallel algorithms have a whole set of specialized languages.
2) "Still, it is an amazing achievement to be able to support different languages on the same runtime, right? I certainly think it is, but others would disagree."
Where has this guy been? By the early 1980s there were compilers for Pascal, C and Fortran that compiled to P-code (a common runtime) and were either compiled to native machine code or ran in an interpreter. Not a new concept. It is just that people are ready to accept the cost today.
3) discussion of what is the natural descendant of C++.
Who really cares? Once you've chosen a language to write in, it doesn't matter how it came to be. It supports a set of programming constructs and has a number of libraries available for use (that may support the type of program you are writing). The evolution of the language is completely irrelevant.
Language designers are very aware of other languages (more so than Liotta) and will borrow/steal ideas and syntax that they like. The language is designed with a particular purpose in mind. There are literally hundreds of domain specific languages that work better than C#, Java, VB for their intended task. They may be similar to another language, or use similar constructs but they are not the same.
4) "With .Net, there is only a single runtime (functionality), but different language syntaxes (look and feel) can make use of it."
There has always been a single runtime, the machine code. It hasn't prevented languages from having different semantics from one another. .Net and JVM won't prevent it either. The syntax of a language is almost accidental from the point of view of the language designer.
I could keep going but I'm also over simplifying so I'll stop.
- AndrewN
Is that where J2EE comes in? I don't know that much about java. But I heard somewhere that
Disregarding ZDNet's best efforts of attracting attention to themselves, this brings up a subtle point -- possibly alarming to those bonafide "computer scientists" out there. Unfortunately, this will be somewhat off-topic, but it reminds me of current programming method. It has been my experience that the popular languages follow a familiar syntax: function foo { do { weeeeeeee(); } } This describes things like Perl, C, C++, Java, JavaScript, ... you get the idea.
How many people do you know that write in any language as if it were C? There should be some nods out there. C is procedural, of course, and came from a bygone era where a console was the hip new thing. Unfortunately, people still seem stuck in these times. Object-oriented programming, is a technique, not a language. Some people have picked up on this and relish in object-oriented design, milking it like a cash cow. Others have taken it about this far:
function foo() {
do {
IhateOOP->weeeeeee();
}
}
Some people, no matter what one does, will take the newest thing and try their darndest to change the smallest amount while learning it. In the process, they disregard any new methodology these newer languages could provide.
At this point, I would like to make some people here scream by mentioning... LISP. Remember this thing? Did you have to program under one of its cousins in college, like Scheme? It's a nifty language, with some powerful stuff. In between all the brain damage of recursive, paranthetical expressions, there is some important lessons in programming in there.
I feel people forgot the big picture here. They can make these C-like languages do anything, if they hack at it enough. That includes GUI programming.
So what if it gets the job done. Does it have a level of elegance? There is plenty of disgusting GUI code out there. Programmers shrug and accept it as a way of life. But who is trying to innovate and create the language of the future?
We need to step back, and think about everything we really want to do. Then we need to ask ourselves if the languages we have right now do it best. I believe they don't. And worse yet, they don't try. The newest thing is just another extension on C. In some ways, Perl is C++++++, but it still has that C in there. It changes the words around, but the grammar is the same. And I'm betting the grammar is restricting the way we innovate in our software.
No I'm not trolling.
My sole exception to this is a language called K. Yes, it has its roots in APL and has added to the APL model from languages such as Lisp and Scheme, but it has some very interesting new features of its own.
K is very very very fast to write and the run. It blazes in both categories. There is a full relational database that is written in K, called KDB. It crushed Oracle on the TPC-B and TPC-D benchmarks in both speed and storage size, requiring only a few percent above the dataset size in overhead. It has native clustering and replication that allowed it to run on a 50 cpu Linux cluster loaded with 2.5 billion stock trades and quotes and have simple table scans (such as, select max price from trade) take under a second and multi-dimensional aggregations (such as, 100 first desc select sum size*price by sym from trade) take only 10 seconds. Starting the database cluster took a tenth of a second. It is SQL92 compliant, has an extended ultra-powerful query language called KSQL that makes writing queries very simple, and the stored procedure languages are K and C.
In bwk's language benchmarks, even though this is not the K strong point, the sum of the execution times were: K at 32 seconds, Perl at 95, Java at 300, and TCL above 1400. The lines of code to implement were: K at 9 lines, awk at 95, Perl at 96, TCL at 105, Scheme at 170, VB at 200, and Java at 350.
Yes, K can look like line noise, but unlike Perl, you get alot from this. First you get extreme code density and see the entire problem on the screen at once. I came from a Scheme background and Perl hurt my eyes, so I was very skeptical, but after my roommate persuaded me to look at K harder, I realized that this high code density made it very easy debug and write code. It is rumored that KDB is written in 26 files of code, each file consisting of a single screen of code, labeled a to z. Try doing that in any other language. The language is exceptionally regular. It is so logical and consistent that it takes a little getting used to. You never have to remember any baroque language rules. Anything that makes sense, you can do. Also, even though it looks difficult, it is extremely easy to learn because K is directly translatable to English, in fact there is a K program that will do this automatically. For example to split a line by tabs you could write: And this is read: It may take a little getting used to, but with a month of K, my roommate and I were able to converse this way when describing K and you could see the picture developing in your head. It was amazing.
A unique feature of K is what is called the K tree. Unification is a very strong idea in K, so it unifies the idea of object, variables, attributes, namespaces, and dictionaries. A dictionary is a native K type. Each variable lives in a dictionary (somwhat like Python). These dictionaries are joined hierarchically and can be removed and added dynamically. All variables are on the K tree, too, so a new namespace is really just a dictionary on the K tree! This means that you can rearrange the K tree and change what functions get called. This is the most reflective language that I have ever seen (Python, Scheme, and CLisp come in a very close behind). All variables have attributes. All attributes are is a special dictionary attached to the variables (the language is so regular that this is really a namespace with a blank name so to refer to the attributes of a variable you say ns.var..attrib). And, of course, each attribute is just a variable so each of those can have attributes, too.
This interesting K tree leads to a very elegant GUI. Each variable can have an attribute named c (for class), and this can have certain values like `table, `check, `radio, `button, and others (the backtick ` is how you make a symbol). Lets take radio for an example. Then you would have another attribute o (for option) with possible values: These four lines would create a radio box with five choices, zero through four, and everytime you evaluated r whatever the radio was set to, r would evaluate to. Basically, each variable has a direct on-screen representation (they default to `data) and is directly manipulable.
K also has the ideas of dependencies and triggers in the language, so if a..d:"1+b" then refering to a will dynamically calculate 1+b, but only when necessary (if you refer to a multiple times but b does not change between those references, a will only be calculated once and stored; K figures out the dependency graph for you). There are also triggers. If b..t:"a:b-1" then whenever b is assigned or modified then a will get the appropriate value. This trigger can be anything, such as a network operation or a gui command.
The language has some other unique features like an interesting callback oriented interprocess communication system and an on-the-fly optimizing vm.
Of course since it inherits some background from APL it has bulk operators, called adverbs, that modify functions in every conceivable way (much more powerful than APL or Perl). One of the signs of a good K programmer is one who knows how to do this and doesn't use any loops (KDB, the relational database, is written without any loops).
From functional languages K inherits higher-level functions and projections. Both which are very standard practices especially when combined with the bulk operators. b f[a;;c;]'d takes the four argument function f, fixes the first and third arguments projecting a function of two arguments, then applies it to each down the list of argument in b and d.
When you use K you truly are standing on the shoulders of giants. The person who wrote it, Arthur Whitney, has this amazing ability to identify the important pieces of a problem and simplify away the rest. The performance in K and KDB is incredibly; the simplicity and power of the language and the database is incredibly.
K runs on various flavors of Unix and NT, so people should take an open mind (I didn't have one at first and was very skeptical) and really try the language and try a new style of programming. Your code and thoughts on developing will never be the same.
-j
Comment removed based on user account deletion
Obviously, the article generalizes on the word "developer", which the author means to be enterprise developers. On the other side of the spectrum, I don't see embedded system developers using C# or VB.Net in the near future.
If you think that VB, C#, C++ and Java are the only languages around, then they all indeed look the same, I guess...
I'm staggered by the levels absurdity the topic of CLR's polylingual capabilities generates in the Slashdot readership, I'm pulling extracts from various comments here to illustrate my points:
... Of course you can have the same underlying structure, you can have different underlying structures too.
n drianDDJ.pdf) offers a lovely sleight of hand where the memory resources for a C# implementation of the sieve of Eratosthenes using a growable array are traded for a Mondrian implementation which uses infinite lists (ala Haskell) via recursion which uses up unquantifiable volumes of stack space. The author's tone is suggestive of, though he does does not state explicitly that, Mondrians solution is not possible in C# or VB.Net.
WildBeast wrote: Like Python, Perl, Ada, Eiffel, VB, C#, Cobol, etc.? I don't look at them as skins
I say: The authors analogy is actually excellent. The languages of C# provide nothing more than a semantic gloss over the entrenched runtime characteristics.
nebaz wrote: Hello? How is [skinning] different than compiled languages?
I say: The target language of compilation for such languages is typically assembly/machine code. Thus compiled languages can have no better performance than assembly language allows (obviously). In general it is obvious that no language can perform better than the language into which it is compiled. Thus languages for the CLR can perform no better IN ANY RESPECT than the equivalent C# (which has 1-1 correspondance with the CLR feature set).
mestar wrote: You guys are missing the most important point: there is only one API to program against.
I say: How can there be one API? How can an API for a functional language, such as Haskell, which makes use of closures, monads, higher level functions etc. _possibly_ be represented within the CLR framework without becoming utterly bastardized.
jovlinger wrote: So you see, having several languages implemented for one back end, so that I can write my lexing routines in PERL, write my AST construction routines in Java, and my compiler in Scheme, ammounts basically to choosing the right tool for the job.
I say: Doesn't this make the fallacy obvious to you? This would imply that the lexing routines of PERL.Net could be no better those implemented in Java!
bentini wrote: Just because I can run LISP and C on the same [runtime] doesn't mean that they're similar.
I say: No you cannot have different structures, this is why the advantages touted for the CLR are such gross distortions of the truth. Essentially your LISP.Net language is an implementation of LISP in C#. Thus it will share all of the performance characteristics of the C# language. For example, the CLR unifies all primitive types (as does Java) in a way which is inevitably inadequate for some languages. How can those languages (LISP included) be said to be fully supported by a runtimes which cannot even handle their primitive types?
Finally, the Doctor Dobbs artical which Reality Master 101 quotes (http://research.microsoft.com/~emeijer/Papers/Mo
Believe it or not I actually have very little against the CLR. It's the purported (and preposterous) claim of it's language independence which really irks me.
Programmers of the world unite, you have nothing to lose but your strings.
The more programming languages, the more problems can be solved in an elegant manner. Long may new languages appear!
The dude totally left out Delphi, which is used by more than a few places... (It's huge in Eastern Europe.)
Borland's got a nice product, and OO pascal has it's virtues.
You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
"VB.Net is completely useless for the majority of software being developed"
The majority of *programmers* are VB programmers according to the last 4 years of programmer surveys by Giga and Gartner. COBOL is 2nd, C++ is 3rd. Java is trailing in 4th.
VB creates the most software out there: those hidden custom applications that you never see that run the backoffices of your banks, utilities, and insurance companies. It's changing, there's a lot more Java out there than before, and a lot more web based stuff, but this is just reality once you move beyond the ISV world.
The author of this article is looking at the aggregate software community which is primarily made up of business developers.... C programmers aren't the majority of these.
-Stu
The idea of adopting a single platform or programming language for all programming needs isn't just naive, its dangerous and stupid. Do languages not simply expose the features of the platform they operate on? Isn't it a bit superficial to choose the language that you like to program in over the language that would best solve the engineering problem at hand?
Its okay to be superficial about language when you're writing end-user applications, but when you've got real engineering problems to solve, language is about the last thing you care about. Performance, portability, and planning should make the decisions, not the ease with which you can program in a particular language.
For example, it doesn't really matter which language I write a word processor, IM client, or file-sharing client in, but a high-performance web server, 3D rendering engine, statistical analysis engine, or RDMS have specific needs that modern RAD languages don't accomodate.
Programmers and software engineers are turning out to be two very different breeds.
niko
Python, Haskell, Clean, Mozart-Oz, Mercury, etc... all the same? Only to the blind. Open your eyes, open your mind.
Most "real" hackers, coders, developers, computer scientists, etc... love programming for programming's sake. I suggest that if you are one of these "real" types, you spend a weekend programming in Mercury, another programming in Haskell, another in Python. Each time think up a project that could be done in around 16 hours of time, and code it using a certain paradigm: functional, procedural, object-oriented, declarative, etc... Trust me, it will open your eyes to the many different ways to accomplish the same thing. For certain tasks some things are better than others.
Not only is he missing the embedded market, he is missing the scientific computing market - even C/C++ isn't used that often to do things like computational fluid dynamics, etc. In fields that rely on heavy number-crunching, Fortran is still the language of choice (whether by tradition or actual performance benefits is still unclear!). And believe me, there are still many, many people coding away in these fields.
Check out http://www.paulgraham.com/articles.html
The problem isn't that there aren't better languages than C/C++/Java/C#/Perl (whatever the next ugly language in this chain might be), the problem is that they are familiar and most folks don't want to venture outside the familiar. (And there's the little detail that a lot of source is already IN those languages.)
That's life. Folks eat at McDonald's too for some reason.
Sure, I myself faced this question recently... I could write in PowerBuilder, Visual Basic, Java, C, Pascal, ... Maybe I should pick up one of the newer players (Python, Ruby, Pike, Rebol, ...)? So I looked around some. Python is written in? C. Perl (6) is being rewritten in? C.
Let's just say that I think I will stick with C. Besides, when did Microsoft release "their" C# version of Word/Excel/Access? I can't wait to see when MS starts to use C# to make money for the bottom line.
Don't get me wrong, I think VM/CLR is the way to go... let's just say that I always try to look at what the compiler writers are using to write in. (I like to think that if they use it themselves, it will give me what I want too)
Won't anyone stop and possibly think: maybe this isn't a ZDNet-FUD story, or a clueless journalist, but maybe a practitioner with a point?
.NET have little relevance here, whereas C and C++ maintain their positions as the "true" languages.
.NET -- lots of training gigs, but very few consulting pilots yet.
.NET national trainer. I don't think I'm alone in looking at these figures. Let me be very clear: The greatness of open source development is that none of this really matters. If you love a language, use it. The marketshare of a language really has no effect on whether you can use it to write good software, it really only speaks of the probability of getting a job or contract using a particular programming language and working as a custom software developer.
.NET in that equation. The author's prediction of a 50/50 .NET/J2EE split is silly. More realistically, by late 2003, mid-2004 I would suggest:
.NET.
.NET may grow to overtake the other languages, but I wouldn't bet on it until 2004 at best, no matter what the hype. It's a conservative industry, and not even Java, the current adoption rate record holder, was adopted as fast as some think .NET will be.
.NET catches on, there is a problem that the JVM or the CLR does not have a design that allows for true language innovation. We're stuck at extracting and sharing "design patterns" to patch all the shitholes we find in our languages instead of inventing new langauges to fix these problems.
.NET. They won't point you to the absolutely horrendous performance problems of porting languages to .NET if they don't walk & talk like C#. This is where the "skinnable language" concept comes from... the CLR shipped with Windows is optimized for statically typed object oriented imperative ALGOL-like languages, C# and VB.NET in particular. You're not going to run Lisp, ML, Haskell, Self, Smalltalk on them with reasonable performance without a) bastardizing the language and b) using the .NET base class libraries & foregoing the libraries that ship with your language (a major hinderence for Common Lisp and Smalltalk, I'd say).
.NET is sealing us into another 5 years of the status quo.
There seems to be a tremendously insular mindset here on Slashdot... Java and
The majority of software developers and software development work gets performed today in large corporations in industries like financial, insurance, manufacturing, utilties, pharmaceuticals, defense, real estate, retail, etc. 90% of this work is effectively about writing something that talks to a database somewhere for operational or decision support (reporting) purposes.
The culture of these companies is tremendously insular with regards to technological change. Here's a quick'n'dirty view of what tools are used generally out there, all IMHO:
up until 1998:
C++ (MFC, COM, UNIX), pick a 4GL (VB, Powerbuilder, Delphi), some Perl, tinkerings with Java, some niche technologies (WebObjects, Smalltalk, Lisp), and mainframe legacy (COBOL, fortran, etc.)
past 1998:
more Java, C++/COM going well, C++ UNIX going legacy, VB holding steady, Perl growing, other 4GLs going legacy, niche technologies being replaced with prior mentioned technologies, mainframe legacy being retrofitted for Y2K
2002:
Lots of Java, steady amounts of Perl & PHP, VB is legacy, C++ is legacy (COM and UNIX), some niche technologies remain but are targetted to be 'sunsetted', mainframe legacy systems in place but some are looking to be replaced with Java systems. Growing interest in
ANSI-C doesn't really enter into the picture. The #1 one criteria for choosing a technology in these businesses (usually) is how easy/quick can it talk to a relational database. Java's past performance problems are largely irrelevant today -- this language is running billions of dollars of transactions a day through thousands of companies. It works, and it's fast enough for most purposes.
You may not agree with this picture, but it has been my experience as a senior consultant to many different companies throughout the world, and working for a company that is a Microsoft
Remember: my assumption is that the custom software marketplace is very conservative in the technologies it chooses because of the maintainance costs involved. So you see less diversity in using niche technologies unless a group with complex needs (i.e. an OODBMS in Smalltalk, or an expert system in LISP) shells out the extra $$ to get it done. Most systems just aren't written that way. If I'm wrong on this, if Goldman Sachs or Johnson & Johnson or Royal Dutch/Shell are really building most of their next projects spread over hundreds, if not thousands of developers -- all with ANSI-C, then I sit corrected.
The author of this article is making an important point, though he didn't qualify it properly enough... language diversity is drying up in the custom software development market..
This year, if you look at "growth", i.e. what languages are being used for new projects, there are only three major players: Java (mainly JSP/Servlet based), VB, and Perl (for backoffice automation), with other scripting languages like PHP and Python and Ruby in Japan doing smaller projects.
In 2003, there will be more
50% J2EE
30% VB, C++, Perl, Python, etc.
20%
Eventually
The problem that Java introduced, and one that will be compounded is that if
Sure, many people in this forum will point to implementations of ML, Haskell, LISP and Smalltalk on
I have a great interest in programming language innovations.... life isn't getting any simpler, and our programming languages are going to have to start looking more like Ruby, Python, Smalltalk or eventually even Lisp if we're going to be handling the burgeoning complexity that's out there. I get frustrated when BigCo's set the agenda with their marketing pushes and the industry sits still for yet another 5 years... until the next hype wave rolls through. We're going to have more failed projects, more long hours, and more stressed-out/cynical developers because language design isn't keeping pace with the rising complexity of problems we're trying to solve.
While Java did a lot to bring some innovations like garbage collection to the mainstream in 1996... we should me moving beyond this... unfortunately and
disclaimer: my opinions, not my employer's. take with grain of salt.
-Stu
Some examples:
C got a huge boost as a language for programming PCs in the mid 80s. Prior to that, everyone used assembler... they didn't have much choice. PC processors weren't powerful enough for the desired applications. C's claim to fame was that it was fast.
In the same time period, Smalltalk's slowness and relatively exhorbitant memory requirements relegated it into a niche from which it has yet to recover.
Nowadays, Smalltalk would run fine on common desktop PCs -- certainly as well as Java for all but hardcore mathematical applications. But those first impressions still linger.
It's great to choose a language for its denotational properties if you are writing a one-off script, but it can be a lousy idea if you are planning a major project and scaling issues are important. What do you do if the language captures the essence of your problem well but runs like a pig? (Come to think of it, this is what happened to Stroustrup with Simula... remembering this experience, he created that C++.)
Denotational properties do matter. However, so do the operational properties. Which of the two is more important depends on the characteristics of the problem at hand.
..this is all stuff that LISP has had for a while too, and more recently Java with AspectJ... where it's called 'aspect oriented programming'.
the only problem with C++ policy oriented programming as i see it, which is similar to stuff talked about in Czarnecki's Generative Programming book, is that the amount of cognitive engagement one has to have when generally programming with C++ or C++ templates for that matter is just astounding. The syntactical complexities and programmatic options available are pretty difficult to deal with... I like it to developing COM with straight C++ and now ATL... it's conceptually clean, but your eyes have to wade through a lot of noise to see the patterns.
Another analogy would be those garbled/noise paintings that have the sailboat buried inside them if you just look at them the right way... some people, normal/smart people at that, just can't see the sailboat.
-Stu
Yes, there are many language choices for developers(too many if you look at things like mindf*ck).
But look in job listings. As far as companies that are hiring developers there are basically 3 laguages: C++, Java, VB. The minor ones and still sought are Perl and Python, are out there but not as marketable.
I know and use Java, Perl, and VB. I think I am a little more "marketable" (that means I am quicker to get a job) then a K or a LISP coder. Most employers don't care if you are moderatly comfortable in 15 programming languages. They would rather you just be a Killer Java Guru, or a lightning fast VB coder.
This doesn't mean it's right, just the reality of the situation. There will always be marketable Development Platforms. And there will always be esoteric, and near artistic Development Platforms for us to geek out on.
Esperanto was a better language, it doesn't mean it will be embraced.
BTW Embedded systems developers don't get paid as well as Application developers. That's why I switched. That, and I find the work more demanding.
Control for C# was fought over in courts for Years. Musician's Friend fought a long and grueling battle for the long used, but never copyrighted, C# but in the end the magnificent monolith of the west prevailed. Many musicians weep, and the keys of D, E, A and B will never be the same.
(* The difference between procedural and object-oriented isn't that big a deal, other than it's often easier to think in OO and easier to implement a language that's procedural. *)
This is purely subjective. Some of us cannot stand OOP and OO modeling.
oop.ismad.com
Table-ized A.I.
(* I have only found two major categories of programming languages. Sequential (C, Perl etc...) and Object orientated (Java, C++ etc...). *)
.NET initiative. *)
I would also add "scripting" versus "strong-typed" to the list of attributes. There are scriptish procedural languages like Perl, C-shell, etc., and OO scriptish languages like Smalltalk and Python.
Then we have strong-typed procedural languages like Pascal, and strong-typed OO languages like Java and Eiffle.
The flame-wars over scripty-vs-strong-typed are pretty nasty at times. Eiffle and Smalltalk fans are always fighting with each other over "proper OO" and productivity claims.
(* Today the OO languages become more and more commonly accepted as best practice. I believe that's why Microsoft goes the OO way with their
In my opinion, MS went more OO *purely* to compete with and kill Java and the Java hype. They resisted inheritance in the past, but just want to kill Java so much that paradigm philosophy has taken a back seat to squishing competitors.
There is no fricken evidence that OO is "best practice" in practice. It still has hype value, but that cannot last forever. Eventually convoluted crap like EJB will make the world realize the failed promises and pretzels caused in the name of OO.
oop.ismad.com
Table-ized A.I.
JITs have a hard time producing good code for VLIW processors like Itanium. However, since VLIW is a bad idea to begin with, and Itanium isn't going to go anywhere, this isn't such a big deal.
This is not true. There is functionality in
the CLR that is not used by C#. For example
variable number of arguments (varargs) and function pointers are both in the CLR but not available from C#. Similarly with the tail.call instruction that C# doesn't use.
It is true that the CLR is similar to C# in feature set, but it is certainly not the same.
My discussions with Sun engineers have indicated that they are not particularly interested in having multiple languages running on the JVM, and are not going to do any significant work to make it happen better or to help them interoperate.
Sun markets Java the language a lot more than JVM the platform. The 100% pure Java campaign is exactly that -- *not* 100% pure JVM bytecode but 100% pure Java.
sorry folks,
I have done many things in PHP and Visual Basic but: I love Java. There are many projects that needs java.
...the sentence reading:
"Developers switching from C++ to Java concluded, that Java was the natural evolution of C++."
Yes, those same developers participated in the "tremedous success" of the dot.com era.
Next time I will be more careful not to visit any URL including the name "zdnet". Those folks have either don't have any clue, or they are just paid by the dark side.
That's how it runs out when a journalist tries to be clever on development, and misses the whole point, that it's not the programming language, but the design, what is important there.
C# isn't really an evolution rather a devolution of C++, they are trying to meet 2 different goals. J2EE and .NET are platforms with very narrow goals, development goes on elsewhere in the world, and would you believe it, neither Java or C# are used in the majority of code out there.
Languages will drop static overloading, which is not only less powerful but also unsafe, in favor of dynamic multiple-dispatch.
Then people will realize single-class-based encapsulation hinders extensibility.
That's enough for now. See you in a couple of years to continue...
As reported here on slashdot
My Karma: ran over your Dogma
StrawberryFrog
they usually don't want to learn anything too different...
So why do they keep paying people to write articles they obviously know nothing about.
.NET? C#? VB.NET? Good god, a less diverse view of the programming industry there cannot be.
Does he imagine computers are all MS? Does he believe everyone programs net based applications?
In my industry (telecoms), they used C, C++, unix, perl, tcl, python and maybe some java for the graphical things.
And thats just my industry. But every time a tech journalist writes such obvious nonsense, a thousand pointy haired bosses sit up and listen.
So expect your telecoms products to all crash in about 2 years time...
Some languages will always be important like Basic. These are languages anyone can easyly learn and understand. That hav a reduced syntax, where you don't need large books.
www.kbasic.org
Which is, of course, a very flawed argument. All serious programming languages have the same capabilities, also known as "turing completeness." This doesn't make them the same languages, though. I'd agree that there's not much difference between different object-oriented/imperative languages (e.g. C#, Java, VB.NET, Delphi, ...) any more, but there are still lots of languages that are different.
E.g. take a look at Mercury, a logic programming language (somewhat similar to Prolog, at least in syntax, I haven't used it yet). It's probably not very similar to an object-oriented language, but still it's available for .NET.
Saying that all programming languages will become the same because they compile to .NET is about as logical as saying that they'll become the same because they all compile to machine language.
There may be valid arguments against .NET, but this is just FUD.
Sig (appended to the end of comments I post, 54 chars)
The author obviously is not right about a lot of things...
S'funny, I coulda sworn all my friends who work in the embedded and/or instrument control markets couldn't even write most of their stuff using either J2EE or a .NET-hosted language. And there is orders of magnitude more development done there than for all the desktop and Internet-based apps put together. (Shock news, everyone: most applications would gain precisely 0% benefit from being Internet-enabled, distributed, turned into Web Services, or otherwise buzzworded up.) C (and sometimes C++) still reign supreme here.
I know a few PhD or professional research level scientists whose work is computationally intensive, too. Many of them still use Fortran, because the mathematical abilities it provides are still hard to beat.
Oh, and aren't something like 7/10 of the most-hit websites actually running on C++ back-ends, not any of the "distributed-friendly, Internet-friendly, no-buzzwords-here-honest-guv" languages?
And yet none of these new languages can do some of the simplest things available to a C or C++ programmer, and the simplicity and fast prototyping that were VB's strongest points have been all-but-destroyed by VB.NET exposing everything to everyone.
As for Java replacing C++ in academia, that is largely because most people teaching C++ at college/university level don't have a clue, and are readily embarrassed by their students asking awkward (but really quite simple) questions in lectures. Java makes it harder for the lecturers to make an ass of themselves within five minutes of the start of the course, and the reason for switching is as simple as that. Their teaching of Java often sucks, too, but it's not quite so obvious. (BTW, I do have an academic CS qualification, and I have had a lot of benefit from the course. The popular programming language tuition -- Java, C++, etc. -- was abysmal across the board, though.)
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Whether itsV M
Object Oriented
and/or
Procedural
and/or
Intepreted/
and/or
Native
I think most developers completely miss the issue. .NET since they sidestep the issue nor are CLR and byecode.
..
/documentation/Installer/Package rules/ then we aren't "there" yet. A java jar file is very close but the information needs to be moved into each class file with just a small "Meta directory class" Which should itself be a executable class file.
/CLR kinda has the any language part.) Neither have the critical any program any language part.
The question is not what language they like but what language does the maintence programmer whant to use. The problem is not computer languages but the abiliity to easily view a program in C/Java
C# etc. Until a maintence programmer has a choice on what language he want's to maintain a program in CS won't move forward. I don't think "frameworks" J2EE or
The best old style progression was
asm->C->(C++ || ObjectiveC )
Java has
asm->C->JNI->ByteCode
.NET well umm
Language X ->>CLR Language X and neither does Java.
The next "revolution" IMHO
asm -> FORTH --> ByteCode > Java/4GL
The real important revolution is Runtime Compiler
technology which allows you to express a program in a fairly high level format. Unfortuntley the only language taking advantage of that today is java. Adding a few bytecodes as a C equivlent along with the ability to embed a few native/asm code snippets allows a full spectrum program that can be runtime compiled. The reverse enginering of bytecode is almost trivial allowing easy regeneration to a alternative language chain.
I just think the future lies in dynamic compiler technology plus a format which can be easily resourced to the language of choice for the maintainence programmer.
Stack machines since they don't "complicate" the code with register allocation issues make the obvious choice for intermdiate format. Java simply hides the stack machine for bytcode and java bytcode does not provide a complete word set for a "real" computer. The addition of a few core forth words plus its extensible nature allows a complete stack machine. Dynamic compilers can easily retarget this code to a particular processor ahead of time runtime etc doesn't matter. The next big hurdle is source recreation from the same "bytecode". Luckly the Java class file format allows you to add more information to allow for source regeneration.
Thus the future as I see it.
Programs expressed as a set of java style "Classfiles" these contian high level bytecode
"c level" bytecode for low level routines and a few contain processor specific machine/asm code.
Plus.
XML/UML design information original code info like
debugging information ( optional ). Basically its the flow or link diagram plus documentation for the code this may even include the original source language but I don't think its needed if done right. I think you just need the grammer for the highlevel language plus the backend emit rules for the terminals. Plus version/ bug fix info.
Now here is where the concept of a CLR makes sense but it should be Common Language Representation not Runtime
Check out http://www.antlr.org/Articles/needlook.html
The trick is generation of the interlanguage transforms. So given Grammer A and Grammer B generate a LL(k) parser which transforms A source to B. I think a intermediate transform to a stack based "real" language ala extended bytecode plus design info then out is the way to go but the point is that a "real" program should be expresible in basically any high level language.
The maintenance programmer can either run the module or view it in there preferred language make there changes and forget about it. The java class file format is the right start. CLR went backwards to monolithic modules what a failure. Elf object files ( not executables/shared libs) almost had it but are too tied to the problems of linking machine code the java classfile is really just a clean Elf object file.
When "compiled" code contains all the information about the program then were finally getting somewhere as long and the informaiton of a program is fragmented into compile rules ( Make cpp etc ).
Source/ Binary / Revision history/Design
I should be able to take a program and do this.
foo info | netscape
foo use | netscape
foo api | netscape
foo source java-c-asm | vi or foo source asm-C++-C# etc...
foo history | cvs
foo design | uml-viewer
foo build
foo run
foo export ( converts to opaque external use format simialr to todays binaries )
Thats a real program.
Of course with emacs it would just be
emacs foo : )
Personally I think its probably easy to create programs which can be viewed in any programming language just people just havent felt like its really important. Microsofts any language to CLR and Suns Java to any computer don't solve this problem what we really want is any program to any language to any computer. ( Note the JVM has the any computer part
Wouldn't be cool if you could say I don't care what you write the program in I'm going to read it in asm->C->C++ or asm->C->C# or asm->C->Java.
(Of course the program could be "best viewed" with scheme or lisp or C# or java but that should be and opionion)
When that's doable then people are finally doing real programing.
CLRs have their place in the world, but they do not solve every programming problem.
.NET is that the industry now has two primary CLRs to choose from: Java or .NET. Even they differ greatly what they bring to implementation!
.NET is that you can realistically have developers working on a project together but still allow each developer to code in the .NET language they are most comfortable with. For the small percentage of developers that know both VB.NET and C#, they can choose the language that helps them best approach the problem at hand due to syntax. But as long as the MS CLR only runs on Windows machines, you are still only developing to the Windows environment. Now, true, thanks to the CLR, .NET brings much needed consistency to the deployment and execution of code in the Windows environment, but again, that only impacts the Windows world. All of this comes with some drawbacks like performance issues.
.NET. Once the performance and security issues are beaten down to an acceptable level, this group will likely move to .NET later this year, early next year.
The benefit of
Today, the only real benefit of
Java, while also a CLR with many of the same drawbacks, brings a whole different set of advantages to the table. The most commonly proclaimed of those advantages is the ability to write one set of code and deploy it to multiple platforms.
This does not change the fact that many technically-smart IT executives, managers and developers do not (today at least) take any CLR code seriously for an application where performance is important. If you need good, fast code in the Windows environment, you are probably going to C++.
I work for a large retail sales corporation in the United States that is a 100% Microsoft OS environment. We get to write a little bit of everything. For web applications with a limited user base, we use ASP/COM/SQL with all the ASP written in VBScript and JavaScript, the COM written in VB and using Stored Procedures on MS SQL 2000. For heavy use web apps, we move the COM to C++. We looked into moving to VB.NET and ASP.NET, but we found that much of the code we have in production today actually ran slower on
Our Point Of Sale system is a desktop application that takes total control of the PC. It is written in C++, but we used Borland C++ Builder. We have found Borland to give us faster development time and code that is easier to support for desktop apps than Visual Studio C++. This group would quit before giving up Borland C++ Builder.
We have one small application that we have written that generates converts EDI into XML for us to import. We have given this to some vendors. It is written in Java so that it can run on darn near anything. This is the *ONLY* Java we have in the whole company.
Lastly, we have a small team of embedded developers who write code for things like fuel pump controllers. They code in C just like they have for years with no plans to change anytime soon.
As you can see, we have teams of developers that each code with the language and IDE that best suits the task at hand.
I screwed up the link in the previous post, try this one:
here
K was invented way before OSS really got off. kdb is free for non-commercial use and their license is no more anal than say MySQL's was before recently while the quality is way above. I hope K will get used, even if only for writing kdb extensions/stored procs. You have no idea how useful a FUNCTIONAL database can be (as opposed to relational)
I hope you're right, but its hard not to believe the Hype machine.
- Luckily I wrote such a short comment, easy to remember. Since slashdot likes fucking with posters so much they find it necessary to add in annoying timelimits. Arrgh! I come here to vent, people, not get MORE frustrated! Gah!
Java is easier to learn. Hence you can push out more graduates from Compsci courses with it. Unfortunately, you can't apply those guys to say, kernel programming or embedded systems work because they are clueless w.r.t memory management and the guts of the machine.
But you know what, school is a place to learn!
When I got my CS degree, Java wasn't around, and C++ was just starting to be taught... often with the concept that OO would make it easier to learn. And you know what? The C and C++ I learned in school did very little to prepare me for how the languages were really used in industry.
Even if a student had the best, most industry oriented schooling available, I doubt they could go immediately into kernel programming or embedded systems work and be productive the first day... And a lot of schools will acknowledge that fact.
Schools are there to give you a solid understanding of how languages work, how to build the basic underpinnings of software, not the detailed knowledge of how software is applied in industry. Especially since that changes for every domain that is out there. As long as they know one language, it becomes simpler to pick up another, and to learn the nuances of that new language.
I'm sure others have made this point but... All languages on a given computer run on the same instruction set.
So -yeah- I disagree.
This has been discussed heavily on the K mailing list. Somebody has done a done a K-ish version of Ackermann's function that works very well. The way you program in K is different from the way you program in C. In K you choose to operate over bulk data and you slive object arrays length-wise, i.e. if you have an object of three fields x, y, and z, you would operator over all the x's, then all the y's, then all the z's.
His perspective is too narrow, clearly. Neither Sun nor MS have claimed that their operating systems will be rewritten in Java or .Net. These languages / platforms are designed to give custom app developers a better toolbox, but they aren't designed for all programming tasks.
Even at Sun and MS, they'll take the extra time and effort to write in C/C++ if the breadth of deployment can support the extra hassle and cost. This choice will remain available to all other developers as well, along with quite a few other languages for other purposes (Perl for unix admin work, Fortran for number crunching, and so on.)
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
I never can quite understand the reports one reads of CS courses not teaching multiple languages. And any CS course that doesn't at least show you what assembler looks like is surely not worth doing.
The most dementing of all modern sins: the inability to distinguish excellence from success. David Hare
Inexperienced programmers care, because they have ego space associated with a language.
Experienced programmers care, because they know diversity brings health.
I've heard a similar argument made several times recently: learning a language is easy, learning the API is hard. I'm sorry, but that's just rubbish.
Learning to use a language well does not take 1-2 hours, it takes months. It's not just the keywords, it's the particular idioms, the underlying paradigms. If you choose to use a framework like .NET or J2EE where all languages are equal (even if some are more equal than others) then obviously the learning curve is dramatically reduced, but that's because all you've really changed is the syntax. The semantics of these languages are all much the same, which was kinda the point.
On the other hand, I have never bothered to learn any APIs in all their 10,000-call detail. Most programmers use only a tiny fraction of such an API with any regularity, and will learn that along the way through frequent use. The skill with APIs isn't knowing all the details, it's knowing what it can do, and where to look to find those details if you happen to need them.
Look at a couple of typical examples. If I'm programming C++, do I learn every detail of every interface in the standard library? No, of course not. I learn what algorithms, iterators and containers are, and how they fit together in the library. I learn what sorts of algorithms and such are available. Then I just keep a good reference book on the shelf, and look things up as needed.
If I'm programming MFC for a Windows app, do I learn all the intricate little details about each class? Again, of course not. I learn roughly how the classes fit together -- windows, command targets and controls, the document-view architecture, and so on -- and then I keep a good book on the shelf.
Basically, the flaw in the language vs. API learning argument is that while you have to have a fairly deep understanding of how to use a programming language to get good results, you don't need to learn whole APIs, just a sound overview and where to find out more.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Not at all, C# and VB.NET are basically the same language(ok so C# has un CLR compliant unsafe code). So they both have the same feature access of the CLR.