Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Programming IT Technology

The Problem Of Developing 438

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."
This discussion has been archived. No new comments can be posted.

The Problem Of Developing

Comments Filter:
  • C# (Score:4, Funny)

    by October_30th ( 531777 ) on Tuesday February 26, 2002 @05:28PM (#3073284) Homepage Journal
    C# is not the same! Neither is .NET.

    They both are brilliant innovations by Microsoft that will carry us all into the wonderful future on the information superhighway!

    • Re:C# (Score:3, Informative)

      by mozkill ( 58658 )
      im not sure that something as "plagiaristic" as C# can be considered "different".

      hmm... as a matter of fact, pluggable ideas for .NET may have originated from early Object Oriented Software, such as Logic Audio... so i wouldn't consider .NET innovative.

      i use .NET Enterprise 2002 every day right now, so i think i can say these things.

      the only conclusion that i have come to (on the subject of the article referenced here) is that .NET basically is so WELL DONE that it is the first time that all the languages are unified to such an extent, that they all seem the same.

      its true... they werent the same to begin with, but one super large company seems to think that merging them all together is a good idea.

      hmmmm....
      • Re:C# (Score:3, Insightful)

        by Cyclopedian ( 163375 )
        all the languages are unified to such an extent, that they all seem the same.

        But is that a good thing? What if there's a security hole/bug that was prevalent in the CLR? All the languages that use the CLR would be affected.

        Besides, the concept of "one runtime to rule the all" doesn't sound appealing. Different languages for different uses. Java for cross-plaform compatibility, C/C++ for speed, Perl for quick text parsing, etc.

        -Cyc

        • Re:C# (Score:3, Interesting)

          by Computer! ( 412422 )
          What if there's a security hole/bug that was prevalent in the CLR? All the languages that use the CLR would be affected.

          Yeah, but then, when that bug is fixed, all the... oh, wait. (Light goes on above head)

          • Re:C# (Score:3, Insightful)

            by mestar ( 121800 )
            You guys are missing the most important point: there is only one API to program against.


            Think about how much time you need to learn another language: 1-2 hours (or less) to learn the language, days or months to learn the API that language uses/has.


            .NET unifies C run time library (an API) with VB global methods, also VBS Collection classes, or ASP's Server object. Now, every language has access to everything.


            Your language has 'for's', while's, variables, calls, exceptions, math. Perhaps 20-30 keywords. Your Win32 or Posix or .NET has 10.000 calls? 5.000 classes? So we are talking about 30 against 10.000. There are no language wars (and never were), only API wars.


            Languages are trivial, APIs are hard!

            (Please mod this down)

        • Re:C# (Score:4, Insightful)

          by jovlinger ( 55075 ) on Tuesday February 26, 2002 @07:13PM (#3074321) Homepage
          When you choose a language it shouldn't be for the operational properties of a language. How many people do you think need the speed benefits of C enough to pay the price for using it? About one in a gazzilion.

          The wise programmer chooses a language for it's denotational properties. Such as: how straight forward is it to solve my problem in this language? Does the language provide me with early predicitions as to where the problems with my code are going to be? Does the language have constructs that directly capture the ideas you want to work with?

          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.

          How isn't this appealing?
    • This was satire, right?
    • Neither is new or inovative. C# is a combination of C++ & Java with a few changes here and there.

      As for .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 [slashdot.org]. 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.
      The idea that Microsoft created this completely new and innovative technology is strictly a PR campaign.
  • What is he smoking (Score:5, Interesting)

    by rootmonkey ( 457887 ) on Tuesday February 26, 2002 @05:31PM (#3073315)
    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.
    • large software companies want everyone to believe that C/C++ are completely obselete, to push new users towards their newer technologies. and once you've committed to using those technologies, you'll of course need to buy a copy of ms visual studio or something similar to take full advantage of it. no one makes money if developers use C/C++, vi, gcc, and gdb.

      that being said, i don't think C/C++ is always the right way to go. it all comes down to picking the right tool for the job.
      • by Milican ( 58140 ) on Tuesday February 26, 2002 @06:02PM (#3073616) Journal
        I know you weren't dogging C/C++, but I would like to take this opportunity to point out that for embedded development on a microcontroller, or development on any non-PC platform C is a God send. Programming for PCs is only a small fraction of the whole pie.. by small I mean out of "100 million or so PCs shipped each year; (there are) 6 billion processors that go into embedded systems " - Jack Ganssle [embedded.com] Just check your Palm, cellphone, microwave, car, sound card, video card, stereo, fridge, ac unit, gas pump, coke machine, etc.. if you don't believe me ;)

        The embedded market is enormous and C/C++ aren't going away anytime soon.

        JOhn
    • by Havokmon ( 89874 ) <rick.havokmon@com> on Tuesday February 26, 2002 @06:01PM (#3073615) Homepage Journal
      The author obviously is not in the right industry if he thinks developers only will program in VB.NET, C# or Java.

      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? :)

    • by joib ( 70841 ) on Tuesday February 26, 2002 @06:14PM (#3073725)
      [oldest programming language pissing match]
      You program in C for a living? Well, I recently landed a job involving fortran programming. :)
      [/]
      Conclusion: ZDNet author is a dimwit if he believes every programmer in the world does nothing but shopping carts.
      Or should I do shopping carts with "fortran.NET"? Bwahahaha...
    • 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)

      As far as his claim is concerned, "Java and .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.

      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 .NET are only capable of supporting the language paradigm that Java and .NET share.

      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 .NET...

      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 .NET's CLR. I suspect that Sun is probably working on an Interoperation method somewhere...

      In conclusion: He's wrong and he's right...
    • by vanguard ( 102038 ) on Tuesday February 26, 2002 @07:14PM (#3074325)
      I've given this a fair amount of thought and this is what I came up with:

      When it's possible (right staff, right project, etc.) IT departments try to avoid C/C++.

      Does that mean C is going away? No. It's also unfair to compare it to COBOL. When performance is important C/C++ is the only choice. However, if you have a chance, interpreted languages really do help with code quality and development time.

      If you're coding for an IT department and you are doing it in C it's *probably* because they have no other choice.
  • by Jbrecken ( 107271 ) on Tuesday February 26, 2002 @05:31PM (#3073316)
    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.
    • by twocents ( 310492 ) on Tuesday February 26, 2002 @05:38PM (#3073386)
      and if he was talking about only web based development, then does that not include all of the web scripting languages, such as PHP, Python, Perl, etc, etc, etc.

      Oh why even bother commenting...these stupid little rimshots from ZD are nothing more than attempts to capture the glory days of pitting WP against Word against Ami Pro.
    • 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.
  • by syzxys ( 557810 ) on Tuesday February 26, 2002 @05:33PM (#3073337)

    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 [apache.org] of projects [kernel.org] I'm [tigris.org] familiar [freebsd.org] with [sourceforge.net] 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:

    1. C++ has some plus signs after it, so it must be a replacement for C
    2. All problems in systems programming are trivial and have already been solved, and will never need solved again, so there's no need for really low-level languages.

    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! [zappadoodle.com]
    • by euphline ( 308359 ) on Tuesday February 26, 2002 @05:55PM (#3073557)
      Strange, a lot [apache.org] of projects [kernel.org] I'm [tigris.org] familiar [freebsd.org] with [sourceforge.net] don't use any one of those languages. I think it depends who you talk to.

      Exactly!

      The author is sensationalizing... and forgetting the multitude of languages out there being used for applications. I think if people [people != geeks, people == lusers like this guy] were to really know what the apps they use were made from, they'd *freak*. I'm thinking of the apps I deal with on a daily basis... and the number of languages is tremendous!

      The diversity in languages, runtimes, and platforms is a good thing. It allows us to use the best tool for the job (and there usually is one) and to accomplish our tasks quickly and painlessly.

      -jbn
      (Former VB addict. Now healed and addicted to perl.)

  • by msuzio ( 3104 ) on Tuesday February 26, 2002 @05:33PM (#3073339) Homepage
    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.
    • Bizaarely I am starting to see adverts for PHP developers. There is C++ too, although it was never suited to web development.

      and it should be our job as supposed experts to investigate all the options

      Sure, but you need people to maintain the code afterwards, and that basically means make CS graduates want to code in it. The other approaches *have* been marginalized :(

      Dave
    • Comment removed (Score:5, Interesting)

      by account_deleted ( 4530225 ) on Tuesday February 26, 2002 @05:53PM (#3073539)
      Comment removed based on user account deletion
      • Diversity (Score:5, Funny)

        by gnovos ( 447128 ) <gnovos@NoSpAM.chipped.net> on Tuesday February 26, 2002 @06:44PM (#3074036) Homepage Journal
        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
  • Funny (Score:4, Insightful)

    by ergo98 ( 9391 ) on Tuesday February 26, 2002 @05:35PM (#3073349) Homepage Journal
    It's funny how C++ (and the subset C) is constantly glossed over as some archaic remnant of the past, yet the overwhelming majority of commercial appliations continue to be developed in C++, and likely will continue to for some time. It's an interesting scenario of Fire and Motion [editthispage.com]. It always makes me wonder if all of the .NET and Visual Basic fanatics every stop and think "Gosh, how many Microsoft products are built with .NET or Visual Basic?" (they'd be surprized that the number is very close to 0, and will likely remain so). Silver bullet languages give short term bursts of productivity, followed by the reality that the nuances of languages become trivial in the long term of a real project.

    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.

  • 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.
    • Heh, heh. I still keep running across studies that turn up the unexpected result that one of the most widely-used languages is still called "Fortran".

      Haven't used that little monster in years, myself. But I have been somewhat bemused by the fact that over the past few years, I've used perl and tcl for pretty much all of the jobs I've been hired for. I never thought, when I started using these a decade ago, that people would ever actually be looking to hire people who knew them. I just learned them because it was obvious they were useful tools of the trade.

      But the "top" languages are all pretty similar, and pretty much all descendents of the algol/pascal/C innovation more than a quarter of a century ago. People keep coming up with variations on the syntax, mostly so that they can claim to have a "new, improved" language. But they are all somorphic under the skin.

      Now if we could only use some of the power of languages like prolog or snobol ... or even lisp. But I guess it'll be more decades still before the commercial world advances to what we had back in the 60's.
      • I just Fortran 90 daily, as part of a computational fluid dynamics project. Fortran 90 is a lot different than Fortran 77 -- it has pointers, modules, no more punch card dictated format, array syntax, ... In someways it is nice, but one of the great things about Fortran 77 was that the language was so simple that the compiler did not have to make any assumptions. There were no pointers or dynamically allocated memory, so lots of optimizations could be made, which is why Fortran performed so well. You will find Fortran compilers on all the supercomputers on the Top 500 list today, and they are used very heavily. There are a lot of numerical algorithms coded in Fortran (netlib [netlib.org]), that have been tested and looked over by the community for 20-30 years.

        That being said, for anything other than raw numerical computations, I prefer C.

  • ...the programming language being used by a potential employer.
  • Not Quite Right (Score:2, Interesting)

    by erasmus_ ( 119185 )
    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.
    • 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.

      Does C++.NET still support multiple inheritance?

  • by scotch ( 102596 ) on Tuesday February 26, 2002 @05:35PM (#3073364) Homepage
    This is a fairly Microsoft oriented editorial, and a little light on meat at that. Examples: assumptions that C#, .NET, and VB.net do or will by years end account for the bulk of programming langauges, with an "also-ran" entry for Java.

    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.

    • Along the same lines as the article, which pointed out how VB gets transmogrified into VB.NET, I was reminded of an analogous example from the OSS world.

      The Jython implementation of Python.

  • Languages (Score:5, Interesting)

    by bentini ( 161979 ) on Tuesday February 26, 2002 @05:37PM (#3073379)
    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 [bell-labs.com]. It makes many good points about how cs is more the same than different now as compare to 10, 15 even 20 years ago!
    • 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!!

      Not really. If anything, Java and C# are logical steps backward, but they certainly aren't successors. Neither of them have anywhere near the level of dynamic runtime, reflexion, meta-programming, or general flexibility that Smalltalk has.

      It makes many good points about how cs is more the same than different now as compare to 10, 15 even 20 years ago!

      It really hasn't progressed. No language, other than things like multiple inheritance (which was tried in Smalltalk, but ditched) and sugared syntax, really has features that surpass something like Smalltalk-80, a language standardized in 1980. Even then, the research was done in the years previous to 1980. It's kind of sad, really. I watched the Alan Kay lecture tape "Doing with Images make Symbols" again last weekend, and it really illustrates this point; between the Smalltalk group at Xerox PARC, Doug Englebert, and the Flex visual programming language, we've not had any real advances, other than making things cheaper, smaller, and crappier. By crappier, I mean taking Smalltalk and Lisp, and perverting them into the hacks known as C++, C#, and Java.

  • I Disagree (Score:4, Insightful)

    by puppetman ( 131489 ) on Tuesday February 26, 2002 @05:39PM (#3073399) Homepage
    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 [lua.org]? PERL [perl.org]? Or CURL [curl.com]?

    Sounds like a case of the "good ol' days".
    • You speak as if Ada (notice correct capitalization, its a name not an acronym) is dead or outdated. It is not at all dead or outdated. It was updated in 1995, becoming the first standardized Object Oriented langugage and is one of the best languages available for large project development. There is even a really great compiler out there for it called gnat. Its even going to be included in the gcc tool chain in v3.1. So please dont speak as if this were a dead or outdated language
  • 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.

  • More (Score:2, Interesting)

    by inerte ( 452992 )
    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.
  • by rufusdufus ( 450462 ) on Tuesday February 26, 2002 @05:41PM (#3073430)
    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.
    • by brlewis ( 214632 ) on Tuesday February 26, 2002 @06:01PM (#3073612) Homepage
      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.
    • Yup, I agree. I learned Java in school too. My upcoming new job involves fortran programming. Go figure... :)
    • As has no doubt been mentioned thousands of times across hundreds of Slashdot articles, Java has proven itself in the field. Huge enterprise applications are written in it. I've personally seen it used as middleware between old big iron and web interfaces/secure messaging systems in the health care industry.

      It is less likely to have bugs, is less susceptible to security problems like buffer overflows, and is fast enough for most things. The major advange of java (imo) is that you can develop complex, powerful programs at a lower cost (eliminate huge class of bugs that need to be tested) and with less maintainence (only the VM needs to be ported, not applications).

      Now someone can feel free to call me and idiot and rattle off the results of dozens of benchmarks proving c/c++ are faster, and how the better programmer who programs c or c++ is not likely to make mistakes the aforementioned mistakes like the newbies who program in java.

      It still won't change the fact that there's a whole lot of java code out there doing useful stuff, and has been for years now.
    • You have no idea what you're talking about.

      None.

      Java is used all over the place. The vast majority of Fortune 500 companies have custom applications using enterprise Java. J2EE is the standard for new systems doing back-end transaction processing. The libraries are mature and very robust. C++ doesn't have anything standardized as part of the language that even remotely competes.

      This isn't 1970.
    • Schools should be teaching many languages to each student. That way, they will be prepared to learn any language they need on the job in short order.

      In the early 80's, I used many languages in my CS courses: Pascal, Basic, Forth, PDP-11 assembler, 6502 assembler, PL-1, FORTRAN, custom Microcode and Lisp. My classes also focused on fundamental algorithms, so I got exposed to 'pointers' via array inices even in languages that didn't use actual pointers.

      When I got to my first job, I had actually never seen a single line of C code. However, using the wide background I had been taught, I was able to get up to speed on C in no time. Within a week, coding in C like a pro.

      Hopefully they aren't teaching Java to the exclusion of any other language these days.

  • bunch of crap (Score:5, Informative)

    by mrpotato ( 97715 ) on Tuesday February 26, 2002 @05:43PM (#3073445)
    The article doesn't say anything, and is really aimed at manager-type people.

    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 [microsoft.com] and Mercury [mu.oz.au]. 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.

  • Question (Score:5, Funny)

    by The Cat ( 19816 ) on Tuesday February 26, 2002 @05:43PM (#3073447)
    What's .NET written in?

    oh...

    hmmmm....

    GOODNIGHT EVERYBODY!!!!!!!

  • Shucks (Score:3, Informative)

    by medcalf ( 68293 ) on Tuesday February 26, 2002 @05:44PM (#3073457) Homepage
    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.
  • by pongo000 ( 97357 ) on Tuesday February 26, 2002 @05:44PM (#3073459)
    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).
  • 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.
  • by robbyjo ( 315601 ) on Tuesday February 26, 2002 @05:46PM (#3073476) Homepage

    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.

  • by Tim Ward ( 514198 ) on Tuesday February 26, 2002 @05:47PM (#3073478) Homepage
    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.
  • Um... (Score:3, Insightful)

    by gergi ( 220700 ) on Tuesday February 26, 2002 @05:47PM (#3073483)
    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?
  • 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.
  • Disappointing (Score:3, Insightful)

    by GSV NegotiableEthics ( 560121 ) <autecfmuk001@sneakemail.com> on Tuesday February 26, 2002 @05:52PM (#3073532) Homepage
    I was a little disappointed by this, for two reasons.

    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.

  • Morons. (Score:5, Insightful)

    by Hagmonk ( 201689 ) <lukeNO@SPAMburton.echidna.id.au> on Tuesday February 26, 2002 @05:55PM (#3073552) Homepage
    By the end of the year, two platforms--J2EE and .Net--will essentially control the programming languages market.

    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.

    So today's developers will use one of three languages: Java, C# or VB.Net.

    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.

    Developers switching from C++ to Java concluded that Java was the natural evolution of C++.

    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".

    if one were to look at computer science departments across the country, you'd see that Java has replaced C++.

    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.

  • Here's just one howler:

    This is because Microsoft introduced the concept of the CLR, or common language runtime.
    Sigh. This is proof that all the hype about "Microsoft innovates" actually does work (in producing people who believe it, not in producing innovation).

    To cite just one example, the author seems never to have heard of the venerable UCSD P-SYSTEM [threedee.com]

    Sig: What Happened To The Censorware Project (censorware.org) [sethf.com]

  • There are two platforms that are nearly identical: Java and C#/.NET. They are well adapted to industry needs and are likely to take over from the current two industry darlings: C and C++ (with a little bit of VB thrown in). C#/.NET actually even makes provisions for linking in C++ code The move from C/C++ to Java/C# is good. Applications programmers should have done that long ago: languages like C/C++ simply aren't well suited to the uses they are being today--high performance, component based software development.easily.

    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.

  • I think the editorial dude is right... I mean look at this!
    Return Line:

    Perl - /n

    C - /n

    C++ - /n

    Pascal- /n

    Delphi- /n

    Batch - /n

    My god.... they are all the same!!!!!

  • And I quoteth:

    Developers switching from C++ to Java concluded that Java was the natural evolution of C++. This was because it offered similar object-oriented capabilities in a safer way, by making use of a runtime much like VB. Most assume that interpreted languages had long ago proven their advantages, elbowing aside compiled languages to a niche in high performance computing.

    In fact, if one were to look at computer science departments across the country, you'd see that Java has replaced C++. So which language is really an evolved C++? The better answer is, simply, that new languages are more revolutionary than evolutionary. If we accept this, then VB.Net starts to make sense as a replacement for VB. However, one has to ask how different VB.Net and C# really are, given that they use the same runtime.

    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 ;-)

    • This article appears to be aimed towards those who use languages because their job requires it. I don't see Java as an evolution of C++, just as I don't see something like Objective-C being an evolution of C. I don't think _we_ care what language we use, but business people do. Most geeks use what's right for the job, whether it be it perl, C, java, or bf. As usual, the people making these decisions are higher up, with no idea of what any of it means. They want to believe that they're supporting the latest technology, and therefore are more capable at doing whatever it is they're attempting to do.

      All this replacing of language A with language B is pointless. In a sense, every single language is the same. They're all either compiled or interpreted into something the computer understands, and we, most likely, don't. The main differences are syntax and semantics; The logic behind everything is largely similar. And this brings us back to the CLR mentioned in the article: is it such a bad thing? Everything eventually boils down to the same sets of instructions, so why not completely seperate language from instruction? The syntax of language A might offer advantages over language B for some task, but the task can still be completed either way. It's just a matter of taste. Only where performance absolutely matters do the choices narrow; Outside of that, what gets chosen is what the developer is comfortable with.
    • probably because it was shabbily written and edited... but what he's trying to say is that intrepreted languages had proven their advantage in most (ie, non-high-performance) apps, leaving just one niche (high-performance apps) for compiled languages.

      Whether this claim has any merit or not is left as an exercise to the reader.

  • 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 [microsoft.com]

  • Because all languages can be reduced to a Turing Machine, we should all program in UTM.
  • 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.
  • >>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.

    Predictions that the .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.

    It is more likely that .NET will be a short lived fad than the likelyhood that an established technology will just disapear in the night.
  • by Baldrson ( 78598 ) on Tuesday February 26, 2002 @06:07PM (#3073658) Homepage Journal
    People forget that a machine/language that is Turing Complete [orst.edu] can emulate any other machine/language that is Turing Complete.

    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 [technicalpursuit.com] 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 [geocities.com], 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.

  • by gergi ( 220700 ) on Tuesday February 26, 2002 @06:10PM (#3073689)
    ... is being an engineer who's boss will read this article and take it as The Truth.
  • 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 [google.com]

    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.
  • The article applies only to a very limited group of programmers. Even Fortran is still heavily used in scientific computing, LISP and Prolog in artificial intelligence, and of course, assembly, C and C++ for system-level programming.

    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.

  • .. on my web site.. that all languages are essentially the same. Yes there are slight differences, but they all have if, then, else, for / next, while / do, records/structures, and many other features that are similar. Once you have learned one languages you can move to just about any other programming language and then it becomes a matter of what do you like most about language X, Y or Z. Basically it comes down to pick your poison and it has its plusses and minuses. You want feature foo, its in language X, but it also has feature bar which you probably don't want.

    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......

  • What about K? (Score:4, Interesting)

    by Jayson ( 2343 ) <jnordwick@gmailOPENBSD.com minus bsd> on Tuesday February 26, 2002 @09:14PM (#3075088)
    I agree that most language are the same C derived POS. C was different and inventive when it was created. Lisp, APL, Prolog, and Smalltalk were all different when they were created. It seems like as time went on we started narrowing our field of vision and implementing the same languages: C to C++ to Java, what kind of intereting steps are those? At least Smalltalk to Self was a very interesting pushing of the boundries. Today, almost nobody pushes anything, except how similar their langauge is to C and why that it good. Even Python and Perl don't attempt to explore any new concepts, they are happy being a Frankenstein of older languages that people seemed to have forgetten about; name three new features of either language, just try to name one!

    My sole exception to this is a language called K [kx.com]. 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 [kx.com]. 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 [kx.com] 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 [bell-labs.com], even though this is not the K strong point [kx.com], 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 [kx.com], in fact there is a K program that will do this [kx.com] automatically. For example to split a line by tabs you could write:
    cut:{1_'(&x=*x)_ x:"\t",x}
    And this is read:
    cut gets function, 1 drop each, where x equals first x quantity, cut x. When X gets tab join x.
    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:
    r..o:`zero`one`two`three`four
    r:r..o[1]
    r..c:`radio
    `show$`r
    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
  • by Stu Charlton ( 1311 ) on Tuesday February 26, 2002 @11:45PM (#3075673) Homepage
    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?

    There seems to be a tremendously insular mindset here on Slashdot... Java and .NET have little relevance here, whereas C and C++ maintain their positions as the "true" languages.

    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 .NET -- lots of training gigs, but very few consulting pilots yet.

    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 .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.

    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 .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:

    50% J2EE
    30% VB, C++, Perl, Python, etc.
    20% .NET.

    Eventually .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.

    The problem that Java introduced, and one that will be compounded is that if .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.

    Sure, many people in this forum will point to implementations of ML, Haskell, LISP and Smalltalk on .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).

    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 .NET is sealing us into another 5 years of the status quo.

    disclaimer: my opinions, not my employer's. take with grain of salt.

And it should be the law: If you use the word `paradigm' without knowing what the dictionary says it means, you go to jail. No exceptions. -- David Jones

Working...