Slashdot Mirror


Does Company-Wide Language "Standardization" Work?

RMX asks: "In our company, we're currently going through the debate of standardizing on a computer language for our next set of products. The pro-standardization guys say that a single language (like Java) will save everyone time. The anti-standardization guys are advocating a mixed environment (of languages like Python, Ruby, and C#), and argue that the whole discussion is as silly as a manufacturing firm standardizing on screwdrivers for all their screw/nail/glue fastening needs. Have any of your companies standardized on a language? How well did it go?"

654 comments

  1. Solutions Should Be Natural by eldavojohn · · Score: 4, Insightful

    Problems and needs are naturally occurring things.

    They take on unforeseen forms with non-standard characteristics. If your tool can't solve the problem or satisfy the need, you build a new tool that does. It's the human way.

    Likewise, your company can standardize methodologies and practices all it wants. But should they ever standardize the tools they use to solve problems ... well, let's just say it won't be long before a problem or need comes along that the standard doesn't fit.

    And then someone might be tempted to work hard at trying to make your standard fix it and work. They might spend hours re-inventing the wheel. And what will that get them?

    Why, the ability to say, "Yep, and we did it all with one language."

    The customer doesn't care how a solution is created. They care that it works and meets their requirements. Rarely have I seen requirements that read "... and it must all be done in the same language."

    I am a computer programmer. I make computing devices do what I want. I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions.

    In my dictionary, fatalism is the inability to cope with change. Adapt or fail. I am required to adapt to each new language I learn and I hope I never get rusty at that. Confining employees to one language does just that, it gives them a false sense of security and teaches them to think inside their box.

    --
    My work here is dung.
    1. Re:Solutions Should Be Natural by acidrain · · Score: 3, Insightful

      Why, the ability to say, "Yep, and we did it all with one language."

      And the fact that I can actually debug all the code that goes into one of our games. I love debugging a C++ callstack that goes in and out of an interpreter a few times. It's bad enough having ten programmers with different approaches to programming without mixing langauges.

      Mixing langauges essentially means that a person who introduces a new langauge gets to build themselves (and a few of their pals) a little ghetto where other programmers are afraid to walk at night.

      --
      -- http://thegirlorthecar.com funny dating game for guys
    2. Re:Solutions Should Be Natural by MrWarMage · · Score: 0, Redundant

      Mixing langauges essentially means that a person who introduces a new langauge gets to build themselves (and a few of their pals) a little ghetto where other programmers are afraid to walk at night.

      If I could mod, I would be unable to decide if I should choose Insightful, or Funny... because you can't mod anything "Universal Truth."

    3. Re:Solutions Should Be Natural by CharlesEGrant · · Score: 1
      Likewise, your company can standardize methodologies and practices all it wants. But should they ever standardize the tools they use to solve problems ... well, let's just say it won't be long before a problem or need comes along that the standard doesn't fit.

      On the other hand, I've worked with folks that chose tools for their novelty factor, not for the fit to the job. This created systems that were hellish mixtures of VB, Access, Java, and TCL/Tk. They were hard even for the original authors to maintain, and even harder to maintain after they left, since most folks didn't care to step into a rats nest like that.

      I agree that rigidity is foolish, but guidance to the effect that 'Java is our preferred language, but if you think it's going to be a problem, let's talk about it' doesn't seem like a strait-jacket.

      I am a computer programmer. I make computing devices do what I want. I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions.

      Wow, that sounds fierce and arrogant! To be sure, users sometimes don't know what the hell they want, but at least occasionally they have sound or at least pragmatic reasons for their restrictions. I mean if I'm running a company that has an infrastructure written largely in VB, and I have dozens of programmers whose expertise is primarily in VB, your demanding to write an application in APL is not going to impress me, even if the application is mostly matrix manipulation. After all, if you want to be an employed programmer you need to make the computer do what your employer wants it to do.
    4. Re:Solutions Should Be Natural by killjoe · · Score: 1, Interesting

      These kinds of things are usually dictated by a CIO who knows nothing. They are usually pushed by a vendor (either MS or Sun) and after a few dinners, a golf outing or two and maybe a nice watch the CIO makes the ruling that everybody is going to use the same language.

      What's even worse is when the CIO dictates not only are they going to use the one language pushed by the vendor but that they will also use the vendor supplied toolchain, servers, and operating systems.

      That's how "windows shops" are born. Anybody who thinks that all problems are solved by what one vendor sells is either a zealot or gullable.

      --
      evil is as evil does
    5. Re:Solutions Should Be Natural by Courageous · · Score: 1

      After all, if you want to be an employed programmer you need to make the computer do what your employer wants it to do.

      *Caugh*.

      No. Only the current employer. With your big talk of implied firing, one should consider that it is quite possible for an employee to "fire" their employer. Easy schmeasy. Now that we've put that out of the way....

      C//

    6. Re:Solutions Should Be Natural by JanneM · · Score: 3, Insightful

      I got the impression the poster was talking about choosing the right language for a given project, rather than mixing languages within the same project - or mixing languages within a single binary.

      Now, embedding an interpreter can be a very good idea in some cases (Think Emacs - or a game like Neverwinter Nights for that matter) - but of course only if the benefits outweigh the pretty daunting drawbacks that you point out.

      By contrast, having more than one language in a project may make perfectly good sense if the project itself is heterogenous; you may want to write the web backend in Java while having thin client UI glue as client-side Javascript (and of course access the database with SQL).

      And choosing proper tools for a new project rather than habitually, thoughtlessly use whatever you used on the last one is a no-brainer.

      --
      Trust the Computer. The Computer is your friend.
    7. Re:Solutions Should Be Natural by Duhavid · · Score: 4, Insightful

      I've worked with code like that in the "language of choice".

      Do these introducers never get asked to justify their actions?

      I dont see a problem with mixing languages, as long as the
      choice is a defensible one that moves the project forward.
      Making project choices on the basis of "gee, this will look
      cool on my resume", or "gosh, I really want to play with this"
      on any level ( in language or out ) should, generally, be
      disallowed.

      --
      emt 377 emt 4
    8. Re:Solutions Should Be Natural by Wdomburg · · Score: 5, Insightful

      And then someone might be tempted to work hard at trying to make your standard fix it and work. They might spend hours re-inventing the wheel. And what will that get them?

      Why, the ability to say, "Yep, and we did it all with one language."


      At the other extreme you've got people writing in whatever they want whenever they come across a problem and end up re-inventing the wheel because either "I don't like Perl!" or "Numbnuts wrote this code in Object Intercal 95, which doesn't have a compiler/interpreter on the platform I need."

      And what does that get you?

      Why, the ability to say, "Nope, we don't confine our employee's choice of languages." Well that and a morass of code based as much on individual whim as any logical need.

      As always, there is a middle ground - having a standard (or standards) with an allowance for justified exceptions.

    9. Re:Solutions Should Be Natural by MonaLisa · · Score: 5, Interesting

      There are two issues here: using a single or mixed language approach for a particular application, and using a single languange (or not) across an entire organization for all projects.

      I worked for a long time at a big national lab that was mostly a FORTRAN shop. They wanted to use FORTRAN for everything, and it was technically a bad choice for everything, but culturally it was the only solution that would fit without causing a jihad among the old timers. I much prefer C++ for these sorts of things (big complex simulations that must run fast), but had little success in converting the masses, even though it was always faster, more portable, much easier to maintain and handle complexity, and also you can actually hire good C++ programmers.

      We were able to do some mixed language solutions (C++, FORTRAN, C, perl, etc.) and they were a nightmare to maintain. in hindsight, I think it would be better to keep the apps all in one language rather than mixing. The biggest problem here is portability. These applications have incredibly long lifecycles, and the platforms change severals times underneath you, which seems to affect the inter-language interfaces the most.

      Anyway, it depends a lot on the type of application, lifecycle, target platform(s), etc. but I think in general it is best to pick a single language if at all possible for a particular application that is the best single tool for the job. But, if a different application would be better suited for a different language, go with the different language. Mandating a single language policy across an organization for all projects is counterproductive: use the right tool for the job.

    10. Re:Solutions Should Be Natural by Fulcrum+of+Evil · · Score: 1

      After all, if you want to be an employed programmer you need to make the computer do what your employer wants it to do.

      My employer wants my software to do specific things. They don't care too much what language I use - that's between me and my teammates.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    11. Re:Solutions Should Be Natural by rve · · Score: 4, Insightful

      Are you the only programmer at your company?

      Support and maintenance costs go way up when every programmer writes his little chunk of the application completey in his own style. By standardizing, on tools, coding patterns, naming etc, a company makes it less difficult for someone to debug or modify code that someone else wrote.

    12. Re:Solutions Should Be Natural by rolandog · · Score: 1

      Watch out for the pimp subroutine... on the other hand I kinda get turned on by the ho function...

    13. Re:Solutions Should Be Natural by NitsujTPU · · Score: 5, Insightful

      I have to say that I agree with both your and the parent's point of view, but I think that you're taking what the parent is saying a bit too far.

      The parent is speaking of company-wide decisions. It makes a lot more sense to write a video game in C than in PHP, in the general case. It makes a lot more sense to write a web site in PHP, than in C, in the general case. You don't want to force your developers into an awkward scenario by having a company standard tool.

      You, surely, can picture the conversation where the writer of the interpreter from your game is told that he cannot use LEX/YACC, because his company standardized on C++. You can't? I was once told this at a meeting.

      On your point, however, I can also agree. Needlessly writing code in other languages makes debugging a pain, and reduces your ability to share code inside the project, a place where I imagine that the most reuse is likely to take place.

      Still. I can't really see the need for a company-wide decision to standardize on a single language for all of their development.

    14. Re:Solutions Should Be Natural by langelgjm · · Score: 1

      In my dictionary, fatalism is the inability to cope with change.

      In my dictionary (the OED), fatalism is the doctrine that all things are determined by fate.

      --
      "Anyone who [rips a CD] is probably engaging in copyright infringement." - David O. Carson
    15. Re:Solutions Should Be Natural by siwelwerd · · Score: 1

      "gullable" isn't in the dictionary

    16. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      > "gullable" isn't in the dictionary

      You're right, it isn't.

    17. Re:Solutions Should Be Natural by Jeremi · · Score: 5, Insightful
      Mixing langauges essentially means that a person who introduces a new langauge gets to build themselves (and a few of their pals) a little ghetto where other programmers are afraid to walk at night.


      Just to be contrarian... it can work the opposite way as well. Many of my co-workers are scared of C++, but when I added a Python interpreter to the codebase and started implementating some of the program's functionality in Python, they felt comfortable creating and editing Python code.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    18. Re:Solutions Should Be Natural by alister · · Score: 1
      The parent is speaking of company-wide decisions. It makes a lot more sense to write a video game in C than in PHP, in the general case. It makes a lot more sense to write a web site in PHP, than in C, in the general case. You don't want to force your developers into an awkward scenario by having a company standard tool.

      I'm looking at standardising on one language. The problem with the original post is that we don't know enough about the company. My environment is all web-based programming. One language seems pretty much the same as any other (the disclaimer is that I'm the IT Manager, not a developer). We have four or five different languages in use, and we're paying for training and application servers for each one, as well as using server resources running each of them. As the end result will always be a web application, I can't see a need for those four or five different languages, with the costs that they impose.

      Alister

    19. Re:Solutions Should Be Natural by alister · · Score: 2, Interesting
      These kinds of things are usually dictated by a CIO who knows nothing. They are usually pushed by a vendor (either MS or Sun) and after a few dinners, a golf outing or two and maybe a nice watch the CIO makes the ruling that everybody is going to use the same language.

      That's ... one way of looking at it. A wrong way, but a way nonetheless. Did you ever consider that each extra language costs money (whether the environments are free or not) to implement? Why should I have four languages that all produce web applications when any one of those four can perform the same tasks as the other three? What possible reason is there to re-invent the wheel three times?

      I'm an IT Manager, pushing standardisation. No dinner, no golf (that'd ensure I didn't use that vendor's language), no watch. As to whether I know anything, I guess you'll have to track down the people in my area. The development manager seems to think we're on the right track though.

      Alister

    20. Re:Solutions Should Be Natural by yppiz · · Score: 1

      At the other extreme you've got people writing in whatever they want whenever they come across a problem and end up re-inventing the wheel because either "I don't like Perl!" or "Numbnuts wrote this code in Object Intercal 95, which doesn't have a compiler/interpreter on the platform I need."

      The problem here is not the use of multiple languages, but rather the programmer being allowed to re-implement something without a good reason.

      This is not an issue of standards, but one of judgement and management.

      Further, it is possible that the programmer feels the need to reimplement something not because of the language, but because the original component did not have a good API.

      Put another way, the solution may be to put a thin API into the original code (which, at its simplest, could mean turning a library function into a standalone executable that talks to stdin and stdout) so that the programmer now can build on the original object without care for the language it was implemented in.

      With respect to the one language standard, if the company is about producing code or monolithic software deliverables, it makes sense to have one or two core languages. But if the company is about producing data or services, it's different. These tasks tend to be modular, so the greater advantage is to be able to choose a good language for each problem.

      For example, which language would be better, in general, at processing terabytes of flat text - Java or Perl? Either language can do this, but Perl's libraries are much faster for string processing.

      Now, which language would you rather write a web service in -- Java or Perl? [*] Sure, you can do anything in Perl, but you're going to find more library support (and more experienced programmers) for web services in Java.

      --Pat "[*] Those of you who said C, please see me after class."

    21. Re:Solutions Should Be Natural by bit01 · · Score: 1

      your demanding to write an application in APL is not going to impress me,

      What's "demanding" got to do with it?

      You argue for the business case, just like everything else.

      Presumably you're an expert at the subject at hand and your manager trusts your judgement on it. Your manager is hopefully more aware of company wide concerns. You both use your combined knowledge to achieve an optimal result. Everybody wins.

      There's very few projects of any size where only one language is appropriate. I'd like to see somebody trying to write a compiler in HTML, a web page in SQL or a backup script in Ada.

      ---

      Astroturfing "marketers" are lying scum, misrepresenting company propaganda as a personal opinion.

    22. Re:Solutions Should Be Natural by merunka · · Score: 1

      The language is not isolated. Language is just part of the broader picture. if you choose .NET, you usually also need Microsoft IDE, windows platform (with all logging, performance monitoring, etc...) which is an investment (in terms of finances AND knowledge). if you choose java, it usually comes with different IDEs, different servers, different ways of logging, performance monitoring and ways maintenance is done. I don't think you can become an expert for everything. Sure, learning new language is quite easy. But learning how to get the best from the language and platform you use takes time and experience. And specialisation has it's advantages too if done with brain. I'd say focus yourself in mid-term, don't lock-off yourself in long term.

    23. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      I remember someone in our company pushing to standardize on Java and move off of C, C++, Cobol, et al. It failed pretty miserably when the JVM chugged to a hault on some of the older systems that still saw active development (Alpha/VAX). Then there were the host of service issues Corba vs. JDBC, which was faster, how to migrate, yada, yada, yada.

      Each tool developed out of a need. Needs may have developed because of hardware or other software. It's important to understand what your need is and fill it. I doubt that the time taken debugging code costs more than what it would take to standardize on a single language/toolset.

      More than tool standardization most groups just need more effective means of communication and documentation. Pair that with development practices that don't vary based on tool use. For example how many people work in a company where one group of developers use PVCS, another CVS, and another Subversion, while other groups have no version control whatsoever. Likewise how many groups within the same company have DEV/QA/PROD machines with a triggerable/automated build process versus those that edit directly in PROD with no safeguards. Or how many companies have 15 different websites internally, running everything from Netscape Server, AOLServer, Apache, IIS, Sharepoint, Filenet, Knova, to ZOPE all to meet the exact same basic need - documentation portal.

    24. Re:Solutions Should Be Natural by mrchaotica · · Score: 1
      One language seems pretty much the same as any other (the disclaimer is that I'm the IT Manager, not a developer).
      So ask your developers if they have any particularly compelling reason to use one language over another. If not, consolidate. If so, don't.

      If you're the manager, you don't (and shouldn't!) have enough knowledge to evaluate how compelling the reasons for using multiple languages are -- it's just your job to evaluate whether those reasons are compelling enough (when considered against the cost) once they tell you.
      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    25. Re:Solutions Should Be Natural by Trejkaz · · Score: 2, Interesting

      Agreed. If an underling wrote bad Java code, I would reject the code review. If they wrote bad Ruby code, I would reject the code review. There is really no difference what language they wrote, if they can demonstrate a reason for using a different one and there are no strings attached (e.g. as there are for anything attached to .NET) then no problem.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    26. Re:Solutions Should Be Natural by Schraegstrichpunkt · · Score: 1

      Do you think it would be reasonable to standardize on PHP for web applications?

    27. Re:Solutions Should Be Natural by Schraegstrichpunkt · · Score: 1

      Specifically, PHP 4? (PHP 5 is still rather new.)

    28. Re:Solutions Should Be Natural by CharlesEGrant · · Score: 1

        your demanding to write an application in APL is not going to impress me,

      What's "demanding" got to do with it?
      You argue for the business case, just like everything else.

      An entirely reasonable position. I was responding to:
      I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions.

      which strikes me as unreasonable.
    29. Re:Solutions Should Be Natural by hazem · · Score: 1

      Ultimately, it comes down to "what is the point of the business"? The answer, typically, is to make money by selling software solutions.

      With that established as your goal, you have to answer the question, "does standardizing on one language help us to sell more software solutions and make more money?" If standardization does not help you achieve your goal, then it's not worth pursuing.

      Conversely, when someone comes to propose using another language, the same question needs to be asked. "does adding this new language to our set of tools help us sell more software solutions and make more money?"

      It really all boils down to a value proposition. Does this thing X that we want to do provide value to our customers (either by cheaper product, faster delivery, more reliable product)? If not, you probably ought to find things that do add value and focus on those.

    30. Re:Solutions Should Be Natural by DavidTurner · · Score: 2, Insightful

      You have a great point about the difficulties of cross-language integration and debugging. It can be a bit of a nightmare, and is a good reason to develop individual products in a single language.

      However...

      "Where other programmers are afraid to walk at night"? What kind of "other programmers" are we talking about here? Speaking for myself, I have little time for programmers too afraid to venture outside of their "comfortable" language. Particularly if they then have the gall to describe themselves as "developers".

      Software engineering is language-neutral. If you can do it in pseudocode, you can do it in Lisp, C, Pascal, even (heaven forbid) Visual Basic. As many others have pointed out, some languages are better suited to certain tasks than others. One of your responsibilities as a programmer is to know which languages are appropriate for the task at hand. Blindly hammering away with C or Python or whatever is a sure road to obsolescence.

    31. Re:Solutions Should Be Natural by mboverload · · Score: 1
      > build themselves (and a few of their pals) a little ghetto where other programmers are afraid to walk at night.

      ...Interesting way to put it...

    32. Re:Solutions Should Be Natural by StressedEd · · Score: 2, Insightful
      Many of my co-workers are scared of C++

      That's a healthy attitude to have. Once you are scared of the beast you learn to treat it with respect!

      The lion tamer that runs into the cage armed with nothing but an innocent air and a blindfold doesn't stay a lion tamer for long;-)

      [Unless of course (s)he manages to put the blindfold on the lion, but that is another story and not really a suitable metaphor]

      --
      Be nice to people on the way up. You will meet them again on your way down!
    33. Re:Solutions Should Be Natural by Ambassador+Kosh · · Score: 1

      Not all the frameworks are equivalent though. Feel free to look around but I don't think you will find anything that has the security capabilities that zope does. I have looked a lot and I have not found squat with the security capabilities of zope. If you determine that you need those capabilities then you have to use python since that is what zope uses. However you can probably find other stuff written only in ruby, perl, php etc that does something else you need. Trying to do it all in one framework will range from infeasible to workable depending on what your requirements are.

      If your people want to use other tools then they should be able to explain the why to you and use those tools if they make more financial sense then using other tools. Sure I could probably make ruby on rails do the security things that zope will do for me with a few minutes of work but I don't have a year to add those features to it and there is no way to justify it.

      --
      Computer modeling for biotech drug manufacturing is HARD! :)
    34. Re:Solutions Should Be Natural by The_Wilschon · · Score: 5, Insightful

      or "gosh, I really want to play with this" on any level ( in language or out ) should, generally, be disallowed.

      Except that "Gosh, I really want to play with this" is, especially among hacker types, probably the single most powerful motivator there is. Disallow that, and not only do you lose out on the drive that hackers have to play with something cool, but they get annoyed and disgusted, and probably wind up working less hard on the things that they are told to work on.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    35. Re:Solutions Should Be Natural by WWWWolf · · Score: 1

      I think the point is not to figure out the best languages for the project in question, then stick to them. Sticking to C++ in all situations is bad when someone at the design phase says "I think using an embedded Python interpreter would make modding the game much easier" and gets flattened just because that's a Different Language. (The game comes out, with a hacky in-house modding language that has a not-quite-C, not-quite-Basic, bug-ridden, informally-specified subset of Common Lisp in it, and modders say "gee, I wish they had just embedded Python interpreter.")

      Allowing people to introduce all languages they want at all phases of the project is just asking for trouble. Picking the right languages at the start and sticking to them, however, is another story.

    36. Re:Solutions Should Be Natural by Confused · · Score: 3, Insightful
      There is really no difference what language they wrote, if they can demonstrate a reason for using a different one and there are no strings attached (e.g. as there are for anything attached to .NET) then no problem.


      This attitude may work well in small throw-away projects, but from experience I can tell you, maintaining a mixed language product is hell. Just think about the awful mess you're going to have 5 years down, when you need to do an upgrade. If the whole project is written in one language, you're going to have to find only one replacement compiler/library/development environment - which can be hard enough. If you have a mix of exotic languages, you basically can forget it, just rewrite the whole mess.

      The same applies to training. The original developers may have been the biggest guru in the necessary languages, but where are you going to find maintenance drones that are fluent enough in all of them? Training a halfwit well enough to maintain some crappy C-Code is hard enough, trying to train him in C, Ruby, Scheme and Haskell is impossible. And even if you'd succeed, Mr C-Ruby-Scheme-Haskell-Halfwit won't stay once he comes out of training, he'll be gone to the next job before the ink on his new resume dried.

      All in all, if you're doing long term projects stay with one language and try not to use too many extra libraries where you don't have the source code available.
    37. Re:Solutions Should Be Natural by mikaelhg · · Score: 1

      ... I don't think you will find anything that has the security capabilities that zope does ...

      I have to say, I've never seen another system which would send the user's username and password in a MIME64-obfuscated cookie for every request, either. Or contain a NIH self-built object database with no transactional rollback capabilities. Or freeze the whole application when one LDAP authentication connection thread takes a while to complete.

    38. Re:Solutions Should Be Natural by PHPfanboy · · Score: 1

      Pah, only 18 months old. With your logic we should all be writing in Fortran and Cobol.

      If you want the OO, XML, PDO and other goodies you'll go to PHP 5.
      Really, now there's 5.1 out there's no excuse for this kind of claim especially with PHP 6 being projected for release in early 2007.

      --
      29 mpg. YMMV.
    39. Re:Solutions Should Be Natural by kahei · · Score: 1


      because either "I don't like Perl!" or "Numbnuts wrote this code in Object Intercal 95, which doesn't have a compiler/interpreter on the platform I need."


      Hrm... but these are both perfectly good reasons!

      Admittedly, in the second example he could in theory be asked to implement Object Intercal 95 on the platform in question. But the first example is pretty much unarguable :)

      --
      Whence? Hence. Whither? Thither.
    40. Re:Solutions Should Be Natural by jcr · · Score: 1

      Once you are scared of the beast you learn to treat it with respect!

      Or better still, leave it alone.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    41. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Well, considering most webapps are just database frontends, you almost certainly don't encounter enough variety in your work to force you to consider using different languages. IME, though a webapp can do just about anything, most places that write them would be well served by anything from Servlets to PHP to Perl+DBI to RoR.

      It's when you deal with places that you might be banging out a Win32 GUI one day, a log processing script the next, and a servlet the third that you really start to have to consider diversifying a bit. My last employer was all over the map, but in most cases the reasoning behind the implementation language was quite sound. Interns and new employees were often shocked at first, though :).

    42. Re:Solutions Should Be Natural by 47F0 · · Score: 3, Insightful

      Yep, you're an IT manager all right.

      Frankly, I think you should standardize on COBOL for your video game product.

      A question for you. When you take your car to be serviced, do you feel like effective work is being done when the entire collection of shop tools in the garage fit into a lunchbox?

      I've been doing this for thirty years. I have worked, both as management and grunt in highly standardized, and very non-standardized environments.

      My take? It's a bell curve. At one end, development anarchy is non-productive, and unmaintainable. On the other hand, you absolutely cannot be afraid of the idea that a hammer is not a universal tool.

      Somewhere in the ideal is the notion that it often take more than one tool to do the job effectively - balanced with the knowledge that it seldom takes fifteen wrenches to change a tire.

      In general, simply because of human fear of the unknown, or sheer sloth and inertia, a large majority of shops gravitate WAY too far towards standardization. Your development manager DOES NOT WANT NEW TOOLS - it makes their job harder (i.e. challenging) "We're a VB shop - you can do anything in VB. VB Rules". Yeah, well, sometimes that's exactly right. Sometimes.

      Sorry, but I promise, whatever the cost of acquiring those new tools, if they're appropriate to the job, not acquiring them costs even more in the long run. Every time. But hey, if all you care about is the next quarterly budget, pick your poison and live with it.

      Otherwise, get used to the idea that your mission is going to be constrained and compromised by the fact that you bought the $9.99 tool set at autozone instead of hanging out at the back of the Snap-On tool van learning something. In the meantime, if your business is at all competitive, someone is out there gunning for you - with a little faster gun.

    43. Re:Solutions Should Be Natural by Znork · · Score: 1

      "Software engineering is language-neutral. If you can do it in pseudocode, you can do it in Lisp, C, Pascal, even (heaven forbid) Visual Basic."

      Indeed. You dont learn a language, which is just basically a syntax and keywords, you learn abstract concepts like iterations, paralellization, recursiveness, object orientation, etc.

      The task ahead decides what concepts are needed for the job, the range of suitable languages is decided by what concepts are needed, performance and development speed needs.

      Eventually you barely need to know what language you're in anymore, you can pick up the syntax from the surrounding code, and infer from there, and pick it up from reference works or a google search if there's something unclear.

      Of course, the next step after that may, or may not, be the loony bin. :)

    44. Re:Solutions Should Be Natural by Viol8 · · Score: 1

      "but culturally it was the only solution that would fit without causing a jihad among the old timers."

      I should imagine that practically it was the only solution too unless the
      company fancied sending all of its coders on a C++ course and waited a year
      while they became proficient enough in the language to write the same
      quality code as they did in Fortran.

      Theres no point saying to someone , "hey , why do you drive that car to
      work when you can fly there in 2 minutes in this F-15?" if they've got no
      clue how to fly an aircraft.

    45. Re:Solutions Should Be Natural by somersault · · Score: 1

      :) so very true. If you're not working on a project/job that you are actually interested in, then you are going to perform more poorly. I find most web related coding dull and didnt even do my 4th year project because that was the only option I ended up having..

      --
      which is totally what she said
    46. Re:Solutions Should Be Natural by Bush+Pig · · Score: 2, Insightful

      To repeat a quote whose source I can't recall: "If the only tool you have is C++, everything looks like a thumb."

      --
      What a long, strange trip it's been.
    47. Re:Solutions Should Be Natural by petermgreen · · Score: 2, Insightful

      the trouble is unless you are prepared to use a purely procedural C style api (and with some of the less conventional languages even if you are) calling cross language can be more work than reimplementing the functionality from scratch. (wrap object in C style api and then re-wrap that c style api for the target langauges oop system) and if some or all of the langauges aren't native code compiled will likely increase your deployment hassles too.

      and ofc if you wan't your java code to run untrusted then its going to have to be 100% pure java. Not to mention that using awt/swing components in a non-java window does not appear to be documented anywhere (the jni awt stuff gives some clues on possible ways but it seems to be mainly aimed towards native code drawing within a java window not vice versa).

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    48. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      A natural solution - sounds very nice, but to some people, natural sollutions are smth completely differtent than what I have in mind. I am currently debugging some project which is a massive mess mixing perl, bash-scripting, C and C++ code in 1 project (I haven't encountered anything else yet - but I'm not sure that those are the only languages used..) Yeah - regex is easier in perl, so we call some perl-script with system() from some mix of C and C++ code. You don't wanna know why sometimes bash-scripts are used - but apparently - for some things they were "the natural solution" for the original author of this "project".

      That said - I don't think a company-wide language is a smart thing to do, but a project-wide uniform language is (as I noticed). It all depends on what work you should do. Offcourse if your company always needs the same kind of tools which share a lot of code - it might be a smart thing to do to avoid code duplication. I'd rather standardise languages depending on "tasks" the tools should do and pick the best. I don't see the point of writing a web-interface in C just because the whole company happens to be standardised on C. What you can say is "all web-interfaces have to be written in Java/PHP/RoR/...", "all dataprocessing is done in Perl/..." etc. For this - you could - and probably should have good company policies, but really standardise on 1 language is not possible imho, and will cause more problems than it theoreticly would solve...

    49. Re:Solutions Should Be Natural by Bush+Pig · · Score: 1

      The last place I worked used two languages for the system I was working on (I won't bore you with too many details) - we used PL/SQL to communicate with the Oracle database and C wrappers to communicate with the hardware devices on the production line (they make cars). It worked well, and it was a reasonable solution for the particular set of problems at hand.

      They have a bunch of standard libraries (mostly stolen/adapted from Richard Stevens), so it all works nicely.

      --
      What a long, strange trip it's been.
    50. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Standardisation is fine, but you can take it too far and more often than not it is.
      Organisations standardise on a single whatever and then use that even when it's the wrong tool for the job simply because it's the standard and it HAS to be used, discussion closed.
      I've worked in such environments and it causes disaster more often than not. In one company they had a policy that all Java classes HAD to be in a package com.thiscompanyname.thisprojectname, during deployment of some third party packages one guy (who didn't know Java but had read the policy document) decided to change all the directory names created after unpacking the jarfile (which was another policy, supposedly for performance reasons).
      Of course within seconds after the application was attempted to start up the error reports flowed in.
      Neither policy had been set by someone who'd ever worked with Java.

      And that's just one part of standardisation. Standardising on programming languages has its own problems.
      Sure you can do anything with just about any language, but at what cost?
      If I can build something in Java in an hour and a few hundred lines of code, but Fortran (say) is the standard and requires a week and ten thousand lines of code (did I mention there's a policy to not use 3rd party libraries?), I'd say having a policy that's so strict that using a tool that saves 90% of the development effort may not be such a good thing.

      Sure it's easier on the manager who has to allocate resources, sure it's cheaper on the training budget in the short run, but it makes for poor products that are overly expensive to create, overly complex and brittle, and will likely be very hard to maintain.
      But that's not the problem of the manager who made that standardisation decision, all he sees is that he has a lot more interchangable code monkeys to order around instead of having to plan his people and treat them as human beings.

    51. Re:Solutions Should Be Natural by Bloke+down+the+pub · · Score: 1

      How can you evaluate if the reasons are compelling enough, without knowing how compelling they are? And what if the developers measure compellingnessocity in metric units but you use imperial?

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    52. Re:Solutions Should Be Natural by TheRaven64 · · Score: 5, Insightful
      You dont learn a language, which is just basically a syntax and keywords, you learn abstract concepts like iterations, paralellization, recursiveness, object orientation, etc.

      You learn all of these things. Then you look at Visual Basic code, and realise that a lot of other people didn't.

      --
      I am TheRaven on Soylent News
    53. Re:Solutions Should Be Natural by Tim+C · · Score: 1

      The customer doesn't care how a solution is created. They care that it works and meets their requirements. Rarely have I seen requirements that read "... and it must all be done in the same language."

      I have had a number of customers specify language (generally Java, once or twice .NET), platform (generally either Linux or Solaris), database to use (Oracle or MS SQL Server mostly), technology (one client insisted on the use of webservices for *internal* inter-platform communication, just in case they ever wanted to slap a new front end on it).

      So no, I've never read a requirement that said "it must all be done in the same language", but I have read requirements along the lines of "it must all be done in Java on Linux with an Oracle database at the back end".

    54. Re:Solutions Should Be Natural by gormanly · · Score: 1

      Hey, I am writing in Fortran!

    55. Re:Solutions Should Be Natural by Trejkaz · · Score: 1

      This attitude may work well in small throw-away projects, but from experience I can tell you, maintaining a mixed language product is hell. Just think about the awful mess you're going to have 5 years down, when you need to do an upgrade. If the whole project is written in one language, you're going to have to find only one replacement compiler/library/development environment - which can be hard enough. If you have a mix of exotic languages, you basically can forget it, just rewrite the whole mess.

      Who ever said that new languages were automatically approved? I sure didn't.

      If you will read what I wrote once more, you might notice the part where I say: "if they can demonstrate a reason for using a different one."

      To put that into an example, someone is going to have a very hard time convincing me that a fourth language is required, if a system were already using C++, Java and Ruby. What could a fourth language possibly bring that the others can't already do between them?

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    56. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      And the fact that I can actually debug all the code that goes into one of our games. I love debugging a C++ callstack that goes in and out of an interpreter a few times. It's bad enough having ten programmers with different approaches to programming without mixing langauges.

      Sorry, but NOBODY writes a top-tier game in pure C++, and nobody ever has. It used to be the case that you'd use ASM for fast stuff and C++ for slow stuff. Now you use C++ as your bottom layer, but you sure use other languages with that. You don't write your AI scripts in C++ - you use embedded Python or Lua or something proprietary like the Unreal scripting language. And you damn well don't program your fucking pixel shaders in C++, you use a dedicated shader language.

    57. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      If your co-workers are scared of C++, then they suck^H^H^H^H aren't CS geeks.

    58. Re:Solutions Should Be Natural by cduffy · · Score: 2, Insightful

      My environment is all web-based programming.

      If that's all you're doing, and there's not a huge amount of variety between projects, and your sysadmins don't write in-house tools which might be covered by this policy, good for you. That said, I'm in an environment where there are good reasons to be heterogenous, and I would object strenuously if there were attempts by someone in management to make that change.

      Our core (a large webapp) is written purely in Java. That makes sense -- it should be written purely in Java, and if some developer were to prefer to use Jython or a Java-bytecode-compilable Scheme variant, they'd need to have an exceedingly compelling reason. However, there's more to our company than just the one webapp, and that's where other languages come into play.

      For the surrounding infrastructure that supports our code, we have bits written in POSIX shell (mostly related to integration with various components of the operating system -- these would be much more trouble to build and maintain in a different language, and the JVM's limited view of UNIX permissions means that some of their functionality couldn't be implemented in Java at all without writing a JNI module); bits written in Python (most particularly, our framework for using a fully OO inheritance model to build screen scrapers for 3rd-party terminal applications with which we need to integrate. This uses pexpect, a Python-focused variant of Expect [which is otherwise available for Tcl, and also has a Perl variant, but would be a PITA in either C or Java], for the screen scraping bits, and makes heavy use of Python's object model (including some things that Java won't do) to keep the code size and complexity for the actual screen scrapers (as opposed to the framework) at a minimum).

      We maintain patches to some 3rd-party OS-level tools which are written in C. We maintain some win32-specific tools, including an installer (written in a custom language just for the purpose) for a package of items to be installed on our client systems. We've patched the DSDT tables used to initialize the PCI bus on our servers before (large systems which were given to us by a partner free-of-charge) and written our own SCSI drivers (to be able to use a tape jukebox which we picked up nearly for free). We couldn't conceivably do all this in one language.

      If we'd been hamstrung to use Java for everything, the Windows installer would have been a pain. The screen scraper integration code would have been almost unthinkable to write in-house, and we would have licensed a (hard-to-use and expensive) API from a 3rd party. We wouldn't have been able to write the remote client support tool based on the UltraVNC SC client (the first version was literally put together overnight; the upstream code is C++). The system administration tools would have been written in shell in violation of the policy, because convincing sysadmins to write their tools in Java is pretty much unthinkable.

      That said, things are still broken out. The core dev team, which is most of the coding staff, only needs to know Java (and in many cases SQL). The system administrators only need to know POSIX shell, Python, PHP, SQL and C (and the entry-level ones can get away with only POSIX shell). The integration developers only need to know Python, Java and SQL, with a little POSIX shell being helpful but not required. The deployment engineers need POSIX shell, Python and SQL, and the most senior of them need C. Just because we have a number of different languages in use somewhere in the company doesn't mean that everyone needs to know everything, and the strong majority of dev staff (the core team) knows only one. System administration, integration and deployment are much smaller groups, so training them is more reasonable. (Further, these requirements are of the form "someone in the department must know", rather than "everyone in the department must know", particularly for the latter-listed languages).

      Standardizing on

    59. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Until you run into a concept you don't know.

      For example, you can be a programming genius, equally at home in any eager impure language from Fortran to Ruby, from Smalltalk to ML, from Pascal to Java, from Perl to C++. But unless you've actually learned how to work with laziness and purity, you are most certainly not going to be able to waltz into a Haskell project and "pick it up from the code".

      The argument that anything a Turing machine can calculate can be calculated in any Turing-complete language is true (modulo memory restrictions - you can't necessarily use any random recursive algorithm in C++ on an embedded system), but it's irrelevant. If your pseudocode is ALGOL-inspired, it's not going to be very useful as a basis for an implementation in Lisp.

    60. Re:Solutions Should Be Natural by bit01 · · Score: 1

      This attitude may work well in small throw-away projects, but from experience I can tell you, maintaining a mixed language product is hell.

      Only if you didn't plan for it and didn't use standardised languages and tools available from multiple suppliers.

      Just think about the awful mess you're going to have 5 years down, when you need to do an upgrade.

      One of open source's strengths is the upgrade path. You can't be left hanging by the vendor if you want to keep something running. I've been on projects that lasted more than a decade. In the proprietary, closed source tools were a big problem moving to new platforms but the open source was generally easy. You, not the vendor, controls your destiny.

      If the whole project is written in one language, you're going to have to find only one replacement compiler/library/development environment - which can be hard enough.

      Again, only if you didn't plan and you used closed source tools that the vendor has decided not to port to whatever your new platform is.

      If you have a mix of exotic languages, you basically can forget it, just rewrite the whole mess.

      Even if the whole project is in a single language that problem will arise. Rewrites usually happen because of changing requirements, not because of the language[s] that was used. If requirements haven't changed just use legacy hardware

      The same applies to training. The original developers may have been the biggest guru in the necessary languages, but where are you going to find maintenance drones that are fluent enough in all of them? Training a halfwit well enough to maintain some crappy C-Code is hard enough, trying to train him in C, Ruby, Scheme and Haskell is impossible. And even if you'd succeed, Mr C-Ruby-Scheme-Haskell-Halfwit won't stay once he comes out of training, he'll be gone to the next job before the ink on his new resume dried.

      True, but you need to strike a balance. Having a single language can unnecessarily restrict the speed, flexibility and adaptability of the development. Having too many, particularly closed source proprietary languages, or even narrow open source research languages, will bring the problems you describe.

      All in all, if you're doing long term projects stay with one language and try not to use too many extra libraries where you don't have the source code available.

      All in all, use all the languages you need to use and no more, whether they be C++, Java, SQL, OpenGL or a library API (which in itself is just another "language"). Make a business case for every language you use being the best alternative with all factors taken into consideration including interroperability and don't be snowed by vendor efforts to sell you "integrated" solutions, which are generally just a polite way of saying "we own you".

      ---

      Unregulated DRM = Total Customer Control = Ultimate Customer Lockin = Death of the free market.

    61. Re:Solutions Should Be Natural by Confused · · Score: 1
      To put that into an example, someone is going to have a very hard time convincing me that a fourth language is required, if a system were already using C++, Java and Ruby


      My point was, that approving of the 2nd and 3rd language is alreqady a bad idea in projects that need maintenance. If you already have Java (or C++, Cobol or whatever takes your fancy), it's very hard to come up with valid reasons to approve another language that justify the problems it creates for maintenance, except perhaps for SQL as a second language for the database stuff.
    62. Re:Solutions Should Be Natural by Jekler · · Score: 1

      In my opinion, I think that just sounds like a poor design or specification. Whether or not they want to implement a new front-end, back-end database, or some other technology should be irrelevant to the language used to build the application. You develop interfaces to your application, and your application shouldn't very well care what type of database is connected to the back-end. And on the front-end, it reads data, without concern for where the data came from. The front-end shouldn't care whether the data was read from a file, typed in, or scanned in on a hole-punched card. The person building the front-end shouldn't need to know anything about the language the module he's connecting to was built in.

      Developing a front-end should be like creating a text document. If you want to make a sentence bold, it doesn't matter what language your text editor was written in, you look for the feature it provides that allows you to make it bold. If you need the code and language of the core application in order to build a new front-end, you're not working on the front-end anymore, you're working on the whole program.

      I think a company standard language is a bad idea. Use the language that solves the given problem. As far as debugging, each module should be independently testable, so you shouldn't have stack traces into other interpreters until you get to integration testing. But if the modules themselves succeed in their individual tests, and they aren't coupled with another module, integration testing is little more than a formality. I've seen plenty of applications that use multiple languages very effectively.

    63. Re:Solutions Should Be Natural by indifferent+children · · Score: 1
      What possible reason is there to re-invent the wheel three times?

      Because, Mr. IT Manager, every time your developers try to push to develop a re-usable wheel API and well-encapsulated library, you say "We don't have time to do all of that, just do a one-off and ship it." That is why you reinvent the wheel in every project.

      --
      Censorship is telling a man he can't have a steak just because a baby can't chew it. --Mark Twain
    64. Re:Solutions Should Be Natural by mrchaotica · · Score: 1

      Huh? That's what I just said: you get them to tell you how compelling the reasons are. And you make sure they tell you in a unit system that you understand. ; )

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    65. Re:Solutions Should Be Natural by Patrick+May · · Score: 2, Insightful
      The same applies to training. The original developers may have been the biggest guru in the necessary languages, but where are you going to find maintenance drones that are fluent enough in all of them? Training a halfwit well enough to maintain some crappy C-Code is hard enough, trying to train him in C, Ruby, Scheme and Haskell is impossible.

      You could avoid the problem by not hiring halfwits.

    66. Re:Solutions Should Be Natural by Odocoileus · · Score: 1
      What am I missing here? I mean as a student I really want to know why multiple languages are a problem.

      1) As computer scientists, you either know all the languages, or you can pick up a new one overnight.

      2) Programs flow here and there. Any decent sized program may be hard to trace even if it is in one language, that is what good documentation is for.

      So shouldn't the documentation be sufficient to navigate the program without being concerned with the language each part is implemented in?

      a little ghetto where other programmers are afraid to walk at night.

      Is that the ghetto called professional-programmerville?

      --
      ...
    67. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Not sure if its meant to be taken in jest, but it raises a good point. Sometimes you'll have to take advice from your developers, who could be promising the world with one or two languages. Sometimes you'll just have to use what experience you have with a language and make a decision based on that.

      Its not a perfect system by any means, but if people are paying you to make judgements, you owe it to them and to your employees to make the most informed one you can, and if you can't, have someone more informed make it for you.

    68. Re:Solutions Should Be Natural by Maximum+Prophet · · Score: 1

      Support and Maintenance are often additional revenue streams. Many companies (cough, cough, Sun, SAP, cough) don't want to minimize S&M, they want to maximize it. But not to the point that people stop buying their products.

      --
      All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
    69. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Problems and needs are naturally occurring things.

      They take on unforeseen forms with non-standard characteristics. If your tool can't solve the problem or satisfy the need, you build a new tool that does. It's the human way.


      And even if the tool can solve the problem or satisfy the need, you still often find new tools being used, needlessly and wastefully. For example, the problem might be solved just fine using the company standard of J2EE, but the developer insists on using .NET because he's more comfortable with it.

      Likewise, your company can standardize methodologies and practices all it wants. But should they ever standardize the tools they use to solve problems ... well, let's just say it won't be long before a problem or need comes along that the standard doesn't fit.

      And then someone might be tempted to work hard at trying to make your standard fix it and work. They might spend hours re-inventing the wheel. And what will that get them?


      If they are competent, they will be able to clearly explain why the standard tool either will not work at all or will cost more to make work than is gained by following the standard. They will then be granted permission to use another tool, and that tool may be added to the standard as allowable for solving the type of problem in question, if warranted.

      The customer doesn't care how a solution is created. They care that it works and meets their requirements. Rarely have I seen requirements that read "... and it must all be done in the same language."

      The customer certainly does care how a solution is created, if it affects supports costs and future development costs. And choice of language does exactly that. Standardization in a large ogranization can absolutely save money. Yes, it may cost some individual projects more money than allowing them to do whatever they want, but what matters is the *net* savings to the company.

      I am a computer programmer. I make computing devices do what I want. I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions.

      That's the attitidue! To hell with you employer. You'll go far.

      In my dictionary, fatalism is the inability to cope with change. Adapt or fail.

      That's sweet irony coming from a man who refuses to adapt to company standards.

    70. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Yes and no, you can use a miriad of languages for web development BUT they are not created equal, and those differences are the ones that could make a language a better suit ( in time for example...$^x )for your particular WEB need but maybe another for a business logic rules back-end system.

    71. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      IF you take the term 'standardization' and replace it with 'least common denominator' you can see where this type of project invariably ends up and what it accomplishes. Basically, all projects are then capable of that which even the lowliest of projects can accomplish.

    72. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      So you don't want the people under you getting smarter and better? Yeah, I am sure you are a great project head. If people want to learn on the job, that is okay, just so long as the boundaries are set that the job is done on time and working.

    73. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      I'd like to see somebody trying to write a compiler in HTML, a web page in SQL or a backup script in Ada.

      Then you need to check out this site

    74. Re:Solutions Should Be Natural by plumby · · Score: 1
      Why, the ability to say, "Yep, and we did it all with one language."

      While it may not always be sensible to use one single language across the entire enterprise, there is a very good reason to limit the number that you do use. A very specific example from where I work - we currently have desktop apps written in Java, Delphi, C++ and VB. Apart from the Delphi one, these are very rarely altered. As a result, where the people mainaining those apps have left there has never been a great call to replace them with people of similar skills.

      For the Java clients, this is no major problem, as most of our backend systems are written in Java (or COBOL), and therefore they already have the skills. However, we do not have a single person left in our development teams that actually knows VB or C++, so on the odd occasion that we do need to amend them, we usually end up with someone who's never seen the language before attempting to do a bug fix. Had we standardised on a single language for desktop UI development, this would not have been an issue.

    75. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      >Except that "Gosh, I really want to play with this" is, especially among hacker types,
      >probably the single most powerful motivator there is. Disallow that, and not only do
      >you lose out on the drive that hackers have to play with something cool, but they get
      >annoyed and disgusted, and probably wind up working less hard on the things that they
      >are told to work on.

      And thus illustrates one of the differences between a hacker and the
      much coveted software professional: One is out to get the job done,
      one just does whatever they want.

    76. Re:Solutions Should Be Natural by marcosdumay · · Score: 1

      "...must think about the awful mess you're going to have 5 years down, when you need to do an upgrade. If the whole project is written in one language, you're going to have to find only one replacement compiler/library/development environment - which can be hard enough."

      Never met one of those languages that cease to exist in 5 years. Oh, wait! Are you talking about MS's ones here, aren't you? No other do. Even Cobol has plenty of tools nowadays.

      "...but where are you going to find maintenance drones that are fluent enough in all of them? Training a halfwit well enough to maintain some crappy C-Code is hard enough..."

      If you hire halfwits, none of your code will be maintanable. Period.

      That said, all that makes the code unmaintanable is bad programmers working on it. It doesn't matter if you use 1, 2 or 7 different languages at the same time. If your programmers know what they are doing they'll produce good code. There are plenty of techiniquer to mix languages, all of them are used because they are good for something. And all those languages are out there also because they are good for something.

    77. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      II managers have no business pusing standards on IS. Your corperare web tools a mix of asp and php? good! you are using the best of each language to get the job done, get the productivity up and the more important thing. Making more money.

      your pet projects and ajendas are 100% worthless unless they produce real dollars. and Honestly if your web monkeys cant code in php and asp then you need to hire more competent employees. Using the best tool for the job to get the project finised on time with the greatest maintainability and more importantly, make more money for the company is #1.

      you reorganizing for the sake of your ego is not.

      Sorry if this sound attacking but I recently had to play this game with the IT manager trying to force his ideas on my IS department. I'm the IS manager and the IT manager is not going to tell my guys what to code in.

      And I hold steadfast in use the best tool for the job. I do mostly corperate internal applications for finance and sales as well as have my guys maintain the intranet site. We use a mix of ASP,php,VB,Python here and on Windows and Linux platforms. It whines on a regular basis about the linux servers and workstations and until they can produce monetary justification the IT manager has been told to "shut his pie hole, on that subject" by upper management.

      Fools rush in and "standardize" for the sake of standardizing. Now tell me that you spend months and months researching your teams work style, idenifieid specifics where your plan would make improvements and wher your plan would cause problems (and it will) all in a nice report that can tell you and anyone else that this was well thought out and planned objective... I'll get off your back.

      99% of the time it's some ass who wants to "do things my way!" and force his ideas on everyone else and Damned with the concequences.

    78. Re:Solutions Should Be Natural by marcosdumay · · Score: 1

      "What possible reason is there to re-invent the wheel three times?"

      Because for some kinds of applications, one of those languages is order of magnitude faster and cheaper to code. And for other kinds, it is another language, and so on.

      Of course, there are other applications for what all of them perform alike. But that is not excuse for ignoring the advantages of each language.

    79. Re:Solutions Should Be Natural by clodney · · Score: 1

      In the abstract I agree with the language neutral philosophy, but it really isn't that simple. I have used C/C++ for many years and have lots of experience with the IDE, the debugger, and the standard libraries. Even more important, I have lots of practice debugging strange behaviors. All in all I am pretty efficient in those languages.

      I have some history with C# and Python. I know something about the available libraries but often have to stop to look up a call signature or search for a method that I know exists. The first time I encountered a Python bug where I thought I had copied a list but really only copied a reference it took me many hours to solve. The first time I needed to embed a resource in a C# program I had to go reading for a few hours. The point is, there are still lots of things lurking in those languages that I haven't had run into yet, and at some point I am going to run into them. I can work in those languages, and am perfectly willing to learn others. I've had to maintain some MC68340 assembler of late, and while I'm no expert I can muddle through.

      Ask me to maintain a Lisp program and I'm going to spend lots of time learning Lisp before I am even minimally effective. Ask me to maintain C++ code and I can hit the ground running.

      There are definitely cases where one language is preferred over another, and if the time horizon is long enough to eat the learning curve then you should use the best fit language. But if someone needs a script today and it is 10 lines of Perl or 200 lines of Python, I'll write it in Python because I can get those 200 lines done today. Maybe I could get 10 lines of Perl done, but the Python is more likely to work and more likely to be maintainable.

    80. Re:Solutions Should Be Natural by stanmann · · Score: 1

      Or you could employ a "*REAL*" computer programmer/software developer who understands the concepts of programming don't change and the language is just an implementation tool.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    81. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 3, Informative
      In my experience, I'd rather steer clear of such programmers.

      I've had to debug hideous code because developers decided to make use of a technology just to boost their CVs. Programs mixing ADO and DAO because someone added some code and thought they'd try out ADO (even though having consistency in the same program was more important).

      My favourite programmers are those who concentrate on delivery. They keep an eye on what's around the corner, but at the same time, have a balanced view of using new tech over old. They get the job done because they have been using the same tools and methods for so long that they know how to handle certain issues, and coding it is almost second nature. Which means that they are more focussed on things like getting the business requirements right.

    82. Re:Solutions Should Be Natural by oddaddresstrap · · Score: 1

      Solving a real problem with recursion for the first time is a kick, especially when your boss says it won't work.

    83. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 2, Insightful
      You are right.

      For instance, with your set, would PERL make sense? For me if a developer said that they wanted to add a step to a process as PERL, I'd tell them to just write it in one of the core languages. A 10% time saving wouldn't justify the legacy costs and lack of leverage. On the other hand, if someone suggested that we install Bugzilla, even though it was another language, it could make sense.

      In the end, it's about what the most cost-effective decision is. And most of the time, adding a new language doesn't meet that. The most common justification to me is actually switching languages (like companies I know that decided to stop writing new VB and switched to C#, or in my case, making a cost-based decision to switch to Python).

    84. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      This attitude may work well in small throw-away projects, but from experience I can tell you, maintaining a mixed language product is hell.

      Agreed! I had to work on a 25 year old program once, that had been ported from IRIX (I think) to Solaris to Windows. It was a mess of Fortran, Ada, auto-generated C, VB, and third party DLLs in god-knows-what. Some parts linked directly together, some parts were separate binaries communicating through COM. When I left that project they were tacking on VB.NET to add XML/SOAP capabilities. We had to use no less than 3 IDE's for coding/debugging on a daily basis. I shudder when I think about what that mess is doing right now. Hint: big government contractor, I believe the navy was our customer for that product. Posting anonymously because too many people know my /. ID.

    85. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 1
      I don't entirely agree.

      Switching to any language requires some retooling of the mind. It's nearly always going to be slower than using what you know. If you have a live bug to resolve, would you rather it be in the language you've been writing in for 5 years, or something you've never seen before?

    86. Re:Solutions Should Be Natural by crawling_chaos · · Score: 2, Insightful
      Disallow that, and not only do you lose out on the drive that hackers have to play with something cool, but they get annoyed and disgusted, and probably wind up working less hard on the things that they are told to work on.

      Which causes management to move development to the subcontinent, where such prima donna behaviour is not coddled. You take the man's money, you play by the man's rules. If you can't return value in excess of your salary on those terms, expect to be asking someone if they'd like to Biggie Size that soon.

      A while back there was an article on NASA's programmers for the Shuttle's systems. They don't use the latest whiz-bang tools, they work nine to five, and they follow a development model that is so rigid that most coders would quit after the first five hours. They also have never flown a mission critical bug, if I recall correctly. There's not a line of Ruby, no perl scripts, no XML, no fun. Just software that works as advertised. In the end, that's what management wants to build. Your self-esteem is secondary at best, despite what your Kindergarten teacher told you all those years ago.

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    87. Re:Solutions Should Be Natural by bhsurfer · · Score: 1
      /* T-SQL code */
      DECLARE @htmlString VARCHAR(5000)
      SELECT @htmlString = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>dumb thing to do</title></head><body>Generating html from sql is dumb sometimes, but not impossible or even difficult. Another query or stored proc could provide the content and nobody would be the wiser. This is how lots of content management systems work.</body></html>'
      SELECT @htmlString
      --
      Those are my principles, and if you don't like them... well, I have others.
      Groucho Marx
    88. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 1
      As computer scientists, you either know all the languages, or you can pick up a new one overnight.

      And be as productive as after 2 or 3 years? Hardly.

      Some languages are not that regular, either, because they are more specific than general. An old mainframe 4GL I used was built around developing screen applications. Once you got going in it, it was rapid to develop in, but getting going in it had a considerable lead time.

    89. Re:Solutions Should Be Natural by Chandon+Seldon · · Score: 3, Insightful
      Code for the space shuttle is embedded systems code designed to run on an otherwise obsolete platform. Also, they can easily afford to spend a million dollars per line of code.

      Real projects are a bit different. There are time and budget constraints. The choice of programming language(s) is an engineering consideration, and the choice should be made by the same people who would chose data structures and algorithms.

      In the real world, working with more than one programming language can save a lot of time and effort. A competent programmer should know most of these languages anyway, and learning a new one is pretty easy.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    90. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 2, Insightful
      ... and then what happens if you then want to put some of the functionality that you wrote in your flat text reader into your web service (for example)?

      Multiple languages in your example are only justifiable if I know that the file processing in our key language could not meet the business requirement (like it was overnight processing and would take 20 hours in our key language and 2 hours in an alternative). Even then, I'd seriously consider what else could be done first.

      The cost of programmers and delivering the service is a far higher consideration to me than the cost of machines. More languages means more complication and risk.

    91. Re:Solutions Should Be Natural by JesseMcDonald · · Score: 1
      One is out to get the job done, one just does whatever they want.

      The concept of the "software professional" is an ideal which doesn't exist in practice. In the end, all employees do their work out of personal motivation. The difference between "hackers" and those closer to the businesses' ideal is that "hackers" find their personal motivation in the work itself, and so-called "professionals" are motivated primarily by the material compensation (i.e. money). There's nothing wrong with either, but in choosing between the two you have to be aware of the difference. A "hacker" generally has a deeper understanding of the practical side of software development, and can typically do incredible things when properly motivated. "Hackers" tend to do better in more flexible environments, where there is justification for taking some risks in exchange for a huge potential payoff: startups, R&D labs, experimental projects.

      "Professionals", on the other hand, aren't primarily motivated by their love of the work itself. They can be very capable, but need the formality of processes and procedures to bind them together into a functional team. The average productivity of a good "professional" is probably about the same as the "hackers", but their peak productivity is a lot lower. Also, "hackers" pretty much have to be good at their job by definition; it's their hobby as well as their work. "Professionals" don't have that level of interest, and thus the percentage of good "professionals" is probably lower than the percentage of good "hackers" within their respective groups. On the other hand, their output will be a lot more consistent, with correspondingly lower risks. "Professionals" are generally best in established projects, doing things that are fully explored, with a low tolerance for risks and a need for consistent performance.

      Both types of employees have their places. Most projects will require at least some "hackers" and some "professionals". There's nothing inherently better (for all projects) about "professional" behavior vs. "hacker" behavior, or vice-versa. It all depends on the type of project and the acceptable level of risk.

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
    92. Re:Solutions Should Be Natural by Chandon+Seldon · · Score: 1
      Theres no point saying to someone , "hey , why do you drive that car to work when you can fly there in 2 minutes in this F-15?" if they've got no clue how to fly an aircraft.

      It also makes no sense to not use a hybrid Airplane/Truck approach for a worldwide delivery service like FedEx.

      I'll admit that an Aircraft/Hovercraft/Tractor/Submarine approach is probably not the plan, but there's a perfectly good argument that moving from Airplane/Truck to Airplane/Truck/Motorcycle would be appropriate if the company decided to add high speed courier service. Such a plan should be weighed on it's benifits, and if the high speed courier serice is stopped then the motorcycles can be retired.

      I think it's about the same with programming languages - use the right tool for the right job.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    93. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      I am glad there are people like you. There is an entire stratum of developers that need to do the "yes-sir, may I have another" work... Years ago you did Cobol or JCL.

      If you want to self-select and purposefully make your career a joyless enterprise, that's great... less competition for me...

      Me and my kindergarten teacher will go program some stuff that actually makes us excited to be in the programming field. And, btw, she's hot!

    94. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      It's not so outrageous. I'm a contractor, and I have clients who still need to use PHP 4.

    95. Re:Solutions Should Be Natural by Xentor · · Score: 1

      Don't get me started... I consider VB.NET my current favorite language, and I could tell so many horror stories about badly-written VB code. People SHOULD learn the concepts, not the language, but some people just don't get it. So few people can really appreciate a beautiful design nowadays...

      --
      "The amount of intelligence on this planet is a constant. The population is growing." -Cole's Axiom
    96. Re:Solutions Should Be Natural by misleb · · Score: 1

      I've had to debug hideous code because developers decided to make use of a technology just to boost their CVs.

      I don't think this is the type of programmer that the parent was referring to. Doing something because it is interesting and doing something to boost your CV are two different motivations.

      -matthew

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    97. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 1
      I am a computer programmer. I make computing devices do what I want. I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions.

      Sounds like you are lucky to work in an ill-disciplined company. I've ran a programming team, and you'd be starting down the road to getting fired if you did that with me, or most managers I've known.

    98. Re:Solutions Should Be Natural by StillNeedMoreCoffee · · Score: 1

      Ideally the language should not make a difference, but it does. Ideally the pool of program designers should be able to lightly like deer jumping over branched on the path be able to jump from envirionment to environment, language to language without effort and escape the hounding wolves of project needs.

      There are several issues on several scopes.

      The problem at hand.

      The developer needs to solve the problem at hand, either by re-tasking a tool
      available or develop something new. Here the impedence match of the language
      to the problem can govern how quickly that is done. If their are no learning
      issues, probably quickly. If learning issues less quick and probably bad code
      will come out (be honest, your first C , PHP, Java programs remember how
      much you leaned about what not to do the second time). Each envirionment has
      its own Lorenzian attractors to how an application will best be designed with
      subtle changes in the computation model and features having deep effects.

      The project as a whole.

      If you have multiple people working on a project or multiple parts that are
      different problems, then you may end up with different tool/language choices
      for each part as appropriate, or not. This is more an issue with all the
      open source products because you dont have the "I need 10 licenses to do this
      project" issue. But that can be a double edged sword.

      The IT department.

      Different people doing different things and possibly different languages.

      The Enterprise.

      Multiple IT departments in multiple locations with one or more server farms
      with all the products loaded and maintained.

      From an economy of scale perspective if the Enterprise can standardize on a set of tools and languages, the procurment and maintenance staff has less burden and squacks less. With the software foundation and co. sniffing around for litigation opportunities, a well controlled stable of software is a wise risk avoidance strategy.

      Like most opportunities, if someone comes to them and says its a good idea to standardize for those reasons they have a job and power given to them as a beauricrat in the company and a certain level of job security. They act as the buffer between reality and the executive.

      The IT and HR folks would love to have people as not people as much as resources/FTE's where if you have a standard set of software tools you can move those pawns around so you have no slack time and can get the most out of your staff for the dollar spent. And if you standardize on the popular products you have more people to hire from (at lower wage, but lower experience) thinking that that buys you something.

      So my observation (as one recently let go after 30 years on job) is that the standarization in companies comes from a number of different agenda's most of which revolve around corporate cost cutting and commoditization of the individual, risk avoidance aga

    99. Re:Solutions Should Be Natural by 16K+Ram+Pack · · Score: 1
      I don't quite agree with your distinction. In my experience the pro developers are just interested in a different problem space.

      The people I like to work with aren't those who will spend time tuning an overnight print process from 3 hours to 10 minutes, they are the people who prefer spending time dealing with understanding the business needs. They don't really like coding, beyond what it can do for them.

      The need for "hackers" in business development is diminishing. C++ coding skills are diminishing in demand. For many companies, the speed of code is getting to the point of being irrelevant, beyond network and database IO. The mainframe departments I know have less than 5% hackers to developers, because they're not required. This trend will happen to PC/web departments.

    100. Re:Solutions Should Be Natural by Viol8 · · Score: 1

      "use the right tool for the right job"

      And if you don't have the staff who can use that tool then what?
      Hire a dozen new people who know nothing about your company or how
      it operates and sit them down and expect them to magically write great
      code that does just what you want?

      Sorry mate , in the real world you can't always pick the best tool
      for staffing reasons and until computers can program themselves thats
      not going to change.

    101. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      They dont have bugs because Mark Adler is a bleeding genius and he can do anything without making a mistake.

    102. Re:Solutions Should Be Natural by mcvos · · Score: 1

      Which causes management to move development to the subcontinent, where such prima donna behaviour is not coddled. You take the man's money, you play by the man's rules. If you can't return value in excess of your salary on those terms, expect to be asking someone if they'd like to Biggie Size that soon.

      That's exactly the wrong approach to take with talent. The job of a manager is to get the most out of the talent he has at his disposal, not to stifle and downsize it.

      In software engineering, the difference in productivity between good programmers and bad programmers can be huge. It's easily possible for someone to be ten times as productive as someone else. And since he's unlikely to get paid ten times as much, you'd better do whatever you can to keep him happy.

      And even if he's not 10 times as productive, a smart manager will still make sure he keeps his coders happy. Happiness is good for productivity.

    103. Re:Solutions Should Be Natural by chris_mahan · · Score: 1

      My favorite programmers are the ones that tell management to "fucking take a hike" when aforementioned management grandly announces that all must follow "Z".

      To be fair, "fucking take a hike" means "Of course, of course, absolutely, 100%!" and then actually doing the exact opposite and saying "we don't know how to do it in Z, but we can do it in P in 2 days" and let management squirm and squirm as thick black deadlines full of business unit VPs come looming menacingly over their well-decorated offices.

      It's twisted, but oh so fun.

      --

      "Piter, too, is dead."

    104. Re:Solutions Should Be Natural by JesseMcDonald · · Score: 1

      I would say that what you're describing isn't software development at all, but rather the natural evolution of the "business manager" role to include the use of modern tools -- high-level computer languages designed specifically to solve common business problems. Sure, their job involves customizing and controlling existing business software for the tasks specific to their business, but that ought to be a standard skill for any competent business manager by now. The categories I was talking about concern software development, not just throwing together a template-based database schema and a cookie-cutter GUI into a "business app", where the "developer's" contributions make up about 1% of the final product, however important those customizations might be to the business. The software developers (or hackers) aren't the ones that performed that last, miniscule (but important) step, but rather the ones that developed the tool in the first place, without whom that final step would not be possible.

      As a group, the numbers of hackers and developers are both decreasing as the tools are created for non-software-developers to easily solve their own problems. It's the same as any other industry: in the beginning, there are lots of skilled craftsmen doing custom jobs, because in a new industry all the jobs are custom. Over time, the most common jobs are automated, and the number of craftsmen decreases. However, to a greater or lesser extent, there remain cases where no existing product does what the customer needs. In those cases the craftsmen (both hackers and developers) are still quite important, and those kinds of jobs remain despite the automation. After all, you can't completely automate custom products, and there are always new problems to solve that require the attention of a tool-maker and not just a tool-user.

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
    105. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Which really goes to show a level of emotional immaturity. I'm also not convinced that self-styled 'hackers' are always the best programmers, although they're loud enough about their achievements that they think they are.

      They're just snotty enough that they would dismiss someone who could make a DB2 SQL query fly, because it doesn't fit with their value system. So by which definition are they more competent - or useful?

    106. Re:Solutions Should Be Natural by TheSpoom · · Score: 2, Insightful

      I'm sorry, but even as a programmer I can see that having your program work and be maintainable is much, much more important than allowing a developer to play with new toys.

      --
      It's better to vote for what you want and not get it than to vote for what you don't want and get it.
      - E. Debs
    107. Re:Solutions Should Be Natural by stanmann · · Score: 1

      I would prefer it to be in a language I am familiar with,

      But!!!

      I would much rather it be in a standardized structure with logical documentation and a language I've never usedthan in a language I am intimately familiar with and without documentation or following of good practices.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    108. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Following a mixed approach can be just as much a religion as following a standardized approach. Neither one is a solution unto itself.

      Asking which tools, languages, etc. best address what needs to get done comes way done the line after considering requirements, identifying tasks, some high-level conceptual design, etc.

      Once all of the up front work is done and you are looking over the potential toolset a team should select a minimal set of tools. If more than one tool can do the same thing then standardize on just one of them. This allows for a mix of tools, but reduces noise and confusion.

      That said if your company or group basically do the same thing over and over it might be beneficial to standardize on a specific mix of tools; with the option to review them every 6 months or have a process to allow people to champion and defend new tools.

      When working as a professional team standards are not a bad thing. People will ALWAYS disagree, but standards set the ground rules on how we can (hopefully) work together in an effective and efficient manner.

      So in short, IMHO, standardizing on a MINIMAL mixed set of tools is usually optimal. The issue is at what point do you do this. on a project by project basis or company wide?

    109. Re:Solutions Should Be Natural by the+chao+goes+mu · · Score: 1

      If you're using ruby, C++ and Java, I think what the fourth language could bring would be "performance".
      Just a thought from a die-hard forth/assembly programmer.

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
    110. Re:Solutions Should Be Natural by cduffy · · Score: 1

      If you don't trust your technical staff's ability to clearly communicate accurate answers to your technical questions, you need a better technical staff. (Correlary: If your managers don't trust your judgement, either you or they should be fired).

      Yes, such environments exist. I'll admit, though, that they're rarities.

    111. Re:Solutions Should Be Natural by mcvos · · Score: 1

      I'm sorry, but even as a programmer I can see that having your program work and be maintainable is much, much more important than allowing a developer to play with new toys.

      Well, duh. Maintainability is one of the most important considerations when building software. But that doesn't mean that firing your best people because they don't fit into the mold is a very good idea.

      I'm not arguing against maintainability, I'm arguing against the claim that there's no place for prima-donnas in programming.

      And playing with new toys can actually be very important if you want your company to stay innovative and competetive. Just don't include those toys in your production systems before you know what you're doing.

    112. Re:Solutions Should Be Natural by Impy+the+Impiuos+Imp · · Score: 1

      Once you are scared of the beast you learn to treat it with respect!

      > Or better still, leave it alone.

      Hence slashdotters average interaction with females is

      Shit, this is too easy.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    113. Re:Solutions Should Be Natural by sjames · · Score: 1

      Except that "Gosh, I really want to play with this" is, especially among hacker types, probably the single most powerful motivator there is.

      It's OK as long as that is not used as a justification to choose X instead of Y. If X is appropriate for the project and the team want's to us it, great! If they want to use perl to write my new real-time operating system, they can take a flying leap.

    114. Re:Solutions Should Be Natural by Impy+the+Impiuos+Imp · · Score: 1

      I just inspected code where the guy memset'd to 0 a FILE *f pointer after fopen and he was done using it.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    115. Re:Solutions Should Be Natural by Impy+the+Impiuos+Imp · · Score: 1

      > Posting anonymously because too many people know my /. ID.

      Yes, knowing a government agency was wasting money on a poorly designed, huge honkin' software project would greatly narrow things down and put you at risk.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    116. Re:Solutions Should Be Natural by Impy+the+Impiuos+Imp · · Score: 1

      Then you gotta unroll the thing anyway because your embedded system can't afford the stack space overhead.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    117. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0
      the people who prefer spending time dealing with understanding the business needs. They don't really like coding, beyond what it can do for them.


      These are the people I really do not enjoy working with. They tend to be impatient, focusing on a narrow end point, rather than the task as a whole. The people I like working with are those who care, who aren't just motivated by the dollar.
    118. Re:Solutions Should Be Natural by pthisis · · Score: 1

      We were able to do some mixed language solutions (C++, FORTRAN, C, perl, etc.) and they were a nightmare to maintain. in hindsight, I think it would be better to keep the apps all in one language rather than mixing.

      I have to disagree on this, strongly. I don't think I've ever worked on a large application that was all in one language, and it's not very hard to maintain them as long as you structure the code properly.

      1. Avoid heavyweight interfaces like CORBA, COM, XML-RPC, SOAP, etc in favor of simpler IPC solutions; sockets are fast, widely available, and much more likely to be portable and continue working with the next version of your OS/platform/development environment. Also, simpler IPC encourages you to decouple your design, which is generally a performance and maintenance win.
      2. Only embed languages into the same process if there's a clear, well supported API for it and you're _positive_ it's the right way to go. Writing a perl or python extension in C is okay. Building .o files from C++ and Fortan and linking together gets to be a nightmare and is best avoided unless you have strong arguments to the contrary.
      3. Don't use development environments that lock your code in; the preferred repository for your code should all be in one version-control repository, and it shouldn't be "All the Foolanguage code is done in environment X and just randomly exported to ClearCase to satisfy requirements but the _real_ code/versioning/etc is the environment X crappy internal project versioning and so you can only edit Foolanguage code with environment X".

      But the last project I was on had about 100,000 lines of code, split between Java, C, python, and perl. The current one has about 300,000 lines of Python and lesser amounts of Java, PHP, shell, and C. We haven't had any problems with maintenance because of using multiple languages.

      --
      rage, rage against the dying of the light
    119. Re:Solutions Should Be Natural by Impy+the+Impiuos+Imp · · Score: 1

      > Me and my kindergarten teacher will go program
      > some stuff that actually makes us excited to be
      > in the programming field. And, btw, she's hot!

      Son of a bitch! You are one precocious six year old! Way to go, little dude!

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    120. Re:Solutions Should Be Natural by pthisis · · Score: 1

      And if you don't have the staff who can use that tool then what?
      Hire a dozen new people who know nothing about your company or how
      it operates and sit them down and expect them to magically write great
      code that does just what you want?

      Sorry mate , in the real world you can't always pick the best tool
      for staffing reasons and until computers can program themselves thats
      not going to change.


      Have you ever seriously met a good programmer who couldn't pick up a new language quickly? I mean, short of switching to Prolog or SML-NJ or something else fairly unusual, any decent programmer who knows a couple of C, C++, Fortran, Java, VB, C#, Python, Perl, Ruby, Ada, Lisp, Smalltalk, etc isn't going to have any trouble learning another from the list and being pretty productive in a couple of days at most (and that's if you're going to one of the weirder options like Lisp or Smalltalk for someone who's never seen it before).

      They're not going to be up on all the language idioms or the dark corners (heck, with C++ you can use it for 10 years and still not know the language fully, let alone the libraries), but they're going to be pretty productive, enough so that if the language was really the right tool for the job then you've probably might the right project management decision in terms of maximizing productivity.

      --
      rage, rage against the dying of the light
    121. Re:Solutions Should Be Natural by Impy+the+Impiuos+Imp · · Score: 1

      > I'm not arguing against maintainability, I'm arguing
      > against the claim that there's no place for prima-donnas in programming.

      Until the assfat is baking, stuck, sizzling, to the furnace door, and I have to come in and save you because you decided to use some HMI layout program that actually slows coding because of its hideous behind-the-scenes interface and you have 307 different classes including structs you made needlessly into a class.

      My best bugfix:

      2 Microsoft programmers onsite@$1000/day for 2 days - $4000

      1 in-house "masters" CS for 2 days - $700

      10 minutes of my effort after those two days: $5 (I was cheap back then)

      Look on the "master's" face when my 10 minute inspection discerned the problem those three couldn't solve in 3 days: priceless (Hi, Amy!)

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    122. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0
      from sig
      from witlib import sarcasm
      thisPost=sarcasm.apply(thisPost)

      That's some mighty horrible OO you have there. How about

      from witlib import sarcasm
      thisPost.apply(sarcasm)


      ?
    123. Re:Solutions Should Be Natural by alister · · Score: 1
      Do you think it would be reasonable to standardize on PHP for web applications?

      I've been in an area where this was done. It was done because the nature of the web applications that were being written did not require both PHP and Cold Fusion. Either language had the same result (as far as we were concerned), staff were trained in both, it was as easy to find PHP developers as it was CF developers, and one didn't cost us anything to run and came packaged already.

      There will be times where you won't want to standardise on PHP. You might use a combination - you might be writing much more complicated applications and Java might be more suitable. You might want to use more than one language. The point, however, is that each additional cost (and every new language is a cost of one sort or another) must be justified.

      Alister

    124. Re:Solutions Should Be Natural by alister · · Score: 1
      Yep, you're an IT manager all right.

      I am not entirely sure that you've understood what's been written on this topic. There will be times where you won't want to standardise. You might use a combination - you might be writing much more complicated applications and Java might be more suitable. You might want to use more than one language. The point, however, is that each additional cost (and every new language is a cost of one sort or another) must be justified. I don't think we're disagreeing here, but I also don't think you've been paying attention.

      Alister

    125. Re:Solutions Should Be Natural by Arthur+Dent · · Score: 1

      That's not quite true is it?
      After all, the lion tamer that runs into the cage armed with nothing but an innocent air and a blindfold, might just possibly remain a lion tamer for the rest of his/her life! :)

    126. Re:Solutions Should Be Natural by alister · · Score: 1
      Because, Mr. IT Manager, every time your developers try to push to develop a re-usable wheel API and well-encapsulated library, you say "We don't have time to do all of that, just do a one-off and ship it." That is why you reinvent the wheel in every project.

      Now you're just trolling. I never view development as a 'one-off'. There's always a bigger picture, especially as we're an in-house development team. And like Duke Nukem Forever, we deliver when it's ready. Unlike Duke Nuken Forever, 'when it's ready' is typically around when we said it would be. This is because a common language allows for better re-use of code, and a modular development environment (which a common language facilitates) means we have a base level of tools that make every subsequent application half-finished before our staff ask for it, because the core environment's already there. Standardisation is not always the right thing to do, but when you work with a development team, you just can't diversify because developer X prefers one language and developer Y prefers another.

      It's somewhat frustrating when people respond to the point they've decided you're making, rather than actually reading a post.

      Alister

    127. Re:Solutions Should Be Natural by chris_mahan · · Score: 1

      you'd normally have to use

      import witlib # assuming a witlib.py in your path

      thisPost = "some silly comment"

      sarcasm_ified_post = witlib.sarcasm.apply(thisPost)

      but because I imported sarcasm from witlib, I can just use sarcasm by itself.

      You're assuming thisPost was an object that could be "applied". Alas, String object does not get sarcasm "applied"

      You know what, when witlib appears on the standard modules, i'll read the docs and fix my code :)

      --

      "Piter, too, is dead."

    128. Re:Solutions Should Be Natural by Trejkaz · · Score: 1

      There are plenty of good reasons for using C++ for small parts of a program which is otherwise entirely Java. For instance, many libraries you will want to use simply aren't available as pure Java, and you're forced to write JNI wrappers (this happened with our commercial code.)

      There are good reasons to put a scripting language as an option as well: if you want customers to have complete configurability, then it's better not to force them to write in an inflexible language like Java.

      I'd say three is the limit though, and the reasons have to be good to get that far.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    129. Re:Solutions Should Be Natural by Trejkaz · · Score: 1

      Of course I have nothing against ASM, but if you're using ASM then do you really need C++ anymore? :-)

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    130. Re:Solutions Should Be Natural by Cryptnotic · · Score: 1

      But not to the point that people stop buying their products.

      So... they want to maximize profits. That seems like sound business practice to me.

      --
      My other first post is car post.
    131. Re:Solutions Should Be Natural by Dekortage · · Score: 2, Funny

      This reminds me of a guy I worked with couple of years ago. He was a research scientist for a large technology company. The only programming language he knew was LISP. For some reason I don't remember, he was eventually told that he had to begin writing his projects in Java. So he learned just enough to write a LISP interpreter in Java -- and then continued to write all his projects in LISP.

      --
      $nice = $webHosting + $domainNames + $sslCerts
    132. Re:Solutions Should Be Natural by Chandon+Seldon · · Score: 2, Insightful

      Training is a small short term cost with huge long term benifits. There's no good reason not to do it.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    133. Re:Solutions Should Be Natural by cduffy · · Score: 1
      ... and then what happens if you then want to put some of the functionality that you wrote in your flat text reader into your web service (for example)?
      Then you come up with a clean interface between the two. XML-RPC libraries are available for almost every language in existance right now, and lighter-weight alternatives are also available. This is what we use for integration between our Python-based screen scrapers and Java-based web services. For more complex cases, any modern scripting language worth its salt (read: "not Perl") has a clean, simple and easy-to-use interface with C, CLR or Java bytecode as well.

      You're right in that man-hour cost is typically given insufficient weight in decisions relating to software development -- but productivity can be dramatically increased (and thus those costs reduced) by using a language appropriate to the task at hand. I've seen studies (ask if you need references and I'll try to dredge them up) indicating that the number of finished, debugged lines of code stays generally constant regardless of the language used. This means, of course, that a language which allows a given project to be completed in 1/10 the number of LOCs as would be required in another (not unrealistic -- I've seen that ratio or better in comparing Python and C, and 1/3 to 1/5 in comparing Python to Java for projects which Python is appropriate for; however, there are projects for which Python simply isn't appropriate, and only C will do) can allow that project to be completed with a fraction of the number of man-hours which would otherwise be required.

      I've also had projects (for my current employer) where what would otherwise have been a multi-month effort was literally finished overnight via use of 3rd-party code available only in C++ -- and we're a Java house.

      Using multiple languages within a single project sometimes makes sense, as well. The use of embedded scripting in modern computer games has made it much easier to have one team develop high-level behaviour quickly using an interpreted language while another team focuses on low-level underpinnings -- not to mention increasing customers' replay value via allowing easier and more extensive modding.

      Using different languages within commercial software development, particuarly when said languages are separated by clear product or functional boundaries, frequently makes sense.

      See my other post as well.
    134. Re:Solutions Should Be Natural by crawling_chaos · · Score: 1
      Talk to some real engineers sometime, not uncertified prima donnas. Standards are important, very important. This "keep the coders happy at all costs" mentality has done nothing to improve software reliability.

      Would you be happy to find out that your house collapsed because instead of speccing the same plywood as everybody else, the construction folks decided to use something that they read about on the Internet and was still experimental, just to keep from boring everyone?

      Some software projects require creativity, just as some construction projects do. 90% of them don't, though. We need more builders and fewer "creators."

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    135. Re:Solutions Should Be Natural by mcvos · · Score: 1

      You're talking about keeping bad coders happy. I'm talking about keeping good coders happy.

      Like I said: don't use experimental techniques in production systems. But that has nothing to do with keeping your good coders happy. Keeping good coders happy is simply good business sense. If you don't do that, the good coders will leave, and you'll be stuck with the bad coders. And then how are you going to finish that important system you were working on? In businesses where software quality matters, good coders are the company's biggest asset.

    136. Re:Solutions Should Be Natural by cduffy · · Score: 1

      Here, we have a large staff that knows Java and (in some cases) SQL. That's all they're expected to know, and they're expected to be good at it.

      We have a much smaller subset of our staff that knows Java, Python, PHP, C, C++, SQL, POSIX shell, and a bunch of little special-purpose languages as well -- and if we needed to learn a few more, we could do that too, and quickly.

      If you keep folks on staff (not your whole staff, just some subset -- perhaps a quite small one) who are flexible enough to handle whatever gets thrown at them, that's good enough to handle just 'bout anything. See my more extensive post elsewhere.

    137. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      Just be sure you don't put all your lions in one basket and count them before the hatch.

    138. Re:Solutions Should Be Natural by the+chao+goes+mu · · Score: 1

      I never found a use for C++ at all. But that may just be me.

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
    139. Re:Solutions Should Be Natural by Anonymous Coward · · Score: 0

      As a construction worker, I build things based on an clear and complete design.
      As a programmer, I create that design, and my compiler builds it.
      These are different tasks that can't be compared.

      HOWEVER, the architect who designs the house might be compared with a programmer. And there, it seems that the purpose of the structure being designed must be considered. More importantly, the talent and skill of the architect must be considered. We should have different expectations for a Frank Lloyd Wright than we expect of an architect for cookie-cutter suburbia or condos.
      So which one is more important in the long run?

    140. Re:Solutions Should Be Natural by cduffy · · Score: 1

      Nobody's arguing programmers should be able to use their own personal style to decide what language to code in, or otherwise flaunt company-wide standardization needlessly.

      People are arguing that programmers, when they make a strong argument as to the benefits of doing so, should be able to apply a language more appropriate than that which is by policy preferred (as opposed to mandated) towards a given problem.

    141. Re:Solutions Should Be Natural by crawling_chaos · · Score: 1

      No, I am talking about the fact that the vast majority of software projects are routine and require reliability, maintainability, and on-time delivery -- not innovation. Standardization helps with all three. We are building tract houses on a budget, not Falling Water (which not coincidentally is falling apart because of all of its neato features, while tract houses of the same vintage are doing just fine.) This isn't art, it's a construction job. The Indian coding houses have gotten this through their heads and that is one reason that so many US coders are being replaced with outsourced workers. That's the cold reality out there in the job market.

      --
      You can only drink 30 or 40 glasses of beer a day, no matter how rich you are.
      -- Colonel Adolphus Busch
    142. Re:Solutions Should Be Natural by Wdomburg · · Score: 1

      Wow, good luck debugging and maintaining a hodge podge like that. I can just imagine the want ad: "Needed: Developer competenent in C, Pascal, Perl, Ruby, Bash, and Business Basic. Must also have extensive experience using named pipes, CORBA, SOAP and OK/RPC! to glue disparate systems together." Seriously, there are sometimes good reasons to reimplement or to restrict choices in the first place.

      If the environment is disparate enough to have multiple needs, fine, but choose one appropriate language. If you're doing web services, do you want one person writing in PHP, another in Java, another using Ruby on Rails, and yet another doing everying in Zope?

    143. Re:Solutions Should Be Natural by Captain+Zep · · Score: 1

      Very well put - If I had mod points, I'd give you some. But I don't. Oh well.

    144. Re:Solutions Should Be Natural by yppiz · · Score: 1

      I've worked at several companies that mixed languages for web services. Some things really do work best in C++, and others are fine to put together in Java, Python, or even (god help us all) Perl.

      No, you don't have one person maintain the whole thing, but you do get individuals or teams to take responsibility for their part, and you make sure the interfaces are clean.

      --Pat

  2. depends on what you code by Pavel+Stratil · · Score: 4, Insightful

    Among my collegues we discussed this about a year ago. After doing some performance tests and after trying to write "problematic" pieces of code in some other languages, we dropped the standardisation idea. You either end up with bad performance or some long bizzare code (when you have problems with translation). There are also times where interpreted/scripting languages are of much higher value. Naturally you shouldnt end up using everything...

    There are a few languages groups:
    Special: Sql, Fortran, ASM
    Brute force: C,C++
    Object: C++, Py, Java, Ruby, Lua
    Scripting: Perl, PHP, asp
    High level: Haskel, LISP

    As Python, Ruby, Lua are all the same and closely related to Java I definitely wouldnt use all of them. You might be well of with one, maximally two from each of the groups you use (appart from the special group:)).

    That's my point of view being a person solving a very wide range of problems. But if you just write stuff that doesnt have much inovation (i.e. basic desktop apps.), a single language might suite well enough.

    1. Re:depends on what you code by Forbman · · Score: 1

      Hmm... I think I'd lump Ruby in more with Haskel & Lisp (you know, Ruby does have a lambda method...) It is far more functional than Python is...

    2. Re:depends on what you code by Anonymous Coward · · Score: 0

      Perl, Python, Ruby, PHP: Pick One

      This is probably where you could weed out some languages to support. They all fill the essentially the same void: Quick Programming. Pick the one that suits your needs the best. The gains of using one over the other are minimal and distinctive, so it should be easy to select one.

      Everything else is subjective w.r.t. the domain. "Desktop Application" depends on portability and speed needs (C# vs Java vs C++).

      It would probably be easiest to make a ranking of languages and have people write down reasons for selecting anything other than the ones at the top. That way you can settle these language wars quickly with a managerial decision.

    3. Re:depends on what you code by shutdown+-p+now · · Score: 5, Insightful
      First of all, there is no such language as "ASP". Classic ASP is VBScript/JScript out of the box (and you can also have e.g. PerlScript if you want to). ASP.NET applications can be written in any language that targets .NET, but typically it's C# or VB.NET. Also, it's very interesting how you lump Perl and PHP together and call them "scripting". If it means what it normally does, than why Python, Ruby and Lua aren't there as well? Or did you mean to write "web development", perhaps? but then it's even stranger, because Python and Ruby are also just as good as Perl in that regard (ever heard of those things called Zope and Rails?), and Perl is also a decent generic-purpose language which supports OOP (arguably to a better extent than C++ does, in fact). Lua, on the other hand, is not an object-oriented language by itself.

      Also, what makes Lisp high-level over, say, Ruby? And Haskell is a very different thing from Lisp, you know, probably deserving a category of its own (together with Scheme and OCaml).

      Then... WTF? Python and Ruby are closely related to Java?!! And Lua, too? Gosh... Lua isn't even object-oriented, for one! Ruby is essentially a bastard child of Smalltalk semantically, highly dynamic, closure-centric - nothing even remotely close to what Java is. Python - it has multiple inheritance and multimethods, again, something Java avoids on purpose. So... er... looks like you don't know what you're talking about, really...

    4. Re:depends on what you code by CuttingEdge · · Score: 1

      You missed one language that fits into all the categories.

      There are a few languages groups:
      Special: Sql, Fortran, ASM, Smalltalk
      Brute force: C,C++,Smalltalk
      Object: C++, Py, Java, Ruby, Lua, Smalltalk
      Scripting: Perl, PHP, asp, Smalltalk
      High level: Haskel, LISP, Smalltalk

      Download a version of Smalltalk that fits your needs today from http://www.smalltalk.org/versions.

    5. Re:depends on what you code by Anonymous Coward · · Score: 5, Funny

      We need a new moderation option: (Score:5, Pwned)

    6. Re:depends on what you code by dgatwood · · Score: 1
      Yes, now you can have one language that can do pretty much anything in a way that is so thoroughly illegible that no one can comprehend it. :-D

      One language to rule them all....

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    7. Re:depends on what you code by finnif · · Score: 1

      Special: Sql, Fortran, ASM

      SQL ended up in the same category as Fortran and Assembly? I'd guess Sql's probably the most used language in the world behind C, C++ or Java -- all of these exotic languages people are mentioning (Ruby, Haskell) still go through SQL to utilize any relational database.

    8. Re:depends on what you code by root-a-begger · · Score: 4, Insightful

      I agree with your concept of categorizing based on type/style of programming. I don't especially agree with your categories, but that's just my opinion.
      About 2 years ago, I went through the same thought process as asked in the original post. I was not encumbered by a large IT department that would dismiss my opinions if I came up with non-mainstream ideas. This led me to a very broad and lengthy search. Here is the result of my quest for an answer:

      1 - Application language - Erlang
      2 - Brute furce / close to the metal - C
      3 - System scripts - Bash

      I chose erlang after 8 years of Java programming which was followed by 8 years of Smalltalk. The main reasons for departing the mainstream OO world were concurrency, distribution and conceptual integrity. I found that in large systems what kept me worried most is being able to "prove" that my code worked as the system scaled and became distributed over local and worldwide "clusters". I wanted to be certain that no race conditions or locks occurred (just being able to monitor and restart VMs was not the answer for me). You can get concurrency assurance with Java or any "shared memory" / object pointer based langugage but you need very well written and tested frameworks to fully encapsulate anything that may be touched by more than one thread/process. Solutions like JBoss or other widely encompassing application servers also were not the answer for me as I had to trust that everything the app server did was correct and wading into these projects to find out if things are correct or to fix anomolies is a big challange.
      I simply grew tired of writting the frameworks required to encpsulate concurrency and limiting my application code to the nature of the frameworks. Sure, there are many existing frameworks in the Java world that encapsulate the hard work and concurrency for you. But thats exactly the problem: there are many of them. This gets me to the last point of my rational: conceptual integrity. Each Java framework unleashes its own concepts and patterns. I wanted one small set of patterns that are used everywhere. I found this in erlang. It turns out that by making concurrency a first class priority in the language design, the need to invent frameworks and other patterns to encapulate the hard work mostly dissapears leaving behind a clean slate to write your app.

      The second category, C, speaks for itself. Occasionally, I need to touch the OS or even bare metal and want a very straightforward way to do this. My C code ends up being very limited, well tested and compartmentalized.

      The third category was a tough call. I was tempted to pick Python/Ruby/Lua/Tcl for system scripts. But the bottom line is I didn't really need them and for anything complex, I could write system tools in erlang that were called by Bash. This keeps my usage of Bash simple and maintainable without introducing yet another language.

      I realize that my first choice, erlang, brings up the obvious issues of how do you replace programmers easily when you can't find resumes with erlang expertise. I have found that no matter what lagugage you choose, you have to re-train programmers to do things your way and there is a learning curve to introducing anyone new to your IT group. My choice in erlang has not increased the learning curve for good programms I bring on board.

      I realize this seems like a giant plug for erlang. It is and it isn't. My rational stands on its one regardless of your choice.

      good luck to you...

    9. Re:depends on what you code by killjoe · · Score: 1

      A very long time ago some really smart people wrote lisp, smalltalk, C, and fortran. Since then every other language has tried repeatedly to re-invent those languages each time never quite achieving superiority.

      Imagine if all the effort spent to make ruby, python, perl, java or whatever was spent making smalltalk better and better.

      In this industry we are doomed to continually rediscover 20 year old technology and call it new.

      --
      evil is as evil does
    10. Re:depends on what you code by Anonymous Coward · · Score: 0

      Imagine if all the effort spent to make ruby, python, perl, java or whatever was spent making smalltalk better and better.

      Imagine if everyone had said "Well, we have fortran. Let's focus on making that better instead of creating lisp, smalltalk, and C." (I don't even care if that chronology is wrong.)

    11. Re:depends on what you code by Anonymous Coward · · Score: 0

      Great points you made up until the last line "So... er... looks like you don't know what you're talking about, really...". No need to be a jerk about it. Just make your points and leave it to the reader to decide if either of you know what you're talking about. It's ending comments like that which make slashdot the seething pool of elitist script kiddies that it currently is.

      So, +5 for technical merit, -1 for style.

    12. Re:depends on what you code by shutdown+-p+now · · Score: 1

      It was a plain statement of fact, not a purposeful insult. From stylistic perspective, I think that's what they call a "conclusion" - clearly stating the point I was trying to make, which was to point out that GP's post had enough factual errors in it that he can hardly be qualified to answer the original question properly.

    13. Re:depends on what you code by Zontar+The+Mindless · · Score: 1

      Yes, and...? Python also has lambdas. For that matter, so does JavaScript.

      --
      Il n'y a pas de Planet B.
    14. Re:depends on what you code by Pavel+Stratil · · Score: 1

      AAh sorry I forogot that there would be people who would poke the post because it isn't 100% correct factually. Too easy to flame... Oh well, let me comment your reply to my post just for you:

      ASP: well I am biased against ASP so it was lucky to get listed at all. I dont like ASP in all its forms and thats about it.

      Perl and PHP: Well take it one end or the other, these are scripting languages.
      Same as Py/R/L. But Perl/PHP have their limits (deployment in case of PHP and performance-related in both cases), Py/R/L can do just about everything at decent speeds.

      OOP: well today basically any language has OOPish features. I used my personal bias here, cause I prefer OOPish coding with some languages, while I prefer functional coding with others.

      High level: Py/R being basically the same have some of the features LISP offers. Not all of them. Or if they do by now, I still prefer LISP over them to do some tasks.

      Haskel deserving its category: well there are languages I didnt mention at all. The point wasnt to categorise languages. But to categorise the way you code.

      Py/R vs Java: Py/R looks and feels the same. Probably because I don't look at the differences but the similarities. Java and Lua, in terms of coding, feels similar to Py/R. Each in its distinct way. Gosh you must have some really hard times writing in different languages that they seem so different to you.

      Lua and OOP: While it may not be the OOP language par excelence, it still has some OO features. Good enough for me.

      So to make it perfectly clear: My post was about coding categories, not categorising languages. I hope most people got that.

    15. Re:depends on what you code by arevos · · Score: 1
      Python - it has multiple inheritance and multimethods, again, something Java avoids on purpose.

      Python doesn't support multimethods. You can approximate them with decorators, but they're not natively supported.

    16. Re:depends on what you code by Anonymous Coward · · Score: 0

      Very interesting post!

      What I'm missing in your post is a discussion about databases. Are you using any DBMS? I know that Erlang has a built-in DBMS, is it good practice to use it? Does it support concepts such as views, transactions and declarative constraints?

      What tools/languages do you use to build UIs to your programs? Does your systems have a GUI?

    17. Re:depends on what you code by kahei · · Score: 2, Funny


      As Python, Ruby, Lua are all the same and closely related to Java


      Shh! I am getting near my target... the greatest of all game, the beast I have hunted all my adult life... the Complete and Total Idiot!

      Many times in the past I thought I had found him -- but now, now I am sure. Mere ignorance alone _cannot_ explain the statement above! The most awe-inspiring thing is the inclusion of Lua, which is so utterly unlike both Python and Ruby in one way and Java in another way! Without the Lua, it would just be factually wrong, and a bit stooopid. Adding Lua, though -- that takes it to a whole nuther level!

      Python, Ruby and Lua. All the same. And all closely related to Java.

      Magnificent.

      --
      Whence? Hence. Whither? Thither.
    18. Re:depends on what you code by shutdown+-p+now · · Score: 1
      Perl and PHP: Well take it one end or the other, these are scripting languages.
      I won't take either end, but will rather ask you to give a definition of a "scripting language" which you use in this case. Meanwhile, its absence notwithstanding...
      Same as Py/R/L. But Perl/PHP have their limits (deployment in case of PHP and performance-related in both cases), Py/R/L can do just about everything at decent speeds.
      First of all, I don't see how perfomance is relevant here. Compared to e.g. C++, or even Java, all five languages mentioned above are slow enough that their relative differences simply don't matter. They're still all in the same group.

      Also, it seems that you're claming here that Perl is slower than Ruby, which is certainly not the case. Out of languages listed above, on average, PHP is of course the slowest, Ruby is the second one from the end, then Perl, then Python, and Lua is the fastest. Furthermore, Perl and Python are generally close enough to each other in terms of speed that the difference is negligible.

      Py/R vs Java: Py/R looks and feels the same. Probably because I don't look at the differences but the similarities.
      Maybe you should look at the differences after all, because, you know, it's the differences that make you choose one over the other?

      At any rate, Python and Ruby do not look nor feel the same. Unless you've only had a cursory glance on both, that is. Python is your typical imperative language with decent OO support. Ruby is fully OO, yet often feels very functional (it mostly has to do with blocks). They are two very different languages, and require different mindsets to code in efficiently as well.

      Java and Lua, in terms of coding, feels similar to Py/R.
      Lua & Py/R is understandable, it's somewhere in between the two. But I keep wondering what Java, a static-typed, compiled, crippled-OO language has in common with these three, save for the OO part?
      So to make it perfectly clear: My post was about coding categories, not categorising languages. I hope most people got that.
      It's wrong even then, because one still wonders what Perl and Python are doing in two different categories, while Haskell and Lisp are in the same one. If you look at the really big picture, then all languages you've listed should've probably ended up in one group ("generic purpose"), save for SQL. Otherwise, the way you code is a function of the way the language is designed, so whichever criteria you use to draw the lines, they'll be in more or less the same places either way.
      ASP: well I am biased against ASP so it was lucky to get listed at all. I dont like ASP in all its forms and thats about it.

      OOP: well today basically any language has OOPish features. I used my personal bias here, cause I prefer OOPish coding with some languages, while I prefer functional coding with others.

      High level: Py/R being basically the same have some of the features LISP offers. Not all of them. Or if they do by now, I still prefer LISP over them to do some tasks.

      Lua and OOP: While it may not be the OOP language par excelence, it still has some OO features. Good enough for me.

      So, just to sum it up, then: you have categorised the languages largely based on your subjective bias, ignoring the objective criteria where it stood in the way.
    19. Re:depends on what you code by shutdown+-p+now · · Score: 1
      I didn't say it has native multimethods; it does, however, have everything required to implement them in such a way that they "look" native (that is, like a normal method call). You simply cannot do it in Java, nor, AFAIK, in Ruby.

      Also come to think of it, multimethods, and CLOS in general, are no more native to Common Lisp than they are to Python. Yet they remain one of the distinctive CL features.

    20. Re:depends on what you code by Anonymous Coward · · Score: 0

      A scripting language is that which the final output is a script, not a binary. DURRRRRRRRR

    21. Re:depends on what you code by hattig · · Score: 1

      I chose erlang after 8 years of Java programming which was followed by 8 years of Smalltalk.

      So you started writing in Java in 1988, 7 years before its release?

      Amazing.

    22. Re:depends on what you code by root-a-begger · · Score: 1

      this has already been relied to...
      The sentence structure was poor, but the meaning should be obvious since you know the chronology.

    23. Re:depends on what you code by shutdown+-p+now · · Score: 1

      So when C is interpreted, does it make it a scripting language then?

    24. Re:depends on what you code by root-a-begger · · Score: 1

      My post wasn't intended to be a complete discussion of erlang, lest I be moded a troll ;-)
      Here are some answers:
      For database, I am very happy with the erlang/OTP mnesia database. Mneisa is very robust, fast and supports transactions, replication, event triggers, etc... An add-on to it is rdbms, which adds type and relational constraints.
      For interfacing to SQL dbs, erlang has a nice ODBC library which works as expected. Also a native MySQL driver is available. So no problems there.
      For UI, I knew all my apps would use next gen dynamic HTML via things like AJAX. This works very nice as there are maturing erlang and Javascript libraries to support this. The erlang Yaws web server is superb as it give the best of simple templating like PHP with the power of the erlang platform.
      There exist erlang UI libraries for tradition GUIs ranging from X, Tcl/Tk, and GTK.

      enjoy, root-a-begger

    25. Re:depends on what you code by arevos · · Score: 1
      I didn't say it has native multimethods; it does, however, have everything required to implement them in such a way that they "look" native (that is, like a normal method call). You simply cannot do it in Java, nor, AFAIK, in Ruby.

      Well... It's true that Ruby doesn't have decorator sugar like Python 2.4 has. I'm not sure I'd go so far as saying that Python multimethod implementations look native, though. Not enough to be convinient for everyday use, at least - but I take your point, all the same.

    26. Re:depends on what you code by carlsonloggie · · Score: 1

      SQL isn't really a programming language. A programming language is one which is either interpreted or compiled, and is capable of manipulating data across a variety of problem domains. SQL is useful in only one problem domain---manipulating data in a relational database management system. In reality, SQL doesn't even do that. Instead, it is a tool that tells the RDBMS how you want the data manipulated.

      The initial thread discussed the requirement to use only one language. In practice, this is impossible. Web development is illustrative. You can't build a modern website in only one type of language---you need HTML and/or XHTML, you need CSS, you need Javascript, etc. If you proscribe the use of those tools, you limit the potential of your web development.

      In like manner, to prescribe the use of one particular language for all development puts artificial limits on the company's potential. Java has its uses, but doing game developement or scientific programming in Java is a waste of time and resources. For some high end programming, where compute cycles are at a premium, you want to use a language like C. For most programming, a language with automated memory management and garbage collection is best, because compute cycles are cheap, but programmers are not.

      I wish I knew which companies were forcing the use of any single language for all development efforts. I'd also bet that their development costs would rise as their programmers struggled to use that one language for tasks it was ill-suited for. I'd wonder if their increased costs would push the company into moving programming to the developing world. I'd wonder if they were able to attract and keep the best programmers, who would likely despise working in that environment. I'd wonder what would eventually happen to their stock price and, eventually, the CIO.

    27. Re:depends on what you code by NereusRen · · Score: 1

      My rational stands on its one

      Remember, kids: spell-check is not a substitute for proofreading ;). (At least he didn't also mess up "it's"...)

    28. Re:depends on what you code by root-a-begger · · Score: 1

      I take time out of my very busy day to try to provide a serious answer and I get 4 replies. 2 have to do with sentence structure about Java being invented after Samlltalk. Yours has to do with a misplaced word.
      Try to stay on topic. Your reply is what makes people like me not want to participate in meaningful discussions.

    29. Re:depends on what you code by poot_rootbeer · · Score: 1

      So... er... looks like you don't know what you're talking about, really...

      Way to pick apart the example and miss the point.

      Argue about the parent poster's groupings all you want, but the concept that there are groups of languages optimal for each kind of task and that it is a practical idea to standardize on one language within each of those groups remains sound.

    30. Re:depends on what you code by NereusRen · · Score: 1

      I didn't have the time (or experience with the relevant issues) to get into a meaningful discussion, so my alternative would have been to not post at all. You may think that would be preferable, but I just found it humorous that there would be two misspellings so close to each other, both of which became other real english words (and thus wouldn't have been caught by spell-check), in an otherwise quite well-written post.

      Off-topic, sure, but not all of us think that off-topic deserves to be a negative modifier.

    31. Re:depends on what you code by Anonymous Coward · · Score: 0
      I find Smalltalk to be among the most legible of all languages; its syntax is one of its most appealing features. Which is more readable,
      window.plot(10,20,RED)
      or
      window plotX:10 Y:20 color:#red
      ? The Smalltalk selector syntax allows you to describe the parameters so you don't have to guess what "10" refers to or whatnot. (Of course, in this trivial case you can guess it from context anyway...)
  3. Comment removed by account_deleted · · Score: 4, Funny

    Comment removed based on user account deletion

  4. Use .NET by PhrostyMcByte · · Score: 1

    Let everyone code in their own .NET language, and let everyone use everyones assemblies.

    1. Re:Use .NET by Tablizer · · Score: 0

      Let everyone code in their own .NET language, and let everyone use everyones assemblies.

      Now you too can experience MS/Windows-Suckage in your favorite language! (ducks...)

    2. Re:Use .NET by Anonymous Coward · · Score: 0

      and let someone pray for the guys/gals that will be left to debug/maintain the code made in a mixture of vb, c#, c++, vfp, etc?

    3. Re:Use .NET by finnif · · Score: 1

      I like the different languages the CLR can run, but it doesn't help the problem the OP describes.

      When you have a dozen, or dozens, of developers having to go into, understand and modify each other's code, the .NET language agnostic VM won't help you. What if the one guy writing in Boo up and quits one day. The guys all writing in C#, C++, VB.NET, whatever language(s) you've allowed, have to take it over. That costs time and money. Up front, it also indicates how much of a risk allowing random languages can be.

      I think I disagree with most of the other posters here, it is a good idea to standardize on a language. While good programmers can jump into just about any language and understand, it takes years to be an expert (C++ anyone?). That said, it is sometimes necessary to introduce multiple languages. Many Java and .NET developers still bridge the gap to C or C++ very often. Even so, I just don't agree that introducing a language like Python or Ruby into that environment necessarily helps productivity. It might help the one guy who loves to use that language, but overall it just hurts the project.

    4. Re:Use .NET by Anonymous Coward · · Score: 0

      Now you're just being silly.

    5. Re:Use .NET by Malc · · Score: 1

      You've just cut the number of people on your team who you can turn to when you need extra resources on a project, or when you need some help with a language-specific problem.

      If I've got a COM problem with something I've written in C++ & ATL, is a VB programmer going to be able to help me? We can use each other's objects, but we sure as hell can't work with each other's code. It's a daft situation to put yourself in.

  5. I would say by mxpengin · · Score: 1

    Standarize, but leave the door open when its justified ... For example, if a system is going to use Microsoft tools (like active directory), leave the door open to use things like .NET tools... but in general I think is fine to set Java as a standard for legacy systems.

    --
    "We all know Linux is great...it does infinite loops in 5 seconds." -- Linus
    1. Re:I would say by Bloke+down+the+pub · · Score: 1

      How can you set a standard for legacy systems? Is there a perl module Timetravel::KillGraceMurrayHopper or something?

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    2. Re:I would say by Theatetus · · Score: 1

      OK, that is now the funniest post I have seen on /.

      --
      All's true that is mistrusted
  6. thats just stupid by Billly+Gates · · Score: 1

    I remember reading a post here about catapiller using C as a standard language. Problem is they use unix scripting c rather than bash or perl because its the standard??

    Tell me how much time is saved there?

    Its not like its radically different like platforms are in IT environments? The support argument is dumb and each language is better for a particular task.

    You can't write shell scripts in java and except the same results in Perl.

    I dislike perl for the most part but I am writing an app which uses wget in Unix and perl is the obvious choice. For Ecommerce it would be Java. Each language is differnet and most are similar and can be converted to one type or another faster and cheaper than using one language. You dont need training really to teach an experience c++ programmer java. Some would be required but the argument is mute on support costs as one good programmer can learn another.

    1. Re:thats just stupid by gmack · · Score: 4, Funny

      A few years ago the company I worked for was pretty much all PHP with a couple of projects in perl. I ended up taking over a project and redoing it in C. The downside of that was that when my boss saw that my C based app outdid the perl code it was supposed to replace and could be used to replace some of the PHP as well he started to want to standardize on it.

      I've never been quite as nervous as when I was asked if I could redo the websites in C.

      Thankfully we talked him out of it and he came to his senses.

    2. Re:thats just stupid by kramer2718 · · Score: 1

      Do the bosses at Cat know that csh is related to C in the same way that JavaScript is related to Java?

  7. optimal use yes, just one, no by slashkitty · · Score: 1

    I'm a one man shop, and I could stand to go to just one language. I could see reducing simliar languages (python and ruby maybe?) .. But, python, java, C and .net can be very different.

    --
    -- these are only opinions and they might not be mine.
    1. Re:optimal use yes, just one, no by Osty · · Score: 1

      I'm a one man shop, and I could stand to go to just one language.

      That seems backwards to me. In a one-man shop, I'd use whatever I want because only I have to deal with it. In a multi-person shop, or a multi-group shop, some standardization is worthwhile. However, it should be localized and organic. Meaning, let each group or team decide what they want to use for each project, and let them make that decision on their own based on the project's goal. Within a project, however, things need to be standardized to some extent to keep everybody productive. If you and I are both working on modules for the same application, it's going to be a huge mess if you decide to work in Python and I decide to work in C.

      Managed environments like Java or .NET make the question somewhat moot, since multiple languages can be targetted to the same runtime. Even then, it can still get painful if you're working in Visual Basic .NET and I'm writing my code in C#, even though the languages interact just fine.

      The key here is, "Everything in moderation." Standardize to make your job easier when interacting with other developers on the same project. Don't standardize just to say you standardized (well, unless you're trying to bump your internal visibility for purposes of artificially inflating your annual review score, in which case you should just be shot -- why not do something useful to increase your visibility instead?).

    2. Re:optimal use yes, just one, no by slashkitty · · Score: 1

      sorry, I meant "couldn't"

      --
      -- these are only opinions and they might not be mine.
  8. there is already a standard language by Anonymous Coward · · Score: 0

    there is already a standard language for computer programs:

    binary

  9. That's not silly by Anonymous Coward · · Score: 0

    Robertson are the best screwdriver, of course manufacturers should standardize their use!

  10. Ada by Crispin+Cowan · · Score: 0, Offtopic

    'nuff said :)

    1. Re:Ada by Tablizer · · Score: 2, Funny

      But that group is so 70's. Though I have to admit that I dig "Take a Chance on Me" and "Dancing Queen".

    2. Re:Ada by Crispin+Cowan · · Score: 1
      "offtopic"? WtF? Ok, apparently that wasn't enough said. Ada was developed by the DoD precisely because they wanted to have one programming language for the entire US department of defense. Naturally this was a massive undertaking. The programming language had to be all things to all people, and thus grew very, very large.

      The problem with this large programming language is that it is so complex that most programmers can't know all of it, and they only use a part of it. That, in turn, becomes a problem whe two sequential developers on the same piece of code know different parts of the language, and the second developer can't read the first developer's code.

      It also produces a few problems in trying to build a correct, compliant compiler :)

      So the point here is that "standardizing on one language" has been tried before, and it was a huge flop.

      Crispin

    3. Re:Ada by Anonymous Coward · · Score: 0

      In fact the C++ language specification is nowadays larger than the Ada language specification. And Ada still manages get in very useful features (like built-in tasking, strong typing etc.).

      Your remark about building correct and compliant compilers is moot. There are several Ada compiler vendors, and by definition (thanks to ACATS) their compilers are compliant to the Ada standard. Compare this to C++ compilers, for example: I only know one compiler (Comeau) which complies to the current C++ standard. If you know others, I'd surely like to know.

    4. Re: Ada by Black+Parrot · · Score: 3, Interesting

      > Ada was developed by the DoD precisely because they wanted to have one programming language for the entire US department of defense. Naturally this was a massive undertaking. The programming language had to be all things to all people, and thus grew very, very large.

      That was a popular critique 20 years ago, but these days people tend to criticize it in the opposite direction (i.e. no standard class library).

      > The problem with this large programming language is that it is so complex that most programmers can't know all of it, and they only use a part of it. That, in turn, becomes a problem whe two sequential developers on the same piece of code know different parts of the language, and the second developer can't read the first developer's code.

      I don't think that's correct. I'll be the first to admit that I don't know every obscure feature, but then I don't use it professionally either.

      > It also produces a few problems in trying to build a correct, compliant compiler :)

      I have heard that that was true when the spec was first published a generation ago, but any such problems have long since been solved.

      > So the point here is that "standardizing on one language" has been tried before, and it was a huge flop.

      But a political flop rather than a technical flop. By the time the DoD was ready to start using it everyone wanted to program in C++, and the administrators were giving out waivers like Halloween candy.

      Also (as often seen by people's ill-informed comments about it on Slashdot (no, I'm not referring to your post)), Ada has an unjustified bad reputation based on ignorance, such as the oft-encountered claim that the first Arianne 5 rocket crashed due to a problem with Ada, and oft-encountered quotes from Hoare (saw it as a Slashdot cookie earlier today, as a matter of fact) that was actually a critique of an early draft of the language. Much of Hoare's critique was addressed in the final project, and of course we've had the '95 spec since then. (And an 0? update coming out RSN.)

      People who actually use it tend to have a high opinion of it. I use it by choice for my hobby projects.

      Also, the switch from complaints about it being "too big" a generation ago to being "too little" now show just how fickle out notions of what a language 'ought' to be like actually are.

      --
      Sheesh, evil *and* a jerk. -- Jade
    5. Re:Ada by bzipitidoo · · Score: 1
      Before Ada, there was IBM's attempt at one all encompassing language that could do anything and everything: PL/1. It also flopped. The PL/1 compiler was a huge resource hog that noticably slowed down even big iron. If you were in one of those environments where you had to pay for computer time, that compiler would bankrupt you pretty quickly. And there were a ton of libraries and specialty functions. Like Ada, too much for any one programmer to become familiar with all of it. Doesn't help to standardize if everyone will simply have to specialize to the point where it's only semantics. Not much distinction between a programmer being familiar with part x of the Universal Language, or being familiar with language x.

      If this standardization is forced through and C/C++ is picked, does the makefile language count as part of C, or as a separate language?

      And why the fixation on language? Why not think of standardizing on a programming paradigm such as OOP? Or standardizing on stylistic elements such as indentation, frequency of comments, maximum statements a function can have? Well, maybe that's already been done.

      To an earlier post asking for a better langauge than COBOL: Is there any language that is NOT better than COBOL??

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    6. Re:Ada by Crispin+Cowan · · Score: 2, Informative
      Sure, but I consider C++ to be an abomination that needs to be wiped from the Earth: it gives you the safety of C, and the peformance of Smalltalk :)

      C is an appropriate language for systems programming, and for high performance/small footprint applications where every last byte of memory and cycle of compute matters.

      Statically type-safe languages like Java, C#, ML, and Haskall, are appropriate where space and time are less tight, but correctness matters. Like, it would be nice if your desktop applications didn't bomb :)

      C++ is a gross kludge that gives you the appearance of type safety, but doesn't really deliver it. Similarly, you work hard to program in a tight language that is C-like, and then C++ bloats it out and hands you huge, slow executables. IMHO C++ is not appropriate for anything at all.

      Compared to C++, Ada is just wonderful :)

      Crispin

    7. Re:Ada by Anonymous Coward · · Score: 0

      Wow, another moron that knows nothing of C++, on Slashdot even. What a surprise.

    8. Re:Ada by Anonymous Coward · · Score: 0
      Wow, another moron that knows nothing of C++, on Slashdot even. What a surprise.

      After reading both posts, my take is that he knows a lot more about C++ than you know about Ada. =)

  11. That's dumb. by Max+Threshold · · Score: 4, Insightful
    Speaking from experience: use whatever tool works best for the job. Let me guess... the guy advocating using one programming language for everything wears a suit and has never written a single line of code in his life?

    Now, one thing that does need to be standardized is terminology. I'm working on a contract right now for a wireless telco. The hardest part of this project was getting managers from various departments to agree on how this system we're trying to automate is supposed to work, and describe it to me in a way that would allow me to translate it to software. Compounding the proverbial six-blind-men-describing-an-elephant problem was the fact that everybody was using different vocabulary.

    1. Re:That's dumb. by Anonymous Coward · · Score: 0
      Let me guess... the guy advocating using one programming language for everything wears a suit and has never written a single line of code in his life?

      (yes, I'm the guy who submitted the article)

      Indeed :-) Excellent guess sir! (well, I think he did write some fortran back in the 60s) And he gets taken out to lunch by MSFT, Oracle, and Sun sales guys.

      And that's where he learns most of his computer knowledge.

    2. Re:That's dumb. by mikaelhg · · Score: 1

      Let me guess... the guy advocating using one programming language for everything wears a suit and has never written a single line of code in his life?

      I bet you've never driven a backhoe professionally, but still you have strong opinions, based on good business sense, on whether people should accidentally cut off your company's Internet connection with one?

    3. Re:That's dumb. by Rix · · Score: 3, Insightful

      I bet you've never driven a backhoe professionally, but still you have strong opinions, based on good business sense, on whether people should accidentally cut off your company's Internet connection with one?

      Yes, but I wouldn't presume to tell someone else which brand of backhoe would be least likely to do that.

    4. Re:That's dumb. by devonbowen · · Score: 1
      Now, one thing that does need to be standardized is terminology.

      Amen. Where I'm currently working, for each module the business specialists have one name, the database people have another, and the GUI people another. And, to make things more fun, sometimes they're in English and sometimes in German. Drives me nuts in meetings.

      Devon

    5. Re:That's dumb. by asdfghjklqwertyuiop · · Score: 1


      That's the dumbest, most incorrect analogy I've ever heard.

    6. Re:That's dumb. by poot_rootbeer · · Score: 1

      The hardest part of this project was getting managers from various departments to agree on how this system we're trying to automate is supposed to work, and describe it to me in a way that would allow me to translate it to software. Compounding the proverbial six-blind-men-describing-an-elephant problem was the fact that everybody was using different vocabulary.

      No one likes writing them, or reading them, or dealing with people who live by them, but this is the kind of scenario where a plain-English project specification--complete with a glossary of terminology that every stakeholder in the project is expected to use--really comes in handy.

    7. Re:That's dumb. by mikaelhg · · Score: 1

      You'd tell them not to hurt your business by acting in a way which would surely make the backhoe operator happy for a while, but end up costing everyone a lot of money, am I right?

      That's what your manager is doing as well. He's telling you that you can't act in a way that will cost your company a lot of money with little profit. If letting the developers form a consensus on which language to standardize on would be a real possibility (I've certainly seen many workplaces where it is possible) then the managers would just tell you guys to pick one, but like this Slashdot thread has amply shown, the age structure of the average IT workplace means that a lot of immature people will be unable to compromise and the only way to ever get a decision is to take a reasonable pick, such as Java, and then make adjustments as time goes by.

    8. Re:That's dumb. by Anonymous Coward · · Score: 0

      And here ladies and gentlemen we have the proverbial man in the suit.

    9. Re:That's dumb. by HiThere · · Score: 1

      So you want to substitute java for, say, HTML? Perhaps you need to consider things a bit more closely.

      If I'm interfacing with MSAccess, I'll use their dialect of Basic. (My experience ended with MSAccess2000...I understand that C might now be an option.) I may hate it, but that's what I'll use (well, almost entirely, I remember slipping in one compiled routine). If I'm doing a web page, I'll use HTML. I may also use some "JavaScript" (EcmaScript). If I'm doing OO development, I'd probably chose Digital Mars D, unless I would need libraries that it doesn't have implemented yet. For a dynamically changing hunk of code, I'd prefer Ruby, but speed requirements or need for particular libraries might cause me to choose Python.

      And if I had to for a paycheck, I'd choose whatever language I was told to. But I would know that it was likely to cause problems. Problems can be solved, but that takes extra time. (Still, if you pay me, I'll do it the way you require. The guy that pays the piper calls the tune, even if he's tonedeaf.)

      But if you ask me for my opinion, I'll tell you, and if you ask me to do it the best way I know, I will. And that's the kind of job I prefer.

      There is *SOME* merit in standardizing on a particular language for many kinds of application. Sometimes that merit outweights the costs that it incurs. If you go overboard with that approach, however, it will cost you severely. You *CAN* do anything with almost any computer language. With some certain things are orders of magnitude harder than they are with others, however. (And which things are easy and which hard varies from language to language.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    10. Re:That's dumb. by mikaelhg · · Score: 1

      So you want to substitute java for, say, HTML? Perhaps you need to consider things a bit more closely.

      Did I somehow convey the impression that I'd recommend directing humans as if they were computers, that I'd expect them to try to substitute Java for HTML instead of producing HTML with Java? Surely a development company couldn't be entirely populated by workers suffering of a total lack of contextual reasoning ability?

      If I'm doing OO development, I'd probably chose Digital Mars D, unless I would need libraries that it doesn't have implemented yet. For a dynamically changing hunk of code, I'd prefer Ruby, but speed requirements or need for particular libraries might cause me to choose Python.

      Do you see any difference on how language choices affect your personal productivity and how they affect group productivity? If not, I don't think we have a lot to discuss.

    11. Re:That's dumb. by HiThere · · Score: 1

      I've generally (not always) worked on small projects. If a group is doing a project, then they definitely need to reach an agreement about what should be done how. This still doesn't imply that everything should be done using the same language. It implies that there needs to be agreement as to what to use where. Agreement, not policy. Policy builds in stupidities, akin to requiring that java be used instead of HTML. (And if you don't think that can happen, I've encountered some bosses that you haven't.)

      Expecting people to act sensibly can frequently come into conflict with expecting people to follow the written rules. If you don't want this to happen, it's best to avoid official rules, or you WILL* end up with management figures that requires that the rule be followed exactly.

      *can expect to. This is known as "worst case analysis"...but don't think of this as an extreme worst case. It's a common reaction in managers acting outside their area of competence (possibly under the theory "A good manager can manage ANYTHING.").

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    12. Re:That's dumb. by mikaelhg · · Score: 1

      Expecting people to act sensibly can frequently come into conflict with expecting people to follow the written rules. If you don't want this to happen, it's best to avoid official rules, or you WILL* end up with management figures that requires that the rule be followed exactly.

      Surely you will end up with people who demand compliance of rules without understanding what compliance and non-compliance look like, and then you have to find a senior IT professional with people skills to educate them.

      Even so, your company, your project and your family, should you have one, will be in a better shape when all of these reap the benefits of standardization, which include better measurability which tends to lead to shorter workdays.

  12. It's been tried by taskiss · · Score: 0

    The government tried that once. Called the language "Ada". They had a mandate in 1987 that required it. In 1997 they had a change of heart and dropped the mandate.

    --
    - real hackers don't have sigs -
    1. Re:It's been tried by Courageous · · Score: 1

      "Change of heart". That's the most amusing misspelling of "tired of being laughed at for a decade" that I've ever seen. :)

      C//

    2. Re:It's been tried by Detritus · · Score: 2, Informative

      Ada is still widely used for critical applications, like avionics and weapons systems. The mandate may be gone, but the language is far from dead.

      --
      Mea navis aericumbens anguillis abundat
  13. Wow, why? by Anonymous Coward · · Score: 0

    This seems to be the worst kind of savings - PHBs and HR depts don't want to actually do any work and they want to prevent anyone else from being effective and efficient. This is the same as the desktop dept saying "everyone" needs the same desktop apps (graphics dept, software dev dept, hardware dev dept, admin staff, etc) - its stupid.

    Who wants to parse logs with Java - not me. But wait, I don't want to do anything with Java seeing how people were able to make a 3 wk/2 monkey project take 18 months/12 monkeys, 1.2 million dollars.

  14. All languages are the same by photokevin · · Score: 2, Insightful

    Standardizing on one language is not a problem. "The determined Real Programmer can write Fortran programs in any language".

    1. Re:All languages are the same by Tablizer · · Score: 1

      "The determined Real Programmer can write Fortran programs in any language".

      Use Fortran-66 and all those Goto's will be the best of job security.

    2. Re:All languages are the same by ScrewMaster · · Score: 1

      Yes, and "if you can't do it in Fortran, do it in assembler. If you can't do it in assembler, it isn't worth doing."

      I read that article too, years and years ago. I think I kept a copy of it around here somewhere. "Real Programmers Don't Use Pascal", I think it was called.

      "Pascal is the Cuisinart of modern programming languages ... great for making quiche."

      --
      The higher the technology, the sharper that two-edged sword.
    3. Re:All languages are the same by JabberWokky · · Score: 2, Interesting
      Ironically, my fiance's place of work has standardized on Fortran.

      It's still the best tool for the job in some fields.

      --
      Evan

      --
      "$30 for the One True Ring. $10 each additional ring!" -- JRR "Bob" Tolkien
    4. Re:All languages are the same by AndroidCat · · Score: 2, Funny

      I've seen COBOL written in Pascal. The horror, the horror...

      --
      One line blog. I hear that they're called Twitters now.
    5. Re:All languages are the same by JanneM · · Score: 1

      I forget - does Fortran 66 still have the neato three-way conditional goto?

      --
      Trust the Computer. The Computer is your friend.
    6. Re:All languages are the same by Tablizer · · Score: 2, Funny

      I forget - does Fortran 66 still have the neato three-way conditional goto?

      For backward compatability, I think it still has it. It was something like:

          if x - y (100, 200, 300)


      Which IIRC would traslate to something like:

      If (x - y) > 0 then goto 300
      If (x - y) = 0 then goto 200
      If (x - y) < 0 then goto 100

      It must have been invented by an octopus. Funky Fifties.

    7. Re:All languages are the same by JanneM · · Score: 1

      if x - y (100, 200, 300)

      The other way around, I think (I haven't used Fortran IV for many years by now):

      if (x-y) 100, 200, 300

      --
      Trust the Computer. The Computer is your friend.
    8. Re:All languages are the same by jcr · · Score: 1

      There was the computed GOTO, which also appeared in several versions of BASIC. It was more like:

      GOTO X OF (100, 200, 300, 400)

      where X was a value between 1 and 4, inclusive.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    9. Re:All languages are the same by maxwell+demon · · Score: 1
      While this was commonly called "computed GOTO", only very few basic dialects allowed real computed GOTO. For example, on the ZX Spectrum, you could write e.g.:
      GO TO 100*n
      (note that the space in GO TO is no typo, but a ZX Spectrum speciality)
      Of course you were not restricted to simple multiplications, e.g. the following, while pointless, would have worked just as well:
      GO TO INT (20*SIN x + VAL a$ * LEN a$)
      --
      The Tao of math: The numbers you can count are not the real numbers.
  15. Standarization is nothing without buy-in by imcclell · · Score: 0

    It doesn't matter whether you standardize or not, it depends on having everyones buy in. If standardization is the route you're going, and even one team does their own thing it can ruin it for everyone.

    If you're unsure of ALL of the management and business buying into the idea of standardization, and will adhere strictly to it, it will end up being a complete waste of time.

  16. screwing needs by blue_adept · · Score: 0

    ...as silly as a manufacturing firm standardizing on screwdrivers for all their screw/nail/glue fastening needs.

    Microsoft itself is finding .NET to be adequate for all their screwing needs.

    --

    "Is this just useless, or is it expensive as well?"
    1. Re:screwing needs by Anonymous Coward · · Score: 0

      .NET is not a programming language, but it is rather a platform. The question is about choosing a programming language.

  17. It will be great! by twitter · · Score: 1
    So long as everyone else gets to spend all of their time porting their routines to your language of choice, you will love it. Just tell them that the company needs a strong leader, someone like you.

    --

    Friends don't help friends install M$ junk.

  18. Doesn't surprise me by pHatidic · · Score: 1

    It will go well with their standardized living-in-mom's-basements and not getting laid.

  19. Right Tool For The Job by HishamMuhammad · · Score: 1

    'nuff said.

  20. Size of your company by erbmjw · · Score: 5, Insightful

    It can depends on the size of your company. I worked for a fairly small shop that specialized in Java and SQL work, because of that we became known for it in a positive way. It also was very useful because we all had a decent grounding in Java and our constant work in it had all of us improving our own skill sets quite rapidly.

    But the firm had only 9 geeks, so as I said ... small shop. In other situations I can see why multiple languages would be more useful than a standardized company one.

  21. Danger, Will Robinson by Gorobei · · Score: 4, Insightful

    If you can, avoid the discussion/meetings/emails.

    Firm-wide standardization drives are

    a) usually politically driven, and if you voice the wrong opinion you will be disliked.
    b) driven by the incompetents - if they could do something profitable, they would be doing that.
    c) out of date by the time they are finalized.

    There is no upside here because there is no magic standard that will make things better.

    1. Re:Danger, Will Robinson by Anonymous Coward · · Score: 0
      Funny how on slashdot, anyone who's not a programmer is always "incompetent." Somehow, I doubt that you could do their job any better than they could do yours.

      What's good for you is not necessarily what's good for business.

    2. Re:Danger, Will Robinson by HiThere · · Score: 1

      When he's making decisions about which tools a programmer should use on which job, if he's not a programmer, he's incompetent. I'd be incompetent at getting people to work on a project. (I'm not guessing, I've tried...once. I can't focus on that, instead I dive into code and get lost.)

      Now he may be quite competent to say "That tool costs more than the project you want to use it on is worth.", but that's a very different kind of decision.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
  22. Pick Two by Tablizer · · Score: 4, Insightful

    Pick one static/strong-typed language like Java or C#, and one "scriptish" language such as PHP, Python, or Perl. Some tasks will be best suited to one or the other.

    1. Re:Pick Two by samkass · · Score: 5, Insightful

      I think the parent is exactly right. All the people talking about "use the best tool for the job" have probably not worked very long in the industry. Being able to build on each other's successes, re-use code across projects that gets more vetted with each project, and build expertise with all the "gotchas" in your language of choice will make your company's product better and the company more profitable. These days, you can do almost anything with any of the popular languages, so there's no point in using more than one or two of them.

      I'd say, standardize on Java, C#, or C++ (depending on your needs) as your primary language, add your scripting language of choice, then fire anyone who can't handle that. You'll be better off five years down the road than if you'd all built your fiefdoms around the tower of babel and every project becomes a throwaway codebase as the next "best tool" comes along 4 months later.

      Any company that can't standardize on a language doesn't really have a coherent vision anyway, and probably is either a bunch of folks pretending to be a consulting firm or will disappear before too long.

      (I'm sure I'm going to lose mod points for this reply, seeing what other people have written, but I don't see how any other approach is practical in the long term.)

      --
      E pluribus unum
    2. Re:Pick Two by shutdown+-p+now · · Score: 1

      I would also recommend adding something functional (e.g. OCaml, Haskell, Scheme, Nemerle) to the list. Some tasks can be expressed much simpler and cleaner in such a way.

    3. Re:Pick Two by Tablizer · · Score: 1

      I would also recommend adding something functional (e.g. OCaml, Haskell, Scheme, Nemerle) to the list. Some tasks can be expressed much simpler and cleaner in such a way.

      Functional techniques tend to be foreign to most new hires and thus have a long learning curve in most cases. I have yet to see a compelling code demonstration outside of "lab toys" to justify the learning curve. However, I am open to practical evidence.....

    4. Re:Pick Two by dracvl · · Score: 2, Interesting

      Especially when you have languages like Jython available, standardizing on Java and Python makes sense.

    5. Re:Pick Two by Trogre · · Score: 1

      Java would be okay as an option for a typed language, if only it had a decent (read:working) runtime engine that wasn't made by Sun.

      --
      "Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
    6. Re:Pick Two by gerardrj · · Score: 1

      What about AWK? If you want to parse long tracts of text, there's nothing better than AWK/GAWK.

      --
      Article X: The powers not delegated... by the Constitution...are reserved...to the people
    7. Re:Pick Two by Fulcrum+of+Evil · · Score: 1

      All the people talking about "use the best tool for the job" have probably not worked very long in the industry. Being able to build on each other's successes, re-use code across projects that gets more vetted with each project, and build expertise with all the "gotchas" in your language of choice will make your company's product better and the company more profitable.

      Funny, I've been in the inustry for about 7 years, and using the best tool for the job is part of doing the job. In the current place, we've sort of standardized on C, C++, Java, perl, and bash. Of course, each team has a favored set of languages, usually 1 or 2 + scripting. The ability to move languages allows us to adapt to new things as they become available. Our higher ups concentrate on business initiatives, metrics, and other things, leaving details like the language to use to us developers. That's why they hired us.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    8. Re:Pick Two by Anonymous Coward · · Score: 0

      Odd choices. IMHO Java, C#, and Python all fall into the narrow category of "rather poorly implemented subsets of object oriented programming".

      Ruby (or Lisp (read Paul Graham's Why Lisp articles) or smalltalk) with C as an extention would make a solid choice.

      I'd go so far as to argue that Ruby + C extentions can do everything better than Java can (except run in a browser without a download). Ruby gives you a better OO platform on which to build; and C gives you better low-level control.

    9. Re:Pick Two by Brandybuck · · Score: 1

      Sorry, but none of your languages are appropriate for my real time embedded projects. Why does everyone think the software world is confined to web apps? Why is the development world choking in silly rules like these that only apply to a narrow slice of computing?

      --
      Don't blame me, I didn't vote for either of them!
    10. Re:Pick Two by shutdown+-p+now · · Score: 1

      Ah, there are the wonders of specialisation. There is hardly any need for every single person in the company to know such things; for that matter, most need only know a single language (which would be the primary / glue one, Java most likely). Then, those tricky cases can be handed over to a local Lisp guru as they arise, and then fruits of his labour given back to the Java coders as a black box component to use.

    11. Re:Pick Two by lintux · · Score: 1

      And while you're at it, try to force everyone to use some sane coding style. They didn't do that where I work now, and code gets messy like hell when three people work on it. :-( Some people don't even care about indentation... *sigh*

    12. Re:Pick Two by zCyl · · Score: 1

      I'd say, standardize on Java, C#, or C++ (depending on your needs) as your primary language, add your scripting language of choice, then fire anyone who can't handle that.

      Or you could just hire people with enough ability to pick up languages in a trivial time period, and then instead of standardizing across the entire company, you make an intelligent choice on each project. If it's an unusual language, then the team working on it has to justify a benefit for using that unusual language. If a significant benefit exists, you use it. If it doesn't, you use a more standard language. Any group of programmers sitting around a table discussing a project knows what the major languages are, and should be able to make such decisions intelligently. If they can't, you hired the wrong people.

      One company I worked at had language choice as one of the major interview questions. They wanted to see if people they were hiring had enough analytical ability to choose an appropriate language wisely, and they ended up with some fairly good programmers working there.

    13. Re:Pick Two by memer · · Score: 0

      And one more vote for the parent. For the large corporation, with multiple parallel projects, it makes sense to standardize on Java and/or C# for larger scale, x-line projects. But for quick scripting/prototyping, I can't see why a company wouldn't use anything but Perl + CPAN.

    14. Re:Pick Two by Anonymous Coward · · Score: 0

      Yeah, pick two, but don't exclude others. There might always be a task where you need another language. E.g. you're fixed to Java, but you have to integrate a third party component, which was written in C++. Do not hesitate then to use C++ to write a suitable wrapper to your application.
      But otherwise, stick to a main language. So you can discuss your problems with other developers in the team. You can use their work to solve your problems. And you can have decent interfaces between your modules, you don't need to use the most abstract constructs (CORBA, SOAP, ...).

    15. Re:Pick Two by Anonymous Coward · · Score: 2, Interesting

      The best tool for the job is not necessarilly the language the lead programmer likes best.
      I've worked in the industry for 8 years, and seen the results of standardising on a single language (or platform) firsthand. It wasn't pretty.

      Of course code reuse is all nice and furry, but it's hardly ever practiced.
      Far more often you find out after several months writing something that another department has a project doing exactly the same thing (especially in multinationals, sometimes even in the same building, and yes it's happened to me twice).

      What is needed is a middle ground between rigidly always using X, and chaos in which everyone uses what seems like a good idea at the time.
      Sadly the larger the corporation is the harder it is to get the people making such decisions to leave any authority in the hands of the people below them who have to implement them, leading to dictates from up high which are to be treated like gospel.
      For example in one company there was a policy decided at board level that EVERY project HAD to be implemented using all IBM technology on both hardware and software.
      Web application HAD to be EJB (yes, they dictated EJB, not just Java) with lots of XML using DB/2 as a database and Websphere on AIX as an application server.
      No discussion possible.

      We went ahead and used JSP/Servlets on HP with Oracle instead, hiding the purchases behind massive smokescreens, and noone was any the wiser.
      This was done after IBM themselves advised us against using EJB on Websphere.
      We could get HP hardware and Oracle cheaply (fraction of the cost of IBM) and quickly (instead of waiting a good time for delivery), and it was in tests deemed more reliable and better performant.
      Now AFAIK the entire serverfarm uses HP and Oracle, and I doubt the board knows about it...

    16. Re:Pick Two by Haeleth · · Score: 1

      Not even necessarily Lisp. Languages like Scala, which is a functional/OO hybrid running on the JVM and therefore essentially interchangable with Java, can be used to write certain modules in a functional style, and then slot them seamlessly into Java systems. One could even write a quick prototype in Scala and put it into production immediately, and it could be replaced seamlessly by a plain Java implementation later on if the suits got too uncomfortable about language diversity.

      While I'm not a great fan of VM-based systems, this kind of interoperability is one of their few blindingly obvious advantages.

    17. Re:Pick Two by Anonymous Coward · · Score: 0

      Or maybe a flexible language such as haXe ? (shameless plug http://haxe.org)

    18. Re:Pick Two by Anonymous Coward · · Score: 0

      I'd also add to only use tools that are freely available and are portable on most systems/environments.

    19. Re:Pick Two by Anonymous Coward · · Score: 0

      I don't believe a software shop could standardize on Java/C# and a scripting language unless they are only writing enterprise/databasing type of software (admittedly the majority of business applications). If there was a need for a high performance/professional user-interface app being sold to the public then you would at least go to C++ or even C. Graphically even VB performs better than Java however, you then have to live with the wonderfully crap world that is VB.

    20. Re:Pick Two by BlueYoshi · · Score: 1

      or java + javascript using rhino

      --
      "Use cases are fairy tales..." I. S. 2005
    21. Re:Pick Two by WamBamBoozle · · Score: 1

      ML & Prolog?

      Caml is strongly typed and is used for scripting.

      Here's a more reasonable answer:

      Java & any other higher level language (such as Python, Prolog, Ant, or Groovy) that is implemented in Java. This is so most people can just think of whatever you deliver as a Java based application.

      Why is it more reasonable? Because, in spite of most language researchers agreeing that ML & Prolog are fabulous languages it is hard to find (cheap) programmers that can use those languages effectively.

    22. Re:Pick Two by HiThere · · Score: 1

      That's got it's points. There's efficiency to be gained by learning a couple of languages quite well. But it doesn't quite suffice.
      E.g.:
      HTML
      SQL
      XML
      I'm certain that there are others, but that's just off the top of my head. And for certain kinds of application one might want to add, perhaps, postscript. Some jobs still need assembler. etc.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    23. Re:Pick Two by Jerry+Coffin · · Score: 1

      All the people talking about "use the best tool for the job" have probably not worked very long in the industry.

      This should be modded "inciteful" rather than "insightful". It's nothing more than flamebait, saying "anybody who disagrees with me must be inexperienced and ignorant."

      These days, you can do almost anything with any of the popular languages, so there's no point in using more than one or two of them.

      I don't know how long the parent's author has been in the industry, but there's a big difference between having N years of experience, and having one year of experience repeated N times. In some cases, language choice can effect development efficiency by (at least) a couple of orders of magnitude.

      If everything you do falls into a one (of a very small number of) specific categories, then it can be true that languages are essentially fungible. From the sound of things, his experience falls primarily or exclusively within these categories -- which is perfectly fine. Quite a few people have spent their entire careers writing code in a single language, and that's perfectly fine. Lack of experience outside a particular area, however, should hardly be taken as proof that no other area exists.

      I'd say, standardize on Java, C#, or C++ (depending on your needs) as your primary language, add your scripting language of choice, then fire anyone who can't handle that.

      This is one step short of sheer nonsense. Just for example, yesterday I worked on code in SQL, Flex, BYACC, C++ and AWK (and if you go along with OpenGL's claim to be a language, that would be another I used).

      No one of the languages you've mentioned, on its own, is anywhere close to suitable for the work I did. Given the requirements, C++ would be the closest possibility, but writing the lexing/parsing code directly in C++ would be masochistic at best -- Spirit just can't handle what I'm doing (yet anyway). Lack of performance rules Java and C# out immediately.

      As far as replacing the SQL goes, I suppose I could write something in one of the other languages, but when you get down to it, the data in question resides in a server that talks SQL -- you can wrap something else around it if you like, but one way or another, you're going to be using SQL to retrieve the data.

      Any company that can't standardize on a language doesn't really have a coherent vision anyway, and probably is either a bunch of folks pretending to be a consulting firm or will disappear before too long.

      By this standard, IBM and Microsoft (for only a couple of obvious examples) should have disappeared long ago. To make a long story short, your opinion simply seems to disagree rather strongly with reality.

      ...I don't see how any other approach is practical in the long term.

      This sounds a great deal like a serious lack of vision on your part. There are quite a few approaches that can be entirely practical in the long term.

      "The best tool for the job" is clearly the right way to go -- but you have to be careful about how you define "best."

      The tactical viewpoint suggests using a large number of specialized tools that allow individual jobs to be done as efficiently as possible. The strategic viewpoint suggests using a small number of general purpose tools to allow the organization as a whole to run more efficiently.

      Almost anybody can learn the syntax of a programming language. Most people can learn to translate algorithms into code that will execute those algorithms correctly. Quite a few can even learn to select more or less optimal algorithms for specific conditions.

      To be a really good programmer, however, you must be able to look at the human system into which a program will be injected, and find not only the requirements but also the desires fo

      --
      The universe is a figment of its own imagination.
    24. Re:Pick Two by syousef · · Score: 1

      I'd say, standardize on Java, C#, or C++ (depending on your needs) as your primary language, add your scripting language of choice, then fire anyone who can't handle that.

      Wow. You're not just a fool. You're a dangerous despotic fool. This is the kind of decision that sees industry leaders fired, and a company with egg on its face.

      There's good reason to have a preferred language or tool, and get people to justify the use of other tools, because then you can develop experience in that tool and maintain a reusable codebase that has some chance of being reused (though in practice only framework level components ever get any real reuse).

      Picking just one thing and sticking with it is a bad idea, because it kills any kind of diversity and leaves you vulnerable. What if the main tool you picked 10 years ago was Smalltalk (a perfectly good and useable language I've had plenty of experience with). Right now you'd be in trouble because support for most versions is dead or dying (and though there are new variants on the scene libraries were never standard). So picking one tool means if that tool dies off, you're left having to reimplement EVERYTHING from scratch. Excessive specialisation in general is a bad thing for an individual/company to survive.

      Oh, and another thing: It pays to listen to your technical people before you dismiss what they say out of hand then fire them for not towing the company line. All you get is yes men if you adopt that mentality.

      Damn I hope you're never in management at any company I work for.

      --
      These posts express my own personal views, not those of my employer
    25. Re:Pick Two by Anonymous Coward · · Score: 0

      I'd say, standardize on Java, C#, or C++

      Of course you have a rational reason for this recommendation. Care to share it?

      Note that "the rest of the industry does" is not rational, unless you know that their decision was based on reason. If yours isn't , why would theirs be?

    26. Re:Pick Two by Tablizer · · Score: 1

      Okay, for you embedded guys, C++ and Tcl.

  23. I doubt it works well by dtfinch · · Score: 1

    I wouldn't want to standardize myself on one single language. I can't imagine an entire company doing it.

  24. Depends on what your company does by L.Bob.Rife · · Score: 1

    If your company specializes in one type of software, then standardizing would probably work out ok if you choose the best language to suit it.

    If your company has a lot of variety in what you do, then stardardizing is a bad idea. Each language has strengths and weaknesses. To ignore the weaknesses of a language and force it into a situation is usually possible, but not very efficient.

    Would you use php to program an office suite? Would you use c++ for a simple web-script? Don't fall for Sun's PR and try to use java for every situation, unless you only program for 1 kind of situation.

  25. We chose Java by Andrew+Tanenbaum · · Score: 5, Funny

    but then we weren't allowed to use SQL or XML anymore!!

  26. Hello Mr. Rumsfield by woolio · · Score: 3, Funny

    Problems and needs are naturally occurring things.

    They take on unforeseen forms with non-standard characteristics.


    Are you talking about the "known unknowns" and the "unknown unknowns" ????

    1. Re:Hello Mr. Rumsfield by Anonymous Coward · · Score: 0

      Are you just being difficult, or do you not understand either of those? They seem fairly straightforward.

      You know that there is air on the planet, but you know that you have no idea how much by volume there is *exactly*.

      You might never predict or think of the chance that a meteorite could blast through your roof and take out your modem.

    2. Re:Hello Mr. Rumsfield by Anonymous Coward · · Score: 0

      whooosh! there goes the joke over your head.

  27. One size fits all never works well by sideswipe76 · · Score: 1

    The language used will depend entirely on bussiness needs, existing infrastructure if anything, breakdown of in-house talent, maturity -- etc. I think you TRY to use a consistent platform/langauge unless it makes sense to do otherwise. Then, you rely on integration techniques like webservices to bridge the gaps.

    In my current project, for example, we needed to monitor a directory and translate a doc file to an XML/jar file currently being accepted elsewhere. It would have been trivial to use pre-existing java code to do the job -- the directory monitor and an import interface already existed. 20 lines of code tops to do the job.

    However, because it HAD to be a doc file, and MS integrates so well with itself, it was ASSUMED that .net would be the best choice to process those doc files and create the appropriate jar. So, A directory monitor in .net had to be written, then all the reprocessing done, then the jar file must be written, .. all stuff ready to go with our existing java code. And, to date we are still trying to figure out how to get a proper jar file and manifest written in .net.

    So, which was better? In my opinion we could have gotten around the doc file problem in java just as easy as the jar file problem in .net. Difference was that mountains of java code already existed to do most of the work.

    So, requirements to use .doc coupled with legacy java, mixed with off-the-cuff design decisions = "Do it in .net"

  28. Standardized languages, not language standards by rtos · · Score: 1
    I've heard many people make the argument that it's not as important to standardize on a single language, as it is to make sure you are using standardized languages.

    A standardized language has been vetted by an organization like ISO, ANSI or ECMA. A few examples would be ANSI C, ECMA C#, and ANSI Common List, but there are obviously many more. Using one ensures (for the most part) that your application will survive no matter what happens to the specific implementation of the language.

    --
    -- null
    1. Re:Standardized languages, not language standards by Anonymous Coward · · Score: 0

      Even better ISO C 1999, ISO C++ 2003, and ISO Fortran 2003, try to stay away from the semi standardized languages like C# and even less standardized ones like Java.

  29. Standardization by davidstrauss · · Score: 1
    the whole discussion is as silly as a manufacturing firm standardizing on screwdrivers for all their screw/nail/glue fastening needs

    ...but that's not silly at all. Many manufacturing firms do just that.

  30. Programming languages are tools. by ScrewMaster · · Score: 1

    Use the right tool for the job.

    --
    The higher the technology, the sharper that two-edged sword.
    1. Re:Programming languages are tools. by harborpirate · · Score: 1

      Couldn't agree more.

      --
      // harborpirate
      // Slashbots off the starboard bow!
  31. Like a single screwdriver? by PornMaster · · Score: 4, Insightful

    Why wouldn't it be more like standardizing on torx vs. phillips head, or standard vs. metric?

    We all know that monoculture can be bad. Besides platform uniformity, strict monoculture opens you up for enterprise-wide vulnerability, and even getting people with a similar, closed mindset. But it also provides for the ability to have a common dialogue with one another. It can be a shared jumping-off point. It keeps you from getting screwed when the one guy at the company who knew mindfuck leaves, and nobody else knows how to read his code.

    There are costs and benefits to having, and to deviating from, a standard operating environment. Deviations should be allowed, but the deviations shouldn't be up to the developers, they should be weighed by management (who shouldn't be idiots), and risks and benefits weighed.

    Business needs shouldn't be determined by developers. Developers tend to believe in nifty hacks. Code monkeys can love the elegance of using nuance in their code, but there's also a reason that they're not in charge. And it's not just because managers are stupid. Processes may be tedious. They may even be a reason for a developer to hate his job, which isn't good for productivity. Knowing 4 languages, and having the business be dependent upon him may be wonderful from his point of view. But having an employee dictate how things will be done can be destructive to the business. Particularly when he leaves the company for another job, and the new Java guy can't do shit with the Ruby and python.

    1. Re:Like a single screwdriver? by Luyseyal · · Score: 0, Troll

      Torx is the devil. I can't believe you mentioned TORX! They're second only to tiny Allen wrench screws in total suckage.

      Phillips is god.
      -l

      --
      Help cure AIDS, cancer, and more. Donate your unused computer time to worldcommunitygrid.org. Join Team Slashdot!
    2. Re:Like a single screwdriver? by hakr89 · · Score: 1

      Last time I checked, you didn't teach a screw to write in Phillips. Just like there are different screw heads for different purposes, there are different programming languages for different tasks. A Phillips head is a lot like VB, it's easy for anyone to use, but it strips out rather easily.

    3. Re:Like a single screwdriver? by ratboy666 · · Score: 1

      Sure...

      Hire me for my MAD technical skills, and then override my decisions based on other criteria.

      Hire a "new JAVA guy" to maintain Python and Ruby code.

      Why not just write a super-duper "COmmon Business Oriented Language", so the suits can review (and even write) code to ensure it meets business needs.

      Sounds good to me! Let me know how it all works out.

      Ratboy.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    4. Re:Like a single screwdriver? by someguyfromdenmark · · Score: 0
      standard vs. metric
      The word you are looking for, is Imperial vs. metric.
      --
      I change my sig often.
    5. Re:Like a single screwdriver? by xee · · Score: 1

      It's called brainfuck, and in case you didn't know, it's what taco is writing slash 3.0 in.

      --
      Oh shit! I forgot to click "Post Anonymously"...
    6. Re:Like a single screwdriver? by Anonymous Coward · · Score: 0

      Processes may be tedious. They may even be a reason for a developer to hate his job, which isn't good for productivity.

      And, if you're a software house, programmer productivity is the #1 thing you have. Your whole existence is to convert capital into code.

      This isn't to say that programmer morale is the top priority, but ... wait, yes it is. If you can't attract and keep good programmers, you're toast.

      Knowing 4 languages, and having the business be dependent upon him may be wonderful from his point of view.

      I've never heard of a programmer like this; it sounds like a straw man argument. Nobody wants the business to be dependent on things only he can do -- it means everybody's bugging him, and he can't do any real work. OTOH, I've seen many, many cases of programmers begging management to move to something else so other people could use it more easily, and also of people teaching their coworkers so they aren't the only person with specific knowledge.

      But having an employee dictate how things will be done can be destructive to the business.

      Nobody's suggesting turning employees into dictators. But if employees have no say at all in decisions that directly affect them, they're not going to be very happy, which means they're not going to be productive, and they're not going to be employees too long.

      Particularly when he leaves the company for another job, and the new Java guy can't do shit with the Ruby and python.

      If the new Java guy can't do shit with Ruby or Python, he probably can't do shit with Java, either. He's probably just out of a JavaSchool, knows the lingo, but can't code, so you don't want him touching *any* code, in any language.

    7. Re:Like a single screwdriver? by mikaelhg · · Score: 1

      Hire me for my MAD technical skills, and then override my decisions based on other criteria.

      Since you don't seem to understand the grandparent's point, your technical skills seem to be pretty far from mad. Mildly vexed at most.

    8. Re:Like a single screwdriver? by Vo0k · · Score: 1

      Why wouldn't it be more like standardizing on torx vs. phillips head, or standard vs. metric?

      Because screw heads are about as good at driving screws. Different computer languages perform differently at same tasks. You can glue two pieces of something with Perl and if it's paper/logs it will work great, if it's heavy number crunching with gigabytes of data passed every second, it will fall apart. You need to fuse it with welding torch of raw ANSI C or at worst C++. On the other hand you may try to make heavy steel paperclips weighting a pound each using C to clip webpages together, or put them in convenient sleeves and binders of PHP.

      Standarizing on ONE language is a VERY bad idea unless your set of purposes is very narrow. Standarize on about 4.
      One heavyweight:
      C vs C++ vs Java vs...
      One rapid development:
      Perl vs Python vs PHP vs Ruby...
      One shell:
      Bash vs CSH vs MS-DOS batch vs msh vs TCL vs...,
      One prototyping:
      Matlab vs Octave vs...

      And use them to fulfill the tasks well. Write a fast, very dirty prototype to see if it has right to work at all. Write separate programs that together build the large app using heavyweight. Glue them together with shells. Patch easy non-mission-critical large but easy parts with rapid development.
      Then you'll standarize on one paper glue, one screwdriver head, one brand of pb-free solder, which is a good thing. Don't force everyone to use Perl to drive factory machinery or C to process logs!

      --
      Anagram("United States of America") == "Dine out, taste a Mac, fries"
    9. Re:Like a single screwdriver? by Ullteppe · · Score: 1

      Bad analogy. Both screwdriver heads and measurement units are primarily based on history and tradition. Screwdriver heads have moved from flat->philips/pozidrive->torx, with every generation being better in all respects than the previous generation. Flat heads are virtually unusable with powered tools, for example. Philips/Pozidrive where parallel attempts to improve on flat, and instigiating the VHS/Beta war of screwdriver heads. Torx is finally making headway and allows you to put tremendous torque on the screw without ruining the bit or the screw (as long as the bit and screw are made of a strong steel). Likewise, I find it interesting that someone would even consider using imperial measurements. Metric measurements are so much better (in any kind of engineering applications), it just blows the mind. The only reason imperial is still with us is resistance to learn a new method of measurement (remember that prior to metric, every country had it's own imperial system of measurement. There were English miles, French miles, German miles etc.) A computer language parallel would be Fortran and Cobol. Two languages that are technically obsolecent, but stay around because of tradition and old code bases. No sane person would choose any of them today for a new project if they did not have old code lying around.

    10. Re:Like a single screwdriver? by ratboy666 · · Score: 1

      By The Holy Balls of Crom!

      Now I have to spell out SARCASM? I fully understand the GPs point -- and in the past this thinking led to COBOL. Who knows what it may lead to today (because it ALSO gave us PL/1 and ADA).

      Ratboy.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    11. Re:Like a single screwdriver? by Anonymous Coward · · Score: 0
      Particularly when he leaves the company for another job, and the new Java guy can't do shit with the Ruby and python.

      see, a Ruby/Python guy who "couldn't do shit" with Java code, because Java was just *soo* totally different from anything s/he knew before - such a Ruby/Python programmer would be rightly considered a pitiful laughing stock, because once you know something like those two languages, picking up something as closely related and relatively straightforward as Java should be no trouble at all.

      perhaps you meant to tell us something about the general competence of Java programmers, though. that may be; i wouldn't know, being a Python guy.

    12. Re:Like a single screwdriver? by kabocox · · Score: 1

      Business needs shouldn't be determined by developers. Developers tend to believe in nifty hacks. Code monkeys can love the elegance of using nuance in their code, but there's also a reason that they're not in charge. And it's not just because managers are stupid.

      This is why everything everywhere should be writting in COBOL. ;) It's the MBA's choice for a common business coding platform that the managers can verbally read the code. I don't know when the lastest update to COBOL was, but they should just revise it make a COBOL2005 and then schedule new langauge updates every 5 years. Of course this would be a management sponsored langauage and only very major companies would convert or require their new hires to learn this language, but it would be worth it if the CEO expects that the company will last 20+ years, but 1/3 - 2/3 of the IT may have cycled through to other companies or retired, but still want the company to still be chugging along in a generation with complete access to their code base. COBOL won't ever be as loved as C/C++ or other languages, but it has its place.

    13. Re:Like a single screwdriver? by Anonymous Coward · · Score: 0

      A "flat head" screw is one in which the head is recessed flush into a conical depression.
      What you call "flat head" is *slotted*. And, metric screws are a pain in the butt and
      are not designed for use in the read world. Compared with their English (not "imperial") counterparts, the threads are too fine and shallow for regular mild (grade 2) steel and so all metric screws need expensive case hardening to perform the same as their mild steel English counterparts.

    14. Re:Like a single screwdriver? by Anonymous Coward · · Score: 0

      Wasn't the proposed name of the Object Oriented version of COBOL:

      PROCEDURE SECTION
                    ADD 1 TO COBOL GIVING COBOL.

      Don't forget to start in column 7.

      I took Cobol in college (Ga Tech, cira 1986) -- it was a one hour course, with a comp-sci number, but the instructor was from the University's IT department. And it could not even count as free elective credit towards a comp sci degree ;->

      First day of class, the instructor asked how many of us were comp sci, or persuing a degree program with "Engineer" in the name. 6 of us (out of 40) raised our hands... and were told that we could skip the next three sessions, as the class would be covering the edit, compile, debug process.

    15. Re:Like a single screwdriver? by Anonymous Coward · · Score: 0

      Why wouldn't it be more like standardizing on torx vs. phillips head, or standard vs. metric?

      What do you mean standard vs. metric? Usually it is spelled "standard vs. imperial".

      You would not believe how difficult it is to get screws, nuts and bolts with imperial measurement units outside for manufacturing products in Europe and Asia! A big thanks to that company in U.S. that was asked to design a product casing with metric screws, and did they listen to us? No, they had to make prototypes with imperial screws because they could not get metric screws in U.S.

      - Goan Fuckyerself

  32. Re:Learn From My Mistakes by Tablizer · · Score: 1

    and standardizing on DOS batch files may not have been my best idea, but it did save a lot of time when the answer was "Sorry, this can't be done, ask someone else".

    Wrongo! DOS batch script language is Turing Complete, meaning it *can* solve any problem any other programming language can. (However, TC does not guarentee ease or speed in any way.)

  33. Some of the pros and cons by alangmead · · Score: 5, Insightful

    A single language makes each developer easily replacable. You quit, they just hire another Java programmer. If the collection of software you develop with is sufficiently unique (XSLT with extention functions written in both Groovy and Jython on IKVM running under .Net) you can create a position that would be nearly impossible to fill.

    On the other hand, having each developer work on projects with their own collection of technologies tends cause the maintainance tasks of those projects go back to the original developer. This is generally a bad thing. Having a developer know that no one will ever see their code gives a temptation to take shortcuts that they wouldn't take others. Even more than code reviews, splitting maintanance across developers encourages quality code. You don't want a co-worker cursing your name as they try to add one minor feature to something you've done. ("F'n Andrew! Why'd he do that!").

    Different languages and other technologies have their strengths and weaknesses. If they are chosen based on their strengths and not just their familiarity (let alone out and out prejudice) then their should be productivity gains achived from the choices. Of course, that means that this would increase the ramp up time a new developer needs to be very productive.

    So if you have high turnover, you want to get new developers productively quickly (which would imply standardizing on as few languages and technologies as possible) and you want to get projects seen by as many developers as possible before the original developer leaves. (If Andrew is long gone, then "F'n Andrew!" can be an excuse given by the maintainance programmer, even if it is groundless.) If you have a lower turnover, then developers start getting a better feel over which technology choices fit in which business scenarios.

    If this standardization is being driven by upper management, they are hoping to turn the developer positions into a cookie cutter role.

    1. Re:Some of the pros and cons by WellsDoofus · · Score: 2, Interesting

      "If this standardization is being driven by upper management, they are hoping to turn the developer positions into a cookie cutter role."

      -- We agree!

      "A single language makes each developer easily replacable."

      -- Dream on! At Wells Fargo, they have a bunch of hackers that have no concept of design. If you think a similar language helps, I want some of what you're smokin'.

    2. Re:Some of the pros and cons by Anonymous Coward · · Score: 0
      You don't want a co-worker cursing your name as they try to add one minor feature to something you've done. ("F'n Andrew! Why'd he do that!").

      We have that all the time where I work, except it's usually "F'n [Ryan|Dan|Ryan|Tevis|Ryan]+! Why'd he do that?!"

      PS: My name is not Andrew. :)

    3. Re:Some of the pros and cons by poot_rootbeer · · Score: 1

      A single language makes each developer easily replacable. You quit, they just hire another Java programmer.

      The fungibility of programming talent is highly overstated.

      You could replace a great Java programmer with a mediocre Java programmer, and get mediocre Java code as a result.

      Or, you could replace a great Java programmer with a great C++ programmer, and get great C++ code as a result -- and a possible long-term loss of productivity as debugging a heterogenous codebase takes more time and effort.

      Or, you could replace a great Java programmer with a great C++ programmer, lose a little bit of productivity in the short term as he learns the nuances of the new language, but in the long term end up with great Java code as a result.

      Or, frankly, if you have a great Java programmer you can take care of him (or her) well enough that they don't leave and have to be replaced, so that you can avoid the pitfalls of all three of the above scenarios.

    4. Re:Some of the pros and cons by GWBasic · · Score: 1
      Well F U Too!

      ;)

    5. Re:Some of the pros and cons by dodobh · · Score: 1

      He said developers, not programmers (or even engineers).

      What management _wants_ is engineers. What exists in the real world is programmers, and coders/developers. What management does not want (generally) is programmers (hard to replace). They get developers (who can be replaced).

      --
      I can throw myself at the ground, and miss.
  34. I just read a blog article on what Google does: by John+Harrison · · Score: 5, Informative

    http://panela.blog-city.com/python_at_google_greg_ stein__sdforum.htm discusses the fact that Google has three official languages: c++, Java, and Python. It then goes into some detail about the use of Python at Google. It is a worthwhile read.

    1. Re:I just read a blog article on what Google does: by Animats · · Score: 1

      That's actually reasonable - one language from each of the major food groups.

    2. Re:I just read a blog article on what Google does: by NewbieProgrammerMan · · Score: 1
      From the linked article:
      Greg stated that architecture and design were not mandated from the top, but rather the teams working on these projects were given the freedom to suggest and deliver.
      Wow, what a concept! To actually trust the people doing the work to *gasp* know what they're doing! :)

      Of course, Google probably has reason to trust their talent pool more than your local code monkey shop, but still...

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
    3. Re:I just read a blog article on what Google does: by mpsmps · · Score: 2, Interesting

      They aren't dogmatic about it and there are many more languages in heavy use at Google. Orkut is written in C#. Google also uses Javascript/Ajax extensively for many of their client-side sites. If you want a good illustration of how ridiculous it would be to insist on single language such as Java everywhere, imagine if all their sites (e.g. maps.google.com) had to be provided using Java applets.

    4. Re:I just read a blog article on what Google does: by a_n_d_e_r_s · · Score: 1

      Yes, and all web pages cant be HTML since only Java is allowed! ALl web pages thus has to be java applets if one follow what you say to the extreme.

      If one accept HTML one also accept Javascript and thus AJAX with Java Servelets on the server side is a fine way to make google maps and similar applications.

      --
      Just saying it like it are.
    5. Re:I just read a blog article on what Google does: by slartibart · · Score: 1
      It should have been a java applet. Then it could have been done ten years ago. Ajax and a lot of other web technologies are terrible hacks that applets have always been a simpler solution for. HTML was designed to contain *documents*, not applications. Everything on top of HTML (javascript, Ajax) is trying to force a square peg into a round hole. The base of all web applications (HTML) was not designed to do what it's being used for, I wish it would just topple over already so we can move on to something more elegant.

      Applets were originally designed to be real applications that could be automatically downloaded and run anywhere via a web browser. I still think they are much simpler to develop than Ajax/HTML. I never understood why the tide turned against applets. Too hard to install the plugin? Not really a problem these days.

      Applets also give you more control over what the application does on your system. A runaway javascript routine or flash app (cough, advertisements) are harder to regain control from (without killing your browser process which would take other webapps down with it). A JVM you can just reduce priority or raise niceness.

    6. Re:I just read a blog article on what Google does: by Glock27 · · Score: 1
      If you want a good illustration of how ridiculous it would be to insist on single language such as Java everywhere, imagine if all their sites (e.g. maps.google.com) had to be provided using Java applets.

      ROFL! This is the funniest thing I've read in a _long_ time.

      Google Maps could have been done, much better, as an applet 5 years ago. The ONLY problem would have been an one-time JVM download, since Microsoft killed Java pre-loads initially.

      It's too funny that you think Google Maps is better off as a Javascript hack...

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    7. Re:I just read a blog article on what Google does: by CFrankBernard · · Score: 1

      Please post/email the best beginning/intermediate Java books/links.

  35. Wells Fargo does it! by WellsDoofus · · Score: 1

    Standardization will buy you time until your software is outsourced to India. You can let the hackers beat the hell out of it until it gets too expensive to maintain/enhance. Simple rule - do what makes sense. Java for everything does NOT make sense. When I worked for large engineering companies, Java sucked for large-scale systems. On the other hand, it worked well in other areas (e.g. Web-related apps). On a tangent - Hey, Wells Fargo is doing it. One of the tellers that made it up to the top of the software sector made a bundle off that idea. They want Java everywhere. Well, they're getting it everywhere. Looks great at the beginning and looks like crap soon after they begin hacking away at it. Long story short - if you have the right employees/engineers, they could do it with alphabet soup - therefore, let them apply the appropriate tool/language.

  36. You can't kill legacy systems by Anonymous Coward · · Score: 0

    Such standardization efforts, while idealistic, are most likely doomed. The reason is that you can never get rid of legacy systems. You will try to train new hires on the 'standard' language and platform, but it is inevitable that they will be tasked at some point at maintaining "that old system that runs such-and-such." You just cannot escape it, unless your company is so small and new and trivial that you have no legacy code at all.

    If you want to dig yourself even deeper, ask your standardization club where business logic should go: in the database or in the J2EE bean container or in the JSP pages, etc. I recommend setting up a ring full of mud, strip them to their underwear and let'em go at it. Bet on the fat guy...at least that's how it worked in Stripes.

  37. What are these guys smoking? by Anonymous Coward · · Score: 0

    I'm sure it's good stuff, because their comments make no sense whatsoever.

    Would you write everything in /etc/init.d in C++? How about a web browser in awk? Maybe an OS kernel in Perl?

    Each language that exists and is in common use has its strengths and weaknesses. Given a particular job to be done, the strengths of a subset of those languages could well be so great that you'd be a fool to use anything else. Conversely, another subset will have weaknesses that will mean you'll be cursing for months as you try to work around the limitations.

    You don't use a hammer to drive in a screw. You don't use a screwdriver to push in a nail. Or a lawn edging tool to cut your meat.

    I guarantee you: if your company standardises on one language, and decrees that this language shall be used for every problem forevermore, you'll find that a problem will crop up that is next to impossible to solve with that language. By all means say "The default language is (insert language of choice here), and it shall be used for all tasks unless a compelling argument can be made to the techies as to why an alternative should be used." Just make sure you understand the strengths and weaknesses of whatever language you pick as the default so you don't spend months doing something that could have been done in days with something else.

    Stay flexible. You and your company will be spitting chips if you don't.

  38. Standards are good by Anonymous Coward · · Score: 0

    The main languages where I work are Java, Perl and SQL. One of the benefits of this is that everyone knows them, and we can all work on any system without having to learn a language as well as a codebase. We're even slowly getting rid of our legacy bash shell scripts when they become unmaintainable (Perl does the job nicely, and everyone knows it)

    Other languages pop up here and there, but there has to be a damned good reason to take the maintainability hit of another weird language.

  39. Pondering further by deadlinegrunt · · Score: 4, Insightful

    What item should I pick to always win in rock, scissors, paper?

    --
    BSD is designed. Linux is grown. C++ libs
    1. Re:Pondering further by Anonymous Coward · · Score: 0

      Good old rock. Nothing beats rock.

    2. Re:Pondering further by Anonymous Coward · · Score: 0

      Glock, scissors, paper? That's easy!

    3. Re:Pondering further by j-cloth · · Score: 4, Funny

      Rock.

      Next question?

    4. Re:Pondering further by RajivSLK · · Score: 1

      Dynamite!

    5. Re:Pondering further by Bushcat · · Score: 3, Informative
      The World RPS Society at www.worldrps.com should be able to help you with this. To quote, "RPS enthusiasts will also learn advanced strategies, crucial for those playing above the level of the recreation player, which throws are illegal and (because RPS is very dull when played alone)..."

      And, of course, "Think twice before using RPS for life-threatening decisions."

    6. Re:Pondering further by Liquid+Len · · Score: 2, Funny

      Obligatory Simpsons quote:
      Lisa's brain: Poor predictable Bart. Always takes `rock'.
      Bart's brain: Good ol' rock. Nuthin' beats that!
      Bart: Rock!
      Lisa: Paper.
      Bart: D'oh!

    7. Re:Pondering further by shortstumpyone · · Score: 1

      I always find a chainsaw wins, but then i find assembler code easier to follow than java.

    8. Re:Pondering further by Anonymous Coward · · Score: 0

      Hm. Always pick paper.

    9. Re:Pondering further by Anonymous Coward · · Score: 0

      Good old rock. Nothing beats that

  40. Many facets to the Issue by ljo8877 · · Score: 1

    There are many sides to the issue of standardizing on a language, and not always technical. It depends on the nature of the companies business, number of IT employees, and the type of software developed. On the Pro side: 1. In a small company developing in-house software standardizing can help save employee cost because you don't have to find someone who is skilled in all the languages or have a person for each language. And, everyone can share the work load. 2. Greater skill and efficiency can be developed focusing on one language. 3. Licensing costs are lower with fewer development tools. On the Con Side: 1. It's too late!! There would be a cost to convert existing software to the new standard that is otherwise an unnecessary cost with little business value. If you don't convert the old stuff, then you haven't standardized and won't reap the benefits. 2.You won't be using the best (or better) tool for the task. That can make some projects difficult and needlessly expensive. (write a C# program to copy files?). A hammer doesn't really fix everything. The screw driver analogy is apt. 3. When the standard tool is not the current trend (think COBOL), you'll either have to rewrite everything, become nonstandardized, or be stuck with code few people want to maintain. 4. Much like 3, you won't be able to take advantage of new technology to meet next months needs. 18 months and everything is going to be different.

  41. Lanuages are domain specific. by Inoshiro · · Score: 1

    Any company that has to standardize on one language is asking for trouble; it'll either limit the problems it can solve, or make lots of half-assed solutions to problems better solved in other ways.

    Try standardizing on a standard set of languages. With Prolog, Haskell, Perl (and perhaps PHP), C, C++, assembler, experience with shell, you pretty much have the majority of problems you'll ever run into (from bare-metal systems to logic to webpage serving) sown up.

    Creative people don't like being restricted to one method anyways. If you don't want your best people to walk, don't choose to standarize on one language.

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
    1. Re:Lanuages are domain specific. by NewbieProgrammerMan · · Score: 1
      Creative people don't like being restricted to one method anyways. If you don't want your best people to walk, don't choose to standarize on one language.

      Disclaimer: I could just be bitter about this, so take my view with a salt mine.

      I considered myself to be among the best people at my last company, and I left because a coming standardization would have left me in a place where the only challenge was learning massive, overly complicated APIs that only existed because the standardized language was so weak. So I opted to go find a job where I could be challenged with something that didn't feel like a memorization chore.

      Maybe the biggest problem is just my own ego: I view myself as a craftsman, somebody that takes the time to learn how to do things efficiently and well. That seems at odds with the prevailing business climate, where programmers tend to be viewed as replaceable commodity modules. Maybe that means I'm not cut out for commercial software development, so I'm actually thinking of switching to a career that is more fundamentally challenging.

      For the record, I had no problem with people that wanted to use the toolset that was being proposed as the standard. It was the best choice in certain applications, and I wouldn't dream of forcing everybody else to use my favorite tools. Too bad they didn't have the same attitude; I enjoyed working there.

      --
      [b.belong('us') for b in bases if b.owner() == 'you']
  42. Standardise on Logo by Steven+Reddie · · Score: 2, Funny

    It might seem a little primitive having to do a whole heap of pen up, pen down, move, and rotate commands to draw a dialog box, but imagine how impressed future employers will be when they see on your resume that you developed an enterprise scale distributed system with it.

    1. Re:Standardise on Logo by conJunk · · Score: 1

      man! that brings back some memories... when i was ten, i was showing off to the other kids that you could change the pen color... i remember my introduction to logo at some summer camp i was at, where they had this remote control turtle that crawled around the floor for a while to get us interested before they turned us loose on the amigas or apple IIs or whatever they were

  43. When your only tool is a hammer.... by Lord+Kano · · Score: 0

    Everything starts to look like a nail.

    I am always working on several personal projects. I've found that even in my limited uses some tasks are better suited to certain languages/environments.

    If it's all about processing numbers and getting output C++ is the way to go for me. If I NEED to do limited data processing and I need a windows GUI, VB or RB are what I use. If I need to develop an app that works on multiple platforms, it's Java.

    For the few thousand lines of code that my apps require it's obvious that not every task is suited to one language. I can only extend that logic to include apps with hundreds of thousands of lines of code.

    LK

    --
    "Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
  44. Myself? by ruckc · · Score: 1

    Myself; i generally use 4 languages:

    Java: End User Applications; web based apps with WebStart (portability between OSes)
    PHP: Simple Web Based stuff (mainly mapserver interfaces)
    Python (Zope): More complex websites that need integration to survive (can't beat the stack in Zope)
    Perl: simple shortcut scripts to parse text into databases. (You can't replace a language meant to parse text as well as perl does; but the learning curve is a pain to get there).

    Occasionally i will have a limit placed on the language; but when the numbers are shown for me showing them the cost of me doing the learning curve to say write a gui application in .NET that I can only guarantee will work flawlessly on 50% of the boxes we use; they generally go my way.

    1. Re:Myself? by Anonymous Coward · · Score: 0
      ...but when the numbers are shown for me showing them the cost of me doing the learning curve to say write a gui application in .NET...


      If your mastery of .net is the same as your mastery of the english language then I believe your estimates!
  45. Tough question... by pizza_milkshake · · Score: 1

    I've considered this question before; one one hand I've got very much of a "right tool for the job" attitude... on the other hand within a company there is usually the need to move people between projects ocassionally or do code review.

    Recently, I've run into an issue with wanting to work on a co-workers code... which was in C#. I've had some experience with C#, but it was a few years ago and I use C daily. Switching projects is tough enough, but switching syntax and more importantly *mindset* ended up taking too much time to justify for what I wanted, which was just to unofficially take a peek and help out a bit.

    The decision depends greatly on the size of your company and your particular situation, of course. The larger your company is, the more standardizing on a language or languages makes sense. The fewer languages you use, the more flexible you will be to move between projects and to share common libraries.

    I would suggest standardizing on a single language for all *major projects*, but don't force people to rewrite their shell scripts in Java :-P

  46. Better reasons than that... by cfulmer · · Score: 5, Insightful

    "Save everybody time" is the best the pro-standardization folks could come up with? How about: (1) save training and support expenses for multiple sets of tools & languages; (2) specialists in the language & its quirks can benefit the entire enterprose not just the single group; (3) integration between different pieces of software is significantly easier if they're all in the same language; (4) easier to reuse code; and (5) easier to adjust when developers leave.

    It's impossible to know whether it's a good idea in your case without knowing a lot more about what your company does, but in general a bad technical decision made for a good business reason is better than a bad business decision made for a good technical reason. The first one will cause you headaches down the road, but the second will make sure there's no road to go down. The key is deciding which decisions are good and which only appear to be good.

    1. Re:Better reasons than that... by HiThere · · Score: 1

      Sorry. Either one can kill the company, either quickly or slowly. It's not like "Which is more important, air or water?" They are both equally vital. (Depending usually, of course, on just what your business it.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
  47. Goal not a requirement by ken-reno · · Score: 1

    Standardization should be a goal not a requirement. When picking the right tool some weighting should be given toward the tool deemed standard. With the extra weighting if the standard tool is not as good as some other tool then the other tool should be used. This prevents the programmer who want to just inflate his resume of pick the flavor of the day language from making a bad decision.

  48. Standardize on one Language: Klingon by Nova+Express · · Score: 1
    Once your competitors know you have 47 different ways to say "I Disembowl My Enemies And Consume Their Still Beating Hearts," they'll leave the market segment all to your firm...

    --
    Lawrence Person (lawrencepersonh@gmailh.com (remove all "h"s to mail)

    http://www.lawrenceperson.com/

  49. Don't Believe It by serutan · · Score: 1

    My experience with company-wide standardization of technical details is that there are all kinds of reasons why it seems like a great idea for a while, but then it turns into obsolescence and stagnation. One problem is that users inevitably want to buy packages that IT will have to customize, and the IT dept refuses because of standards. The users hate the 2nd or 3rd best choice that does fit the standard, and the IT people who work on it get blamed for all its shortcomings.

    Another problem is personnel rot. You standardize on ColdFusion or ASP/VBScript or whatever, but then the rest of the world keeps moving. The talented creative people who want to learn C# or Ruby or whatever move on. Management replaces them with people who know their standard stuff and nothing else, who do everything one way whether it fits or not. Headhunters start describing your company as "a COBOL shop" or whatever, and you only attract one-dimensional job candidates. The people who stay behind will feel increasingly stuck there by their lack of experience with the cooler newer stuff.

    I could go on and on... anyway, if they insist on doing this it might be a good way to get some solid experience, but plan on moving on in a couple years.

    1. Re:Don't Believe It by Hairy1 · · Score: 1

      This is somewhat true. If a company doesn't keep up with the times it will rot. However there is more than just a boolean decision here. You can choose to develop in a language, and then later move to another language, training all the developers equally. The problem with no standardization is that you have developers who become indispensable because they know weird toolsets required for specific projects. It might feel nice for developers to have the freedom to write in anything they wish, but in a larger organisation it doesn't lead to flexibility at all.

      A classic example is a company I used to work for who used MagicLanguageX. MagicLanguageX (X) was retired by the company who made it, but the victim company had developed a entire system with it, on which the business depended. The developers of the system are now the only ones who know the language. They are paid a heap of money, but there is zero demand for them outside. Company bought itself into a huge problem because of a poor choice of language.

    2. Re:Don't Believe It by Fulcrum+of+Evil · · Score: 1

      A classic example is a company I used to work for who used MagicLanguageX. MagicLanguageX (X) was retired by the company who made it, but the victim company had developed a entire system with it, on which the business depended.

      Sounds like Allstate - they built an internal language and wrote their underwriting stuff in it, so now anybody they hire for developing that platform must learn the weirdness unique to that language (which they apparently hack to add features occasionally).

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  50. What about ADA? by CruddyBuddy · · Score: 1
    Doesn't anyone remember ADA? Language for the DoD that could do it all? Solve any problem?

    Launch a missile and guide it to a target, track a ship's inventory, air traffic control system! What couldn't it do?

    My gawd, it combined the best of Fortran, COBOL, assembly language, ALGOL, PL/I and many, many more. (What do you mean there was no "best of" for those languages? Oh, right...)

    In my day we had only one real language: binary. Two bits, and one of them was broken. And we were damn lucky to have them!

    --
    ----------
    Any problem can be made unsolvable if there are enough meetings made to discuss it.
    1. Re:What about ADA? by Artega+VH · · Score: 1

      I still work with ADA you insenstive clod!

      And to be pedantic it was designed for mission crictical embedded systems. It is horrible at text processing. There are also loads of good features to ADA, after learning it my programming style improved in all other languages I used (Java, perl, C, C#, PHP ect).

      --
      groklaw, wired and slashdot. The holy trinity of work based time wasting.
    2. Re: What about ADA? by Black+Parrot · · Score: 1

      > I still work with ADA you insenstive clod!

      FYI, it's "Ada". Named after Miss Lovelace, not an acronym.

      > And to be pedantic it was designed for mission crictical embedded systems.

      To support those, but to be a general-purpose programming language as well.

      > It is horrible at text processing.

      Ada95 improved a lot on the original. There are also some powerful SNOBOL-style packages out there, though I can't comment on them because I've never used them.

      > There are also loads of good features to ADA, after learning it my programming style improved in all other languages I used (Java, perl, C, C#, PHP ect).

      Yes, I've seen the same effect in my programming habits as well.

      It's unpopular among programmers because "it makes you say what you mean and mean what you say" (Ada programmers laugh when people call C++ or Java a "strongly typed" language), but when you discipline yourself to ignore your innate tendency toward laziness you find it to be an extremely powerful tool.

      --
      Sheesh, evil *and* a jerk. -- Jade
  51. Language Standardization by Anonymous Coward · · Score: 0

    The company I work for has offices in Australia, New Zealand and China so we standardized to engrish.
     
      It nearly works but not quite.

  52. Sounds to me like some people only know Java by leereyno · · Score: 1, Insightful

    When the only tool you have is a hammer, every problem looks like a nail.

    It sounds to me like the people who are pushing for standardization only know that one language they want everyone to standardize on. They're not trying to make things easier for EVERYONE, they're just trying to make things easier for themselves.

    Anyone who is limited to a single language is essentially incompetent. If they lack the natural curiosity to seek out and experiment with new development tools and languages, then they're pretty much worthless.

    I work as a sysadmin, but even I know how to code in C/C++, Java, Perl, Bourne shell scripts and even visual basic. If someone told me I had to "standardize" on just one of the above, I'd KNOW they were either crazy or stupid.

    I think you really need to consider finding employment someone else, hopefully someplace where the idiot quotient wasn't quite so high.

    Lee

    --
    Muslim community leaders warn of backlash from tomorrow morning's terrorist attack.
  53. Obligatory mod up by Arker · · Score: 1

    Exactly!

    --
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-
    Friends don't let friends enable ecmascript.
  54. language by Anonymous Coward · · Score: 0

    Yep. My boss made it fairly clear that such colorful verbage as: "f** you" "____ idiot" "H'vha!" and "Pa'ta' Tratnan!" Was not ok. But saying stupid [something_not_human_here] is fine ( Despite him being a mench and All American[tm]) he speeks impecable Klingon and " Potty mouth. "-However only three other people knew what a shout that sounded like HweeCha, at the top of your lungs ment. (Don't ask how I found out)

  55. use multiple languages within one code base by icepick72 · · Score: 1

    If you decide on multiple languages, you can use the .NET framework because all languages that sit on top of it boil down to the single Microsoft Intermediate Language (MSIL) code meaning:
    - classes, methods and algorithms written in one language can be accessed, re-encapsulated, extended, etc from the other languages.
    Write a class in VB.NET and access it from C#, write a C# object and extend it using VisualCobol.NET, etc etc.
    - MSIL can be ported to other platforms (in the future) provided the full implementation of the .NET runtime is ported.
    - It promotes code reuse and easy sharing between languages.
    Your programmers might be more efficient if they stay in their language of choice (provided there is difference experience within your company).
    - The MSIL code supports most of the latest object-oriented concepts (although not aspect-oriented yet) unlike classic VB

    Some here would suggest the Mono platform, the open-source version. I don't know enough about its particulars, but I assume it supports the same concepts.

    1. Re:use multiple languages within one code base by Detritus · · Score: 1
      Gee, what if I have to write software for something other than an Intel-based PC? Such things do exist.

      I'd second the notion that, whenever possible, software should be written in languages that are based on international standards. You will get screwed if you rely on a single vendor.

      --
      Mea navis aericumbens anguillis abundat
    2. Re:use multiple languages within one code base by Fulcrum+of+Evil · · Score: 1

      If you decide on multiple languages, you can use the .NET framework because all languages that sit on top of it boil down to the single Microsoft Intermediate Language (MSIL) code meaning:

      You get all the benefits of everything being written in a different language, while still locking you into a proprietary platform

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    3. Re:use multiple languages within one code base by tepples · · Score: 1

      [Using .NET framework is] still locking you into a proprietary platform

      The Mono framework is not proprietary. Mono can run on a BSD or GNU/Linux operating system, which is also not proprietary.

    4. Re:use multiple languages within one code base by Fulcrum+of+Evil · · Score: 1

      Mono can run on a BSD or GNU/Linux operating system, which is also not proprietary.

      Until the Linux solution becomes inconvenient to MS, at which point they shut them down with patent infringement lawsuits.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  56. the answer is by Anonymous Coward · · Score: 0

    yes, reducing the languages you use in a company reduces complexity, development cost (reusable code bases), and maintenance cost. This is common knowledge.

    But if you are a competitor of mine, please disregard this trade secret and litter your organization with as many languages as you can find...and some you can't...and please post your stock symbol.

  57. Seen it all by padamj · · Score: 1

    I personally liked Perl a lot for most of our companies need, until the day till I found that good perl programmers are really hard to find, however, finding decent Java programmers was not that difficult. Not only that, the company could literally hire two Java programers at the cost of one Perl programmer... not that it was ever a concern. The migration of all the systems took over 9 man months. However, for our performance criticial systems, we still rely on good old C. Since the amount of code there is not too much, our company has agreed to stick to it.

  58. I've been through this before ... by Anonymous Coward · · Score: 1, Interesting
    ... at a dotcom that, thanks to programming language diversity, survived the dotbomb.

    A similar scenario where the Java programmers wanted to outlaw all other languages. In my biased opinion, they were afraid they would be out of jobs if anyone got around to comparing their productivity in Java with the productivity of the Perl group.

    Two people coding Perl were able to finish a large project in roughly three months. The same amount of time the Java group said they would need to complete the job specification.

    I'm not saying Java is useless. But you really have to wonder when people start suggesting you outlaw perfectly good tools ...what are they afraid of?

  59. Re:Learn From My Mistakes by keesh · · Score: 1

    Untrue. Brainfuck, for example, is Turing complete, but cannot be used to write a webserver because it doesn't have any way of talking to operating system network calls.

  60. Be sensible by Julian+Morrison · · Score: 2, Funny

    Like anything else, the answer's "be sensible" - play to your strengths. If your company uses the "infinite monkeys" model, then standardize on Java.

    In general: an adequate coder can handle Java and bodge C++. A good coder can pick up and use any ordinary language in a week or less, and be fluent and experienced within six months. A guru can handle the oddballs, like lisp and haskell, and make them dance.

    Do not expose code monkeys to haskell. You'll pop their fuses, leading to expensive lawsuits, etc.

    1. Re:Be sensible by Kjella · · Score: 1

      A good coder can pick up and use any ordinary language in a week or less, and be fluent and experienced within six months.

      If by "use" you mean understand the basic syntax, control structures and calling conventions, yes. And it doesn't really take long until you can start producing code that in itself is clean and ok. But the real power of knowing a language is being intimately familiar with the standard library (or whatever you standardize on). 6 months is rarely enough to completely grasp the Java, C#, Qt or Gtk toolkits, instead you spend time writing what's already done. I certainly had many "wtf didn't anyone tell me that function was there" moments, even though I had tried to find one. So while you could go on a whirlwind tour of the languages, I doubt you'd become really good at any of them.

      --
      Live today, because you never know what tomorrow brings
    2. Re:Be sensible by sallgeud · · Score: 1

      A little anecdotal evidence. Being a developer, myself, I have many friends who are as well... Picking up languages like Java and C#, for anyone familiar with almost any OO language (even OO style perl) can likely start coding in either language within 24 hours and typically be effective after less than a month. Speaking for myself and a few of those friends... both Java and C# were cake to learn. I agree, you learn more efficient methods of doing things as time passes. However, I've seen several people pretty much master java and/or C# in under a month.

      When I accepted a job where I currently work, I had ~zero real experience with .NET or C#. I was primarily developing in perl at the time, with occasional use of java. This job required that I learn to be effective in C# in about 2 weeks. I can now look back at code I wrote almost when I started and see some minor modifications that could be made... but the structure and concepts wouldn't change.

      I like to think that any talented developer can transition to most of the common languages with little downtime. I also like to see organizations hire developers for their ability to understand all of the concepts, to adapt and to learn... not soley on "years of experience".

  61. There is perhaps another viewpoint... by riprjak · · Score: 2, Insightful

    ...You seem to be seeing it as a negative, yet standardisation is the Engineers greatest tool; without standardisation, Eli Whitney wouldn't have been able to manufacture weapons fast enough to win the American Civil War; Henry Ford wouldn't have produced a cost effective automobile; Toyota wouldn't be the insanely successful company they are today, of course, they standardised on a method of doing things, not a specific type of tool... Anyway, enough engineering bias, let me try and make a point :)

    Could a layman not ask the question of multiple programming languages being utilised as follows; why do you need to use thirteen different tools to solve the same problem thirteen different times? This is just as foolish... Note I am not talking about solving DIFFERENT problems...

    Standardisation is NOT INTENDED as a straight jacket, however it does intend to ensure that faced with the same situation you use the same solution. It is about portability and interoperability, it is about ensuring that if you get hit by a bus an equally competent colleague can pick up where you left off with minimal learning curve. Naturally you should employ process improvement methods after each activity to fine tune the methods!! that goes without saying. Anyway the true Engineer only uses appropriate tools to solve a problem. Sometimes "appropriate" means the tool which is perhaps not the most ideal immediately, but creates the least ongoing burden (for maintenance, interoperability, etc...).

    The descision to standardise should be made for one reason only, to IMPROVE your businesses products or processes. If you do not gain from standardising, do not standardise. Likewise, do not resist standardisation just because it is out of your comfort zone, because it makes YOUR life harder even as it yields overall benefits or because you PREFER tool a over tool b. It most certainly not be resisted because it makes your job less secure. :) Like everything else in business, there is only one reason to do ANYTHING, you take an action because it yields an overall, objective benefit. Of course, I, personally, take the long view to "overall" and often recommend and sign off on short to mid term pain for long term gain.

    just my $0.02AUD
    err!
    jak.

    1. Re:There is perhaps another viewpoint... by Anonymous Coward · · Score: 0

      fyi: writing SPECIFIC words in caps is very annoying. Thank you.

    2. Re:There is perhaps another viewpoint... by Ashtead · · Score: 1
      It doesn't seem that standardization on the language level is the problem. C, Perl, Python, C++, Java, C#, FORTRAN, Ada, and so on are just about as standardized as any screw thread such as UNC, UNF, Metric Fine, Metric Standard, Whitworth... In both sets there are plenty of options. The benefit of this standardization, that no-one is in much doubt of, is that companies or machine shops do not have to waste time on designing, testing and debugging their own language or screw threads, but can use whatever fits the job from the available selection, and put together software applications or machines or other structures.

      And just like there are places where coarse or fine pitch threads are the best choice, so it is with programming languages. This analogy also suggests that one does not want to select too many different ones, but two or three seems to be better than one, and four or more seems excessive.

      --
      SIGBUS @ NO-07.308
    3. Re:There is perhaps another viewpoint... by dodobh · · Score: 1

      Of course, in good software development, a problem is only solved once. If you need to do it twice, make it a function (or object method or whatever). If you are repeating the solution, you are doing something wrong.

      Software isn't about making repeatable solutions, it is about making templates. That is the art in TAOCP.

      --
      I can throw myself at the ground, and miss.
  62. Homebrew by DavidHOzAu · · Score: 1

    Have any of your companies
    This is slashdot, no one here owns a company... but send me an email if you do happen to chance upon a business I own, and I'll make sure our marketing department gets back to you. ;-)

    standardized on a language? How well did it go?
    Over here at DavidHOzAu Pty Ltd, our entire staff consists of one programmer, and our programming standard is that he decides what the company does. We've never encountered any problems with that, productivity remains high, and a bug never lasts for more than a day.

    And no, I am not pulling your leg. Honest.

  63. Pick the right tool for the job by Anonymous Coward · · Score: 0
    is as silly as a manufacturing firm standardizing on screwdrivers for all their screw/nail/glue fastening needs.

    Standardizing on a screwdriver really would be silly. Everybody knows that the best tool for every chore is a Vice-Grip.

  64. We settled on python by ubikkibu · · Score: 5, Interesting

    at the pharma company I work at. We were all java, C++, LISP, Smalltalkers before. It's been four years now, and it was a wise decision. It's a very adept glue language that has been easy to integrate with other systems, both at the source code and network level. YMMV, and I think perl or ruby both fill this niche well too. We just wanted to have a standard platform for new development, and have been pleasantly surprised that python has been a productive choice for legacy integration and utility tasks as well. We had a requirement recently to integrate with a Java system. I used jython and it took three days, with no curly braces to be seen. We get a lot done every day now, and it's quite motivating.

    1. Re:We settled on python by mikaelhg · · Score: 1

      We settled on python at the pharma company I work at.

      Does your company ever create multithreaded programs? If so, how did you overcome the threading problems imposed by the GIL?

    2. Re:We settled on python by Anonymous Coward · · Score: 0

      Don't bother, it's ust another Python zealot trying to promote their new and improved wheel ;-)

    3. Re:We settled on python by HiThere · · Score: 1

      If this is important to you, you might check out CandyGram (from SourceForge). It adds Erlang thread mechanisms to Python. (These aren't exactly lightweight threads, though. Actually they're independent processes. That's usually a better answer if you really NEED the parallelism.)

      Another option was the afore-mentioned Jython, which uses the Java synchronization methods, but Jython is(was?) slow compared to Python. (Perhaps Jython could be compiled with gcj? Would that be faster?)

      There doesn't seem to *BE* a good solution for large scale parallelism. Perhaps one of the dataflow languages could help. At one point in the past I was quite impressed with Prograf, but it seems to have died a rather thorough death. Partially because there was no good way to print out the programs. (Programming had to be done via a graphic IDE, which was another limitation.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    4. Re:We settled on python by iolaus · · Score: 1

      I used jython and it took three days, with no curly braces to be seen.

      You can have my curly braces when you pry them from my cold dead hands!

      --
      I find laziness to be an excellent motivator.
  65. What's .NET? by kramer2718 · · Score: 1

    No, but seriously for which languages has Microsoft written .NET compilers? And how closely have those compilers implemented the standard?

    1. Re:What's .NET? by kcomplex · · Score: 1

      There is this list on the Mono site.

      If you must use MS compilers, there are the usual suspects: C#, VB.Net, and the like, as well as Python.

    2. Re:What's .NET? by CaymanIslandCarpedie · · Score: 1

      If the question is actually just about how many .NET compilers has MS written, then the answer is just the handful you've already heard of. The thing to remember about .NET is, as you alluded to, its is a published "standard". MS has never planned to write tons of .NET compilers. They released the spec to the .NET community so 3-rd parties can implement any .NET compilers the community demands. Besides the the MS stuff the only 3-rd party one I've played with was the COBOL compiler (provided by Fujitsu) just to have a bit of a flashback to the bad old days ;-)

      Besides that I've heard of people using .NET compilers for LISP, PHP, Perl, Pyton, etc. Here is a list I'd seen (but it is about a year old)

      ANTLR Parser Generator
      BOO
      Chrome (OPascal)
      COBOL
      Coco/R (The Compiler Generator)
      Delphi
      Delta Forth .NET
      F#
      Fortran - Lahey/Fujitsu
      Lisp
      Mercury
      Mondrian
      Nemerle
      Oberon (Pascal)
      P#: A concurrent Prolog for .NET
      Perl Dev Kit
      PerlASPX
      Python (IronPython)
      Scheme (Bigloo)
      Scheme (Tachy)
      Smallscript's S# (ssharp/s-sharp) Language
      SML.NET
      Visual Basic.NET
      Visual C#
      Visual J#

      More info about any of these are available here but like I said it hasn't been updated in a while.

      --
      "reality has a well-known liberal bias" - Steven Colbert
  66. Standardize on the design method, not the tools by TigerNut · · Score: 1

    The best thing to do is have everyone agree on the code development method, not the specific language. You can always document your design using the same templates - a function is a function is a function, and you should always have an interface description doc as well as something that describes the code's behavior in more abstract terms than what the source provides.

    --

    Less is more.

  67. Standardization in APIs and commented Interfaces by burni · · Score: 1

    From my point of view it is more important to get the programmers working together, than forcing them together to choose the one and the only language,
    which is a totally non flexible decission,

    for example, if you are in the possesion of a haskel (functional programming) guy, use his skill, use his rapid devellopment skills, but get him to let other
    languages/programmers easily interface with his programs through an API
    there it is to use standards, but they should be documented well.

    The main problem when stuck to the common managed environments is, you are mostly bound to only one distributor,

    java  - java - sun
    C#,.. - .net - ms

    (please do not comment on mono as the solution for every problem, or kaffee, or .gnu, or else, sun and ms are simply the main distributors, they make the API- and language standards, the free projects are getting close, but ever will be a step behind the distributors, and unfortunatly they do not have the money for getting certified, and this certification is which most customers eye on)

    But for standardization :

    javas doc tools are good for automaticly generating interface Docs,
    with first hand develloper comments (if he/she made some)

    ( ok I left out Smalltalk ;) )

    So you see if you say, "I only need c-something coders" or say to existing
    "programmers stick to XYZ-lang", they probably will learn the XYZ language
    but they won&#180;t feel comfortable,

    while it is a wonderfull idea to standardize on languages, it should remain a beautifull dream, because it would turn out to be a horrible reality, for the programmers, and programmers who don&#180;t feel liked or apreatiated for their work and their skills they used for, they simply won&#180;t give their 100% ( DO NOT SPEAK OF 100+X % please :) )

  68. As few languages as possible, but no fewer by robin4567 · · Score: 1

    Both of the extremes of this question lead to disaster. Some languages solve a given problem more concisely than others, but having too many languages can lead to disaster as the context switch effort from one piece of code to another is larger when they are written in different languages. If I was managing a software house, I would mandate that any given project should be done in a language that was already in use in the company, unless there was a compelling reason to do it in another language. In fact choice of language between those already in use should be on the basis of sound reasons. And "It's what I know" or "It's my favourite language" are not compelling. cheers

  69. Langue de jour by Black+Parrot · · Score: 1

    Think back how many "flavor of the month" languages we've had over the past 50 years. How long do you think it will be before your "standard" language is considered déclassé, and your company has a huge code base that no one wants to work on?

    I suspect there's a trade-off. Standardizing on something makes things easier in the short run, but eventually you have an "earthquake" discontinuity and find yourself converting your whole code base to a "modern" language. Avoiding standardization gives you a mish-mash at any given time, but your code base drifts along with what the rest of the world is doing, so you get continuous slips along the fault rather than letting the out-of-synchness build up to the earthquake level.

    --
    Sheesh, evil *and* a jerk. -- Jade
  70. Argument for Standardization by Hairy1 · · Score: 2, Insightful

    There are a few things I could say about standardization:

    First of all it means that any developer can work on any project. If you have a developer leave, die or go on holiday their projects are not left in limbo while some other developer gets up to speed. In large shops it might not matter so much, but with a small shop of four or five developers it's a different story.

    Maintaining a level of professional proficiency in any language means spending time on a regular basis developing in it. Languages and utilities change all the time, and to keep up takes time. I can't imagine a single developer being proficient in more than three languages. For example, I used to do Delphi, but havn't really done anything in it in a couple of years, so I'm not really in touch with it anymore.

    From a business perspective its good to concentrate on being good with one technology rather than being mediocre in several. Learning new languages takes time, and so having standardized on one language means not needing to train new employees in several languages, and also keeps the employment pool wide.

    It means you can be clear about which projects you are aiming for, who your clients are, and allows you to concentrate on what you are good at. Obviously you don't want to chose a language which paints you into a corner - it must be flexible, generic, well supported by employee availability, and accepted by clients (and yes, some clients do care).

    However, that doesn't mean you stop evaluating the options. Right now we are moving from Java technology towards Python. Our bread and butter is still Java, but Python is giving us a faster more effective way to develop web applications without sacrificing our favorite language features. We even mix languages in projects.

    However, unregulated use of languages is not permitted because it would mean having no clear strategy for the future support and maintenance of the project. Moving to python for me means moving all our developers to that technology, and making sure we don't lose the company advantages we built up by using Java.

  71. The key word is *SHOULDN'T* by Onuma · · Score: 1

    "they should be weighed by management (who shouldn't be idiots)"

    And there lies the problem.

    --
    What else can happen when an unstoppable force collides with an immovable object?
  72. If you're competent, languages are easy by tony+clifton · · Score: 1

    This isn't a foreign language, it's a computer language. Especially for business programming, it should be about week and a competent programmer should be able to write decent code with a manual or a web page open.

    Most of the code I write is in python or java. But I'm writing a small windows application, and chose C#: I installed the IDE, and I was writing code in a few days, especially with google helping out.

    When needed I write C and C++ as well, again not a big deal except it takes a lot more time to get the same amount of work done, but sometimes there's a library you need to link to.

    The caveat in all of this is you need to be competent.

    1. Re:If you're competent, languages are easy by RevMike · · Score: 1

      You're right that languages are easy. What is hard is architecture.

      For apps that are of limited scale, a decent programmer can get the O'Reilly book and google a few things and make it work. But only a fool would think that they could design even a moderately complex J2EE application that way. And I've seen too many people who built SQL databases this way.

      Certain tasks are complex and critical to the success of a project. For an app that can be thrown away easily, it doesn't much matter. But basic architecture decisions can be difficult to refactor, and so that planning needs to be guided by people with demonstratable experience and skill in the chosen technologies.

  73. Dilbert - GO FOR IT! by ratboy666 · · Score: 4, Funny

    If you can get yourself on the "Standardization Committee", you can probably even have REAL fun! Like -- ask stupid questions: how does the language express factorial 10,000? Can I see some sample code? How about implementation of Knuth's Algorithm for sorting tape runs (whatever). How about dynamic programming? Backtracking? Functional programming? OOP support? Report generation from databases. GUI interfacing? Multi-threading?

    You get the drift. I am sure that you could generate at least 1,000 pages of samples, criteria, &etc.

    Ratboy

    --
    Just another "Cubible(sic) Joe" 2 17 3061
  74. Re:Obligatory me, too! by Anonymous Coward · · Score: 0

    me, too!

  75. Re:Learn From My Mistakes by Anonymous Coward · · Score: 0

    That's only because nobody has been clever enough to run it through inetd. As soon as someone w/ some more ingenuity than time attacks it, there will be one.

  76. Optional Standardization by boris_qd · · Score: 1

    Many tasks are more or less language neutral. For those it's nice to choose a single multipurpose language (like say python).

    When you need something specialized you deal with it on a case by case basis.

    It clearly benefits code reuse and reduces bugs to have a small rather then large number of languages.

    Boris

    1. Re:Optional Standardization by Anonymous Coward · · Score: 0

      code re-use is a myth.

      For a good programmer, it is easier (and faster) to write new code from scratch than to try and figure out what the guy before you wrote (and still get it wrong)

    2. Re:Optional Standardization by Glock27 · · Score: 1
      code re-use is a myth.

      For a good programmer, it is easier (and faster) to write new code from scratch than to try and figure out what the guy before you wrote (and still get it wrong)

      Wow, thanks for clearing that up!

      Next time I do some Java programming, I won't bother with those troublesome libraries, I'll just program everything I need from scratch! I've always wanted to implement all the containers myself, for instance...

      /sarc

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
  77. For a product line, ok. For a company, god no. by gte910h · · Score: 4, Insightful

    Unless your company is an ungodly narrow sort of business, you should rule out the use of other languages entirely.

    If you're hiring programmers who are totoally hopeless in other languages, you're not getting very smart programmers.

    However, it makes oodles of sense to restrict languages for a certain product. That makes everyone on the team interchangable, and it makes it easy to have a place to plop new hires (who know that language).

    However, before you build in a product restriction, you should put an out for performance/library reasons. I think it's silly for a shop to standarize on Java/Python, when you quite often need to make a C/C++ JNI/Swig wrapper to get certain tasks done.

    At my firm we do a LOT of Python with C++ performance cores. We do some Expect scripts to interact with interactive programs. If we had standardized down to the point we would have used One And Only One language, then we would have one of many suboptimal situations: Standarizing on Expect would have been silly, TCL is not a full featured language. If we had standarized on Python Only, some of the code that needed to run over HUGE datasets would have taken approximately 15 times longer to complete than the C++ core did. The C++ core took HOURS as it was.

    If we had standardized on C++, our dev/debug time would have been much much higher. We also would have had to spend more hiring developers (you can get good python code out of an intern. Good C++ doesn't come out of interns often enough to mention).

    Standardizing on C++ isn't really standardizing. For a project to really standardize on C++, you have to pick a subset of that colossus and forbid the rest.

                                      --Michael

    --
    Want to see every step I took to start my company? http://www.rowdylabs.com/blogs/pitchtothegods
    1. Re:For a product line, ok. For a company, god no. by gte910h · · Score: 1

      Unless your company is an ungodly narrow sort of business, you should rule out the use of other languages entirely.

      Whoops...that should read:

        Unless your company is an ungodly narrow sort of business, you shouldn't rule out the use of other languages entirely.

      --
      Want to see every step I took to start my company? http://www.rowdylabs.com/blogs/pitchtothegods
  78. Prove them wrong ... by Anonymous Coward · · Score: 0

    Prove the standardization guys wrong. Show them how inefficent one language can be. Standardize on Intercal.

  79. Not languages, but build systems ... by Anonymous Coward · · Score: 0

    I work for a multinational software company. We've grown through acquisition, so we're a whole lot of diverse pieces of software and different build systems/source control. We're going through an initiative to consolidate all of our build systems.

    Looking at the way it's happening, it's going to be painful. Imagine trying to mine out the data from a bunch of cobbled together build and source-code control systems into one big honkin' one. Every code repository and build mechanism you could think of, using a dizzying amount of different tools, across several micro-organizations, on a bunch of different environments, spanning at least one ocean. I'm scared looking at it because I can't yet tell if the information which is captured in some of these system can be represented efficiently (and useably) into one system.

    Forced standardization sounds great on paper, and probably gives the metric-heads something to make graphs from. But in the end, if moving to such a system causes you to lose information (or worse, causes complete re-implementation of code) then certainly in the short run it's done more damage than good. And possibly in the long-run depending on how much archival information was embedded in the systems you scrapped, you could lose a lot of the knowledge in those systems.

    The theory that one tool is the solution for everything is highly flawed, IMO. I'm looking forward to seeing how our migration goes over the next few months.

    I've deployed stuff in the field, and migrating any legacy system can be a pain in the ass. It's always fraught with data-loss, or no way of capturing those 'exceptions' that nobody ever thinks of up front. And then you're left with highly valuable bits of data there's no place to store, or no way to use later.

    There be dragons.

  80. Absolutely by countach · · Score: 1

    Absolutely yes, standardising one one language is a Good Thing(tm)

    Lisp systems did it. Of course lisp is so powerful and flexible nobody would have considered that a restriction.

    A language like Java has a number of flaws but it is Good Enough(tm) to standardise on also.

    So I say standardise away within reason. Obviously there may be exceptions, but if your primary language you choose is a good one, you should need a damned good reason to leave the standard.

  81. Are You Surrounded by Incompetents? by cheesedog · · Score: 4, Insightful
    Here's how to tell that the people that surround you, um, how to put this delicately... 'lack critical thinking skills':
    1. They advocate standardizing all software development on one language
    2. They advocate standardizing all development tools in one IDE
    3. They advocate standardizing all code formatting into one standard (tabs v. spaces, how far to indent, where to put the curlys, etc.).
    4. They advocate standardizing on hitting '60' instead of '100' when you use the microwave and want to heat for 1 minute.
    5. They advocate standardizing on one height for all adjustable chairs in the office.

    Notice a pattern?

    If there are enough people in your organization that this issue actually has to be debated, you might as well start looking for an exit -- the company is doomed to, at best, forever wallow in mediocrity. I'm not exagerating. This type of 'discussion' shows a serious disregard for reason, logic, and a lack of respect for wisdom. It's a serious indication that those spearheading the push have no clue what they should be doing in their roles -- they can't figure out how to do real work that would actually be valuable to the company, so they choose to waste their time on this.

    There is something else at play here: whoever is pushing for this doesn't trust their developers to make sane decisions regarding development tools. Maybe that mistrust is warranted, maybe it isn't. Either way, you are screwed.

    Now, if you were talking about a 5-man startup, it's almost a sure bet that you are all going to be writing in the same language, and you might even all be using the same IDE. Same if you are working in a small team in a larger organization. But a company-wide push to put all your eggs arbitrarily in one basket? Insane. For one, it means that the company will only attract (or keep) programmers who are not interested in developing new skills. And a programmer who is not interested in keeping their toolset current is generally a very poor programmer.

    Smart people don't build monocultures on purpose.

    1. Re:Are You Surrounded by Incompetents? by CharlesEGrant · · Score: 1
      They advocate standardizing all code formatting into one standard (tabs v. spaces, how far to indent, where to put the curlys, etc.).

      I take your overall point, but have you ever worked on a multi-developer project where one person insisted on using tabs when everyone else use spaces (or visa versa)? It's a pain in the neck.
    2. Re:Are You Surrounded by Incompetents? by greg_barton · · Score: 1

      Here's how to tell that the people that surround you, um, how to put this delicately... 'lack critical thinking skills'

      And here, kids, is how you can tell a co-worker is a primadonna and will be a pain in the ass to work with. Avoid them like the plague.

    3. Re:Are You Surrounded by Incompetents? by Anonymous Coward · · Score: 0
      For one, it means that the company will only attract (or keep) programmers who are not interested in developing new skills.

      That whole comment was a joke, but that statement is really sad. Speaking of people who "lack critical thinking skills", you obviously didn't think this through at all (or perhaps, as you say, you just lack those skills). If a company standardizes on one or two languages, it doesn't mean they are stuck with it for all of eternity. Most large corporations will choose mature languages, and those don't pop up every two weeks. Where I'm at now, the standard five or six years ago was c++ or vb. But surprise, things evolve. We now do as much as we can in c#, although c++ is still used when needed. In fact, we were using c# before most other places, so this "monoculture" actually resulted in me having a more current skillset than 95% of the programmers out there.

    4. Re:Are You Surrounded by Incompetents? by Hairy1 · · Score: 1

      Developers will always want to use the tool they think is best, however if every developer in a organisation used what they thought was best you would have huge interoperability and intergration issues. At some point a manager type has to make a decision on how they project will be written, and usually its one language - perhaps two. A application may require several technologies, and some of those technologies will be more advanced in another language. However, overall it is better to take a hit on the fringe than fracture the architecture. For example, Ant and JUnit provide a way to autorun unit tests on build. Having Python, perl and whatever else in the mix just makes it harder to test - especially the interfaces between those languages.

    5. Re:Are You Surrounded by Incompetents? by mikaelhg · · Score: 1

      Mod up the parent post by greg_barton, please.

    6. Re:Are You Surrounded by Incompetents? by Tim+C · · Score: 1

      They advocate standardizing all code formatting into one standard (tabs v. spaces, how far to indent, where to put the curlys, etc.).

      Coding standards matter, even to the level of where to put the braces. I don't even particularly care what the standard is (I have my personal preference of course, but that's not important), just so long as one exists.

      Where standards don't exist and everyone just does their own thing, you'd not believe the amount of time that can be wasted by stupid little things - not realising where a block starts or ends, or that you've actually entered a new block, just because someone put a curly on the end of a line and everyone else puts them on a new line, and it went unnoticed as you scanned the code.

      Now, I'm not necessarily advocating a company-wide policy, but I think department-wide it's a must. To not do so risks producing untidy, hard to read code.

    7. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      have you ever worked on a multi-developer project where one person insisted on using tabs when everyone else use spaces
      Yes, yes I have. And it isn't a big deal.

      I've worked on teams as small as 4 people, and as large as about 20. And it was never a problem. Maybe I'm lucky -- I've always worked with people who are adaptable and competent, and who don't get confused if someone used tabs in one file and spaces in another.

      Here's the alternative that works just fine -- each developer has "ownership" of the code they write. And each piece of code is formatted as its owner pleases.

      What happens when two developers need to work on the same file? As long as 'ownership' is generally understood, the developer who doesn't 'own' the file conforms to the owner's style, and just edits it in a way that is as conformant as possible. If the second developer doesn't do this quite right, the first can always clean it up later.

      Once in a while, a piece of code slips from one owner to another. At that point, both the previous owner and the new owner will recognize that it has happened, and the new owner is free to reformat that whole kaboodle to his liking

      Seriously, with tools like indent and astyle (not to mention IDE specific formatters), you'd think we'd be over this childish bickering about where to put the curly braces by now. It simply doesn't matter. Pretending that it does is wasting effort and time.

    8. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      Name calling doesn't really address any of my points, now, does it? But I'll go ahead and address the primadonna epithet. In my eyes, a primmadonna is someone who is not only "always right," but who believes they are always right because they are superior to those around them. They are inflexible and, as you said, a pain in the ass to work with.

      Do we agree so far?

      Now, you tell me, who is the primmadonna:

      (a) the person who believes that their code formatting rules are superior and should be forced on everyone around them, the person who believes that their manner of placing curly braces is the only true way and thus that anyone who doesn't do it that way is a 'pain in the ass', the person who believes that the language they most prefer is the one that should be dictated for all programmers?

      or

      (b) the person who believes that the people around them are sufficiently capable of making their own decisions about code formatting, and who is generally flexible when it comes to specific arguments regarding which language to use for which task, and who would never presume that his own preferences were as good of a fit for everyone else as they are for himself?

      Pot, meet Kettle.

    9. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      Coding standards matter, even to the level of where to put the braces.
      I strongly disagree. This is a problem only for the most unadaptable of people. Switching between one format and another while reading code is not only an extremely valuable skill (don't you ever consult code not written internally by your company, in textbooks, academic papers, open source?), but it just isn't that difficult (except to inflexible people who believe that their way is the only true way).
      To not do so risks producing untidy, hard to read code.
      Let's ignore the problems with the myth of untidy hard to read code being caused by code formatting problems and get to the real meat of the issue: code is hard to read iff it is either intentionally obfuscated (which really super-poor crazy formatting can fall into, but anyone who codes like that should be let go) or the code is structured poorly, which is entirely a code design problem, not a formatting problem. I've been around the block enough times to know which is the bigger problem, and it ain't formatting.

      Seriously, if formatting is such a problem for you when you read code, then you should really familiarize yourself with tools like indent and astyle.

    10. Re:Are You Surrounded by Incompetents? by greg_barton · · Score: 1

      Do we agree so far?

      No.

      Try the Merriam-Webster definition: "an extremely sensitive, vain, or undisciplined person"

      You apparently can't see that code format standards have some use other than stroking the ego of those who create them. Seems you're rather stuck on the ego thing. Hence, the primadonna tag.

    11. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      Again with the name-calling and false characterizations. A smarter person would not even respond, but I'm too dumb to resist.
      You apparently can't see that code format standards have some use other than stroking the ego of those who create them.
      Oh, I can see that they have some other use, even some minor benefit. I'm just claiming that the minor benefit is dwarfed by the harm done.

      I really find the whole debate childish. Do grown men really still argue about where to put the curly braces, tabs, spaces, whitespace, etc.? About vi vs. emacs vs. Eclipse vs. DevStudio vs. NetBeans etc.? It's been so long since I was in an environment where that kind of thing occurred that I find it hard to believe this stuff still goes on. I guess I'm lucky, having quickly left the one company where this was an issue for greener pastures with more professional co-workers and more reasonable managers, where no one cared what editor you used or whether you K&R'd your braces or ANSI'd them -- where the only thing people really cared about was how you performed your duties and how good of product you and your team turned out.

    12. Re:Are You Surrounded by Incompetents? by greg_barton · · Score: 1

      Do grown men really still argue about where to put the curly braces, tabs, spaces, whitespace, etc.?

      You can't seem to see beyond this. No matter.

      You want to impose chaos. You want to force everyone to do things your way. (Which is the "everyone should do things their own way" way.) No different from what you rail against. It's kinda funny, actually.

    13. Re:Are You Surrounded by Incompetents? by kennethl33tzer · · Score: 1
      The only real pain in the ass is working at a company where those who have power impose arbitrary rules upon all those who have none. You want to dictate what language my team will write our product in, for no other reason than because you want to standardize? That, gentle reader, is not just a pain in the ass, that's a major obstacle to business objectives.

      I'd work with this "primadonna" over working at that company any day.

    14. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      You want to impose chaos. You want to force everyone to do things your way. (Which is the "everyone should do things their own way" way.)
      Oh, come on. Now you are attacking the tenets of freedom, choice, and democracy?

      We live in a pluralistic society. The norm is for rational people to disagree civily with one another. The solution is not to issue a fatwa that quells all dissent. The solution is to embrace the diversity of opinion and encourage discussion. You can't do that if you lobotomize everyone so that they think the same way. Monoculture is your enemy, Liberty your friend.

    15. Re:Are You Surrounded by Incompetents? by greg_barton · · Score: 1

      Now you are attacking the tenets of freedom, choice, and democracy?

      Well, then, with your own reasoning you're attacking the rule of law. Why stifle everyone's right to kill whomever they please? Laws against murder are attacking that right, yes? Laws force members of society to submit to the will of the state. Do you think all laws are bad? Or do you just want the ones you agree with? Would you force people to submit to the laws you liked, and only those? How arrogant and tyrannical of you!

      You can't win. Stop now while you're ahead, fromagepuppy.

    16. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      Are you seriously comparing putting curly braces "in the wrong place" to murder?
      everyone's right to kill whomever they please
      If you can't differentiate between natural rights and an unquestionably non-right ('right to murder', WTF?), then I think I'll just go ahead and invoke Godwin's Law (or some variant) right now and end the discussion.
    17. Re:Are You Surrounded by Incompetents? by greg_barton · · Score: 1

      Are you seriously comparing putting curly braces "in the wrong place" to murder?

      Gee, if you're comparing code standards to destroying democracy...umm...yeah?

      If you can't differentiate between natural rights and an unquestionably non-right...

      So, so you get to decide what's a "natural right" and what's an "unquestionably non-right," ya? You get to decide this, and not me? How incredibly arrogant of you! You're imposing your values on me!

      You just fail to see where your ideas go, fromagepuppy. And, in your original post you called anyone who didn't share them incompetent. Just callin' you on the carpet, son.

    18. Re:Are You Surrounded by Incompetents? by Anonymous Coward · · Score: 0

      I strongly disagree. This is a problem only for the most unadaptable of people.
      when *you* code, do you switch style every day? I didn't think so.

    19. Re:Are You Surrounded by Incompetents? by ratboy666 · · Score: 1

      I blaim the Microsoft IDE.

      So here's the thing... I was the "Unix Guy" at a company, doing the "Unix" reimplementation of the products.

      Everybody else is using Windows, and the Microsoft IDE for C++. I use VIM.

      So heres the thing. The MS IDE doesn't believe tabs are 8. It picks something else (3, 4?). No big deal, because a space is a space. They want my code, so I tell VIM to use spaces rather than tabs. Whenever I get code back, I have to replace tabs with spaces. Extra step for me, but hey.

      The MS IDE will edit files with \n terminators. Unlike VIM, it doesn't actually REMEMBER this, so new lines have \r\n terminators. A mess. Now, its only a single command in VIM to fix this, but is a nuisance.

      Now, several other people had to come to the "Unix" side. They didn't know the "magic" VIM command to fix the line-end nonsense, and would have given up on VIM in disgust (fwiw, :1,$s/^V^M//g where ^ means control-key). Once they knew the "magic", the disgust factor went to the MS IDE for doing such a "stupid" thing.

      It is also (IMHO good) common practice to put "meta information" into files if the "default" isn't being followed. The "default" is defined by what happens when you dump the file to the terminal session with "cat" (TYPE). Note that generally this means that tabs should be assumed expand to 8.

      If they are another size, please put in the (VIM|EMACS) information required to set the tabulation. Add the following line to the bottom of your C source file: /* vi:set ts=4: */

      The Microsoft IDE doesn't understand this, but you WILL make the "Unix Guy" a lot happier. Especially if you are using a really odd-ball size for tabulation (say, 5). And, who knows? maybe one day the MS IDE will respect it.

      Ratboy.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    20. Re:Are You Surrounded by Incompetents? by cheesedog · · Score: 1
      when *you* code, do you switch style every day? I didn't think so.
      When I'm writing my own code, I format it the way I like. When I'm editing code that someone else has written (or adding functionality), I edit it conforming to the style that they used in that file.

      So, yes, I do switch styles when I need to in order to play nice and respect code-ownership, and yes, in code pushing stretches, this is often every day.

      Is that really so hard to believe?

  82. the answer is obvious... by Anonymous Coward · · Score: 0

    Machine code! Yes, those good old 1's and 0's will solve anything. After all, assembler,C/C++, Perl, Ruby, Python are all built on top of machine code arn't they? All you have to do now is figure out what machine you are building for! (NOT!!) All languages were built for a reason, to abstract the problem domain from the hardware and to express the problem in a language natural for the problem domain. Each language has its place, but what you REALLY need to do is figure out what problem you are trying to solve and then pick the *languages* (yes plural) to fit the problem(s)! Don't pick fortran to solve an need for an AI expert system, likewise don't pick scheme to fix a distributed but otherwise purely numeric computational problem. I stopped counting at 14 languages because I soon found that some pointy haired bosses will expect you to solve all the worlds problems in the language they just heard about, even if its 20 years out of date. Yes, you want to limit the number of languages but you can not bring that number down to '1' just because someone likes that number.

  83. Re:Learn From My Mistakes by koreaman · · Score: 0

    Really? I know both C++ and DOS bs are turing-complete, but why does that make DOS bs C++-complete?

  84. Pick Two: It Does Make Sense to Narrow the Field by BigTimOBrien · · Score: 5, Insightful

    Pick Two

    One from - Java, C#

    One from - Ruby, Python, Perl

    It makes perfect sense to standardize on both. Scripting languages will always be more appropriate for text processing and other tasks like validation and system administration.

    But, from what I've seen, it is important to standardize an organization on one of each. Letting people go off and just write System X in new technology Y might be enjoyable, but it does end up in a great deal of duplication and expense. For example, one environment I've seen has a great deal of Actionscript, a great deal or Ruby, more Perl than I'd ever want to see, and some J2EE applications. This usually occurs when an organization lacks a sufficient level of oversight over architectural decisions.

    Just pray that neither side wins. Writing only Java is as silly as writing in a different language every single day.

    --
    ------ Tim O'Brien
  85. Standardize on Hindi~ by colin_n · · Score: 4, Funny

    Your company should standardize around Hindi - the new programming language in India - It is an extremely natural language - you write down your requirements in English (even on paper), send it via e-mail / snail mail to a supercomputer called "India", the "India" machine turns it into Hindi and feeds the information to a cluster of other India machines, known as "Indians" and then these "Indians" break it down into functions, write the code, put it back together, compile and send you the binary - you wont have to worry about what language they code it in!

    --

    --------- I have no signature
    1. Re:Standardize on Hindi~ by strider44 · · Score: 5, Funny

      Is the binary Big Indian or Little Indian?

    2. Re:Standardize on Hindi~ by BeardsmoreA · · Score: 3, Funny
      At least if you mix them up you should end up with a decent Na(a)n.

      Sorry. No really.

    3. Re:Standardize on Hindi~ by piergi · · Score: 3, Interesting

      Oooh yes...this is where it's really going my friend...and it's gonna hurt so much...

      In time you will realize what is really at stake...and it's not Java or not Java.

      I saw this personally. I was working at a very large US telco, which had bought many smaller telcos in a short period of time, all using mainframes really. The old timers managed to make all work together nicely, cobol, fortran, c, whatever, it worked.

      First, they "standardized" on Java, and one and a half seconds later, they "standardized" on India.

      The problem with us programmers is that we don't think like managers. For IT managers, having outsourced all they could is a VERY GOOD thing and it's the hip thing these days. It's a promotion for them. Go to Amazon and check IT management books. They RECOMMEND it. We programmers just don't see it, it's only natural, we code, we are not managers. It is just like it was Java for programmers in the 90s, you had to try it. IT managers are not there to make sure you have a salary, they are there to make sure they have a salary.

      And for India, the only way to get started in the game is to standardize on J2EE: not even Java, J2EE. Most of those programmers (personally seen it) can't override java.lang.Object.hashCode(), but they can deploy an EJB.

      What was ludicrous about the situation is that being the company very large and rich, they could actually afford to create the outsourcing company themselves from scratch and "make it profitable". They went to India, found the people, interviewed them, prodded them into EJB programming. They used to show us "before" and "after" photos. (There used to be a field here, look at the data center now)

      The code itself...oh my God. First thing I saw was a 15 THOUSAND line jsp page, it was average. The guys down in India where such beginners that the company had to buy a million-way mega server from Sun to keep the "portal" running for at least 24 hours straight, and most of what the "portal" was doing was screen-scraping the mainframes (I am not saying Indian programmers are not good, I am just saying that the good ones are already taken/gone to the US etc).

      So, in my humble opinion, yes, you can standardize on a language, especially if you take your management's solution, Java, which is all things to all people, provided you use 10 people to make a 3 page website, use a Sun 100-way machine, and you get custom patches to Weblogic from BEA to your custom problems, since it's included in the multi-million support contract.

      But as a US programmer (I am assuming you are) you will be made to eat so much manure, you will be sorry you had'nt left.

      Just my two cents from personal experience.

    4. Re:Standardize on Hindi~ by popeyethesailor · · Score: 1

      That's kinda ironic, considering Indians speak lots of languages/dialects.. there's no Indian language. Yes, the national language is Hindi, however practically every Indian state has its own language.

    5. Re:Standardize on Hindi~ by Anonymous Coward · · Score: 0

      One little two little three little-endians, four little five little six little-endians...

    6. Re:Standardize on Hindi~ by thatJoshGuy · · Score: 1

      Oh man. That was gold.

      And who said Slashdot couldn't be funny.

  86. Re:Learn From My Mistakes by Tablizer · · Score: 1

    That is more of an access/portal issue, not a computation issue. If BF can write to files, I would note, then one can use polling for messaging to a web-server with a small driver on the other side. Not pleasent, but T.C. is not about "pleasent".

  87. Re:Learn From My Mistakes by Cobralisk · · Score: 1

    Why would it need to? Simply write your brainfuck webserver to talk to standard I/O, and let inetd talk to the operating system network calls. You only need to get your program to speak HTTP (and optionally produce some coherent output in HTML) This is not impossible, just insanely difficult and masochistic.

    --
    Waiting for ad.doubleclick.net...
  88. Focus on Interoperability by c0d3r · · Score: 1

    Its wrong to focus on a standard language. Its better to focus on interoperability. Web Services (SOAP over HTTP) seems to be the winner today, with COM ruling the windows world.

  89. Depends on the abilities of your tech team by fbg111 · · Score: 1

    Programming languages are lot harder to learn than screwdrivers are, so that analogy is not particularly apt. If you're a well-healed business that can afford to hire for the bulk of your tech team CS graduates or the equivalent who are versed in theory and therefore equipped with the intellectual tools to quickly pick up any language, then you should have no problem supporting a diversity of languages and platforms, and could even leverage their various strengths to get something better than a single platform or language might provide. If you can't hire such a tech team, you're probably better off standardizing on something common like .NET or Java.

    --
    Flying is easy, just throw yourself at the ground and miss. -Douglas Adams
  90. Corporate-Wide standardization by cbm_dude · · Score: 1

    From the question, it is hard to ascertain the size of the "company" Below a certain size, standardization is more trouble than the benefits provide. In the middle, standardization probably depends on how willing the developers are. At the top end, where I live, some amount of standardization is a must. With 200 developers in our division alone, being hit with numeroud SOX (SarbOx to some) requirements, a need to implement massive DR plans for our systems, and a wide geographic development distribution that sometimes does not communicate well enough, treating programming languages like tools in a toolbox is unworkable. That said, you can't just quit cold turkey. At our size, you need to define a "strategic" language. In our case, many of our vendors utilize Java and J2EE, so that becomes our strategic language. However, we continue to support some older Win32 client code that demands VB6, and some vendors we use chose .NET, so we have to support that as well. That said, stuff like Python, PHP, Perl, Pascal, etc. must have serious justification before they are used for major development work (Perl is a favorite for the UNIX admins, but they are not considered development staff here)

    Yes, there are times when the project gets sub-optimized by being constrained language-wise. Developers will grumble (and I am a senior development resource, BTW), but overall, the cost is less to enforce some standardization. Why?

    Cross training/support. The fewer languages, the more bodies we have on staff that know it.

    Integration. Not everything can be a web service. Our business users hate us telling them that we need to rewrite that chunk of code because it is in Language A and the rest of the project is in Language B

    Development Machine stability: Compilers, IDEs, runtimes, etc., all have to pass through a rigorous testing matrix before they can be loaded on Development machines. Cringe if you want, but SOX and other regulations make those things necessary. Thus, more languages means more money tied to testing and certifying the components on a development box

    Coding standards: The fewer languages, the fewer times we have to sanction a team to author standard for that language.

    As a developer, I find the "languages as hand-tools" analogy severely lacking. Possibly, treating them like powertools is better. Once I select my Dewalt cordless tools, I am locked into a battery option, saw blades, etc. Some stuff can be bought generically, but I'm not going to go out and buy a Wilwaukee set of cordless tools just because their saw option does a better job on miter cuts. I will figure out a way to make good miters with my Dewalt. If I find myself making miters all day, I might consider buying just the Milwaukee saw, but I know I'll be forking over more bucks for extra chargers, batteries, blades, etc. I will not do that lightly.

    I applaud developers who can pick up languages easily and are fluent in many. That said, language prowess does not give the developer license to create a programming Tower of Babel. If a developer can't show that kind of restraint, the company is no longer a good fit for him/her.

    In the end, I think 1 is too few languages, but I think > 4 is too many for a large firm. Same goes for editors, compilers, etc. Of course, each company has to weigh the risks against the benefits. I can see a cross-platform developer needing many more compiler options, and there are no doubt firms where performance cannot ever be sub-optimized, so my comments are moot. However, for those who live in a data-processing land where I exist, there is little to gain from switching languages like a playboy switches partners.

  91. Standardization is useful... but by TheSkyIsPurple · · Score: 1

    but only within certain boundaries. Our company standardizes on a language in each of our different projects. There is also a standardized interface between projects, so we don't have the multiple languages problem.

    It gives us flexibility, but also leaves us room to react as needed.

    This reminds me my languages class in college...

    We had to do the same three projects in 4 different language styles (C, Lisp, Prolog, etc...)
    From that we really learned how painful a language can be if it is being forced, and how wonderful they can be when used for what they were designed for.

  92. A common language is good... by localman · · Score: 2, Interesting

    I've never tried standardizing on a language after the fact, so I don't know how that would work. But I am a firm believer that a common language for the development team is a good thing. Much like a common spoken language for the team is a good thing. It encourages code reuse, sharing, and general system understanding. On the occasions that something in our system is written in another language (we had a few C modules from contractors and third parties), it usually ends up being a mystery system and we accept it with it's behavioral limitations or we end up rewriting it in our own language (which happens to be Perl) so we can tweak it as needed.

    Of course we actually do use several languages: perl, SQL, DHTML. But each one covers a very specific, non-overlapping domain. I've tried to stay away from having a second language cover the same need in a different way. It's hard enough to keep everything understood and shared as is.

    Cheers.

    1. Re:A common language is good... by Anonymous Coward · · Score: 0

      not to nitpick, but DHTML is not a language. It is a technique of combining CSS, HTML, and scripting to make HTML do Dynamic things.

  93. Is language standardization even desired? by ciurana · · Score: 1

    Greetings.

    I work as an architect for one of the largest companies in the world. There have been several attempts at finding the standard language holy grail, and in the end, the strategy that works, is to have a standard language assigned to given problem domains. With that in mind...

    * The web site itself is done in Java/JSP/JSTL/etc.
    * The business logic is built with PL/SQL
    * The scripts that build the site are written in shell, make, m4, Perl
    * The QA team gets along marvelously with Python
    * The end-user, on-demand digital goods delivery offerings are written
        in either Flash or .Net, depending on problem sub-domain
    * Etc.

    The policy is to find what's the best tool for a given job, and standardize on that tool. The strategy has worked very well.

    My suggestion? The good old "find the right tool for doing a specific job".

    Cheers!

    Eugene

    --
    http://eugeneciurana.com | http://ciurana.eu
  94. Minimize platform diversity, don't eliminate it. by firewrought · · Score: 2, Insightful
    I believe in using the best car for the job. When I'm going to the beach, I take the SUV. When I'm driving to the other side of town on surface streets, I take my civic; if it's raining, I'll swap out the touring tires for all-season ones and give the windshield a quick RainX treatment. When oil prices spike, I'll whip out my OBD-II and tweak my fuel ignition timings; I usually remove all the passengers seat too, though one time a coil popped loose and tore a hole in some new jeans. If I've got a date, I'm going to pick her up in the Porche, unless she's the earthy type who would rather make out in a Jeep... or, actually, I'd prefer to use a HumVee, but I had to sell mine so I could rent a 18-wheeler to help my friend move out of his apartment. It was a hefty expenditure given that I had to hire a commercial driver and pay insurance, but we were able to get it all in one trip! With an ordinary vehicle, we would have to ferry stuff back and forth, which would have taken, like, ages.

    Moral: 'The best tool for the job' is not the same thing as 'the best set of tools for all of our jobs'. I suspect most businesses will do best picking one or two languages (static+dynamic works well, like Java/Jython) and sticking to them except in well-justified exception cases (like needing to write a device driver). DBA's and sysadmins will probably have their own collection of scripting languages dictated by their DBMS or OS platform.

    The opposite of 'best tool for the job' (often subscribed to by programmers) is the 'one size fits all' advice (often subscribed to by management). It has problems too. If your bias is towards 'best tool', think about (1) overcoming any reluctance you have to learning a new or "rival" platform (2) long-term cost and risk of having an extra platform [it's higher than you think]. If your bias is towards 'fits all', learn more about when language choice it matters and be receptive to dialog on new or alternative tools. (2) avoiding pointless diversity which will cause headaches for future maintainers down the road.

    --
    -1, Too Many Layers Of Abstraction
  95. Yes, but let me choose! by RussP · · Score: 1

    I say yes, select a small set of "standard" languages -- but let me select them:

    -- Python for prototyping and in-house analysis

    -- Ada for large, long-lasting, and/or critical systems

    Yes, I'm serious.

    --
    I watch Brit Hume on Fox News
  96. depends on the tool you use by Anonymous Coward · · Score: 1, Interesting

    I work for an internet pioneer company that has survived the .com crisis and continues to thrive. However 3 things are golden. Bash, Perl, mason. It is not the quantity of tools you have, but the right swiss army knife. Granted there are times you need a surgical tool for the job. Just keep the pool of tools small and versatile and all will be well.

  97. Compromise by Propaganda13 · · Score: 1

    One tool can't do everything. Too many tools lead to organization problems, etc.
    Generally, a small toolbox with good selection of tools is your best bet.

    Don't worry to much about it though since office politics will just screw it up anyway.

    1. Re:Compromise by alister · · Score: 1
      One tool can't do everything. Too many tools lead to organization problems, etc. Generally, a small toolbox with good selection of tools is your best bet.

      I'm looking at standardisation, and I'd agree with this, as long as each tool is justified in that toolbox. However, what drove me to comment is this:

      Don't worry to much about it though since office politics will just screw it up anyway.

      You're part of office politics too, you know. It's a part of working with one or more people - if you don't like it, change it or find somewhere else.

      Alister

  98. Mixed results by Todd+Knarr · · Score: 2, Interesting

    I've had mixed results with standardizing on a language. All too often it's done purely for the sake of standardizing, with no thought to anything else. Programming languages are tools, and ones being used by a team not just one person. You want to minimize the number of variations in your tools so people don't have to worry about needless vagaries from one tool to another. At the same time, you don't want to standardize so far that you eliminate entire kinds of tools and end up doing the equivalent of trying to use a rock as a hammer because your shop's standardized on screwdrivers and screws for holding things together and so doesn't have hammers (the programming equivalent would be trying to do simple scripting jobs, that'd be 5 lines in Perl or bash, in C++ because that's the language your shop standardized on).

    The only times I've seen standardizing languages work is when the first step was to not standardize. The first step in a successful standardization effort will be to ignore languages and instead take stock of what kinds of programs you need to write. Include all those little one-off jobs that you have to do several of every week, eg. the little hack to extract the error messages you're interested in from the logfile. Then, for each kind of program, look at the languages suited to writing that kind of program and see what one your developers are most comfortable with and, just as importantly, what your existing code is written in. An inferior langauge that all your developers know well is superior to a superior language that they're not familiar with, and if you've a large body of code in one language then that language is better than a different language. If several kinds of programs can be served sufficiently well by one language, well and good. If not, well and good too. The goal is to simplify getting the job done, not hamstring yourself with rules not related to getting the job done.

    In the Unix world, normally I expect at least 4 standard languages. You'll have shell script (typically sh because so many other tools expect it, but csh is possible), make (because every development environment typically depends on make at some point), another scripting language (Perl, Python, Ruby, etc.) and a "real" programming language (commonly C, C++ or Java, add VB and C# in a Windows environment, others are possible).

    1. Re:Mixed results by RevMike · · Score: 1
      he first step in a successful standardization effort will be to ignore languages and instead take stock of what kinds of programs you need to write. Include all those little one-off jobs that you have to do several of every week, eg. the little hack to extract the error messages you're interested in from the logfile. Then, for each kind of program, look at the languages suited to writing that kind of program and see what one your developers are most comfortable with and, just as importantly, what your existing code is written in. An inferior langauge that all your developers know well is superior to a superior language that they're not familiar with, and if you've a large body of code in one language then that language is better than a different language. If several kinds of programs can be served sufficiently well by one language, well and good. If not, well and good too.

      Good points.

      I have a similar view, though I codify it a little differently. My basic concept is this:

      If you are handing a single picture on the wall, pounding the nail with a stapler that was sitting right there might be fine. If you need to hang a bunch of pictures around the house, go to your toolbox and get a hammer, but any old hammer will do. If you are building a deck, you'll really ought to get a good framing hammer, even if you need to go to the store and buy one.

      Every programming task has languages that are perfect, good, acceptable, and unacceptable. Every task also has a "weight" for the customer. Build a matrix of the tasks, their weight, and the languages that are perfect, good, and acceptable for each task.

      Once the matrix is built, analyze it. Are there one or two tasks that stand out as being far and away more important that anything else? If so, make sure that a "perfect" language is among the languages chosen to standardize upon. If you are building a deck, have a framing hammer.

      Now look at the merely important tasks. How many of these tasks have the language or languages chosen in step one in the perfect or good category? Of the remaining tasks, what is the minimum number of languages you can choose from the perfect or good category that cover these tasks? If you are hanging a bunch of pictures, get a hammer, but it doesn't matter whether it is a framing hammer, a tack hammer, or a ball-peen hammer.

      At this point, you are left with a set of tasks that, although they are neccessary, are small and unimportant enough that implementing them with less than perfect tools is acceptable. Looking at the languages chosen in step 1 and step 2, are there any tasks left that can't be done with at least an acceptable tool? If there are, can any of the good or perfect tools for those tasks also provide a good or perfect alternative for any of the more important tasks? You can drive these nails with anything. If you already have a good tool use it, but don't sweat it if you don't.

      At this point you'll have selected a suite of standard tools that should be broad enough to cover all your expected tasks but small enough that you can share skills and expertise across your group. You should never be stuck doing something important with a bad tool.

  99. Prefered versus standard by deioces · · Score: 1

    Instead of having a company standard language, they should consider a company preferred language, that way if you have a choice, you stick with what most of your people know and in those 10% of cases where it just doesn't make sense to use your preferred language, you use what you have to, instead of trying to make that round peg fit where it doesn't.

  100. The Department of Defence Tried This by Grail · · Score: 2, Informative

    The USA's own Department of Defence [sic] tried this. Their attempt at standardisation was called Ada. How many people program in Ada these days? That's right, the fringe minority desperately trying to hold onto their Defence jobs... and the lecturers who taught them.

    "We at ACME Corp are going to standardise on concrete cinder blocks as our building material."

    It's really as simple as that.

  101. This is what Architects or Team Leads are for by feldkamp · · Score: 2, Interesting

    This is what lead engineers, or architects (responsibilities and titles vary by team) are for.

    There should be a chief, and he should listen to the opinions of the entire team. Then, using his expertise, wisdom and the input of the team, he/she should make the decision.

    In fact, a good architect or lead should have a good instinct for this... it will be highly dependent upon the system architecture, team makeup, etc. If the pieces are easily seperable (say, a c# GUI app that communicates to a ruby-on-rails web service), and most developers on the team know both languages, maybe multiple languages work. On the other hand, if only one or two programmers know ruby (or c#), or you're talking about one app that uses both languages, the situation gets murkier.

    I've served as a lead dev / manager for teams in both scenarios. In the past, I developed a large system based on Delphi combined with C++ (several applications), and recently a whole system with C# (again, multiple applications and components). I can say that both are doable, but each was approach was tailored to the requirements of the system.

  102. COBOL by Hyperhaplo · · Score: 0

    Where do you rank COBOL in those groups?
    While you're answering.. can you think of a better language in which the major actions are:
    READ DATA SOURCE
    PERFORM CALCULATIONS
    WRITE DATA SOURCE.

    With data source being.. DB2 (table sizes in the 10M rows+ range), VSAM files (equiv to those DB2 tables) and flat files (text files) of similar size. (Comments comparing VSAM vs Flatfile will be ignored).

    I work with mainframes. We use COBOL. If you know of something better to use.. I'm listening. I'll even pass on the suggestion to Management (I'm not kidding. They are looking for alternatives).

    We have Java for midrange.. but it does not perform (by cost analysis CPU/Environment costs used and incurred) better against the mainframe running COBOL/Delta/etc.

    --
    You have a sick, twisted mind. Please subscribe me to your newsletter.
  103. Err.. har har? by Hyperhaplo · · Score: 0

    I hope that this is a joke...?

    Seriously.. because.. I've heard similar things said in 'focus meetings' here at work. It's terrible when people have no clue what they are saying.

    --
    You have a sick, twisted mind. Please subscribe me to your newsletter.
  104. yes and no. by Anonymous Coward · · Score: 1, Interesting

    several companies I've been at have standardized on a single language for "the customer product" (it's always been C or C++) while for strictly internal tools it has always been a free for all -- Mostly Perl but also Python, Expect, TCL and even bourne shell.

    Using the "standard language" never seemed to be a problem for us.

    Of course my experience is limited to enterprise computing and embedded software (no MS Windows shrink wrap).

  105. Standarisation works but not with Java by wysiwia · · Score: 0, Interesting

    A few years ago we have standardized on Java on the client workstations but it simply doesn't work. Whenever an application is converted to Java helpdesk tickets soar up in the sky. Not because of technical reasons, there are almost never any bugs involve. No mostly because users doesn't seem to be happy with Java applications since they don't feel what the users are used to. Even with trying to implement as much of the users complains as possible. Sure the complains slowly die down but not to the level as for none-Java applications.

    We are now considering to replace Java with AJAX for the simpler DB oriented applications and C++ for the complex applications, hoping to halve the helpdesk tickets count in the long run. It seems C++ together with the wxWidgets framework produces produces enough good applications which users are happy with.

    --
    See http://wyoguide.sf.net/papers/Cross-platform.html
  106. Re:Minimize platform diversity, don't eliminate it by jjohnson · · Score: 1

    Mod parent up: A rare (for ./) dose of common sense, well written.

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
  107. Universal Languages by TheNetAvenger · · Score: 1

    I think most programmers would love for there to be one unified language, if for simplicity if nothing else.

    However there is no such thing, and probably never will be. The nature of diversity in what programming is used for mixed with the diverse nature of how each individual thinks dictates that many programming languages will continue to exist.

    This is a lot like linguistics and the argument of universal languages to replace native languages. In one aspect it sounds good, and sounds simple, but so much would be lost if this was ever pursed. The culture and diversity of language itself is what breeds creativity.

    Creativity in programming is also a strong consideration that companies don't take into account when proposing such ideas. We all think (in process) so differently, that the programming languages we use not only reflect our internal process, but contribute to our creativity.

    If you watch companies that know a bit out people and user productivity they tend to go out of their way to even nurture many programming languages, and even encourage their programmers to use the ones they are comfortable with, and play with the other languages when they are looking for creative solutions.

    A couple of good examples in the corporate world are Borland and Microsoft.

    Borland not only produces many types of languages, but also works to keep them somewhat pure and removed from the other languages. When you are working in Delphi you don't have to think in C++ terms.

    Microsoft also appears to get the diversity of language concept, and goes out of their way to nurture many languages for their own developers as well as provide them in commercial Microsoft Development tools.

    Even the fundamental concept of something as big as .NET is the language abstraction, and the importance to keep this separation. Microsoft also worked to keep the .NET environment 'open commercially' for other companies to create language interfaces for the .NET environment. That is why you can develop in everything from Basic, and Pascal, to Fortran and COBAL in .NET. In a sad way, it is too bad Sun didn't grasp this concept and extend their JAVA sandbox technologies to do the same.

    So if you work in an environment that is considering forcing a common programming language, keep all this in mind when adding your input. Sure one code base would make things simpler, but no language currently exists that does everything or everything well, and then add in the argument that it would severely limit creativity and reduce productivity levels for people that have stronger proficiencies in different languages. Also I would suggest that the company should be more worried about interface structures within the organization, than what programming language it was written in.

  108. Fire the Java developers - Keep the COBOL guys by Hyperhaplo · · Score: 0

    Well.. here we are split between COBOL and Java. Management recently felt the need to fire people (as you do.. you know.. let go of 15% of the workforce to keep 'within budget'). Strangely.. we released more Java programmers than COBOL programmers. Why? We need the COBOL programmers. We can always get more Java programmers very easily.. but replacing the COBOL programmers is harder. What University still offers COBOL courses? A lot of our processing is currently done in COBOL, but we are slowly moving everything we can to Java.

    --
    You have a sick, twisted mind. Please subscribe me to your newsletter.
  109. The distinction between standards and uniformity by jd · · Score: 5, Insightful
    I agree completely with what you're saying. It all comes down to an important distinction between having standards and having uniformity. "Wait!" I hear some cry, "Aren't the two the same?" Well, no. A standard translates, in pseudo-code terms, to "if X then Y". Uniformity translates to "always Y".


    What needs to be standardized, then, is not the language per-se, but the rules by which a language is selected. The IF statements. If you read through the standards documents on the IETF's website, you are not looking at a single, all-encompassing rule. You are looking at possibly a few thousand rules, with enough logic behind them to determine which rule applies.


    In the case of a company picking a programming language, you probably don't need a few thousand rules. A single side of paper should be more than sufficient to cover all the meaningful languages and the cases they apply in.


    Rule 1 might be: "If a more precise rule is not defined, programs should be written to the ANSI dialect of C, revision C-99 with all threading assuming the POSIX threading model and other parallelisms within a single computer assuming OpenMP extensions. Where a more precise rule exists, that rule takes precedence over this default action."


    For embedded code in web pages, the rule might be: "Except where a specific project requirement dictates otherwise, embedded code within web pages should be written in PHP, revision PHP-5.1"


    For transportable bytecode, you might say: "Web-enabled applications, applications needing to run on clients without installation and applications needing to run on otherwise unsupported platforms should be written in Java and compiled to bytecode using a standard Java SDK version 1.5"


    For configuration code, you might say: "Automatic configuration files should be written to the standards specified by Gnu Autoconf and Gnu Automake, using the applicable Gnu M4 macros" (Hey, M4 is a language too!)


    You'd then have a few more cases for specific types of work the company does a lot of. This may include additional rules requiring C, but that's fine. You want the specifics in there, so that if you want/need to change the default action, it doesn't screw everything up.


    If you're defining standards for languages, I'd also define in the same document some standard coding practices (eg: keep namespaces distinct, if you're using javadoc or something similar then comments should follow javadoc's rules, if you're using a code validator that uses comments to embed commands then state what commands should be used and when, if you're using a SCM - a very good idea - then comments to embed details like revision notes, date, etc, should be included in a standard location, etc.)


    The upshot is that there's a lot of different things to consider, nobody can just pick one language for all occasions. Well, they can, but the only language that will ALWAYS work for ALL cases is assembly, and I don't think many people really want to write entire applications in assembler any more.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  110. Customer perspective by merunka · · Score: 1

    You might want to look at it from your customer's perspective - i.e. what does your customer loose and what gains.:

    customer already uses a platform and has technical guys to administer it: choose his/her language if possible. If what you're developing is going to be ran by other people, these people probably cannot administer IIS, BEA, Apache, Tomcat, MSSQL, Oracle, Mysql and whatever else comes in mind. This usually counts for big projects. I bet that majority of slashdotters wouldn't like the delivered product be for IIS+MSSQL+C#, whereas it's still standard for lots of companies outsite.

    code-maintainability: think why your customer hired a company instead of a freelancer - one reason is continuity of development. if you're going to programm something else than one-off application, you need to have people profound in the technology you used (and it does not only include language, but servers, etc...) and keep enough of them. if you don't use their skills by the time there is nothing going on in the project, you loose. if you fire them, customer looses. if you teach them completelly new stuff, it can get expensive (and specialisation usually brings experteese).

    re-use: if you're able to re-use components you already have, your customer can benefit from that as well. and you probably can benefit from that by the time you put your offers.

    support: if you're doing some serious development, you want to stay in touch with the future development of your language. be it java, python, c# or php. having more languages requires you to spend more time in this. which usually means more money.

    what i'm talking about is usually mid-size computer company doing bigger projects for big companies (like banks, telco, etc...). so I believe, that there is usually no way you can avoid standardisation of a platform in bigger companies. even google, with (i believe) really bright programmers choosed a limited set of languages to work with.

    so i'd say: choose a limited set of languages you can support. just one can result in lock-out, too many can proove to be burden if you think about serious more big projects with long live and continuous development.
    usually decisions like this don't result in either 1 (choose one) or 0 (don't choose any). it's a matter of reasonable amount of them, so that you can have enough people profound in them to be able to help your customer all the time.

  111. One IDE to rule them.. by Hyperhaplo · · Score: 0
    2. They advocate standardizing all development tools in one IDE

    We only have one 'standard' IDE - WSAD. There are, at any one given time, three versions (the old, the current, and the new) being used by developers. We have several machine builds that install or rebuild a machine with Rational / WSAD. Why do we only 'support' one IDE?

    Money. Time. Support costs. In our organisation now we have one guy who creates/fixes the deployment scripts for windows machines. He is also the one person who the helpdesk / faults go to. So, yes, there can be a business rule behind only having one IDE.

    Then again.. there is nothing stopping people here form installing a second IDE. Just don't put in a helpdesk request for someone to fix it for you. There's nothing wrong with this approach.. so long as you know why it the decision to only support one IDE was made. In the same vein we only have one source control product (officially) - ClearCase (for now). Less support required when there is only one product involved.

    Never install WebMethods unless you seriously have a reason to use it, know what you are doing, have it installed by someone who knows how to correctly configure it with your current architecture and you have a gold level support contract. Failing all of the above.. try hiding your head under your desk and hope that the problems will just go away. Works here 9 times out of 10.

    --
    You have a sick, twisted mind. Please subscribe me to your newsletter.
    1. Re:One IDE to rule them.. by Anonymous Coward · · Score: 0
      Choice of IDE shouldn't be dictated by IT or support concerns. If you developers aren't smart enough (or aren't trusted enough) to administer their own workstations and install their own tools then, well, I suppose your company is playing in an entirely different league than the one I'm familiar with.

      But from an IT perspective, I won't argue with you one bit, other than to claim that you shouldn't even be asked to support a single IDE at all. That should be your developers' responsibility.

    2. Re:One IDE to rule them.. by Hyperhaplo · · Score: 0
      Choice of IDE shouldn't be dictated by IT or support concerns.

      Yes. Well. Unfortunately this is Government. We are pretty much dictated to by the IT Finance Group as to what we can and can't spend money on. Don't bother asking WHY we are using webMethods.

      You are correct! We given developers admin access. They can use what they like. However.. we have teams of people working on projects. We have one type of code repository (currently ClearCase). IT support literally doesn't exist for anything else. We don't have time to be experts in the IDE/Other tools we use... we need to get the code out.

      'Support an IDE' around here goes like this: "We install it. You set it up. If it's completely broken we'll wipe it and install it again (or tell you where the installer is". :-)

      --
      You have a sick, twisted mind. Please subscribe me to your newsletter.
  112. One man band by JohnnyLocust · · Score: 1

    I'm an independent software developer (translation: marketing, life cycle, engineering, development), and I can honestly say I seldom create an application in one language. To tie yourself to one language, it's pros and cons, is nothing short of shooting yourself in the foot.

  113. Depends... by severoon · · Score: 1

    If all of the company's products solve problems that can be addressed reasonably with a single language, then it would be a good move to consolidate. At my current company, we have legacy code in C++, VB, and all of our current projects are in Java. Guess which code is the cruftiest? Guess which codebases no one wants to work with?

    The company simply can't afford to keep a staff dedicated to each different language's codebase, and no Java developer I know would deign to work in C++ or VB even if they have extensive experience. I know assembly, but I'd start looking for a job if my boss told me I needed to split my time between Java and assembler.

    On the other hand, if the company makes a diverse set of products that simply cannot reasonably be approached with a single language and platform, then it would be a mistake to try. Engineering should be split into separate divisions if the problems are that different and separate staffs should be maintained for each.

    --
    but have you considered the following argument: shut up.
    1. Re:Depends... by eric76 · · Score: 1
      I know assembly, but I'd start looking for a job if my boss told me I needed to split my time between Java and assembler.

      I'm just the opposite.

      I'd rather write in assembler than anything else. Unfortunately, that is a luxury I don't have.

    2. Re:Depends... by farrellj · · Score: 1

      If your company only does one, narrow thing, then yes, you can get by with just one language.

      ttyl
                Farrell

      --
      CAN-CON 2019 - Ottawa's only book oriented Science Fiction Convention! October 18-20, Sheraton Hotel, Ottawa, Canada h
    3. Re:Depends... by somersault · · Score: 1

      When you say 'know assembly', and I myself admit I dont know any real assembly, just the concepts, do you just mean that you did a course using it at university, or that you used it in depth for a year on say optimising graphics code for a video game? And is it only assembly for a microcontroller or x86 or what? I'm not sure how enjoyable that would be, but I think you'd have to use it properly before you could say that you wouldnt want to spend time on it

      I just find Java really boring to use *shrug* I'd rather use Delphi or C++ for some reason. Definitely not Visual Basic either, it seems based on the same kiddy mentality as Java, like you have to make the code look moronic for people to be able to understand it. Hmm.

      I'm just interested as to what the big deal with Java is. When I first heard of it, the cross platform ability sounded amazing. And it looks similar to C. But it's not. At least in my experience it has been slower and just no 'fun' to code with, not sure how to quantify that feeling exactly.

      --
      which is totally what she said
    4. Re:Depends... by Bloke+down+the+pub · · Score: 2

      So what language should a company that sells paper use?

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    5. Re:Depends... by O.W.M · · Score: 3, Funny

      English.

    6. Re:Depends... by ultranova · · Score: 1

      I know assembly, but I'd start looking for a job if my boss told me I needed to split my time between Java and assembler.

      Why ? Don't people always say that they want variety in their job ?

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    7. Re:Depends... by databyss · · Score: 1

      They want variety until the point their boss says they have to vary.

      --
      Hmmm witty sig or funny sig? Maybe elitest techy sig!
    8. Re:Depends... by Glock27 · · Score: 1
      I just find Java really boring to use *shrug* I'd rather use Delphi or C++ for some reason. Definitely not Visual Basic either, it seems based on the same kiddy mentality as Java, like you have to make the code look moronic for people to be able to understand it. Hmm.

      I'm just interested as to what the big deal with Java is. When I first heard of it, the cross platform ability sounded amazing. And it looks similar to C. But it's not. At least in my experience it has been slower and just no 'fun' to code with, not sure how to quantify that feeling exactly.

      I'm curious why you'd rather code in C++ than Java? For me, moving to Java from C++ was a real relief. No more worrying about low-level memory management issues for the most part, I could focus on the problem domain. For me, coding in Java is very straightforward, and MUCH more productive than coding in C++.

      I've found the performance issues to be minimal, and in some cases I've gotten C-like performance using gcj.

      All that said, you may want to check out D. It's another C-based OO language, but it is high performance and probably what C++ should really have been.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    9. Re:Depends... by Xiaran · · Score: 1

      Why ? Don't people always say that they want variety in their job ?

      Yeah. I dont really get the comment either. I used to have have a great gig where I split my time between asm/C/C++/java. The reason : I was the only programmer and we had a product that 1. Had a user interface written in java/j2ee 2. Talk to embedded devices for monitoring that had been developed in house(the hardware guy helped a bit with the asm I admit) 3. Require JNI interfaces written in C for device itnerface and 4. required a realtime componented that was running in a real time O/S(QNX version 4 if you want to know) and had the controlling software written in C++. It was great fun ! :)

    10. Re:Depends... by somersault · · Score: 1

      Thanks. I used to code bots for Counter-Strike in C++, it's about the only 'major' thing I've done with a C based language, applications work I've done has been in Delphi, and my exposure to Java was at University and I felt the the whole garbage collector nannying the programmer and slowing things down was a poor excuse to ignore memory management issues. I'll give the D thing a look out, thanks :) Unfortunately I'll probably keep using Delphi for making apps at short notice, as you can whack them out pretty quick with that, but I've not had any experience of coding GUIs in anything but delphi (and at Uni Visual Basic/Java - yuck..)

      --
      which is totally what she said
    11. Re:Depends... by liam193 · · Score: 1
      On the other hand, if the company makes a diverse set of products that simply cannot reasonably be approached with a single language and platform, then it would be a mistake to try. Engineering should be split into separate divisions if the problems are that different and separate staffs should be maintained for each.


      I have to disagree with this comment. While there is some merit in a division of teams and detailed skill sets, it has been my experience that teams which dive deeply into one subject area while avoiding all others are very near useless when it comes to resolving issues. I have done quite a bit of coding, but my primary area of expertise is Communications. In the groups I've worked with, the most benefitial resources are the ones who know a little coding, a little security, a little systems administration, a little communications, and then have a specialty or two.

      For example, a Sysadmin who only ever did Sysadmin work generally has no knowledge of how to write a script that will update all accounts, how to configure the network interfaces with the proper subnet masks or convert the mask if it's given in cidr notataion, how to disable the proper services, etc. As a result, that Sysadmin has very little value to the team.

      My experiences with programming languages are the same. If you say you only ever want to use one language, you have removed your value even as a programmer in that language. There simply are times when a PHP programmer looks at a problem and can say, "usually I would do something this way in PHP, but Java would do it this way and give me a better result. I can either do it java or do it an alternative way that is more Java-like in PHP". That is where the knowledge and understanding of the second, third, fourth, etc. language makes the programmer valuable.
    12. Re:Depends... by bladesjester · · Score: 1

      Not having to futz with memory is one of the reasons that I like java as well. I hear all of the people that I went to college with who have never touched java say how horrible and slow it is and how c or c++ are the only ways to go.

      I just shake my head...

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    13. Re:Depends... by jgrahn · · Score: 1
      For me, moving to Java from C++ was a real relief. No more worrying about low-level memory management issues for the most part, I could focus on the problem domain.

      Don't want to add too much to the Java--C++ flamewar, but I have never felt I had to "worry about low-level memory management" in C++. And I write a lot of it.

      I think we had a memory leak at one point last summer, in the crazy, inherited part of the code base ...

    14. Re:Depends... by cduffy · · Score: 1
      I have to disagree with this comment. While there is some merit in a division of teams and detailed skill sets, it has been my experience that teams which dive deeply into one subject area while avoiding all others are very near useless when it comes to resolving issues. I have done quite a bit of coding, but my primary area of expertise is Communications. In the groups I've worked with, the most benefitial resources are the ones who know a little coding, a little security, a little systems administration, a little communications, and then have a specialty or two.

      I'm not arguing with you by any means, but that's not to say that it's necessarily feasible to have a team primarily consisting of generalists. Having a large team made up mostly of specialists with a few generalists thrown in the mix, and smaller teams with ancillary purposes being made up primarily of generalists, tends to work for my present employer: Specialists are much easier to find and recruit. The generalists can request advice from a specialist when need be; the specialists are heavily involved in overall design and sit in on reviews of component designs generated internally to the specialists' team; and things mostly tend to work out.

      As an aside: I'm not really sure how someone could be focused on sysadmin work and not be able to handily do any of the tasks you mention. From our perspective, a remotely competant sysadmin can handle any of those tasks; a good one can also build a SCSI driver for the tape jukebox we just bought, rewrite the DSDT table on one of our servers where the PCI bus isn't being initialized correctly, rig up an Asterisk box, build tools to autoconfigure IP phones from $SUPPLIER_OF_THE_WEEK, repair a broken Oracle instance while the DBA's out of reach, modify OSS tools or come up with some scripts to populate the new CRM system's database based on our LDAP directory. All of these are things we've done in-house. That said, we have a lot of trouble finding good sysadmins.

    15. Re:Depends... by cduffy · · Score: 1

      C++ and C are two completely, totally different languages. Don't let your experiences with C++ color your opinion of C -- C is outstanding, in its place. (That said, it certainly has its place, and that place certainly isn't everywhere).

    16. Re:Depends... by somersault · · Score: 1

      I did learn C first, and still for some reason think of classes as some awesome new addition to the world of programming. Sad, huh?

      --
      which is totally what she said
    17. Re:Depends... by cduffy · · Score: 1

      Object orientation is a Good Thing. C++'s implementation is hideous. It's not that classes are bad -- it's that C++ is. (Also, just to point it out: C++ is far from the first object oriented language to exist. Indeed, C++ wasn't even the first object-oriented extension of C, and the other one -- Objective C -- is generally considered far superior among those few who know both).

      (Not convinced? Try porting C++ code which uses all the fancy language features between compilers. The language spec is complex enough to have enough hidden corner cases [particularly in the interactions between features] that no two implementations will ever behave quite the same; this was particularly apparent for those of us who were around during or prior to the egcs phase. Contrast to languages like Scheme (which is powerful while being so simple that the language has no hidden corner cases -- "obviously unflawed" vs "no obvious flaws", despite being useless for practical work on account of lacking a complete runtime library available across implementations) or Python (not as simple as Scheme, but still several independent implementations which -- for the language versions they implement -- tend not to have the gotchas)).

  114. don't by otomo_1001 · · Score: 1

    As a sysadmin/mini-programmer I say don't standardize.

    Far too often I have seen things like grep in a perl script, shell calls in c programs (I mean to shell scripts that do the work) and all sorts of nastiness that just makes things more complicated than it needs to be.

    Some days I wish I could just use Ruby for some stuff. Dumb things like adding lines of a file to file names or other such stuff is a breeze.

    That and threading (yes I know it isn't true threading yet, 2.0 will fix that).

  115. standardise writing implements too by fattybob · · Score: 1

    I wonder how far a standardisation drive would go if it was pushing everyone to use the company provided ballpen/pencil - and not one of those ubiquitous monte blanc pens that ride suit & shirt pockets - perosnally I wouldn't mind the sight so much, but they are all usually just a.n.other ballpen - me - i am a snobby fountain (ink) pen user - oh yes - and 0.7mm pencil - but lets not start a debate on pencil lead...

    1. Re:standardise writing implements too by Hognoxious · · Score: 1

      A fancy ballpen is like a gold plated Lada in my opinion. For proper writing (not that I do much other than cards these days) I use a Rotring Art Pen.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  116. This is Why We Have the Mess We Do! by SerpentMage · · Score: 2, Insightful

    "I am a computer programmer. I make computing devices do what I want. I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions."

    This is why we have we mess that we have now! If you were an engineer and machinist you would be screaming bloody murder! About 20 years ago the car industry had the problem where they had 20,000 parts that were unique to a car. When a new model was introduced there were 20,000 more parts unique to the car! All of these unique parts were wrecking havoc on car design, and maintenance.

    If any of you remember the K-Car from Chrysler it was the first attempt in the car industry to share parts (Oh the horror! ;) ). It worked and brought Chrysler back from the brink. From that point the car industry understood standardization needs to happen. Now we even see standardization of major parts across car manufacturers. And yes standardizing on one screwdriver is part of it!

    --

    "You can't make a race horse of a pig"
    "No," said Samuel, "but you can make very fast pig"
    1. Re:This is Why We Have the Mess We Do! by Chandon+Seldon · · Score: 1
      Selecting a standard screwdriver doesn't mean that you no longer use wrenches or the occasional volt meter.

      It's true that you probably shouldn't use Python and Ruby or C# and Java in the same app without an excellent reason, but it seems perfectly reasonable to use x86 assembly, Power assembly, C, C++, Python, and OpenGL all in the same video game.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
  117. We did it.. by Anonymous Coward · · Score: 0

    We standardised on java. Great, now we have a room full of developers who can't maintain our legacy apps (C etc), they can't rapidly devlop something in a more simple language (perl, php). Now every machine needs a JVM installed.

    Horses for courses my friends. Would you expect a system admin group to standardise on a scripting language, no, they'll use awk/sed/bash/perl/etc when needed and be more effective because they will be using the right tool for the right job.

    Bloody small minded java monkeys.. You can hammer a nail in with a wrench if you want, but I'm not hiring you to build my new kitchen.

  118. Programming languages are tools by Brett+Johnson · · Score: 1

    Would you trust a carpenter that opened his tool chest and it contained only a #2 Phillips screwdriver?
    An auto mechanic that used only Channel-Locks?
    A hair-stylist that used only a Flo-Be?

    I have been writing software for 25 years. A good professional programmer knows when to use the appropriate tool for a specific task. Only an idiot would tell him he couldn't.

    Of course, every time I used awk to transform some text, I probably could have built an equally functional solution using C or Java. It would just be 10-100 times more code - with the corresponding increase in bugs and time spent creating it.

  119. Straw man by upside · · Score: 1

    You're setting up a straw man. Here's the opposite: If everyone gets to use their favourite language, you'll end up with lots of code that no-one else except the author can reuse or debug.

    This isn't even that far fetched. I've seen a case where one guy insisted on using language X for his tasks, a language which nobody else in the department was familiar with. Then he left. If his boss had insisted that everyone use a less elegant but widely familiar language, lots of headache and time (==money) would have been spared.

    As usual, the right approach is somewhere between the extremes.

    --
    I'm sorry if I haven't offended anyone
    1. Re:Straw man by cheesedog · · Score: 1
      If everyone gets to use their favourite language, you'll end up with lots of code that no-one else except the author can reuse or debug.
      I wasn't advocating that every individual member of a team choose their own language. Teams necessarily have to come to some consensus about the tools they will use to collaborate.

      But that's a far cry from a top-down mandate that every programmer in the company use language X for every conceivable project, or that every programmer use IDE Y -- it's just not efficient or practical, and any gains achieved by such standardization are far outweighed by the attrition of excellent people that will flow towards freer workplace environments.

  120. Standardize on a set of languages by ArsenneLupin · · Score: 1
    Languages come in categories: web/scripting (Perl, Python, Ruby, Visual Basic, ...), application server object oriented (Java, C#, Smalltalk...), low-level (C, C++).

    Usually, it's hard to substitute a language of one category with a language of another (if some of your code runs on an embedded platform, or in kernel, you can't do those parts in Perl...). Likewise, it usually wouldn't make much sense to program your sysadmin scripts in C.

    So you pick one language of each category, and make these your set of standard languages.

  121. We *have* standardized by Schraegstrichpunkt · · Score: 1
    The computer industry has already standardized on one language: and that language is C. Naturally, "pure C" isn't very efficient for some tasks so people come up with other languages. And what language are the compilers (and interpreters) for the new languages implemented in? You guessed it: C.

    Beyond that, if you push to "standardize" languages across a company, be prepared to write code in your least-favourite language. Personally, I'd recommend that your company give you a choice between FORTRAN, COBOL, LISP, dc, and PHP.

  122. Right tool for the right job, and learn from Java. by Darth+Liberus · · Score: 2, Interesting

    I settled about a year ago on two things: 1. Use the right tool for the right job. Web applications, which perform most of the processing on a remote server, are very different than GUI apps that run on a user's desktop. It's stupid to think that one language is going to provide everything you need in every case. GUI apps need strong typing to run quickly and keep the end users happy - Web apps need rapid design to keep the VPs happy. End users love GUI apps and hate crashes; VPs love Web apps and don't care if if an app crashed from time to time as long as it mostly works and gets done NOW. Pick whatever language is appropriate for the task. 2. Learn from Java. Java has its warts, but from a structural standpoint it's probably the most solid language I've ever worked with. These days I mostly work with apps that target mod_perl, but my code - and the code of anyone who works with me - is required to adhere strictly to Java's naming convention, must follow a pure OO paradigm, and do its best to act like a JavaBean, with "getters" and "setters" properly implemented and static and normal methods documented as such. By doing this, I've managed to make Java programmers actually like working with Perl... something long thought to be impossible :)

    --
    Beauty is just a light switch away.
  123. Python has multimethods??? by Anonymous Coward · · Score: 0

    Wha?

  124. I see your problem! by Gorimek · · Score: 2, Insightful

    A company where that can happen has a much bigger problem than languages. Such as a complete lack of teamwork and communication between it's developers!

    Standardizing on a language will help a bit with the symptoms of that, I suppose, but unless you address the actual issue, I don't foresee great things for that kind of organization.

    Not to get religious, but avoiding problems like this is one of the big "hidden" advantages of pair programming.

    1. Re:I see your problem! by Anonymous Coward · · Score: 0

      You should never standardise on ONE whatever and force that to be used in all situations without further thought.
      That's the golden bullet approach and it just doesn't work unless you're extremely limited in the scope of your work (in which case you should start to worry about the future of your company and seriously think about branching out).

      What you should do is set guidelines and procedures for determining the best tool for each job.
      If you have expertise in house for C++ on Windows and it is a decent option for creating this application it makes little sense to start the next project writing Fortran on Solaris unless your customer specified that (in which case you might have thought twice about taking on the contract).
      If however you have a web application to build next it's almost certainly a Bad Idea to implement that in C++ on Windows. Java is a far better choice as it is far more suitable for web applications and using it means your customers can use basically whatever hardware platform and OS they want.
      But if you'd set in stone that everything has to be done in C++ on Windows you've now shot yourself in the foot and condemned yourself to using a non-optimal solution to the problem at hand, like using a flatheaded screwdriver to remove Phillips head screws. Sure it works but it takes a lot longer and leaves the screws damaged in the process.

      I'm not saying that every programmer on a project should just go ahead and use whatever he feels like, that way too lies disaster.
      But on a project by project basis there can and should be a process to select the best possible language (and other tools) for the job at hand, and that may well be several languages and tools.

      For example you might have a backend application to create which runs on a mainframe, and has an RPC layer to talk to the outside world and a web interface to its query engine.
      That application likely calls for at least 3 languages.
      Cobol or PL/1 for the backend, C for the RPC layer, and Java for the web application.
      That web application will likely also have Javascript and maybe XSLT.
      The RPC layer may well implement SOAP which would mean IDL and probably XSLT as well.
      Add a reporting system as a future option which would use XSL:FO more likely than not, with Python (for example) as a scripting language, and you're almost there.
      Sure you could write all that in C or Java, but it would be less than optimal to write and maintain to say the least.

    2. Re:I see your problem! by Nybler · · Score: 2, Interesting

      You betcha. That's the situation at the company I'm working for, and we're attempting to rectify it. The problem is right now we have just about every language that's ever been used: COBOL, Fortran, C/C++, Delphi, PowerBuilder, VB, Java, VB/C#, Perl & Python. And those are the only ones I know about!

      As a result we also want to standardize on a language - or at least a set of languages. The purist in me says you should use the right language for the right job. The practicalist in me says you should use a language that's easy to find developers with talent in that language and can handle any business application coming our way.

      The fact we have a plethora of languages is indicative of a lack of management oversight. Developers can pretty much do whatever they want - as long as they meet their deadlines and functionality requirements. Some managers manage the technology more than others - but there's no overall consensus throughout the organization.

      Our challenge now is we have a newly-formed group managing the development tools and languages and the developers are resistant to any changes in the status quo. Especially looming large is a potential showdown between Java and C#.

      I don't mean to flame, but with all these religious wars going on in IT it's become apparent to me why so many companies have turned to outsourcing. How are other companies managing their technology without engaging in holy wars?

    3. Re:I see your problem! by Wdomburg · · Score: 1

      I'm lucky enough not to suffer from that sort of thing, but I've known all too many people who have. It can definitely be symptomatic of poor communication and coordination, but discrete communication between individual developers (or groups of developers) really isn't necessary in a lot of environments. Adopting a base set of tools and code standards can eliminate a lot of ultimately trivial quibbling.

  125. Re:Learn From My Mistakes by aminorex · · Score: 1

    I like unlambda better, because it is intractable in a conceptually pure way, rather than by virtue of heaps of stinking crap. Although the whitespace language does have it's appeal, I must say.

    Regardless, I take exception to the notion that you can't write a webserver in bf (or unlambda or whitespace). You can indeed write one. It's the *operating system* which is failing to perform the IO, not the webserver. Fix the operating system to recognize when your application is requesting to do IO and the problem is solved.

    --
    -I like my women like I like my tea: green-
  126. Language Per Project by Anonymous Coward · · Score: 1, Insightful

    It's shouldn't be an issue of best language for the company, it's an issue of best tool for the job. I saw the reference regarding standardizing on a screwdriver in a manufacturing plant. Strangly enough that does makes sense alot of the times (I used to run a plant and standardizing on a screwdriver meant we could buy 500 high quality screw drivers each at the cost of a cheaper model). But on the other hand, on one production line where we handled through-hole soldering work on a primarily surface mount board, we used high quality Diamond-Excelite diagonal cutters that reduced the number of blisters and calluses on the workers hands. In the primarily through hole manufacturing environment, we standardized on using air tools for clipping, Diamond Excelite make a fabulous air compressor powered set of clippers that can cut 6 leads simultaniously in one click of a button. In this environment, it made more sense for that tool. Also, I'd like to make clear that in cases where we needed a hammer, we used a hammer, not the other end of a heavy screwdriver.

    That all being said, working as an engineer in a leading commercial software company, we standardize on a language per project/environment. The software we develop is 95% C++ and 2% Java and 3% scripts (makefile generators etc..). In the IT/IS departments, we use Perl for the automated build systems and we use PHP for web systems. In places where we know there's no hope for a standardized scripting language across platforms, we often write simple C programs mixed with bourne shell and windows scripting host.

    For managers, this environment is often a disaster. It requires that we have a minimum of 3 developers for each language used. Of course there's often an overlap in skills, and typically, an educated developer can work in any language, but it still means that we have to make sure the talent is always available.

    The rule to remember is that if you have 1000 screws and 1000 nails, and the job requires 2000 fastening components, it often is better to standardize on one or the other and purchase the extra 1000 fasteners while the first 1000 are being used. But it does not make sense to use 2000 nails if 2000 screws does the job cleaner and more efficiently.

    This is a problem I have seen in many companies over the 14 years of my professional development career. If you are however an IT department developing a single set of systems of a single set of users, then standization may not be the wrong choice. If your company has the budget to hire a Ph.D. that can work purely in a research environment to develop alterative solutions to problems, it may make sense to hire one. It often makes sense that a proper researcher is on staff to make sure that the company is never stuck in a single solution environment. I personally like the .NET solution over Java (and in fact, I don't like either solution, but choosing the lesser of two evils) because Java is theoretically standardized on a single language for a single platform (the JVM) where .NET is instead a solution that standardizes on no language but could realistically be targetted to different platforms if someone were interested. It would be excellent to one day see a C# and Visual Basic compiler targetting the JVM for instance.

    Good luck, but I suggest you just go with it, if management has come to such a solution, it's is more likely that managing multi-language systems is too much for the organization.

  127. Data formats come first! by mcrbids · · Score: 1

    It's all fine and dandy to have standardization on coding language and conventions - these make it easier to read work done by somebody else, and lower the cost of maintenance. (which is, arguably, GREATER than the cost of development)

    But, no matter what, I don't care what your philosophy, it's very, very important to standardize your DATA FORMATS. The state of Massachusetts is coming to this realization - that they need to be in some control of the format that their data gets stored in - and over the next 20 years, expect to see this become ever more of an issue.

    You can write a perl script that interoperates with a java jar or a PHP weblication if you have a common, agreed-upon format for storing the data. If your data store is a particular database, such as PostgreSQL, this isn't much of an issue. But, if you feel OK giving developers their choice of languages, make sure that whatever format you save your apps in, you can READ IT using other technologies!

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
  128. Muliple languages is the way to go by bartmc · · Score: 2, Interesting

    My boss is confident enough in his staff and himself to be able to pickup and maintain whatever the developers decide to do their job in. Currently I have written C#,Java(JSP/Servlets,J2ME/MIDP, server applications, Blackberry J2ME stuff, Applications), C/C++, Tons of Shell scripts, XML, LaTex, HTML, XML running on Solaris,Windows,FreeBSD,various flavors of Linux. All of which ultimatley connect to either an Informix or Postgresql database of which the host apps are running on an old legacy SCO UNIX system. Whatever does the job best is our motto. Id hate for my boss to walk in and say convert everything to . It would be hell.

  129. Please adopt these standards ASAP! by Schraegstrichpunkt · · Score: 1

    Assume that highly-skilled programmers work efficiently without a need for rules like these, but morons do not.

    If you find that you *need* a "language standardization" policy, then you're already at a disadvantage, because talented people often tend to avoid working in places where there is a large number of people whom they perceive to be morons. As a result, skilled people are less likely work at your company than they would be otherwise.

    Now, if you create policy that explicitly *hinders* skilled programmers, well...

    I'm sure many of us would *love* to scoop up the talented people that might otherwise choose to work at your company!

  130. Oh yeah ... one language by maxm · · Score: 1

    You only need to choose if it should be xml, html, javascript or java... That any project can be solved with just one language is an illusion! But it might be a good idea to select a single language in the main language categories, to make it possible to maintain the code.

    --
    Max M - IT's Mad Science
  131. Waste of time by marcovje · · Score: 1


    Had to go through that once. Delphi -> Java.

    Only causes a lot of retraining and angered employees, and the typical Delphi shops (departmanets) after a while quickly abandonned Java again, at the first point where the Java solution was ore troublesome than Delphi (read components availability, performance, lowlevel interfacing)

    Maybe except for projects with a more company wide scope.

  132. think of it as prison release by idlake · · Score: 1

    I love debugging a C++ callstack that goes in and out of an interpreter a few times. It's bad enough having ten programmers with different approaches to programming without mixing langauges.

    Well, you can think of anything that goes into the interpreter as something that takes you out of the prison of C or C++. I mean, for the brief, glorious times that you actually are in the interpreter, you are free of pointer bugs, arrays without bounds, and other problems.

    1. Re:think of it as prison release by bit01 · · Score: 1

      ... and often in the middle of code that you don't have a symbol table for, let alone the source.

      ---

      Open source software is everything that closed source software is. Plus the source is available.

    2. Re:think of it as prison release by cduffy · · Score: 1
      ... and often in the middle of code that you don't have a symbol table for, let alone the source.

      Who the hell would use a non-source-available interpreted language for a commercial project, when there are so many good source-available ones?

      I've seen quite a few commercial games embedding Python lately; I vaguely recall one a while back that embedded a Scheme; there are other Free (and non-copylefted) interpreterers that target Java bytecode for easy integration in Java-based projects... why would anyone ever use anything else?

    3. Re:think of it as prison release by bit01 · · Score: 1

      Agreed.

      I was thinking of the closed source Java runtime, .net and a host of other commercial interpreted languages. I've debugged interrupt handling in such interpreted environments (with additional, third-party, compiled, shared libraries e.g. DLL's with M$VisualBasic) and it can get messy.

      ---

      Open source software is everything that closed source software is. Plus the source is available.

  133. quick summary: by smash · · Score: 1
    No.

    smash.

    --
    I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
  134. Apps and OS too? by Anonymous Coward · · Score: 0

    So are those hardcore standards people going to want Java operating systems, and Java office suites? I mean, if they want everything in Java, then I guess C written OSes, or C++ written apps are out too, eh? Oh, and no shell startup/maintenance scripts. Excel/word macros, banned! Legacy Cobol stuff? rewrite!

    IT is too diverse to be this anal about standards. Have a recommended/encouraged standard, but allow exceptions.

  135. Interesting by Exter-C · · Score: 1

    From my experience many programming languages have different pros and cons, choosing the best language for each task is generally the best idea. However standardisation can save money but in time it may cost more as you may have to write more code to do simple tasks rather than use built in modules etc in other languages.

  136. No "one size fits all" by darkdante · · Score: 1

    Every company and situation is different, there is no "one size fits all".

    - Will standardizing on 1 language save your company time and money? Yes, probably, as long as the majority of your employees already are trained in the language.

    - Will standardizing on 1 language safegaurd you from future pressures and shortcomings of that one language. No, of course not.

    The bottom line I guess is what is best for your company and situation. If that 1 language can do what you need, and all you'll ever need and the majority of your employees know it anyway, then why not.

  137. Libraries - not languages by StressedEd · · Score: 5, Insightful
    Having read many of the posts here I think people are missing the importance of libraries.

    I would hazard a guess that most people want to get a problem solved in the most painless manner possible when programming.

    Surely the best way to achive this is by avoiding the reinvention of the wheel.

    In some manner I tend to view languages now as nothing more than the glue that binds library calls together!

    My approach is:

    1. Work out what you want to do.
    2. Find libraries that implement the most difficult parts of the problem.
    3. See what language bindings exist.
    4. Choose the language appropriate to this.

    For example, there is a wealth of scientific code out there in F77. Just because F77 is old doesn't mean that the libraries are now wrong. They still do what they did back then. They are still useful. People have spent a great deal of time working out the error propagation in these codes, the efficiency and their validity. Do you really think you will save yourself time and do a better job by rewriting it in Java? No! So. Use them.

    Then there are (great) libraries such as ATLAS or FFTW [*] written in C. Why assume you can do better? You can't, use that too.

    In the rare case where you need to have something written from scratch, write it in whatever you are comfortable with. In my case C++/Boost (yes another library).

    Finally you need to tie all this together, and hack around with it, and analyse the results so what's wrong with a bit of Python and MATLAB?

    Perhaps this is an extreme example, and doesn't fall into the buisiness relm but the point is "the path of least resistance". Sometimes that path is dictated by existing code.

    Do you really expect someone to rewrite from scratch an XML parser in "DoomJuice", or whatever is fashionable in house, just to please the people that want to standerdise on "DoomJuice"? No, use an existing library!

    Ok, I've made my point. I will stop now.

    [*] Yes I know FFTW technically uses Objective CAML to generate C code, but that's really only a distinction that a nerd would make.

    --
    Be nice to people on the way up. You will meet them again on your way down!
    1. Re:Libraries - not languages by clard11 · · Score: 1

      I agree with these comments re:libraries. A great language is nothing without class libraries that reflect the reality of the work you want to do; the problems you need to fix.

      I'd like to add that I one approach is simply to avoid languages where no ecosystem exists around the language. A really balanced language choice will have an ecosystem that delivers across the board from IDEs, build tooling, great runtimes and choice of runtimes and good RAS / PD tooling for when things do wrong. That's one of the reasons Java is in widespread use - it can tick all of these boxes and is balanced between these develop - deploy - debug areas.

      --
      catch (ModDownException mde) {post.modUp("Interesting")}
    2. Re:Libraries - not languages by Anonymous Coward · · Score: 0

      Yes I know FFTW technically uses Objective CAML to generate C code, but that's really only a distinction that a nerd would make. This is Slashdot, you know?

  138. That doesn't add up (OT) by BeardsmoreA · · Score: 1
    Either there was a typo in there or you're vastly exaggerating to make it sound like you had more basis for your decision than you did

    Lets see:

    About 2 years ago, - lets say 2004
    followed by 8 years of Smalltalk - 96?
    I chose erlang after 8 years of Java programming

    By my reckoning you were writing Java in at least 88? Wow, you were way ahead of the curve on that one. But then maybe I should be less pedantic / suspicious, and assume you meant Smalltalk then Java.

    1. Re:That doesn't add up (OT) by root-a-begger · · Score: 1

      I see your point. The sentence structure could have been much better: ..8 years of Java programming which was followed by 8 years of Smalltalk.

      The intended way to read it is that the Java years followed the Smalltalk years. I started programming Smalltalk in '87.
      You do certainly have a suspicous mind ;-) But in today's troubled world I can understand.
      enjoy,
      root-a-begger (yes, I know begger is spelled wrong...this is intentional)

  139. How we did it. by Anonymous Coward · · Score: 1

    We standardised on C# for production code and monad (already!) for scripting. They're easy to deploy, easy to get staff for and easy to use (compared to some laguages).

    We do not have any problems that way with small chunks of unmaintainable junk sitting on strange boxes all over the company.

    We do not have any learning curves.

    We do not have any unexpected trouble if someone leaves.

    We can automate *everything* (for example it takes us about 25 seconds to deploy our entire software platform (which is massive - think 90Mb of source) if it passes QA.

    We do however spend all day bitching on what design pattern is best, which is a far more appropriate use of time.

    1. Re:How we did it. by Anonymous Coward · · Score: 0

      and monad (already!) for scripting.

      That is the most hillarious statement i have read for a long time :D :D

  140. Yeah by NerdENerd · · Score: 1

    I worked for a bank in Australia that standardised on J2EE. The strategy and architecture guys said it would be great for reusing components across projects. 5 years later I was still developing and supporting ASP applications.

  141. Programming is a great job! by phiwum · · Score: 1

    "A single language makes each developer easily replacable."

    -- Dream on! At Wells Fargo, they have a bunch of hackers that have no concept of design.


    Ah, computer programming: One of those rare jobs where incompetence means job security.

    If you can write really unreadable code, then your bosses won't have the nerve to fire you!

    But if you write sensible, understandable and well-documented code, well, then your replacement can easily pick up where you leave off.

    --
    Phiwum's law: anyone that names an obvious law after himself and then puts it in his own sig is just pathetic.
  142. Re:The distinction between standards and uniformit by Solra+Bizna · · Score: 1

    Have fun teaching your managers pseudocode.

    -:sigma.SB

    --
    WARN
    THERE IS ANOTHER SYSTEM
  143. Using one language for all by Z00L00K · · Score: 2, Insightful
    is one of the more stupid ideas. You will never be able to achieve all features you use in one single language. If you are doing development in Java you may get away most of the time, but there may be things that can't be done unless you do a different language. (of course the portability suffers, but it is a trade-off between function and availability.)

    Every generation has had it's favourite language, and the big ones has been Cobol, Basic and C in history. Currently the languages Java and C# is rising, and offers flexibility that can be used and abused but in the end are far much more flexible than the early languages. Ada can be defined as a father of Java and C#, and certainly has it's place.

    What you actually should focus more on is not a specific language, but how to model solutions and do efficient coding models. It doesn't matter what language you use if you aren't able to do a good system design. And system design is not something only for senior system analysts to do - even junior programmers should be involved. Start with a large meeting whith a HUGE whiteboard and a lot of pens in different colors - try ideas - even ideas that may seem stupid and explain WHY it's stupid. Break down into task groups and let each group do it's own analysis. This should be repeated through various phases in the project to be able to stay on track. A system isn't better as it's overall design - even if it incorporates solutions that are outright brilliant.

    Building a system is like building a house - you use different material for different parts. The foundation the house resides on is the operating system. Utilities like electricity, gas, water and sewer are all connected at foundation level, which can be seen as C code (and optionally assembly code) and are normally part of the language you use unless you have special features. The basement is done with the basic language classes of Ada, Java or C#. As is the framework of the rest of the house. The walls are then done by extended classes of your language of choice and then all trimming, wallpapers etc. are your completely custom-built classes. There is need for different class groups in different rooms - like a kitchen and a bedroom does have different properties - so only a few properties are common, and you may even be able to accept that they don't even share these properties in an abstract base class since that may require too much interoperating time between different task forces. It all comes down to how big your project is. The re-inventing of the wheel can't be avoided every time, and if the wheel costs five minutes to invent - is it worth the time to check if it is already invented?

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  144. word to that by Anonymous Coward · · Score: 0

    i was gonna post something about one-size-fits-all and reinventing the wheel and doing what meets the business requirements, but you have it all here.

  145. Standardization is hypocritical by Anonymous Coward · · Score: 1, Insightful

    Some company we worked with was one of these Indian, cmm level five, everything-prefixed-with-'enterprise' outsourcers. They had standards alright; everything was oracle and java. Everything. Except, of course, when the software had to fax. Or convert html to postscript. Or print. Or be accessible from the outside. Or generate images. Or do things in a timely manner. Etcetera, etcetera, etcetera. Really, everything was java and oracle in the end, except for everything the software had to actually *do*.

    I guess the whole debate is the symptom of some sort of culture-clash; not Indian vs. Western or anything, but rather programmers versus managers in large bureaucratic companies with standards vs. small flexible companies where people actually talk to each other.

  146. Re:The distinction between standards and uniformit by Anonymous Coward · · Score: 0

    Is that AutoConf 2.13 or AutoConf 2.5?

    they're conveniently incompatible, and you didn't specify.

  147. Toward more perfect programmers by Futurepower(R) · · Score: 1

    The Slashdot story said, "The anti-standardization guys are advocating a mixed environment..."

    I agree with your ideas (in the parent comment), but I thought this sentence was extreme: "I am a computer programmer. I make computing devices do what I want. I will use any tool at my disposal, to hell with my employer's proposed "beneficial" restrictions."

    The problem is that many people involved with computers fundamentally don't actually work for their company. Instead, they do only what they perceive is best for them. Generally, when such people are programmers they want a resume that shows familiarity with many computer languages.

    That kind of short-term vision works because of the brokenness of the human resources department of most technically-oriented companies. In most such companies, the top management has too little technical understanding. The top management tries to reduce salary expense by hiring people who will work cheaply, and that means people with minimal technical understanding.

    Poorly educated human resources people are impressed by someone who says he has familiarity with several computer languages. (Actually, human resources people aren't impressed at all; they only think the manager for which they are interviewing applicants will be impressed. Generally the people with no technical knowledge at a technically-oriented company have a secret belief that they are superior to those who work with grubby technical details.)

    Of course, it would be possible for someone to lie on a resume and claim knowledge of languages with which he or she had little experience. But that is regarded by most people as far too risky. The liklihood is that someone doing the interviewing would detect ignorance.

    So, many programmers want enough practice that they can claim familiarity with several languages. Such people can be expected to lead their companies into as many technologies as possible.

    A good simple example of this is any online banking web page. You will find a lot of foolish use of Javascript by designers who clearly were just experimenting. Banks are where the money is! But, amazingly, banks are not able to hire people who actually work for them; their IT staff works for their next job. It's that bad.

    The average person wants to move up the job ladder in preparation for retiring and waiting to die. Someone who actually has programming in his or her heart, however, gets tired of all the tools after a while. Each tool has serious limitations. Each tool has its own quirkiness. Is it beyond human comprehension to make one good compiler and one good editor?

    "The right tool for the job" tends to mean "none of the tools are very good". My opinion is that Java is necessary and good, but it should have been activated as a compiler switch for GCC.

    Unfortunately, programmers are, in my experience, not good at loving themselves. Many of them are too insensitive to social issues to recognize when they are being abused, so they don't recognize when they are abusing. In a perfect world, programmers would expect more perfect tools, and they would always have the needs of their companies in their hearts at the same time they considered their own needs.

    But, we don't yet have that more perfect world, and programmers often express desires to be involved in software development in such a way that they would quickly create intellectual overload for themselves and their managers. If they have their way, their company fails and they get a job elsewhere, never realizing the misery of their existence.

    --
    Before, Saddam got Iraq oil profits and paid part to kill Iraqis. Now a few Americans share Iraq oil profits, and American citizens pay to kill Iraqis. Improvement?

    1. Re:Toward more perfect programmers by schibatzu · · Score: 0, Funny
      Unfortunately, programmers are, in my experience, not good at loving themselves.

      As a programmer, I can assure you that this is patently untrue.
  148. Hmm, web development anybody? by LoveMe2Times · · Score: 3, Insightful

    If you're doing any web development (and let's be honest, if you're doing any develolpment, your organization is doing some web development somewhere), you *must * use 3 or 4 different languages. No way around it. If your organization isn't using some combination of HTML, XML, CSS, Javascript, XSLT, XPath, ActionScript (1, 2, or 3!), SVG, and other web languages, well, WTF?? Toss in a server side language, either Java, ASP.Net (any), PHP, Perl, Ruby, etc, and often you pick (or have only 1 choice of) a tag language to match (like JSP/JSF/etc with Java). Unless you're using some data abstraction layer, ORM type thingy, you'll probably have some SQL kicking around too.

    Next, if you create an end-user application of some kind, in many many cases, you must use C/C++ due to end user requirements. Some of this is being eaten up by C#, but not everybody is willing to target the .Net runtime. Then, you probably have to write an installer, and this might be using InstallShield's scripting language or similar. Does your QA department do automated testing? The automated testing tools usually have their own scripting languages too (maybe these are moving to .Net languages now, I haven't looked in a while). And if you're a big dev team, you'll be doing automated builds, so'll have somebody who's actually hacking around with makefiles (potentially MS format NMAKE files).

    If you're company is big enough to be worrying about this kind of problem, you'll have an IT infrastructure of some importance. Your IT team damn well better be using Bash scripting, Perl, Python, or some other Sys Admin language. Even Windows admins these days write scripts; there's even this new scripting framework scheduled (as an add on?) for Vista. How about your Apache config files? Your various mail/proxy/firewall configs (talking to UNIX folks here...)?

    If you have a real IT division, I'll bet you have an accounting section. Remember why people have such trouble moving to OpenOffice.org? That's right, custom Excell/Acess solutions. What's that, VBScript you say? Moving into Fortune 1000 territory, how about R3? Well, that SAP system never actually did anything, but those consultants sure made a helluva lot of money. Manufacturing and assembly lines use all kinds of weird stuff. Got any telephony solutions running around? Are you targetting mobile devices? Use scientific/mathematical software? Rendering software? Various pre-press systems? Work in the medical/health care industry? A lawyer's office? All these verticals have lots of custom things running around that you sometimes can't avoid.

    So in a nutshell, any reasonable corporation doing software development *should* be using 5-10 languages. If you were to pick only 1 language, the only choice you could possibly have is HTML. You could theoretically write a static HTML page with no CSS, no Javascript, no server side scripting, no SQL, and no Flash. You could run it off of one server, with no admins and no scripting. With no product to hawk, you don't need an accounting deptartment, and voila. Good luck with the whole money thing, though... What a stupid question. Use what you have to based on the requirements, and when you have a choice, do your best (maybe even bend over backwards) to avoid unnecessary proliferation.

    1. Re:Hmm, web development anybody? by Anonymous Coward · · Score: 0

      You are a muppet.

    2. Re:Hmm, web development anybody? by trandism · · Score: 1

      If your organization isn't using some combination of HTML, XML, CSS, Javascript, XSLT, XPath, ActionScript (1, 2, or 3!), SVG, and other web languages, well, WTF??
      You call that a list of computer programming languages??
      HTML and XML are data formats for christs sakes.. CSS?? LMAO
      XSLT, Xpath?? WTF??
      Sorry to inform you that languages have variables first of all.. loops.. some implementation of procedures/functions..
      Enough with the buzzwords sheeeeshh

      --
      www.lemonodor.com A mostly Lisp weblog
    3. Re:Hmm, web development anybody? by geekoid · · Score: 1

      In 1996 I created an entire dynamic site in c.
      Ran fast to.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  149. The problem should solve itself naturally by Anonymous Coward · · Score: 0

    I work for a reasonably large IT company. We have hundreds of developers and between them they must know a huge number of languages. However, we only use about four languages for development of production systems. Two are compiled, two are interpreted. Three have object-oriented facilities, one doesn't. Two are commonly used to build web sites, two are not. Two are scripting languages, two are not.

    So, with just four languages there is, in real terms, a wide choice of characteristics. However, there is no rule in the company that states that we shall only use those four languages. However, if you are trying to get some code written, choosing an obscure language only makes it less likely that ytou can find people to work on the code. This is a natural disincentive to the proliferation of languages.

    What I'm saying is, the problem just works out. It solves itself. If your colleagues are spending significant amounts of time arguing about which language to implement in, are you sure they understand the tasks at hand properly? Are you sure your problems are technical problems and not people problems?

  150. pick 1 compiled and 1 scripted language by Quietti · · Score: 1

    Better avoid a situation like Debian where duplicate libraries in Perl and Python (soon enough in Ruby and Pike too - $deity forbid - followed by yet more duplicates in Mono) become standard packages, simply because too many important or essential tools were coded in those languages without consideration for keeping the basic installation's package count to the strict minimum. This is one of the main reasons why transitions are so impossibly difficult to manage in Debian, nowadays.

    Then again, at the other extreme, an OpenBSD situation where an excessively spartan C shell and a substandard Korn shell are the only two possibilities should also be avoided.

    Pick one compiled language for binaries and one scripting language for everything else (boot scripts and "glue" components). That's it. Then, standardize on those two choices and spank unconscious anyone who tries to deviate from the company's selected standards.

    --
    Software is not supposed to be about how to work around a useability issue. - Ken Barber
  151. Forced standardization:retarded by Anonymous Coward · · Score: 0

    It sounds dumb. It is dumb. What about when you purchase that small company and their code is in fuck#+--, but all your newb ass programmers only know REALLYBASICSIMPLESHIT. Yea, you're fucked.

    I'd rather use the right tool for the job and employ versatile people who could care less what lang. the implementation is in, as long as it is the 'right' one. I guarantee you'll have some meeting and ppl will be like zomg we could do it so easy w/ this small script but the boss says we HAVE to write EVERYTHING in java. ghey.

  152. Maybe we should start by tommykat · · Score: 1

    by standardizing "standardise" and "standardize"

    --
    Do you have an oblem?
  153. standardise on mulitple languages by dannywalk · · Score: 1

    In most companies I've worked for, there wouldn't be standardization on a single language, but rather a list of approved languages, eg - J2EE or .NET for web, perl for unix scripting, C++ for application development, etc. Is this not a more sensible approach?

    --
    Man Needs God Like Birds Need Helicopters
  154. Can't resist quotation... by tgv · · Score: 1

    A good programmer can write FORTRAN in any language.

  155. two problems with the 'one size fits all' by sl4shd0rk · · Score: 1

    1) The people problem. As with any change or edict, there are people that will be naturally resistant towards it. Others will naturally go along with it. You can cause a whole new outbreak of problems when this happens that are so far unrelated to the original problem, that you will wonder wtf happened.

    2) There is no way to solve every problem that comes along with (insert your favorite language here) efficiently. I don't care how sexy or catchy the name sounds. Writing windows apps in assembly *sucks*, and coding in 32k of ram with Visual Studio *sucks*. Everything else is relative.

    People get paid to use their judgement. Let people use their best judgement when it comes to picking their tools. If their ego or judgement is a problem, deal with that accordingly.

    --
    Join the Slashcott! Feb 10 thru Feb 17!
  156. Not practicable to _fully_ standardize. by jonadab · · Score: 1

    Standardizing on a single language is, in theory, possible. In theory there's no difference between theory and practice, but in practice there is. Yes, with any Turing-complete language you *theoretically* can do anything you need to do, you will in practice discover that this is not the case, that there are things for which you just plain have to have a different language.

    What those things are depend on what language you standardize on, of course. At work all reports are created for Microsoft Reporting Services, so that means TSQL. A few weeks ago, I ran into a solid brick wall: TSQL does not have regular expression matching. At all. I needed, for a particular report, two or three dozen regular expression matches. Implementing any given one of them in some other fashion (e.g., with a trainload of LIKE operators glued together with OR) was going to turn a hundred-line report into tens of thousands of lines, to get everything right. Initially I settled for kludging together LIKE matches for just the most common subsets, but ultimately we had to install a third-party regular expression library, which is (guess what?) not implemented in T-SQL. If we'd been locked into only solutions implemented in a certain language, I'd have been stuck.

    It doesn't matter what language you standardize on: you will find it utterly inappropriate for some tasks. Even a language like Perl, which is expressly designed to make "the hard things possible", has some things it's just *not* well-suited for doing (in Perl's case, GUI stuff).

    On the other hand, "standardizing" on a particular language in the sense of requiring all of your programmers to know that language and work with it on a regular basis is probably a good thing. Just make sure it's understood that there will occasionally have to be things implemented elsewise.

    --
    Cut that out, or I will ship you to Norilsk in a box.
  157. One Standard Language by Danathar · · Score: 2, Insightful

    It was tough. But once we standardized on english, communication was MUCH easier.

  158. Only if the employees make a sport of it by Qbertino · · Score: 1

    If there is a strong notion amoungst the employees to all get down on the same language and do whatever needs to be done in that, even if it isn't that good at doing it, you may go ahead.

    Scritping in Java must be anoying compared to Python. BeanShell might be a different issue but still. And one would have to argue wether BeanShell still fits a "go Java" rule. In order to do effective scripting in Java you have to be firm in it.

    Parsing, Printing and Document Conversion could suck aswell. It's all about libraries, knowing them and the people knowing how to write and document OOP properly.

    If everyone in the outfit is determined and willing and diciplined enough to join in and you get down to documentation standards and get together a nice set of libs for all company tasks at hand it may very well turn out well.

    Otherwise just use the best tool for the job, regardles of what PL it is.

    --
    We suffer more in our imagination than in reality. - Seneca
  159. Don't underestimate screwdrivers by checkyoulater · · Score: 1

    As somebody who works with hand tools on a daily basis, believe me when I say that standardizing on one type of screwdriver would be a good idea. Provided that choice would be Robertson screwdrivers, of course. In fact, I'd almost go as far as to say that Phillips and flat head screwdrivers should be illegal.

    --
    Is that a real poncho? I mean, is that a Mexican poncho or is that a Sears poncho?
  160. I would standardise... by squoozer · · Score: 1

    ... and choose the hammer. I've been putting screws in with a hammer for years and they all stay in, a hammer is also good for nails and I have found hitting two things enough often makes them stick together (especially if there are nails in them). So yes, standardize but on the hammer. Oh wait we were talking about programmign languages. Erm well yes I agree.

    --
    I used to have a better sig but it broke.
  161. Deja Vu Over Again by anorlunda · · Score: 1

    In the early 80s the military rebeled against the chaos in their software procurements. They claimed that in the history of procured software projects that more than 250 langauages had been used, only one of which was used in more than one project (I think that one was Jovial which was used in two projects.) They commissioned Ada to be the single language to end all languages. They tried to be as heads up and up front as possible in designing Ada, and solicited input from anyone and everyone. As you know, Ada made a major dent in military circles but it never got far in becoming the one and only language. There were (and are) compelling reasons to also use other languages.

    So what's the point? We have to allow some chaos and experimentation even within projects. Otherwise, our thinking gets too rigid and we lose the ability to stimulate new ideas and to let the best ideas percolate to the top via real life experience.

    If every project optimizes only itself, and doesn't consider growth of the industry and the profession, the result is stagnation. We would be becalmed in a sea of localized suboptimizations. R&D does not belong exclusively in ivory towers. Software R&D works best when allowed to grow from real life's hard lessons.

    The best advice I heard was that large projects should budget the new technology and risks that they allow. In no circumstances should a project include more than 25% new (or risky) technology. On the other hand, I would argue that a large project should budget 10% (certainly no less than 5%) for undirected experimentation. Management should not get involved in the nature of the experiments, but it must manage the quantity of experimentation.

  162. Creativity by Anonymous Coward · · Score: 0

    From my standpoint, I find the process of standardation rather futile for the following reasons:
    * By the time the "standard" gets written and approved for development use, the technology has already changed.
    * Managers seem to have a problem inforcing what they standardize upon. Once they finally understand it - the process must then start over again.

    Outside of these reasons, it just squashes creativity. /* $0.02 */

  163. Company wide standardization by Samarian+Hillbilly · · Score: 1

    I went very well. The standards committee decided on windows/ C++/Java/Tcl. And now everyone is developing in c++/java/tcl/python/pearl/bash/Qt on windows/Linux/solaris. welcome to the real world!

  164. .NET by 1000101 · · Score: 1

    This is one of the main reasons to use a .NET language. They can all be intermixed within the same code and go through the same debugger.

  165. not that easy! by big+ben+bullet · · Score: 1

    easy for you to say... what if it's not up to you to fire/hire people, but it's up to you to make every inhouse developer (bad, mediocre or good) able to work on any new (and in the future existing) project

    i'd say the 'pick two' option the grandparent suggests doesn't sound too bad afterall

    if you standardize and get it approved by whatever steering organization there is (committees, upper management), then you have something you can use to fence with against unwilling/unqualified existing staff (i.e. have them fired or transferred to another division if they won't/can't follow the standards)

    it all depends on the size of the company, the position you're in, the quality of the existing personnel, unions, friends in high places, politics, etc...

  166. obvious off topic post by bermudatriangleoflov · · Score: 0

    When I read the title of the article I thought it was about the English/Hindi languages.

  167. The extreme version of this is just silly... by esme · · Score: 1
    Trying to write everything in one language is just silly. Even if you're a n all-Java shop, there will be likely by XSL somewhere, shell scripts and/or DOS batch files files, SQL, etc. And there will still probably be some place (again for an all-Java shop) where a lightweight Perl CGI will make more sense than a JSP or Servlet.

    But the weak form of this (everybody should be using the same set of complementary tech, except in cases where there is a clear technical justification for it) makes a lot of sense. In particular, letting different people use different tech that are basically equivalent (like Java/C#, JSP/ASP/PHP, Perl/Python/etc.), just because different people like different stuff or want to try out new toys, can make your life much harder.

    So if your company wants to make commitment to a set of tech (like Java, or .NET, or whatever) and try to use that in all the cases where it makes sense (even if there are other tools that could do the job just as well), I'd say that's a good thing.

    -Esme

  168. Re:The distinction between standards and uniformit by cait56 · · Score: 1

    I totally agree.

    Using multiple languages for a given purpose just creates more of a legacy liability. If you do your performance critical software in C, C++ and Assembler then you need to maintain a staff that knows C, C++ and Assembler.

    But that is not a reason to try to write web applications in C. Or even test scripts. Those areas need their own standard tools, and using the tools standardized for another area will not make it easier to recruit and maintain staff. It will mean that you'll have to recruit web developers who use different tools than what all the rest of the web developers are using.

    Ditto for test tools, which is actually where you see the greatest tendency to just let each project decide how they are going to write their test scripts.

    If the problem is not uniform, then the toolset shouldn't be either. But that doesn't mean you should just casually select the toolset for each project without recognizing the cost of maintaining competence with each new toolset added.

  169. Build a list of tasks by theonetruekeebler · · Score: 1
    Build yourself a list of the types of task you must accomplish. For each task, pick one or at most two languages. That is what to standardize on.

    There's the right tool for the job and the wrong tool for the job. Then there's the generic tool, which is almost the right tool for almost every job: Think about all the things one can do with a Leatherman. I've sawed up 4 inch branches, cleaned fish, loosened bolts, stripped wires, punched holes in leather. The Leatherman did a fair job at each. But I found myself sawing a lot of branches, for example, I'd invest in an honest-to-Ghod saw. Likewise a scaling knife, ratchet set, wire stripper, and a rotary-tip leather punch. I love my Leatherman, but like every other multipurpose tool out there it sacrifices efficiency for versatility.

    Ponder the various goals you're trying to reach and find a (hopefully short) set of tools to reach those goals. For example: Serve your web pages in PHP. Exchange data in XML. Retrieve data in SQL. Hack and script in Python. Write everything else in C++. But: Don't hesitate to use Java servlets for computationally expensive web pages, exchange medical data in HL7, retrieve textual data with AWK, hack and script in Perl, and still write everything else in C++.

    If you want to standardize your entire company on a single great big perfect do-everything language, just ask the U.S. Department of Defense it's doing with Ada.

    --
    This is not my sandwich.
  170. Dead Money by Harp57 · · Score: 1

    If you want to start hearing "We can't do that" go ahead and standardize on a tool. Better to standardize Processes, Methods and Practices than a toolset. Unfortunately this is usually so difficult and so contentious that few institutions rarely do it! The easier way is to say, "We'll just all use the same tool". Since all tools are a compromise, a single tool will promote mediocrity at the expense of innovation. When that happens you are dead money in the poker game of business.

  171. Does Company-Wide Language "Standardization" Work? by Anonymous Coward · · Score: 0

    Of course! You must remember Erlang....

  172. Pros and Cons by C_Kode · · Score: 1

    Both have pros and cons. Standardizing on a single language limits the knowledge required to do the job. Using many different languages (The right tool for the job) saves development time money, and headaches.

    My beleive is a using different languages, but limiting the langauges used. The last thing you want is 40 languages floating around your office. Then again, you don't want a basic applications taking 3 weeks to a month to write in Java or C that could have been written in 1 or 2 weeks (or even days) written in Python or Ruby.

  173. Re:Pick Two: It Does Make Sense to Narrow the Fiel by isorox · · Score: 1

    more Perl than I'd ever want to see

    And it's all on one line, consiting of #$/%;&(!-> and {

  174. Standardize on standards by Anonymous Coward · · Score: 0

    I work for a company where instead of standardizing on standards, they standardize on the wrong tool. For example, here we build our Java application with DOS batch files instead of Ant. That's what we standardized on. Needless to say, the build is not incremental (unless you know which sub batch file to run instead of running the main one, and then only with so much of granularity: you rebuild whole modules). Maintaining this is a headache and some files have to be included one by one in batch files, instead of using patterns. When I suggested changing this I was told that it works and it doesn't need being changed. One of the reasons for this is that we don't have regression tests (regression tests: a great thing to standardize on) here so the QA guys only check what we work on, so that we cannot afford to do system wide improvements or refactorings at key modules. Another thing we standardized on: CamelCase. That's natural, because we are a Java centerd company. The problem is that our XMLs look like this instead of In short, standardizing for the sake of standards will not take you anywhere. Standardize on the right tools for your purpose and not apply standards on everything.

  175. Sure... we're standardized by Anonymous Coward · · Score: 0

    Use C# for codebehind that dynamically builds SQL with ASP.net on the front end. Doesn't sound like it's possible to be homogenous - unless you standardize on Perl ;-)

  176. The Danger in Corporate Language Standardization by constantnormal · · Score: 3, Insightful

    ... is that it tends to degenerate to the "lowest common denominator", or the most widely-used language for everything, regardless of applicability and common sense.

    Nonsense such as COBOL in the desktop environment, or perl in an IBM mainframe environment. Neither makes much sense, as the supporting codebases that might make COBOL in an IBM mainframe environment do not exist in a desktop environment (without extensive (and expensive) porting) and similarly, the large pre-existing codebases for perl do not exist (or again require substantial porting) in the mainframe environment, not to mention perl's targeted UI of a unix shell or console is not what one is presented with in mainframe environments. REXX makes for a much better choice of a scripting language on the mainframe.

    Yes, you CAN use COBOL for everything. Or Java. Or C/C++. Or perl. Or assembler.

    That old saying, "To the man with only a hammer in the toolbox, every problem looks like a nail", applies here.

    Having a toolbox with a reasonable assortment of versatile tools is a sign of a craftsman. Having a toolbox with every tool known is a sign of a rich dilettante playing at being a craftsman. Having a toolbox containing a single tool is a sign of an idiot playing at being a craftsman.

  177. Re:Pick Two: It Does Make Sense to Narrow the Fiel by dbIII · · Score: 1
    Pick Two
    My two - FAST and CHEAP. If there's three you get a chance at GOOD as well.
  178. One language per task, not per company by powerpointmonkey · · Score: 1

    I would not want to write Oracle stored procedures in PHP, I would not want to write web sites using PLSQL.

    If I were writing a windows only GUI that made heavy use of the Windows API,I'd want to do it in .net rather than Java.

    If I wanted to standardise my server side enterprise applications, I would want to use Java instead of .net

    Standardising on one language across an entire company is a crazy idea, standardising on one language per application type is probably a good idea as long as someone is responsible for scanning the market to ensure your standard isn't becoming obsolete.

  179. Democracy versus dictatorship by Ancient_Hacker · · Score: 1
    From personal and painful experience, one certain shop did a wide-ranging survey and then standardized on using "PowerBuilder" for everything.

    Guess they looked for the language with the most checkmarks. In case you don't know, "PowerBuilder" started off as a mainframe language, got grafted to a PC, then had Web client/server glop grafted onto that. Sure, it merits a lot of checkmarks, and now it does most everything, slowly and poorly and with plenty of mainframe-like throwbacks to work around.

  180. What about .NET? by mytec · · Score: 1

    I'm reaching here but the idea sounds at least a bit interesting. .NET supports multiple languages. The languages are converted to IL and the resulting code between the languages look almost identical. Could you have that situation where multiple languages are used and IL is debugged?

  181. MBA answer by jrexilius · · Score: 1

    Its called competitive efficiencies for the enterprise, and the answer is... "it depends". It depends more on the nature of the firm.

    I used to be architect of capital markets (trading applications) at Bank One/JP Morgan before starting my own company and I will tell you that there is no one-size answer.

    At the bank we tried to standardize on Java and C# (had to placate the myriad of windows requirements, vendor and legacy apps, etc.). It had the effect of making the tech work, at times, less efficient. But it made their hiring and HR practices, vendor and purchasing management, and consultant relations more efficient. For them, there was no real big competitve advantage in saving hardware or operating system costs as compared to all the other issues. There was no huge competitive edge in squeezing 2 months of dev time off a one year project by using a better language.

    At my company (starving start-up) it's all about efficiency, competing on technology (and every other facet), and doing things right as best as possible. I don't have 5,000 developers, 10,000 sysadmins, and 20,000 miscellaneous other types to worry about, only my product and my customers.

    Answers different.

  182. Re:The distinction between standards and uniformit by marcosdumay · · Score: 1

    Good luck on all those meetings...

  183. My experience: Tough sell, but worth it by seanmcelroy · · Score: 1

    I have been one of the advocates for language standardization at our own company, and for the past three years we have slowly gotten everyone on board in C# standard. This was easy to get management's seal of approval, but it has been a very tough sell to some of the programmers in our development department, especially older programmers with with C/C++ backgrounds. Despite this, after three years of being standardized, we don't work any faster or any more efficiently; however, it is much easier for our department to handle staff turnover, because every program in the building (many of which were authored and maintained by a single developer) is written in a syntax understandable by all. Developers in our standardized environment are no more "replaceable" than they were before -- I've always maintained that if all that keeps you at your job is what you know, and not what you can do, you'll be replaced anyway eventually.

    --
    Be very, very careful what you put into that head, because you will never, ever get it out. -Thomas Cardinal Wolsey
  184. Re:The distinction between standards and uniformit by Anonymous Coward · · Score: 0
    the only language that will ALWAYS work for ALL cases is assembly

    I've been scripting my web pages in assembly but they never work properly. Is this a Firefox bug?

  185. Odd solutions = work for the rest of us by zedeler · · Score: 1
    Why, the ability to say, "Nope, we don't confine our employee's choice of languages." Well that and a morass of code based as much on individual whim as any logical need.

    At least it means permanent work for the rest of us. I spent most of 2003 cleaning up a project where every tool had been used in the worst of all possible ways. CVS for local copies of source code at every workstation. Java for procedural programming and plain c for processing... plain text files. Of course.

    I felt like one of those guys cleaning sewers, but I also got paid well, so I guess I am in debt to my predecessor who wrote the code.

    In other words: keep up the good work and consider using a handful of esoteric languages! (Including Flip.)

    1. Re:Odd solutions = work for the rest of us by 16K+Ram+Pack · · Score: 1
      Ha ha.

      I spent a year fixing code in a company where all sorts of not just languages, but different libraries used (which did the same thing) even in the same program. Programmers just did things in certain ways because they'd never tried them before, or to put something on their CV.

  186. Languages aren't ready for this yet by p3d0 · · Score: 1
    Java can't do everything you want any more than Perl or Bash or Lisp could do everything you want.

    Some say a universal language is impossible, and that you need different languages for different tasks. I say that's a little like medieval philosophers saying you need different epicycles for different planets, or that there's no one bodily humour that accounts for all moods. We're way too new at this programming thing to make any pronouncements about what's impossible in the realm of software engineering tools. To paraphrase Arthur C Clarke: if an expert says something is possible, he's probably right; if he says something is impossible, he's probably wrong. The languages we'll have 100 years from now will be as unlike today's languages as our modern astronomy is to ancient Ptolemy's geocentrism.

    However, this universal language, whatever it is, doesn't exist yet, as far as I know, so standardizing on a single language for everything is premature.

    --
    Patrick Doyle
    I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  187. Relevant witticisms by Stavr0 · · Score: 1
    Golden Hammer Syndrome: If all you have is a hammer, everything starts to look like a nail.

    Some people, when confronted with a problem say to themselves: "I know, I'll use $language." Now they have two problems.

  188. Software!=nails by 16K+Ram+Pack · · Score: 1
    The problem is that the analogy of nails doesn't work.

    Moving from one screwdriver to another is not much of a learning curve. Understanding what someone screwed in is not difficult.

    Whilst programmers should be given some freedom, I would really avoid multiple languages. Sometimes it's not an issue, like if someone writes a library in C#, a vb.net developer can happily use it. That still means, though, that if the c# developer leaves, you've got to address that knowledge gap.

    It's important to work as a team. The teams I've worked in where programmers work in their own way (one guy does his reports in Crystal, two others use an open source reporting engine, another outputs to Excel) you end up with problems. When the guy who prefers Excel is off sick, the people not versed in Excel have a harder job to resolve it. The teams I've worked in where people agree the method of working (preferably in meetings, and buy in to it together and form a common process are those that work more effectively.

  189. Stupid ideas by people with limited understanding by Kope · · Score: 1

    Standard languages are fine if you have a complete set of languages to cover problem domains.

    People rarely take the time to do this right.

    Since all languages aren't created equal, it creates big problems pretty quickly. For example, if you have Unix cron jobs writtin in BASH do you have to rewrite them into another language?

    What about systems with Scheme extentions?

    What about problems that are simply better solved in a procedural language instead of a functinal language?

    A good language standardization policy can be a benefit to a company, but a good policy will limit you to perhaps a dozen different languages for the problem domains you'll face. If you try and compress it beyond this you'll create as many or more inefficiencies as you eliminate.

  190. My advice is to get out of there by Anonymous Coward · · Score: 0

    I've seen this happen before. Your company is being eaten by a political machine and evidentally productivity will go to nil, and bad things will happen as you won't be able to get any work done for all the politics you are caught up in. My recommendation is to escape while you still can. I hated seeing my company full of smart hackers turned into code monkeys, it's really not fair that these types of narrow minded individuals can ruin such great companies for people that really care about programming.

  191. Language standardization makes things worse. by Franciscan · · Score: 1

    Writing good software is very difficult. I see a pattern in companies where there are (i) people with technical ability and (ii) posers who take the 30,000-foot view on everything telling them what to do at every turn.
    The posers can be detected by the following:
    (a) Posers tend to swear allegiance to whatever mantras are put forward to them in books, by well-meaning gurus, in whatever software-development rule book the poser has most recently read. The poser tuned out at some point in the book's more complex content, but they did read far enough in order to take away some new silver bullets, that they think makes them capable of leading a project that they don't understand and could not develop on their own, even giving 30 years of their own time.
    (b) Posers believe that whatever makes inherent sense to them, should require no explanation, and should be immediately cast in stone, becoming a new Corporate Commandment. Posers lead by use of brute power, rather than by use of reason and influence.
    (c) Posers don't bother to think about the fact that one language/technology/tool/method will not suit every application in every department of every company, for all time, and instead worry about preventing stress on their very limited mental abilities caused by the learning of some new language, technology or method.
    (d) What posers do tend to be able to do is calm the nerves of rattled executives they report to, who don't want to understand anything about the actual problems in a given development project, but can give high level, fluffy claims about how we've "got the process under control now", and "we'll be back on schedule right away sir". The poser serves a valuable role in an organization. By being reviled from above and below, the poser is a lightening rod for negativity. This helps keep the developers actually developing and making progress towards some goal, even if the date they will reach the destination remains a mystery to the PHBs and posers.
    Warren

  192. Standardisation and homogenisation. by Raven42rac · · Score: 1

    I think you use the language best suited to the problem. Isn't that the way it has always been done? If you standardise on java, and there's something you can't do in java, by the time you standardise on something else, you've lost a lot of production time.

    --
    I hate sigs.
  193. The most portable Language by brufar · · Score: 1

    But .NET is so portable, why would we even consider using another programming language...

    --
    far...out
    1. Re:The most portable Language by Anonymous Coward · · Score: 0

      HAHAHAHAHHAHAHA... Good one ROFLMAO...

      Huh?? what do you mean you're not joking????

  194. Here's the plan by bahwi · · Score: 1

    90% Standardized
    10% Glue, because even an All Java, All C place won't work without glue!(Or Duct Tape, your choice).

    Glue should be something like one of the following: Perl, Ruby, or Python

  195. You know they'll choose the wrong one by Anonymous Coward · · Score: 0

    Years ago, I worked at a company that decided to standardize on one cross-platform (Windows/HP-UX/Solaris) scripting language. The contenders were Perl, Tcl, and (believe it or not) REXX. I was given the task of "advocating" for Tcl, I guess because I was the only one who could write "hello world" in it. In the end, Tcl "won" only because the guys advocating for Perl couldn't figure out how to make it talk to an Oracle server, but I got Tcl to connect. (REXX had fallen out of the running because only my manager knew anything about it.)

    So Tcl became the company's standard scripting language. I left shortly thereafter. Shortly after that they outsourced their IT stuff. Wonder why...

  196. This is how our company works by Fastolfe · · Score: 1

    I work for a large telecommunications company, and this is effectively our approach to language standardization. There are no hard standards that apply to the entire enterprise, but each solution domain (which sometimes loosely maps to organization boundaries) has its own standards, sometimes official.

    For example, in the "web" domain, our standard language is Java. Our standard web publishing platform is J2EE. We have an awful lot of Java developers, and they can all move around between projects and we have no trouble getting replacements. This particular standard is official and exclusive of all other web publishing platforms.

    In our "system administration" domain, our de facto standard is sh (for the lighter stuff) and Perl (for the heavier stuff). This isn't an official standard, but the tools to run shell and Perl scripts are standardized and widely available, so there's less of a headache to run these than some other type of script.

    At the enterprise level, we do have technology standards dictating what versions of things like a JRE, and a perl installation, so that code that we do write will run predictably everywhere, but they don't go so far as to dictate when each language should be used.

    Finally, we have an exception process, where if you can justify the need to use something non-standard, you can. You just have to justify it, and people have to weigh in with the cost risks, etc. I think our approach works well.

    1. Re:This is how our company works by localman · · Score: 1

      Thanks for the thoughts... that makes a lot of sense. I agree that having multiple languages is fine when the domains are suitably different.

      Cheers.

  197. Use whatever is the best choice for the task by Anonymous Coward · · Score: 0

    Let everyone code in their own .NET language, and let everyone use everyones assemblies.

    Umm, yeah, because .Net runs great on all those UNIX servers the company has spent 100's of thousands of dollars on. Yes, I know about Mono, but it's always going to lag behind Microsoft's implementation, for example C# 2.0 is not supported in Mono AFAIK.

    Personally, I'm against standardization. What if your choice ends up being the wrong choice down the line (or even at the moment)? Then your stuck with the tool you standardized and all your developers are only have been excercising one skill set. Standardization is ok if its for specific tasks, for example if you say choose Java on the server-side, C#/.Net on the client side, Python for scripts, PHP for the company website, etc. But even then there should be some room to change as technology changes.

    The place I work, we are pretty heterogenous and don't enforce any standardization, but we do just fine because our developers are used to using a variety of tools (and we're a really small team), and we make intelligent decisions about which tools we use. We have a tendency to use certain things for certain tasks, but these have changed and are allowed to change over the years. At the moment, our main languages are Java 1.4, C# 1.1, and PL/SQL, so its not like we are using the latest greatest shiny new language that we'd have a hard time hiring developers for. But we occasionally write in C, C++, Delphi, Python, PHP, shell scripts, and a few other languages. Some of that is maintaining legacy stuff, and some of that is using the appropriate for getting a task done.

  198. On my experience... by LuisAnaya · · Score: 1
    Standards become legacy in the blink of an programming fad.

    Where I worked, we moved from the following programming "standards":

    1. COBOL
    2. PL/1
    3. C
    4. C++
    5. Java

    Today we're maintaining a multiple language environment because many of the "legacy" products are still used by customers and they pay us to maintain them.

    --
    Vi havas e-poston.
  199. It's all about moderation... by Anonymous Coward · · Score: 0

    It's about weighing the pros and cons of the situation:

    Language standardization gets you something really great -- a large resource pool of talent and experience that you can draw on. During all cycles of software development you have people who understand the strengths and pitfalls of a certain solution and can offer assistance or guidance as needed. Peer reviews and such can be more in-depth and more meaningful. Software libraries can grow and be abundant, leading to faster software development. When developers leave, it's easy to find someone to pick up the reigns (assuming you don't have some horrible spaghetti of code left by the previous developer).

    But language standardization also gets you stuck in certain situations. No one tool is perfect for every situation. Some tools (like Java) are better for enterprise-wide software solutions involving Single Sign-on (SSO) and multi-platform/multi-vendor (like DB) support, but can be too slow for many situations. It can also lead to stagnation and lack of innovation.

    Utilizing a "free love" of languages can be just as terrifying as well. Many new languages lack adequate libraries, forcing developers to come up with their own solutions from the ground-up. Support resources are more scarce for these new languages, meaning possibly paying for support. When a developer leaves, valuable time can be lost trying to find a replacement. And when a replacement is found, they have to try to decipher what the last person left behind and get up to speed on the project.

    So which do I support? Both. Standardize, but not just on a single solution. Get a group with some core skills, but allow them to "mix it up". Let the Java folks work on the PHP/Ruby/etc. projects and vice-versa sometimes (if they want). Personally I'm always willing to learn more, but am also happy and comfortable with what I know.

  200. most web applications use 4 languages anyway by yore · · Score: 1

    I sort of see your point about having too many languages doing the same thing, but did you know that most modern web applications already use 4+ languages?

    Choose one of PHP/Perl/Python/Java/C# to handle business logic and flow on control. Use some flavor of SQL to access the database. Throw in HTML to provide the basic user interface. Add javascript for client side features that can't be supported with plain HTML. If your application is of any size at all you've got some property files written in XML, YAML, or other similar language. Good developers probably used some variant of UML to conceptualize the design before they started.

    The idea that one language can do everything is pretty silly.

    Since you are pushing standardisation I assume your current environment is not standardised. Let's say you choose Java. What are you going to do with all those .NET and PHP apps? What is the cost for your employees to retrain to another language? Who will maintain the php app? I've created small perl and ruby scripts that would have needed many more hours to develop under Java or C#. Sure there were some developers on our team that didn't know how to maintain those scripts, but we had enough smart developers to cover it. There is a definite cost savings when smart developers choose the right tool for the job.

    And since somebody mentioned golf... how many professional golfers do you see standardised on 1 club?

  201. Technology Decisions should be Local by keyslammer · · Score: 1

    I've worked in a number of large companies, and I've seen the damage caused by trying to force technological decisions (like which programming language to use, or which communication package to use) down on everyone from upper management. As a result of these experiences, I believe that most technology decisions should be made locally - at the group level - rather than at the department or enterprise level.

    Software development is a team activity. It works best when the teams are small (< 6 people) and relatively autonomous. The team members and team leader are ultimately judged by the success or failure of what they deliver, and it should be up to them to decide which technologies they want to use.

    This doesn't necessarily mean that you shouldn't have rules at higher levels, it just means that the higher you go the more general your rules should be. Rules like "you must use languages X, Y, and Z" are inappropriate for the enterprise level. On the contrary, a rule like "before a language can be adopted, there must be at least N employees who are familiar with it" is a lot more sensible.

    From what I've seen in this discussion and heard elsewhere, the basic argument of language standardization boils down to two contradictory mandates:

    1) use the right tool for the job
    2) use a tool that others are familiar with

    Placing the decision at the team level allows you to make a nice compromise. You get the flexibility to pick the right tool and the guarantee that the ones who are going to be most involved with the tool will be familiar with it.

    The disadvantage to this approach is that you can end up with "islands of technology" in your enterprise, where a team builds a successful product with an obscure technology and then moves on, leaving the company with something that must be supported but cannot be maintained. Note that this can also happen even with familiar technologies - you can make a mess in any language.

    The best guard against this scenario is to make teams responsible for supporting what they have built. There's a lot of stuff that goes along with this idea, but that's a separate discussion. :-)

  202. (ideally rare) threaded programs by mkcmkc · · Score: 1
    Does your company ever create multithreaded programs?

    This is a concern, for the 0.01% of programs for which multithreading is actually a wise design decision. And, although there are some options for Python, if your program truly falls into that category, perhaps you should use another language.

    In my experience, though, most choices to multithread programs are ill-advised, and seem to be made because that's the decider's familiar hammer. The costs associated with multithreading are huge, and should not be chosen without long contemplation.

    --
    "Not an actor, but he plays one on TV."
    1. Re:(ideally rare) threaded programs by mikaelhg · · Score: 1

      In my experience, though, most choices to multithread programs are ill-advised, and seem to be made because that's the decider's familiar hammer. The costs associated with multithreading are huge, and should not be chosen without long contemplation.

      Funny, I've never noticed this, and I've been using threads succesfully for decades to handle applications which need to serve concurrent users while sharing data. Perhaps I've just been lucky? What do you think?

      If you don't use threading, how do you get concurrent service processes to share native object data on 4 to 32-way multiprocessor machines? Surely you must have some programs which serve more than one person at a time and surely some of your apps really need to take advantage of the native performance features of the hardware they are running on?

    2. Re:(ideally rare) threaded programs by mkcmkc · · Score: 1
      Funny, I've never noticed this, and I've been using threads succesfully for decades to handle applications which need to serve concurrent users while sharing data. Perhaps I've just been lucky? What do you think?

      Maybe so, and if so, you may count yourself lucky. If you've done a lot of non-threaded stuff and a lot of threaded stuff and the threading didn't cause you noticeably more grief, then you may definitely count yourself lucky.

      If you don't use threading, how do you get concurrent service processes to share native object data on 4 to 32-way multiprocessor machines? Surely you must have some programs which serve more than one person at a time and surely some of your apps really need to take advantage of the native performance features of the hardware they are running on?

      Actually, no, "taking advantage of native performance features" has never been in a list of requirements for anything I've worked on. Generally the requirements center on getting things implemented quickly, correctly and maintainably, aspects for which threading is a minus.

      I can certainly imagine cases for which threading would be crucial, just as I can imagine cases for which assembly language is crucial, but no, it's never come up for me. As I said, I think it's just a really tiny niche.

      Using multiple processes generally fits the bill and is much less complex. When I do do use threading, it tends to be part of some other piece of stable software like Apache or a database engine, so that I mostly don't have to pay its price.

      --
      "Not an actor, but he plays one on TV."
    3. Re:(ideally rare) threaded programs by mikaelhg · · Score: 1

      If you've done a lot of non-threaded stuff and a lot of threaded stuff and the threading didn't cause you noticeably more grief, then you may definitely count yourself lucky.

      Are you familiar with modern threading tools? These allow you to create, gather and hold your frequently accessed model data in RAM where it belongs, as VM objects without copy/parse requirements, and serve your user state machine changes while using the whole CPU capacity of your servers.

    4. Re:(ideally rare) threaded programs by mikaelhg · · Score: 1

      Maybe so...

      Actually, I see I lied to you. Where I wrote "for decades" I meant to write "a decade."

    5. Re:(ideally rare) threaded programs by mkcmkc · · Score: 1
      No, I hadn't seen this page (I pretty much gave up on Java several years ago). I think you're talking about, for example, ConcurrentHashMap. Yes, it looks very nice, and I'd sure rather use this than the usual lock/monitor type thing.

      Fundamentally, though, as far as I can see, having threads introduces a whole new dimension of nondeterminism. This makes correctness and debugging more difficult. Much more, IMO.

      As processors move to 8-way cores, 64-way cores, etc. (which will presumably eventually become available even for desktops), I might end up changing my mind about this. But right now it seems like hardware is cheap, developer time is expensive, and anything that lets me trade "less hardware" for "more developer time" doesn't seem very attractive.

      --
      "Not an actor, but he plays one on TV."
  203. Re:The distinction between standards and uniformit by sgtrock · · Score: 2, Interesting

    I know your list wasn't meant to be complete, but you missed one case that tends to get ignored a lot on slashdot. That's OK, the bulk of the people hanging out here are developers or have a development focus, so they tend to forget about the rest of the IT staff. ;)

    Think of all the scripting that gets done by the network and system administrators to keep everything humming along. It's almost always unrealistic for that staff to fall into line behind a single corporate wide language that was chosen to support a completely different set of design requirements. Heck, in their case it's virtually impossible to pick a single language due to differences between platforms and availability of tools. For example, in most cases they're happy if they only have to worry about choosing between Perl, Python, shell scripts, and/or batch files on *nices and/or Windows. Then there's JCL or ?? for the big iron plus Ghu knows what for rarer platforms like Tandems.

    None of the above takes into account the network admins who, in addition to worrying about the differences between (again, for example only) Cisco and Juniper, also have to have at least a basic understanding of whatever scripting language(s) their management consoles support.

    Anyhow, I agree that the idea that all coding done by a company can be done in a single language is wrong for all the reasons that you enumerated, and I agree that a list of standard choices based upon requirements is very important. That single sheet of paper probably needs to grow to a sheet and a half or two sheets to cover all the possibilities, though.

  204. Value by omyar_hunt · · Score: 2, Insightful

    The question of client value is one that has been ignored up until very recently, with areas like interaction design, and Agile methodologies incorporating client needs and goals into the day to day programming work. It comes down to this - only do what work has obvious value to the customer . The only question for these standardizers is : what value does this peice of work have? I would purport that standarizing on a language across multiple disparate teams for it's own sake has no value. So whats the reason these people have for wasting company time and money? Are they backed up in their claims by metrics, prior experience of a successful changeover, or published works backing them up? OR are they, as I would assume, going with a bad idea through lack of imagination? Trollish as it may sound, lack of imagination in people who have big ideas is a bigger problem than people realise. Those who come to the idea first, and quickly, are those who are most unwilling to change (src: http://www.poppendieck.com/ Lean development techniques). It is exactly these types of personality which graduate towards management positions, pushing bad ideas until they are proven irrevocably wrong. Who are they anyway? Are they programmers themselves? (in which case I'd be inclined to dismiss their opinion on the basis they are naturally biased to one language anyway) or are they managers? (in which case I'd be inclined to dismiss their opinion on the basis they don't know what they're talking about)

  205. Re:The distinction between standards and uniformit by 16K+Ram+Pack · · Score: 1
    Using multiple languages for a given purpose just creates more of a legacy liability.

    That's the key distinction. It's also, to some extent worth thinking about Using multiple methods for a given purpose just creates more of a legacy liability.

    For instance, I once set down a rule for a .net programmer - all database access must be wrapped in a stored procedure or view. It was simply for consistency sake. That any database processing could be more easily understood as it would be in the SQL Server, and no-one would have to look in two places.

    In another company, no program reporting method was agreed. So, some people were firing out to Crystal reports, others were using a homebrew PDF generator, and someone else was using Excel. The key problem was not that anyone was wrong, but that there was an inconsistent approach which introduced problems in maintenance. In such situations, it can become a battle of egos, with each defending their option. It's up to managers to resolve such conflict.

    From what I understand, Toyota takes the approach of "consistent method", but makes sure that the method is constantly under review. If someone finds a better way to do something, they suggest it to the team, who consider its merits and then get on with implementing it.

  206. yes and no. by Macrolord · · Score: 1

    Yes.. and no.

    Developers will tend to use what they are familiar with. For example you unfortunately will get unix buzzheads writing perl scripts and crap for use in WinXP but the same effect could have easily been handled in a few lines of a batch file. been there and seen it...over and over again and that is just for the "little" stuff.

    The answer is not so much having a rigorous standard that all apps must be written in, but a flexible, yet defined, architecture that allows for the right things to be done in the right language. Unfortunately most companies don't have the IT managment support to create an "architectures and standards/strategies" team to help define and guide the devlopment process, it gets deferred to whatever the assigned programmers know how to code.

  207. That dosn't make any sense. by autopr0n · · Score: 1

    Sorry, I can't imagine a situation where one programming language can do something another programming language can't. There all turing complete, of course, but more then that, all the major languages have rich apis that let you do whatever you want. Yeah, it might be easier to whip up a quick'n'dirty web app in PHP then in JSP, but that dosn't mean you can't use JSP.

    The only reason I can think of to use multiple languages is to get quick access to an already existing module. If most of your work involves tying together pre-existing modules (where most of your code is already written and you just need to tie it together) you're going to need multiple languages.

    If the majority of the code is going to be written by yourself and your team standardizing on one (or maybe two or three) languages is a much better idea.

    I would prefer two or three languages with a standard way of communicating between them. Like for app logic, C++ for low level OS stuff, and maybe PHP for web stuff, with standard agreed upon ways of communicating (like JNI for java->C++, PHP's java extension for PHP -> java)

    Unless you're lucky enough to work somewhere were every programmer can use any language (not too many places, sadly) it's much better to have a standard, so everyone can follow along.

    --
    autopr0n is like, down and stuff.
    1. Re:That dosn't make any sense. by petermgreen · · Score: 1

      Sorry, I can't imagine a situation where one programming language can do something another programming language can't.

      well lets take a fairly simple system, a FPGA doing some digital singal processing. a PC for the user interface, network access and long term data storage and a 8 bit microcontroller (a pic or similar) tieing them together.

      for the microcontroller you are likely to have little choice but to work in a mixture of C and its assembler. For the FPGA and its simulation testbenches you'll have to use something like VHDL or Verilog. For the drivers on the PC (if you write them yourself) you will probablly again be forced into C. For the userland PC side you could use C throughout but it could get pretty painfull if you wan't a complex gui so you either use a middle of the road language like C++ or Delphi or you could mix C with a language like Java.

      fact is you can use C for almost anything but noone likes to use such a low level language where they don't have to.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  208. Actual solution by digidave · · Score: 1

    You definitely need to standardize, but don't do it on one language. I've been programming for a decade and I have yet to meet a language that did everything I could ever want a language to do.

    So, decide what sorts of different problems your programmers have to solve and which kinds of applications they create. If you have teams in charge of different areas then it's safe for them to choose their own language(s). For instance, your web programmers might want PHP, Ruby and Java, so let them do it. Don't let them pick some unknown language, though.

    Depending on how diverse your programming tasks are you can probably standardize on three or four languages that do everything you need. Say, Java, C, Perl and PHP. Maybe throw Ruby or Python in there as well, but having Perl, Ruby and Python is kind of overkill on similar languages. Also make sure you actually choose languages that make sense. Don't decide to throw out PHP because your web programmers can use Java because if their work can be done with PHP then they'll get more work done with PHP than if they used Java.

    --
    The global economy is a great thing until you feel it locally.
  209. Re:Learn From My Mistakes by archen · · Score: 1

    couldn't you just have netcat pipe it to your brainfuck program?

  210. There are perfectly good reasons to standardize by drdread · · Score: 2, Insightful
    I run an engineering division within my company. I have ~40 developers and a total staff of around 110. This includes biz dev guys, testers, systems engineers, production engineers (builds, installers), etc. We do mostly contracting work, with a small amount of licensed product sales.

    We have standardized on a single language (C#), and it has worked for us. We have a significant base of legacy code, including C++, Java, and Visual Basic. I can tell you from personal experience that 90% of the agony we endure is related to the legacy code, specifically maintenance of said code. Keeping enough people up-to-speed with skills to work in more than one or two languages is a tough challenge. Organizationally speaking, my life would be vastly easier if we could get down to 100% of our code in a single language.

    Of course, that's never going to happen, so we do try to retain the people who have experience with our legacy code base. We also try to assign new people to work on the legacy code whenever it looks like we're getting short of experience in any one area.

    I'm a coder by trade and experience -- this management stuff is definitely new to me. I have always personally enjoyed learning new languages/techs/whatever as a developer...but from an architectural and business standpoint, I can definitely point to reasons to standardize on a single language or development platform. We are transitioning to a product line architecture, where deliveries are based on off-the-shelf in-house components (new development as necessary, of course). Customers *hate* it when we tell them "after you install this, you'll have .Net 1.1, Java 1.5 and VisualBasic runtimes on your machine, along with all the support libraries, etc." They would much prefer a homogeneous environment with minimal footprint.

    There are also issues within a product line with mixed-platform development. Unless you work *really* hard on decoupling components at exactly the right places, mixing platforms makes it difficult or even impossible to develop a solid product line. I'm starting to think that it's actually impossible without going to a full-out service based architecture.

    So don't dismiss the idea of standardizing on a single language. Just because you're a developer and you want to play with the latest cool toys, that doesn't mean there is a defensible business reason to allow that.

  211. Company standardization always works. Or never. by brlewis · · Score: 1

    Maybe all companies should standardize on one programming languages. Maybe none of them should. Whichever it is, the last thing we want is a big mess where some companies do and others don't. Sheesh, let's have a standard here!

  212. Yipes - you picked two very similar buckets. by Anonymous Coward · · Score: 1, Interesting
    Ugh - in both cases you list two groups of very similar (quite high level; mediocre OO; imperitive) languages.


    Seems a better choice would be: Pick one from each group:

    • OO: Java or C# or Ruby or Python or Perl - well suited to web apps; and in general, this is where the bulk of your programming will occur
    • Low level: C is the only choice here, though C++ seems more common - Can create efficient extentions to any of the above as needed. Useful down to small embedded apps too.

    And then exceptions should occur for anyone who needs more advanced capabilities from their languages (Haskell, ML, the K language, Lisp, etc).
  213. Definetly true. by autopr0n · · Score: 2, Informative

    Unfortunetly there are not really enough non-halfwits to go around. It would be nice if all software could be written by CS-Gods, but that's never going to happen.

    It's always better to hire the best, and pay for it, but most bosses don't see the value. And some projects can be done by less then the best, if there simple enough (of course, for a non-technical person to figure out which are which are which isn't always so easy)

    --
    autopr0n is like, down and stuff.
  214. "Standardize" my ass by trandism · · Score: 1

    Just ask yourselves a question? On what lang would you standardize 2 years ago?? 5 years ago?? 10?? 15??
    standardization that changes every couple of years due to vast technological changes isn't standardization after all.. Who would choose C# 5 years ago as the standard?? Java 10 years ago?? It makes no sense..

    My $0.02

    --
    www.lemonodor.com A mostly Lisp weblog
  215. Standardize process, not implementation ... by Zero__Kelvin · · Score: 1

    Corporate level standards should be about the process, not the implementation. I headed up the SQA effort for a well known company that does embedded systems in the audio arena, but the points carry over well into a more general context. Given the variance of platfrom and already in use and tested code base, standardizing on a language would be ludicrous. Should a tiny piece of software running on an 8 bit microcontroller really be written in the same language as the multi-megabyte user interface tool? Of course not. If you don't pick the right tool for the right task, you completely throw away the fundamental premise of Software Engineering.

    Want to standardize? That is good. Standardize on thing like:

    1) What should be documented in order for a product to be released?
    2) What kind of comments (not format, substance) should be in the source?
    3) How you will handle configuration management (Clearcase? CVS? Cervasia?)
    4) What kind of code reviews will happen, and what documentation must be provide to prepare for them?
    5) How will requirements be gathered and approved, and how will that be documented?
    6) How will testing be done? What amount and method is appropriate? (need to avoid Godel incompleteness and minimize Heissenburg Uncertainty)
    7) On a project by project basis, what criteria will be considered during the process of selecting the language and associated development tools to be used?

    .. and that is just the short list.

    Unless all of your products are remarkeably similiar in all aspects, mandate of implementation method (e.g. language) is a VeryBadThing(tm). It shows that there is little understanding of what Software Engineering is, and a confusion between programming as a task performed during the implementation phase of an engineering endeavor, and programming/hacking as the beggining and end of software development.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  216. We tried and it was a disaster by johnnnyboy · · Score: 1

    We tried to standardize on Java but it turns out that java wasn't the best solution for all situations. It "can" theoretically do everything since it was cross platform in our environment.

    Since that disaster, we approached to using what we felt was the best solution for us for each project even though we were going to have a mixed environment. We used perl and python for testing, maintenance, web apps and utility scripts. Java was still being used for larger web applications. Like you wouldn't write a java application just to sent email reminders via cronjobs. Throw away scripts work well for that sort of thing. And now C# became the solution for us for building GUI applications.

    --
    "If a show of teeth is not enough, bite ... but bite hard!"
  217. Inter-language boundaries by Anonymous Coward · · Score: 0


    In my experience, inter-language boundaries have been a chronic problem that can eat up a lot of engineering resources.

    Examples: (1) having to link Pascal, C, C++, and others together in a single EXE; (2) maintaining a binary datagram layout in multiple languages; (3) re-writing the same functionality multiple times, each version tailored for the unique strenghts and limitations of a particular language.

    In every case, we would have had a very significant advantage if we had the luxury of a single language.

    We've been standardizing on C# for the past 2 years, and we're starting to see the tremendous benefits of having every piece of code being naturally compatible with all other pieces of code. It's starting to create a level of productivity that we have never seen before in the long history of our group.

  218. An old adage by Anonymous Coward · · Score: 0

    When your only tool is a hammer, every problem looks like a nail.

  219. OO in Old VB by autopr0n · · Score: 1

    Really was limited. And you couldn't just emulate it with function pointers like you can in C.

    --
    autopr0n is like, down and stuff.
  220. You'll pay for it by Aceticon · · Score: 1

    Today: Give absolute liberty to a "hacker type" to arbitrarily choose languages and libraries for any significant project without having a good reason for it.

    The rest of the life of that software: Pay for it by having bugfixes and improvements take 10x more time because of the learning curve for some obscure language or library or because some of the used libraries aren't supported anymore and have bugs.
    [Did i mention that the "hacker type" that did the project (and had his fun) is now long gone from the company leaving behind a string of applications, all done in different ways and all needing to be maintained?]

    In my book, as somebody that has been both in the making side (started as a "hacker type" myself) and in the taking side (as freelancer i often have to maintain/upgrade software done by said "hacker types"), no "hacker type" ever makes the grade past "junior software developer" before he/she has had to maintain his/her own software a year or more after the software's first version was in production.

    Unfortunatly our industry has many self-masturbating "hacker types" that never have to clean the mess afterwards

  221. One language to rule them all... by Glock27 · · Score: 1
    I've given the meta-topic of "should there be one dominant programming language" quite a lot of thought. My conclusion is that yes, there really should be one programming language used for the vast majority of projects.

    There have been historical examples of languages that hit large sweet spots of "general use". Fortran, C, Lisp, Pascal, Java, C#...all of these are usable for probably 90% of programming tasks. There has been a break from "true" general purpose languages with those that require GC, they aren't suitable for system development as delivered. (I do think there's a lot of interesting stuff to be done on the hardware end to make GC and memory systems in general work better.) Back to my original point, I think it would be unbelievably beneficial to the computer science world if there was a single dominant language for most general-purpose programming, to include system and embedded programming.

    How much money and time would be saved if most programmers could have a productive career only learning and using one language? How good would the compilers be if 90% of compiler companies focussed on improving and optimizing one language? How good would programmers be if they focussed on mainly one language for their entire careers? Java is trying to fill this niche, but I don't think it's a great fit, read on to find out why.

    I find it puzzling that so much focus is currently on VM oriented languages. With the focus on the hardware end of things on "performance per Watt", one should realize that software is an extremely important part of the performance equation. I think the days of massive, gratuitous abstraction for the sake of abstraction may be drawing to a close. I also think that VM based languages had better "walk the walk" of compiled language performance, or they'll become yesterdays technology (p-System Pascal all over again). Those who don't study history...

    All that said, for me if there is to be a single dominant language, it must be:

    • Performant
    • Safe
    • Portable
    • Extensible
    • Interoperable
    • All-level
    • Available

    I'll take these on one by one.

    "Performant" means "performs as close as possible to the theoretical maximum". A good starting goal would be 90% the performance of hand-tuned assembler.

    "Safe" means "it requires effort to blow my leg off". (Something like Java's security model might be added as a layer if necessary, but wouldn't be part of the base language due to performance concerns.)

    "Portable" means the usual thing - programs will compile on multiple architectures and operating systems, and produce similar results.

    "Extensible" means the language can be extended in meaningful ways without a new compiler. Lisp, Scheme, and Dylan are all examples of languages that provide a good deal of this type of functionality.

    "Interoperable" means that the language can efficiently interoperate with legacy and other code, e.g. an efficient C calling interface.

    "All-level" means that, ideally, the language should naturally lend itself to systems running the gamut from small, possibly hard realtime, embedded systems, to the largest distributed systems. It should well address all problem domains from numerics to string manipulation to parallel processing. Ideally, it should provide a subset of some kind that works well as an interpreted scripting language, so that once again the cognitive overload of having to learn and remember many computer languages is reduced.

    "Available" means that not only must it exist ;-) it must be obtainable at low or no cost. Many very good languages *cough* Smalltalk *cough* have died on the vine since few wanted to spend the money to play with them.

    I've been looking for a reasonable fit to these criteria for a long time. The best thing I've found so far is Dylan. It's not perfect, but it is quite good. It even fu

    --
    Galileo: "The Earth revolves around the Sun!"
    Score: -1 100% Flamebait
  222. Toolshed by umbrellasd · · Score: 1

    "John, I want you to build me a house. And I want you to build it with just a hammer."

  223. Multiple Standards by Sebastopol · · Score: 1

    One approach my company uses is multiple standard languages.

    Core tools by design teams use C/C++, and define their own strategies (for example, banning inheritance).

    Flow design teams that use scripting languages allow Perl 5.61/5.8 and Tcsh. No Bash, Ruby, Python or Java: there are too many people working on this code to achieve working competence in so many langauges, so focus on two. Programmers are not allowed to write official flows in anything but Perl or TCSH.

    There are two simulators written in LISP, but these are third-party tools, and the people who own deployment of them go to the ISV site for an intense training program (in LISP and the tool).

    So basically, we standardized to 3 major languages, and 1 due to ISV constraints.

    And it still has problems. People that have more breadth in Perl do things that confuse the hell out of noobs (and noobs are a part of life, folks!). In general, I like it, because it means I don't have to master 12 languages, just three.

    --
    https://www.accountkiller.com/removal-requested
  224. DOE by Anonymous Coward · · Score: 0

    It depends on your environment.

    If you have a bevy of Java programmers, and you're developing web-centric B2B applications, mixed environments don't make sense. However, if you're a game developer that also provides web-based content and features (such as Clans in some MMORPG games) then a mixed environment makes much more sense (C++ for game dev, Java and/or PHP for web dev).

  225. Re:The distinction between standards and uniformit by iabervon · · Score: 2, Insightful

    The original question, however, said they were considering standardizing on a single language, which is a dumb idea. It sounds to me like they're conflating the good idea of having standards with the bad idea of having a standard that doesn't respond to requirements.

  226. Like with natural languages... by j.leidner · · Score: 1
    The debate about standardizing is the same when we are talking about standardizing on natural languages (e.g. English) in an international corporation. Usually it makes sense in the majority, but not all, of the cases, according to Pareto's (80:20) Law.

    If you are a desktop apps or embedded library company, you might want to standardize on C++; if you are a server-side enterprise software company, you will want to standardize on Java.

    But there will always situations where one language is not the best choice, and that choice should remain developer's choice and not a management decision.

    Important factors in the standardization debate are: is the language an ISO standard? Does it have tool support (compilers, libraries) on all relevant platforms? Is the language mature? Is the language general purpose? Is the language difficult to learn? Does the language have a large enough user base?

    In the EU, there are many official languages, and this diversity a political statement in favour of a pluralistic society and multi-culturalism. But it comes at a cost: a large budget is waste...erm spent on translation. Same holds for programming: for a while I have developed Java library, nowadays I use a lot of C++, and get what, I have found myself re-implement my own libraries in another language, so bear in mind the cost benefits for reuse.

  227. Project standards yes, company unlikely by Anonymous Coward · · Score: 0
    Making a "Project Standard" is a good idea. Making a "Company Standard" is only a good idea if the company is so small that it was only one or two projects or all of them are the same type of project. For example what if youmake the "standard" to be Java and then next year you start a project to build a native Macintosh app and your standard says you can't ise Objective C.



    Just lettin every one do what he wants is just as stupid. You'll get a big mess. The best way is that the design teem for each project pics the best tool for that job. You might add some guidance that "best" should strongly concider ease of meaintancance.

    Butif you have a smaller company that only did projects that were all very much alike then they could standardize. Even then you need to look at eceptions. What if the standard is C++. Does this mean you can't write a shell script?

  228. It's people that matter. by Anonymous Coward · · Score: 0

    Different OSes, Langauges have different advantages...
    Choosing one is a mistake. Excluding some for certain uses
    however, may make sense. It should be for a good reason like
    a security requirement. If it later meets the requirement it
    should be avialable.

    Systems sometimes do a useful thing that should only be done once.
    Those systems should export a stable API in addition to that nifty
    web form thats always there.
    So the department that needs an extra field can call _that_ one and
    its own function.

    This real problem requires leadership and inter-department exchange of ideas/people ect...

    Its the exchange of people and ideas that is important _not_ that
    everything is done in one langauge. You will still get people doing
    things more than once even if you have one laungauge. (This is not
    even bad necessarily depending on what the function does as it may make
    a future API changes _less_ disasterous) Additionally, if one codebase
    rules them all ... you may have to merge both ways to do that thing into
    one codebase! (ick)

    So the point is. Make sure people meet, give talks to each other's
    departments or sit in on each other's meetings, know thier peers or
    counterparts names, ect.

    Thats what matters.

    If you must standardize something. Have central resources _available_
    using open standards to foster interoperability. A central LDAP server,
    a central CA, KDC, SQL server. Don't force people to use them. Reward
    departments and people that do.

    Garick

  229. same logic goes for natural languages by Anonymous Coward · · Score: 0

    It's a funny thing. Multi-language proponents are right, on the face of it. But human languages have the same kinds of limits as programming languages. Some are naturally better at discussing certain ideas, or at creating certain atmospheres. To see why companies want to standardize on one programming language, ask yourself why you only use one natural language in your thinking and speaking. Why not add an Asian language to your toolkit? A modern-ish language like Esperanto? The same personal limitations that cause you to be stuck with English (at least as you read this!) are the personal limitations that keep programmers from being fluent in multiple programming languages.

  230. Standardization == less wages by morryveer · · Score: 1

    There are lots of reasons to attempt to standardize on one language, but I'd be wary of it. But not for the reasons you'd expect.

    The primary reasons for standardization given are typically future compatibility and cost. Future compability is a valid reason - if the language you're using is going out of use, eliminating it from your systems allows you to continue to use your systems, plain and simple. Your system must survive.

    Cost is a different issue. If you are using language X, where the vendor charges ever increasing $$$ to supply the compiler, a switch may be necessary. But in some of the large companies I've worked at, the standardization and cost savings do NOT come from these areas. They come from decreased cost of labour. i.e. programmers become cheaper.

    In a company of 300,000 , if they could somehow standardize on Java as THE ONLY language they use, it would be of huge benefit to the company. they could move people from one project to another so much easier. Hire directly out of college. develop standard costing metrics and procedures. but where do the savings come from? they no longer need the C++ and cobol programmers. The value of any individual programmer goes down - way down - because they can so easily be replaced. And it would have a ripple effect outside the company as well. Java programmers would be dime-a-dozen.

    I'm all for efficiency. Heck as a CS I think it's ingrained. But I recognize my value comes from the skills I have that other's DON'T have. Not the commonality. Specialization can mean unemployment, but it also means a limited work pool. and reasonable wages.

    This doesn't apply to small companies, since they don't have the ability to drive down their internal costs by standardization, other than eliminating positions that become redundant.

    if they want to standardize, tell them to standardize on a language: ENGLISH. Seriously. Next document that get's published must check all words against the Webster dictionary. Any acronyms or industry specific jargon must be removed. Then think about standardizing your programming languages. It'll look completely different then.

  231. Standardization? Maybe if you have 10 employees by default+luser · · Score: 1

    The company I work for is a Fortune 500 defense shop. Standardization would be a terrible thing. If you can think of a language, we probably use it.

    C / C++ / Ada / Fortran / Java / C# / Tcl / VB / Pascal / Matlab are just the languages I've seen in use PERSONALLY in the last 5 years here. I'm sure there are more that I havn't encountered. And no, having all these different languages hasn't caused a problem, because it's fairly easy to retrain people on new languages.

    Standardizing on one language not only kills your flexibility, but it artificially stunts your room for growth. If you standardize on one language, then how do you decide when it's best to jump to the next language?

    In my company, some projects are at the fore-front of new languages, while others use older, more established languages. It depends a lot on what the customer wants, and how much you can reuse previous projects. Now, that's not to say we havn't "standardized" in a way...we've naturally gravitated toward C++, because we are an embedded house. This gives us most of the benefits of an organization that has totally standardized on C++: lots of experienced C++ coders, and lots of reusable code, without being locked-in.

    --

    Man is the animal that laughs.
    And occasionally whores for Karma.

  232. Its a simple debate by dilvish_the_damned · · Score: 2, Insightful

    One that we have here at times, only under differing guises. To end the arguement early I would ask "Why cant we just do everything in Perl?", and the response would be "Perl hardly makes sense in a multitude of situations, for instance you wouldnt use perl to build a packet router".
    And I would say "and C hardly makes sense when you want a scriptable telemetry data simulator". So we use at least two languages here as long as you dont count the cases where we use C# for win32 gui's, java for some corba interfacing stuff, VB for program/device monitoring (on win32), etc.
    There is no 'silver bullet' language so why would you force yourself into treating one like it was? Any time you might have saved by not having to learn a new language will be eaten alive by the time spent trying to shoehorn a problem into a your chosen languages paradigm.
    Really, all languages suck, some less than others, but its really contextual.
    To really break the arguemtn you might say something like "When we standardize on a language we will also standardize on the types of problems we can address competitivly".
    At least thats the way I figure it.

    --
    I think you underestimate just how much I just dont care.
  233. More mixing of metaphors. by Valdrax · · Score: 1

    The lion tamer that runs into the cage armed with nothing but an innocent air and a blindfold doesn't stay a lion tamer for long;-)

    On the other hand, you could choose not to work with a feral beast that will bite your limbs off for the macho thrill of it and get a nice loyal dog that does what you tell it instead. YMMV.

    --
    If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
    1. Re:More mixing of metaphors. by EnderWiggnz · · Score: 1

      when you need to stuff your shit into 16MB, and keep a full XServer, you go with the gnarly, nasty, tooth-fille tiny, quick beast.

      diff'rent strokes for different folks.

      --
      ... hi bingo ...
    2. Re:More mixing of metaphors. by Valdrax · · Score: 1

      So C++ just went from the king of the jungle to a nasty little shrew?

      --
      If it's for-profit but free, you're not the customer -- you're the product (e.g., the Slashdot Beta's "audience").
    3. Re:More mixing of metaphors. by EnderWiggnz · · Score: 1

      stop talking about my wife like that.

      kidding... kidding honey... don't hit me with that ...

      --
      ... hi bingo ...
  234. Stupid by elnyka · · Score: 1

    This whole 'standarization' thing is just plain stupid the way most companies do nowadays. And here is why: it makes almost no difference in standardizing stuff to one language if your programmers are shit.

    At work we have all this apps written in CF and Java, and most of them are just shity work done by software engineers with skills comparable to a sophomore student. So take a shitty CF application and translated to java by a shitty programmer, and what you get? A shitty java application.

    Right now I have a whole bunch of apps written in Java, a lot of them converted to it from CF in a stardarization effort. I would have preferred that these morons never had touched anything. What's worse (and which I've seen in several places already) is that you end up having shitty java apps, some of them poorly written to run on tomcat, others poorly written to run on weblogic and so on and so on... ... so we end up with standardizing on one language to produce shitty apps that run in different app containers. And don't any of you tell me that a WAR can be deployed in any J2EE compliant container. Maybe an example pet store WAR can, certainly not a complex app, and much less if it's written in a pretty shitty way.

    My take, based on developing, admin and support experience is "if it ain't broke, don't touch it." But in this world full of shitty programmers and dev team leaders, that will be like wishing for world peace or something.

  235. It isn't the language, its how you use it. by exdnc · · Score: 1

    Standardizing on good coding techniques and enforcing them is at least as important as the language its written in. It could be that some languages lend themselves more readily towards abuse then others (Perl vs Java?), but bad code is a nightmare wherever it shows up.

  236. Business reasons for decisions by QuestorTapes · · Score: 1

    Standardizing on anything (language, IDE, RCS, anything) should be done for a clear business purpose. The first question to ask is "what business purpose are we trying to accomplish?"

    > The pro-standardization guys say that a single language (like Java) will save everyone time.

    What is the current cost of lost time to your business? How much time will you save by going to a single language, and what will the dollar return be? If you can't answer these questions, then standardization -for the purpose- of saving time is premature.

    > The anti-standardization guys are advocating a mixed environment (of
    > languages like Python, Ruby, and C#), and argue that the whole discussion is
    > as silly as a manufacturing firm standardizing on screwdrivers for all their screw/nail/glue fastening needs.

    How many types of needs has your company had, historically? Do you write 2 or 3 different types of applications, or 20 or 30? What procedures have been considered for allowing a new language when needed? Who reviews the proposal? How long will it take?

    It's useful to choose standard tools, standard procedures. It's also a common cause of failure when the company can no longer react quickly.

    I have never know a successful firm that standardized on -one- language. I've known several that standardized on a few, for different purposes. I can't honestly say that, on average, they were more successful than the many successful firms I've know that never standardized on programming languages at all. As far as I can tell, standardizing on a few languages had no impact at all on the business.

    One final thought; in my experience -language- is one element, and not the most important element, of application development. If your company haas effective development standards that deal with most other aspects of software development, feel free to look at language. If you haven't, -don't- start with standardizing the language. Start with standardizing the higher level elements of the development process.

  237. It depends on many factors by Anonymous Coward · · Score: 0

    I've worked in a larege software company and they didn't standardized on the programming language but standardized structure and methods. This is a way if you many hardware platforms, operating systems and programming languages an person on another platform can have an idea what they looking at.
    I currently work in small shop and we use primarily open source and I noticed that each programming language has it capabilities and pitfalls so I use many of them.

  238. Narrow??? by severoon · · Score: 1

    I don't think the problem space addressable by a particular language is all that narrow. For instance, at my company we write web-based, rich-client, distributed enterprise software that helps companies run marketing campaigns. One of the products we sell is primarily written in C++, and it's a nightmare compared to Java. Turns out that if "networked enterprise app" turns up in your list of requirements, Java's going to be a better bet than C++. The functionality of that code has not increased nearly as much as the Java product I work on. While those guys twiddle bits and try to find memory leaks, we add features. Several of the C++ programmers have realized this in the last year or two and are all trying to transition over to the product I work on because they're tired of the spaghetti that comes with overtaxed, underfunded development. The business is unwilling to devote the resources to their project because, even in their hey dey when the product was first developed, they couldn't add features as quickly as we can (mysterious linker errors, non-standard threading tools, memory problems, etc).

    The management consoles that run each of our products are written in VB. We had one guy that did that, and wrote the installers for our software, which required a smattering of Java, C++, and VB working with InstallShield (I think--I don't really know, I've never looked into it, but that's my impression). He left. Now we have to find someone to replace him that can and wants to do all of those things, which is impossible. So we've made the more sensible choice to obviate the need for such a person by redoing our consoles in Java. This will not only make the code easier to maintain, but it will allow us to add a whole raft of features we couldn't reasonably add in VB.

    I've worked for big blue-chip companies to small startups. I've done consulting. The one constant I've seen of successful business is that a well-run business is trying to solve a problem or related set of problems. Most of the time those problems, if well-defined, map to a solution space that can be addressed with a limited range of technology that is intended to work in that particular space--if they're not, the business is split into divisions and those divisions are run separately, as when I was at GE.

    Sometimes companies choose technologies that aren't designed for that solution space because they're familiar with it, and that's usually a bad mistake, but more frequently, and worse, I've seen companies adopt the approach that everyone at a low level should make the decisions on a case-by-case basis, as if the business unit isn't addressing a problem domain that is in some way a cohesive whole. Every company I've been at that does this winds up like my current company...they eventually bump up against the limits of the inappropriate technologies and run into manpower and hiring constraints that could have been avoided.

    --
    but have you considered the following argument: shut up.
  239. Depends Again by severoon · · Score: 1

    What is the set of problems the business as a whole is trying to solve using software? Tell us that, and maybe someone can take a stab at this question.

    --
    but have you considered the following argument: shut up.
  240. Re:What about ADA? [OT-ish] by Anonymous Coward · · Score: 0

    I know the parent is talking about the programming language ADA, but when I first saw the title, I thought about the Americans with Disabilities Act.

    What if some programmer suffered a head trauma and is unable to learn the new language but was still able to function at a proficient level in his language of choice. Wouldn't it constitute discrimination to force him to use the new language and then fire him for incompetence?

    Think about it: we're required to have elevators in 2-story buildings because it's discrimination to say the guy in the wheel chair can't have an office on the 2nd floor. Part of the argument goes: what if someone gets in a car wreck and then becomes incapable of making it up to his/her 2nd floor office.

    So can't I say "you hired me for my knowledge of C, and now you want to standardize on Java; therefore, I'm going to sue under the ADA!" ?

  241. Problems Are Interesting, Languages Should Not Be by severoon · · Score: 1

    I don't see the relevance of your question about my assembly skills. The point is, I could program in assembly in industry if I wanted to, but that doesn't mean I'd like a job doing Java and assembly. It's nearly always more productive to specialize in one area, know the hell out of it, and do that.

    Incidentally, as it happens, by pure chance alone, my experience with assembly is relevant to this discussion; I worked with assembly/C/Objective-C/C++ for a year for an R&D-type project and wrote an operating system. An OS is an example where the problem domain maps to a solution space that must cross all levels of software capability (by definition, in fact). In that case, it was appropriate to have people that devoted time to each--at least until the project got large enough to allow segmentation of skills (it never did).

    Basically, I agree with you about Java. It is a pretty boring language. Programming languages in general are boring. I've probably written in over a dozen and I would claim some level of expertise in half a dozen. Does that make me a better Java programmer? You bet! Does it mean that my current job should exercise all those languages? Absolutely not! The desire of some coders to keep all their language skills sharp misses the forest for the trees (in possibly the best application of this cliche I've ever used). If you're focused on languages, you're not focused on problems. In my way of thinking, it's the problems that are interesting, not the tools, just as a concert pianist will tell you it's the music that's interesting, not the piano keys.

    In fact, I'll go one step further. I *like* my programming languages boring--boring and predictable. It's the excitement caused by all the memory leaks and mysterious linker errors that make C++ such misery. If you're not finding Java a fun language, but C++ is, it's perhaps because the problems you're solving are so boring you need to erect artificial obstacles to make it interesting and appealing to your underutilized brain.

    If a business is well-conceived and well-run, the problems that your business unit is focused on solving ought to be related enough to solve using a limited set of technologies. This is basic KISS principle stuff, I don't understand why so many coders think their field is somehow exempt...it's like the great Einstein said: make it as simple as possible, but no simpler. That means it's probably not a good idea to chuck in every technology under the sun if it's unnecessary.

    If I go to work for a telco company, they have a couple of problems to solve: they want to provision services ordered by their customers, they want to bill their customers for those services, and they want some kind of on-line portal that allows customers to do account and order management. I should not have to be a Renaissance Man of Technology in order to contribute to that company's fairly tight set of goals. It's networked, enterprise software, there's a web component, so it's a Java stack: XML, EJBs, etc. You might like C++, you might like Delphi, you might like Scheme--they are simply not appropriate for such a business. Most businesses are like this--most businesses do not do small-scale OS-type projects that have to cross several solution spaces wrt technology.

    In the past I've worked for such businesses, and I have felt very important as I was recognized as a Renaissance Man of Technology--I had little trouble moving from one to the next, and it was a very satisfying space for me to be in praise-wise and during 6-month review time. The rest of the time it wasn't so great--I spent more time dealing with integration problems that were a function of our technology choices and less time dealing with problems related to business logic that would actually make customers happier, bring in more revenue, and take over the marketspace. And that same skillset that made me such a boon to my bosses was required of *everyone* I worked with. For you developers out there: how many places have you worked where every last person was compet

    --
    but have you considered the following argument: shut up.
  242. Variety != Good by severoon · · Score: 1

    Variety does not always mean good. For instance, if your job includes new and interesting problems and that's the variety being added, great. If your boss wants to add to that list dancing like a monkey while he throws golf balls at you, that's certainly an increase in variety, but I would not consider it good.

    Still, it would be a tough choice between that and going back to C++ from Java.

    --
    but have you considered the following argument: shut up.
  243. More about erlang? by aristus · · Score: 1

    Howdy -- I'm interested in writing apps with Erlang/OTP as well. Any tips? It appears there is a close-knit community and lots of experience in clumps here and there, by not much published material. Cheers, aristus@gmail.com

    --
    Sometimes seventeen/Syllables aren't enough to/Express a complete
    1. Re:More about erlang? by root-a-begger · · Score: 1

      aristus,
      I started looking at erlang in Fall 2004. Its my first serious try at functional programing so I consider my a newbie in functional idioms. However, erlang is not purely functional and is accessible to people with OO experience.
      I was a lurker on the erlang-questions maillist for 6 months before making a final decision to start building my apps with erlang. The maillist community is very solid and should be considered a base for your ongoing adoption of erlang.
      Here is the maillist and faq link:
      http://www.erlang.org/faq.html
      If you download any erlang install http://www.erlang.org/download.html, lots of docs are included. There are also some docs not included:
      http://www.erlang.org/doc.html
      I consider this doc a must read for anyone starting erlang:
      http://www.erlang.org/download/erlang-book-part1.p df
      The http://www.trapexit.org/ site is a very good portal for docs and the forums are a bi-directional link to the erlang-questions maillist.
      The howtos are good to start with:
      http://www.trapexit.org/docs/howto/
      If you will develop anything requiring a web server, go directly to http://yaws.hyber.org./ Mostly good docs here. Yaws is the most excellent web server written in erlang.
      jungerl is a repository of mostly small erlang libraries. Lots of good tools and example code in here:
      http://jungerl.sourceforge.net/
      ejabberd http://ejabberd.jabber.ru/, a jabber server in erlang, is an excellent example of how to put together a large distributed web based system in erlang.

      nothing is perfect, but erlang's benefits to me far outway its rough edges...hopefully, you will experience the same.
      good luck...

  244. Standardize on Languages--and on fasteners by John+Murdoch · · Score: 1

    Hi!

    I work for an electronics manufacturing company--and develop software. I'd recommend standardizing on a very limited number of development tools, and standardizing on a limited number of fasteners.

    First, the development tools
    There have been 3.2 zillion posts already arguing whether to use a single language or to use any language anybody wants. That's not really the point: what you need to consider is the number of technologies, or skill sets, that you will support. Competency in a language is a skill set--but so is competency with a database server (in addition to the server's database language, like Transact-SQL or PL/SQL), or competency with different libraries or third-party tools. How you decide which skill sets are important is where you demonstrate your wisdom and skill as a manager--but it is crucial to your long-term survival to keep that number as low as possible.

    If you've been around application software long enough, you've probably been on a project that included a bunch of this-will-save-so-much-time tools--custom controls, third-party libraries, etc. And then discovered that your team was totally, utterly, fsck'ed when you went to release version 2, and discovered that the libraries had changed, the custom control vendor had gone out of business (or his mother made him get a real job), etc.

    It isn't just the risk that the third-party tool won't change with your product--you are also dependent upon the one or two people on your team who mastered that particular tool. If they're gone, you now have to figure out who to task with taking over responsibility of being the GridDotWhatever guru. The more of these skill sets you have to support, the tougher it is to manage a team--and the more bodies you need to keep on a maintenance staff when it is time to scale the development of that product down.

    In short--count up all the skill sets your company uses, and do what you can to reduce the number. That's a good strategy.

    Limit the number of fasteners, too
    The original post includes a comment that standardizing on a language would be just as silly as standardizing on a particular fastener. Well, guess what: you should.

    In the real world of manufacturing there are a zillion bits and pieces that go into a product line. If you can use the same micro-processor across a broad range of products, you can achieve economies of scale in purchasing, and you can achieve economies of scale in other areas, like writing code for that particular micro family.

    The same is true in lots of other areas--all the way down to screws. If you standardize on a particular screw (say, for instance, 4mm metric-threaded hex-heads of various lengths) you can achieve substantial economies of scale in purchasing, but in all of your manufacturing operations. Machine tools can be fit with bits to drill appropriate holes, robots can be equipped with nut drivers for the 4mm hex head, and so forth. If you permit the kind of anarchy in your mechanical engineering department that the OP's colleagues think is good for programming, you'd have a disaster on your hands.

    There's an engineering point, here
    There are people who think that software is a form of engineering. I'm not one of them--and this article is a good example of why. There is lots that we can learn from engineering--and there is oodles of stuff that real engineers have known and practiced for a long, long time that we still don't know enough about to even ask. But that's another rant for another time....

  245. Think Bigger by sheldon · · Score: 1

    One of the recent buzzwords in the industry is Service Oriented Architecture.

    That is, if your business logic is wrapped up in various services and events, things you can publish and subscribe to... something. It doesn't matter whether it's written in Java, C#, or COBOL.

    I'd say anybody who thinks code reuse involves cut-n-paste, has no coherent vision.

    Standardization lasts for a while. Then the paradigm changes. I remember back in 1998 hearing some old greybeard rant about how all development at the company was done in COBOL on the mainframe. That was the standard. Anything else was verboten!

    He no longer works there, thank god.

  246. Burden of proof by AnotherBlackHat · · Score: 1

    First a comment;

    I have never seen a company that believed standardization of language was an important issue and stayed in business longer than 3 years.

    That said, you are already probably doing something at where you work.
    The new guys should conform to what everyone else is doing.
    If they want to do something different, they should be the ones to provide evidence that the new way will be better.

    Ask them for it.

    -- Should you believe authority without question?

  247. .NET Framework is an international standard by tepples · · Score: 1

    [I object to .NET because] Gee, what if I have to write software for something other than an Intel-based PC?

    Like Java technology, the Common Language Infrastructure is based on a virtual machine that may be ported to any architecture, memory permitting. Or are you talking about systems whose RAM Is measured in kilobytes?

    software should be written in languages that are based on international standards.

    The CLI is an international standard (ECMA 334), and the C# language is another international standard (ECMA 335).

    1. Re:.NET Framework is an international standard by Detritus · · Score: 1
      ...the Common Language Infrastructure is based on a virtual machine that may be ported to any architecture...

      "May be ported", not "has been ported". I used to write software for the UCSD p-System, which used a virtual machine. They made a genuine effort to port the p-System to many different architectures. You could run it on an LSI-11, Apple ][, Motorola 68000 or IBM PC. How many system has the complete .NET framework, including compilers and libraries, been ported to?

      --
      Mea navis aericumbens anguillis abundat
  248. Language usually isn't the barrier by c0d3h4x0r · · Score: 1

    Usually the programming language barrier is only a minor one. As long as you generally understand pretty common computer science and programming principles, you can pick up on any new language relatively quickly.

    Usually the much larger barrier (to employees within a company switching to different projects/products) is all the "insider knowledge" about the architecture of the codebase, build process, runtime architecture, awarness of the existence of shared libraries/functions in the codebase that should be picked up and used rather than reinventing the wheel, etc. In my experience it can take anywhere from 6 months to 2 years for even a very competent and experienced developer to learn all that stuff well enough to be fully productive on a new codebase.

    Also, in my experience, the biggest way to combat that is not with documentation, but through quality face-to-face education and quality code analysis/understanding tools such as Source Insight. Anything that allows you to more easily grep the architecture of the codebase and find existing helper functions across a huge codebase is a major help. And it's also my opinion that whenever a new project or development cycle begins, it would save all the newer developers a lot of pain and time if the seasoned developers on the project/product would proactively host educational training sessions outlining the high-level architecture of the code/build process/etc.

    --
    Moderator hint: a comment is neither "Flamebait" nor "Troll" if it is true.
  249. So use Gtk# by tepples · · Score: 1

    at which point they shut them down with patent infringement lawsuits.

    Have you read Mono's page about this issue? Microsoft has already permissively licensed any patents that are used in the portions of the .NET framework that have been submitted to ECMA. The worst thing that could happen is that ASP.NET, ADO.NET, and Windows.Forms might get yanked, but from what I've seen so far, most of Windows.Forms is similar enough to prior art. Or if you are publishing your own programs for the .NET framework, you can use Gtk# on Windows too.

  250. Mono supported platforms by tepples · · Score: 1

    How many system has the complete .NET framework, including compilers and libraries, been ported to?

    It may not yet be as widespread as the UCSD p-System was at its peak, but it's getting there. See Mono supported platforms.

  251. language is like a tool by wikinerd · · Score: 1

    you don't use a hammer for inserting and removing screws, right? You should also not use VisualBasic for developing an operating system, and you should not use Assembly for rapid application development. Languages are like tools, so you use the right tool for the right job. I would also go even further to suggest that we should use multiple languages per software project, when possible. Obviously I am against language standardisation.

  252. Project-wide versus Company-wide.... by Cryptnotic · · Score: 1

    There's a difference. Projects should standardize on a set of languages/systems appropriate for the requirements. If the system is a web application, it does not make sense to use MySQL for some things and Microsoft SQL Server for others and to mix ModPerl and ASP and Java and C or C++ CGI applications all together. You'll end up writing tons of buggy interface code to pass data around. So at a project level, it makes a lot of sense to standardize on what tools you will use and to not add tools without good reason.

    At a company-wide level, it makes less sense. Some projects may need to be as fast as possible and will need to be written in C and assembly and tuned for particular hardware. Some projects may be a web server application that just needs to run on any IIS server with SQL and only needs to handle 100 transactions per minute. Maybe there is a project like a user application that needs to run pretty reliably on any Windows XP machine, but doesn't need to run very fast. Maybe there is a project that just needs to translate or reformat large amounts of data, but it doesn't matter if it takes 1 hour or 1 day, as long as it runs. There is a lot of variation in what may need to be done and each project should choose the right tool for the job.

    Btw, developers can pick up any language pretty quickly. They'll quickly learn the tricks about why one language is more suited to a particular task or development style (object-oriented, procedural, functional, et cetera). Ultimately, you'll end up with better more experienced developers.

    --
    My other first post is car post.
  253. Re:Problems Are Interesting, Languages Should Not by somersault · · Score: 1

    That is a very good point, and I realise that I am being hypocritical in not liking Java after not using it professionally, when asking if you didnt like assembly because you hadnt used it professionaly (or maybe that wasnt so much hypocrisy as just checking that you hadnt had the same experience as me). Thankfully I dont consider C++ so spectacular that I use it for everything.. I learned how to develope apps using Delphi before going to uni and still prefer to use Delphi just because it's quick and it works (though it does have some quirks).

    Also I'd just say that building an OS doesnt necessarily 'cross all levels of software capability', as you can design a basic OS, then have third parties add on stuff like 3D libraries and all the device drivers. So building an OS doesnt even necessarily cover all levels of hardware or software, though it maybe could if you were someone like Apple.

    And going back to your saying that problems should be more interesting than the languages, that again is one reason I didnt enjoy university at all. EVERYTHING seems to be about the web these days, and I have always had an interest in networks, but if I was going to code a networked app I'd prefer it to be a multiplayer game rather than the web front end stuff we were doing at uni - anything at all to do with the internet seems to be spectacularly boring to work on. I always tend to wish I was a coder in the 80s! - when code had to actually be written well to get the best out of hardware etc.. these days I expect most people write quite inneficient algorithms etc and expect the computer to do the hard work.. maybe I dont give people enough credit though. And I know it's possible to write efficient code while still making it readable if you document it well.

    --
    which is totally what she said
  254. How does Erlang compare with Eiffel? by NOPteron · · Score: 1

    Jeff Duntemann called Eiffel "ada done right", and he's a guy I trust for knowing what he's talking about ( my first "it works for me" assembler book was wrotened by 'im ), and he found the programming-by-contract paradigm and the .. sorry, but the concept-shape in my memory translates as "sustainable-correctness" .. of it to be worth-getting, and what I know about Erlang could be printed on the period at the middle of this sentence ( yes I've just glanced at erlang.org's beginner-stuff ), so I'm asking you which should I learn, for what process-reasons, for what problem-domain-reasons, in essence why would you recommend Eiffel over Erlang, and why would you recommend Erlang over Eiffel ( I want to get your sense of where each is better, since you've very-seriously considered Erlang, see )?

    I'd decided, already, to standardize me on Ruby ( agility & clarity ), Eiffel ( for high-integrity infrastructure that needs to be compiled rather-than scripted ), possibly OCaml ( just because what I've read of-it indicates it's good for engineering type problems ), and possibly Pliant ( No Weak Points, rather-than good-for one particular kind of problem/domain or kind-of-thinking. . . )

    I want at-most 4 languages, orthogonal to each other ( enough ), to clarify my mind, so I'm concentrating on the problem-solution rather-than wrestling-with arbitrary or bizarre language curlicues, and therefore have much-greater probability of rooting-out the problems, wrong-assumptions, wrong-paradigms, etc, as compared-with ones who are caught in lower-level-thinking, or being "caught in the groove" of the technology, if you see what I mean. . .

    This is sorta like my decision to standardize on English, Japanese, Arabic, and UML2, since one is structural-implication, one is indirectness, one is emotion, and one is schematic, and if one's mind is in the habit of knowing in these four profoundly-different kinds of ways ( and in not being raptured by roccoco detail ), then one isn't very likely to be thrown by some problem-assumption as others are, eh?

    ( FYI, I'd be using http://www.pimsleur.com/ language-training for the human-language stuff, since I've already experienced how it blows-away the conventional competition, for effectiveness in training/learning. . . they're awesomely good, in how well they work. . . )

    --
    IPTables enhancement Fail2Ban bans cracker-login's
    1. Re:How does Erlang compare with Eiffel? by root-a-begger · · Score: 1

      Very interesting post!
      I haven't touched eiffel since early 90s so I can't give a fair comparison. In regards to my wide-ranging research on choosing a programming language for my current work, I didn't consider eiffel too strongly as I am drawn more to dynamic typing or at least strong type inference (see scala, http://scala.epfl.ch/ ). I realize that dynamic typing generally makes it more not less difficult to deliver a provably correct system. erlang takes a unique approach to this by the way it handles errors. The programmer is encouraged to not program defensively and to let the erlang system handle errors for anything the programmer did not explicitely expect. This is a unique approach and when tied to a dynamic language seems to work well.
      I find great qualities in many programming languages. Ruby, Python, Java, Smalltalk, C++, Haskell, OCaml all have their place from a language perspective.
      However, I wanted more than a language but a complete system with distribution, database, web server, fault-tolerance all built in.

      So far as langugage design goes, I am very found of scala. The team behind scala created a syntax that melds pure objects, pure functions and type inferencing without clutter. A remarkable acheivement. However, scala is so new that it has few of its own libraries. I was tempted to embark on creating the frameworks/libraries I needed for scala, but I wanted out of the framework business. Erlang has an evolved syntax and is not without its quirks and inconsistencies. I have been able to put my purist attitude aside by being grateful for the comprehensive system it provides.

      I can tell you this: What initially attracted me to erlang was the ejabberd project http://ejabberd.jabber.ru./ ejabberd has most of the qualities of the type of software I expect to build. This includes massive concurrency, security (in the form of process isolation and shared nothing data structures), fail-over/distribution, multi-database support, html templating for the web ui. ejabberd accomplishes this with a much smaller code base than comparable Java solutions. After studying the ejabberd product, I started to take erlang more seriously...the rest is history.
      I recently completed my first large project for a customer using erlang (including the latest ajax stuff) and have received most of the benefits I thought I would receive.

      BTW, I have been living in Shanghai since 2000 and have found the pimsleur madarin tapes to be the best. Yes, a different approach can mean so much more than just more content.

      good luck...

  255. We Tried Once by Anonymous Coward · · Score: 0

    4 years ago my manager decided that we should standardize on a single programming language. She wanted it to be Visual Basic, since she felt it was easier to learn, and therefore there were more VB programmers out there. I was (and still am) the only developer in the company, but instead of feeling threatened I made a point of voicing my concerns, and then agreeing to do whatever she decided.

    Well, a project came up shortly after, and I began in it Visual Basic knowing full well that it was going to be a pain. Getting an idea of the scope, I put forth a time estimate that she didn't like. I then ran down how I would accomplish various items in VB, and how I would do it in C, which would be easier. I then detailed out why the C method would work using VB.

    After explaining that I wasn't trying to get her to change the policy, and her inquiring with some other developers elsewhere about how they would accomplish the task in VB, she decided that we would instead allow VB and C.

    Then we added Perl to the list.

    Now she is no longer employed here. :-)

  256. Readability of Smalltalk code by CuttingEdge · · Score: 1

    Smalltalk is highly legiable. Any new language style you learn is obviously unfamiliar at first seems unusual. Smalltalk's syntax is simplier than most langugages (C, Java, ...) and is easy to learn. (See the example in the other responses to the above (parent) message).

    Smalltalk.org has free online books and links available for learning Smalltalk, including tutorials for those familar with languages such as C, C++, Java... See http://smalltalk.org/smalltalk/learning.html.

  257. Java sometimes only seems to make sense by oldwarrior · · Score: 0

    when everyone uses java, everywhere.

    --
    If it were done when 'tis done, then t'were well it were done quickly... MacBeth