Will Your Code Run Ten Years From Now? (nature.com) 219
Nicolas Rougier, a computational neuroscientist and programmer at INRIA, the French National Institute for Research in Digital Science and Technology in Bordeaux, writes: I organized with [Konrad Hinsen, a theoretical biophysicist at the French National Centre for Scientific Research (CNRS) in Orleans] the "Ten Years Reproducibility Challenge," whose goal was to check if researchers would be able to run their own code that has been published at least ten years ago (i.e. before 2010). Most participants managed to run it, but it was not without pain. Today, Nature published an article summarizing the different problems we encountered. I myself tried to re-run an Apple II program I wrote 32 years ago on a vintage Apple IIe. This was quite instructive, especially regarding modern software system with the dependencies hell.
It depends which language you use I guess (Score:5, Interesting)
I guess It depends which language you use, my 22 years old java 1.0 code still runs fine in current java versions but I have had less luck with php and other languages which don't run on latest distributions so you need unsupported and security risk releases of the OS and libs to run it. Upgrading and adapting your code is better in that case.
Re: (Score:3)
Java, C and C++ will all still work. Maybe C#. But most other languages are in so much flux that you're lucky if something you wrote five years ago will run.
Re: (Score:2)
Any self contained language that has the library bundled with it can be installed clean and your code should work.
Any code that relies on 3rd party libraries... good luck.
Or are people asking if code written for an older compiler will work with the latest compiler?
Re: It depends which language you use I guess (Score:2)
Re: (Score:3)
Forgotten about the older versions of IE already?
Re: (Score:2)
Re: (Score:2)
Unfortunately, early versions of IE had a pretty loose grasp of the HTML standard plus their own extensions. At some point, webmasters even got annoyed if Microsoft tried to fix any of it. [w3.org]
Re: (Score:2)
You mean like Flash, VBScript, ActiveX, and so on?
dont' forget PLCs and assembly code (Score:3)
Don't forget code for PLCs and systems programmed in assembly language. I have programs (ladder, IL, function charts, etc.) that have been running for decades on PLCs. I also routinely update code running on these. The hard part is that for some of the older PLCs it is sometimes hard to get the programming environment to run on newer OSs---especially because of some license locks.
Also many systems can be programmed in assembly code and their assembler code is in the wild (especially for some older proces
Re: (Score:2)
Re:It depends which language you use I guess (Score:5, Funny)
In this case though the question wasn't about code in general, it was academic code. With academic code you're lucky if it survives a recompile.
Seriously. I've got various pieces of code that came from academic projects where you need to freeze a VM with the one specific environment under which the code will build and run, because if you make the tiniest change to anything it'll break. And it's not just a specific config of a normal system, it's a massive collection of wierdo tools and binaries, a version of OCaml from an abandoned FTP site in France, a binary-patched gcc available via email from some beardy wierdo at UCSD if you send him a message with "Frogs" in the subject line, and some scripts written in functional Lisp that need to be interpreted by a tool running on Voyager 2, that's academic-grade code.
Re: (Score:2)
Re:It depends which language you use I guess (Score:5, Informative)
Agreed. Say what you will about Java (much of it may be well deserved), but I've got 20 year old Java applications still being used on Windows and Linux as it was deployed 20 years ago...same code, same jar file bundle, just newer machines and newer OSes. Of course there are newer versions of those applications too that runs just as well, but if someone wants to run the original 1.0 stuff (and they do for whatever reason), it still compiles and builds and runs just the same as it did then. There aren't even any hoops to jump through. Install a modern JRE and run the app jar. It just works. Install a modern JDK and recompile the same 20 year old source just as well. Fire off the same Install4J project and build the installer just the same.
Java's not everyone's cup of tea (pun intended), but the concept of "write once, run anywhere" has served me well for over two decades and I've not seen any reason to believe the same won't be true two decades from now (despite Larry's best efforts).
Re: (Score:2)
And I pretty much only worry about Java to access IPMI. And it's the biggest nightmare ever!
I have virtual machines that are explicitly blocked from getting any updates so that I can keep this access working. Because after each JVM update it's hours and hours of work to get it working again.
(Browser updates are equally problematic)
Just laughed milk on my keyboard. (Score:2)
My java 1.4 code stopped running a month after I wrote it. So many things broke in the next release.
Re: (Score:2)
In many cases PHP will deprecate something. Disable it by default option and then remove it later. register_globals was a good example.. They turned it default off in one version and then disabled it completely in a later version. They are forgiving, but not forever. It's a trap PHP coders often fall into where they don't pay attention to the depcrications (and ignore warnings in general) and are somehow shocked when their code doesn't work at some point.
C90 + minimal dependencies + stable APIs (Score:5, Insightful)
That code will live a long time.
Re: (Score:2)
Some of my older C99 code from 15 years ago works, but needs some small fixes with each new GCC version to handle the new compile warnings and some old code it now errors on. GCC has gotten more strict over time.
Mind you that's not a bad thing and the fixed version will still work in older versions of GCC
LAMP code still runs 20 years and counting (Score:5, Interesting)
I have production Perl code that is over 20 years old still reading instruments (Opto22, RM Young weather, Power control outlets, 1wire temperature, etc.) and displaying data and plotting via GnuPlot. Our in-house developed operation/maintenance log is nearly 25 years old and still functional and being used with over 50 thousand MySQL entries comprising the knowledge base of our org.
Re:LAMP code still runs 20 years and counting (Score:4, Interesting)
Same here - I have several perl programs I wrote over 20 years ago still running just fine.
I just checked on one that, according to the Revision History comments, I first wrote in Feb 1999. It's so old that I used RCS for version control.
It's not a huge program, but not a trivial five-liner either - according to sloccount, it has 1294 lines of perl code. 961 LOC in the main script, the remainder in various support programs.
---
BTW, while I've learned to ignore the white-space issue with python (resigned acceptance, not liking), one of the things I've come to really dislike about the language is how fragile it is - even minor version updates tend to break it. Which is why they came up with that #!/usr/bin/env abomination and all the virtualenv nonsense, I suppose.
Re: (Score:2)
Pretty much all my 20 yo code still runs.
Times are different now, I guess. Or whatever their excuse is.
Re:LAMP code still runs 20 years and counting (Score:4, Interesting)
I haven't coded RPG II/III/400 on an AS400 since the late 1990s, but after finding a free public AS400 server (pub400.com), for the sake of interest I re-keyed a small program (I only had the fan-fold listing) that I'd written to put the brakes on system hogs (cue the long story about programmers given too much authority). It compiled without errors. The date on the listing is 1996.
I can't run it, the account doesn't have QSECOFR status, but there's no reason it wouldn't run on the current hardware. That's one of the selling points of that system - binaries compiled for the first generation AS400 can be ported to each iteration of the hardware. That's *binaries* - you don't even need to recompile the source.
I've written embedded applications (Score:2)
Who cares? (Score:5, Funny)
Re:Who cares? (Score:5, Insightful)
I get that this was a joke, and it gave me a (small) chuckle, but it still touches a nerve- for those of us sticking to one company for more than a couple years, it's a huge, sucky PITA to have people dump volumes of crappy code into your jurisdiction, only to watch them move on to someplace else as the maintenance cost comes due.
Not sure which is worse- that they're treating a group (that's unglamorous, but important to the company) as a short-term stepping-stone to something they consider "better", or that this strategy works with no repercussions (to them, at least).
Ok, rant mode off.
Re: (Score:3)
I get that this was a joke, and it gave me a (small) chuckle, but it still touches a nerve- for those of us sticking to one company for more than a couple years, it's a huge, sucky PITA to have people dump volumes of crappy code into your jurisdiction, only to watch them move on to someplace else as the maintenance cost comes due.
Speaking as another long-term code maintainer, my irritation is that management tends to give new hires the new development work because they don't want to train them up on the existing code base. What happens though, more times than not, is that the new hire throws together something using their own techniques and coding styles, then quits without leaving behind any documentation. At that point, their code becomes my responsibility and usually I end up depreciating or rewriting it in order to bring it in l
Not likely (Score:5, Insightful)
Re:Not likely (Score:5, Insightful)
Re: (Score:2)
I uysed to comment every line about what I was thinking. Not what it was doing but why it was done this way
The next curator stripped it all out. I can't read my own code anymore.
Re:Not likely (Score:5, Funny)
Re: (Score:2)
While of course comments do not actually down slow down execution of a program, they can ironically slow down the understanding of one.
Because comments can lie. In the end, the only thing that tells you what the code does is the code itself, not the comments that you decorate it with. If you waste your time reading deprecated comments trying to undestand code, it will take you longer to understand what the code is doing than it would if you just read the code.
Where I work currently, there is a requi
Re:Not likely (Score:5, Insightful)
That's crazy. Comments saying what the program does are of course redundant, but comments that describe *why* it does something, or why it *doesn't* do something, are pure gold.
Do you want code monkeys? Because that's how you get code monkeys - people focused on the small, with no overall understanding.
Re: (Score:2)
Re:Not likely (Score:4, Insightful)
it will take you longer to understand what the code is doing than it would if you just read the code.
What the code is doing, is completely obvious.
The question is: why is it doing it that way (strange code) or why it is coded that way (business requirement).
Re: (Score:3)
Good style still doesn't fully replace documenting intent. Which is a very good reason to use comments.
You can surely figure out what the code is doing by reading the code, but WHY is it doing that can never be fully described by the code itself in as plain a language as just writing a comment.
Re: (Score:2)
Slashdot comments, you mean.
Re:Not likely (Score:5, Insightful)
Some function to find proximal triangles might look needlessly complex and stunning simple solution might seem obvious. But there will be comment there saying, "I tried this idea and it did not work out for these cases, so it was taken out. 1m2j 2004 May 14" so valuable.
Write down the design intent and what the algo is trying to do, and some salient points of the method.
Re: (Score:2)
I see you're familiar with my work.
Re: (Score:2)
LOL, ever run across something you wrote a year ago and say 'who wrote this shit'?
Try having a kid, then coding in their early years... Looking back at some of my code from that time, my "logic" did the job, but it was so un-necessarily convoluted I could hardly work out what it was supposed to do.
Re: (Score:2)
Re: (Score:2)
I knew a programmer who never fixed compile warnings and kind of tweaked his code until it mostly did what he wanted. One day it exploded when he tried to compile it 64 bit. Eventually the weight of it all kind of made him lose interest.
One day he finally left the company (there was some disagreement over whether he was let go or was fired. I spent a solid 2 weeks turning each compile warning on and fixing the warnings and suddenly 90% of the bugs were gone.
So yeah, bad code can be recoverable
10 years is hardly long (Score:2)
50+ year old FFT program ... (Score:4, Interesting)
... will not compile without mods, in spite of the fact that it is fully compliant with ANSI Fortran 66. Reason is that current compiler maintainers insist on deprecating certain of F66's features.
Re: (Score:2)
Yeah, Fortran 66 was the first standardized version, but Fortran 77 was the first version that we could probably now characterize as "modern" (which is why it stuck around for so long). I suspect that the deprecated F66's features go back to Fortran IV or even further. I would expect that your program should work today without mods if it was in F77 since there is a huge amount of numerical libraries still in use that are written in F77.
ASP.NET (Score:2)
I have asp.net, vb code easily ten years old that works just fine...as long as it was using the default controls that have been in asp.net forever. Some of the early ajaxcontroltoolkit controls? That stuff broke a long time ago. Third party controls? Somewhat work.
Even updating the ajaxcontroltoolkit controls that broke is not hard. Going back to vb after using C# for a long time. Not really fun, but even that isn't that hard.
Visual Basic (Score:5, Interesting)
Re:Visual Basic (Score:5, Interesting)
I would *love* to have a modern equivalent to VB6. There are serious warts with VB, but the compelling case for it is that it makes creating really pretty complex UIs tolerable in a way that more modern Visual Studio languages seem to have forgotten about. Regrettably, one of the serious warts of VB6 is a stunning lack of rudimentary optimizations (like common sub-expression elimination -- that rudimentary) which means the code is ridiculously inefficient. Contemporary C/C++ compilers from that era could wipe the floor with VB6.
But there are some nice things about it. Like you can use strings as arguments to switch statements (I'm looking at you, C++). It's easy to make pretty complex UIs. You can control whether arguments are call by reference or call by value. And a gazillion fanbois used it to develop games, so that writing the sort of code we use in my laboratory is straightforward because there's almost always an example of someone having done something similar before on the net. For getting a small application running quickly, it's really pretty good, but you have to be far more disciplined about coding than with other languages (like you can't assume that arrays start with 0 ... or 1 ... because they can start with any arbitrary integer index).
In my lab, we have a central appilcation that is used to run our experiments that has been under continual development for about 20 years, in VB6. We recently decided that it had become too difficult to get VB6 and our applications running under Windows 10 (and we presume it will only get worse with time), and decided to switch to a new language / platform that we need to be stable for another 20 years. Visual Studio C/C++ seems to be the only thing going at present that fits the bill.
In terms of stability, though, one of the important, and counter-intuitive aspects of that is that VB6 has 6 not had any updates in something like 15 years. So it is stable. Rock stable. All of the bugs that were there a decade ago are still there. A few new quirks have emerged as VB6 applications are adjusted to run under Win7 and Win10, but a lack of development on the IDE / compiler means that the code from yesteryear more-or-less runs perfectly now.
Re: (Score:2)
Regrettably, one of the serious warts of VB6 is a stunning lack of rudimentary optimizations (like common sub-expression elimination -- that rudimentary) which means the code is ridiculously inefficient.
Stop talking out your ass.
VB6 used the Visual Studio 98 stage-2 C compiler just as VC98 did (C2.EXE) and does literally every optimization that VC98 did for equally functioning C++ code.
The shit that slowed optimized VB6 code down vs optimized C++ code is that not all functionality had to be equal. Everything from arrays to strings to classes have different implementations and functionalities between the languages, their respective standard libraries are also significantly different, and of course the
Optimizations (Score:3)
Interesting.
One thing that VB6 does is detect integer overflows. That costs nothing to do in assembler with traps, but is horrible in C because C grade programmers do not care about errors. If VB6 used the C compiler, then that might mean that the integer overflow checks need to be done very inefficiently, and for every integer operation.
Do not use C/C++. Use either C#.Net or Java. VB.Net is sadly dieing but could also be a good choice if you have lots of VB6 code. C/++ is an archaic system that will c
Re:Optimizations (Score:4, Informative)
One thing that VB6 does is detect integer overflows. That costs nothing to do in assembler with traps, but is horrible in C because C grade programmers do not care about errors.
Checking for integer overflow on x86 and amd64 is not free. It requires an additional instruction (into or jo). But it is cheap enough and should be used by default. You can enable automatic signed overflow checks in gcc with -fsanitize=signed-integer-overflow. I bet other C compilers have similar options too. C/C++ has many disadvantages (especially the memory related stuff), but overflow checking is not it.
Long-lasting hardware running my software (Score:4, Interesting)
"re-run an Apple II program" (Score:3)
Are we talking about code, or hardware? If it's really about code, run your Apple ][e code using any of the Apple ][e emulator available.
Re:"re-run an Apple II program" (Score:5, Interesting)
Try reading an Apple II floppy disk ...
I had the same thought about trying to get some of my old programs to run. Essentially, the only readable media from a long time ago (early 90s) is CD-R discs. The Kodak 50+ year media and the better media from that era (now 25 to 30 years old) worked when I last checked the backups. Hard drives, floppy disks, magnetic tape is almost all useless. VHS is marginal. Much newer DVD+R disks have also failed. It is only the CD-R discs that have had a long lifespan and are readily supported in current equipment.
The odds of restoring from a long-lost backup improve dramatically if the old hardware is still operational. Particularly if it has a working hard disk or floppy disk. However, the next problem is finding a device to talk to the old hardware. RS-232 works well. Kermit is still supported in some terminal clients. Interlnk and Intersvr run well. Use Intersvr on DOS Box or in a VM, and Interlnk on the remote machine. Interlnk has the ability of copying itself across the RS-232 port to older DOS machines. The parallel port solutions, which were much faster, do not work today for lack of a matching parallel port.
Re: (Score:2)
Try reading an Apple II floppy disk
Sorry but that's still hardware, not a code issue.
Re: (Score:3)
Pedantic: It is //e, not ][e. There was a ][, ][+, //e, //c, //c+, and IIgs.
Re: (Score:2)
While Apple almost always called it a IIGS even they called it a IIgs in GS/OS 6.0.1 [toastytech.com] which is the last official [wikipedia.org] version.
Many [google.com] people called it a IIgs. This is due to the fact that the uppercase GS is much smaller than the II so people wrote the GS in lowercase as a compromise.
The difference is that NO ONE ever used ][e grasshopper.
Now get off my LAN. /s
Re: (Score:2)
Then why does ROM Version 3 say IIgs when booting [youtu.be] ?
Irony of Python (Score:4, Interesting)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3)
The worst part with Python is if you get a bunch of old Python code dumped in your lap that utilizes a bunch of libraries and you have no idea where it came from. So not only do you have to figure out what version of Python was used to initially develop and run the code, but what version of the libraries were used as so many libraries seem to constantly introduce breaking changes. It can be nearly impossible unless you can track down the computer where the Python code actually runs, and then you can dive
Re: (Score:2)
We are finding that as a Python code base ages, it gets very expensive to maintain. We went down the Zope path a long ago and so far every one of those projects have cost more to "update" than they cost to write in the first place in just coding hours. The newer frameworks are much cheaper to maintain but there seems to be a excessive amount of problem cases that just shouldn't have been problems at all.
Re: (Score:2)
I know nothing about Python, but this apparently is the reason for the excellent Revelation password manager vanishing from the repositories of the current Mint 20/Ubuntu 20.04 OSs. Possibly Fedora too. The maintainers were working on getting it to work with Python 3 and AFAICT missed the deadline.
Anybody who wishes to use it can now get the 0.5.0 source and install from that. See AskUbuntu.
Say what you will about Microsoft... (Score:2)
But if you are coding using their toolchain and code for their OS, you will be able to recompile and re-run your software 10 and even 20 years from now.
To begin with, you will be able to run the 10 year old binay unmodified.
But let's say you want to recompile. If the code does not compile on the new toolchain, the old toolchain from 10 years ago will run on modern OSs, the new compile will run, and if push comes to shove, you can track down a vintage OS image, install the toolchain from10 years ago on a 10
Re: (Score:2)
It really depends on which Microsoft toolchain that you used. The old software written for Windows 2.0 will almost kind-off work if you deal with the K&R C code and the 16 to 32 bit migrations.
If we are talking about flavor of the month Microsoft code, for example IE 4.0, the code has not aged well. In one application, I embedded IE 4.0 pages via an MFC control. It was the latest cool fad. On the first commercial deployment, I realized that I had to get rid of the IE 4.0 code. It gave my program a
Re: (Score:2)
Microsoft supports the core windows API's for a long-time.
Yup, we're still having to rung Lotus Smartsuite 97 in our Win10 evergreen environment. Plus some old Macromedia apps that went EOS back in 2003. That's not counting all the old internally developed DOS apps (PASCAL?) run from a file server that are coming to light now that Win10 policy prevents them executing until an exception is granted.
Re: (Score:2)
How easy is it to run VisualBasic code today, now that the language is long gone?
Re: (Score:3)
DOS (Score:3)
A DOS utility (.com) running running around 30 years. It is a detail loan calculator written using Zortech c version 1.0
I know of 1 person still using it on Windows in a dosbox.
I should see if I can find on an old diskette
Re: (Score:2)
vDos is also nice and has a little bit better support for printers if you're trying to run old apps. I managed to get patient forms to print out for a small office and they were able to take those print outs and send them to a company that scans medical records (as required for compliance in these modern times). They were happy enough with running the app in an emulator that they never switched away from the DOS app and continue to send duplicate print outs for scanning.
It depends? (Score:2)
Did you install the right version of Python and dependency manager [python-poetry.org] in a container?
No? then sorry, my 50 line script won't run.
Business process specific, API specific (Score:2)
Most of the code I write at this point is glue between a vendor's data API and the specific business processes of the business I work for. It mostly runs in Python 2 with PyQt bindings. Ten years from now? Only if it's actively maintained the whole time, the business doesn't die or change dramatically, we don't switch to a different data vendor, etc, etc. So probably not.
In some ways it's like the scaffolding for a building. The building - in my case episodes of animated TV shows - will live on, but
Don't see why not. (Score:2)
C and ncurses (Score:2)
The stuff that I write tends to be of the "we might look at that again in 20 years" sort; industrial monitoring and the like. I usually use C and ncurses these days, and xforms-toolkit (http://xforms-toolkit.org/) for anything that needs a gui. None of these three things are changing or going anywhere for the foreseeable future.
I wrote a vending machine in Turbo C about 35 years ago that runs on DOS and still works fine. (You can still buy DOS computers, too.) There's also a program that creates product
Yes, it depends (Score:2)
I have code in production use right now that was originally compiled 29 years ago for use on IBM XTs running DOS. It now runs on multi-core Linux boxes, with a recompile.
And I have code written in PHP still running after 25 years, that the powers at PHP.org have been fighting valiantly to break... but they haven't, yet.
"You shouldn't be using the PHP interpreters that run your code! They have serious bugs in [list of functions]!" Yeah, and if I were using those functions, I might be worried about it. I'd us
When it comes to software developers (Score:3)
Yes (Score:2)
All of the code I wrote still works.
I'm not incompetent, and I don't choose frameworks written by the incompetent.
The exception is java, which is now completely broken since you can't crosscompile installers any more; you can only build them natively. So java now counts as a framework written by the incompetent.
Fuck you Oracle.
My code will always run... (Score:2)
...if I design it to never run in the first place!
Yes (Score:2)
C FTW (Score:2)
Our software can, usually (Score:2)
The process is so cumbersome some of the customers refuse to retire any version and keep old versions running in different machines. Thus in Westin
Perl 5 (Score:3)
Given enough hamster wheels (Score:2)
Deeply embedded (Score:2)
Borland Delphi 5 (Score:2)
Re: Borland Delphi 5 (Score:2)
The company I just left is running 20+ Year old Delphi 6 code. I was using Delphi 10.3.3 which is about 20 computer versions later. The code still compiled.
Where we ran into trouble was some of the older components that were no longer supported and used 32-bit specifics. Code that used components still maintained by the vendors was easily compiled as both 32 and 64 bit functional executables.
Code that was straight Delphi compiled without issues. Delphi was designed to be backward compatible but not forw
Is this even a question? (Score:2)
I have a friend that I learned writing code with 50 years ago. We had access to an IBM 1620 and a 1401. He is the type that kept all his old paper tapes and card decks. I didn't.
For the fun of it he still runs those programs written way back when in a simulator.
Same thing for all these "modern" programs. I still have some written on DOS 5 and I can still run those. Those are more than 30 years old.
Is this even really a question?
Comment removed (Score:3)
Lets not get ahead of ourselves (Score:2)
Bourne Shell - write once, run anywhere (Score:2)
Shamlet (Score:2)
Betteridge, Betteridge, my she shed for a Betteridge
Optimised for future hardware (Score:2)
run: yes - update: oh boy... (Score:2)
"dependency hell" is the right keyword there.
I have a bunch of code that's 10, 15 years old. All of it still runs. In its fixed, never-touch-a-running-system environment.
But try to update something, anything, and welcome to refactoring week. That library you want to update, say because of a critical security issue, depends on ten other libs, which have been updated, which pull in... and so on... in the end you update the entire system, half the stuff breaks, the rest isn't backward compatible, the language
My code from 25 years ago is still used (Score:2)
It's also rock stable, refined by the first 10 years or so. My more recent code, in more modern languages, is less stable partly because the components of the language change.
yes (Score:2)
Code (Score:2)
I don't see why not. It's C99. It would have worked 20 years ago, I expect it to work 20 years into the future. Possibly a library update here or there or, in an extreme case, emulation of the underlying environment (e.g. a game written in SDL should work with SDL libraries but it might well be such an old SDL library that it needs emulation of an old DOS environment or similar).
However, the article is far more about people who are trying to run their original code (which worked fine in an emulator) on a
Turbo Pascal from the 1980s (Score:2)
I wrote a system in then 1980s using Turbo Pascal, under MS-DOS to control water meter calibration. It has graphics and multi-tasking (I rolled my own cooperative multi-tasking and open-sourced it back then).. There were no Y2K problems. It last required attention in 2004 because an IO board had to be replaced, and they accidentally swapped the cables when they did it.... swapping them back fixed it. 8)
As far as I know it will outlive me because it does the job, and there's no reason to replace it.
Win32 still working fine after 20+ years (Score:2)
I've got a small command line Windows tool that I wrote - I think in 1997. If you copy a file to the clipboard, you can just run this tool from the command line, and it will "paste" (i.e., copy) the file into the current working directory the command line is in.
I use it every day and it's worked flawlessly in every version of Windows I've had since I wrote it.
It is pretty simple - less than 200 lines of (probably very bad) C. But I'm always impressed that it still Just Works. Windows is pretty amazing somet
Not if it's Python (Score:2)
How many python interpreters do I need today just to run software on my system that other people have written? 3? 4? You're lucky if Python code survives the week.
Re: (Score:2)