Home

Previous Entry | Next Entry

Programming Wave of the Future

  • Apr. 30th, 2008 at 12:54 PM
insane, lion, nipsey, heavy, rarr teeth, teleport, tiger, tongue, bird, milk, peacock, hate happy smell think, brock venture, hulk, MMM, me 1977, monarch, sanskrit, SUN, me, roborally, jedi starwars, burnie, gau sneaky, gau, me 1981, obstacles, spoon, FIGHT, sick, shoes, family, twice upon a time, bacon, me capecod 2005, dinosaur turkey, sailor luck, bard, liger, cat, cheese, ufo, cavity creep, pelor, tiger eye, wizard, AIEEEE, general gau 2005, munchie, confusion, eats, sinistar, victory, chewy, Suspicion
It looks to me like the demand for Cocoa (Apple application) development is on the rise, and will only continue to move upwards. Mac hardware continues to sell despite poor economic conditions, and iPhones are going to take over the world the same way iPods did.

Right now I'm on a path to learning Objective-C, which is basically a superset of C with some object-oriented conventions added to it, a la Smalltalk. Once again proving that C is the language that all programmers should learn first! I'm very glad my education started with Unix and C, and not Windows and Java (both of which are on their way to becoming dinosaurs, IMO).

I'm even considering going to this year's Apple WWDC in San Francisco... maybe I can convince Robert Half to pay for some of the trip or something?

EDIT: I figure a trip to SF will run me around at least $3000.00... with my current savings and rate of saving, plus that wonderful tax stimulus package, I'd have about half that amount by the time the conference rolls around.

Comments

[info]neuromancerzss wrote:
Apr. 30th, 2008 07:39 pm (UTC)
Wait, C-children are the future while Java and its descendants are on their way to becoming a dinosaur??

Even though it's not the be all and end all people thought it would be, modern languages tend to be Java, but without all the cruft, rather than streamlined C. Even C# is more Java than C. The only issue Java has is its pseudo interpreted nature which is practically meaningless given even the processing progression of handheld devices. Efficient languages like C are always going to have their place in the smallest devices, but there's a world of programming beyond that and the only things that are bumping Java from that general practice space are evolutions of it.

Do modern languages even use explicit pointers or garbage collection anymore?

Your predictions would have made more sense back in the '80s when Microsoft was on the rise, but Apple's trying to use the same business plan they did 20 years ago, except instead of just battling a single software opponent, Apple's plan requires that they beat EVERY peripheral, hardware, and software maker simultaneously.

iPods and Mac are horrific examples of closed engineering. The single-source Apple plan didn't work back when people were computer-stupid, now they've got a whole generation raised in an open vendor market. iEverything just doesn't cut it. You mistake trendy for trend-setting.
[info]mikecap wrote:
Apr. 30th, 2008 08:19 pm (UTC)
How many operating systems are written in Java and C#? "C will always have its place"?? Yeah, that's because C is fundamental and has useful applications in nearly every form of programming at any level. C is practically at the trunk of the tree of languages!

Java development is being relegated more and more to niche markets and industries - it hasn't really succeeded anywhere, and the only companies hanging on to it are the ones that are slow to change or that have made huge investments in it and can't pull away. It may have helped drive development in certain directions and been a great theory, but in practice it is dying out.

C# is dominating because of the MS monopoly; I'm still not convinced that it's any better than anything else MS has done, because it does the same thing you're accusing Apple of - it's closed engineering that leverages a monstrously complex framework that sits on top of their increasingly arcane OS. All MS ever ends up doing is bloating its software more and more; and I don't think this "abstraction" really makes it any easier for people to program - it makes it easier for people to "visually" create drag and drop applications, but they still can't actually solve problems to save their lives.

C is really part of the process; maybe it makes more sense to teach supersets of C because of new paradigms and better ways of doing things that have developed in the last couple decades, but at this point I think teaching Java to people actually does more disservice in terms of teaching fundamentals. C just has too much broad application, especially since more and more peripherals and devices requiring its efficiency and flexibility are coming into use.
[info]neuromancerzss wrote:
Apr. 30th, 2008 08:33 pm (UTC)
Why would anyone (other than an OS programmer) care what their OS is coded in? It's like saying Assembly rocks because at their core compilers use it.

Java has the support. C# has the support. You're not reinventing the wheel or playing garbage collector for unneeded efficiency boosts with them. I haven't even heard of someone using Objective-C other than Apple.

As I said, you've got OSes and small devices. Things where you don't have the luxury of a modern programming language. If you're not doing that, you're just shooting yourself in the foot allocating memory and writing your own interfaces that will then only run on one architecture. Even peripherals have less and less need for such efficiency and they'll just continue to grow in that direction.

C's continued use is testament to it really being great at its niche, but that niche is going to shrink if it changes at all, and beyond that it's really a pretty poor choice.
[info]sirroxton wrote:
Apr. 30th, 2008 09:00 pm (UTC)
I think the availability of desirable frameworks play a much bigger part in choosing a language than the language's actual features. Garbage collection is almost a red herring.

The bigger question is whether we'll ever escape the web as the primary interface for Internet-driven applications. That question is up in the air. Beautiful frameworks like Cocoa and Android make the escape kind of desirable.
[info]neuromancerzss wrote:
Apr. 30th, 2008 09:19 pm (UTC)
I wouldn't totally agree with that. I would find it quite tedious to program in a language that required garbage collection and didn't have modern conveniences like generics and expandable collections. And in the end time spent coding and maintainability are very important factors when a business considers programming environments.

