C Programming Language Back At Number 1
derrida writes "After more than 4 years C is back at position number 1 in the TIOBE index. The scores for C have been pretty constant through the years, varying between the 15% and 20% market share for almost 10 years. So the main reason for C's number 1 position is not C's uprise, but the decline of its competitor Java. Java has a long-term downward trend. It is losing ground to other languages running on the JVM. An example of such a language is JavaFX, which is now approaching the top 20."
but shouldn't it really be at number 0?
Any sufficiently advanced technology is indistinguishable from a rigged demo. -- James Klass
The news is maybe that objective C are really gaining momentum and are soon on the top 10. With the Ipad coming out and strong mac sales it will continue to become more important.
Go ahead, read it for yourself, and tell me how this is supposed to give any meaningful results. They aggregate together things of all kind, to the point where an aggregate doesn't make any sense at all (I mean, hits such as "programming in PHP sucks" or "you must be an idiot to write production code in VB" would count as +1 for PHP and VB, correspondingly!). You can have one language having many job postings, another having many books, and yet another having many basic "how to?" questions and dumbed-down tutorials, and they'd all get the same rating.
In any case, most certainly, at these numbers (Java 18.051%, C 18.058%), speaking of one overtaking another is completely pointless, given the margin of error.
Anyway, if you want to know how popular a particular language/technology is, the simplest - and much more accurate! - way of doing so is to check any popular job search web site. Just keep in mind that preferences vary in different regions, so if you are making career choices, stick to local/national postings, and if you want to see an overall worldwide trend, you have to aggregate data from enough sources.
"Java has a long term downward trend". Wrong. For one, C and Java share the same "downward trend" from 2002 (earliest year on the chart) and 2007. From 2007 to late last year, both C and Java basically stay about the same. Only in the last 6 months or so can you say Java has been doing down and C rising.
In a real emergency, we would have all fled in terror, and you would not have been notified.
There is no way these numbers are anywhere near an approximation of reality.
How many people have real jobs where they get paid to program in Go full-time? Ten guys in the whole world maybe? But it's ranked 15. But when you look at Groovy (the JVM dynamic language) it's ranked at #44, and I personally know at least 20 developers who've used it at a variety of companies (and get paid to do so).
I don't trust these stats at all.
I expect Java to gain ground again as developers create apps for Android phones.
Although the bare-bones Nexus One hasn't sold in huge numbers, HTC have already produced several superb Android-based alternatives, such as the Legend and the Desire. If/when Android becomes the commonplace operating system in the smartphone market, this will lead to a rise in Java development.
In fact, to join in with the recent Apple-bashing (which I whole-heartedly agree with), I'd suggest that mobile app development will move away from the iPhone, in favour of Android phones. When you are investing time and money in app development, there is simply more certainty in developing apps that will live or die on their merits, as opposed to Apple's 'approval' process.
It is now over 2 weeks since Opera Mini was submitted to Apple for approval:
http://my.opera.com/community/countup/
The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings
I feel so much confidence in these numbers.
As an old C programmer (who actually is looking to get back into development) what kinds of apps make C popular (over C++) seems a lot of the stuff on the web made me feel out of date because I didn't know C++ as well or some other OO based language. I also think that while the overall ranking of a language is something to consider, it does seem that various specialties favor a few languages (web, gaming, scientific, business etc.) so that should be taken into consideration as well.
The Reinvigorated Programmer
Seems about as relevant as ranking programming languages to their popularity. Does the fact that C is #1 mean I should start writing my websites with it (I've done it, actually...and it was extremely fast and extremely painful)?
I don't see how this metric has any use at all, especially given their criteria for determining popularity.
Check out the graph for Perl! I might start using it again just because I feel like I owe it to the old friend...
Back in the Bush I recession, COBOL was the hip language to learn.
FTFA:
Philistines! Heathens! There is nothing more beautiful than a good piece of assembly code.
Is naturally, LOGO!
Visit the Arcade Restoration Workshop @ http://www.arcaderestoration.com
And nothing more nightmarish than bad assembly.
Sent from my PDP-11
I am curious if anyone has any insight on what happened in 2004 to cause such a spike in python's "Rating". http://www.tiobe.com/index.php/paperinfo/tpci/Python.html
And nothing more nightmarish than bad assembly.
Have you seen a thorough Spring implementation?
The cesspool just got a check and balance.
Job listings don't mean very much.
Employees that are very happy with a language, and productive in it, might keep their jobs for years; you may never even know that their companies were using that language. One productive employee might do the job of 10 people in some other language, and maybe that's why they aren't hiring.
Some job postings only made me cringe when I saw them, and many make me think to myself: "all-Microsoft shop, never heard of what X, Y or Z can do". Just because there's a job available, doesn't mean the language is popular; it might even mean the opposite, i.e. all the sane people jumped ship months ago, instead of trying to maintain a steaming pile of code, that a company is now desperately trying to hire people to support.
Don't ever learn one of the stupid programming languages just to get a job. Do something you enjoy...make money without programming if you have to, for awhile, until you find a job that requires languages and platforms that you actually like and can be productive in. Nothing else is worthwhile.
"Microsoft killed my company, I hold a personal grudge. I don't use Microsoft products and neither should you."-JWZ
Yes, Spring architecture is fantastic. There's a reason why VMWare paid so damn much for it.
Mod me down, my New Earth Global Warmingist friends!
As a long time C++ programmer who recently went back to C, I can tell you that C feels like a different language if you use it with all the skills you acquired from other languages. As a language C is almost perfect. It's the libraries that makes all the difference.
And nothing more nightmarish than bad assembly.
(I (disagree (there (is (a (missing) (parenthesis (somewhere)) in)) (your Lisp code)))
C has become the English of computer languages. There are so many derivatives - C++, C#, 'Objective-C', Java, and all those other web scripting languages like Actionscript and PHP -- that I can't even keep track of them all. Their syntax are so similar, yet their libraries are from different planets. As for K&R's C, it is probably like the Queen's English - rarely spoken well and often slurred.
Remember when languages really looked different - COBOL, PL/1, Fortran, Lisp? I date myself.
Those who can't appreciate the beauty of Lisp are doomed to rot in (mismatched) parenthesis hell.
BTW: use a real text editor.
Colorless green Cthulhu waits dreaming furiously.
Spring sucks.
Give me one good thing it does that's necessary, done well, and not redundant.
The cesspool just got a check and balance.
Lisp are [sic] doomed
The cesspool just got a check and balance.
Spring Beans
Mod me down, my New Earth Global Warmingist friends!
Interesting game: http://www.sporcle.com/games/moogles/programlanguages. Obviously their rankings differ from those in tiobe.
Time-Travelling Brandy Theives! The only explanation.
"It's ok, I'm completely secure as long as my iron is off"
That'd be the #1 reason on the long list of reasons why Spring sucks. IoC. It's main raison d'être, from the initial release, was to allow the injection of test code, ie, mocks. Why on earth would you ever have "test code" in your production code? Much better to have a test framework instead. Harder to code initially, yes. Less invasively? Immeasurably.
Not only that, it's merely a factory method call that can generally be coded in 4 or 5 lines and be type checked during compilation instead of runtime (a la Spring).
Care to try again and with an actual reason this time?
The cesspool just got a check and balance.
Ahh C, All is right with the world again :)
$string = "was born before 1986."; /; /;
$string =~ s/w/h/;
$string =~ s/ b/n'/;
$string =~ tr/or/t
$string =~ s/(?: (be)|9(\d+))/e$1$2/g;
$string =~ s/n/h/;
$string =~ s/n/h/;
$string =~ s/h/n/;
$string =~ s/h/n/;
$string =~ s/n/h/;
$string =~ s/beft/ard
$string =~ s/ e 1/of P/;
$string =~ s/[0-9][[:digit:]]/rl/;
print "Spoken like someone who ".$string."\n";
Check out my sci-fi/humor trilogy at PatriotsBooks.
Ok, maybe this dumb joke will play better in this thread than the first one I posted it in.
Why is noone asking to examine the C programming language, to adapt it to modern programming processes and methods? Why is noone speaking out to defend C as a useful language, to update the aged methods of Kernighan and Ritchie?
Oh, wait. Never mind. That was a stupid question.
Help stamp out iliturcy.
Test code doesn't end up in production, so I have no idea what you're talking about. Spring is normally used in conjunction with a test framework like JUnit - in fact, Spring contains explicit test harness support (@ExpectedException, JNDI stuff, and so forth).
Spring is good at lots of stuff - annotated transactions, annotated MVC (in Spring 3), etc. etc. IoC is very convenient also, particularly with auto-scanning.
That said, I'm not some huge fan of Java the language. But Java the "ecosystem" (or whatever you want to call it) is pretty amazing.
Spring for Python is interesting too.
That would be Kombucha. The 'old' ways are still/even more, useful now.
Robot programming has become very big lately, and the overwhelming number of microcontrollers out there only use C/C++ (well, and Assembly, but that doesn't count).
None of my code editors show nested parentheses in progressively larger sizes, but wouldn't that be nice? Or if the editor drew boxes around the nested groups (similar to XCode's cool code-block highlighting), that would be pretty excellent.
-- thinkyhead software and media
The index is 0, but the string at that index in the array is "1".
-- thinkyhead software and media
Well it could have been worse.
If the only reason you have the IoC code in your code is to facilitate testing, then the IoC code is test code.
MVC (in Spring3)? Really? You mean MVC in Spring 1.x or Spring 2.x sucked? Say it isn't so! So now MVC in Spring 3 is the cat's meow? Excuse me while I take a pass.
Spring's transactions are a massive headache when you need to alter or overload a specific operation. Yeah, it seems "cool" when a simple annotation will give you a "transaction", but later on, when you need to modify one bit of code somewhere in the stream or if you're really daring, have a transaction with rollbacks across multiple operations that weren't envisioned in the original design.... let's just agree to disagree and you can deal with all the crap that Spring heaps on you while you cut and paste code and debug it a week later when individual operations change due to changing requirements and I'll be at the bar sipping something cold and enjoying myself after an hour or two's work.
You didn't even mention Spring Security (ie, Acegi) which was so horribly broken 1.5 years ago that it is completely unusable in anything resembling a commercial application. Why, you ask? (I just know that was on the tip of your tongue) Because Acegi as of the current release at that time uses a token held by a thread, and limited the ability of a token to be held to a single thread. In layman's terms - there's only a single lane on the highway, folks.
I still stand by my statement of years ago: Spring is a solution in search of a problem and is a source of not so subtle bugs which most will only realize once they're in far too deep to easily pull out. It truly deserves a picture next to the kool-aid in the wikipedia story about project killers.
I will agree that JUnit4 is pretty darn decent all by itself. Without Spring.
And just in case you think I haven't worked with it - I've dealt with 4 separate large projects and analyzed the problems in various external codebases in 3 different companies that bought into the Spring kool-aid all the way back to before Spring 1.0. I shamefully admit I was even a proponent in the early days, before I actually used it in a big project. Now Spring has joined Apache Commons in the list of libraries to remove asap.
The cesspool just got a check and balance.
I see it.
Help stamp out iliturcy.
two words.... rainbow parens!
It's not 19 pages, but it's not 1000 either. You get a lot of book in 272 pages. And the book defines a language that can be used to compile itself (and hence, the book). You don't get that with Algol.
Help stamp out iliturcy.
Meh. When I want to show people how bad perl is, I just open up a text editor. Mash my face against the keyboard a couple of times. Then point out that the resulting gibberish is valid perl.
The telling detail of what is wrong with this index is that Go, a language which:
* Has no employment prospects
* Has not been used to write anything
* Does not even have a stable implementation yet
is at number 15 on the list.
The landscape is changing. Web is a done deal - there's php, java, perl (yes), ruby, asp. What's growing is 'embedded' which I put in quotes because they're actually mini-PC's on small boards. And they're going everywhere, because they cost nothing anymore. And if you have any sense, you program C on them. C is the new assembly.
Religion is what happens when nature strikes and groupthink goes wrong.
I'd totally date myself if I could reproduce asexually.
But, if you think about it, you've just outlined some of the processes that drive innovation.
It's okay to work on things that are before their time, or not before their time and simply a dead end road. Otherwise, what have you learned?
Someone flopped a steamer in the gene pool.
The problem with PHP isn't so much that it's like a kitchen knife that's dangerous in the hands of a klutz. It's that PHP is like a dull spool that's dangerous in the hands of a klutz.
HAND.
Gr8Apes is doomed to a life of stupidity
In the "Very Long Term History" section it shows Perl went from #3 in 2000 to #6 in 2006 to #8 in 2010. I'm actually surprised it's still in the top. I know no one who still uses Perl.
Meh. When I want to show people how bad perl is, I just open up a text editor. Mash my face against the keyboard a couple of times. Then point out that the resulting gibberish is valid perl.
When I want to show people how bad perl is, I just open up a text editor. Mash my face against the keyboard a couple of times. Then point out that the resulting gibberish is valid perl. And solves their programming problem better than the 2,000 lines of C code they've been working on.
Perl fanboy alert!
Lisp'ers just need you to cons() them into a good palette edit. So take 'em out of their nest in your cars() to an indentist, and C to it. Make sure you get parenthetical permission first, though.
I've fallen off your lawn, and I can't get up.
(I (disagree ;; <-- Was this it?
;; Auto-indenting editors like Emacs make it easy to catch such mistakes,
;; as does breaking your expressions over multiple lines for readability.
(there (is (a (missing)
(parenthesis (somewhere))
in))
(your Lisp code)))
)
Brainf*uck is the language of the Future!
You're supposed to allocate the buffer with a guard page at the end. For example, you can use mmap() with PROT_NONE or mprotect() with only PROT_READ. You'll get a SIGSEGV or SIGBUS when gets() reaches the guard page.
Do the gets() call in a child process, let it die on the signal or call _exit() from the handler, and determine success or failure from the process exit status. Alternately you can siglongjmp() out of a signal handler, but you should assume that this leaves the stdin stream with locks taken and thus unusable.
Be sure to put this in server and setuid programs. It gets the hackers all excited, then crushes their dreams.
That's because they are specifically designed to abstract away the computer hardware.
The job won't pay well if any fool can do it.
It also sounds like a world of painful "business logic" shit, which should remind you of COBOL and Visual Basic. At best you get to implement yet another shopping cart or convert the tax code into a computer program. You'll need a lot of vodka to put up with that.
Life is better when you are writing firmware, boot loaders, drivers, exploits, kernels, performance-sensitive code, and so on.
language exists invert forth beautiful-as
Don't feed the trolls.
All I get when visiting this site is
"This website requires JavaScript."
Is this a late april fool's joke?
No unsigned = toy language. There's a lot you can do with it, but you can't do network, binary file or device driver work with Java.
"Java also powers most of the major internet applications available today."
Got some stats to back that up or is it just wishful thinking?
Last time I looked Apache was written in C++.
hah yes! Or Ruby or Python :) That brightened my day! Time to go to work :)
So what frameworks do you use? the total crap J2ee or jee or whatever the vendor driven standard is called today? Or do you just code everything yourself from scratch on every project?
First off, ColdFusion is not a framework. Second I can write infinite loops all day with it and finally I can write entire websites without JavaScript just like a Java developer can. Way to present an unbiased ranking on programming languages...
namespace X { class Y { class Z { class W { public: int a; struct { int b; int c; } e; } } } }
See, you can make the same joke in C++.
[CLUE: you fix the problem the same way in Lisp that you do in C++. It's called "whitespace".]
var node = document.createElement("I");
var n = document.createElement("disagree");
node.appendChild(n);
n = document.createElement("there");
node.appendChild(n);
n = document.createElement("is");
node.appendChild(n);
n = document.createElement("a");
node.appendChild(n);
n = document.createElement("missing");
node.appendChild(n);
n = document.createElement("parenthesis");
node.appendChild(n);
n = document.createElement("somewhere");
node.appendChild(n);
..
-Woof woof woof!
As the CTO of a major global tier one financial services and banking group I manage tons of different software technologies (not to mention the various computing platforms that software has to run on), ranging from Cobol and Java on mainframes to C and TCL on point of sale and EFT terminals through to Java, C# and Visual Basic on servers and ATMs... and of course all the scripting and interpreted languages in between.
I am a dyed in the wool Java person (I personally developed the group's core banking frame work in Java when I still headed up the groups IT architecture division).
I am now a strong advocate for data centre simplification by standardising on .NET for customer facing and branch teller systems (all our teller systems still run on a custom build of OS/2, would you believe)
In my personal capacity (I run a successful independent software development firm as a hobby), I am sold on Embarcadero RAD Studio 2010. To be fair I have been a Delphi fan since version 1 (well since Turbo Pascal 6.0, if you really must know). But switched professionally to Java when JBuilder took off.
Delphi will never enjoy the market position it enjoyed in its heydays... but it remains the staple of the ISV. Lots of software that we use every day is developed using Delphi, ranging from Skype, the Winter Olympics 2010 Rings, Macromedia HomeSite, QuickBooks Point of Sale, Total Commander, Installaware, Yahoo! Go for TV, MySQL Administrator, Dev-C++, TurboCASH , StarUML, SharpE , Cobian Backup, PocoMail, Jabber, XPlite, DynDNS Updater, MultiEdit, SQL Litspeed, CoffeeCup HTML Editor, Windows Shell Extension for M4A music files, PL/SQL Developer and thousands of other software systems that we use every day and take for granted.
So when I started playing with RAD studio 2010, I was impressed at the versatility of the suite. I can do everything from full on .NET (framework 3.5) software development using Microsoft Visual Studio and the Delphi Prism personality to traditional Win32 development. I can even do high performance stuff by taking advantage of the inline assembler and inter-mingling assembly code with my Delphi code. Last night I was impressed that Microsoft tools such as WSDL.exe and XSD.exe were able to generate Delphi code for me to create .NET web services using Delphi directly in Microsoft Visual Studio.
So with Delphi, I have the best of all worlds, and it shouldn't be surprising that as the climate for the independent software developer is getting brighter, we should see a resurgence of those tools that give small development teams platform and technology optionality.
I am very surprised C's increase in popularity came during a recession?
Where the f**k is LOGO?
And if you happen to be developing native application code for Android using the Android NDK or contributing to the Android OS itself, you will be writing it in C.
"What's the use of a good quotation if you can't change it?" - Doctor Who
Now mix that with a bunch of Perl or PHP and you've got a dyslexic's dream.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
Android doesn't use java! Android uses a language syntax derived from java, and a VM which is not compatible at all with java bytecode. To bad, because the arm cpu can execute java byte code native. Instead android has to interpretate the non-java byte code and convert it to arm architecture instructions.
Well it could have been worse.
That works in Firefox, Safari, and Opera. Try it in IE and it shows up as
<I><disagree><there><is><a><missing>Van helen rulez!<parenthesis><somewhere><in><your><lisp><code>Jews caused global warming, and puppies</code></lisp></your>base are belong to us</in></somewhere></parenthesis></missing></a></is></there></disagree></I>
These results may be correct sure but their data collection mechanism seems highly suspect.
The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings.
..very scientific. Vendors in particular strike me as a particularly trustworthy source, citing anything that will sell them products.
I go into the local Borders bookstore and compare the ratio of books on the shelf. According to that metric, Mix is more popular than C if they have The Art of Computer Programming in stock.
For the web-tier, absolutely nothing beats the Stripes Framework.
But, if you think about it, you've just outlined some of the processes that drive innovation.
It's okay to work on things that are before their time, or not before their time and simply a dead end road. Otherwise, what have you learned?
Innovation is where there is a problem and you present something to fix said problem. Spring does no such thing. The "innovation" in a Spring infected codebase is to remove Spring.
I'm actually doing that in a Spring/Hibernate codebase right now. It's not a fun process, but once done, it will have fixed an entire slew of performance and security problems and add a properly abstracted multi-component persistence layer working through a proper set of interface APIs so that, say, you can link to an LDAP server transparently and data won't need to be duplicated in 6 different places because the Hibernate/Spring conflagration couldn't handle real RDBMS data structures nor distributed data.
The cesspool just got a check and balance.
C gets an A++
Fair question. I like Log4J and JUnit4. :)
I've used struts and tiles, and written a wrapper around it that removed most of the pain of creating all those actions and dealing with the struts-config and tiles-config files, ie, a dynamically configurable webapp using a simple key-value storage mechanism for web page design utilizing tile components.
I've also worked with JSF 1.1, 1.2, and a couple of frameworks off of those. They're "interesting" but not really ready for prime time in general, although we did have one project that resulted in an application whose functionality I have yet to see duplicated.
I wouldn't touch EJBs. They are a massive waste of time and a sure way to bloat your project and miss any milestones.
As for persistence, you're generally better off writing your own specific framework abstraction utilizing JDBC directly. I've done this numerous times, and it can vary from anything as small as a hundred lines for simple projects to a couple of thousand lines for a completely dynamically designated DB. Contrast this with the few hundred lines of XML you have to write for the best case of Hibernate or other ORM solutions, or the 45K plus lines of code for the Hibernate and JDO solutions I've personally seen that weren't even all that complicated in DB structure.
And that argument about "gee - if you write it yourself you'll have to recode your persistence layer when you change DBs." How many times have you seen a DB being changed in production? Me? 0. I have supported multiple DBs with a single project, but that's generally targeted to just a few, although one time a project I had supported 8 different DB vendors. That one was ... "fun". (and was back in the days before there were any persistence frameworks had we been of a mind to use them)
The real question you should be asking is: does this framework/utility/helper really provide me with any functionality that I wouldn't get from the JDK with a comparative effort? In general for me most things will result in an answer of "no". Take Spring IoC specifically for instance. I already code to interfaces, and writing a factory class takes me a maximum of 3 minutes and gives me compile time type checking. With Spring, it'll take about the same amount of time to write the XML bit provided that it's a simple case and you have to actually run it to see if it passes the runtime type checks. Additionally, if you have anything interesting going on in your factory, like accepting a couple of objects to generate a linked DVO or something similar.... well, Spring's going to take you on a fun ride. And then there's John down the hall who will "tweak" the Spring config for something he needs in a sub object's definition 6 months down the road and holy shit, bugs start cropping up in your code that you spend a few weeks tracking down. (This doesn't happen nearly as easily with coded factories)
So, in general, no, you don't have to code everything from scratch. You have a ton of features built into the JDK to assist you without bringing in any of those 3rd party "helpers" like Apache Commons, for instance. Right now I'm looking into ZK for the front-end framework for my next project to avoid dealing with JSF or struts.
The cesspool just got a check and balance.
Last time I looked Apache was written in C++.
From Apache's web site, with my emphasis: "Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies."
Asp like languages (on your list PHP) are the worst offenders. The "" nested with ifd an whiles are bad!
Rethinking email
Forth if honk then
(actual bumper sticker seen in 1985)
No sig? Sigh...
damn, clicked Submit too soon
Should be:
Forth heart if honk then
No sig? Sigh...
If the only reason you have the IoC code in your code is to facilitate testing, then the IoC code is test code.
I had always subscribed to this notion as well. I wonder, does Java has anything like TypeMock Isolator for it, which allows to mock anything and everything with no invasiveness whatsoever - e.g. static methods, and final methods/classes? For .NET, it uses profiler APIs to intercept and instrument code as needed.
I find it an awesome (if expensive) tool. The irony is that many people dogmatic about TDD hate it, precisely because it doesn't force you to write even trivial code with explicit interfaces and decoupling (where it only ever makes sense to enable a testing framework that cannot do it any other way, and not because it is meaningful otherwise).
But why hasn't C gotten a real switch/case statement that doesn't need "break"? "Break" is just plain dumb. (And you don't need multi-fall-through if the matcher can take multiple items.)
Table-ized A.I.
Colorless green Cthulhu waits dreaming furiously. Is this a Chomsky reference?
Spring sucks.
Give me one good thing it does that's necessary, done well, and not redundant.
Um, integrate hibernate?
I do recall looking at something a long time ago that claimed it would auto-magically walk through all your code paths and would test it externally. I still don't really see one. It would require significantly more code analysis in my opinion than anything I've seen to date.
As far as interfaces and decoupling - that's great - on component boundaries. Internally, only if needed. I've seen a "module" that had 13 layers of springified horribleness to execute a single call. I never did figure out why Spring was used, other than someone passed the kool aid around. After all, in your own component code that's making a single functional operation call, why would you need to inject 13 objects into your functional stream? Especially when there's only 1 possible instance of each? Why not just create a new object and use it, or, if you needed to be able to handle reuse or do anything else interesting, use a factory for each. The stack traces would kill a tree each time someone needed to print them out. Then again, this was "web services"... I needed a lot of Advil that year.
The cesspool just got a check and balance.
When I want to show people how bad perl is, I just open up a text editor. Mash my face against the keyboard a couple of times. Then point out that the resulting gibberish is valid perl. And solves their programming problem better than the 2,000 lines of C code they've been working on.
Where "valid" is defined as "gave me correct answers for the first 10 random inputs I could come up with"?
Who modded this guy insightful?
It's main raison d'être, from the initial release, was to allow the injection of test code, ie, mocks
Wow. You are so INCREDIBLY WRONG on SO MANY LEVELS. Spring wasn't developed simply to inject test code. That's not the only raison d'être for Spring. Spring does IoC as a basic concept and not just for mocks. You inject dependencies into objects.
Maybe the reason that you don't understand Spring is because you haven't bothered to learn it or are a bad programmer. Take your pick.
I do recall looking at something a long time ago that claimed it would auto-magically walk through all your code paths and would test it externally. I still don't really see one. It would require significantly more code analysis in my opinion than anything I've seen to date.
What I was talking isn't anything like that. It's still a conventional mocking framework in a sense that you have to set up mocks & tests yourself (though it does use some neat C# features such as expression trees to make it a lot easier than it normally is). The trick is that they use backdoors in VM to do things that you can't normally do, such as intercepting calls to constructors, non-virtual, sealed or static methods, etc, and injecting your mocks instead of what would have run. Which completely unties your hands with respect to how you design your classes, so that you can do it in a way that's actually sane in and of itself.
As far as interfaces and decoupling - that's great - on component boundaries. Internally, only if needed.
Amen to that!
Meh. When I want to show people how bad perl is, I just open up a text editor. Mash my face against the keyboard a couple of times. Then point out that the resulting gibberish is valid perl.
Not only that, it probably does something useful too.
print "Spoken like someone who ".$string."\n";
Why don't you let Perl do the interpolation for you? You have an extra ". and ." there.
Speaking of which, C now stands for Citigroup according to Google.
Huh? Your search shows "C programming language" as the first hit. "C is for cookie" comes before the citigroup hits.
Google returns different results for different people.
In fairness to the original poster, when I go to that link, the FIRST THREE links in the google results are in fact for Citigroup for me, as well as link #6. Seriously.
And none of the links are on the first page even mention "C is for cookie", despite my appreciation for tasty cookies of the edible variety.
To decrease readability.
BTW, for those of you who didn't run it, this prints the words, "Spoken like someone who hasn't heard of Perl."
Check out my sci-fi/humor trilogy at PatriotsBooks.
How do you "drive innovation"?
Car analogy please.
What I was talking isn't anything like that. It's still a conventional mocking framework in a sense that you have to set up mocks & tests yourself (though it does use some neat C# features such as expression trees to make it a lot easier than it normally is). The trick is that they use backdoors in VM to do things that you can't normally do, such as intercepting calls to constructors, non-virtual, sealed or static methods, etc, and injecting your mocks instead of what would have run. Which completely unties your hands with respect to how you design your classes, so that you can do it in a way that's actually sane in and of itself.
I think I see what you're getting at - you're asking if there's something out there for Java that would allow you to do a call to an external object in your method without actually calling it? I don't know.
The cesspool just got a check and balance.
Spring sucks.
Give me one good thing it does that's necessary, done well, and not redundant.
Um, integrate hibernate?
You apparently missed my Hibernate spiel. To sum it up - Hibernate sucks to a similar level as Spring, just in different ways.
Simplify EJBs you say? Only if you want to kill any project you're ever associated with, with or without Spring. (EJBs are one of the true Java horrors to come out of Sun, far too pretty in academic terms to ever be practical)
The cesspool just got a check and balance.
I can reinforce that. Spring is in some ways cool, but it gets in the way very much. You can observe this even on a trivial example when you write a program in Scala / Clojure etc. Why? Because Spring has extremely many inter-dependencies in its own code which apparently are there for no reason other than to save a Java programmer some typing effort.
And they were really not good at guessing what sort of things a Java developer might need. Like quite frequently requiring objects from the standard java.sql classes every other library uses, such as ResultSet (mainly rows and columns resulting from a SQL query) together with ResultSetMetadata (bascially column types, indentifiers etc from the SQL side of things). Spring does not allow access to these things it considers "managed" by itself with reasonable effort - you have to override methods, deep-clone objects, and do other things to get at this information. And that's going to cost way too much time. Its one of these frameworks that you can only save time with when you use it almost exactly like some narrow-minded group thought it would be used. For everything else, Spring just gets in the way.
Besides, even when using it normally it is fairly ugly and contorted...
I used commons Math and I love it
At least you know which element is unbalanced. With sexps you don't know til you hit the end. Which may be a thousand lines down.
nor programming languages in general if you think Java and C# has weak typing. Learn a little before spouting off. (But then, this is slashdot, so maybe I shouldn't be surprised.)
I have found a very interesting paper called "Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java"(2002).
You can find it here --> http://page.mi.fu-berlin.de/prechelt/Biblio//jccpprt2_advances2003.pdf
Here is the abstract copied from the paper:
Four scripting languages are introduced shortly and their theoretical and purported characteristics are discussed and related to three more conventional programming lan- guages. Then the comparison is extended to an objective empirical one using 80 imple- mentations of the same set of requirements, created by 74 different programmers. The limitations of the empirical data are laid out and discussed and then the 80 implementa- tions are compared for several properties, such as run time, memory consumption, source text length, comment density, program structure, reliability, and the amount of effort re- quired for writing them. The results indicate that, for the given programming problem, “scripting languages” (Perl, Python, Rexx, Tcl) are more productive than conventional languages. In terms of run time and memory consumption, they often turn out better than Java and not much worse than C or C++. In general, the differences between languages tend to be smaller than the typical differences due to different programmers within the same language.
After reading the article I got so inspired that I decided to try and solve the programming problem using C++(and I finished it). It is a logical problem that will show the programming languages performance.
If you are only interested in the programming problem you can see the website here --> http://page.mi.fu-berlin.de/prechelt/phonecode/
This paper is dated 2002 so I guess there has been a lot of updates to many of the programming languages used in this study. It would be very nice if we could do an up to date comparison today to see how big of a difference it is today. Perhaps we are mostly interested in performance, memory consumption, code length, development time. What do you think? Any takers on this?
Regards,
Krangelmat
After programming in various programming languages over the course of my career e.g. C,C++,Perl,Cobol,Pascal,Java etc. what I find is that every language is actually suitable for a particlar business use case. For example: C/C++ are good for application which rely heavily on performance, such as trading application where the application needs to deal with real time data and calculations is done in milliseconds. Though Java on the other hand is a good language for the Web or Business application where though we do need performance it is a lot less compared to what a trading application would require. Also, over the past 10 years we have seen that languages have been constantly evolving with the evolution of Personal Computing. Therefore rather than focusing on becoming a master in one programming language it would be better to have a general know how about the language constructs which would make it easier to come onboard when the senior management decided to use another language. Unfortunately the schools today have started teaching their courses in languages such as Java, which though "might" help students find a job will mostly leave them with a weak foundation. In our times the schools use to teach most of the courses in C, and courses such as compiler design and programming langauges were compulsary. Also all the core courses were in C/C++ and we had some auxillary courses which offered Java/ VB etc. This made our foundation strong and have help "me" in the long run...
And just in case you think I haven't worked with it - I've dealt with 4 separate large projects and analyzed the problems in various external codebases in 3 different companies that bought into the Spring kool-aid all the way back to before Spring 1.0. I shamefully admit I was even a proponent in the early days, before I actually used it in a big project. Now Spring has joined Apache Commons in the list of libraries to remove asap.
Maybe those three companies just did not hire the right person :-)