Zona Research Does Programming Language Poll
Anonymous Coward writes "Zona Research has polled a group of developers regarding their favorite development tools. Visual Basic is far more popular than I would have previously thought, given the amount of griping I hear about it. Not suprising that C is still quite popular. Java finishes third...due to its relative youth, or are developers simply not using it that much?" The story's from Yahoo.
A bit off topic, but I thought the proverb impaired might enjoy the whole story.
The proverb is the legend of the creation of chess. The King in question was about to fight a war with his neighbor and asked his Wasir (counsellor) to come up with a means of avoiding an actual battle. The Wasir invented the game of chess and had the two kings play a game instead of fighting. The game was a draw which made the two kings realize it was a bad idea to fight each other for real as they were so evenly matched as tacticians and the war was thus averted.
In gratitude, the first king then asked the Wasir to choose a reward and he chose the grain reward described in the original post.
You will not drink with us, but you would taste our steel? - Walter Matthau, The Pirates
It's not only a vendor problem (unless you're using green threads).
On most systems the JVM uses native threads for performance and scalability reasons. Now let's take a look at the Java API. In java.lang.Thread there exists 10 levels of priorities for Java threads. Now let's see how this maps to a native thread system of say...oh so dear Windows NT.
On NT you don't have process priorities in the same sense that most Unixes have. Instead, what you have is thread groups (Low, Medium, High, Realtime) and each of these has 7 levels. So let's say our JVM runs on the High priority group. There's only 7 levels there, yet we have 10 in Java threads. There must be some overlapping going on here! So you cannot guarantee that your Java thread with priority of 7 is lower than your Java thread with priority of 8. Maybe they map to the same level 5 on the native threads!
Then take a look at the thread model Solaris uses... and Linux which clones light processes... it gets very messy real quick.
So its not just a vendor problems. Java leaves alot to desire when specifying threads, and mostly the reason is that abstracting all the thread models of the world is a pretty difficult thing to do.
Allen Holub has a great series of articles on Java threads. He goes into some length in explaining both the threading models of both NT and Solaris. He also nick names the NT thread system as an 'unholy mess' which is quite amusing
> I'm sure VB is hot for business apps. But I can't say I care. What about real-world apps
Since you've no doubt been duly flamed over the bogus distinction between "business" and "real world" apps, I won't visit it. I'd just like to register my opinion (okay, pontificate) on what a "real-world" app is.
Real world is not when your entire company has a need, goes to development, draws up requirements, negotiates price, goes through develop, test, deploy, test for real, revise, etc. Real world is when a department head has, say, an employee database like schedule times, for example, and wants it popped up on a web page or viewable in some quick tool they can pop up on their desktop. They go to the department's local programmer-dude (which I am in my department) without an actual developer title (usually a tech/admin) and say "hey can you do this?". Tech bangs out some perl or VB or shell script or excel macros, and there ya go, that work for you? Good, problem solved.
Real world is ad hoc, and VB lends itself to ad hoc solutions. I would consider software engineering to be necessarily several levels removed from this Real World, in order that the problem space becomes their world for an extended period. That's when you have systems programming languages like C++ or Java (yes it's the systems language of the Java platform).
Personally I don't think VB is ad-hoc ENOUGH, and its greatest weakness is that it only manages to do a half-ass job at being a quick-and-dirty prototyping system and being enterprise class, by trying to be both.
I've finally had it: until slashdot gets article moderation, I am not coming back.
I think you miss the point. Obviously, the guys who wrote the Unreal engine aren't morons for using VB to write UnrealEd. They used the tools appropriate to the task at hand. I'm sure they didn't write *Unreal* in VB. VB is best at making front-ends (and since an editor like that is primarily made up of the interface, VB is the natural choice); for other tasks other languages are often better.
Using VB does not make one a moron; but the thing with VB is that because it's very simple to learn it tends to attract more morons than a lot of other languages. Thus VB programmers get a bad reputation (which may or may not be deserved, though every VB programmer I've known has fit the stereotype).
--Just my $.02
It would be interesting to see this same survey done in 5 years, 2 years, oh what the heck... 2 months.
--
My office has been taken over by iPod people.
-----------
"You can't shake the Devil's hand and say you're only kidding."
My, my, my... What a tempest in a teapot (er; coffee mug, that is ;-) we have here. Let's not forget that they sampled only 150 buisness developers for their survey. In my field, if you sampled 150 developers the #1 language would be: FORTRAN. Yup. FORTRAN. No other language has quite the support or the libraries to do full-up parallel and/or scientific programming on 'big iron' (Cray T3E) systems. As many other poster's have pointed out, VB is a good RAD tool (which, coincidentally, is probably what it was designed for). However, it is really only applicable when you are building front-ends for Windows stuff. Java is a great language to program in (read: fun) but, like C/C++ is kindof a big hammer when it comes to solving small, UI problems. Similarly, Perl is The World's Most Useful Language for textual applications, but not so good for graphical stuff. I guess my main point is that 35% of 150 people does not constitute a trend. These folks are a niche, just like supercomputing folks are in a different niche.
As for programming, I've probably more experience behind the screen than both you AC's combined. I was writing speech synthesisers for the Commodore PET by the time I was 10, and radio telescope control software in pure 6502 machine code by the age of 12. I have little patience and less time for low-grade flamebait from a couple of AC's. I -certainly- understand the OO paradigm better, and have far more extensive knowledge of microprocessor design.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
My favourite programming language depends on the problem to be solved.
If it's quick and dirty where getting the program done quickly is more important than having it run quickly, I'll choose perl.
If it's something that is large and involved, and it doesn't matter if it's slow, especially if there is a GUI involved, I'll choose Java.
If execution speed is everything, then I'll choose C.
If execution speed is important, but it's a large involved project, then C++ might provide a better compromise than C or Java.
The next Cmdr Taco duplicate will be ready soon, but subscribers can beat the rush and see it early!
Amen -- Python is a beautiful language that is powerful and flexible and (most importantly) eminently readable!
:)
I was blown away when I heard about JPython the other day. This will allow you to load and interact with Java objects on the fly, in the interpreter. When you're done you can stream it all out to disk. It's like a toy shop
Plus, the Win32 API and COM is exposed under Python too so you can take your pick. (Or Tk for the Unix folk.)
Anyway, If I wanted to read code that looks like Perl, I would 'cat' a core dump.
I think that VB's popularity is mostly due to the fact that it's very VERY easy to create simple applications with it. In the article, they talk about "Business Software". For PHB's, all that counts is the GUI, so VB is a lot easier there.
To use any of the other languages, you need to be a Real Programmer. I think C or C++ is more used when what's under the GUI is more important (technical software?).
Greetings,
Ivo
I've seen Visual Basic used for *ugh!* web-page script stuff, and by engineers who wanted to crank out some cheap & nasty code, quickly. I've not once seen it used for any real work, though.
C I can understand. Java, likewise. Not only is Java new, the API keeps changing. There's virtually no relationship between one version and the next.
(Even for the Swing toolkit, which being new, you'd have thought Sun would standardise between 1.1 and 1.2... no way! It's in javax for one and java.swing in the other. During the betas, it's also been in java.awt.swing.)
Tcl/Tk also suffers from the lack of a solid API, with each new release having some major incompatibilities. Perl seems to be fairly solid, but Perl/Tk seems to always be several versions behind both of Perl and Tk.
Python only has one maintainer, last time I looked, which would give most industrial developers the jitters.
C++ is ok, but is a very complx language and seems to still be inefficient, compared to other languages. Maybe the problem is that the compiler has to translate between the OO model and the traditional functional model. If you ran C++ on an OO-based processor, it might actually have an advantage.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
If some of the arguments presented in this discussion held water, nobody would have written any good music on the piano. It's too damned simple an instrument; however could you play or write anything more complex than twinkle twinkle little star? After all, look at its interface. Notes get lower as you play the keys to the left, and higher as you move to the right. Volume is proportional to the velocity with which you strike the keys. Only "tune kiddies" (or perhaps "score kiddies" is the better term) would be caught dead with one of those things.
I'm a strong believer in having a life and as a result also believe in tools that let you have a life. For most business applications, VB does the job quite nicely. Need speed? I'll use C++ Builder. Writing an enhanced CD? Director. CGI? Python. Given a choice between being "elite" and having a life, the life wins every time.
Perhaps it's time for everyone to go demonstrate the slashdot effect on the Ask Tog site and look at the article How Programmers Stole The Web. It provides the best and most rational argument for having an "easy" language around: "real programmers" aren't the only people with good software ideas. Think of the of those who don't qualify as "real programmers": Dan Bricklin, who came up with the spreadsheet, and Robyn and Rand Miller, who came up with Myst .
Specifically, MOO (Mud, Object Oriented).
:)
MOO is by far not a very featureful language in terms of library code. It has no native interface, it has no graphics libs, it doesn't even handle I/O very well. However, what it does have is a very consistent and sensible syntax using if/endif, for/endfor, while/endwhile, try/endtry, and a pretty-printer that lets others read your code in an indent style that's readable but doesn't force you to use it when entering the code (I wish python had figured that out). String and list slicing use identical syntax (hint hint perl), lists can be created and nested as literals and spliced with a single operator (another hint, perl. python, how about a splice operator?)
But what I love most about MOO is the flexibility. As an artifact of the way the MOO command parser was built, methods on objects can have aliases and wildcard endings. This is poor-man's pattern matching and meta-object protocol. Not as ultimately flexible as python (and perl if you really dig into the guts) but intuitive to grasp. You can call methods as a string expression, and it will search for the proper method, matching against aliases and wildcards. I've written some amazing funky dispatch tricks with this.
Any language can do this trick, python is pretty close to it and includes even more features than MOO (like multiple inheritance), and java has niftiness like anonymous classes (java has several scriptable variants now). But what really shines about MOO for me is that the write/run cycle is practically zero. I can have a MOO method in an editor window, make a change to it, and the change is there. I am hacking on a running system, there is no script to invoke, there is no explicit compile command (well there is, the core just hides it very well). I change a line of code, and the whole database of code has its behavior changed as intended (well, hopefully
MOO is ubiquitously persistent. When I create an object, there are no explicit semantics to "pickle" and "unpickle" it. It's just there, it's live, it's always there as long as the database is running.
Finally, add multi-user protection into the equation. Every persistent resource has an owner, including methods, and methods always run with the permissions of their creator, and that's on a per-activation basis. Call a method owned by someone else, it runs with its owner's permission. Only the superusers (wizards) can set the permissions otherwise. This means a trojan horse program isn't possible, because it cannot run with your permissions. It could call an improperly written method that that could mess you up, but it wouldn't have required you to run it in the first place. I am seeing much movement toward persistent object databases, but I have yet to see one that takes multi-user protection seriously I've seen Perl and Python both try it, but it's laughably light security. You write an execution monitor that can potentially be modified by code it's meant to monitor, and I don't think I have to tell you what that means to security.
Give me an industrial-strength language with a transparent write/compile/run cycle, a persistent DB, and bulletproof execute-as-owner permissions, and you've got a convert. Till then, I hack in "standalone" languages for work, but I'll stick with MOO for the joy of hacking it brings.
I've finally had it: until slashdot gets article moderation, I am not coming back.
As for processor designs, let's start with the Transputer, where the machine-level instructions had a near 1:1 correspondance with the Occam programming language. :)
(I -loved- programming transputer arrays. THOSE were fun! And blew the spots off anything Intel could churn out.)
Then, I remember from my 1st year at University, talk of processors who could execute Pascal directly. Their opcode, again, had a near 1:1 correspondance with the Pascal language.
Even traditional processors, though, such as the 80x86, could be considered functional. You have conditions, loops, data types (8, 16, 32, 64, 80 bit variables), procedures & subroutines, maths operations, and all sorts of goodies. All the capability you expect in a functional programming language.
An OO processor is a bit more complex. Basically, it would need to think of operations on an object, rather than operations on a given address, which otherwise has no more significance than any other address. For that, you have to stop thinking in terms of linear, flat memory, but rather have each object in it's own "contained" memory space. ie: each object, at each level, would become a virtual computer, with "connections" as necessary. Not just at the "programming" level, but at the processor level. The processor itself would need to see the system that way.
It's my belief that translation between paradigms can never be as efficient as understanding the paradigm in the first place. Thus, it's my belief that a processor that is centered around the OO concept, and sees objects as objects, rather than flat memory models, would inevitably be better than translation.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
The "Microsoft VM" is correct. Its kinda a cross between Java, DOS, and the toaster. Plus some unholy relics from another dimention. It sure as hell isn't a JVM.
It runs Java applets, it's faster than a WOW Potato Chip, and it's surprisingly stable(unlike anything embedded in Netscape).
C'mon. You know you'd love it if it came from Linus. You know you'd praise its speed, and say that its bugs would be worked out soon enough, etc.
Linux bigotry isn't any more rational than PHBigotry, but it sure is a hell of alot more annoying.
This is coming from a hardcore Linux user, btw.
Yours Truly,
Dan Kaminsky
DoxPara Research
http://www.doxpara.com
Blame gcc. On my Ultra 10 running 64-bit Solaris7, hello world compiled with DevStudio comes out to 6104 bytes, and with gcc comes out to 24,368 bytes. gcc compiling with any amount of optimizations shaved a whopping 16 bytes off the executable. DevStudio compiling with -xO5 -xspace brought it down to 1999 bytes.
You get what you pay for.
I've finally had it: until slashdot gets article moderation, I am not coming back.
Wait. His argument was that in extensive use he has seen no problems with Python's indentation. How can you rebut that, aside from offering contradictor experience? All you have is a theory that it might impact productivity (and you're wrong about the details of the theory -- the odds of an indentation change actually changing the _meaning_ of the code without being an error is VERY small, and even that possibility can be eliminated by using tabnanny).
He didn't tell you you can't have an opinion; he told you exactly why your opinion is wrong. Which it is. Although I admit he also put a silly title on his post, so I can understand why you'd be annoyed.
To be fair, I have never seen optional braces cause problems in production C or C++ code.
What do you mean by "To be fair?"
How much production C code have you seen? I've seen and written my share, and I have seen the optional braces cause problems in real code. To be sure, it wasn't production code, because we corrected the bug before we shipped it -- but that was just luck (and skill), not any feature of C.
I could imagine an extra tab causing problems in production python code,
Imagination doesn't carry the day.
-Billy
Gah, I managed to screw up the name of the compiler every time. It's DevPro, not DevStudio. Suffice to say I prefer it to gcc every time, and thankfully so does autoconf.
I've finally had it: until slashdot gets article moderation, I am not coming back.
Comment removed based on user account deletion
Those morons who wrote the Unreal engine obviously "don't have the skills to be a real developer" because they chose to write UnrealEd in VB. But that's another story.
Let's be fair here, there are also plenty of morons who write in C. These are the ones can hammer out code, but they have no concept of what the application will be used for, how it fits into the business, or why the app is needed in the first place. They just take the specs and hammer out code. Are these guys "real developers?"
I think "real developers" will use whatever tool they're using to the greatest possible efficiency, regardless of what that tool actually is, be it VB, C, C++, Java, Cobol.
An example-- we've had to develop a warehouse management system that handles importing data from Symbol barcode guns, processes it, prints out pallet labels (with more barcodes), balances/stages/repairs orders, and finally stores it in our Informix system (SSA BPCS). Of course, there's a whole bunch of other "stuff" going behind the scenes, combined with making a user interface that can be used by minimum-wage guys on a shipping dock. Do you know how many man-hours that would've taken to do in C++?
In VB, it took one guy 6 weeks, and surprisingly enough, the system works very well.
This, to me, is a perfect example of a real-world application, not just "stringing together components."
Now, we could've spent 6-12 months doing this in C++, and it would perform probably perform... about the same.
At any rate, you *can* write real apps in VB, just as you can write crappy apps in C/C++. It depends on what you want to do, taking into account the capabilities of the language vs. budget constraints.
Your last statement would suggest that VBer's are higher in demand, because they can do things more quickly and less expensively, correct?
Have you actually tried to convince management that slower and more expensive is the way to go for any particular in-house project?
-CausticPuppy "Of all the people I know, you're certainly one of them." -Somebody I don't know
I can build an aircraft from aluminum or wood or composite plastics -- the underlying principles of flight don't change, only the context in which those rules are expressed. The art is not in knowing how to make a wing, it's in knowing that for this type of flight and this propulsion system, I need to use this structure and material.
Programming is (or should be) an act of engineering. A programming language is a material from which we shape a piece of software; knowing the form our programs will take gives us the insight to select the right programming language.
In the last year, I've been paid to write code in C, C++, Java, FORTRAN(!) and Visual BASIC. My current projects include a C-language network simulation and a Java-based server-side application. My personal preference is largely based on what I'm developing; there is no perfect programming language.
IMNSHO, Visual BASIC and Java suffer from the same problem: They are trying to be everything to every one. VB works well for quick business apps, although it's lack of serious structure can breed poor programming practices. Java is a fine tool for web applications and server-side processing, and could be better if Sun gets its head screwed on straight.
My language of preference for most things: C++, because of its inherent power and flexibility -- but Bjarne's creation has its limitations, too, and suffers from annoying complexity. As creations of the human mind, no programming language will be perfect.
Advice from a grizzled 25-year veteran: Learn the fundamentals of program design, object-oriented decomposition, and computer architecture. Try every programming language you can get your hands on. The best engineers are those that understand both design and materials; if you can analyze the problem, you have a far better shot at picking the right tool for the job.
Uhh, yes you can.
Go back to class, kid.
Well, if you asked a group of embedded systems engineers what language they used for fine tuning time-critical sections in drivers, you would see that Visual Basic is not popular, while 90% of the developers seem to be using asm for their ``applications''.
I'm sure VB is hot for business apps. But I can't say I care. What about real-world apps ?
One heck of a lot of programmers use Pascal (because of Delphi), and we're a lot out there using C and C++ because of run-time efficiency and portability, and because of language sophistication (well, that holds for C++ at least).
The main problem I guess is, that people tend to see the most popular language (or, the one that requires the most programmers to work with it) as the ``winning'' language. In real-world large applications however, a number of languages are often used. LISP/prolog for the extensibility and AI parts, C for the APIs, C or C++ for the core parts, Pascal/VB/objc for the front-ends etc. etc.
The fact that a language has a lot of programmers either reflects that it is a language which is good, or a language which require many people working with it to actually get results.
You be the judge.
VB has been around for 8 years.
Java has been around for about 3 years.
C/C++ was around when time dawned
But VB still came out on top when 150 developers where polled.
Perhaps they only asked developers who worked in Microsoft houses.Perhaps Microsoft funded the survay. Perhaps we are all missing the marketing from Microsoft and are using the "wrong" dev tool when we whip something quick and dirty up in Perl.
IMHO C/C++ will never die out. Java will continue to grown as long as Sun and IBM continue their support. VB and the other Microsoft "Visual" (I never did work that out) development tools will last as long as Microsoft continues it's agressive marketing of NT server / Windows dekstop enviroments.
> Faster languages than C++ (at least, those I'm familiar enough with to say): C, Occam, LISP, FORTH, Fortran, Algol, Smalltalk, Perl.
You may well be familiar with all those langauges, but I doubt you're very
familiar with modern C++.
C is NOT faster than C++.
If you use a bunch of objects inappropriately, then yes, it will
be slower than the pure C version but if you need to achieve the
same level of flexibility and encapsulation and you have a decent
optimizing compiler then the C version will be roughly the same speed.
Fortran - generally is faster than C++, especially for numerical
work. However check out http://oonumerics.org/blitz/
for C++ based numerical code that is as fast as fortran
Perl - is being re-written in C++, and somehow I suspect
that perl's authors have a better understanding of perl's strengths
and weaknesses than you do.
Occam - was effectively the assembly language for transputers, I too have programmed transputer
arrays, and yes, they did kick ass, but it's pretty fucking useless for anything except low level programming on
massively parrallel computers. Also, using indentation to control block
termination is a BAD idea.
Smalltalk - if you have an implementation that runs faster than sensible C++,
please tell me where I can get it.
http://rareformnewmedia.com/
What this survey proves is that the term 'developer' today is a far cry from the same term used 10 years ago. VB didn't exist like it does now (it was there, but it wasn't the same product). Large corporations like packages such as VB or Developer2000 for many reasons.
1) It's easy compared to the likes of C++ or java and because of this, you don't need to hire top-notch talent. The pool of available 'programmers' is much larger. Don't underestimate how important this is to a company.
2) They are RAD tools - much quicker development and turn-around times.
--That being said, these packages have their limits, especially when it comes to producing a large transaction-based system. I would never trust such a system built upon one of these packages.
C++ is a great language, and I enjoy programming in it, however -because- it's OO, it has the inherent drawback of translating from the OO paradigm into a functional one (machine code is, on all existing processors, based on the functional design concept, not an OO one.) It also has the drawback that it's object-based, not pure OO, which means that you can't explot many of the speedups you could get from the OO approach.
C, and many other "traditional" 1st and 2nd Generation Languages, have an almost direct mapping from the source to the unoptimised assembly. This means that you have much more control over how efficient the compiler can be in generating the code and, therefore, in optimising it.
With OO languages, no such mapping exists. There is no way to tell what the compiler will generate from a given construct, ESPECIALLY if you're taking advantage of the concept of objects, and the exception handling. (And if you aren't, then why are you using C++ at all?)
If you can't use code you can be sure will compile well, then you can't possibly write as efficiently as you can in a programming language where you have enough control to be able to hand-optimise your algorithms.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
What I'm saying is that I've seen plenty of production code (you'll have to take my word), and I've never seen curly braces cause trouble (have to take my word on that, also).
:)
I believe you. I'm just stating that I've been involved in much development, and I see it happen all the time. The only cure is to always use [short and] curlies.
I can picture it happening, though. My point was I think it's unlikely that python has never had the same problem (indeed, I'd be very suprised), and so the unique indention model doesn't really serve any good purpose.
The *purpose* of the indentation isn't to avoid that particular problem. It's twofold: first, to remove a nasty source of style debate; and second, to make code easier to read by making style cues match up with meaning.
It works very well at both.
Oh. You're saying there's software (tabnanny?) available to assist the programmer to make sure such errors do not occur? I guess it has come up, and I don't need to use my imagination.
Nope -- tabnanny was written unwillingly after the insistent demands of people who knew nothing about Python.
(ps. I hit enter before I was done, hence the post and a half. I blame slashdot. perl, rather
*Grin*.
-Billy
Folks complain about vb, and it's really a pretty horrid language, but the dev environment fills a very distinct and useful niche, which is what makes it so popular.
If you need a quick GUI, say for a DB front-end, it can be tossed together in vb very quickly. Java's nice, but the gui stuff keeps changing. And, whatever you think about the COM/CORBA wars, there's an awful lot of useful COM objects out there, and vb makes a nice glue for them.
For contrast, consider something like C++. This is simply not an appropriate choice as a first language for someone new to programming. People (ab)using C++ without having a decent grasp of programming (particularly modularity/OO aspects) first have caused more pain and frustration for their better-trained fellows than I care to think about. In this group I include the designers of the most common C++ class library - MFC, which by itself has done more to turn people off C++ than even the language's own nastiness could do. This relative inaccessibility explains C++'s place behind VB.
As an aside, is perl a good choice as a first language? Personally, I don't think perl is a good choice for much of anything, but I suspect that even the most ardent perl advocate would admit perl isn't likely to appeal to first-time users. It's not meant to. (Python, on the other hand, would IMO make a very good first or teaching language.)
Java's low position on the list is best explained by three things: its relative youth, lack of proper support for certain types of programming, and performance. The youth issue is pretty self-explanatory. As for lack of support, here are some thoughts:
I think the performance issue is mostly BS. Sure, an interpreted or incrementally-compiled language such as Java will never be as fast as a fully-compiled language, but with modern technology the difference is very small. The weird thing is, the same PHBs who can't get "Java is slow" out of their heads have no qualms about using VB. What's up with that?
Slashdot - News for Herds. Stuff that Splatters.
This is sort of a non sequiter, but I have to post somewhere....
/true/ platform independence...not only would Java be able to run on any platform, it would be able to be /ported/ natively to any platform, which is a boon for C and sometimes C++.
I think Java is a pretty good language...some things really bug me (inability to abstract fields in a class, etc.). I, personally, would love to see Java natively compileable. There really isn't any reason it can't...it's a language just like any other.
Then we would see
It's 10 PM. Do you know if you're un-American?
I'm not surprised VB is so popular. Look how many Windows desktops there are out there, and look at how god-awful Visual C++ code is. VB has a pretty nice development environment, and is (apparently--I'm not a VB guy) great for quick and dirty Windows GUI apps.
.EXE and a few random .DLL's that might have to be installed. C code compiles to executable files and some libraries that you probably already had anyway.
;-) So, yes, overall I'm still quite hopeful.
The fact that the entire language seems to me like a gigantic glueball(in the sense of it binds everything together, it picks up some rather shocking cruft, and you'll sometimes get stabbed by something locked inside) doesn't take away from the fact that glue can be great for whipping things together--just ask TCL developers.
Past that, I'm not surprised Java hasn't overtaken C. Beyond the whole speed factor, C is just alot cleaner for the non-expert programmer to mess around in. Particularly when it comes to making patches to existing codebases, there's just so much less to need to figure out in C than in a fully object oriented language such as Java. Granted, when C is forced to do things C does not like to do, C gets very crufty(thus the recent complaining I've been hearing about lsh's pseudo-object system), but a) There's a massive codebase out there written in C, b) There's a massive amount of deployed C code(this isn't the same as a), and c) C is less daunting for a moderately skilled programmer to mess with.
However, I must say that the reason Java hasn't displaced VB down to third(VB/Java address a different market than C, if you think about it) is that Sun royally and utterly bungled its deployment. VB projects "compile" down to an
Java development with the JDK is laughably awful, and will someday be a textbook example of how not to burden your coders and your users.
From what I've seen--and I'm sure the experts can enlighten all of us further--merely getting javac to function(got everything in the right folder? Got your path environment set right? Sacrifice the correct barnyard animal?), then executing that Java app(better nuke the henhouse just to be sure) is far beyond the difficulty in even writing a simple Hello World!
The fact that code never compiled into a single file didn't help either--web deployment was a mess, with forty web server connections for a single semi-useful app. JAR finally fixed this, but THAT standard got mangled by CABs.
Don't even get me started on Code Signing--there are three, three, three ways to go for this little project.
Alot of the problems wouldn't have been as significant if javac was as straightforward to play with on your average Linux distribution as, say, gcc. The non-free aspect of Java destroyed this possibility--and Sun's new "Gotcha Source" License isn't helping.
Java came out of the gate hard to install, harder to deploy, slow to load, and slower to run.
Things have gotten better--J++ and the MS VM have been instrumental in this regard--but the core usability of Java is farrrrr less than VB, and even less than C.
Actually, I had just about given up on Java until I found the one company that has truly understood the promise of Java. Mindbright. I've already written about these geniuses here, but suffice it to say, the fact that there's now a extremely high quality Java deployed SSH and SSH-VNC(VNC into those hosts behind the IP Masq, all via SSH) solution is amazing, and caused a complete reversal as to my opinion of the viability of Java as a useful platform.
Using something written in a language on a daily basis will do that.
Yours Truly,
Dan Kaminsky
DoxPara Research
http://www.doxpara.com
"I thought that the HotSpot thing could only accelerate Server-side Java?"
I will work on any Java, but it specializes in sniffing out and optimizing critical performance areas, "hot spots", so server side code, which does a lot of repetitive stuff will see the best increase. Unfortunately we don't run our server stuff on OSs with a production ready "Java 2" VM available, so we can't take advantage of it really. And the older JITs are notorious for screwing things up, so we disable JITting too.
"note that in the volano benchmark, the much touted HotSpot comes behind the IBM JVM, so it is not the magic bullet, but anything that can help increasing speed is welcome"
According to this report:
http://www.javalobby.org/features/jpr/
IBM's JVM was clearly the winner, but HotSpot was not far behind. Unfortunately, IBM can't possibly keep up with releases as fast as Sun can, so HotSpot will always be the fastest VM for the most current release (I figure). I don't know if IBM has a "Java 2" JVM out yet, but tge HotSpot engine in 1.3 looks pretty good.
It's 10 PM. Do you know if you're un-American?
I don't know what I was talking about, because that report doesn't even have a HotSpot benchmark on it. I'm pretty sure that HotSpot is only a bit behind IBM's VM, and probably getting much better. There were a ton of things they had left to implement after the 1.0 release of HotSpot.
It's 10 PM. Do you know if you're un-American?
Just because something is simple to use doesn't mean smart people shouldn't use it. Not to be a little out of line here but I use VB for 85% of my work and I have to say that as a language it isn't as bad as some would like to think it is. It has great object based charcteristics and its devotion to COM makes component creation a snap. What VB does is allow you to abstract away the GUI. A textbox is a textbox. Theers nothing magical about it anymore, and it shouldn't be teduious for us programmers to add one to an app we are creating. There isn't a tool out there that makes adding GUI elements easier than VB (save Delphi...which has a very VB'ish interface). Alot of Microsoft's success is directly related to the tools they provided for business programmers to get their jobs done. The other thing that makes VB attractive is the way it allows easy access to various databases. In literally 1 or 2 statements you can be connected to just about any relational datastore, assuming you have an ODBC driver for it. Data is the blood of the IT revolution. Easy access to that data is a big plus. What people don't realize about VB, is that it can be used to create very powerful software components using COM, or the Component Object Model. For the last several years I have been developing statistical COM components for use in various projects here at Educational Testing Service. Once created (if created with care) these suckers fit in everywhere....they can be used in ASP scripts in IIS, in a Word macro, and even a larget program written in C/C++. You can fault Microsoft for many things but you have to give them credit for consistency. Everything Microsoft does is centered on COM. They have focus. Imagine if there were a VB like tool for Linux. What a tool that would be. Unfortunately Linux can't agree on the guts behind their GUI's (will it be KDE's version of CORBA or will it be Gnome's self created version?). What major market vendor is going to gamble on the outcome of that horse race. So again I reiterate, just because something is simple to use doesn't mean smart people shouldn't use it.
I'm still working on a clever footer.
You're absolutely right. VB may have still come out on top for "building business applications" but who did they ask? "Developers." That's a pretty big umbrella, and how was the question phrased? What were the other languages that made up the last 35%?
The survey found that 35 percent of programmers use Visual Basic as their preferred language for writing business software, while 20 percent picked C and C++. Java ranked third with 9 percent in the third quarter of 1999, up from 5 percent six months ago.
The question is how to interpret the reoccurring word "business" in this quote, does it mean:
I suspect it is the latter, and if it is - I'd rather have my language of choice not show up first on that list. In general, I have found that closer an application is to money (manipulating it, tabulating it, etc.) the less fun it will be to work on and write. Would you rather write software to calculate mortgage payments or manipulate/view objects in 3d?
I believe the type of software most "real programmers" enjoy writing is the type of software that poses enticing and possibly difficult problems to be solved, programs that are heavy on the mental stimulation aspect. The problem is, the programs that are most highly in demand are the run-of-the-mill, let's-crank-it-out business applications - after all it wasn't that long ago that COBOL was listed as the language having the largest number of active lines of code (it may very well still be true today).
It is possible that the study is really asking: "When you don't want to bother actually having to get too much into the computer science side of things and just want to bang out an app as rapidly as possible, which language do you use?". If this is an equivalent question to the one they are asking the results are hardly surprising.
there are two kinds of people in this world - those who divide people into two groups and those who don't
We use Java here in the academic environment /extensively/. I work for the IT department of a large university (Cornell, 30,000 people), and our distributed infrastructure is being developed primarily with CORBA and Java, as are the new apps we're kicking out. Because of changing client-side API, specs, implementations, Java has been so far, a boon on the server side, but I think it's alive and kicking on the client too. JDK 1.3 is going to make it even better, with the incorporated HotSpot engine, which I've already seen to speed up client-side apps. I haven't seen the poll, but it's scary to think that many people have chosen Visual Basic as their favorite. I can understand if they are forced to use it...but personal favorite? Was it just MS lackeys and novice kiddies who think VB is the coolest thing?
It's 10 PM. Do you know if you're un-American?
I agree that VB is trashed a bit overmuch and so does Linus, judging by this quote from recent interview:
"Don't get me wrong, I like Visual Basic, really, and I think it is one of the best successes Microsoft has had. That was because it was a really good medium for customization, it was a great medium to the front ends for the real work. I think that is the future."
Compared to working with MFC, VB is a real pleasure. It can produce huge, slow, klunky applications, but it does so quickly -- which often counts for a lot in a internal business tool environment.
*shrug*
You don't have to use all that many of the C++ features as long as some are useful -- such as overloading. For some applications, you wouldn't use templates, multiple inheritance, or a boatload of other stuff, but a handful of classes and some of the syntactic sugaring can save you time -- and it's not strictly C anymore.
Only the dead have seen the end of war.
That's really scary. Perl is one of the few ``evolving'' programming languages that I like. In fact, I can only really deal with liking one at a time, which is another reason why I dislike Java, for those of you who bother to track my commentary (and for them I offer my sincerest apologies and condolences..).
[engage ``mindless'' psychobabble mode in a swift departure from original objective of this post]
Polls are always pointless. Obviously, whenever you ``poll'' anyone, you're only getting the goods from a narrow group of individuals (especially since developers working on specific tasks will require specific languages to get specific results.. ha!). It may or may not reflect well on the general populace (or other relavent supergroup) at large.
Visual Basic.. is not something I'd ever want to use for much of anything. C/C++ is perfect for general purpose programming. The kind of project you're doing will decide which you will want to use (not everything needs to be C++, though using ``clean'' C is usually a good idea -- that is, the grand majority of C that is compatible with C++). Java is probably the next best thing. What makes it an attractive choice is all of the features that are ``built-in'' (while the ANSI/ISO standards for C/C++ only go so far with what they cover as being the ``standard''.. graphics are beyond their scope, for instance).
C/C++ are going to remain the ``standard'' for quite some time. Java is somewhat inflexible, and since it is a corporation which regulates the standard, I'd fear for anyone wanting to jump whole-heartedly onto /that/ boat. I'll take ANSI/ISO stuff /any/ day. Java is good for when you want to do finish a program faster than you could in C/C++ (and don't mind the performance hit). And as much as certain bigots are loathe to admit it, Java is a simplified language meant to protect programmers from making common errors. It was designed that way (that doesn't mean that Java programmers are intrinsically ``less intelligent'' than C/C++ programmers, though you might want to wonder about the ones that slam C/C++ for no coherent reason whatsoever).
The short of it is this: There's really no point to these polls. I've never even bothered reading a poll like this before, and I could have already told you that if you're a programmer (working for a company), you're likely going to want to learn C/C++, although there is also a lot of Java work out there (in case you want to learn that instead of or in addition to C/C++.. either is likely to be a viable option), and if the company you work for deals with Microsoft stuff to any extent, you're probably going to want to learn VB (or find your niche doing something else ;). Real complicated, eh?
Every programming language has its uses, and functionality is a little bit more important than popularity. After all, in the realm of OSes Windows is still the most popular, but how many people think it's a major win? Popularity polls are pointless. I'd much rather see an academic comparison of the ``best'' programming languages side-by-side.
Anyway, just because some fools polled some other fools that didn't think Java whooped as much ass as VB doesn't mean it's serious lossage (or that it's ``not-so-hot''). But then, to do a story, you have to have some conflict, right? =P
~ Kish
Damn, that's funny. WTF are you talking about ?
Last I checked their were no "functional" processors either.
Also "C++...seems to still be inefficient, compared to other languages."
What other langauges are you talking about ?
OK, it's slower than Fortran or assembly and C++ does tempt
people to do wasteful things especially when they don't
know the pitfalls, but it's pretty efficient when done right.
http://rareformnewmedia.com/
You'll need an 'other' entry as well, as I don't see Objective C in your list, and I'm sure there are many others out there ...
Chris Wareham
If you look at the number of people in "business" computing who are not paid to be full time programmers, yet who can assemble a database-oriented "Application" from parts with Visual Basic and some ActiveX controls, you're stretching the definition of programmer. How many people have "Software Developer" or equivalent on their business card and yet only know Visual basic? I hope that number is somehwat lower. I hope that it's not the language of choice for the average B.Sc. Computer Science graduate. I'm often reminded of an old axiom in computer science: When all you have is a hammer, everything looks like a nail. In other words, the surveyor started out to find the answer to the question they already knew: Does Visual Basic meet the needs of the people who use it? Yes. he/she/they surveyed exactly the right kind of people to find out if Visual Basic was still relevant to the small custom database oriented application building thing. My other problem with this is that a sample size of 150 people is laughable when they pretend they are answering the question "Is Java a failure?". Hmm. Does Java have a target niche now? Yes. So why not go and look at it's penetration in that niche. It's not news that Java hasn't replaced every other language for every purpose. Neither has PERL, C, C++ or Visual Basic. Welcome to reality. I'd like to know what the over 3,000,000,000 people who spend all or some of their time developing software think. I'd like that survey broken down according to whether or not programming is their primary job function, and ask them if their choice is dictated by job description or the "shop" you work at, or if you are off in a corner like embedded systems, etc. The number of languages that people say they know and have written software with would be interesting as well. Some interesting statistics could be calculated. For example, if 50% of people who know both Delphi and Visual Basic still choose Visual Basic for most projects, I think Inprise/Borland would sit up and take note of it.
Borland Delphi:
A visual development language for Win32. Uses Object Pascal for the core language. Native code compiler. It has the best IDE I've ever used, bar none. I've used a lot. Think of C++ power, VB-style visual development and an elegant programming language rolled into one, and you are somewhere close.
It supports DirectX, ActiveX, COM, CORBA, and virtually every bit of drag-and-drop database functionality you can think of. Special emphasis on internet functionality. Huge number of solid third-party components, though you can craft your own with the minimum of effort. I've even used it to write web server applications (ISAPI and CGI), for which there is a wizard included.
You don't have to touch the monstrosity that is MFC, because you get a great object-oriented component library (Borland's VCL). Delphi thrashes C/C++ on compilation time and matches both for execution speed. And yes, there is an inline assembler for all the keen hackers out there.
That any programmer worth their salt is voting for VB when Delphi is around totally baffles me. Seriously, I think that most people don't even realise that this tool exists.
Apologies for the language rant - but I really felt the need to shout about another fantastic bit of software largely sidelined by the Microsoft Monopoly Marketing Machine.
When Delphi finally arrives for Linux, I for one will be cheering very loudly indeed.....
> The reason you don't have to hire top-notch talent to program in VB is that it makes it easy to write mediocre-to-awful code.
That's the bone I have to pick against VB. It parallels the myth that a GUI makes a computer easy to use.
The problem, in both cases, is that an "easy" interface to the job makes it possible for unqualified personel to give the appearance of getting by. That's fine in some circumstances, but it doesn't address the world's software crisis. Arguably it makes the crisis worse.
I once worked in a shop that used VAX BASIC. Kinda low-brow, but nothing really wrong with it per se (after all, it all compiles down to machine code). But the problem was that it made management think "programming is easy", and we ended up with people on the team doing incredibly stupid things, despite the fact that they could easily write a line of code that would compile.
The problem is that "easy" syntax does not and can not change the difficulty of the underlying problem. It makes sense to use "easy" tools whenever they are available, but the unfortunate side effect is that society, or at least your PHB, begins to expect intrinsically difficult problems to automagically simplify themselves to conform to the lowered bar of the language you're trying to solve them in.
--
It's October 6th. Where's W2K? Over the horizon again, eh?
Sheesh, evil *and* a jerk. -- Jade
*Which* assembly language? A MIPS dialect? Alpha? x86? PPC? etc.
VB, arguably, is a far cry from the original BASIC, with the latter's (GW, anyway...) 64KB limit and so forth.
Is it LISP, or [Common] Lisp?
Add:
ML (e.g. SML/NJ)
sh and/or csh
Smalltalk
Haskell
Machine language (any)
Only the dead have seen the end of war.
>Python only has one maintainer, last time I looked, which would give most industrial developers the jitters.
Possibly, but since Python is fully Open Source, maintainance of the language shouldn't be a problem. When push comes to shove, you can always find a way to fix the problem -- people can and do post public patches to the Python source to fix things they see as problems, such as better garbage collection, consistent return types from functions, etc. If anything, I'd be more worried about being tied to a proprietary language with a single company behind it. This applies for both good languages (Delphi), and not-so-good ones (VB). If the company goes out of business (Delphi again, sorry Borland), or arbitrarily breaks backwards compatibility (VB), you're screwed.
Also, Python the Language has been pretty stable for a few years now -- my copy of "Programming Python" is dated in 1996 and applies for Python 1.4. The current version is 1.52 and is mostly minor changes in the standard libraries. The major events for Python right now is how it is used, such as in Zope or JPython.
Remember the persian chessboard problem*? Rate of growth is at least as important as amount.
* For the proverb impaired, a king promised a young man a reward of his choosing. The young man asked that the king take a chess board, put one grain of wheat on the first square, 2 on the second, 4 on the third, and so forth. The thing is that this ends up being:
As anyone with an alpha can tell you, 2^64 is a huge number. I heard somewhere that this number was quite a bit more than the annual grain yield for the whole world for any given century.-- Slashdot sucks.
In 1997 when another language poll was posted on /. the results were highly in favor of Java. In 1997 Java was going to save the world. Corel had ported WordPerfect to Java. Web browsers were being written in Java. Well now it looks like they're emphasizing Visual Basic. Basic seems to have taken over the world in 1999. As for C++, since when did efficiency in the workplace outweigh credentials and business suits?
And here's why: Learning curve.
The learning curve on Java is a BITCH. Yeah, yeah, I know you're thinking "Bunk! Java's as easy as they come!"
Bull. Points of fact:
1) Java keeps changing. If they'd get down to standards already more people would use it. Look at Swing for crying out loud.. 1.1 to 1.2 was a whole radical annoying thing..
2) Java, being wholly OO, is a lot harder to learn for the person that has programmed C for twenty years. C is used WAY more out there in the real world than C++.. I learned the OO way. I have no problems. C++ is my language of choice, but everyone I work with just can't grasp it easily. It takes them a while. Java? Forget it, they don't even try! They don't try because:
3) It's a slow, clunky, badly designed, interpreted, overrated, security-overconcious, bug-riden piece of shit.
I have a program that I would consider to be something fairly easy to do, but it's in Java, thereby becoming extremely difficult. It has to be on the web, and that means java. CGI just ain't gonna work for this one. ActiveX can blow me.
The program basically connects to a Database over the network, and lets a user modify it. The mapping of inputs to tables is fairly one to one, so basically it's just a front end to the DB. Easy right? Hardly...
JDBC works maybe 75% of the time. Often it fails for no reason...
There's no standards in how JDBC connects across a network.. It all depends on the server you're running...
Come to think of it, there's no standards on Java between the two major browsers (both of which must work, yes, bloody m$). That means the simplest way is to use the Sun Java Plugin, adding one more thing that users must do for this POS to work right..
All the servers that support JDBC (This is on NT, not by my choice, mind) seem to suck terribly. Most of them crash a lot, few will run as a service, none are open-source and/or freeware...
Bloody annoying, that's what java is. You can't get around to programming any damn thing because you're too busy finding any way to get the stuff to make it work in the first place..
Sorry, I had to vent a bit....
---
- Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
A clue, folks. This was a poll, which means that it measures quantity.
Corporate America employs programmers in truly astounding quantities. These folks are known in the trade as Applications Programmers. They crank out huge amounts of code following the formal specifications provided by the company's Applications Analysts.
These days, the language of choice for Applications programming is VB. It used to be COBOL. (Anyone remember COBOL?)
Applications Programmers are, by and large, a breed apart from Slashdotters. That doesn't mean that they don't exist.