I do agree that where internet applications go is the real question with future programming. GMail isn't the most fully featured mail program around, but portability (especially unplanned) is a feature so valuable to me now that the idea of running a thick client for email sounds ridiculous.

Until Cocoa tries to be platform independent it's nothing more than an upgrade to an old way of doing business, which is the entire problem with Apple.
[info]mikecap wrote:
Apr. 30th, 2008 09:45 pm (UTC)
How is C# platform independent? And Java certainly never really delivered on true platform independence...

I'm certainly shooting for eliminating the web as an interface for applications. I think it's ridiculous that we keep trying to make it work that way (like using a screwdriver to dig holes or something).
[info]neuromancerzss wrote:
Apr. 30th, 2008 09:54 pm (UTC)
Well, it's designed to be, though so far the only non-Windows CLR engines are open source projects.
[info]sirroxton wrote:
Apr. 30th, 2008 09:50 pm (UTC)
Let me be quick to add that I vehemently disagree with the assertion that Java is going the way of the dinosaurs. Java frameworks are a huge part of Internet application servers and will be for the foreseeable future. If Android works out, it'll also be running a lot of userland applications for hand-held devices. Java bytecode is already a big part of the embedded platform sphere.

Even a complicated Java application has to handle the lifecycle of its application objects. (Anyways, Objective-C has garbage collection these days.) I like generics too, although I don't think their critical, especially if you use test-driven development.

I would certainly gravitate towards a better language if my requirements could be satisfied by a variety of good framework choices. If your target is OS X users, your only real options are Objective-C or a web application, IMO. I can't in good conscience recommend Swing or SWT when Cocoa is available.

I think if client applications take off, it'll be a streamlined supplement to web interfaces, not a replacement. A lot of web frameworks enforce separation between server and client code, which has the potential to make such porting relatively painless. (A bit of hubris, yes. But a comforting bit at that.)
[info]neuromancerzss wrote:
Apr. 30th, 2008 10:03 pm (UTC)
That's true, if your customers are linked to an OS, then an OS-specific language is perfectly ok (and in most cases will be easier to use for such development). I don't see us reconverging on a single OS though, and as a computer programmer, I don't tie my skills to the rise or fall of a single OS, so OS-specific languages might be something I pick up for a single project (or even job), but they'll never be something I actively embrace. In my eyes, they're a concept from an obsolete paradigm.
[info]mikecap wrote:
Apr. 30th, 2008 10:11 pm (UTC)
I would argue that that's been the de facto state of affairs for all of Microsoft programming in the last couple decades, and the possibility of that changing is only very recent and still not yet realized.

I don't know if it's possible to escape these particular bonds of commercial software development with the way the world is set up currently. However, one could plainly demonstrate that C (as a language all on its own) pretty much escapes all the strictures of dependence that the commercial interests want to put in place. One can also develop for the Apple platform entirely in C if one wishes, and that will still compile fine within the Objective-C framework.
[info]sirroxton wrote:
Apr. 30th, 2008 10:34 pm (UTC)
I think that's a good point.

A few points of contention:
1)
If you define a standard interface for your Internet-driven application, then writing a thin client for different platforms really isn't so bad... Just so long as it really is a thin client with application logic on the server.

2)
You suggest a universally accessible paradigm, but the only thing that fits the bill right now is (X)HTML/CSS and Flash. That's great for some things, pretty crappy for others, and impossible for a few things.

Frameworks aren't intrinsically tied to the OS, so the way I see it, using Cocoa isn't selling out of the universal paradigm. While it is a pragmatic compromise in light of the absence of a good universal solution, you can also see it as a vote to increase the popularity of Cocoa, and maybe have it become universal someday. Again, a comforting bit of hubris, but I think there's a meaningful difference between using a framework and making OS-level API calls.
[info]mikecap wrote:
Apr. 30th, 2008 10:13 pm (UTC)
I think Java's being phased out in the application server market - IBM clings to it like crazy, but I really have to believe that people are starting to see that performance really does matter and are starting to move more to open systems and even MS systems for their application server needs.

And then of course there's the whole nascent RIA trend, yet another framework of frameworks built on the client side, which will likely make a lot of those application servers less than necessary. Java is really only "thriving" in the financial and insurance worlds, two places where change is just anathema...
[info]sirroxton wrote:
Apr. 30th, 2008 11:06 pm (UTC)
Java application frameworks are a hot topic and still rapidly evolving. The stuff coming out of SpringSource is changing the way people think about web development. I don't see any basis for the suggestion that they're drying up.

A lot of the hot RIA stuff is generated by server-side code - largely using Java.

I'm playing pundit today, so don't assume my assertions are based on a thorough investigation that includes market research. ;-)
[info]sirroxton wrote:
Apr. 30th, 2008 09:57 pm (UTC)
Let me just add that I know a few really saavy people who use Google IMAP with their OS X Mail application. The OS X userland applications are a joy to work with, especially if you use them in tandem with the plethora of GSD (get stuff done) tools available.

I just wish Google would port Picasa to OS X.

(Damn, I wish I could edit typos.)