Fog Creek Software
Discussion Board




which language?

I am interested in putting my domain knowledge to the test and writing an enterprise (yuck, over used word) level web application for a vertical market.

I have Java/JSP and C#/ASP.NET experience. I could eventually make my project open source, but I'm not ready to decide yet.  In addition, I have no idea what language to write it in.

1.  I want a language that allows easy database access
2.  I prefer an open source platform
3.  I like OOP

So in addition to Java and C#, I'm looking at learning Python, PHP, or Perl.

Of these languages/platforms, which would ensure that I continue improving my skillsets AND can rapidly build in features faster than the competition?

I have read Paul Graham's articles and he seems to like Lisp a lot...I just don't know if that is the way to go. 

I relish learning a new language, but I'm not sure which.

Thanks for opinions.

newToOSS
Wednesday, August 11, 2004

Perl's OOP won't help you much with advancing your OOP skills in general, as Perl handles Objects and inheritance a bit differently than most languages.

PHP seems to be pretty versatile for most web-related things, but extending it is a pain.

I'd say Perl is the most agile language of those you mentioned, but the learning curve is steep for many.  I think I only know it was well as I do because I learned it first.

muppet
Wednesday, August 11, 2004

I should mention I'm even more confused after reading Hackers and Painters by Paul Graham, where he mentions that the best software tackles difficult problems with the very best high level language.

How do you decide what is a "difficult" enough problem, but not impossible?  How do you decide if the development platform is "high level" enough?

newToOSS
Wednesday, August 11, 2004

Take Paul Graham with a grain of salt.  He has very... idiosyncratic viewpoints that seem to contain a certain amount of shock value.  And while his Lisp version of Yahoo stores was a screaming success to hear him tell it, there's a distinct lack of copycats that says something.

By using the magic word "enterprise", you've indicated that you want to be able to scale the app upwards a lot.  That speaks against Perl, Python, and PHP, which would work, but aren't as easy to structure into a large, maintainable app as J2EE or ASP.NET, nor are they as rigourously OOP.  On the other hand, neither J2EE nor ASP.NET are open source.

Part of it depends on how much of a learning experience you want this to be, versus how much of a commercial app you want.  If you want to explore, I'd go with ASP.NET, which is a coming technology; if you want commercial quality, I'd go J2EE, which has commercial reputation and history.

On the other hand, if you think that the final product won't be that large after all, go with Python or PHP and Zend or MySQL.

Justin Johnson
Wednesday, August 11, 2004

I think it will be large.

Maybe I'll look at  Mono a little closer then.  I installed Mono on Linux about 6 months ago but I have no experience with Postgres and that database install is frustrating for me (I installed Postgres on Windows so it is probably even more of a headache on Linux).

newToOSS
Wednesday, August 11, 2004

Python's OO is much better than Perl, and it's extensibility is very good too.  Accessing relational databases from Python is easy enough and via the db-api http://www.python.org/topics/database/ or you can try other systems like the object-database ZODB.  PHP may be better for web programming.  I've looked at a few web systems for Python (from apache/mod_python to Zope), and none of them ever seemed quite right.

Tim Evans
Wednesday, August 11, 2004

If it'll be large, then it's probably worth sticking to Java or C#--something that demands rigour up front in order to lay strong foundations for the resulting code.

If I were to write a large webapp in any of the Ps, I'd immediately worry about writing prototype-style code full of shortcuts that I'd regret later.  Yes, I'd get something working sooner, but it would untimately put an upper limit on the size of the project.

Of course, you can make that mistake with Java and C#, too, but, personally, I'd be more mindful with those two to get things right at the beginning than I would with a scripting language.  Avoiding temptation, as it were.

Justin Johnson
Wednesday, August 11, 2004

That quote from Graham doesn't jive for me.  I believe in using the right tool for the right job.  He sounds like he likes to choose his pet "best high level language" and that becomes the best way to build anything, regardless of wether that language is most appropriate for the specific application.

If this is a web app that you expect to distro out to a large audience, you need to consider these things:

PHP will actually do pretty well for OOP and even scaling to a certain extent.  Its probably the best choice if you think the majority of your customer base would be using third party web hosting, since Linux/PHP dominates that market.  PHP makes it very easy to work with MySQL as the DB, too.

