Slashdot Mirror


Choice of Language for Large-Scale Web Apps?

anyon wonders: "PHP is the most popular language for the web. eBay uses ISAPI (C), Google uses C/C++ (search), Java (gmail), and Python. Microsoft uses ASP (what else?). For small web site, it really doesn't matter. What's your take on language choice for large-scale web applications? Maybe language choice is irrelevant, only good people (developers) matter? If you can get the same good quality people, then what language you would chose? Considering the following factors: performance, scalability, extendibility, cost of development (man-month), availability of libraries, cost of libraries, development tools? Has there been a comprehensive comparison done?"

113 of 801 comments (clear)

  1. Polyglot by FTL · · Score: 3, Insightful
    What's your take on language choice for large-scale web applications?

    As many as possible. Use PHP for the front end, Perl for input parsing, Euphoria for the graphics, JavaScript on the client-side, Moo for the database and Python for the glue to hold things together.

    Every language has strengths and weaknesses. There is no killer language. A good carpenter has lots of tools and uses the most suitable tool(s) for each task. Likewise a programmer should be skilled in many languages and should pick the most appropriate one for each task. Learn as many programming languages as you can, and when you've done that, learn a few more.

    [The feeling of job security is also rather nice.]

    --
    Slashdot monitor for your Mozilla sidebar or Active Desktop.
    1. Re:Polyglot by l33t.g33k · · Score: 2, Informative

      Google uses Java (gmail) Not really. They use JavaScript for that, which is quite different.

      --
      My sig is permanently on strike.
    2. Re:Polyglot by ScytheBlade1 · · Score: 4, Funny
    3. Re:Polyglot by PotPieMan · · Score: 5, Informative

      Ajax, which stands for Asynchronous JavaScript and XML, does not necessarily imply Java on the backend. Many Web application frameworks, such as Ruby on Rails, include Ajax helpers. I'm sure many Java Web app frameworks have also added support for it.

      Adaptive Path has a nice article introducing Ajax called Ajax: A New Approach to Web Applications.

    4. Re:Polyglot by connsmythe96 · · Score: 2, Informative

      AJAX makes an HTTP request (using Javascript) which returns XML. The backend can be written in any language (Java, PHP, Perl, whatever).

      Example

      --
      if(!cool) exit(-1);
    5. Re:Polyglot by Tablizer · · Score: 5, Insightful

      As many as possible. Use PHP for the front end, Perl for input parsing, Euphoria for the graphics, JavaScript on the client-side, Moo for the database and Python for the glue to hold things together. Every language has strengths and weaknesses.

      Noooooo!

      It will just produce a job ad that says:

      Required: 3+ years experience in PHP, Perl, JavaScript, Euphoria, Moo, and Python.

      Then when they can't find any individual to fit the bill (surprise!), they will lobby Congress for more visa workers so that they can hunt the entire globe for the "best and brightest".

      (Hmmmmm. What the hell is "Moo"?)

    6. Re:Polyglot by FooAtWFU · · Score: 3, Informative
      Last I checked, a MOO was a MUD, Object Oriented. Most MOOs are probably based off the LambdaMOO server, which was initially developed at PARC; the original LambdaMOO is available via your favorite telnet or MOO client at lambda.moo.mud.org port 8888.

      However, I would find such a system to be extremely unsuitable as a general-purpose database.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    7. Re:Polyglot by pyite · · Score: 4, Funny

      "All tools are hammers. Except screwdrivers which are chisels."

      --

      "Nature doesn't care how smart you are. You can still be wrong." - Richard Feynman

    8. Re:Polyglot by Lord+Ender · · Score: 4, Insightful

      If I were your boss, I would hire an intern and have him rewrite your apps from scratch with a single, maintainable language. Once he is done, I would hire him for half of what I pay you, then give you the boot. Job security through incompetence?

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    9. Re:Polyglot by dickko · · Score: 2, Informative
      (Hmmmmm. What the hell is "Moo"?)

      I'm guessing he probably doesn't know either. More likely this is what he meant:

      "I'm going to mention a lot of obscure project names so you'll think that (a) my kung fu is stronger than yours and (b) my penis must be huge!"

      As to your question I found this:

      MOO stands for "MUD, Object Oriented." MUD, in turn, has been said to stand for many different things, but I tend to think of it as "Multi-User Dungeon" in the spirit of those ancient precursors to MUDs, Adventure and Zork.

      MOO, the programming language, is a relatively small and simple object-oriented language designed to be easy to learn for most non-programmers; most complex systems still require some significant programming ability to accomplish, however.

      For more info, http://mirrors.ccs.neu.edu/MOO/html/ProgrammersMan ual_9.html#SEC9

    10. Re:Polyglot by SeventyBang · · Score: 2, Interesting



      And...ASP is not a language.

      You can write for ASP using PHP, PerlScript, JScript, oh, and what those with an overwhelming trait of ignorance presume ASP to be: VBScript.

      It's no more difficult to write an ASP-based website using the other (non-VBScript) languages than it is VBScript. And for that matter, those are the scripted languages. You could code in practically any language you choose if you can compile it and plug it into IIS appropriately.

      What has seemed to be an interesting pattern is those who write IIS|ASP web sites and are wearing blinders - believing VBScript is the only tool they can use, generally write slow, sloppy sites. It doesn't mean VBScript alone makes the site projects so bad, but the people who are so shortsighted seem to not fully comprehend the architecture they're dealing with. These are the same people who think they've invented something no one else has thought of: stashing various ADO objects in Application() and Session() variables. Almost without exception, if you sit down with access to source code on a poochy site and grep for "Set Session" or "Set Application", you'll see a slew of hits. And the reason those two statements will appear is because the only people who do those things are VBScript-only people. Oh....anyone whose code which contains such statements should be taken out back, have their peepee whacked, then die a death of a thousand cuts in return for the grief they cause the users of their web sites.


    11. Re:Polyglot by mrlpz · · Score: 2, Insightful

      "As many as possible. Use PHP for the front end, Perl for input parsing, Euphoria for the graphics, JavaScript on the client-side, Moo for the database and Python for the glue to hold things together. Every language has strengths and weaknesses."

      The above statement is PRECISELY why the state of software development across this country is as it is......I nominate this person as the FIRST person to vote OUT of a Software Engineer's Union when it comes down to that to protect the state of the business that the politicians and the beaners won't. It's precisely because nimnuls like this abound across this country that we're in the state that we're in. This is why HR departments are the hell holes that they are today. Because no one in their RIGHT MIND would think that ANY solution like this is truly viable.

      I don't remember who to credit with this ..but it DEFINITELY applies....

      Just because one CAN do a thing, means that one SHOULD do a thing.

    12. Re:Polyglot by FredFnord · · Score: 2, Funny

      Who has wood bits anyway?


      I'd have to guess it would be people who got theirs shot off in the war.

      -fred
      --
      Sign #11 of Slashdot overdose: You see the phrase 'moderate Republican' and you wonder if that would be a +1 or a -1.
  2. Perl. by Anonymous Coward · · Score: 5, Funny

    For everything.

    1. Re:Perl. by hahafaha · · Score: 2, Insightful

      I absolutely agree. The only danger with Perl is speed. Perl is not the fastest language, but unless your web application needs speed, Perl will work 99 percent of the time

    2. Re:Perl. by Samhain138 · · Score: 2, Informative

      mod_perl is fast enough.
      It's also fast enough for Amazon (they use mod_perl with HTML::Mason AFAIK).

    3. Re:Perl. by jadavis · · Score: 2, Insightful

      We're talking about web applications here. I'm a great fan of C, particularly for manipulation of binary data and so forth, but your post makes no sense.

      You would have to be doing something quite unique as far as web applications go for perl to be different speed-wise than C. Web applications are basically text processing and database queries (usually). Perl has highly integrated, optimized text processing routines that even a good C programmer is unlikely to match without years of development. And database queries aren't going to be any different at all... they just depend on the database.

      Next, why do you say that perl is fast with arrays and slow with files? If you mean appending something to the end of a list in RAM (maybe a microsecond) is faster than waiting for a disk seek time (millseconds), well, duh. That is not language-dependent at all.

      If that's not what you meant, it makes no sense either. Perl is designed and optimized for processing text and files. Perl's arrays are designed for flexibility, not speed.

      And why did you ask what the application was? It's a large scale web application. You can infer a lot from that. Lots of text processing, use of many libraries, validating user input, database queries, and caching. Maybe some image processing. Lots of security concerns.

      The obvious choices here are Java (many highly developed web frameworks, many libraries, many security features) and then PHP, Perl, Python, Ruby (which might add rapid application development to that list). C/C++ would be special purpose. Anything else is a platform-dependent solution that's an "all or nothing" approach.

      I think most people would agree with the above statement, and the discussion should be mostly within that context. Not whether or not you can use C to marginally improve performance doing something that a web app doesn't need to do.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
  3. Perl? by hanshq.net · · Score: 2, Interesting

    Perl is also a nice choice. Sites Running mod_perl

    1. Re:Perl? by rascal1182 · · Score: 2, Informative

      Perl is a write-only language

      O, if only mod points hath I.

      AC is right. Perl is not the best choice as far as upkeep goes. This is especially true if you get those l33t p3rL haXX0rzzZ who feel the need to program in circles.

      What is a better language than perl? Why, Ruby! (and not just because of Rails) However, for large projects where performance may be a significant factor, the answer for many of the back-end logic stuff would be something more like C/C++.

      I agree with many other people posting. The language itself is not important. Good design and good people are what leads to good code. The language is only a tool.

      --

      "Yarrgh! I be just a paintin' of a head..."
    2. Re:Perl? by rascal1182 · · Score: 3, Insightful

      Ruby is another write only language if you dont know it (actually arent they all!).
      This is I presume simple example code. God only knows what kind of code a ruby "haXX0rzzzz" would produce:


      The thing about this is, skilled Ruby programmers (that I've seen) produce beautiful, simple code, devoid of silly things like conditionals. These programs aren't hard to understand.

      OTOH, the Perl mentality seems to be "I can do that in fewer keystrokes!"

      These are obviously over-generalizations. I have seen good Perl code and lousy Ruby code. I just think that Ruby is more condusive to good code (personal preference, really).

      --

      "Yarrgh! I be just a paintin' of a head..."
    3. Re:Perl? by VGPowerlord · · Score: 2, Interesting
      I do some Perl programming, and I try to avoid the "I can do that in fewer keystrokes!" mindset. The only exception to that is using the ternary operator to set variables that could only have two possible values based on a condition. Another thing I hate seeing in perl is this:
      sub change_it() {
      s/something/nothing/i;
      return chomp;
      }
      This sub is oversimplified, but it isn't immediately obvious to a non-Perl coder that the substitution and chomp are happening on the first argument to the function. The same goes for the "diamond" operator <>. It's not immediately obvious that an empty diamond operator works on STDIN... unless @ARGV is populated, in which case it works on those instead. Which probably isn't what the author intended.
      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    4. Re:Perl? by Fjornir · · Score: 2, Interesting
      Your point about the default operands is well received -- but it's a handy feature included in the language primarily to support a specific scenario: one-liners. A small change in your mindset will help you tremendously with these -- think about Perl as being rather like an RPN calculator.

      As to the diamond operator it has an ecological niche which is part of Perl's philosophy of cooperation -- in this case the cooperation is making it easy to write Perl programs which exhibit similiar behavior to a whole slew of unixish shell utilities. Say you wanted to make a special kind of 'cat' utility -- the diamond operator would prove quite handy for this.

      In both cases these default behaviors are there to make certain sorts of tasks easier to perform with Perl. Use them when appropriate. Use the more explicit longhand format when appropriate.

      I'm pulling for you. We're all in this together.

      --
      I want a new world. I think this one is broken.
    5. Re:Perl? by rascal1182 · · Score: 2, Interesting

      This thread is really starting to make my point for me. Perl is just too idiosyncratic. There's too much to remember, and I'd quite frankly rather spend my time thinking about design problems and algorithms than niche features.

      Yes, there are some nice features for writing shell utilities (which is where Perl should be). But if we're talking large scale apps, my thoughts always go to object orientation, when things get more complex than processing text and command line options. Don't go telling me that Perl has superb OO features.

      As much as webtrash gets a bad beat, developing a good application is a really complex problem, simply because of the limitations of the web.

      I swear I'm done. I'll go piss off some Java people now, unless any Python junkies want to step up (I haven't yet seen much of that yet, and I'm surprised)...

      Also, your sig is awesome.

      --

      "Yarrgh! I be just a paintin' of a head..."
    6. Re:Perl? by Fjornir · · Score: 2, Insightful
      This thread is really starting to make my point for me.

      I dunno. Unless your point was that you shouldn't use features of a language you don't understand I don't think this made your point at all.

      Perl is just too idiosyncratic. There's too much to remember,

      Funny that... Once you understand the key philosophies which made Perl the way it is, it doesn't really seem that odd -- and given that its backgrounds are in UNIXish operaring environments and C programming culture it maps to my own experiences quite well. As to the "too much to remember" I'd answer, "No. Not really.". It's neat that a lot of the one-off stuff is there but you don't really need to commit it to memory.

      and I'd quite frankly rather spend my time thinking about design problems and algorithms than niche features.

      Hm.... I don't spend my time thinking about the niche features at all. I spend my time looking at how to write the program and then writing the program. Take the comments about the diamond operator, for instance. I know it's there, I know I can use it if I want to, but until VGPowerlord brought up its magic behavior in the no-filehandle-given case I hadn't thought about that aspect for... Oh, six years.

      And that was just correcting a newbish misunderstanding about the language -- if you know of a language where new programmers don't make any mistakes or misunderstand anything I'd love to learn it.

      Don't go telling me that Perl has superb OO features.

      Well, you don't want to hear it so I won't say it. I will say that Perl's OO mechanisms are quite nice and dovetail quite simply with the way Perl does everything else. For sharp contrast look at how C++ handles OO behaviors.

      I swear I'm done. I'll go piss off some Java people now, unless any Python junkies want to step up (I haven't yet seen much of that yet, and I'm surprised)...

      Well, if you were trying to piss someone off I think you failed miserably. You made well reasoned arguments and presented them without being inflammatory. I happen to disagree with you but that's not enough to piss me off.

      I'll close by saying that the important thing to me about Perl isn't if it's the perfect programming language or not. No, the important thing is that it let's me do the work I need to do quickly and easily while I get paid a handsome sum to do something I enjoy.

      --
      I want a new world. I think this one is broken.
  4. Who do you have? by rob_squared · · Score: 3, Interesting

    Smarter people than myself have said it, if the people you have know a certain language, use that, don't force them to use something else even if it is conceived to be better. Now if you're going out and specifically hiring people for this project, things get a whole lot more touchy-feeley and you'll be forced to do much research. But then again, you're probably expecting to do a lot of that anyway.

    --
    I don't get it.
  5. WebObjects by lightningrod220 · · Score: 5, Interesting

    Apple uses WebObjects for its online store and the iTunes store. Consider that those go under a lot of stress. Those seem to be the biggest examples of its use, so I don't know what kind of performance it does in other situations. But for an all-around package, it seems to be pretty good.

    1. Re:WebObjects by Pius+II. · · Score: 2, Interesting

      I started using WO last week, and I have to say, it's great. I was able to go from "I don't know what a database is" to deploying my own Java client for my web page interface in about two hours. Of course, knowing Cocoa, Cocoa Bindings and the corresponding patterns helped a lot.
      BTW, according to the blurb on the (German) Apple home page, other large users of WO include the Deutsche Bank, O2, Consors, Bayer and T-Systems.



      Fuck T-Systems!

    2. Re:WebObjects by FlyerFanNC · · Score: 2, Interesting

      I've looked at Ruby on Rails, and I'd love to use it because I *love* Ruby. My problem with Rails is its poor Oracle support. This may have changed in the couple months since I checked it out, but it doesn't seem likely (to me anyway). The impression I got from the design of the database API is that it's very MySQL-centric and provides little flexibility for databases that do things in other ways. Unless the API itself changes, I don't see how it could adequately support Oracle, and for me, poor support for Oracle is an automatic disqualification.

  6. Java Java Java! by FortKnox · · Score: 4, Informative

    No question about it!

    performance, scalability, extendibility, cost of development (man-month), availability of libraries, cost of libraries, development tools

    Performance? Assembly will give you the best performance followed by C and C++. All three of do not have that great of support for web apps..
    However, Java is almost exclusively being used for large enterprise websites. Its powerful enough to handle the big jobs, and using the appropriate app server will give you great performance.
    Cost of development is heavy in initial development, but pays for itself in maintenance. Most libraries and APIs are free in java (struts, spring, hibernate, tapestry, etc etc etc...). I'd say they are second to perl in terms of freely available and powerful libraries and APIs.
    Development tools? Just check out the (free!) eclipse platform.

    In my mind there is no question that Java (more specifically J2EE) is the best option for general large scale enterprise applications.

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    1. Re:Java Java Java! by Surt · · Score: 4, Insightful

      Actually, odds are that hand written assembly will underperform compiled c these days. Hiring or training people that can write better assembler than a modern compiler is very very difficult.

      But for web development, Java is generally the right choice for the backend. Lots of competent people available who will require no learning curve. The support tools available for java on the backend are also clearly the best right now, as you pointed out (hibernate etc.). The tools for working in java are also a step ahead of anything else right now (idea and even its slightly retarded younger brother eclipse are both way ahead of the tools for any other language).

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    2. Re:Java Java Java! by Rakishi · · Score: 2, Insightful

      Just as difficult as was writing assembly back in the 60s and 70s?

      Probably a lot more difficult, CPUs are a lot more complex (to make them faster, just look at the transistor count) and have more instructions/quirks. To get the most speed you'd need to know most of them I assume, since that nice looking instruction which seems to do just what you need may actually be slower than using 5 other instructions.

    3. Re:Java Java Java! by drgonzo59 · · Score: 5, Insightful
      You are right, performance from the language point of view is won by assembler, but often it is the choice of the algorithm that will make the big difference. A bubble sort in assembler of 1 million items might be slower than a quicksort of the same million items in python.

      Often when someone asks the question "what languages do you know?" or "what languages are the best?" it shows a lack of CS background and experience. The right question is "what programming paradigm would you use?" or "what programming paradigm is better?" (Of course when you come down to a specific problem, then the choice of libraries might determine the language, but the original poster only specified "large web application" as the requirement so talking about a specific language is pointless).

      The difference between the two questions underlies the difference between the two types of education most programmers have. Some have gone to 4 year colleges and got a "Computer Science" degree, while some learned a language in their spare time, or went to technical college. The people from the technical college will know just one language and ask others what langues are the best, what languages they use etc. To them learning a new language hard. What a CS degree teaches (or should teach) is different programming paradigms - procedural, functional, object oriented, along with an algorithms and data structures. So if someone knows how to think in terms of objects when they solve the problem they can program in java, c++, python, ruby and other object oriented languages.

      I used C++ in college, then I learned Java, now I use primarily Python. All I had to do is learn the syntax and some of the common library functions -- all can be done with a good reference book and/or Google in a couple of weeks.

      Or if a problem can be better solved with a functional approach, I would use Prolog or Lisp (you can use Lisp for websites too!).

      So, I think the original question should have specified the problem more exact or ask about what paradigm would be better. Rather than give a general requirement ("large web application") but then then ask for a specific language. This is bound to lead to nothing but arguments of why everyone's favorite language is best and that's about it.

    4. Re:Java Java Java! by Surt · · Score: 4, Insightful

      Actually, if your hand written assembly doesn't look like compiler generated assembly, you're probably missing out on things like multi-functional unit parallel scheduling etc. The number of people who can code in a way that will feed instructions to a modern cpu successfully is very small.

      Writing efficient assembly code today is at least 3 or 4 orders of magnitude harder work than it was in the 60s or 70s, and there are far fewer experts available to hire today than there were back then. There are maybe 3 or 4 major computer game developers still doing hand assembly optimization these days, and those guys would be extremely hard to hire away from their current jobs. Most games are just developed in c, and are bound by the performance on the video card anyway, so that optimization on the CPU just isn't that important any more.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    5. Re:Java Java Java! by timeOday · · Score: 2, Funny
      Writing efficient assembly code today is at least 3 or 4 orders of magnitude harder work than it was in the 60s or 70s
      4 orders of magnitude - so if it took a whole week to master assembler back then, it takes 192 years now? I'm just glad today's experts had the foresight to begin studying assembly back in the year 1813.
    6. Re:Java Java Java! by Surt · · Score: 2, Insightful

      The problem is, if you're 'just' writing sse/sse2 etc, you're missing out on potential parallelism. You want to deliver some of your work to the sse, some to the main adders, etc. I've done some of this, and it is fairly complicated work. Again ... I think this is sufficiently complicated that trying to find well qualified people to do it is going to be pretty challenging. And we started out with the premise that we were writing a whole program in assembler, rather than say just optimizing in a narrow area, where you can probably afford to try a large number of different possibilities and actually benchmark the different options to prove whether or not you've succeeded.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  7. The only thing that counts... by Qui-Gon · · Score: 3, Insightful

    And you said it...

    Maybe language choice is irrelevant, only good people (developers) matter?

    --

    We are blind to the Worlds within us
    waiting to be born...
  8. Consider the employment market by Brento · · Score: 2, Insightful

    You're using examples of Ebay, Google and Microsoft's web sites as your "large-scale" web app description. If you truly do want to build something as large-scale as that, then you're going to have a lot of hiring to do. Take a look at your local market - or even better, place ads for architect-level people in each of the languages you're considering. See what kinds of people you get, and that should weigh into your decision.

    --
    What's your damage, Heather?
    1. Re:Consider the employment market by Tablizer · · Score: 2, Insightful

      You're using examples of Ebay, Google and Microsoft's web sites as your "large-scale" web app description. If you truly do want to build something as large-scale as that, then you're going to have a lot of hiring to do.

      If you are building something that large and asking for advice from slashdotters, you have faaaaaar bigger problems, dude :-)

  9. Seconded! by XanC · · Score: 2, Informative

    It does it all, and it values the most expensive component of software (for all but the biggest Web apps): programmer time.

    1. Re:Seconded! by Tablizer · · Score: 2, Interesting

      It does it all, and it values the most expensive component of software (for all but the biggest Web apps): programmer time.

      I don't know about that. Perl has a reputation for being a "write-only language". Even if initial development is faster, long-term maintenence may be at risk. It is not that Perl is inherently tangled as a language, it is just that it seems to attract the kind of people who *like* obfuscation, for unknown reasons.

    2. Re:Seconded! by cahiha · · Score: 3, Insightful

      It does it all, and it values the most expensive component of software (for all but the biggest Web apps): programmer time.

      Programmers also have to debug and maintain that software, and that makes Perl one of the most wasteful languages in terms of programmer time.

  10. ASP.NET w/C# by gfody · · Score: 2, Insightful

    this should've been a survey

    --

    bite my glorious golden ass.
  11. all these new languages are hype by Dysenteryduke · · Score: 5, Funny

    For large scale applications, java, c/c++, perl, PHP just don't cut it. You should really check out mod_fortran. Everything you love about fortran with none of the hype.

    1. Re:all these new languages are hype by deaddrunk · · Score: 5, Funny

      Even IBM COBOL has web extensions and an XML parser these days; I've used them to generate reports.

      --
      Does a Christian soccer team even need a goalkeeper?
    2. Re:all these new languages are hype by Ryosen · · Score: 4, Funny

      >>Everything you love about fortran with none of the hype.

      I read that as "Everything you love about fortran with none of the hope."

      Fortran? Seriously, what's the matter? Was Emacs not available?

      Just because you can, doesn't mean you should.

      --

      Ryosen
      One man's "Troll, +1" is another man's "Insightful, +1".
  12. Where are the best practices for each language? by Alderete · · Score: 2, Insightful

    I've been getting into Ruby on Rails recently, and am most excited by how Rails makes it very clear what the "best practices" for organizing and building your application is.

    I have long despaired of learning that same information for PHP (with which I have much more experience). I've not yet found a book or other documentation that provides a concrete approach. And looking at existing large-scale projects, e.g., WordPress and others, reveal a myriad of different philosophies. It leaves developers basically trying different things out on different projects, and picking up their own favorite best practices as they go along.

    While it's great that the languages are so flexible, well, sometimes it's nice to be guided to a known solid approach. It leads to consistency among and across many developers and time. This makes it easier for new developers to join or take over a project, or even for the original developer to do maintenance on components which were written long ago.

    So, where are the recommended approaches for organizing and constructing large-scale applications for PHP (and Python, etc.)?

  13. Python by g-to-the-o-to-the-g · · Score: 3, Informative

    Python is the way go to. For anyone who's built custom sites based on Zope, I think they would agree with me. Python is really easy to use for building big apps for use in web stuff, and Zope provides an easy-to-code-for application server.

  14. Lotus Domino by Kenja · · Score: 5, Funny
    Hell, if I have to suffer so should all of you.

    (yes I program with this monstrosity of a system)

    --

    "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    1. Re:Lotus Domino by legLess · · Score: 2, Funny

      Suddenly, your sig makes much more sense.

      --
      This isn't as much "normalization" as it is "don't take so many drugs when you're designing tables."
    2. Re:Lotus Domino by LS · · Score: 2, Funny

      run away from your job... NOW!!! If you are able to get a functional system out of domino, you are definitely skilled enough to use a real environment to build web-apps. run now before your resume is subsumed!!!

      --
      There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
    3. Re:Lotus Domino by tigersha · · Score: 2, Informative

      Holy mother of Jesus. I have to program that heap of tripe for years now. And my boss decided to write a large system in Notes with a mathematics student and I had to take the project over. The last five years have been hell.

      Notes's web part is not too bad and its unbeatable for putting up a really quick form for people to use if the looks are not too important but the database is utterly atrocious.

      the other problem with Notes is the horrifying development environment. You cannot, for instance, search your code and while it throws out line numbers in errors you cannot see them! And it does crap like no functionn (despite being in different modules) mmay have the same name in a system. The linker does not work. It does not support CGI hheaders properly. And you have to predefine ANY search through the database, there is no dynamic query language like SQL. This is probably the worse part of the whhole piece of shit.

      Notes as a mail system is not too bad however. It really handles the case where mmails are not sent correctly quite well, because it remembers the mail it send in a database.

      The notes client itself is not too bad, there are things it does OK.

      Anyways, stay away. Far, far away. Don't be like me and be trapped in this cesspool of horror.

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
  15. Depends by boner · · Score: 4, Insightful
    What you are asking is a dilemma that has been around since the invention of different programming languages. My personal opinion is that the best investment of your time is designing the web-app itself. Once you understand the feature set you require/desire then it makes sense to start looking at how the feature set requirements map to the available languages from a development and performance point of view.

    Most people tend to forget to take a productivity point of view and let themselves be guided by whatever is available or what's cool. If you follow a productivity approach it will help you make the trade-off decisions between interpreted languages like PHP and compiled languages like C/C++, with ASP and Java somewhere in between.

    There is a balance between development and production, when you go live and your web-app is well-designed it should be easy to add additional hardware to compensate for performance issues (server is about US$ 2000,- , or the equivalent of 10-20 hours of developer time.)

    The single most important piece of advice after recommending that you spend more time on designing the app: don't get married to the language. Be prepared to use PHP to develop quickly and understand what works and what doesn't for your web-app. Once you have solved the usability bugs, investigate how you can drive efficiency by choosing a different language or not.

    There is no template for what is the best environment, only your common sense, and oh... did I mention that you should spend more time designing your app?

    1. Re:Depends by morten+poulsen · · Score: 2, Insightful

      it should be easy to add additional hardware to compensate for performance issues (server is about US$ 2000,- , or the equivalent of 10-20 hours of developer time.)

      I guess that you are NOT a system administrator?

      "No, I don't need to think before I code, you can just buy more servers. I also killed the database server? Can't you just buy a larger database server too?"

      God damn programmers.

  16. Depends on what you want to do... by Foofoobar · · Score: 4, Insightful

    I use PHP myself because it focuses on one thing and doesn't get distracted by trying to do more than it's build to do... that being, serve dynamic web pages.

    Sure you can use it to dynamically generate images, PDF's and alot more but these things tend to slow down and detract from what it is meant to do and should be handled by third party apps preferably on a different server that way you separate your processes and keep PHP focused on it's task.

    Plus with the improvements in the ZEND engine and it's object oriented programming, PHP is now comparable and even sometimes faster than Java.

    People will say that it doesn't scale but they base this opinion on a preset prejudice or on the scalability of the underlying architecture. But PHP's engine is actually more compact than the JVM because it has less to focus on and thus can scale along side Apache, the entire way.

    And with tons of larger companies moving to PHP, it has proven it can handle the load.

    My only complaint though is developers who try to do EVERYTHING in PHP. With all the added modules, it does have the potential but do you really want to waste processing power letting PHP handle all these extra tasks? Use PHP for dynamic webpages and any added processing you need to do, I suggest moving to a secondary app preferably built in C/C++ or even Java. That way you get the most bang for your buck.

    --
    This is my sig. There are many like it but this one is mine.
    1. Re:Depends on what you want to do... by Space+cowboy · · Score: 4, Informative
      People will say that it doesn't scale but they base this opinion on a preset prejudice or on the scalability of the underlying architecture.

      What people mean by 'it doesn't scale' is that it doesn't scale. Not that it doesn't run fast enough or have enough functionality for pretty much anything at the small-to-medium sized website...

      I have a set of 200 or so websites all running though a self-built PHP template-based content-management system (hey, this was 8 years ago, they were rare then! :-) that has stood the test of time admirably. It's only got a few million pages in it's CMS, but it's pretty cool:
      • Typical page-creation is ~0.01 secs for complex pages
      • Copes with (currently) several million users
      • Handles email list management (opt-in only, don't flame me :-)
      • Separates the content from the formatting. Formatting is by recursive template instantiation.
      • Can embed run-at-page-delivery-time PHP modules as CMS elements
      • Has an Ad-server (flash, DHTML or images) which guarantees ad-placement in slots at a pre-paid rate
      • Copes well with binary data (PDFs, images, movies, etc.)
      • Handles image galleries from both user/admin perspective
      • Has sections where extranet companies can "own" part of the sites
      • Complete messageboard system, any number of boards, skinnable.
      • Manages products, shopping basket etc. and integrates with online purchasing providers
      • Provides newsfeeds in a variety of formats (RSS, XML via FTP, etc.)
      • Provides a *fast* fulltext search that uses phrases, booleans, etc.
      • Layers facilities on top of search (eg: site-editor can embed results of a search into an email (s)he composes. Preview, then deliver to opt-in list.)


      And will all those features it's still not scaleable. I can't split the system over multiple webservers and begin a transaction on one webserver, have a hardware failure, and have it complete on a different webserver. ..

      I server about a million page-impressions a day (less at weekends) so I'm hardly "big iron", but at the moment it's all serving from a single machine(*) with a manual backup ready-to-go. We're (probably) about to triple our daily throughput (time to splash some cash :-), so scalability has become more important, and I'm looking into the best way of doing this.

      I can't have the above level of scalability but I can divide up the work over (say) 4 cloned webservers, and use round-robin DNS (low TTL) or transparent-proxy load-balancing to share the load. Then at least if one of the machines goes down (not the proxy ;-), I can have it automatically react and recover.

      We're probably going to have 2 database servers as well - one in slave mode, one in master mode (all writes to the master, because we use MySQL). The single point of failure then becomes the proxy gateway (because RR DNS is a bit of a pain), so we can have a spare standing by - the configuration of a load-balancing proxy is pretty trivial, and doesn't depend on anything else, so it can be sitting ready to run and swapping ethernet patch cables ought to be all that is necessary.

      And that's about as "scalable" as I can make it - not very. All I'm doing is duplicating hardware for speed and reliability. I can have robustness against a machine dying, but that's about as far as I can go. True scalability allows the operation the machine was doing when it died to complete successfully, and PHP ain't there (yet). I guess you could implement it in s/w using lots of state tables, and perhaps get 80% of the way there, but it's an add-on not a built-in, and not a complete solution. Better to go with something that works if you need it...

      Just MHO.

      Simon

      (*) It is a bit of a beast of a machine though :-)
      --
      Physicists get Hadrons!
    2. Re:Depends on what you want to do... by unixbugs · · Score: 2, Interesting
      I probably write some of the ugliest code you've ever seen in any language, and using PHP, JavaScript, and MySQL with XMLHTTPRequests made me the sole developer of an intranet server for use by over 100 employees around the world.

      OK, not large scale, but large enough to be a major pain in the ass when features and departements need to be added - but that was my fault for coding first and then checking to see if it works at all. Ive rewritten the thing a couple times since and can say that the system is now modular enough to where functional additions are a breeze.

      Knowing nothing about any of these 'languages' I whipped up a beta in about a week with over 2000 lines of code. Its a real monster now with around 7500 lines of code, and does everything from manage employee information to providing a web based time clock and report generator. It even does some graph generation for employee performance analysis and has levels of logins where 'managers' can use the CMS front end to edit the site dynamically. Why would I go looking else where and waste time trying to implement a new system or language when this one has all these goodies right out of the ./configure?

      Employee records, procedural and technical documentation, timeclock stuff, schedules and search features, its all there in no time. The idea was to replace the endless stacks of paperwork on my immediate supervisors desk, and now we wonder how we got along without it and why we didn't get someone to write it sooner.

      If this does not say anything about the flexibility of these languages I don't know how to. My point is that if I can do this, anyone reasonably technically inclined can.

      As I dig into the world of web based application design and engineering I'm finding more and more possiblities for how to handle events and situations where data should be presented and handled in a specific manner to and from the user. The PHP language is AWESOME for this kind of stuff , and as time progresses its track record will only improve.

      I like telling people about this because it lends credibility to a language many of our customers don't see as a viable solution to any serious web based business endeavor. Its all in how you implement it, obviously. If I had to write this thing in C, Bash, or God forbid, Perl, it would have been written so, but since PHP was available and my initial attempt at managing user logins to a small test site was a great success, it was all down hill from session_start();

      --
      You are about to give someone a piece of your mind, something which you can ill afford...
    3. Re:Depends on what you want to do... by esconsult1 · · Score: 4, Informative
      Wow!

      Then I guess you never heard about using database driven sessions. The way how you've designed that bad boy, it would'nt scale in any language.

      Here's what we do:

      • 8 Apache Webservers
      • 3 Million pageviews per day
      • Distributed PHP sessioning (Postgresql based)
      • PHP module
      • Postgresql (no worries with MySQL write locks)
      Scaling? We add new machines in the mix, tell our load balancer about the new machines, and we've scaled linearly. A machine goes down? The load balancer redirects to another machine and the session continues without a beat.

      Bottleneck? The database, but then you throw big iron at that.

      Look, the web is stateless, if applications are designed from the get-go realizing that fact, heck, you can get a shell script sitting in cgi-bin to scale with your server pool.

      There's absolutely nothing in PHP that inherently causes it not to scale. Sure, other languages have easier and sometines better features built in, but if you're already using PHP, implementing those features are usually worth the few programming hours of effort instead of switching to another language/platform.

  17. Let your developers decide by Dominic_Mazzoni · · Score: 2, Insightful

    You didn't make it clear who is doing the development.

    If you're doing the development by yourself, then obviously you should weigh the choices and pick the language that will work best for you. Development time, for example, is highly dependent on how well you already know the languages.

    However, if you already have a developer, or a team of developers, to do this development, then whatever you do don't force them to use what you think is the best language. That's a guaranteed way to lower productivity and morale if they think it's a poor choice! Ask them to make recommendations. Maybe even spend a couple of days prototyping various things in different languages first.

    One of the nicest things about back ends is that it doesn't matter what language you use (nobody can tell from the outside) and you can easily mix and match languages. There's nothing wrong with writing the majority of the code in PHP or Python for rapid development, but using Java or C++ extensions for a few of the computationally-intensive algoritihms.

  18. If you are a singlehanded developer by 00_NOP · · Score: 2, Funny

    Perl is a great choice. You can do anything with it and nobody else understands what your code does so they have to get you to maintain it :)

    1. Re:If you are a singlehanded developer by kraut · · Score: 2, Insightful

      The corrolary is that you have to maintain it, and you never get to do the fun new stuff.

      --
      no taxation without representation!
  19. Let me get this straight... by Anonymous Coward · · Score: 2, Interesting

    PHP is only popular because it's popular?

  20. Microsoft by minus_273 · · Score: 2, Informative

    Microsoft uses ASP (what else?).

    err, no. MS does not use asp, they use ASP.net. There is a BIG difference between the two. The former is VB and the latter is C#,VB.net,J#,managed c++ etc etc. basically any language that runs in .net

    --
    The war with islam is a war on the beast
    The war on terror is a war for peace
  21. PHP by AVryhof · · Score: 3, Interesting

    We have a small website (85,000 hits a day)

    So here's the rundown of what we use...
    CGI/Backend: PHP

    Client Side: Javascript

    Presentation: CSS/HTML 34 (Somewhere between 3.2 and 4)

    Then of course there is the PHP and static generated RSS feeds.

  22. Re:What about security? by jadavis · · Score: 3, Interesting

    Perl, Python, and Ruby are handy because they have an interface to C. You never find yourself without a module if you can just make a wrapper for C.

    Although I haven't tried it, you can get similar benefit from using Jython. Having two languages like Python and Java at your disposal has got to be a godsend for a large web app. I'm not sure if you still get to use C modules if using Jython.

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  23. Ruby on Rails by threaded · · Score: 3, Informative

    Ruby on Rails, try it, you won't want to use anything else. Ruby on Rails is just so sweet, just like the original Java alpha was all those years ago.

  24. Wrong by dereference · · Score: 5, Insightful
    Ajax asyncronously calls JAVA functions without needing a page redraw.

    Wrong.

    AJAX asynchronously calls any server-side technology without needing a page redraw. It could be PERL, ASP, or anything else that can respond to an HTTP Request.

    Please read the docs about Ajax before telling me something that has nothing to do with it.

    Please follow your own advice.

    1. Re:Wrong by Citizen+Gold · · Score: 2, Insightful
      Ajax asyncronously calls JAVA functions without needing a page redraw.

      Wrong.


      Uh... you fail to explain how this statement is wrong. It is in fact correct, unless you're telling me that Ajax can't asynchronously call server-side java code.

      Just because you're on the internet, doesn't mean you get to be a pompous ass.
      The emphasis was put on the word JAVA. I also read it as the commenter thinking server side Java was the only option.
  25. Python, Zope, and Plone Are Good by blueZhift · · Score: 2, Informative

    I still use PHP for a lot of personal work and quick stuff, but I've been leaning more and more on Python, Zope, and Plone for building stuff at my day job. If you need to quickly and easily implement role based security, Zope makes it drop dead easy because it's built in and through ZEO, zope apps can be highly scalable. Of course as with most things, use whatever technologies get the job done. For example, my Zope apps live behind an Apache server that I use for SSL as well as access control.

  26. Our standard enterprise stack these days by BigGerman · · Score: 5, Insightful
    (for those who actually care to get something out of the door)

    Java:

    front end - Tomcat running JSPs (JSTL or Velocity for templating)

    in the middle - Spring and Spring MVC

    Closer to database - Hibernate.

    Ideally, everything running in same JVM. Add more servers for scalability front-ending them with load balancer with sticky sessions.
    No J2EE fluff, easy to find people, good productivity.

  27. Language is mostly irrelevant by PhotoBoy · · Score: 2, Insightful

    It's been my experience that language is mostly irrelevant when building a large, scalable web app.

    There is certainly a difference in performance between various web languages/libraries but the most important aspect is how well you design your app to scale across multiple servers. Even if you were to spend years writing the most tightly coded app in Assembly that is 99.9% efficient you will still reach a point where you need to use more than one server.

    As long as your app is designed with scaling to multiple servers in mind the choice of language should merely be down to what your team is best able to work with and support. It's no good doing everything in ISAPI just because eBay does it if your team is mainly experienced in Perl. Building the app to work well with multiple servers that are clustered according to their function (e.g. a DB cluster, load balanced webservers, large scale storage solution, etc) is the best way to ensure a scalable solution. Picking a database server for example that easily allows you to add a new machine to the cluster should be more important than language choice. Picking high availability software that doesn't require downtime every time you need to add a new server is very important.

    Maybe I sound like I'm advocating writing sloppy code and just throwing lots of servers at the solution, but it's worth considering how today's top of the range server will be the cheapest low range machine in a few years. This means you can either pile high with cheap boxes or buy fewer but more powerful servers which have double the capacity of the cheaper server. It's certainly the solution that's worked well for Google...

  28. ASP.NET... no, really by adolfojp · · Score: 3, Informative

    Large standard library
    Excellent MVC model
    Integrated caching capabilities
    You can compile your libraries before uploading
    Excellent Web Services model
    Free tools
    Works on Linux (through mono)
    Large third party support
    Very Fast
    Easier to use and deploy than J2EE :-P

    1. Re:ASP.NET... no, really by jtwJGuevara · · Score: 2, Informative

      Pardon my ignorance here, as I'm a very junior developer who's only written small time apps using .NET and has dabbled in Java, but what exactly is so hard about deploying a .NET app compared to one developed for J2EE.

      A vice-versa question could be asked of the grandparent as well, since neither of you provided any factual evidence either way.

    2. Re:ASP.NET... no, really by Gta-Klue · · Score: 2, Informative

      Actually, not it's not. I support a somewhat large scale site for a stock firm, and we average thousands of hits a day. It's built on ASP.NET, and SQL Server on the backend.

      To deploy any changes, is just a matter of dropping 1 or 2 dll's into the bin directory and viola, it's deployed. Tell me again how hard that was?

      --
      This is PURE EAU DE TROLLETTE
      09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
  29. Please stop insulting python. by Some+Random+Username · · Score: 4, Interesting

    You can certainly make a large, high traffic site in python. But not with zope. Zope is brutally slow, and the only thing you can do about it is shove a cache infront of it, which does nothing to help speed up user-specific content.

    Just use a decent python web framework with a real webserver, zope is a waste of time.

  30. Brainfuck! by Tablizer · · Score: 2, Funny

    Recommend Brainfuck to your company. Sure, they will eventually fire you when they realize what they got into, but you will go out with a hell of a snicker.

  31. Language != module by Foofoobar · · Score: 5, Insightful

    You are mixing up the language with the modules. There is a reason why PHP comes without all those additional modules... so you can decide what you want it to do. If you want to add all those modules to PHP and make it do all that, then you have to do it yourself. But the base install does not include them. In fact it no longer includes MySQL support in it and that too must be added as a module.

    As far as your opinions on PHP not scaling, tell that to IBM, Avaya, Hewlett Packard, Disney, Sprint and the others who get millions of hits a day using PHP. Seems to me if sites that get millions of hits a day can handle the bandwidth using PHP, that it JUST MIGHT be able to scale. :)

    And as far as worst security history, you again confuse bad programming with the language it is written in. For this analogy, C# and VB still hold that title. Just because the language allows you to make mistakes in your programming, does not mean it is the languages fault when you create a recursive function that loops perpetually.

    I suggest trying a course in logic; it makes your programming better and your argumentative rhetoric make more sense. :)

    --
    This is my sig. There are many like it but this one is mine.
  32. Code management by sterno · · Score: 2, Insightful

    Another aspect of Java for dealing with large sites is that it lends itself to cleaner code and better organization. PHP pages end up being a bunch of pages which means you get UI and business logic all entangled. In java, there's a lot of ways to avoid that mess and make a more organized and more readily maintained system.

    --
    This sig has been temporarily disconnected or is no longer in service
  33. The real problem in comparing Java and PHP by amarodeeps · · Score: 4, Insightful

    Java is called a language but in this context it is more of a platform which, frankly, is older, more robust and better thought-out than anything PHP has to offer--at this point. I believe PHP is great for small to medium scale web sites, but once you start to deal with the large structures that enterprise systems require, PHP is just not an option--if you want packages already available to you which are thought-out, mature and stable, like all the various J2EE solutions available.

    PHP very well may be faster for an individual page--but what are you comparing that to? Tomcat set up to use JSP? Well, there's a lot of infrastructure there that a PHP developer is probably not going to use for a simple dynamic page. And the fact is, PHP is incorporating a lot of 'heavier' OO features now whose effective use is debatable when considering web apps tied to the HTTP protocol--why build and tear down your entire OO structure every time you load a page? To do that intelligently you want an application server caching these objects...and then we start talking about Java and all the years it has on PHP there.

    So, I'm really just saying--some things are right for some projects, others for other projects. Choose wisely.

    1. Re:The real problem in comparing Java and PHP by mbyte · · Score: 2, Interesting

      I could not agree more. I used php extensively before and often laughed at J2EE as oversized and overblown for web sites. But i constantly hit the wall with every more compley web application. The fact that your goal is to build up your data structure as quick as possible only to display them and destroy them one moment later makes any real programming a pain. I even investigated in building PHP application servers, but they are far, far from mature. Most are just trying out the possibilities.

      Compare to java now, many new technologies emerging to make J2EE simpler and less painfull (no need to edit XML config files of 2k sizes just to display a simple page). One nice ones i found was wicket (with hibernate and possible spring in the middle)

      Still PHP has lots of uses, its enough by far for your average CMS. Use the right tool for the job !

    2. Re:The real problem in comparing Java and PHP by OpenServe · · Score: 2, Insightful

      ..why build and tear down your entire OO structure every time you load a page? To do that intelligently you want an application server caching these objects..

      Thank goodness somebody mentioned this. For this and other reasons, PHP is an architectural disaster when it comes to trying to write real world applications (vs. dynamic web pages and ultralight web apps like blogs, wiki's, etc.) PHP fanatics continually ignore the fact that their language of choice is nothing more than a glorified form of CGI. Indeed, PHP is great for doing CGI, but beyond that it's the most useless language on the planet. This is 2005, not 1995.

      The worst part is that, within the Open Source community, PHP has diverted enormous resources and man-hours away from Java in cases where Java is the obvious right tool for the job. As a result, we still have virtually nothing in the category of quality core business applications. (finance, accounting, payroll, ERP, CRM, document management, etc.) The distraction of immature Python has been to no gain either. I firmly believe that if the Open Source community had co-opted Java 5+ years back, nobody would be talking about .NET today and we'd be seeing far more large scale Linux/BSD rollouts across corporate America. That includes desktop rollouts too, because once your core apps are web-enabled, who needs Windows?

      ok.. off my soapbox. :)

  34. Programming language is NOT a success factor!! by koenkam · · Score: 2, Interesting

    The critical success factors for a large webapp are: 1. The programmers ----- The differences in popular OO web programming languages (Java, PHP, .NET) are really small. It's good programmers who make all the difference. Programming languages: - don't make scalable applications. - don't draft designs or requirements. - don't make code that is easily readable and maintainable. - don't create bugs or do poor optimization or create application bottle necks. These things are done by programmers. 2. Persistant data ----- For large-scale websites, speed is mostly determined by disk access. Database queries may take up to 50% of your total page execution time. Master databases can only handle a few hundred database writes per second and can easily become a bottleneck. Downloading uncached files can create 100% waits on your disks. Programming languages matter on large scale websites, but only after the point where the persistent storage problem has been fully addressed.

  35. Re:You are contradicting yourself. by gregmac · · Score: 4, Insightful

    Lets not forget that PHP has the worst security history of any language, there are constant exploits and there's nothing you as a PHP user can do about it.

    Constant exploits? For PHP, or for crapply-written content management systems (ahem, phpnuke) that happen to be written in PHP?

    CERT has issued two advisories for PHP itself: CA-2002-05 and CA-2002-20. Looking through the changelog I see only a handful of security fixes.

    Like most languages, it's possible to write unsecure code. I've seen code that executes stuff on the command line, right from a GET string. It's just as possible to write secure code.

    One problem with PHP is it's a simple language, and a lot of beginners with no experience pick it up and can use it to write applications. Knowing nothing about software development, or security issues, they tend to write bad, insecure code. This has nothing to do with the language, it simply has to do with the developers. If python or ruby came into incredibly widespread use (ie, available on pretty much any hosting account you can buy, like PHP is), then you'd probably see the same thing happening. It doesn't say anything about the languages, it's simply a matter of inexperienced developers writting bad code.

    --
    Speak before you think
  36. Re:The only way to hire a good architect by the+eric+conspiracy · · Score: 2, Insightful

    I wouldn't hire an architect

    I am a lead or senior architect for a medium sized software company - and I have a big problem finding/recruiting good architects. Internal candidates want to do it for all the wrong reasons- thier project manager is a jerk, etc. The good programmers really enjoy coding so they want to stay as programmers, and are afraid once they take on the role of architect they will be just paper pushers. The experienced 'architects' out there are almost all centered on business analysis these days, very few have enough code skills left to really be able to do a good job designing code.

  37. Python + PHP + XML-RPC by MikeFM · · Score: 5, Interesting

    A solution I like is to write a Python backend that is exposed to the frontend as XML-RPC. Then use the language your designers find easiest to work in for front-end coding.. usually PHP.

    Python is great for the backend because it has good namespace support which helps a lot for big complex programs. PHP on the other hand is well known and extremely easy for doing various web-scripting type tasks. I have a little PHP function that gets called by the PHP server for every page (without needing to be in the code exposed to the PHP coders) that simply passes the page inputs to Python over XML-RPC and puts the response into a global variable. Then the PHP coders jut display the results however needs to be done based on the inputs and outputs.

    Some nice benefits of such a split system is that it's easy to keep UI logic sepperate from application logic and it's easy to split your application up over multiple servers so that it can scale to any load. For example you might have two PHP servers, three Python servers, and a DB server dividing the load. Normal load balancing techniques work just fine for deciding how the machines talk to each other. Pretty nice to be able to just throw another server in where it's needed if you suddenly find a 9/11-type day where your site is getting unexpectedly high loads.

    Of course you can split your processing up in more levels if you need to. I like to abstract out all my queries into their own XML-RPC interface that sits in front of the DB so as to not allow direct access to the DB for security reasons. Anyone trying to hack the DB would have to use my stored queries and work through my XML-RPC interface rather than being able to access the DB directly. If your dealing with sensitive information it's just another layer of protection. If you have to access third-party systems that use some unstandardized method of communicating then it can help to keep your code clean if you create a proxy interface between those systems and your own that speaks XML-RPC. This way the code for speaking to that other system is a completely sepperate code base and your main code base is kept clean.

    --
    At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
  38. Are you sure about E-Bay? by psykocrime · · Score: 3, Informative

    saying that E-Bay uses ISAPI / C may be oversimplifying things. I see that some of their url's still include isapi.dll, which does suggest using ISAPI. But they had gone on the public record a few years ago as saying they were migrating to Java / J2EE, specifically IBM WebSphere software.

    http://computerworld.com/softwaretopics/software/a ppdev/story/0,10801,63692,00.html

    I would guess that they're actually using a mix of technologies. Any insiders have any insight they can share? Even anonymously?

    --
    // TODO: Insert Cool Sig
  39. Hmmm.... by einhverfr · · Score: 5, Interesting

    I actually like PHP for large-scale web apps. However, I agree that many PHP programmers do create unmanageable code. This is, however, a programmer issue rather than a language issue.

    I started writing HERMES (a CRM framework/app) in PHP and it is now over 20k lines and when I have time to add enhancements it will grow again. The code is incredibly manageable simply because the complexity of the application meant that I had to divide the code into four main areas (each handled in different sets of files):
    1) Main engine(s)/UI framework
    2) UI generation code/data input screens
    3) UI event handling code
    4) Core object logic.

    This way, if you want to change the user interface, you just change the user interface. System-wide changes get made in one place where screen-specific changes get made somewhere else.

    Everything is relatively well abstracted, so the code is very manageable.

    Now, other languages have very specific problems associated with them:

    1) Scripted languages in general: slow performance

    2) Compiled languages in general: Requires rebuild before changes take effect, so testing and retesting is slowed down.

    3) Java/.Net/Byte-code languages: Worst of #1 and #2 above.

    4) Python: Performs a little better than most scripting languages, but there are times when its reference-based structure can cause bugs to be very difficult to find.

    5) PHP: Many PHP programmers write readible but unmaintainable code.

    6) Perl: Many Perl programmers write maintainable but unreadible code.

    7) LISP: See Perl only even more so.

    8) ASP. ASP is only really useful in large apps when paired with COM objects written in C++ or VB. So you have the problems with a scripted language combined with the problems of compiled languages.

    But again, many of the worst issues are programmer rather than language issues. Then again, depending on your project, you may have to eliminate possibilities because of language capabilities.

    --

    LedgerSMB: Open source Accounting/ERP
    1. Re:Hmmm.... by sterno · · Score: 3, Informative

      But again, many of the worst issues are programmer rather than language issues.

      While that's true, each language has semantics that either encourage or discourage their worst behaviors.

      As far as Java in regards to your comments above. Java's scripted aspects are actually compiled into code and turned into byte code before run. So the first time a page runs, it will be slow because of conversion. Once run the first time it will be as fast as the compiled code.

      As far as the issues of compiled code, development evironments for java really make a lot of this process quite easy. If you make changes to your code that don't require changes to method signatures, just the chunk of code you modified can be re-compiled. In NetBeans, what I use, I just click a button, and my code is ready to test in less than second.

      --
      This sig has been temporarily disconnected or is no longer in service
    2. Re:Hmmm.... by MourningBlade · · Score: 2, Interesting

      6) Perl: Many Perl programmers write maintainable but unreadible code.

      7) LISP: See Perl only even more so.

      Hmm...having read quite a bit of code in modern common lisp packages, I'm going to have to disagree. For the most part, the code was quite readable and understandable. Some of it took a while to get the hang of (Aranaeda, for instance), but this was because what it was doing was large.

      That's the average. On the other side of it I've seen code of blinding clarity that expressed its intentions so straightforwardly that it was amazing. This was done using a system of macros to create the way to describe these things.

      On the lower end I've seen some lisp code that would make you puke, yes, but it's been by far the exception.

      I find that the ability to express things in an ideal way in common lisp and the fact that programming by that method is the easiest one (if you're experienced in it) leads to very clear code.

      Scheme, on the other hand, has been a bit more nasty to me. I have found scheme programs to be a lot larger and quite a bit more complex than their equivalents in common lisp. I think it's mostly because scheme is like talking using small words: it doesn't affect the brilliance of the ideas, it just takes more words to say them - though no one will require a dictionary to understand it, whereas they might with common lisp.

    3. Re:Hmmm.... by FunkyMonkey · · Score: 4, Informative

      20k lines of code? That is miniscule. I've got a mid-sized enterprise system that's got 20k FILES containing millions of lines of code integrating a dozen desparate systems over a network of 50 or so servers. It handles thousands of concurrent users performing transactions - not just viewing content. That's just a mid-sized system. Some large scale systems use clusters of hundreds of servers. Not to bash what you're doing but I think you could use a little perspective on the size of your application.

      I don't care if you've got a freakin army of PHP programmers, you're never going to build a system that can scale like Java.


      1) Scripted languages in general: slow performance

      2) Compiled languages in general: Requires rebuild before changes take effect, so testing and retesting is slowed down.

      3) Java/.Net/Byte-code languages: Worst of #1 and #2 above.


      Don't believe the hype about Java's performance. Today's just-in-time compilers can optimize code as well as hand optimized code and they don't waste resources optimizing paths that don't get executed. There are many benchmarks out there that confirm that Java's performance is comparable to C++ and even better in some areas.

      http://www.javaworld.com/javaworld/jw-02-1998/jw-0 2-jperf_p.html
      http://www.tommti-systems.de/go.html?http://www.to mmti-systems.de/main-Dateien/reviews/languages/ben chmarks.html
      http://java.sys-con.com/read/45250.htm?CFID=29694& CFTOKEN=101A9EF8-9F8D-153A-37A5E0A40D3EE24A

      I agree with your point though, there are a huge number of crappy programmers out there. Good programmers write good code in whatever language they are using.

      So, what is good code?

      IMHO, good code performs well and is easy to understand and use.

  40. Re:You are contradicting yourself. by NutscrapeSucks · · Score: 2, Interesting

    Like most languages, it's possible to write unsecure code.

    And PHP does a few things that are UNlike other environments that encourage insecure code.

    The database interface pretty much encourages SQL-injection friendly logic, and the "Magic Quotes" hack that PHP came up with is just disgusting. Compare that to Java where programmers are encouraged to use safe Command and Parameter objects, or just abstract the SQL generation away with Hibernate etc.

    And the Register Globals thing was just lamebrained to begin with. Apparently there's still projects that depend on it, so it can't entirely be removed.

    So, yeah, webapps can be insecure in any language, but much of PHP's poor reputation stems from PHP trying to be too smart for their own good, and a community that doesn't really understand good practices.

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
  41. Re:Microsoft by minus_273 · · Score: 2, Informative

    yeah, there is a huge difference between the two. With Visual Studio ASP.net has been by far the simplest web dev environment i have used. It seems the story submitter didn't bother doing any research becasue of the MS factor. That unfortunate becasue ASP.net is actually really fast and really good.

    --
    The war with islam is a war on the beast
    The war on terror is a war for peace
  42. Re:Not all true (imo) by Westley · · Score: 5, Insightful

    You say it's "simply not true" but don't actually give any reasons.

    Now, I've never used IDEA for a prolonged period of time - I couldn't get into it, and was happy enough with Eclipse not to worry. (The fact that Eclipse is free helps - it would be difficult to persuade my company to pay for loads of licences for IDEA when Eclipse is perfectly all right and free.)

    I do, however, use Visual Studio .NET 2003 and Eclipse in daily work. Here are just a few reasons I much, much prefer Eclipse to VS.NET:

    1) Refactoring. Yes, there are tools available to help - but it's free and bundled into Eclipse.

    2) Organise imports. Even with VS 2005 having some limited support, it doesn't help nearly as much as it should.

    3) Built-in unit testing tools. Using TDD.NET to fire up NUnit GUI (or any of the other things it can do) is much, much uglier than the built-in support for JUnit in Eclipse.

    4) Ant support in Eclipse. Our Java build script is *so* much nicer than the nastiness VS.NET encourages. I'm looking forward to investigating the VS 2005 integration with MSbuild.

    5) "Hold down ctrl to make anything a hyperlink" - want to go to where a method, variable, class etc is declared? Just hold down ctrl and click. Navigation was never simpler.

    6) Search for all references (etc) - in theory there's "go to definition" in VS.NET 2003, but half the time it doesn't work when you're in a large solution, and I don't believe there's any way of finding all references.

    7) The VSS plugin for Eclipse is actually better in my view than the VS.NET support... much easier to understand the configuration, change it on a per project basis etc.

    8) Launching Tomcat in a debugger with Eclipse (even without any extra plugins) seems a lot more reliable than trying to make sure that IIS has actually caught up with changes. Why do web projects need IIS to be running even to open in VS.NET? It's crazy.

    9) Quick Fix and other source options - get Eclipse to write code for you, fix code for you, extract constants, etc. Fantastic stuff - especially in test-first development, where you can write code which uses the API you *want* to exist, then tell Eclipse to create the shell of that API for you.

    10) Compile on save with a really good incremental compiler. This saves huge amounts of time. Oh, and changes really do happen, unlike in VS.NET where if you change an embedded resource, a normal build sometimes picks up the change but sometimes doesn't. (Not to mention VS.NET locking access to files it's built quite often, meaning you can't rebuild them without restarting VS.NET - particularly in terms of XML documentation.)

    These are not esoteric features which are hardly ever used - although I could list loads of those too, if you want. These are things I use *every day*. My pair programmer and I are *always* saying how much easier our C# work would be if VS.NET supported the features above. Half of them aren't even in VS 2005 beta 2, as far as I can see - or at least aren't as well implemented. Funnily enough, I can't remember the last time we said something similar the other way round...

    So, I've given some of my reasons why I think Eclipse isn't just a step ahead of VS.NET, but leaps and bounds. Now, why do you think VS.NET is better than Eclipse, and do you really not care about the above features?

  43. Everything, huh? by LibertineR · · Score: 4, Funny
    And people wonder why geeks dont get laid.

    It is Saturday, and instead of being out in the sunshine, taking in rays, talking to women, GOING OUTSIDE, here we are, in front of our screens debating about which language to build our web apps with? Can we suck enough?

    Dont bother replying, because when this damn compile is done, I am going outside if it kills me. I wont be here to read any replies, dammit.

    1. Re:Everything, huh? by LibertineR · · Score: 4, Funny

      Thats funny. No, the fuckin compile broke. I'm still here.

    2. Re:Everything, huh? by Jeremi · · Score: 4, Funny
      and instead of being out in the sunshine, taking in rays, talking to women, GOING OUTSIDE, here we are, in front of our screens debating about which language to build our web apps with?


      The problem with talking to women is that so few of them have anything interesting to say about whether or not C++ is better than Perl... ;^)

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
  44. Re:Nothing like... by andreyw · · Score: 2, Funny

    You forgot -

    VI vs EMACS
    GNOME vs KDE

  45. Actually, eBay uses Java. by markv242 · · Score: 4, Informative

    The only reason people think they use ISAPI is because that's what they originally used, and an executive decision was made to not break any existing links at any time, ever. Check the Powered by Java image. The /ws/eBayISAPI.dll that you see in all of the requests just invokes a servlet.

  46. Re:Ruby on Rails? by gattster · · Score: 2, Interesting

    I've been using it professionally for a few months and LOVING it. My experience breaks down like this: PHP 1998-2003 Java(Spring/Hibernate) 2003-2005 Ruby/Rails - 2005-???

  47. Re:Use ASP If You're A Microsoft Shop by wk633 · · Score: 2, Insightful

    ASP is a better environment than ASP.NET???

    I don''t normally ask things like this, but are you on crack? I have worked with both ASP and ASP.NET. No way in hell would I pick to do a new site in ASP over ASP.NET unless there were overwhelming reasons to do otherwise.

    significant training to learn .NET's arcane vocabulary and squirrely architecture

    Any web developer worth anything will take to ASP.NET like a duck to water. Same goes for J2EE or PHP or anything else. And any developer worth anything will understand and appreciate the seperation of code and content that ASP.NET provides.

    Disclaimer: I'm as anti M$ as anyone on /., but I refuse to let religion cloud my view on a good technology.

  48. Some of us build more than one app. by LibertineR · · Score: 2, Insightful
    Code reuse, baby.

    Some of us want to consume services from other apps.

    Some of us dont want to reinvent the wheel every time we code.

    Design Patterns, baby.

    I could go on, but I know I am typing to deaf eyes.

  49. Pfft by defile · · Score: 2, Insightful

    For small web site, it really doesn't matter.

    Same is true for a large site.

    A good way to define "large site" is "beyond the hardware capabilities of a single computer". For example, if you made a hand optimized assembly version of Slashdot that had its own network driver, TCP/IP stack, etc. its load would still probably be beyond the role of any one commodity computer.

    When you throw this kind of a load at computers, many basic assumptions start to break -- you inevitably exercise a use case that is quite uncommon with no off-the-shelf solution that fits the bill quite right.

    Of course, since large sites mean big business, vendors want you to believe that their solution can grow towards infinity. But don't be fooled: there are no silver bullets.

    Getting into a religious war over what RDBMS, language, OS, etc. to use is pointless -- you just cannot avoid refactoring/rewriting major chunks of a project through its lifetime. It is undeniable.

    Better to pick what your group is most comfortable with and just take it from there.

  50. [blank] rocks! by Tablizer · · Score: 4, Funny

    [fill_in_the_blank] is the way go to. See [blank].org for more. For anyone who's built custom sites based on [blank], I think they would agree with me. [blank] is really easy to use for building big apps for use in web stuff, and [blank] provides an easy-to-code-for application framework that saves lots of time and money.

    Best of all, it is [blank]-oriented so that you just snap functionality together like Lego blocks to get an instant app that runs at the speed of light almost right out of the box! And [blank] scales to every user on the entire planet. And it plugs into XML.

    Only a Devry graduate would use anything different. Go with [blank]!

  51. Java, Ruby on Rails, Python, Smalltalk,Common Lisp by MarkWatson · · Score: 2, Informative

    I think that Java is the gold standard for small and large web portals in terms or reliability, good performance, etc. I have done portals that simply use Tomcat with either Prevayler or Hibernate/JDBC for persistence that basically run forever, until we want to do a software upgrade.

    That said, for CRUD applications, RoR is good - the scaffolding gets you up and running quickly, and views, controllers, etc. are easily customized.

    I used to use Python and Common Lisp a fair amount, but not recently. The UnCommon Web Common Lisp package looks good; I would like to check it out in some detail when it is more mature. It uses continuations (like Seside for Squeak and VisualWorks Smalltalk) to manage state between web pages.

    Sure, there is some overhead for using multiple langauges and frameworks, but I have always believed that it is best to be a "generalist" who can drill down when required.

  52. Tiny. by C10H14N2 · · Score: 2, Insightful

    If your code is at 20,000, you haven't even begun to get to the point where manageable code is truly problematic. A skilled developer can get a grip on that (about 400 printed pages) in a day unless it is utterly obfuscated.

    Now, with respect to #1 and #2 as applied to #3? The WORST of execution and compilation time generalized to _all_ bytecode? WTF?

    With a proper J2EE development environment (no .Net here), my compile/build/deploy cycle on most projects takes one command and, guffaw, 20k lines would compile in a few seconds. As for execution speed, this has been disproven so many times at this point that it is laughable.

    In any organized production environment (that is, not just Rinkydink, Inc), changes will NEVER be immediate, usually they'll take at LEAST several weeks or months to implement, so this idea that somehow a 30-second build process is an impedement to large applications is just a joke. In such an environment, anyone who would just run in and perform a quick-and-dirty "fix" on the production server would be escorted out of the building before they got up to get their next cup of coffee.

    However, we seem to agree that with any language, the problem exists between keyboard and chair...

  53. Orders of magnitude are base 2 in assembly lang. by SimHacker · · Score: 2, Funny
    Orders of magnitude in assembly language are measured in base 2, not base 10. So four orders of magnitude more than 7 days would be only 112 days (a bit more than 1/3 of a year), not 70,000 days (almost 192 years).

    Of course you also have to adjust for a few orders of magnitude in the other direction, now that registers are larger.

    Here's how to add two 32 bit numbers on the 8 bit 6502 (C = A + B):


    CLC
    LDA A
    ADC B
    STA C
    LDA A+1
    ADC B+1
    STA C+1
    LDA A+2
    ADC B+2
    STA C+2
    LDA A+3
    ADC B+3
    STA C+3

    Oh man, that was exhausting.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  54. Re:Lotus Domino-what's the problem? by dogugotw · · Score: 2, Interesting

    Guess I must be using a different Notes than you folks. OK, I only write apps using the native gui, no web browser stuff yet but I love this thing. I can put up a fairly complex workflow app in about a day that scales nicely, is secure, and is easy to maintain. I've pretty much written an entire manufacturing quality system using Notes. It's a breeze to support. We have no admin so I double duty as developer and admin. I support 50 apps or so and 150 users solo and go home every night on time, don't work nights or weekends, and actually take vacations.

    If you need to search code, use addins like Team Studio Configurator. It does have a query language built in, you just need to know how to use it. You can build adhoc user driven queries without a lot of effort. (check LDD's FAQ of FAQ for the 'friendly query' article).

    It's not a relational db and that drives some folks nuts. Once you get your head wrapped around an object db model, and use it for what it's good for, you can do wonders in almost no time at all.

    It does support large web based apps (see IBM's Notes Developer Domain and the forums) that use JavaScript, html, xml, java, whatever you want.

    User rights management, heavy duty encription, replication (second to none) all come standard. Every app is web enabled without doing anything special (yes, the apps won't be very pretty or friendly but the point is the app works using the Notes client or a browser by without doing any extra programming).

    And that's just for starters. Your piece of shit is my palace of gold. It's kept me happily and gainfully employed for almost 10 years now and my company keeps looking for new and more interesting places to use it.

    One man's opinion.

    dogu.

  55. You'r dead wrong about Lisp by SimHacker · · Score: 2, Informative
    Lisp code is extremely easy to read and maintain -- it's just the opposite of Perl, not "more so".

    Are you going to trot out the "parenthesis are hard to read" argument? Well take a look at XML: that has TWICE THE NUMBER OF PARENTHESIS, only they're pointy instead of curved. That old "I'm afraid of parenthesis" argument is bullshit.

    Now look at Perl code: instead of seeing the explicit, unambiguous parenthesis in the code, you have to remember and resolve all of the implicit and complex special syntax rules, punctuation, precidence order, left/right evaluation, contextual quirks and special cases, etc.

    If you think Lisp is harder to read than Perl, then you obviously don't know either language, and you're just basing your beliefs on rumors you heard ignorant people distort and repeat, without learning those languages for themselves.

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  56. 4 lanuages is the minimum... by Marc+Rochkind · · Score: 2, Informative
    ... for serious web sites:
    1. HTML,
    2. Client-side scripting language, usually JavaScript,
    3. Server-side language,
    4. SQL for database access.

    #3 is where there's the most flexibility. Speaking very generally, there are two ways to go:

    a. Lightweight scripting systems that depend only on the web server (probably with a loaded module) for support. Typically PHP, Perl, Python, or JSP/ASP using Java or a Microsoft language.

    b. Heavyweight systems, of which the two most common are J2EE and .NET. J2EE uses Java as its language, and .NET usually uses C# or VB.

    The usability, performance, etc., of the heavyweight systems depend as much on the middleware as the language itself. .NET is .NET, but for J2EE there are several choices. In my own experience with heavyweight systems, I found Java to be wonderful, but our J2EE server (Oracle's) very difficult to work with operationaly, and way too complicated for what we needed. So, in my opinion, one has to have much education, experience, and patience if one is to use a heavyweight system.

    My conclusion, however, would be that a heavyweight system is the correct choice for a big web application. My bias is towards J2EE because it's more open (and even has open source choices available), but the complexity of J2EE servers is a big concern.

    From what I hear, .NET has superior development tools and better support. I don't know whether this is (a) true and (b) worth the disadvantages of using a proprietary system.

  57. Re:Perl and C++ by Unordained · · Score: 2, Insightful

    Last time I tested speed (very simple timing of a large increment loop), ... compared to some simple C/C++ (at this point, the difference is moot) ... perl, php, and python were all in the range of 1/10 to 1/14 the speed of C (pretty much equal.) Ruby was 1/40, which ... sucked. But that was ... let's see ... four years ago? And a really icky way to test speed anyway?

    But really, it doesn't matter. You can write good and bad code in any of them, and raw looping speed rarely matters. Most of our apps are just glue, talking to databases, networks, files -- all bottlenecks. The CPU isn't our problem. And where speed does matter, pretty much all of these languages rely on C libraries that -are- speedy. Most of them seem to compile to some form of bytecode at the very least, and will cache that bytecode to avoid a recurring cost.

    These days, we pick languages more on features and libraries than speed. And most people just pick by features, because they're not interested in building -new- architecture where features matter. I still am, and C++ does that for me. But for web apps? I'm not coding architecture with really neat stuff going on ... I just want to grab from a db and spit it out. PHP does that for me, so it's fine. Perl would too. So would python, and ruby, and probably COBOL if I were willing to ever do that again. I think the only reason I went with PHP was the db function set, and that's not much to go by, considering that most of these languages rely on similar/same C libraries, so it's just a matter of time before they all have the same library features -- just the time required to write wrappers to make C functions available in the scripted language itself.

    If you do write web-apps in C++ ... apache modules aren't that bad, but there's a certain amount of "getting started" cost. Find yourself a good set of CGI functions if you're doing it the CGI way -- C++ doesn't hand you your $_POST stuff neatly the way PHP does. Beyond that ... meh? It's pretty much all the same.

  58. Re:Not all true (imo) by the+way · · Score: 2, Informative

    FYI, features 1, 5, 6, and 9 are all supported in VS.Net by using Resharper. I couldn't imagine using VS.Net without it...

  59. Re:Not so much by SimHacker · · Score: 2, Interesting
    Good Lisp code is zen-like in the way it uses white space and indentation to express structure, instead of cluttering the code up with a bunch of punctuation. Lisp macros let you program with meaningful words and phrases, which are much easier to understand than punction.

    Lisp doesn't require excessive punctuation to write understandable code, because it has a real macro system. Lisp's macro system is vastly more powerful than "syntactic sugar" or string substitution macros like the C preprocessor. It enables you to deeply customize the language for the task at hand (including extend the surface syntax by adding punctuation, if you insist).

    Throwing in a bunch of punctuation marks doesn't automatically increase readability. But at least the base Lisp lanuage doesn't use up all the punctuation marks itself like Perl, and it even allows you to define your own for application specific purposes. All that and a kick-ass macro system: What more could you ask for?

    The problem with messy, nuanced, ambiguous, punctuation-heavy "Do What I Mean" languages like Perl is that it's much more difficult to figure out exactly what the code is doing just by looking at it, because there are so many special context sensitive rules and special cases (like scalar versus list context, etc), which intricately interact with each other.

    Perl has a much higher "syntactic surface area" than Lisp (they're at different ends of the spectrum). High syntactic surface area makes a language hard to learn and understand. All of the effort pointlessly wasted struggling with Perl's fractally complex syntax would be much better spent solving real problems that weren't solved decades ago by Lisp.

    Many Perl evangelists actually prefer to program in Perl because it allows them to show off how studly and ingenious they are to handle such a pointlessly complex language, and it gives them job security because it's so impossible for anyone else to understand or maintain their code. So of course those people hate Lisp for its simplicity, and spread misinformation about it like "too many parenthesis".

    -Don

    --
    Take a look and feel free: http://www.PieMenu.com
  60. Re:Use ASP If You're A Microsoft Shop by wk633 · · Score: 2, Insightful

    most Visual Studio.NET developers don't understand the WWW and the Internet at all, they drop and drag controls onto a form.

    I guess our millages varry. I have yet to meet an ASP.NET developer (including myself) who didn't already have a background in other areas. Probably myself least of all, but I don't see the big deal with dragging/droping controls. That's just the tool. You can write ASP.NET in vi if you want to :-) Actually, often as not, I work in HTML view. I am equally fluent writing server side Perl or classic ASP. Give me a nutshell book, and I'll do PHP or Zope or tack your pick.

    Time will tell which of us is correct about the direction ASP.NET takes. I'm not going to try to save it, I'll just use it because it's a lot easier to design maintanable web sites in it than in the classic ASP/PHP model.

  61. Re:Not all true (imo) by Westley · · Score: 2, Interesting

    It sounds like you have a lot better luck with "Go to definition" in VS.NET than I do. With the large C# projects I work on, it very rarely works. At home with smaller projects, it seems to be okay - but still less convenient than in Eclipse. (I didn't mention the Declaration view in Eclipse, which shows you the declaration of whatever you've got selected - no need to even navigate there half the time.)

    As far Find References, I've just trawled through VS.NET 2003's menus and I think I've found it - is it the "Edit -> Find and Replace -> Find Symbol" option? I'll admit I hadn't seen that before. Thanks for pointing it out. Even though I prefer the way Eclipse does it (finding uses of that particular identifier, rather than any identifier with the same name) it's now not a big enough issue to get on the list, as it were :)

    Oh, I forgot to mention something else which VS 2005 really should have pinched from Eclipse - the idea of combining class view and solution explorer. Being able to expand a .java file to see what classes are in there, then expand the classes to see the methods (and refactor against them etc) is very handy - I'd forgotten about it until I started navigating around a project to try to use Find References in VS :)