I’ve never seen how Job Postings can indicate the popularity of a language. If you see 500 jobs posted for Java and 150 jobs posted for C#, people say “Java is more popular”. Yet it could mean that the places looking for C# developers aren’t having issues filling those positions because it’s more popular; so they don’t have as many open positions, they’re being filled.
* The Point Being? Well it was interesting to try and put a few numbers to “X is popular”. Sure we all have that gut feeling from working in the industry and seeing how things are going, but it’s an (admittedly crude in some ways) attempt to generate some numbers.
* Windows/Unix programming? I used those queries with the different searches, where applicable. I could probably add some others like ‘Linux’ and ‘FreeBSD’. More than anything, just to add some extra data points out of curiosity.
* overestimated value of internet? Great, point me at some other data sources. It’s what I’ve got.
* C++ is something I’m going to add in future versions.
* Assembly? No, assembly is not something I know a lot of. Enough to dig through gdb dumps of it when necessary. This is a good place to point out that the limiting factor for me on a lot of these queries was the Overture data. Doing something like ‘erlang programming’ or ‘lua programming’ there turns up no results. That data was what got me curious enough to try and write something down about what I found. If you didn’t find your favorite language, that’s probably the reason why.
* Job Postings? Hopefully as the experiment proceeds we can get some time data for these, which will add another dimension. To some degree, we trust that the market will even out problems of supply and demand, so I don’t think it’s unfair to say that jobs are broadly correlated to popularity. The missing factor is of course, salary. If in your example, the Java developers were highly sought after, the price would tend upwards, whereas the dime-a-dozen .Net programmers wouldn’t get paid much. Unfortunately, at the moment I don’t have a way to get my hands on that data.
Thanks for the feedback, everyone. I just created this, and look forward to improving it.
I think many people tend to overvalue popularity. It’s important, but dismissing a language just because it’s “unpopular” is a rather juvenile thing to do. At the end of the day, you’ve got to make the following considerations:
1) Does language X have the libraries I need?
2) Does language X have the kind of commercial support I need?
3) Does language X have enough programmers to hire to work on the project?
Even smaller languages usually have (1), and for many smaller projects, (2) and (3) really don’t matter much. “Alternative” languages tend to be popular in scientific or mathematical fields for this reason. What amazes me, though, is how many people write open-source software in C and C++. (2) and (3) are very close to non-issues for all but the most high-profile projects, yet, people tend to overvalue popularity anyway. As a result, they let themselves miss out on some very real technical advantages.
Hmm… I think I would have to write this off as an example of how not to do statistics and also as an example of how failure to control for confounding variables can seriously put results in doubt.
Basically, as others have already pointed out a few examples of, there are so many confounding variables in this data that are not controlled for (and probably can’t be controlled for), that the conclusions are not even remotely supportable.
Internet search results?
“C programming is rapidly being phased out in favor of newer languages that support rapid development.”
Oops… But your study will count that is a positive hit for C indicating it is popular, even though the page in question is really about how C is being phased out of a particular company / project, whatever. Just an example of one of the major confounding variables here.
And yes, as far as jobs, Justin made a very good point. The number of job listings cannot be used to determine the popularity of the language because the relationship could actually be an inverse one. The number of available jobs could be less for a popular language because there is simply a lot more stock to fill the vacancies from. You cannot say with any degree of certainty what the relationship is between # of job postings and popularity of language. You are making an assumption that could be seriously flawed.
“I think many people tend to overvalue popularity. It’s important, but dismissing a language just because it’s “unpopular” is a rather juvenile thing to do.”
I agree. Some “unpopular” languages are very well suited for certain tasks. emacs lisp being a good example. And within reason, even “unpopular” languages have plenty of support on newsgroups, etc. from other developers. I say within reason, because obviously choosing ALGOL 60 for your next major project might not be the best idea you ever had. :p But within reason, even “unpopular” languages are well supported on the Internet.
Of course, unpopular languages that have stood the test of time (lisp, etc.) are a much better choice then newer unpopular languages that have a small user base, and might simply disappear on you, leaving you stranded with no support and no update path.
Well, you did read the article, didn’t you? I already said most of what you mention there.
But I still think the broad pattern is reasonable, and as the first poster said, seems to fit with the gut feeling. I also thought the dollars/click and job posting information was interesting – we’ll see how it changes in the future.
As far as your query example for ‘C Programming’, maybe thinking about the google hits as “visibility” makes more sense. Even if the article is talking about using some other system, at least C is mentioned. Haskell and Ocaml probably are not.
I’m a big fan of unpopular languages, actually. At my last gig, I did Erlang programming. There are some tradeoffs though… the knowledge I gained there isn’t likely to pay off in terms of other Erlang consulting jobs in this area! I also like Tcl and Python a lot, which are not high on the list.
Actually, the article featured some interesting data, albiet data that is largely unscientific and quite open for interpretation.
The data indicates, as I have always suspected, that C (and probably C++) is still very much alive and doing quite well, thank you very much. C and C++ are irrepreplacable where they are particularily well suited – systems level programming and over-the-counter software.
Java and .Net are both doing quite well, particularily in the “large enterprise, internal dynamic business application” arena, where they are particularily well suited. Java is more dominant on the server side (with J2EE), particularily in the large enterprise with multiple platforms. .Net is dominant on the Windows desktop, and the smaller enterprise where Windows servers are prevailant.
The various scripting languages, like JavaScript, VB/VBA, Perl, Python, PHP, Ruby, etc. are all prevailant in web programming, system administration, and rapid application development.
In short, the various languages are popular in their respective applicatin domains (where they are well suited). And language flame wars are stupid.
I think we are seeing genuine evolution of languages. The latest technologies, like Java and C# are clear leaders for solving business problems. C++ and C still have a stronghold in some markets due to momentum, and procedural languages such as LISP and Fortran have been replaced by newer paradigms such as OOP and AOP. In the future, we will see C and C++ fade in popularity, and Java and C# will probably reign supreme until AOP takes hold.
The google hits graph is off by a mile. This article is completely bogus even if you can use google as a measure of a language’s popularity.
For instance, according to the article “java programming” has about 270,000 google hits. But when I run it right now in google I get 1,200,000 hits.
Now when I try “c# programming” which is probably a better comparison to java programming than “.net programming”, I get only 96,900 hits.
According to google, java is 12 times more popular than C#.
But this is so lame because a language like Visual Basic has more than one common name. If I use “vb programming” I get 185,000 hits and if I use “visual basic programming” I get 333,000 hits.
By the way, “c++ programming” gets me 1,060,000 hits. So clearly Java is more popular than C++.
Make what you will with this info, but clearly the article is deeply flawed and should be dismissed
Why is it that whenever there is a language comparison Borland Delphi always seems to be excluded? I mean, even Cobol is in the list and I know Delphi has to be more popular than that … as are a lot of other thing.
Lisp as a procedural language? I thought most viewed it as a functional language, but Lisp was OO and AO before C++ was created, and its OO-features are still more powerful than those offered by C++ and Java.
It’s really hard to take an article like this seriously when once again Google is used as the basis for popularity. Google is a great search engine and all, but it is of virtually NO STATISTICAL VALUE!!! so please stop using it that way.
As an example… “computer” is more popular than “sex” according to Google. So is it logical to think that computers are more popular than sex?
Another crucial flaw is completely ignoring C++ and Fortran. I mean seriously…how can you include Ruby, Tcl, and Cobol, but leave two of the most popular languages completely out?
The author obviously meant well, and it is a good idea, but please do some more useful research and get back to us.
Well you got it. YOU just generated a bunch of useless numbers.
Well, you to read the article, and a bunch of us have been discussing the data. So at least from that perspective, the numbers weren’t useless.
Quite frankly, I’m fairly thankful for the article. While the author’s methods might not be scientific or completely sound, they do provide good indicators. And programming language popularity is a very compelling topic for programmers. This is because programmers have to dedicate large amounts of time and effort to learning languages and be productive with them, and programmers want to stay on top of the programming job market.
So data such as that produced by the article helps one to choose what language(s) to concentrate on learning/practicing (i.e. “x” language is falling by the wayside, but “y” language is on the up, so it’s good to start learning it), or to simply stay the course (i.e. Joe Java developer sees that Java popularity and jobs are still quite brisk, so he keeps improving his Java skills). So on and so forth.
Actually, a lot of people do seem to find the numbers interesting, although I doubt anyone is going to base their career on it. It’s something I put together today because it was fun and interesting, and I do think that while the numbers are rough, there is meaning behind them. It may be, as I state in in a previous post, that ‘visibility’ is what they mean, rather than popularity. That’s fine with me.
It’s easy to point out problems – I did so in the article itself. What is harder to do is propose something better with publically available data sources, instead of just sniffing at how it has no meaning. So:
C# or .Net? I can see the case for C#. Maybe I will use that in future versions.
VB vs Visual Basic vs “Visual Basic”. Got any suggestions?
Oh, and for the whiners who aren’t actually reading the article carefully, google is one of four data sources. Overture, Craig’s List and Freshmeat suffer from their own problems, but the data is certainly quite accurate.
I know you are going to suggestions from everybody and their uncle to add $pet_language here to your list. One language I think that would be interesting to see added would be Fortran. Fortran is the other old kid on the block, but I’d hazard to guess that it has faired better in the passing years. I know Cobol code is still being maintained, but is anyone writing anything new in it? I know that Fortran is stilled used extensively in the Engineering department of my University. I think while the focus of this article is on emerging trends, it would be interesting to see how previous trends have faired.
Oh and I don’t think it is feasible to add assembly to the list unless you wanted to limit it to only one platform and thats no good really.
btw the a Google search for “Fortran programming” returns ~588K hits which puts it far ahead of Cobol, Ruby(?I thought Ruby was popular now?!?), and TCL, and really in a class of it’s own because there is no other language near it’s popularity (nearest is “shell programming” with about 750K hits according to your chart)
Lisp isn’t a procedural language, it’s a multi-paradigm language. The Lisp core is functional/procedural. On top of that, CLOS provides OOP, and the MOP provides AOP. The “evolution” of mainstream languages today is little more than semantic evolution towards the Lisp model.
I like programming languages a lot, and find many of them interesting in their own ways. However, I did want to limit this survey somewhat, so I used the Overture results:
Perhaps the only popular language I use is C, and that’s because it wasn’t created by some greedy corporation with hidden agendas, such as taking over the internet. I also stay clear of languages that the government has certified secure and enterprise class.
That’s why I would never use Java, .NET and Ada for any private project even if I was hung by the scrotum. I’ll take a language written by a community of hackers for hackers any day, before I succumb to corporate politics, market share analysis or popularity pissing contests.
This is a first time look at some stuff that seemed interesting, critcal comment is ok but there are going to be things that people disagree with regardless.
These figures should not be dismissed out of hand but should be treated with caution due to the variables that cannot be assertained. Further refinements, which should be possible, could well make it a useful resource.
This is not worth a flame war its only a 0.0.1 release
That’s why I would never use Java, .NET and Ada for any private project even if I was hung by the scrotum. I’ll take a language written by a community of hackers for hackers any day, before I succumb to corporate politics, market share analysis or popularity pissing contests.
Wow, that’s some brain-damaged thinking there. Just because you use some language invented by “insert evil corporation here” doesn’t mean that you succumb to corporate politics. What kind of deranged fantasy land do you live in?
Is that it? Is that all you can say? Its clear to me your lazy and suffer PA. Before trashing someones work in such a tactless manner put some effort and thought into it. Do a little research that you think could help. When an employee comes to me with a complaint or wanting to trash an idea he/she better come with a solution, because they just got a new project.
He is clearly a thinker and resourceful and for that he should be commended on the article. The source of info for his article used in the proper perspective can be useful. Now compare it to several different sources as he plans todo and see what happens.
Give hime more ideas for sources instead of just dissin him.
procedural languages such as LISP and Fortran have been replaced by newer paradigms such as OOP and AOP.
The Fortran 2003 standard was passed last week. Standard Fortran now has full OOP capabilities. The usual caveat is it will take some time for the compiler vendors to catch up. I think the current bet is a year for such capabilities to show up in compilers.
I know that C (C++) is a popular language (indeed my favorite). But it is also harder to learn than others. The amount of searches is probably higher because more people need to find resources for it than the other languages.
Surely VB is, by definition, “Windows programming”?
This is a pretty worthless article is the authors graphs are that badly thought out. It immediately told me not to bother reading the text. LOL.
Plus, where is the Pascal? Or is Delphi, Free Pascal etc fused into the .Net/Windows and Unix groups? Surely .Net is Windows programming too.. (mostly, given Mono’s existance of course.)
It looks to be easier and cooler than Visual Basic but much smaller and with no runtime overhead. I want to evaluate it but it expires after 10 functions! Author’s website and email no longer exist – Anyone know any links for it or it’s legal status or activation codes if legal???
The first time I saw some representing google results as any kind of useful metric more useful than picking a random number I nearly died laughing. How incompetent and uneducated would a person have to be use such a useless source for information and try to associate it with anything. So if I make a million archives of a dot.net mailing list, now dot.net’s popularity has doubled!!! Wow!
But now, not only do we have such useless blather in the forums, but now we have complete articles gracing the front page of OSNews.
I have done some independent research on this matter at http://www.googlefight.com, and I have to come the conclusion that quality is more popular than crap. Therefore, articles like this may squeak through for now, but there days are numbered.
That’s why I would never use Java, .NET and Ada for any private project even if I was hung by the scrotum. I’ll take a language written by a community of hackers for hackers any day, before I succumb to corporate politics, market share analysis or popularity pissing contests.
Good, that’s why I will never hire you, and I would recommend that your current boss fire you. Idealogy over pragmatism is the surest way to failure.
Would you mind posting your real name so we can all avoid any programming work you have touched?
What kind of deranged fantasy land do you live in?
It’s called the real world where languages are used based on expressiveness, succintness, power, freedom and productivity. And not marketing hype, abnormal profits, corporate politics, popularity, patent wars and associated bandwagon effects.
Since you are amusing me by playing the role of academic counsellor/smartass/boss, I thought you could entertain me a little more with further prophetic hypothesis about me via my spelling errors, Professor Anonymous.
I have no idea where you got this idea that ideology is a bad thing. Ideology is is responsible for Apple’s UI successes (doing things right, instead of good enough), and for Google’s “do no evil” policy, and acceptance of languages like Python.
If you’ve got the balls to back it up, a little ideology can be a strong driving force.
I take that as a compliment. All the great figures in history were initially morons that were laughed at and mocked.
Nobody thinks you’re cool because you think you’re using some hacker language.
If I really wanted to be cool, I’d be touting .NET and Java as if they were the nirvana. After all, only cool cats use those in IT, right?
Stop embarrassing yourself and seek professional psychiatric help.
Okay, apart from a sharp tongue and mannerless personal attacks, what interesting views have you brought to the table. At least, I went ahead to state why I wouldn’t use corporate junk for my personal projects.
You and your lovely cohort, on the other hand, have only served to bump the entertainment level on this thread from 0 to 5. Good work!
If I really wanted to be cool, I’d be touting .NET and Java as if they were the nirvana. After all, only cool cats use those in IT, right?
No, you’re just touting the slashdork party line and trying to portray yourself as a “real” hacker. To say that you won’t use a language because it was invented at a corporation is beyond idiotic. Who works at corporations? People. You don’t subcumb to “corporate politics” because you use a language that happened to be invented at Microsoft or Sun. Get your head checked.
Maybe you should post that crap on Slashdork where it will probably get a +5 “Look at me guys. I hate corporations too. Will you guys like me now?”.
procedural languages such as LISP and Fortran have been replaced by newer paradigms such as OOP and AOP.
Common Lisp includes CLOS, and was object oriented before C++ existed; any language with lexical scope and lambda, such as Common Lisp or Scheme, gets OOP writable (in a few lines, if it doesn’t exist in a library such as CLOS already) for free. For some things, such as functional programming, Lisp is bleeding edge and is being emulated by new languages such as Haskell and to some extent popular scripting languages like Python.
“any language with lexical scope and lambda, such as Common Lisp or Scheme, gets OOP writable (in a few lines, if it doesn’t exist in a library such as CLOS already) for free.”
I’ve tried doing OOP programming in Scheme. It is a nightmare from hell, and it is also horribly inefficient since Scheme does not have a way to inline a function. Thus, information hiding in Scheme is very expensive. Based on some admitidly unscientific tests I have done using Scheme, trying to implement good information hiding can result in a 30% to 40% increase in the amount of time it takes to access that information.
It’s called the real world where languages are used based on expressiveness, succintness, power, freedom and productivity. And not marketing hype, abnormal profits, corporate politics, popularity, patent wars and associated bandwagon effects.
Well said, I couldn’t have put it better myself. Ignore the various bullies on this list. You are talking about ‘private projects’, and maybe if someone paid you to write Java or C# you may well be very effective. I’m amazed at the hostile response to what seems to be a perfectly reasonable point.
@Simba: Most good Scheme compilers will do inlining. What compiler did you use? Stalin and Bigloo should have no performance penalty in this situation.
@Lumbergh: Did I say Lisp could save the world? No. I did say it was technically superior, which I don’t see you denying. After all, in a thread about programming language popularity, it makes perfect sense to extoll the virtues of less-popular, but technically superior languages. Also, if you think Microsoft and Sun aren’t playing politics with C# and Java you’re deluded. Both are evolving in response to short-term market needs, instead of a long-term coherent vision. Witness C#, which, as of 2.0, will have several different features that are subtle variations on the same thing, and all of which could be removed and replaced by closures. It has these features because they needed them incidentally, not because they had some high-level idea of what C# should look like. Same with Sun and their terrible generics hack in Java 1.5.
“@Simba: Most good Scheme compilers will do inlining. What compiler did you use? Stalin and Bigloo should have no performance penalty in this situation.”
It was either Stk or MIT Scheme. I can’t remember which one I was using, but it was definiately one of those two.
Also, if you think Microsoft and Sun aren’t playing politics with C# and Java you’re deluded. Both are evolving in response to short-term market needs, instead of a long-term coherent vision.
How you could get politics out of a business decision is beyond me. Microsoft is a BUSINESS and their market in this case is developers. It has nothing to do with politics.
No. I did say it was technically superior, which I don’t see you denying.
I guess if you consider a horrible syntax and performance problems “superior” than yeah I guess LISP is superior. I guess it just irks the rabid LISP crowd that developers like John Carmack or Tim Sweeney (both superior programmers to me, you, or anybody else that posts on osnews.com) aren’t using it as the panacea to every IT problem that will ever exit.
How you could get politics out of a business decision is beyond me. Microsoft is a BUSINESS and their market in this case is developers. It has nothing to do with politics.
Business and politics are inseperable. Microsoft’s goal is not to design the best developer platform, but to beat their competitors (politics), and make the most money (business). When Microsoft modeled C# closely on Java, that was politics (to draw existing Java coders). When Microsoft ties all the cool API updates to the .NET toolkit to Windows Longhorn, that is business. I don’t see how you can argue against somebody who would rather that his language be developed with some vision, rather than be developed in response to political and business requirements. C# will never be more than a mediocre language, and that is precisely because of it’s development model.
I guess if you consider a horrible syntax
The syntax rocks. It is instrumental in enabling the languages capability to write metacode. With metaprogramming starting to catch on, I would not be at all surprised to see similarly regularized syntax representations for C++ and C# become available. Have you seen Bjarne’s XTI proposal for C++? It’s prefix!
and performance problems “superior”
Oh please. If performance is really important, it’s quite easy to get Lisp code within 10% the performance of C code. If worst comes to worst, just write C-style code in Lisp, and most compilers will compile that very close to what you would have coded in C. Remember, 10% of code takes 90% of time. It makes a lot of sense to use high-level code in non-critical 90%, and have more time left-over to optimize that 10%.
developers like John Carmack or Tim Sweeney
With all due respect to Carmack and Sweeney, they operate in a niche. Game programming is a very specialized problem domain, with very specialized requirements. Their experiences don’t really generalize to other types of software. They don’t use C# and Java either, and what are you supposed to infer from that? Nothing, because that would be non-sensical.
It’s also interesting to note that game developers understand the Lisp development paradigm better than most developers. They usually write a small, high-performance core in something like C or assembly (or even a specialized Lisp), and use a high-level scripting language to write everything else.
Oh, and I love how you tried to steer the “technical superiority” argument back into a popularity argument with the Carmack and Sweeny bit. Real clever…
Business and politics are inseperable. Microsoft’s goal is not to design the best developer platform, but to beat their competitors (politics), and make the most money (business).
Competitors != politics. Where do you come up with these definitions?
I don’t see how you can argue against somebody who would rather that his language be developed with some vision, rather than be developed in response to political and business requirements. C# will never be more than a mediocre language, and that is precisely because of it’s development model.
And so Anders Hjelsberg had no vision when designing C#? I guess it was just the marketing folks that designed the language. It’s not really about the language anyway. It’s about the runtime, and the .NET runtime is good (far better than Java’s runtime engine).
Prefix notation is alright until you get a clusterfuck of nested expressions. Give me the features that make Lisp good and package it into a decent syntax. Maybe Lua or Python. Also, I want the bytecode targetted to the .NET runtime.
It’s also interesting to note that game developers understand the Lisp development paradigm better than most developers. They usually write a small, high-performance core in something like C or assembly (or even a specialized Lisp), and use a high-level scripting language to write everything else.
The core is not small and if LISP was able to be within 10% or better if C, why not just write the core in LISP? The “game code” is written in a scripting language (or not), but the core is not small. I’m working with Lua game code and the farcry engine right now.
Competitors != politics. Where do you come up with these definitions?
Gamesmanship between corporations = corporate politics? I don’t mean politics in the “Bush vs Kerry” sense.
And so Anders Hjelsberg had no vision when designing C#?
Not enough, apparently. Otherwise, he wouldn’t have all these special-case features (iterators, delegates, anonymous methods) for stuff that could be built on top of a single feature.
It’s not really about the language anyway.
It is about the language. A nice runtime can serve as a good crutch for a poor language, but if you’re doing work that doesn’t benefit from the runtime library (ie: too unique to benefit from pre-canned solutions), then you really feel the hurt of poor language design.
Prefix notation is alright until you get a clusterfuck of nested expressions.
Nested expressions are nasty in any language. If it hurts when you do that, don’t do that. Plus, indentation is your friend.
Give me the features that make Lisp good and package it into a decent syntax.
You can’t. You can get a lot of the basic stuff, but metaprogramming really requires a syntax that’s friendly to the compiler as well as to the human. At the end of the day, the (+ 1 3) takes the same amount of time to type as (1 + 3). They “readability” of each is just a matter of what you’re used to.
if LISP was able to be within 10% or better if C, why not just write the core in LISP?
Because most people don’t know Lisp? People in the “industry” seem to have a phenomenal ignorance of what is really available in the programming language world. They continue to ignore history even as they continue to reinvent it.
“Because most people don’t know Lisp? People in the “industry” seem to have a phenomenal ignorance of what is really available in the programming language world.”
Well, I don’t want to get too far into this debate… But yes, most people don’t know Lisp. And the ones that do know it, for the most part, hate it. They hate its ugly syntax. They hate the fact that it has no iterative constructs built into it. They hate the fact that is such a low level language that you have to screw around with car and cdr to implement a linked list. Add to that the Lisp is traditionally a very inefficient language, and there are very few libraries written for it, and only one toolkit that I can think of that has been ported to it (Gtk), and you will see why no one uses Lisp for major development.
I am one of the few people that knows Lisp because it is a required course in the MIT computer science curiculum. And like most people who had to take that course, I hated it. It’s syntax and ways of doing things are so messed up that it has virtually no value when trying to switch to another language, etc.
“You can’t. You can get a lot of the basic stuff, but metaprogramming really requires a syntax that’s friendly to the compiler as well as to the human.”
Python allows metaprogramming. And it’s syntax is some of the simplist and most elegant around. Lisp has some the ugliest syntax I have ever seen.
And the ones that do know it, for the most part, hate it. They hate its ugly syntax.
What’s your standard for “knowing Lisp.” When most Lisp people say that they know C/C++ and prefer Lisp, they do so having years (or decades) of C/C++ background. I don’t expect a similar standard for C/C++ people criticizing Lisp, but don’t think “I played with Lisp for a couple of months” qualifies as “knowing Lisp.”
They hate the fact that it has no iterative constructs built into it.
I don’t see how anybody who claims to know Lisp can not know about ‘loop’.
They hate the fact that is such a low level language that you have to screw around with car and cdr to implement a linked list.
Lisp is a very high-level language. Everything’s an object, function dispatch is generic, high-level features like lists, hash-tables, and dynamic code loading are built-in.
Add to that the Lisp is traditionally a very inefficient language
Not in the last decade.
and there are very few libraries written for it
You’d be surprised to see how many available Lisp libraries there are. Is there something in particular you need and haven’t found?
I am one of the few people that knows Lisp because it is a required course in the MIT computer science curiculum.
Ha ha ha ha ha ha! Oh, I get it now! You learned *Scheme* in intro computer science, and think you learned Lisp! Oh, it all makes sense now…
1) You hate the syntax, because it’s different from what you’re used to;
2) You don’t know about ‘loop’, because professors don’t like to teach iteration off-the-bat;
3) You think it doesn’t have built-in lists, because the professor wanted you to implement things manually.
4) You think it’s inefficient, because you used an interpreter like DrScheme.
It’s syntax and ways of doing things are so messed up that it has virtually no value when trying to switch to another language, etc.
Again, syntax is trivial. Semantics are what matters, and Lisp’s semantics are what Java and C# have evolved to. If you didn’t pick that up, maybe you should repeat that course.
That’s poorly programmed Lisp code. Whoever wrote it should have broken it out into functions, because the logic behind that many parens would be impossible to follow. C code that uses similarly deep levels of nesting would look equally ugly.
Great… Try tracing that back and figuring out where you forgot to insert a closing parenthesis if you end up off by one.
What do you use to write your Lisp code, Notepad? Any modern editor has parens highlighting, parens matching, paren completion, etc. The prefix syntax also allows the editor to offer very powerful features for manipulating sub-expressions that can’t be done with infix syntaxes.
And in fact, metaprogramming is easier in Python that just about any other language I know.
And as far as loops in Scheme. There is, in fact, no standard iterative statement in Scheme. So you have to use tail recursion to get a loop in Scheme.
And as far as prefix syntax, yes, I have heard all of the justifications for it. And I still hate it.
“Semantics are what matters, and Lisp’s semantics are what Java and C# have evolved to.”
Certainly Java shares some things in common with Lisp. But it is still much different
Okay, so you admit you don’t know Lisp, but rather Scheme. Note, Scheme is in the Lisp language family, but when people talk about programming in Lisp, they mean Common Lisp.
And as far as loops in Scheme. There is, in fact, no standard iterative statement in Scheme. So you have to use tail recursion to get a loop in Scheme.
Yes there is an iterative statement in Scheme. It’s called ‘do’. It’s in section 4.2.4 of R5RS. It’s implemented in terms of tail-recursion, but the semantics are iterative.
And in fact, metaprogramming is easier in Python that just about any other language I know.
Metaclasses isn’t really what most people mean by metaprogramming, which is usually held to mean code generation and transformation. In Lisp, the metaprogramming facilities allow you to write functions that take code as input, and return code as output. C++ (through it’s template mechanism), offers the ability to do very limited sorts of code transformation. Python lacks this capability completely.
As for metaclasses, Lisp has those too, in the MOP
1. A dBase compatible database library.
I don’t know much about dBase. Can it interface via ODBC? If there is a simple C interface to dBase, then it’s pretty easy to use UFFI to interface to it directly.
CLSQL supports ODBC, MySQL, Oracle, and a number of other backends.
3. A GUI library. The only two I have found are a Tk port, and a Gtk port.
Well, a commercial Lisp like Allegro will have CLIM, which gives you a cross-platform GUI that runs on *NIX and Windows. Allegro is pretty expensive, though. However, Corman Lisp has Win32 bindings, and it’s quite cheap. On *NIX, the Gtk bindings should be just fine.
“CLSQL supports ODBC, MySQL, Oracle, and a number of other backends.”
I will look at it. But actually, I need to access data in both Access databases and also do SQL querys on Excel files. Of course, if there are Win32 bindings, I can just use the native Windows ODBC dll.
Maybe someday I will give Lisp / Scheme another look if I have time. After all, it’s often said that you grow to hate anything you have to write midterm and final exams on. :p So maybe outside of a class environment I will like it better.
“Corman Lisp has Win32 bindings, and it’s quite cheap. On *NIX, the Gtk bindings should be just fine.”
As far as the Win32 bindings though, I’ve done Win32 API programming directly in the past. And I don’t think it is something I want to revisit. 80 lines of code to get a scrollbar to scroll a text window is just not something I want to spend my time doing.
But the Gtk version might work under Windows. I’ve been pretty happy with Gtk lately under Windows.
Rayiner: The syntax rocks. It is instrumental in enabling the languages capability to write metacode. With metaprogramming starting to catch on, I would not be at all surprised to see similarly regularized syntax representations for C++ and C# become available. Have you seen Bjarne’s XTI proposal for C++? It’s prefix!
Maybe the power and expressiveness of a language is inversely proportional to its popularity. In the UK in the 70’s we didn’t go for Lisp, instead we had a language called POP-11. It had all the power of Lisp, but with an easier to follow syntax. For instance, here is how you define a loop in POP-11:
vars syntax endloop;
define syntax loop;
vars lab;
sysNEW_LABEL() -> lab;
sysLABEL(lab);
systxsqcomp(“endloop”) ->; ;;; Compile until the next endloop
sysGOTO(lab);
enddefine;
loop “hello” => endloop; ;;; Loops forever
Note the clear syntax, and the fact the virtual machine operations are part of the language. Sounds familiar to CLR fans?
And that other great golden oldie, Smalltalk has very powerful metaprogramming too.
If Anders Hjelsberg is so smart how come he didn’t spot this elephant in the room?
I guess it was just the marketing folks that designed the language. It’s not really about the language anyway. It’s about the runtime, and the .NET runtime is good (far better than Java’s runtime engine).
You can’t add behaviour to an instance of a class at runtime like Objective-C categories – that’s the other major design flaw C# and the CLR have inherited from Java and the JVM.
The article doesn’t even mention C# and I believe the CLR does have the concept of module methods. Portable.NET actually compiles straight C to IL.
You can’t add behaviour to an instance of a class at runtime like Objective-C categories – that’s the other major design flaw C# and the CLR have inherited from Java and the JVM.
Categories are interesting and I’ll be the first to say that features in C++ and Java tend to promote tight-coupling (a bad thing). I wouldn’t clump java and the CLR together. Sun has done about everything it can to deliberately make Java non-powerful and has even screwed up 1.5. (It doesn’t have real generics). Microsoft is moving full steam ahead with CLR 2.0, supporting true generics and even closures.
If you’re into Python and want to try out something a little more lightweight, but plenty powerful check out Lua. It’s used widely in the gaming industry and has stuff like closures, prototypes, object-oriented programming, etc.. I think the runtime, libraries, and compiler come in at under a 100k.
The article doesn’t even mention C# and I believe the CLR does have the concept of module methods. Portable.NET actually compiles straight C to IL.
No C# static methods are just the same as C++ or Java static methods with exactly the same problems. No dynamic despatch, and no inheritance. You can’t define static methods in an interface, and therefore they don’t work with remoting. A transparent proxy should look exactly like the original class, but it doesn’t because all the static methods are missing.
Microsoft is moving full steam ahead with CLR 2.0, supporting true generics and even closures.
Yes, I agree Microsoft have more clue than Sun, and anonymous delegates/closures sound interesting. They’ve hired the Iron Python guy which is a good start. I personally couldn’t care less about generics, as I don’t make programming errors adding oranges to lists of apples. If you’re used to programming in dynamic OOP languages, it just isn’t a programming error you make, so who cares if static typing and the compiler can catch them. How about testing you code instead of adding all that clunky unnecessary syntax?
I agree that static typing is pretty much been hyped up to no-end, just like C++, but you do get a little performance boost with generics when you don’t have to do the boxing, unboxing.
I think that C# is a better language proper than Java. Java is just too dumbed down and Sun is way too conservative and academic. Right now, C# and VB.NET are basically the same languages, but that is going to change in the future with VB.NET being a more RAD language and C# being a real systems, generic applications language.
IronPython looks great. I love seeing languages compiled down to IL. Lua also has an IL compiler in the works that is in alpha state (no source code yet) and an .NET interop system right now.
I’m more interested in runtimes than in any particular language. I do care about what is on people’s systems because I’m intensly interested in deployment and crossplatform issues.I think .NET/Mono has the chance to being very close to the universal runtime in the near future. The Java runtime has 0 chance because of Sun’s blundering around.
Okay, so the conclusions he reached are: C, Java, and VB are popular, as is the Microsoft platform. Tell me something I don’t know!
What does he mean by “Windows programming” and “Unix programming” ?
internet != life
Except if he talks about popularity of languages from job posted on the net, and from results of google.
this is not statistics, this is webistics or sth like it.
the first graph should not have been there at all IMO
So I guess he’s including C++ in with the C? I find no mention of it in the article.
The Author probably doesn’t know Assembly Language.
I’ve never seen how Job Postings can indicate the popularity of a language. If you see 500 jobs posted for Java and 150 jobs posted for C#, people say “Java is more popular”. Yet it could mean that the places looking for C# developers aren’t having issues filling those positions because it’s more popular; so they don’t have as many open positions, they’re being filled.
* The Point Being? Well it was interesting to try and put a few numbers to “X is popular”. Sure we all have that gut feeling from working in the industry and seeing how things are going, but it’s an (admittedly crude in some ways) attempt to generate some numbers.
* Windows/Unix programming? I used those queries with the different searches, where applicable. I could probably add some others like ‘Linux’ and ‘FreeBSD’. More than anything, just to add some extra data points out of curiosity.
* overestimated value of internet? Great, point me at some other data sources. It’s what I’ve got.
* C++ is something I’m going to add in future versions.
* Assembly? No, assembly is not something I know a lot of. Enough to dig through gdb dumps of it when necessary. This is a good place to point out that the limiting factor for me on a lot of these queries was the Overture data. Doing something like ‘erlang programming’ or ‘lua programming’ there turns up no results. That data was what got me curious enough to try and write something down about what I found. If you didn’t find your favorite language, that’s probably the reason why.
* Job Postings? Hopefully as the experiment proceeds we can get some time data for these, which will add another dimension. To some degree, we trust that the market will even out problems of supply and demand, so I don’t think it’s unfair to say that jobs are broadly correlated to popularity. The missing factor is of course, salary. If in your example, the Java developers were highly sought after, the price would tend upwards, whereas the dime-a-dozen .Net programmers wouldn’t get paid much. Unfortunately, at the moment I don’t have a way to get my hands on that data.
Thanks for the feedback, everyone. I just created this, and look forward to improving it.
-Dave
I think many people tend to overvalue popularity. It’s important, but dismissing a language just because it’s “unpopular” is a rather juvenile thing to do. At the end of the day, you’ve got to make the following considerations:
1) Does language X have the libraries I need?
2) Does language X have the kind of commercial support I need?
3) Does language X have enough programmers to hire to work on the project?
Even smaller languages usually have (1), and for many smaller projects, (2) and (3) really don’t matter much. “Alternative” languages tend to be popular in scientific or mathematical fields for this reason. What amazes me, though, is how many people write open-source software in C and C++. (2) and (3) are very close to non-issues for all but the most high-profile projects, yet, people tend to overvalue popularity anyway. As a result, they let themselves miss out on some very real technical advantages.
Hmm… I think I would have to write this off as an example of how not to do statistics and also as an example of how failure to control for confounding variables can seriously put results in doubt.
Basically, as others have already pointed out a few examples of, there are so many confounding variables in this data that are not controlled for (and probably can’t be controlled for), that the conclusions are not even remotely supportable.
Internet search results?
“C programming is rapidly being phased out in favor of newer languages that support rapid development.”
Oops… But your study will count that is a positive hit for C indicating it is popular, even though the page in question is really about how C is being phased out of a particular company / project, whatever. Just an example of one of the major confounding variables here.
And yes, as far as jobs, Justin made a very good point. The number of job listings cannot be used to determine the popularity of the language because the relationship could actually be an inverse one. The number of available jobs could be less for a popular language because there is simply a lot more stock to fill the vacancies from. You cannot say with any degree of certainty what the relationship is between # of job postings and popularity of language. You are making an assumption that could be seriously flawed.
“I think many people tend to overvalue popularity. It’s important, but dismissing a language just because it’s “unpopular” is a rather juvenile thing to do.”
I agree. Some “unpopular” languages are very well suited for certain tasks. emacs lisp being a good example. And within reason, even “unpopular” languages have plenty of support on newsgroups, etc. from other developers. I say within reason, because obviously choosing ALGOL 60 for your next major project might not be the best idea you ever had. :p But within reason, even “unpopular” languages are well supported on the Internet.
Of course, unpopular languages that have stood the test of time (lisp, etc.) are a much better choice then newer unpopular languages that have a small user base, and might simply disappear on you, leaving you stranded with no support and no update path.
“it could mean that the places looking for C# developers aren’t having issues filling those positions because it’s more popular”
Or maybe there is such an over-supply of C# developers that the firms have no problems hiring without advertising.
My point is that what the article offers is a series of data. One can interpret them according to his/her bias.
Well, you did read the article, didn’t you? I already said most of what you mention there.
But I still think the broad pattern is reasonable, and as the first poster said, seems to fit with the gut feeling. I also thought the dollars/click and job posting information was interesting – we’ll see how it changes in the future.
As far as your query example for ‘C Programming’, maybe thinking about the google hits as “visibility” makes more sense. Even if the article is talking about using some other system, at least C is mentioned. Haskell and Ocaml probably are not.
I’m a big fan of unpopular languages, actually. At my last gig, I did Erlang programming. There are some tradeoffs though… the knowledge I gained there isn’t likely to pay off in terms of other Erlang consulting jobs in this area! I also like Tcl and Python a lot, which are not high on the list.
-Dave
It would have been interesting to see where RPG programming fits in. RPG programmers are a dying breed, although they do get well paid.
I can see a language flame war about to erupt. 😉
Actually, the article featured some interesting data, albiet data that is largely unscientific and quite open for interpretation.
The data indicates, as I have always suspected, that C (and probably C++) is still very much alive and doing quite well, thank you very much. C and C++ are irrepreplacable where they are particularily well suited – systems level programming and over-the-counter software.
Java and .Net are both doing quite well, particularily in the “large enterprise, internal dynamic business application” arena, where they are particularily well suited. Java is more dominant on the server side (with J2EE), particularily in the large enterprise with multiple platforms. .Net is dominant on the Windows desktop, and the smaller enterprise where Windows servers are prevailant.
The various scripting languages, like JavaScript, VB/VBA, Perl, Python, PHP, Ruby, etc. are all prevailant in web programming, system administration, and rapid application development.
In short, the various languages are popular in their respective applicatin domains (where they are well suited). And language flame wars are stupid.
I think we are seeing genuine evolution of languages. The latest technologies, like Java and C# are clear leaders for solving business problems. C++ and C still have a stronghold in some markets due to momentum, and procedural languages such as LISP and Fortran have been replaced by newer paradigms such as OOP and AOP. In the future, we will see C and C++ fade in popularity, and Java and C# will probably reign supreme until AOP takes hold.
The google hits graph is off by a mile. This article is completely bogus even if you can use google as a measure of a language’s popularity.
For instance, according to the article “java programming” has about 270,000 google hits. But when I run it right now in google I get 1,200,000 hits.
Now when I try “c# programming” which is probably a better comparison to java programming than “.net programming”, I get only 96,900 hits.
According to google, java is 12 times more popular than C#.
But this is so lame because a language like Visual Basic has more than one common name. If I use “vb programming” I get 185,000 hits and if I use “visual basic programming” I get 333,000 hits.
By the way, “c++ programming” gets me 1,060,000 hits. So clearly Java is more popular than C++.
Make what you will with this info, but clearly the article is deeply flawed and should be dismissed
Why is it that whenever there is a language comparison Borland Delphi always seems to be excluded? I mean, even Cobol is in the list and I know Delphi has to be more popular than that … as are a lot of other thing.
Lisp as a procedural language? I thought most viewed it as a functional language, but Lisp was OO and AO before C++ was created, and its OO-features are still more powerful than those offered by C++ and Java.
It’s really hard to take an article like this seriously when once again Google is used as the basis for popularity. Google is a great search engine and all, but it is of virtually NO STATISTICAL VALUE!!! so please stop using it that way.
As an example… “computer” is more popular than “sex” according to Google. So is it logical to think that computers are more popular than sex?
Another crucial flaw is completely ignoring C++ and Fortran. I mean seriously…how can you include Ruby, Tcl, and Cobol, but leave two of the most popular languages completely out?
The author obviously meant well, and it is a good idea, but please do some more useful research and get back to us.
“but it’s an (admittedly crude in some ways) attempt to generate some numbers”.
Well you got it. YOU just generated a bunch of useless numbers.
Well you got it. YOU just generated a bunch of useless numbers.
Well, you to read the article, and a bunch of us have been discussing the data. So at least from that perspective, the numbers weren’t useless.
Quite frankly, I’m fairly thankful for the article. While the author’s methods might not be scientific or completely sound, they do provide good indicators. And programming language popularity is a very compelling topic for programmers. This is because programmers have to dedicate large amounts of time and effort to learning languages and be productive with them, and programmers want to stay on top of the programming job market.
So data such as that produced by the article helps one to choose what language(s) to concentrate on learning/practicing (i.e. “x” language is falling by the wayside, but “y” language is on the up, so it’s good to start learning it), or to simply stay the course (i.e. Joe Java developer sees that Java popularity and jobs are still quite brisk, so he keeps improving his Java skills). So on and so forth.
Actually, a lot of people do seem to find the numbers interesting, although I doubt anyone is going to base their career on it. It’s something I put together today because it was fun and interesting, and I do think that while the numbers are rough, there is meaning behind them. It may be, as I state in in a previous post, that ‘visibility’ is what they mean, rather than popularity. That’s fine with me.
It’s easy to point out problems – I did so in the article itself. What is harder to do is propose something better with publically available data sources, instead of just sniffing at how it has no meaning. So:
C# or .Net? I can see the case for C#. Maybe I will use that in future versions.
VB vs Visual Basic vs “Visual Basic”. Got any suggestions?
Oh, and for the whiners who aren’t actually reading the article carefully, google is one of four data sources. Overture, Craig’s List and Freshmeat suffer from their own problems, but the data is certainly quite accurate.
Thanks
-Dave
I know you are going to suggestions from everybody and their uncle to add $pet_language here to your list. One language I think that would be interesting to see added would be Fortran. Fortran is the other old kid on the block, but I’d hazard to guess that it has faired better in the passing years. I know Cobol code is still being maintained, but is anyone writing anything new in it? I know that Fortran is stilled used extensively in the Engineering department of my University. I think while the focus of this article is on emerging trends, it would be interesting to see how previous trends have faired.
Oh and I don’t think it is feasible to add assembly to the list unless you wanted to limit it to only one platform and thats no good really.
btw the a Google search for “Fortran programming” returns ~588K hits which puts it far ahead of Cobol, Ruby(?I thought Ruby was popular now?!?), and TCL, and really in a class of it’s own because there is no other language near it’s popularity (nearest is “shell programming” with about 750K hits according to your chart)
Where is Delphi?
I ran google search (using ‘Delphi Programming’) and got:
1,210,000
Or ‘Delphi programing’:
920,000
So is that:
2,130,000
??
Lisp isn’t a procedural language, it’s a multi-paradigm language. The Lisp core is functional/procedural. On top of that, CLOS provides OOP, and the MOP provides AOP. The “evolution” of mainstream languages today is little more than semantic evolution towards the Lisp model.
I like programming languages a lot, and find many of them interesting in their own ways. However, I did want to limit this survey somewhat, so I used the Overture results:
http://uv.bidtool.overture.com/d/search/tools/bidtool/
as somewhat of a cutoff.
I will probably add Delphi, Fortran and C++, although I worry a little about the overlap of pages with something like “C/C++”.
The data collection is mostly automated, so adding languages isn’t that big a deal.
Oh, and as far as the google queries, I used their API.
I will probably try and add Amazon in some way, to determine how many books are available per language.
Perhaps the only popular language I use is C, and that’s because it wasn’t created by some greedy corporation with hidden agendas, such as taking over the internet. I also stay clear of languages that the government has certified secure and enterprise class.
That’s why I would never use Java, .NET and Ada for any private project even if I was hung by the scrotum. I’ll take a language written by a community of hackers for hackers any day, before I succumb to corporate politics, market share analysis or popularity pissing contests.
I got:
delphi hits: 1,270,000
pascal hits: 906,000
Freshmeat projects: 64
Delphi User
i’m quite interested in this “windows” language which seems more popular than php!
Just like the popular Delphi, they completely left out Flash / Actionscript which is used a lot these days…
1,570,000 for flash programming
142,000 for actionscript programming
115,000 for flash programmation
Not bad either
This is a first time look at some stuff that seemed interesting, critcal comment is ok but there are going to be things that people disagree with regardless.
These figures should not be dismissed out of hand but should be treated with caution due to the variables that cannot be assertained. Further refinements, which should be possible, could well make it a useful resource.
This is not worth a flame war its only a 0.0.1 release
That’s why I would never use Java, .NET and Ada for any private project even if I was hung by the scrotum. I’ll take a language written by a community of hackers for hackers any day, before I succumb to corporate politics, market share analysis or popularity pissing contests.
Wow, that’s some brain-damaged thinking there. Just because you use some language invented by “insert evil corporation here” doesn’t mean that you succumb to corporate politics. What kind of deranged fantasy land do you live in?
google gives you:
GameDev.net — Featured Articles
I am sure many of the results returned have nothing to do with the M$ .NET programming language.
For those who would dismiss the article.
Is that it? Is that all you can say? Its clear to me your lazy and suffer PA. Before trashing someones work in such a tactless manner put some effort and thought into it. Do a little research that you think could help. When an employee comes to me with a complaint or wanting to trash an idea he/she better come with a solution, because they just got a new project.
He is clearly a thinker and resourceful and for that he should be commended on the article. The source of info for his article used in the proper perspective can be useful. Now compare it to several different sources as he plans todo and see what happens.
Give hime more ideas for sources instead of just dissin him.
Lazy empolyees don’t like me and its mutual.
Richard Cranium
procedural languages such as LISP and Fortran have been replaced by newer paradigms such as OOP and AOP.
The Fortran 2003 standard was passed last week. Standard Fortran now has full OOP capabilities. The usual caveat is it will take some time for the compiler vendors to catch up. I think the current bet is a year for such capabilities to show up in compilers.
I know that C (C++) is a popular language (indeed my favorite). But it is also harder to learn than others. The amount of searches is probably higher because more people need to find resources for it than the other languages.
David, thanks for your effort. It offers us a tiny ray of light from the arcane world of programming languages popularity, by means of its visibility.
Surely VB is, by definition, “Windows programming”?
This is a pretty worthless article is the authors graphs are that badly thought out. It immediately told me not to bother reading the text. LOL.
Plus, where is the Pascal? Or is Delphi, Free Pascal etc fused into the .Net/Windows and Unix groups? Surely .Net is Windows programming too.. (mostly, given Mono’s existance of course.)
Yep, a bit of a joke all in all.
when will we start electing presidents from the number of google-hits? – the article has some valid points but much more weaknesses!
It looks to be easier and cooler than Visual Basic but much smaller and with no runtime overhead. I want to evaluate it but it expires after 10 functions! Author’s website and email no longer exist – Anyone know any links for it or it’s legal status or activation codes if legal???
The first time I saw some representing google results as any kind of useful metric more useful than picking a random number I nearly died laughing. How incompetent and uneducated would a person have to be use such a useless source for information and try to associate it with anything. So if I make a million archives of a dot.net mailing list, now dot.net’s popularity has doubled!!! Wow!
But now, not only do we have such useless blather in the forums, but now we have complete articles gracing the front page of OSNews.
I have done some independent research on this matter at http://www.googlefight.com, and I have to come the conclusion that quality is more popular than crap. Therefore, articles like this may squeak through for now, but there days are numbered.
http://www.googlefight.com/cgi-bin/compare.pl?q1=crap&q2=quality&B1…
That’s why I would never use Java, .NET and Ada for any private project even if I was hung by the scrotum. I’ll take a language written by a community of hackers for hackers any day, before I succumb to corporate politics, market share analysis or popularity pissing contests.
Good, that’s why I will never hire you, and I would recommend that your current boss fire you. Idealogy over pragmatism is the surest way to failure.
Would you mind posting your real name so we can all avoid any programming work you have touched?
Good, that’s why I will never hire you, and I would recommend that your current boss fire you.
That’s your lose, not mine.
Would you mind posting your real name so we can all avoid any programming work you have touched?
Sure, after you unveil your anonymous cloak.
What kind of deranged fantasy land do you live in?
It’s called the real world where languages are used based on expressiveness, succintness, power, freedom and productivity. And not marketing hype, abnormal profits, corporate politics, popularity, patent wars and associated bandwagon effects.
That’s “loss,” not “lose.” So I guess you’re uneducated, too. Might want to ask IUP for a refund on your tuition.
Ma bad, Prof. While you are at it, why don’t you decipher my paternal genealogy, Wiseone.
Help available here though: http://tinyurl.com/6gjpa
Since you are amusing me by playing the role of academic counsellor/smartass/boss, I thought you could entertain me a little more with further prophetic hypothesis about me via my spelling errors, Professor Anonymous.
Heh, and you were supposed to be my potential employer. God forbid! I’d rather eat horse dump.
You are a moron that is a laughed at. Nobody thinks you’re cool because you think you’re using some hacker language.
Stop embarrassing yourself and seek professional psychiatric help.
I have no idea where you got this idea that ideology is a bad thing. Ideology is is responsible for Apple’s UI successes (doing things right, instead of good enough), and for Google’s “do no evil” policy, and acceptance of languages like Python.
If you’ve got the balls to back it up, a little ideology can be a strong driving force.
You are a moron that is a laughed at.
I take that as a compliment. All the great figures in history were initially morons that were laughed at and mocked.
Nobody thinks you’re cool because you think you’re using some hacker language.
If I really wanted to be cool, I’d be touting .NET and Java as if they were the nirvana. After all, only cool cats use those in IT, right?
Stop embarrassing yourself and seek professional psychiatric help.
Okay, apart from a sharp tongue and mannerless personal attacks, what interesting views have you brought to the table. At least, I went ahead to state why I wouldn’t use corporate junk for my personal projects.
You and your lovely cohort, on the other hand, have only served to bump the entertainment level on this thread from 0 to 5. Good work!
Dude. It’s not worth your time. If Lumbergh and Anonymous want to be “manly men” and only use strongly-hyped languages, leave them be.
I see you’re still touting how Lisp can save the world while others get real work done.
If I really wanted to be cool, I’d be touting .NET and Java as if they were the nirvana. After all, only cool cats use those in IT, right?
No, you’re just touting the slashdork party line and trying to portray yourself as a “real” hacker. To say that you won’t use a language because it was invented at a corporation is beyond idiotic. Who works at corporations? People. You don’t subcumb to “corporate politics” because you use a language that happened to be invented at Microsoft or Sun. Get your head checked.
Maybe you should post that crap on Slashdork where it will probably get a +5 “Look at me guys. I hate corporations too. Will you guys like me now?”.
By the way, if I wanted to be a “manly man” and only use “strongly-hyped” languages I wouldn’t have Lua code opened in Vim right now.
procedural languages such as LISP and Fortran have been replaced by newer paradigms such as OOP and AOP.
Common Lisp includes CLOS, and was object oriented before C++ existed; any language with lexical scope and lambda, such as Common Lisp or Scheme, gets OOP writable (in a few lines, if it doesn’t exist in a library such as CLOS already) for free. For some things, such as functional programming, Lisp is bleeding edge and is being emulated by new languages such as Haskell and to some extent popular scripting languages like Python.
“any language with lexical scope and lambda, such as Common Lisp or Scheme, gets OOP writable (in a few lines, if it doesn’t exist in a library such as CLOS already) for free.”
I’ve tried doing OOP programming in Scheme. It is a nightmare from hell, and it is also horribly inefficient since Scheme does not have a way to inline a function. Thus, information hiding in Scheme is very expensive. Based on some admitidly unscientific tests I have done using Scheme, trying to implement good information hiding can result in a 30% to 40% increase in the amount of time it takes to access that information.
It’s called the real world where languages are used based on expressiveness, succintness, power, freedom and productivity. And not marketing hype, abnormal profits, corporate politics, popularity, patent wars and associated bandwagon effects.
Well said, I couldn’t have put it better myself. Ignore the various bullies on this list. You are talking about ‘private projects’, and maybe if someone paid you to write Java or C# you may well be very effective. I’m amazed at the hostile response to what seems to be a perfectly reasonable point.
@Simba: Most good Scheme compilers will do inlining. What compiler did you use? Stalin and Bigloo should have no performance penalty in this situation.
@Lumbergh: Did I say Lisp could save the world? No. I did say it was technically superior, which I don’t see you denying. After all, in a thread about programming language popularity, it makes perfect sense to extoll the virtues of less-popular, but technically superior languages. Also, if you think Microsoft and Sun aren’t playing politics with C# and Java you’re deluded. Both are evolving in response to short-term market needs, instead of a long-term coherent vision. Witness C#, which, as of 2.0, will have several different features that are subtle variations on the same thing, and all of which could be removed and replaced by closures. It has these features because they needed them incidentally, not because they had some high-level idea of what C# should look like. Same with Sun and their terrible generics hack in Java 1.5.
“@Simba: Most good Scheme compilers will do inlining. What compiler did you use? Stalin and Bigloo should have no performance penalty in this situation.”
It was either Stk or MIT Scheme. I can’t remember which one I was using, but it was definiately one of those two.
Also, if you think Microsoft and Sun aren’t playing politics with C# and Java you’re deluded. Both are evolving in response to short-term market needs, instead of a long-term coherent vision.
How you could get politics out of a business decision is beyond me. Microsoft is a BUSINESS and their market in this case is developers. It has nothing to do with politics.
No. I did say it was technically superior, which I don’t see you denying.
I guess if you consider a horrible syntax and performance problems “superior” than yeah I guess LISP is superior. I guess it just irks the rabid LISP crowd that developers like John Carmack or Tim Sweeney (both superior programmers to me, you, or anybody else that posts on osnews.com) aren’t using it as the panacea to every IT problem that will ever exit.
How you could get politics out of a business decision is beyond me. Microsoft is a BUSINESS and their market in this case is developers. It has nothing to do with politics.
Business and politics are inseperable. Microsoft’s goal is not to design the best developer platform, but to beat their competitors (politics), and make the most money (business). When Microsoft modeled C# closely on Java, that was politics (to draw existing Java coders). When Microsoft ties all the cool API updates to the .NET toolkit to Windows Longhorn, that is business. I don’t see how you can argue against somebody who would rather that his language be developed with some vision, rather than be developed in response to political and business requirements. C# will never be more than a mediocre language, and that is precisely because of it’s development model.
I guess if you consider a horrible syntax
The syntax rocks. It is instrumental in enabling the languages capability to write metacode. With metaprogramming starting to catch on, I would not be at all surprised to see similarly regularized syntax representations for C++ and C# become available. Have you seen Bjarne’s XTI proposal for C++? It’s prefix!
and performance problems “superior”
Oh please. If performance is really important, it’s quite easy to get Lisp code within 10% the performance of C code. If worst comes to worst, just write C-style code in Lisp, and most compilers will compile that very close to what you would have coded in C. Remember, 10% of code takes 90% of time. It makes a lot of sense to use high-level code in non-critical 90%, and have more time left-over to optimize that 10%.
developers like John Carmack or Tim Sweeney
With all due respect to Carmack and Sweeney, they operate in a niche. Game programming is a very specialized problem domain, with very specialized requirements. Their experiences don’t really generalize to other types of software. They don’t use C# and Java either, and what are you supposed to infer from that? Nothing, because that would be non-sensical.
It’s also interesting to note that game developers understand the Lisp development paradigm better than most developers. They usually write a small, high-performance core in something like C or assembly (or even a specialized Lisp), and use a high-level scripting language to write everything else.
Oh, and I love how you tried to steer the “technical superiority” argument back into a popularity argument with the Carmack and Sweeny bit. Real clever…
What does he mean by “Windows programming” and “Unix programming” ?
>
>
Programing for Unix (Linux,BSD,UNIX ect) and Windows programing (Visual Basic,.NET and the rest of that Microsoft programing crap)
Business and politics are inseperable. Microsoft’s goal is not to design the best developer platform, but to beat their competitors (politics), and make the most money (business).
Competitors != politics. Where do you come up with these definitions?
I don’t see how you can argue against somebody who would rather that his language be developed with some vision, rather than be developed in response to political and business requirements. C# will never be more than a mediocre language, and that is precisely because of it’s development model.
And so Anders Hjelsberg had no vision when designing C#? I guess it was just the marketing folks that designed the language. It’s not really about the language anyway. It’s about the runtime, and the .NET runtime is good (far better than Java’s runtime engine).
Prefix notation is alright until you get a clusterfuck of nested expressions. Give me the features that make Lisp good and package it into a decent syntax. Maybe Lua or Python. Also, I want the bytecode targetted to the .NET runtime.
It’s also interesting to note that game developers understand the Lisp development paradigm better than most developers. They usually write a small, high-performance core in something like C or assembly (or even a specialized Lisp), and use a high-level scripting language to write everything else.
The core is not small and if LISP was able to be within 10% or better if C, why not just write the core in LISP? The “game code” is written in a scripting language (or not), but the core is not small. I’m working with Lua game code and the farcry engine right now.
Competitors != politics. Where do you come up with these definitions?
Gamesmanship between corporations = corporate politics? I don’t mean politics in the “Bush vs Kerry” sense.
And so Anders Hjelsberg had no vision when designing C#?
Not enough, apparently. Otherwise, he wouldn’t have all these special-case features (iterators, delegates, anonymous methods) for stuff that could be built on top of a single feature.
It’s not really about the language anyway.
It is about the language. A nice runtime can serve as a good crutch for a poor language, but if you’re doing work that doesn’t benefit from the runtime library (ie: too unique to benefit from pre-canned solutions), then you really feel the hurt of poor language design.
Prefix notation is alright until you get a clusterfuck of nested expressions.
Nested expressions are nasty in any language. If it hurts when you do that, don’t do that. Plus, indentation is your friend.
Give me the features that make Lisp good and package it into a decent syntax.
You can’t. You can get a lot of the basic stuff, but metaprogramming really requires a syntax that’s friendly to the compiler as well as to the human. At the end of the day, the (+ 1 3) takes the same amount of time to type as (1 + 3). They “readability” of each is just a matter of what you’re used to.
if LISP was able to be within 10% or better if C, why not just write the core in LISP?
Because most people don’t know Lisp? People in the “industry” seem to have a phenomenal ignorance of what is really available in the programming language world. They continue to ignore history even as they continue to reinvent it.
“Because most people don’t know Lisp? People in the “industry” seem to have a phenomenal ignorance of what is really available in the programming language world.”
Well, I don’t want to get too far into this debate… But yes, most people don’t know Lisp. And the ones that do know it, for the most part, hate it. They hate its ugly syntax. They hate the fact that it has no iterative constructs built into it. They hate the fact that is such a low level language that you have to screw around with car and cdr to implement a linked list. Add to that the Lisp is traditionally a very inefficient language, and there are very few libraries written for it, and only one toolkit that I can think of that has been ported to it (Gtk), and you will see why no one uses Lisp for major development.
I am one of the few people that knows Lisp because it is a required course in the MIT computer science curiculum. And like most people who had to take that course, I hated it. It’s syntax and ways of doing things are so messed up that it has virtually no value when trying to switch to another language, etc.
“You can’t. You can get a lot of the basic stuff, but metaprogramming really requires a syntax that’s friendly to the compiler as well as to the human.”
Python allows metaprogramming. And it’s syntax is some of the simplist and most elegant around. Lisp has some the ugliest syntax I have ever seen.
Last line of a Lisp program I once saw:
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Great… Try tracing that back and figuring out where you forgot to insert a closing parenthesis if you end up off by one.
And the ones that do know it, for the most part, hate it. They hate its ugly syntax.
What’s your standard for “knowing Lisp.” When most Lisp people say that they know C/C++ and prefer Lisp, they do so having years (or decades) of C/C++ background. I don’t expect a similar standard for C/C++ people criticizing Lisp, but don’t think “I played with Lisp for a couple of months” qualifies as “knowing Lisp.”
They hate the fact that it has no iterative constructs built into it.
http://www-2.cs.cmu.edu/Groups/AI/html/cltl/clm/node235.html
I don’t see how anybody who claims to know Lisp can not know about ‘loop’.
They hate the fact that is such a low level language that you have to screw around with car and cdr to implement a linked list.
Lisp is a very high-level language. Everything’s an object, function dispatch is generic, high-level features like lists, hash-tables, and dynamic code loading are built-in.
Add to that the Lisp is traditionally a very inefficient language
Not in the last decade.
and there are very few libraries written for it
You’d be surprised to see how many available Lisp libraries there are. Is there something in particular you need and haven’t found?
I am one of the few people that knows Lisp because it is a required course in the MIT computer science curiculum.
Ha ha ha ha ha ha! Oh, I get it now! You learned *Scheme* in intro computer science, and think you learned Lisp! Oh, it all makes sense now…
1) You hate the syntax, because it’s different from what you’re used to;
2) You don’t know about ‘loop’, because professors don’t like to teach iteration off-the-bat;
3) You think it doesn’t have built-in lists, because the professor wanted you to implement things manually.
4) You think it’s inefficient, because you used an interpreter like DrScheme.
It’s syntax and ways of doing things are so messed up that it has virtually no value when trying to switch to another language, etc.
Again, syntax is trivial. Semantics are what matters, and Lisp’s semantics are what Java and C# have evolved to. If you didn’t pick that up, maybe you should repeat that course.
Python allows metaprogramming.
No it doesn’t. Tell me how I can take an arbitrary fragment of Python code, and write code to transform it into something else.
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
That’s poorly programmed Lisp code. Whoever wrote it should have broken it out into functions, because the logic behind that many parens would be impossible to follow. C code that uses similarly deep levels of nesting would look equally ugly.
Great… Try tracing that back and figuring out where you forgot to insert a closing parenthesis if you end up off by one.
What do you use to write your Lisp code, Notepad? Any modern editor has parens highlighting, parens matching, paren completion, etc. The prefix syntax also allows the editor to offer very powerful features for manipulating sub-expressions that can’t be done with infix syntaxes.
“No it doesn’t. Tell me how I can take an arbitrary fragment of Python code, and write code to transform it into something else. ”
Yes, it does.
http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html
And in fact, metaprogramming is easier in Python that just about any other language I know.
And as far as loops in Scheme. There is, in fact, no standard iterative statement in Scheme. So you have to use tail recursion to get a loop in Scheme.
And as far as prefix syntax, yes, I have heard all of the justifications for it. And I still hate it.
“Semantics are what matters, and Lisp’s semantics are what Java and C# have evolved to.”
Certainly Java shares some things in common with Lisp. But it is still much different
“You’d be surprised to see how many available Lisp libraries there are. Is there something in particular you need and haven’t found?”
Yes. Three things actually:
1. A dBase compatible database library.
2. ODBC support
3. A GUI library. The only two I have found are a Tk port, and a Gtk port.
Okay, so you admit you don’t know Lisp, but rather Scheme. Note, Scheme is in the Lisp language family, but when people talk about programming in Lisp, they mean Common Lisp.
And as far as loops in Scheme. There is, in fact, no standard iterative statement in Scheme. So you have to use tail recursion to get a loop in Scheme.
Yes there is an iterative statement in Scheme. It’s called ‘do’. It’s in section 4.2.4 of R5RS. It’s implemented in terms of tail-recursion, but the semantics are iterative.
And in fact, metaprogramming is easier in Python that just about any other language I know.
Metaclasses isn’t really what most people mean by metaprogramming, which is usually held to mean code generation and transformation. In Lisp, the metaprogramming facilities allow you to write functions that take code as input, and return code as output. C++ (through it’s template mechanism), offers the ability to do very limited sorts of code transformation. Python lacks this capability completely.
As for metaclasses, Lisp has those too, in the MOP
1. A dBase compatible database library.
I don’t know much about dBase. Can it interface via ODBC? If there is a simple C interface to dBase, then it’s pretty easy to use UFFI to interface to it directly.
2. ODBC support
http://clsql.b9.com/manual/
CLSQL supports ODBC, MySQL, Oracle, and a number of other backends.
3. A GUI library. The only two I have found are a Tk port, and a Gtk port.
Well, a commercial Lisp like Allegro will have CLIM, which gives you a cross-platform GUI that runs on *NIX and Windows. Allegro is pretty expensive, though. However, Corman Lisp has Win32 bindings, and it’s quite cheap. On *NIX, the Gtk bindings should be just fine.
“CLSQL supports ODBC, MySQL, Oracle, and a number of other backends.”
I will look at it. But actually, I need to access data in both Access databases and also do SQL querys on Excel files. Of course, if there are Win32 bindings, I can just use the native Windows ODBC dll.
Maybe someday I will give Lisp / Scheme another look if I have time. After all, it’s often said that you grow to hate anything you have to write midterm and final exams on. :p So maybe outside of a class environment I will like it better.
“Corman Lisp has Win32 bindings, and it’s quite cheap. On *NIX, the Gtk bindings should be just fine.”
As far as the Win32 bindings though, I’ve done Win32 API programming directly in the past. And I don’t think it is something I want to revisit. 80 lines of code to get a scrollbar to scroll a text window is just not something I want to spend my time doing.
But the Gtk version might work under Windows. I’ve been pretty happy with Gtk lately under Windows.
simba: I guess if you consider a horrible syntax
Rayiner: The syntax rocks. It is instrumental in enabling the languages capability to write metacode. With metaprogramming starting to catch on, I would not be at all surprised to see similarly regularized syntax representations for C++ and C# become available. Have you seen Bjarne’s XTI proposal for C++? It’s prefix!
Maybe the power and expressiveness of a language is inversely proportional to its popularity. In the UK in the 70’s we didn’t go for Lisp, instead we had a language called POP-11. It had all the power of Lisp, but with an easier to follow syntax. For instance, here is how you define a loop in POP-11:
vars syntax endloop;
define syntax loop;
vars lab;
sysNEW_LABEL() -> lab;
sysLABEL(lab);
systxsqcomp(“endloop”) ->; ;;; Compile until the next endloop
sysGOTO(lab);
enddefine;
loop “hello” => endloop; ;;; Loops forever
Note the clear syntax, and the fact the virtual machine operations are part of the language. Sounds familiar to CLR fans?
And that other great golden oldie, Smalltalk has very powerful metaprogramming too.
And so Anders Hjelsberg had no vision when designing C#?
Just found this via Lambda the Ultimate; a beautiful destruction job on the static methods mess in C++/Java/C# entitled ‘Schizoid Classes’:
http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=205
If Anders Hjelsberg is so smart how come he didn’t spot this elephant in the room?
I guess it was just the marketing folks that designed the language. It’s not really about the language anyway. It’s about the runtime, and the .NET runtime is good (far better than Java’s runtime engine).
You can’t add behaviour to an instance of a class at runtime like Objective-C categories – that’s the other major design flaw C# and the CLR have inherited from Java and the JVM.
…but nowadays, reading about programming languages makes me feel like going to sleep.
I wonder if we’ll ever be able to talk to our computers (or write to them) in English (or whatever language we like,) and get them to do what we want.
The article doesn’t even mention C# and I believe the CLR does have the concept of module methods. Portable.NET actually compiles straight C to IL.
You can’t add behaviour to an instance of a class at runtime like Objective-C categories – that’s the other major design flaw C# and the CLR have inherited from Java and the JVM.
Categories are interesting and I’ll be the first to say that features in C++ and Java tend to promote tight-coupling (a bad thing). I wouldn’t clump java and the CLR together. Sun has done about everything it can to deliberately make Java non-powerful and has even screwed up 1.5. (It doesn’t have real generics). Microsoft is moving full steam ahead with CLR 2.0, supporting true generics and even closures.
If you’re into Python and want to try out something a little more lightweight, but plenty powerful check out Lua. It’s used widely in the gaming industry and has stuff like closures, prototypes, object-oriented programming, etc.. I think the runtime, libraries, and compiler come in at under a 100k.
The article doesn’t even mention C# and I believe the CLR does have the concept of module methods. Portable.NET actually compiles straight C to IL.
No C# static methods are just the same as C++ or Java static methods with exactly the same problems. No dynamic despatch, and no inheritance. You can’t define static methods in an interface, and therefore they don’t work with remoting. A transparent proxy should look exactly like the original class, but it doesn’t because all the static methods are missing.
Microsoft is moving full steam ahead with CLR 2.0, supporting true generics and even closures.
Yes, I agree Microsoft have more clue than Sun, and anonymous delegates/closures sound interesting. They’ve hired the Iron Python guy which is a good start. I personally couldn’t care less about generics, as I don’t make programming errors adding oranges to lists of apples. If you’re used to programming in dynamic OOP languages, it just isn’t a programming error you make, so who cares if static typing and the compiler can catch them. How about testing you code instead of adding all that clunky unnecessary syntax?
I agree that static typing is pretty much been hyped up to no-end, just like C++, but you do get a little performance boost with generics when you don’t have to do the boxing, unboxing.
I think that C# is a better language proper than Java. Java is just too dumbed down and Sun is way too conservative and academic. Right now, C# and VB.NET are basically the same languages, but that is going to change in the future with VB.NET being a more RAD language and C# being a real systems, generic applications language.
IronPython looks great. I love seeing languages compiled down to IL. Lua also has an IL compiler in the works that is in alpha state (no source code yet) and an .NET interop system right now.
I’m more interested in runtimes than in any particular language. I do care about what is on people’s systems because I’m intensly interested in deployment and crossplatform issues.I think .NET/Mono has the chance to being very close to the universal runtime in the near future. The Java runtime has 0 chance because of Sun’s blundering around.