If you think you will have more corporate customers than small operations, more people with their own servers, I'd go with .NET/C#.  There is probably a good case for Java there.  It would depend on your target audience permeation of wither Windows or Sun.  Not sure how you'd get the demographic info.

Clay Whipkey
Wednesday, August 11, 2004

+++
By using the magic word "enterprise", you've indicated that you want to be able to scale the app upwards a lot.  That speaks against Perl, Python, and PHP, which would work, but aren't as easy to structure into a large, maintainable app as J2EE or ASP.NET, nor are they as rigourously OOP.  On the other hand, neither J2EE nor ASP.NET are open source.+++


This simply isn't the case at all.  With mod_perl and a talented developer or two, Perl apps can scale quite large and compete very well on an Enterprise level.  Don't state your biases as fact.

muppet
Wednesday, August 11, 2004

I meant "scale" as a measure of lines of code, not performance.  Yahoo proves that PHP apps can scale up almost infinitely with sufficient hardware in a performance sense.

The point I was making is that a scripting language is tougher to write larger apps in because the language doesn't naturally support the discipline to write a really large-scale system.  Where the platform/language doesn't provide that discipline, the programmer has to.  Thus, Java or C# are better for structuring large applications because they force the programmer to greater rigour up front that pays off later.

I'm not biased against Perl or Python or PHP.  It's a "right tool for the job" question.  Sure, you can do it in those languages; it's probably better not to, though.

Justin Johnson
Wednesday, August 11, 2004

Language supported discipline?  I think that's the weakest argument I've heard yet to support someone's bias against perl.  You can write disorganized, undisciplined, shite code in any language.

muppet
Wednesday, August 11, 2004

and for the record I'd never recommend anyone do anything enterprise level in PHP.

muppet
Wednesday, August 11, 2004

Really?  Yahoo switched to PHP for its entire directory, quite successfully. 

And yes, you can write beautiful or shite code in any language.  That's trivially true.  But some languages are better suited to some tasks than others, and those should be one's first choice, barring reasons to choose something else.

Justin Johnson
Wednesday, August 11, 2004

For its entire directory *scripting language*.  Sorry for leaving that out.

Justin Johnson
Wednesday, August 11, 2004

+++Really?  Yahoo switched to PHP for its entire directory, quite successfully.  +++

I never said it was impossible, I said I wouldn't recommend it.  DO YOU UNDERSTAND THE WORDS THAT ARE COMING OUT OF MY MOUTH?

muppet
Wednesday, August 11, 2004

Better than you understood that Heinlein quote in the other thread, or my posts, for that matter.

You said you wouldn't recomment PHP for something enterprise level, implying that it's a bad choice for that.  I pointed out an enterprise level app written quite well in PHP.  How is that a misunderstanding of your post?

Justin Johnson
Wednesday, August 11, 2004

"Really? well buh buh buh.. buh buh buh.. I'm much smarter than you and you're stupid.. buh buh."

You seemed to assume that my reluctance to recommend PHP for enterprise level applications denoted a belief that it is impossible to write enterprise level apps in PHP.  I said no such thing.  I said I wouldn't recommend it.  Hence, I believe PHP is a poor choice for enterprise level application.  You seem to think a single example of an enterprise app in PHP proves that it is the de facto language for enterprise level apps.

muppet
Wednesday, August 11, 2004

I said "You said you wouldn't recomment PHP for something enterprise level, implying that it's a bad choice for that."

You replied "it is impossible to write enterprise level apps in PHP.  I said no such thing.  I said I wouldn't recommend it.  Hence, I believe PHP is a poor choice for enterprise level application."

ARE YOU READING THE WORDS THAT ARE COMING OUT OF MY MOUTH?

I'm done trolling the troll.  Thanks, it's been fun.

Justin Johnson
Wednesday, August 11, 2004

Does your penis feel any bigger?

muppet
Wednesday, August 11, 2004

Yep, definitely a candidate for parking lot therapy.

Line forms here...
Wednesday, August 11, 2004

<sigh> back to the original subject:

As far as the three "scripting" languages mentioned above, I've had some small experience with perl, wrote a small web site in PHP, and done quite a bit in python. Of the three, python best supported my style of programming.

If you're going to choose one of the three for an "enterprise" level application, I'd go with python. The reasons are:

