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.
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.
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.
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 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.
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.
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)))
)
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.
When Java was two years old, it was utterly unusable and yet overhyped beyond reason, although it brought *nothing new at all*, even inside Sun Microsystems - it was basically a step back from Self-93. (Or rather a whole mile back?) Go actually bears the promise of bringing a "highly concurrent C-level language" into mainstream, at that's something that, unlike Java, makes sense to me. So, OK, it's probably overhyped, but much less than Java was when it was as "old" as Go is today.
Ezekiel 23:20
"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 :)
Go's fault is in trying to be a language instead of a class library for other languages.
.. there is ANOTHER movement in that area that is really taking off: stream processing.
As far as "highly concurrent"
While not attacking quite the same problem space, its attacking the one that matters most for most people. These libraries provide immediate advantages even on single systems.
"His name was James Damore."
Go's fault is in trying to be a language instead of a class library for other languages.
Oh, yes, GC and channels and concurrency in form of a library for C++. Please, that's not even funny. They're still trying to make at least a half-competent memory model, fifteen years late or so. The Go people have at least some experience with massive concurrency. (Look up Newsqueak etc.) While I'm a staunch proponent of simple but powerful languages with orthogonal features, it strikes me as particularly odd to require concurrency features - of all things - to be a library when so many useless things aren't (see C++). You must make at least the memory model and execution semantics work properly before you attempt it, and libraries won't do this for you.
As far as "highly concurrent" .. there is ANOTHER movement in that area that is really taking off: stream processing.
Then why don't we all program in Simulink? Perhaps it's not worthy to model each and every addition and multiplication as a dataflow operator when Erlang-level concurrency is enough.
Ezekiel 23:20
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?
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?
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
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.
Android's SDK includes vast swathes of the Java API (and third partly APIs like Apache HTTPClient, etc) as part of its core. Sure, it doesn't include the full Java platform (replacing UI with Android specific classes, for example), but from a language viewpoint it's mostly Java, might as well be Java, and uses Java development tools like Eclipse.
And ARM CPUs actually now include generic virtual machine instructions, not just Java specific instructions - this is called "Thumb EE" which is present in ARMv7 architectures (Cortex), and replaced the Java bytecode Jazelle functionality. It is a dead cert that Dalvik will eventually make use of Thumb EE (note that the first Android devices were ARMv6 devices using ARM11 CPUs).
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...
You realize signed/unsigned is just a simple bit pattern?
Your second comment is even more hilarious and out of touch with reality.
Mod me down, my New Earth Global Warmingist friends!
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.
You seem to be missing it.
Massive concurrency is had via OpenCL/CUDA/DirectCompute/...
Thats what you have missed in my argument. It is that people dont want to use a different language. They want to use the language they already use. Look at that.. plenty of C++ CUDA development.. oh, and C# CUDA development.. oh, and PYTHON CUDA development.. oh, and FORTRAN CUDA development.
The same is true for OpenCL.
Massive concurrency without dealing with the "problems" (memory models? execution semantics? please.) that you have imagined. As far as Simulink.. umm.. hello? Simulink has very little to do with implementing practical massive concurrency. OpenCL is doing it right now. CUDA is doing it right now. Very few are using custom languages or entire frameworks to get their concurrency.
They are using class libraries like OpenCL, CUDA, and DirectCompute. Thats the reality of the situation. Yes, it doesnt attack quite the same problem as Go, but the reality is also that people dont need to attack that problem, nor do they even have the resources to make Go advantageous, nor do their customers.
Go will fail precisely because other solutions exist that don't require adopting a pet language.
"His name was James Damore."
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.
Epic FAIL. Concurrency and parallelism are NOT the same thing. Such a rant and what a total waste of words, huh? Perhaps you should read before you write the next time.
Ezekiel 23:20
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"?
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.
The metrics used to determine the list go a tad-bit beyond counting people you know who use it.
There's a brobdingnagian fuckload of perl code out there being maintained continuously. It's deeply embedded in the installed base of expensively developed custom software. it will decay in importance only slowly.
One is a subset of the other, dumbshit.
I did say that they dont attack quite the same problem, right? In BOTH posts? Thats TWICE I said it, right? right?
You sir are an idiot for not realizing that the current generation of stream processors is not equivalent to data parallel, ala SIMD... thats what it was about 10 years ago.. thats not what it is today. These things perform concurrent execution, not just data parallel stuff.
"His name was James Damore."
I do not know the C#, but at least in the Java one has to often downcast to the java.lang.Object.
Probably the C# is bit smarter and does additional check during compile time (in many cases possible), yet this is a *feature* of weak-typed languages: methods/objects are bound to each other as a rule during run-time, not during compile time like in the strict typed C++.
And the weak typing has to be a feature for the language to be message/event friendly. (Just look to what the Qt had to resort to implement the messaging in C++ - something one takes for granted in the Java and C#.)
But yeah, this is the Slashdot and last I touched Java (thanks God) was many years ago. It might have changed, but unlikely: the Sun kept Java consistently backward compatible.
All hope abandon ye who enter here.
One is a subset of the other, dumbshit.
Thank you for your kind words. No, neither of them is a subset of the other one. You can implement parallel algorithms without having to deal with any significant amount of concurrency (or without having to deal with at all), and you can program concurrent programs that run on a sequential machine. (Read the previous sentences at least ten times.)
I did say that they dont attack quite the same problem, right? In BOTH posts? Thats TWICE I said it, right? right?
Perhaps, but that's precisely the point. OP was talking about Google Go, the goal of which is to put forward concurrency as the core issue of a low-level language. I, in turn, talked about concurrency, and what it means for a computer language. Suddenly you come with parallelism and libraries, of all things.
You sir are an idiot for not realizing that the current generation of stream processors is not equivalent to data parallel, ala SIMD... thats what it was about 10 years ago.. thats not what it is today. These things perform concurrent execution, not just data parallel stuff.
I realize it perfectly well. It's just that this is totally off-topic.
Ezekiel 23:20
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...