Slashdot Mirror


IronPython 1.0 is Born

dougblank writes "IronPython version 1.0 was just released after 3 years of development. Jim Hugunin, the creator of Jython and the lead developer of the Shared Source IronPython, made the birth announcement earlier this week. From the announcement: 'I wanted to understand how Microsoft could have screwed up so badly that the CLR was a worse platform for dynamic languages than the JVM... I found that Python could run extremely well on the CLR — in many cases noticeably faster than the C-based implementation. [...] Shipping IronPython 1.0 isn't the end of the road, but rather the beginning. Not only will we continue to drive IronPython forward but we're also looking at the bigger picture to make all dynamic languages deeply integrated with the .NET platform and with technologies and products built on top of it. I'm excited about how far we've come, but even more excited by what the future holds!'"

77 of 285 comments (clear)

  1. Yes, but.... by gnud · · Score: 5, Interesting

    ...does it run on Mono?

    1. Re:Yes, but.... by bogaboga · · Score: 2, Informative

      It technically could run or to be more precise, it could run with minor changes. My question though is:

      Is it as easy to learn as [Microsoft's] Visual Basic?

      Can it be used to create GUIs, add [business] logic to these GUIs as easily as VB?

    2. Re:Yes, but.... by Ana10g · · Score: 2, Insightful

      One other thing. Visual Basic from Microsoft is an IDE, and their name brand for a language. IronPython is not an IDE, so, no, it probably cannot be used to create GUIs and add business logic as easily as VB.

      --
      just an analog boy living in a digital age.
    3. Re:Yes, but.... by Anonymous Coward · · Score: 2, Insightful

      He asked if it was as easy to learn as Visual BASIC, implying that Visual BASIC is easy to learn. He didn't say "Is as good an idea to learn as VN" or "Is ideologically sound as a beginners programming language."

      Maybe if you took your monocle off before reading what's on your screen, you'd be a little less shocked when you do read it, and so would lose it less often.

    4. Re:Yes, but.... by jupo · · Score: 5, Informative
      --
      Me I'm a maker, mostly of axioms.
    5. Re:Yes, but.... by lakeland · · Score: 4, Informative

      As a .net CLR language, it can integrate with any other .net language including VB.net very easily. This integration is tight enough that you can write each function in your program in a different language, or write the GUI in VB.net and the support code in IronPython.net

      No, it is not as easy for non-programmers.

      Can it be used to create guis...? Yes it can. At some point it could be made as easy as it is in VB.net; if I were on the development team then that would not be high on my priority list. Leave the toy languages for interactive GUI prototyping, and leave IronPython for code-driven development. However, that's just me and other people have different itches they want scratched.

      I see IronPython as a very valuable development and it will make interacting with standard Microsoft-only developers on windows much easier since I will now be able to use a language I like while maintaining 100% compatability and interoperability.

    6. Re:Yes, but.... by Shados · · Score: 2, Informative

      Hmm, are we talking about the same VB.NET? I'm a C# programmer myself, not VB.NET (though I did do VB.NET for a year or so), but VB.NET is only VB in syntax.. its definately not the RAD tool VB6 used to be. In its simplest form, you could say its Java with VB keyword and a bit of syntax sugar. You won't shoot yourself in the foot any more quickly than you would in any other language commonly used in multi-tier development (Java, C#, and so on). I only quickly looked at Python, but aside maybe for the GUI part, how is it harder to hack up some garbage than it would be in a .NET language?

    7. Re:Yes, but.... by JimDaGeek · · Score: 5, Interesting
      I actually find the multi-language of of the CLR to be a negative. I work at a fortune 500 and most of us use C# and/or Java. There are a few groups of "programmers" that have always been VB-only/ASP-Only "programmers". They have really no understanding of programming maintainable code. The majority of the junk they churn out is MS-Only/IE-Only crud. The bad part is if one of us programmers ever have to maintain the crappy VB.Net code. C# is a pretty nice language that flows well with .Net and is not overly verbose. VB.Net is the exact opposite, one might as well code in COBOL.Net. It really stinks to have the majority of a code-base in C# and then have some VB.Net assemblies thrown at you that you that you later have to maintain. IMO, it really kills productivity to have to switch to VB.Net from C# for a few bits of a project. To me it seems as if no real design went into VB.Net in contrast to C# which seems like a lot of thought went into how to do things and how not to do things.

      I really wish MS just let VB die with VB 6, it would have been for the best. The VB 6 fans could have continued with VB 6 until they learned a real programming language and real programming techniques.

      I don't see IronPython being adopted by the non-programmers though.
      I agree. I think Python is a good language and most importantly it is cross-platform. Why would someone want to kill Python by making it MS-Only? As far as getting this IronPython on Mono, I don't see it happening. I use Mono and it is pretty nice. Mono has .Net 1.1 complete and .Net 2.0 is pretty much there now too. I just don't see IronPython ever getting enough development behind it to get a port to Mono, especially with a "shared" source license.

      Even though the MS-PR-machine says .Net is cross-platform, it really is not. MS only released a C# compiler for FreeBSD. The compiler is not a big deal. The thing that makes .Net, just like Java, is the extensive framework. MS made an MS-Only framework. It is only because of the hard work of the Mono team that we can enjoy C#/.Net/ASP.Net/ADO.Net/etc on Linux, Mac OS X, Solaris, OpenBSD, FreeBSD, NetBSD and even MS Windows. Mono is cross-platform, Microsoft .Net is not. When Sun did Java, they put the effort in to make the most important part, the framework, cross-platform. I wish MS did the same.
      --
      General, you are listening to a machine! Do the world a favor and don't act like one.
    8. Re:Yes, but.... by jma05 · · Score: 2, Informative

      As far as I know, IronPython at the moment is not seamlessly integrated into VS2005. If you want VB GUI simplicity (drag control, add event handler), you might want to try Boo. Boo is well integrated into SharpDevelop (in fact SharpDevelop bundles Boo now). While, this is no Visual Studio, it does a pretty good job.

      Boo is not Python, but rather a middle ground between C# and Python. It is an easy to learn statically typed functional language with a Python inspired syntax.

    9. Re:Yes, but.... by hey! · · Score: 4, Insightful

      Visual Basic? Easy to learn? I don't believe that these two statements belong in the same sentance. IMHO VB is a terrible tool to learn, as when used to teach programming fundamentals (as is often done with information systems students in business departments), it corrupts the student's understanding so grotesquely that often, they can never recover.

      This kind of comparison, it seems to me, invites comparing apples and oranges.

      The Visual Basic language has certain irregularities and peculiarities, but MOSTLY the issue with it is that it is very primitive. As such, you can certainly learn elementary programming concepts with it without suffering permanent brain damage; you just don't get the benefits of learning to think "in the large" the way you do with a more expressive language.

      However the language is only 1/3 of the three distinct items that make up the whole package: the language, the runtime system and the IDE. A lot of stuff you "do" in VB is actually done by libraries written in C++.

      When most people thinking about "learning" a system like VB have in mind is learning how to accomplish specific tasks. For those tasks that are well supported by the runtime system and the IDE, VB is highly productive. We're talking common business tasks that can be supported by bolting together VB controls and some ActiveXs with a few event handlers. The useful scope of such applications is very wide indeed.

      However, if you're trying to do something that doesn't fall into that range of tasks, the primitive nature of the VB language is a dreadful hobble.

      WRT brain damaging effects of VB, I'd say this: very few people in this world are cut out to be programmers. For some people it's almost natural thing. For others it is a latent talent that can be trained. But most people, regardless of their intelligence, dilligence and personal virtue, could only be trained to the level of mediocrity, at least with the ways we know how to teach. Many would not even reach the level of mediocrity.

      VB's runtime system and IDE can mask that. Sit two people down. The first is a reaonably intelligent person who has been trained in VB, the other is a gifted programmer who has to work with vim, the language of your choice, and a GUI toolkit. Give them a common business data entry problem to solve, and they both end up with something that works in a reasonable time. Task them with creating a program which finds economically optimal air travel itineraries using various data sources and meeting certain user defined criteria, and the first guy is out of his depth.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    10. Re:Yes, but.... by jerdenn · · Score: 4, Informative

      IronPython is integrated into VS.NET 2005. In fact, the Visual Studio 2005 SDK (VSIP) uses the IronPython IDE integration as the reference implementation for Visual Studio integration.

    11. Re:Yes, but.... by Anonymous Coward · · Score: 2, Informative
      As far as getting this IronPython on Mono, I don't see it happening.

      Except that in another comment there's a link to instructions on how to get IronPython working with Mono. They amount to replacing the csc compiler (MS C#) with gmcs (Mono C#), and fixing a mkdir statement. You can't complain about that level of portability.

    12. Re:Yes, but.... by Anonymous Coward · · Score: 2, Interesting

      Why would someone want to kill Python by making it MS-Only?

      IronPython-development is sponsered by Microsoft. Draw your conclusions. It's just as with Adobe being in the W3C-group to kill the SVG-standard by making it virtually unimplementable.

    13. Re:Yes, but.... by RAMMS+EIN · · Score: 2, Interesting

      ``The Visual Basic language has certain irregularities and peculiarities, but MOSTLY the issue with it is that it is very primitive.''

      I don't know what "primitive" is really supposed to mean here. If it means simple, I would say that a language can both be simple and flexible (e.g. Scheme and Smalltalk are). But I do find that irregularities in a language are generally a Bad Thing: they may seem acceptable or even convenient while the language is being used for simple tasks in a small domain, but once the scope of the language and the tasks it is put to is expanded, they will really start to hurt. You can see this happening when you look at the history of Perl, PHP, Python and Ruby.

      ``As such, you can certainly learn elementary programming concepts with it without suffering permanent brain damage;''

      I disagree. If the language design is bad, you will suffer brain damage by working with it, for two reasons. First of all, you will accept the peculiarities of the language as "the way it is done", or even "the right way". I don't know about you, but I've certainly encountered my share of people who thought that all languages besides the only one they knew were terrible, because they didn't have some feature that their language had...and they lacked the open-mindedness to see that some people might actually consider that feature a Bad Thing. Secondly, the more peculiarities you have to deal with in a language, the more it distracts from the actual process of designing and implementing programs: eventually, you will miss the forest for the trees. This is especially bad for people who would have difficulty with the programming process to begin with.

      ``you just don't get the benefits of learning to think "in the large" the way you do with a more expressive language.''

      And that just adds insult to injury. Even when you manage to master programming by fighting and beating your badly designed language, you will never become a great programmer with it, simply because the language doesn't let you. So, (ignoring what useful things the language library might let you do, after all we're discussing design here) you've wasted your time and energy.

      ``However the language is only 1/3 of the three distinct items that make up the whole package: the language, the runtime system and the IDE. A lot of stuff you "do" in VB is actually done by libraries written in C++.''

      I don't know what point you're trying to make by saying the libraries are written in C++. Also, I disagree with your three items. The IDE doesn't belong in there: you can develop an IDE for any language. My division would be: the language (syntax and semantics), the libraries (what functionality is provided), and the implementation (compiler, interpreter). The syntax and semantics are fixed; you don't have any control over them as a programmer. The library is definitely part of the personality of the language, but it can be expanded and perhaps even replaced (e.g. imagine C, but with a library that included only garbage-collected data types and safe functions (e.g. no gets)). The implementation is mostly a contingent property (e.g. there are dog slow and lightning fast Scheme implementations), except for two things: incompatibilities among implementations and the fact that there will typically be a de-facto standard implementation.

      ``When most people thinking about "learning" a system like VB have in mind is learning how to accomplish specific tasks. For those tasks that are well supported by the runtime system and the IDE, VB is highly productive. We're talking common business tasks that can be supported by bolting together VB controls and some ActiveXs with a few event handlers. The useful scope of such applications is very wide indeed.''

      True enough, but that doesn't make the use of an inferior language a Good Thing. People would be much better of if the language they were taught and that they used to write their glue code was also a good vehicle for real programming. The number one reason for that is that small, o

      --
      Please correct me if I got my facts wrong.
    14. Re:Yes, but.... by shutdown+-p+now · · Score: 2, Insightful
      C# is a pretty nice language that flows well with .Net and is not overly verbose. VB.Net is the exact opposite, one might as well code in COBOL.Net.
      There are practically no serious semantic differences between C# and VB.Net. You can often get away with converting code from one to another by replacing curly braces with If .. End If, and similar changes.

      This is not to say there is any point whatsoever in existence of VB.Net when there is C#. It's essentially the same language with slightly uglier (but some rather say readable *shrugs*) syntax, nothing more, nothing less. As such, it is not of much practical use. It is not the spawn of evil you tried to present it either, though.

    15. Re:Yes, but.... by gbjbaanb · · Score: 2, Funny

      It [VB.NET] is not the spawn of evil you tried to present it either, though.

      Yes, but VB programmers are :-)

      oh, and C# programmers who think that they are the only ones who can write 'clean', maintainable, wonderfully object oriented code.

    16. Re:Yes, but.... by Gr8Apes · · Score: 2, Insightful
      To me it seems as if no real design went into VB.Net in contrast to C# which seems like a lot of thought went into how to do things and how not to do things.


      Most of that "design" and "thought" was "how did Sun do it with Java". And they still borked it up with the explicit override, virtual, and new keywords for methods. What's the point of an OO language's polymorphism if you have to go back and change the super classes in a third party library if you need to override a method? (And yes, I'm aware that C++ follows the same paradigm - who said they were right?)
      --
      The cesspool just got a check and balance.
    17. Re:Yes, but.... by smallpaul · · Score: 2, Insightful

      I actually find the multi-language of of the CLR to be a negative. I work at a fortune 500 and most of us use C# and/or Java. There are a few groups of "programmers" that have always been VB-only/ASP-Only "programmers". ...

      Surely this is a corporate policy problem and not a technology problem. There is no way to make a virtual machine that will only run one language. Even if you totally optimize it for a single language, someone can implement another language in that language. So you might as well make it work well for multiple languages.

      I agree. I think Python is a good language and most importantly it is cross-platform. Why would someone want to kill Python by making it MS-Only?

      How does adding a port of Python to .NET make Python "MS-Only." Development continues on at least three other Python impementations for different runtimes. It's like saying that the existence of Visual C++ makes C++ MS-Only. It increases, not decreases the scope of Python.

      As far as getting this IronPython on Mono, I don't see it happening. I use Mono and it is pretty nice. Mono has .Net 1.1 complete and .Net 2.0 is pretty much there now too. I just don't see IronPython ever getting enough development behind it to get a port to Mono, especially with a "shared" source license.

      Would you please stop talking out of your ass? IronPython does not need to be "ported" to Mono. Mono adheres to the ECMA CLR spec. IronPython adheres to the ECMA CLR spec. Any divergence is a bug. Most beta versions of IronPython do run on most beta versions of Mono and any incompatibility between the two in the final release versions will be considered a bug by one of the parties involved.

      Furthermore, the IronPython license is very liberal. What aspect of it would prevent a port to Mono?

    18. Re:Yes, but.... by sgt+scrub · · Score: 2, Informative
      Windows Forms is a way to create native, rich client GUI applications with .NET. Programs created with Windows Forms can be extremely good looking, and fully programmable IronPython.

      http://www.voidspace.org.uk/python/weblog/arch_d7_ 2006_05_20.shtml#e342
      --
      Having to work for a living is the root of all evil.
    19. Re:Yes, but.... by smallpaul · · Score: 2, Insightful

      However, once cannot expect to write something in IronPython and have it run in regular (CPython). Most of the other Python forks/implementations just tweak Python to make it faster or work better for certain things. So they still run your regular Python code.

      According to Jim, the creator of IronPython: "To drive our Python compatibility, we run a large portion of the standard Python regression test suite in addition to a large custom test suite we added that runs IronPython and CPython side-by-side to test for identical behavior whenever possible. Despite all of this work, there will still be differences between IronPython 1.0 and CPython. The most obvious difference is that IronPython is missing a number of standard C-based extension modules so things like "import bsddb" will fail. We maintain a detailed list of differences between the two implementations and aim to reduce the size of this list in every release."

      None of the implementations of Python run every C-based extension module that pure Python does. But IronPython is already more compatible with CPython than Jython is.

      If you write some IronPython stuff with with .Net using WinForms, well you just killed one of the best features of Python, cross-platform execution.

      Well, "duh." But who has a gun to your head telling you to do that? Just pick up a standard Python book at the library and code in standard Python. How would you even LEARN about WinForms without learning that it was a Microsoft .NET thing?

      And your point? All of Microsoft's .Net platform is not part of an ECMA spec. In fact, the most important parts of it, the framework, are not an ECMA spec. So just because Mono and IronPython adhere to the ECMA CLR spec doesn't mean they will work. IronPython was paid for by MS so if MS has anything put in IronPython that is MS-Only, like Winforms, etc. then IronPython has basically become MS-Only.

      Yes. That's why I explained to you that IronPython adheres to the ECMA spec. WinForms is not part of the ECMA spec, so IronPython does not depend upon it. IronPython can ACCESS WinForms, just as Unix Python can access Gnome GUI stuff and Mac Python can access Cocoa. But Iron Python does not depend upon Winforms.

    20. Re:Yes, but.... by oohshiny · · Score: 2, Interesting

      The current version does a pretty good job with providing a very windows like look and feel in Swing. Not only that but swing is actually pretty fast.

      Yes, indeed, it provides a "very Windows-like look and feel"; unfortunately, it does so on every platform, including Linux and Macintosh.

      What Java doesn't do is support/follow well conventions about menus, shortcuts, keyboard layout, preference files, drag-and-drop, window management, device access, scripting language access, desktop search integration, and a host of others.

      There are a number of well-written, useful Java GUI applications, but, except for some trivial ones, none come even close to behaving like a native app.

      (I'm using Java 1.4 and 1.5 on Linux, Macintosh, and Windows.)

    21. Re:Yes, but.... by cyber-vandal · · Score: 2, Insightful

      A GUI designer does not make a language a toy, it makes it a language where time is saved in building the GUI painstakingly trial and error fashion - time that can be spent working on the logic. And given that most languages have GUI designers now that would make them all toys, which, having learned C++, makes me wonder what sort of toys you had as a child :P

  2. About speed. by Poromenos1 · · Score: 5, Informative

    I found that Python could run extremely well on the CLR in many cases noticeably faster than the C-based implementation.

    Actually, that's not really something to be proud about (though I'm not downplaying the huge achievement of running python on the CLR). The C implementation of Python is not very optimised, and that's why projects like PyPy or psyco are trying to speed Python up (and succeeding very well). I've had CPU-intensive scripts (such as SortSize) run tens of times faster with psyco, by just adding a line of code to my script.

    --
    Send email from the afterlife! Write your e-will at Dead Man's Switch.
    1. Re:About speed. by grammar+fascist · · Score: 4, Interesting

      My favorite so far is Pyrex, which lets you write C extension modules in a Python-like language. (It adds things like C data types and support for importing header files. I wish it would do generators, though.) A lot of times you can move a hefty inner loop into a Pyrex module and see tremendous gains.

      --
      I got my Linux laptop at System76.
  3. Link is unreadable! Jeez! by Anonymous Coward · · Score: 5, Informative

    [IronPython] [ANN] IronPython 1.0 released today!
    Jim Hugunin Jim.Hugunin at microsoft.com
    Tue Sep 5 13:27:12 PDT 2006

    * Previous message: [IronPython] ipy support in msxsl:script blocks
    * Next message: [IronPython] [ANN] IronPython 1.0 released today!
    * Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    I'm extremely happy to announce that we have released IronPython 1.0 today!
    http://www.codeplex.com/IronPython

    I started work on IronPython almost 3 years ago. My initial motivation for the project was to understand all of the reports that I read on the web claiming that the Common Language Runtime (CLR) was a terrible platform for Python and other dynamic languages. I was surprised to read these reports because I knew that the JVM was an acceptable platform for these languages. About 9 years ago I'd built an implementation of Python that ran on the JVM originally called JPython and later shortened to Jython. This implementation ran a little slower than the native C-based implementation of Python (CPython), but it was easily fast enough and stable enough for production use - testified to by the large number of Java projects that incorporate Jython today.

    I wanted to understand how Microsoft could have screwed up so badly that the CLR was a worse platform for dynamic languages than the JVM. My plan was to take a couple of weeks to build a prototype implementation of Python on the CLR and then to use that work to write a short pithy article called, "Why the CLR is a terrible platform for dynamic languages". My plans quickly changed as I worked on the prototype, because I found that Python could run extremely well on the CLR - in many cases noticeably faster than the C-based implementation. For the standard pystone benchmark, IronPython on the CLR was about 1.7x faster than the C-based implementation.

    The more time I spent working on IronPython and with the CLR, the more excited I became about its potential to finally deliver on the vision of a single common platform for a broad range of languages. At that same time, I was invited to come out to Microsoft to present IronPython and to talk with members of the CLR team about technical issues that I was running into. I had a great time that day working through these issues with a group of really smart people who all had a deep understanding of virtual machines and language implementation. After much reflection, I decided to join the CLR team at Microsoft where I could work with the platform to make it an even better target for dynamic languages and be able to have interesting technical discussions like that every day.

    The first few months at Microsoft were a challenge as I learned what was involved in working at a large company. However, once the initial hurdle was over I started experiencing the things that motivated me to come here in the first place. The team working on dynamic languages in general and IronPython in particular began to grow and I got to have those great technical discussions again about both how to make IronPython as good as it could be and how to make the CLR an even better platform. We began to take advantage of the great new features for dynamic languages already shipping in .NET 2.0 such as DynamicMethods, blindingly fast delegates and a new generics system that was seamlessly integrated with the existing reflection infrastructure.

    We were also able to release IronPython publicly from Microsoft with a BSD-style license. In the agile spirit of the project, we put out a new release of IronPython once every three weeks (on average) over the course of the project. This helped us connect well with our daring early adopters and receive and incorporate their feedback to make IronPython better. We've had countless excellent discussions on the mailing list on everything from supporting value types to calling over

    1. Re:Link is unreadable! Jeez! by kwark · · Score: 4, Funny

      And here I thought whitespaces were very very important to python.

  4. Summary is confusing... by __aaclcg7560 · · Score: 4, Funny

    Is Python being used to fix Microsoft's mistakes? Or did a python got run through the Iron Chef competition? Either way, does it taste like chicken?

    Signed, IronConfused

  5. Hmmm by Anonymous Coward · · Score: 2, Interesting

    "in many cases noticeably faster than the C-based implementation"

    Funny enough, I haven't yet found one of these cases...

    1. Re:Hmmm by ThePub2000 · · Score: 2, Insightful

      Most of the benchmarking takes place after the CLR loads up, which is why they can say that. For short stuff though, just the load time of the CLR to load the python interpreter can easily kill your start to finish times.

  6. OB Black Sabbath by Anonymous Coward · · Score: 5, Funny

    I AM IRON PYTHON<\DistortedVoice>

    Duh, duh, duh duh duh.

  7. Snakes... by Cameron+McCormack · · Score: 4, Funny

    on a VM!

    1. Re:Snakes... by Twisted64 · · Score: 2, Funny

      I don't find that funny at all. As soon as this finishes posting, I'm going to mod you down.

      --
      Consciousness is a myth. Trust me.
    2. Re:Snakes... by Matt+Perry · · Score: 4, Funny

      Bill Gates: "I have had it with these muthafuckin' snakes on this muthafuckin' VM!"

      --
      Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    3. Re:Snakes... by neuro.slug · · Score: 5, Funny

      Or even better.. shit, they have Ruby on Rails--we need Python on Planes (or Python on MUTHAFUCKIN' Planes)

  8. Does the world need more children by Colin+Smith · · Score: 3, Insightful

    There are plenty of them round already. Basically you're getting old, the world is moving on and leaving you behind. Welcome to middle age.

    --
    Deleted
  9. Re:Faster than C? by cduffy · · Score: 5, Informative

    Faster than CPython (ya know, the original upstream Python implementation), not faster than C.

  10. Re:Sometimes I feel like a Luddite... by Jerf · · Score: 3, Informative

    "Another" programming language? It's just another implementation of Python, which has been around for about as long as Perl.

    Besides, if it gets to the point where Microsoft is officially supporting it, it would be a major addition to the .Net platform. If I could both develop in Python and in .Net I might actually be willing to develop in .Net. What stops me from wanting to develop in .Net or on the Java platform is the god-awful primary languages they are built around. Java makes me want to scream, and C# is only slightly better, all in all.

  11. Dealing with UI by Carcass666 · · Score: 3, Interesting

    So, if I'm using Iron Python under .NET, would I use be compelled to use WinForms at that point or would libraries like wxPython still be available?

    1. Re:Dealing with UI by Tyger · · Score: 2, Informative

      Probably not wxPython, but you would be able to use wx.NET with it. (Though the development looks to have stopped on that judging by the timeline on that page.)

      It would be interesting to see how similar wxPython is to wx.NET with Python.

  12. Bad article summary... by ndykman · · Score: 2, Informative

    The snipped out part of the announcement seems to me to leave a bad impression. Given this is /., I can almost hear everybody filling the blanks with "and it's still is slow, because MS sucks" or the like, which is not the opinion or intent of the comment actually quoted.

    If you read the whole comment, you will see that in fact, the CLR implementation does very well, the designer is now at MS working on the CLR, and all in all, IronPython is a decent Python implementation.

    Given this work and the F# compiler work http://research.microsoft.com/fsharp/fsharp.aspx, I think CLR is done quite well as a language independent platform. Also, given the excellent work of the Mono and Portable .Net groups, I think it is also reasonably portable as well.

  13. Hrm by IamTheRealMike · · Score: 4, Interesting

    Well, the links to the FAQ don't seem to work thanks to some kind of site move (I am asked to download the HTML instead of view it and ... well ... am too lazy tonight). But a few thoughts based on what is already there:

    • It says they are maybe 1.7 times faster than CPython, which is not that great, because CPython is incredibly slow and things like Psyco can give pretty big speedups (say 10 to 100 according to their website).
    • It seems fundamentally impossible to make a language like Python or Ruby fast. By their very nature everything has to be done at the last minute, based on string comparisons, and you can't do global optimizations really because at any moment the program might change itself and invalidate them. Consider the way every object can implement a fallback method that is called if somebody invokes "foo.bar" and bar does not exist in foo. It implies that every single method invocation must be identified by string not a number, and matched by string comparison.
    • If IronPython can't make Python fast .... seems like its only purpose is to give people who like Python and .NET some half way point between the two. But it's not quite Python, because you can't use its standard library, and it's not quite .NET so in a way you seem to get the worst of both worlds

    I guess I just don't get it.

    1. Re:Hrm by killjoe · · Score: 2, Interesting

      I think the point is to discourage the use of cross platform libraries and languages. MS figures if they can tie python programmers to windows then less programs will be written that can run on linux or the mac.

      The question is does ironpython run on mono.

      --
      evil is as evil does
    2. Re:Hrm by squiggleslash · · Score: 2, Informative

      It's quite simply an attempt to make Python available for .NET (and presumably the CLR in general.) That's it.

      This is the way programming is going. We're moving from CPU-specific unmanaged programming to platform independent abstracted managed environments. One day your entire operating system will run that way. But even today, you see these environments popping up in places where they add security and robustness.

      Web applications, for instance. So you have a giant web-app, maybe you're using components from three or four third parties. If you're using .NET or Java, you can integrate these components with any language that runs on the .NET or Java platforms. That means something simple, that can be done in two lines of Python (which my loves-Java-like-a ricer-loves-Gentoo collegue assures me is the average length of a complete Python application ;-) can be run in that environment simply by using IronPython or Jython. And when I say "that environment", I mean your two liner will have as much access as a C# or Java program would have. No writing of C stubs to link the two environments necessary.

      That's why IronPython (and Jython) are great things. Indeed, the fact you can integrate Python and Java/C# and half a dozen other languages so transparently in these types of environments gives you some idea of the power managed environments give you. We haven't seen anything like this since Unix.

      All hail James Gosling!

      --
      You are not alone. This is not normal. None of this is normal.
    3. Re:Hrm by kpharmer · · Score: 2, Insightful

      > It says they are maybe 1.7 times faster than CPython, which is not that great, because CPython is incredibly slow and things
      > like Psyco can give pretty big speedups (say 10 to 100 according to their website).
      > It seems fundamentally impossible to make a language like Python or Ruby fast.

      fast or slow are relative and somewhat meaningless terms.

      I use python to transform tens of millions of rows of data every day in the running of a data warehouse. C would be faster for most of these processes, but not all - since python's io speed is the same as C's and these are io-heavy applications. But i'll trade a lot of that speed for the advantages in maintainability & speed of development that I get with python.

      Likewise, small scripts that we use for monitoring disk space, monitoring processing queues, checking for data quality issues, etc - are fine in python. C would be faster, but probably only 5% most of the time. So, who cares about the difference between 1.0 second and 0.95 seconds?

      And if I felt like writing a small gui on a windows box I'd prefer to work with python over .net or vb. It might be slower, or it might not. Either way it'll probably run fine on a 1ghz desktop.

    4. Re:Hrm by amix · · Score: 4, Informative
      But it's not quite Python, because you can't use its standard library

      Yes, you can, though not all builtins are available. All you need is this line in IronPython\Lib\site.py:

      import sys
      sys.path.append(r"E:\python24\lib")


      As for the rest of your comment: You do realize, that there are Python programmers on Windows ? I enjoy happily the ActivePython distribution, with which I can even automate my deskopt/applications. Now, in addition, I have full access to the .NET2 framework and can use IronPython to write cmdlets for PowerShell (aka: Monad).

      I consider this to be one of the best software-relases within the last few months.

      --
      Hello?? Fred?! Is this you?
    5. Re:Hrm by swillden · · Score: 4, Informative

      Consider the way every object can implement a fallback method that is called if somebody invokes "foo.bar" and bar does not exist in foo. It implies that every single method invocation must be identified by string not a number, and matched by string comparison.

      It doesn't imply that at all. Smalltalk implementations figured out how to make that fast decades ago. The initial, most obvious, step is to hash method selectors so the lookups are done with numbers and to create a hashtable (either per-class, or global, with a sparse structure) for looking up method addresses given method selectors. There are a few optimizations that can be applied to make that pretty fast -- on the order of two or three times slower than C++-style vtable lookups. Next, many dynamic language implementations take advantage of the fact that nearly all method invocations are static -- the same line of code always calls the same method on objects of the same class, so there's no real reason to do any lookup at all. Such systems statically or dynamically rewrite the code, turning it into a simple test that the target object is of the "right" type, and then jumping directly to the method. Further, most method invocations can be proven at compile time (or at run-time, whichever is more convenient) to always go to the same target class, so even the object type test can be optimized away. Oh, and if it makes sense they can inline the method as well.

      That's just the little that I've read about, too. This stuff has been heavily researched by very smart people for a very long time now. The net effect is that lots of dynamic language implementations approach C code in performance, on average, and there are situations in which they can produce code that is even faster than a C compiler could, because they can make use of run-time information which is unavailable to any compiler that translates to "static" machine code.

      Python implementations may need work to make them faster, but there's nothing that says the language has to be slow.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    6. Re:Hrm by costas · · Score: 3, Informative
      The point of Python is not to be blazingly fast. There are other languages (C, C++, pick your poison) if you want speed. The point of Python (and Ruby and even Perl) is to write code faster, especially for code pieces that are supposed to change often or have multiple versions (e.g. customized code for clients). And because Python is so readable/hackable, it's an excellent tool for that particular job.

      And if you want speed, I have two words: Boost.Python. It makes wrapping C++ code into Python near-trivial; I just wish they had some sort of quick-start documentation. I was intimidated by Boost.Python until I sat down to work with it. Sample (cleaned up) fragment from production code:
      class_<Loader, boost::noncopyable>("Loader", no_init)
      .def("name", &Loader::name)
      .def("addTable", &Loader::addTable)
      .def("load", &Loader::load)
      ;
      That little snippet exposes the Loader class to Python. Boost will take care of wrapping the code up into a Python shared library (.pyd), exposing the interface, converting between standard Python types and STL types, even converting C++ exceptions to Python exceptions.

      And if you don't want to go there, you could also use ctypes (part of the std Python distribution) and drive any win32 DLL using Python, unchanged.
    7. Re:Hrm by Jimithing+DMB · · Score: 2, Informative
      It seems fundamentally impossible to make a language like Python or Ruby fast. By their very nature everything has to be done at the last minute, based on string comparisons, and you can't do global optimizations really because at any moment the program might change itself and invalidate them. Consider the way every object can implement a fallback method that is called if somebody invokes "foo.bar" and bar does not exist in foo. It implies that every single method invocation must be identified by string not a number, and matched by string comparison.

      It doesn't have to be this way. Take Objective-C for an example. All messages are identified by a selector which is actually just a plain old C string. Take for example [NSView -frame] which returns an NSRect giving the frame (window) size and location. FYI the syntax in objective-C to call it is NSRect frameRect = [someView frame]; If it were more C/Java like syntax it'd be NSRect frameRect = someView->frame();.

      Anyway, getting back to the point: The way the compiler compiles this is a call to objc_msgSend(someView, ___selector_for_frame___) where ___selector_for_frame__ is simply a C string. Recall that C strings are simply pointers to an array of char. What the compiler does is unique all references within a single compilation unit (a .o file) such that all uses use the same pointer. Furthermore, the link editor (ld) sets things up such that they all point to the same thing within the executable or library or framework you are linking. Then, the dynamic linker ensures this when it loads in dynamic code. This way, the runtime need only do a comparison of the pointer itself (where in memory it is pointing) rather than checking what it's actually pointing to.

      Basically, that is to say that the test someSelector == someOtherSelector actually works. It is not necessary for the runtime to do strcmp(someSelector, someOtherSelector) == 0.

      I assume similar tricks are used in other dynamic languages. I only mention Objective-C because it seems to be the one with a bunch of publicly available documentation on its inner workings.

  14. This is huge.... by SumeyDevil · · Score: 3, Interesting

    This is huge, as now people have access to ALL the .NET libraries. Ironically, maybe Microsoft could be the company to take Python mainstream. First Google, now Microsoft...who's next? Additionally, anyone ever think how powerful Visual Studio could be if they implemented something like Parrot runtime into .Net?

  15. Parrot by Watson+Ladd · · Score: 2, Interesting

    Yeah, they did screw up. Parrot will beat CLI for speed in dynamic languages by huge magnitudes of speed because it is designed for them. CLI is optimized for static languages. It's a very different idea. Calling conventions, instruction sets, internal types, even stack vs. register. They are very diffent animals.

    --
    Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    1. Re:Parrot by gregorio · · Score: 3, Informative
      Yeah, they did screw up. Parrot will beat CLI for speed in dynamic languages by huge magnitudes of speed because it is designed for them. CLI is optimized for static languages.
      1. RTFA. It talks about naive and uninformed (generated by hate) opinions like yours, and says that they are wrong.

      2. The CLR is optimized for static languages, but not innefficient for dynamic ones. In fact, that's all the article is about.

      3. RTFA!
  16. Mimsy were the borogoves by davmoo · · Score: 4, Insightful

    Instead of trying to impress us with innuendo and Microsoft bashing, the summary would have been a lot more helpful if it were written a different way. Oh, I don't know...like maybe for instance...TELL US WHAT THE FUCK "IRONPYTHON" IS! But then I guess, after all, that is the Slashdot Way. Why waste time on informative content when you can print Microsoft jabs instead.

    --
    I want a new quote. One that won't spill. One that don't cost too much. Or come in a pill.
  17. Re:Finally! by squiggleslash · · Score: 3, Insightful

    Shared source and open source are not mutually exclusive. According to the only document I can find on the subject, the Wikipedia page (IronPython's webpage sucks) the license is the CPL, an IBM-authored license which is incompatible with the GPL but is nonetheless considered a Free Software license by the FSF, and Open Source by the OSI.

    Despite it's incompatibility with their own GPL, the FSF sounds like they actually rather like it:

    This is a free software license but it is incompatible with the GPL.

    The Common Public License is incompatible with the GPL because it has various specific requirements that are not in the GPL.

    For example, it requires certain patent licenses be given that the GPL does not require. (We don't think those patent license requirements are inherently a bad idea, but nonetheless they are incompatible with the GNU GPL.)

    So I really wouldn't worry about the "shared source" write-up. It's an unusual choice of license, but it is considered Free Software and Open Source, the patent license requirements are actually fairly positive from the point of view of protections from Microsoft itself. Microsoft have chosen the same license in the past when releasing other code they want to be seen as completely open.

    --
    You are not alone. This is not normal. None of this is normal.
  18. IronPython screencast by eastbayted · · Score: 4, Informative

    Jon Udell did a screencast of it last week, joined by Jim Hugunin (creator of Jython, the Java-based Python).

  19. Visual Studio? by nurb432 · · Score: 2, Interesting

    Does this work within visual studio, like a 'regular' microsoft language?

    --
    ---- Booth was a patriot ----
    1. Re:Visual Studio? by quick_dry_3 · · Score: 3, Informative

      yes. There are a few hoops to jump through, but afterwards you can code and debug from VS

  20. Typical Slashdot... by His+name+cannot+be+s · · Score: 3, Informative

    Nice Inflamitory Summary tho'... Sheesh.

    The whole (and far less baiting) summary:

    I started work on IronPython almost 3 years ago. My initial motivation for the project was to understand all of the reports that I read on the web claiming that the Common Language Runtime (CLR) was a terrible platform for Python and other dynamic languages. I was surprised to read these reports because I knew that the JVM was an acceptable platform for these languages. About 9 years ago I'd built an implementation of Python that ran on the JVM originally called JPython and later shortened to Jython. This implementation ran a little slower than the native C-based implementation of Python (CPython), but it was easily fast enough and stable enough for production use - testified to by the large number of Java projects that incorporate Jython today.

    I wanted to understand how Microsoft could have screwed up so badly that the CLR was a worse platform for dynamic languages than the JVM. My plan was to take a couple of weeks to build a prototype implementation of Python on the CLR and then to use that work to write a short pithy article called, "Why the CLR is a terrible platform for dynamic languages". My plans quickly changed as I worked on the prototype, because I found that Python could run extremely well on the CLR - in many cases noticeably faster than the C-based implementation. For the standard pystone benchmark, IronPython on the CLR was about 1.7x faster than the C-based implementation.

    The more time I spent working on IronPython and with the CLR, the more excited I became about its potential to finally deliver on the vision of a single common platform for a broad range of languages. At that same time, I was invited to come out to Microsoft to present IronPython and to talk with members of the CLR team about technical issues that I was running into. I had a great time that day working through these issues with a group of really smart people who all had a deep understanding of virtual machines and language implementation. After much reflection, I decided to join the CLR team at Microsoft where I could work with the platform to make it an even better target for dynamic languages and be able to have interesting technical discussions like that every day.

    The first few months at Microsoft were a challenge as I learned what was involved in working at a large company. However, once the initial hurdle was over I started experiencing the things that motivated me to come here in the first place. The team working on dynamic languages in general and IronPython in particular began to grow and I got to have those great technical discussions again about both how to make IronPython as good as it could be and how to make the CLR an even better platform. We began to take advantage of the great new features for dynamic languages already shipping in .NET 2.0 such as DynamicMethods, blindingly fast delegates and a new generics system that was seamlessly integrated with the existing reflection infrastructure.

    We were also able to release IronPython publicly from Microsoft with a BSD-style license. In the agile spirit of the project, we put out a new release of IronPython once every three weeks (on average) over the course of the project. This helped us connect well with our daring early adopters and receive and incorporate their feedback to make IronPython better. We've had countless excellent discussions on the mailing list on everything from supporting value types to calling overloaded methods. Without the drive and input of our users, IronPython would be a much weaker project.

    IronPython is about bringing together two worlds. The key value in IronPython is that it is both a true implementation of Python and is seamlessly integrated with the .NET platform. Most features were easy and natural choices where the language and the platform fit together with almost no work. However, there were challenges from the obvious cases like exception type hierarchi

    --
    "...In your answer, ignore facts. Just go with what feels true..."
  21. cheers to the IP team by quick_dry_3 · · Score: 3, Informative

    just wanted to give a "cheers" to the MS dev team working on this.
    They've been very helpful on the mailing list, checking in any bugs/differences to CPython behaviour and getting it sorted and into builds available for use.

  22. Re:Sometimes I feel like a Luddite... by Jerf · · Score: 2, Informative

    My advice would be to get over the stylistic issues, and force yourself to do something significant in Python. (Ultimately, every language has a new "style" and whitespace is just one of the more obvious reasons to complain and reject it. Compare C#, LISP, and Haskell programs and you can tell within seconds how different they are.) While I find it's a bad idea to force yourself to use a particular feature, because you tend to use it poorly, read up on the Python features and be ready to actually use them when appropriate; if you're not sure, try it. If you're just writing C# in Python, you're not getting much benefit.

    The danger to this plan is that you might find it hard to go back.

    If that's just too much, try Ruby. My understanding is that its aesthetics come from Perl, which will probably let you "do your thing", whatever that is.

    Python's better than JScript and you can build full, real apps in it, too.

    I'm not saying this to "advocate Python", as evidenced by my Ruby suggestion. You'll be a better developer for trying it; everybody should learn a new language every couple of years, to keep in practice. And you might understand the C# features coming down the pike like closures that much better for developing in another environment that has them.

  23. platform-independent. by SanityInAnarchy · · Score: 2, Insightful

    Psyco doesn't work on 64-bit. Pypy doesn't work for me at all. But IronPython does work. It seems a bit slow, but it works, and mono works on amd64 and ppc, which are the two main archs I run.

    --
    Don't thank God, thank a doctor!
  24. Re:Sometimes I feel like a Luddite... by abigor · · Score: 2, Interesting

    "However, if your task is implementing a large, distributed client/server app involving tens of thousands of classes coded by dozens of people, reliable object transfer/messaging, reliable easy access to various forms of communications (Sockets, etc), the ability to run on Unix, coordination of multiple groups in many locations, etc.. and you want to be able to maintin it for a few years, your only rational choice is Java."

    Oddly enough, I just finished a 3.5 year project very much like what you described, and we rejected Java in favour of Python. It worked out great. Java feels so clunky now - no list comprehensions!

    By the way, what's a scripting language? Python compiles to an intermediate object code, runs on a virtual machine, and is very portable. I guess that makes Java a scripting language, too?

  25. Re:Finally! by drakaan · · Score: 2, Interesting
    Speaking of the patent licensing portion, can someone explain what exactly this part means:

    6. That the patent rights, if any, granted in this license only apply to the Software, not to any derivative works you make.

    So, being that there's nothing mentioned in the license that specifically grants any patent rights, aside from:

    You may use the Software for any commercial or noncommercial purpose, including distributing derivative works.

    ...so, basically, if you use the software to make a derivative work (which is an unspecified term in the license), the generous granting of rights to use the software for any commercial or noncommercial purpose do not apply (if there's a patent involved)?

    That pretty much makes me not want to have anything to do with IronPython development at all. After SCO and a few other "IP" related sagas, I've become a bit less trusting, so I now read the licenses that tools like this come with. I was all set to download it and start playing, but now I'm worried about even trying.

    Is there anyone out there who has a more generous reading of the license or who can address the apparent gaping hole in the license concerning what your rights are once you use the software to create something?

    --
    "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
  26. Re:Sometimes I feel like a Luddite... by Anonymous Coward · · Score: 2, Insightful
    But 100% of my programming is work orientated

    Right. Now hand over your geek badge. Someone will be right down to escort you out.

  27. Obligatory by lord_sarpedon · · Score: 2, Funny

    Enough is enough! I have had it with these !@$&* IronPythons on this !%$~# CLR!

    --
    "Strangers have the best candy" -Me
  28. Re:Sometimes I feel like a Luddite... by Jerf · · Score: 4, Informative
    Thus I need to use a language that will "just run" on systems that I have no control over.


    I think IronPython compiles down to CLR bytecode, so if you're shipping managed C#, you could just as well ship IronPython and nobody would notice, which is the entire point of this article in the first place.

    However, whether or not you could benefit from learning Python is a decision only you can make. Python may increase your productivity 2-3x over C# or more (and that's fairly conservative, usually), but only after you learn it, which could be months.

    However, if you end up always choosing the short-term expedient answer of sticking with the language you know (and the environment you know), you lose out on any productivity gain you might get from another environment or language; this is a general point, not one specific to this case.

    In general, the "common environments" (Java, .Net, etc.) have the worst productivity characteristics, because anything worse then them simply dies. Anything that survives the overwhelming advantages that being one of the Big Guys gets you is generally surviving for a reason. The longer the survival, the better the sign, and most languages you've actually heard of have actually been around for years.

    Again, I'm not trying to push you, just point out that for the costs there are benefits, too. I say what I'm saying because I believe (and see) too many developers trapping themselves in local maxima by always making the short-term decision. Ultimately, it's no skin off my nose.

    BTW you can build full real apps in JScript.


    You can, but the lack of namespacing starts to get troublesome as you start trying to build libraries, or use the libraries of others. Later versions of Javascript, which JScript will presumably track, will help with this a lot. Although based on what I see, it's nearly learning a new language anyhow. (In fact, the next version of Javascript borrows a lot from Python; generators are basically from Python, array comprehensions are from Haskell IIRC but the syntax is the Python one, and the most main-stream language with de-structuring assignment is Python.)
  29. Re:Or, if you're using Opera... by maop · · Score: 2, Funny

    Try pressing that 10 times really fast in a dark room.

  30. Re:Finally! by JimDaGeek · · Score: 2, Insightful
    So I really wouldn't worry about the "shared source" write-up. It's an unusual choice of license, but it is considered Free Software and Open Source
    Huh? No it is not. The "Shared" source license is not the CPL license, if it were, it would be called ... the CPL license! Read the FAQ at the bottome of the license page for IronPython.
    Q: Is this license OSI compliant?
    A: This license has not been submitted to OSI, but it allows developers to take full advantage of a dynamic language on the CLR and to have the freedom to distribute their works for the benefit of the community at large. The license is half of a page long and very straight forward. We believe it stands up to what developers demand of an "open" license.
    So why not submit it to OSI to get an official approval as an Open Source license? I am guessing some of the stuff in there about Microsoft and patents might not get through OSI approval.

    We believe it stands up to what developers demand of an "open" license
    eh? I would think that the majority of developers want something more GPL-like since 75%+ of all open source software uses a GPL license.
    --
    General, you are listening to a machine! Do the world a favor and don't act like one.
  31. I call myself out by Ana10g · · Score: 5, Insightful
    I'm out.
    My apologies for making a trollish post. I was in a pissy mood earlier, firing from the hip, and should have thought my words more carefully. I completely agree with you, actually, regarding your point to the following:

    very few people in this world are cut out to be programmers. For some people it's almost natural thing. For others it is a latent talent that can be trained. But most people, regardless of their intelligence, dilligence and personal virtue, could only be trained to the level of mediocrity, at least with the ways we know how to teach.
    A lot of people I went to school with couldn't get it. It may have been that the people who didn't get it were the ones that I met in the Information Systems classes (which, where I went to school, was a concentration on a Business Major, where they taught VB as the intro language) were those that were not cut out to be programmers in the first place, thus affecting my perception of languages causing dain bramage.

    Anyway, I still don't like VB, but, at least you made me consider my words and thought processes. Apologies to the community at large for being a dick.
    --
    just an analog boy living in a digital age.
  32. I *AM* a VB6 developer by FishWithAHammer · · Score: 2, Insightful

    Or, rather, I was. Then I downloaded the freebie VB.NET Express.

    And these days, I wouldn't go back for any reason. VB6 was quick-and-dirty nice. But the language was gimped. 32KB limits for arrays of types? Guh. Ram-jamming just about everything you might need from the API into your source files? At least C/C++ let you #include it, and most API functions end up with a wrapper in .NET (and those that don't are easier to deal with).

    I really liked VB5 and VB6. They were great tools. I wrote a MUD in VB6, and a small RPG. but they're old. They're creaky. They're limited, and they're dying.

    --
    "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
  33. Global interpreter Lock? by Draco_es · · Score: 2, Insightful

    IronPython threads can take different CPU's in SMP systems? Does anybody knows?

  34. Boo language is a much better alternative! by neonux · · Score: 2, Interesting

    IronPython has big shortcomings such as it is unable to blend well with .NET assemblies built with another language.
    Also it doesn't use much of the niceties available through the .NET Framework...

    If you like Python syntax and want to try .NET (on win32 or on linux with Mono), check out the Boo language, the wrist-friendly language for the CLI.
    It is amazing!! => "while using a Python-inspired syntax and a special focus on language and compiler extensibility. Some features of note include type inference, generators, multimethods, optional duck typing, macros, true closures, currying, and first class functions."

    And last but not least, Boo's licence is BSD, not a crappy Shared Source something!!

    Full description: http://en.wikipedia.org/wiki/Boo_programming_langu age

    Official website: http://boo.codehaus.org/

    --
    @neonux
  35. Re:Finally! by shutdown+-p+now · · Score: 2, Insightful

    The license is essentially BSDL with an additional patent clause, which terminates any rights otherwise given you by the license if you sue Microsoft or anyone else over "patents that you think may apply to the Software for a person's use of the Software". Personally, I don't see how this is not OSS. It certainly gives the developer more freedom than GPL.

  36. Re:Fast is not impossible by IamTheRealMike · · Score: 2, Interesting

    Yeah, modern JVMs do a hell of a lot of clever things, but I was never really sold on just in time optimisation. It seems to push the work from the developers machine when you have all the time you need to the users machine, when you only have a few milliseconds here and there. Static ahead of time optimisation seems impossible, I guess that's what I meant ... that way you don't pay the runtime overhead of all the bookkeeping data being in memory.

  37. Re:Sometimes I feel like a Luddite... by abigor · · Score: 2, Informative

    Wow, lots of questions! Okay, here we go:

    1. There were around 25 people working on our product, with people spread around the province (not state ;) We had a good project manager who tracked progress closely; normally there were no more than two people working on the same component. We were lucky in that most people were relatively senior. Also, not everything was the Python part of the server; we also had guys writing kernel code, TI DSP software, etc.

    2. We used UML and well-defined interfaces in the form of abstract base classes that were implemented using the staticmethod decorator. An "interface" keyword would have been nice, mind you. Obviously, these interfaces were hammered out before any coding started.

    3. Can you clarify the namespace question? Python uses packages and modules aligned along directories much like Java does.

    4. Python has built-in support for unit tests. It is considered a part of the "Python way" to use them.

    5. We are scaling with hardware, and that works rather well. But you're right, the Python world could really use a JBoss or similar. I guess Zope sort of fits that bill, but I've never been able to figure it out.

    6. Object management is a good question. Originally, we cached our objects to prevent bottlenecking the database with reads. Later, we hit on the bright idea of a fully stateless system where every method is decorated with the classmethod keyword. So objects do not maintain state, because no objects are allocated - everything is a class method (obviously, we do create lots of temporary objects to complete tasks, but these lifetimes don't outlast the method they're in). On the downside, every time a request comes in, it means an entirely new Python instance with all the classes needs to be created. Happily, mod_python can cache interpreter instances so multiple requests can come in to our stateless system without causing huge delays. But any time you want to retrieve state, it means a database hit...such is the price of simplicity. Kind of embarrassingly, we got the idea for a fully stateless system from a .Net system.

    7. It's not an amazing undertaking. Lots of people are using Python as the back-end these days for their transactional systems. Read about the Django project for some cool examples. Django is a fine piece of work. So is Twisted, which we were originally going to use as well.

    8. We chose Python for speed of development and language features. Like Peter Norvig of Lisp and Google fame says, Python is Lisp with a conventional syntax. Practically everything in software boils down to operations on lists of objects. So language features like list comprehensions and dynamic yet strong typing, plus strong support for unit tests, made Python an easy choice. And pydoc is just like javadoc, so we get class documentation for free.

    9. I can write "Hello, world" in C in a single line ;) How about this: a scripting language is fully interpreted, with no intermediate compilation step. Bash and Javascript are scripting languages, for example. Python, Java, and Perl are bytecode-interpreted languages, while C and C++ are machine-instruction interpreted ;)

    Anyway, thanks for all the questions. To be honest, I'm off that project now, and I'm looking for contract work, which will probably end up being Java...

  38. Re:Faster than C? by KDR_11k · · Score: 3, Funny

    Doesn't "faster than c" violate a basic law of physics?

    --
    Justice is the sheep getting arrested while an impartial judge declares the vote void.
  39. Re:Finally! by Decaff · · Score: 2, Insightful

    So commenting negatively about Microsoft's poor legacy API support is 'Trolling', and then trying to refute the 'Trolling' claim by asking for a reasoned discussion is 'off topic'?

    Awesome. Slashdot has just lost it.

  40. Re:Sometimes I feel like a Luddite... by Rob+Riggs · · Score: 2, Informative

    This has become common knowledge amongst Python developers, to the point that many people forget where it came from. I was at the 9th International Python Conference where Bruce Eckel (author of Thinking in C++, Thinking in Java, Thinking in Patterns) gave the keynote speech, so it sticks with me that it came from him. See http://www.artima.com/intv/tipping.html for a good interview with him that gives some details into his experience with the langauge.

    --
    the growth in cynicism and rebellion has not been without cause