1) Clean, easily readable syntax means you'll be able to read your own code again easily in 6 months.

2) Built in module system makes it easy to organize your project, and keep it organized.

3) Clean OOP system makes building classes easy and using object seamless.

The language really does support "programming in the large", despite the fact that it's a "scripting" language. The module system in particular helps keep things modular in a way that $include directives don't.

What's lacking in the "enterprise" space with python (and I assume perl and PHP, but I don't have personal experience there so really shouldn't talk) are the big frameworks and support for stuff like distributed transactions, app servers, etc. that you get with J2EE and .NET/COM+. There are some groups that support some of this stuff, but nobody that I know of has pulled it all together.

The odd thing is, python apps have a strange tendency to end up much smaller than the equivalent app in lower-level languages with the same functionality.

Python is definately worth taking a look at, regardless of what Paul Graham says. :-)

Chris Tavares
Wednesday, August 11, 2004

"I meant "scale" as a measure of lines of code, not performance."

Then you probably want Python, since it will be far fewer lines than C++ or Java. Php might be a good choice if all you need to do is create a bunch of HTML, but for heavier data crunching Python or a mix of the two is the way to go.

Tom H
Wednesday, August 11, 2004

Whats wrong with Java?  Seriously, why are you even asking this question.  You already *know* java,  its one of the most used, well respected Enterprise level platforms with easily the most vendor support.  I'm not saying java is the best language at everything, but Enterprise Web Apps is probably java's strongest market.  Why bother learning another language?  J2EE has a *huge* open source following, not to mention being supported by Sun, IBM, Macromedia, Novell, BEA (the list goes on).  Perl probably has more RAD capabilities, and I would assume python does too ( never used it so its just from what i've heard), but those would probably be negated by the fact that your learning them as a language (I *know* perl and yet if I go longer then 8 months without touching it I have to relearn some stuff ). 

Also, there are already a ton of free platforms on top of J2EE for MVC, Caching, OR mapping, etc.  I doubt perl and python have much support for those type of things.  Now, don't get me wrong, ASP.NET is just *awsome*.  But, its MS only, and if I was doing a product or a startup, I'd prefer to go with a free app server on a free OS.

vince
Wednesday, August 11, 2004

An advantage of Python is Jython, which possibly could integrate well into your existing Java work. I've made some small use of Jython, enough to know it worked fine but not enough to give any ironclad recommendation for your purposes.

Also, Python has some bias in favor of OOP. With your Java/C# experience, you can learn it quickly and build useful test apps to determine yea or nay. I'm not cheerleading Python, simply pointing out advantages which I know about; I'm sure other platforms have their own.

I disagree with the fellow who claims Paul Graham is about shock value; it's just shocking for not being mainstream. Rock 'n roll was once shocking too, but now even Britney Spears has a rendition of "I Love Rock 'n Roll." The community here happens to be composed of many people who happen to find Paul shocking, but that doesn't mean he's shocking to everyone. In the past, other lisp features like garbage collection were shocking. Java and C# would've been too, but years of huge PR blitzes from the OOP community, Sun and Microsoft made various ideas palatable.

That said, lisp is probably in an early-adopter stage. If you've looked at the community or been curious enough to go in person to a meeting, and it didn't speak to you, you'll probably be unhappy to force yourself. Reanalyze in two years. If you want to keep a finger on its pulse: http://planet.lisp.org/

Tayssir John Gabbour
Wednesday, August 11, 2004

"Whats wrong with Java?  Seriously, why are you even asking this question.  You already *know* java,  its one of the most used, well respected Enterprise level platforms with easily the most vendor support."


The last time I used Java was 2000.  I recall that I was annoyed a lot by configuration issues (we were using Apache/Tomcat/Linux/Oracle and between those I got a headache), although I love the language.  Things have probably changed some since then. 

I'm looking at Mono .NET, not just Microsoft .NET, as well.

I have  years of biases built up that are preventing me from making an objective decision.  I really like the web forms stuff that ASP.NET provides, and it seems to make my life easier.  I don't know enough about the new Java tools...do they provide a similar framework? 

<I am also googling up some info so don't flame me for not doing my own homework :)>

newToOSS
Wednesday, August 11, 2004

This is just a guess, but look at Apache Struts for the same functionality as ASP.NET web forms.

Justin Johnson
Wednesday, August 11, 2004

"Whats wrong with Java?"

Part of it is philosophical, if you really like the compile time error checking Java gives you, it's probably the best choice for you.  But I've found I am much more productive in Python; less code to do the same thing, faster to test, and easier to maintain.

http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprtTR.pdf

Tom H
Wednesday, August 11, 2004

Hmmm.  If I can't build a distributed application with it, I probably shouldn't use it.

You guys have given me food for thought but I'm right back to Java v. .NET.

Sigh.

Taking a look at Jakarta Struts now...

I hate to rush into this decision but I've been mulling it over for over a year now.  Time to get to work already!!!!

newToOSS
Wednesday, August 11, 2004

I didn't know there was an option to not write shite code in Perl.

I think I'm funny
Wednesday, August 11, 2004

I have to cast another vote for python.

Since you are starting with a clean slate (no Python,Perl, or PHP experience) I would recommend Python as the most natural fit to your existing java and C# programming experience.  Python is object oriented and already has a proven enterprise ability

http://www.zope.com

The "spirit" of Python revolves around reusability, readability, elegance, and simplicity.  Try it for something small, the language may surprise you in regards to total lines of code, modular architecture, and almost self documenting (executable pseudo-code) syntax - all of which will be a great benefit when working on a large project.

lumberjack
Wednesday, August 11, 2004

All the language wars come down to this: 

  choose a language and use it. 


It really doesn't matter which one.  They _all_ have their quirks and annoyances.

Dennis Jackson
Wednesday, August 11, 2004

Thanks lumberjack (and everyone else who provided links to python info).

I found this one

http://www.webwareforpython.org/

Any experiences with Webware?  It looks very interesting...and could work for my distributed app requirement (I am very used to component oriented structures and prefer such).

newToOSS
Wednesday, August 11, 2004

"I have Java/JSP and C#/ASP.NET experience"

And with that statement you answered your own question.

If you want to go off and spend 6 months to a year familiarizing yourself with the ins & outs and best practices, etc. of a new language and or platform , then sure, try PHP, then spend another few months trying out perl, lisp, ada, whatever. Then 2 years from now you can start coding.

But if your interested in an "ENTERPRISE" (yes that word is overused isn't it :) application, the importance of the language or platform you use will pale in comparison with the importance of your skills, experience, and knowledge on that language / platform.

May God have mercy on any organization that decides to buy an "ENTERPRISE" application written by a Java expert, but hacked together in perl by said java dude with only a few months (and no real commercial experience) with scripting languages.

Your only real choices are c# and Java.

You can advertise your Java app to run multi-platform. THat I see weighing heavily on your decision. (Mono isn't exactly widespread, and most IT decision makers I know are kinda shifted out by it)

PopCulture
Wednesday, August 11, 2004

"May God have mercy on any organization that decides to buy an "ENTERPRISE" application written by a Java expert, but hacked together in perl by said java dude with only a few months (and no real commercial experience) with scripting languages."

I didn't mention it, but I have a lot of ASP and JavaScript experience , so scripting isn't entirely out of my realm.

I hear what you are saying about hacking.  I think Perl is further out of my scope than say, Python OOP.

I dunno.  I always thought if you have a good design pattern and know your domain well, you can write anything in an OOP language with good results.

newToOSS
Wednesday, August 11, 2004



I really just want a quickly written, well-designed application.

I can see why people here are leaning toward Python.

Do Python experts here believe I can write my app in Python say, twice as fast as in C# or Java?

My experience with C# is that I am about 50% faster coder than with Java.

newToOSS
Wednesday, August 11, 2004

The problem is that an enterprise system works on a scale, both in coding terms and performance terms, that really stresses things, exposing subtle, second order problems in the language and implementation.  It takes an experienced coder to avoid them or deal with them as they come up.

Python can easily be OOP enough for the task, but if you're talking about an enterprise system, you'd be best sticking with your best known language/platform rather than looking for a better option.

Justin Johnson
Wednesday, August 11, 2004

Justin, I hear you.  But I can't help myself.

After reading this from Bruce Eckel...

http://www.artima.com/intv/aboutme.html

"I feel Python was designed for the person who is actually doing the programming, to maximize their productivity. And that just makes me feel warm and fuzzy all over. I feel nobody is going to be telling me, "Oh yeah, you have to jump through all these hoops for one reason or another." When you have the experience of really being able to be as productive as possible, then you start to get pissed off at other languages. You think, "Gee, I've been wasting my time with these other languages." "


...

I'm going to have to consider it. 


I'm starting to think maybe "enterprise" is an unfortunate description of my scope.

I expect my target to be small and medium-sized companies, but if I choose to develop my app as the structure for an ASP-style business, scalability may become an issue.

newToOSS
Wednesday, August 11, 2004

Don't get me wrong: I have nothing against Python, and I respect Eckel a lot because he's moved to Python after having become an expert in Java.  If you had more experience with Python than Java, I'd say stick to that.  I would just think seriously about combining a new, large application with a language switch.  It's kind of a double whammy of difficulties, isn't it?

Justin Johnson
Wednesday, August 11, 2004

One question: what sort of database/data store are you planning on using on the backend?

Justin Johnson
Wednesday, August 11, 2004

Python is the choice. Depending on exactly what you're building you can leverage on Zope & Plone.

Perl is terrible for anything other than little tiny utilities.

Here's a test, ask anyone who is recommending Perl what other languages they know and the answer will always be...    none. That's right, everytime I talk to someone who recommends Perl it's always the only language they know!

I also like c#, but I have problems with the recent Microsoft admission that Linux is enemy #1.  I think they'll find a way to damage Mono in the near future.

Dutch Boyd
Wednesday, August 11, 2004

Nice troll.  Classic, even.

muppet
Wednesday, August 11, 2004

"After reading this from Bruce Eckel..."

:%s/Bruce Eckel/Bill Gates/g
:%s/Python/.NET/g

:%s/Bruce Eckel/James Gosling/g
:%s/Python/Java/g

:%s/Bruce Eckel/Larry Wall/g
:%s/Python/perl/g

:%s/Bruce Eckel/Rasmus Lerdorf/g
:%s/Python/PHP/g

:%s/Bruce Eckel/Bjarne Stroustrup/g
:%s/Python/C++/g

there's millions of brilliant successful people (well thousands at least) in the IT industry. Some have tools that they prefer, probably because of nothing more than personal preferences... i.e., "the glove fits".

I agree with muppet, I smell troll and I regret typing and reading thus far.

IHBT. IHL. IWHAND.

PopCulture
Wednesday, August 11, 2004

PopCulture has a good point: a lot of what the best language to use might be is what suits your style and temperment best.  Dutch is being a troll: Perl has lots of big success stories, and a strong Perl programmer won't have more problems than a strong Python programmer.

Personally, I'm a Java guy, but my first programming experience was with Perl, and I have a soft spot for it.  I just found that Java suits me better.

Justin Johnson
Wednesday, August 11, 2004

Ah, I see. When you're beaten in a discussion the new defense is to claim the other guy is trolling.

I'll have to remember this if I ever lose an arguement.

Dutch Boyd
Wednesday, August 11, 2004

"Ask anyone who recommends perl what other languages they know.  The answer will be none."

Nope, no trolling here.

Let's see, I know C#, Java, C++, PHP, VB, a bit of Python...

muppet
Thursday, August 12, 2004

My 2c worth is try:

Smalltalk and Lisp
(in that order)

James Ladd
Thursday, August 12, 2004

> Here's a test, ask anyone who is recommending Perl what
>  other languages they know and the answer will always
> be...    none. That's right, everytime I talk to someone who
> recommends Perl it's always the only language they know!

PHP, ASP, ASP.NET/C#, C, C++, Java, Javascript, SQL, Prolog and I *still* use perl as the language of choice.

Matthew Lock
Thursday, August 12, 2004

I, too, use Perl frequently for non-trivial projects (though I'm not religious about it -- like anything else, it's a tool for getting a job done). And I'm hardly monolingual. Languages I've programmed in over the years include Z80, x86, and 68K assembly, BASICA, Pascal, QuickBasic, VB, Scheme, Java, and C#. I've also dabbled in Prolog, C, PHP, Python, and probably a few others that aren't coming to mind just now.

I wouldn't claim current proficiency in many of those languages by any means, but Perl is hardly the only language I've had exposure to. I just find that it lets me get stuff done very, very fast. And by fast I don't mean slipshod.

Yes, it does require discipline on the programmer's part. I don't know how well it would scale to a team of, say, a dozen developers. But there's certainly no reason to claim its use should be limited to simple scripts or that anyone who suggests Perl is ignorant of the alternatives.

John C.
Thursday, August 12, 2004

You could probably find some stories of perl scaling pretty well in teams here: http://perl.oreilly.com/news/success_stories.html

Matthew Lock
Thursday, August 12, 2004

My 2c:

If you are going to go with C#, write your own iHttpHandlers. Stay away from the designer created aspx pages.

Gary van der Merwe
Thursday, August 12, 2004

"I didn't know there was an option to not write shite code in Perl." 

LOL.  I nominate that for "quote of the month" on JOS. 

Anways, I think its just a matter of picking the right tool for the right job.  Personally, i'd pick J2EE over dotnet if I was a one man shop, simply because everything you need is Open Source.  Now, if you have a little capital, don't care about vendor lock in, and don't need to have a super-complex middle tier ( o/r mapping, distributed caching, etc.) knock yourself out with ASP.NET.  Its RAD capabilities are astounding.  I would bet money that a good ASP.NET developer can out-produce a good python programmer.  Plus, it does all the shitty, boring stuff we all hate to do anyway.  ;-)

Good luck.

vince
Thursday, August 12, 2004

I think it really all comes down to whether you want to work with a statically typed or a dynamically typed language. Obviously you have experience with statically typed languages such as java and c#, so if you want to continue using these, then go for it.

The alternative is a dynamically typed language. Python is one of the main languages in this arena. my personal favourite though is Ruby (www.ruby-lang.org). It is easy to learn, very OO, dynamically typed, and generally just a joy to use.  Obviously there is a bit more of a learning curve for you here, but these languages are a lot more powerful and useful than many people give them credit for. Yes, you lose the compile-time type checking that you have with a statically-typed language, but it is all swings and roundabouts as there are gains in other areas.

Good luck and let us know what you choose,

treefrog
Thursday, August 12, 2004

It also comes down to whether the number of users and potential application is important to you. Do you want this product to be a popular piece of software some day? You mentioned open sourcing it. Do you think there's a chance that it might work well enough that you'll decide to commercialise it?

If so, I would base my choice of language much more on what will maximise the potential users. I've just started a large-ish project, writing a web-based application which I am intending to sell at some point, if it works as well as I hope (I haven't even finished all the use cases yet, but hey).

I evaluated several languages as possibilities, Java, Perl, PHP, Python, ASP classic, C#, even Ruby. In the end i've decided to go with PHP, even though I don't actually like it as much as, say, Java or C#.

But I'm going with it because the target market is most likely to buy it. J2EE enterprise hosting is still harder to source for most small to medium enterprises, and so is ASP.NET hosting done well, although it's improving dramatically. But every business I know probably already has PHP available to them, even most Windows hosting companies run it.

You say you're doing this to test your skills, and hopefully to learn a bit more about programming. I would contend that whichever language you use, developing a large web app will teach you lots of things which will improve your programming in general, and which will apply to any language. OK the syntax might vary, but you'll hit the same walls and have to grep the same concepts in all of them.

I've never done a decent sized web project in any language without coming out of it being able to list the (many) things i've learned. Every time.

Andrew Cherry
Thursday, August 12, 2004

Here are some relevent Ruby links which may prove useful:

- http://www.ruby-lang.org -
- http://www.rubygarden.org/ruby?RealWorldRuby -
- http://www.rubyonrails.org/show/HomePage -

The rails stuff looks really impressive. At a minimum at least look at the 10 minute setup video.

<-.->
Thursday, August 12, 2004

What?!  How can Ruby be mentioned without a link to the Poignant Guide (seen here before, I know, but time for it again).

http://poignantguide.net/ruby/

OffMyMeds
Thursday, August 12, 2004

Anyone remember in the original Doom you could sometimes get the monsters to fight each other?

On a completely unrelated topic, Dutch and muppet, please continue your discussion!

MetaTroll
Thursday, August 12, 2004

I was Python extensively in my last position as the UI framework on top of a C++ core. I had previously had similar experience with Tcl/Tk. I found Python to be the most productive application development (as opposed to algorithm development) tool I've used. The libraries are extensive, and easier to use than .Nets. The language is impressively easy to learn and use.

There are tricks to learn, and your style of development changes somewhat compared to, say, C++. You tend to be more effective writing a couple lines, testing it, writing a couple more, testing it...  The late-binding kind of dictates that style.

However, that was for a scientific application, not a business support system, so your milage may vary.

Jeff Kotula
Thursday, August 12, 2004

There really is no discussion.

I squashed muppet like a grape (which wasn't hard).


Another opinion on Python vs. Perl: http://www.linuxjournal.com/article.php?sid=3882

Let's face it, Perl is a feeble language that attracts feeble minds. Nuff said.

Dutch Boyd
Thursday, August 12, 2004

Worry first about the platform, then about the language. You say Enterprise, which makes me think dotnet or Java (both a platform and language).

Any database or web server issues? I'd pick your other tools first and then figure out what language works with them best.

But then again, I'm not a believer in the One True Language.

Miles Archer
Thursday, August 12, 2004

As a neophyte ruby user, I'll throw my lot into the Ruby camp.

First, it's got excellent regular expression support, on par with Perl.

Second, it's got a lot of the same things that Python has that are nice.

Third, there's a bunch of really crazy metaprogramming bits in there that, once you understand how they work, can be used to write incredibly tight code for relatively large systems.  It's got lisp-like abilities to do crazy things with the language and some of the Ruby folk have written some pretty awesomely tight code with it.

Fourth, it's really like Lisp where instead of being built around lists, it's built around objects.

So it's really the sort of language where Perl programmers are happy because their precious regular expressions are present, Python programmers are sometimes happy because it's in the same spirit as Python, Lisp programmers are happy because they can do all of their functional programming fun, and Smalltalk programmers are happy because it's got objects all over the place.

Flamebait Sr.
Thursday, August 12, 2004

Okay.  I have two issues now...do I go with my curiousity, or do I go with the practical issues of building an app.

I'm curious and interested in learning a new language, but the new languages available do not have the base/infrastructure to support my highly ambitious goals.  While Python and Ruby seem to have what I need and spark my curiousity, intensely, I  can't see how I would go with such a platform if I ever expect my app to be widely used.  I realize that last sentence could be argued and I could easily lose that argument by those who know better, but my gut is screaming at me.

I don't have the dough to do this the Microsoft way, and Mono could be driven to marginality by Gates & Co if they choose.

So.  That leaves Java. 

newToOSS
Thursday, August 12, 2004

Not to mention, nine months from now, when I'm waste deep in the middle of my huge application, will I be up at night, wondering if I should have gone with Java?

I don't see the opposite happening....if I go with Java, I won't be having nightmares that I should have gone with Python or Ruby.

Psychologically, I think Java will be a comfort after a year's worth of work has been put in, even though it will take me a lot longer to get to my milestones.

Eh?

newToOSS
Thursday, August 12, 2004

Sure. Programming languages and platforms are just programs. Do whatever makes you happiest.

I again suggest you try out Jython, though it can certainly done leisurely, as you're coding Java. Maybe it'll click for you, maybe it won't; at least you'll have hedged your bets and gotten out the remorse of not having tried something new.

Maybe if you're feeling burnt out and wanting to try something new. Not too much time of course.

Tayssir John Gabbour
Thursday, August 12, 2004

Use Python for a more experimental program you want to write.  I think you might regret using Python or Perl for the learning experience if you start to perceive that it becomes a roadblock to your commercial success with this app, which will have the effect of poisoning you against two languages that are great all by themselves, and worth learning on their own.

Justin Johnson
Thursday, August 12, 2004

I'm coming late to this particular thread, but the things that caught my eye were that "enterprise" wasn't defined. 

  If you need multi-system, distributed-transaction "enterprise" then Java & J2EE appservers.  If on the other hand, you mean "server-side" then most options would do.

  As your Java expertise isn't recent, I'd suggest spending a bit of time reading up on Python, then make a start on implementing something with it for a week and see how you get on. 

[BTW, my background is Java/J2EE, C++, C with bits of Python/Jython]

Gwyn Evans
Wednesday, August 18, 2004

*  Recent Topics

*  Fog Creek Home