The project

Pages: 12
What is you bigest programmging project that you made or you will make?
I'm very new to programming but I'm working on a text-based RPG. I havent gone too far but its taught me more concepts that I can remember.
So far under 1000 lines.

Ever? I plan to write the program for, and building, a robot that can take over the world. It will be able to reproduse itself, and improve on its design, so that it might replace the human race. I will use it to make/bring me lemonaid in the summer, and to mow my lawn.
I'm writing blackjack game now and it is my first serious programming project. Everything goes really good. Main code i made in one day (actually three days. Two days wasn't good so i deleted all my code and third day I made main code in 4h.)
Now I'm trying to add colors, primitive card pictures, money counting and and game will save rezults to text file. I think I'll post code when I'll finish it.
Last edited on
Large applications tend to be the work of several developers, which makes it hard to say how large any individual contribution is.
There are also projects that are made up of several seperate applications (at the moment I am working on software to control a particular piece of hardware - there is the embedded code on the DSP and the communications / control software on a PC - both are needed for the 'application' to be useful).
C++ can also be coded in a range of styles - it has a lot of scope for very concise code so that the same algorithm can be written on 2 lines or 10. Personally, I often prefer the 10 line version as the intent fequently clearer but that does not make my code 5 times as complex - in fact the reverse is true!
In terms of actual numbers, the Delphi applcation I work on is ~270,000 lines, the C++ apps are smaller but probably in the region of 100,000 lines.
These are, however, very modular designs, with much of the code being effectivly 'library' routines, so day to day I am only considering changes within about ~1000 lines of code (and actual changes may only be to 10-20 lines of code).
That, as much as anything, is the task facing a 'professional developer' - you have to be able to comprehend large volumes of code and quickly identify the sections that are relevant to a given problem:-)
+1 to Faldrax.

I've worked on applications with >1million lines of code.

Developed by myself from scratch. I've done applications in the 30k LOC range in C++. The first 20K lines are developed very quickly, but after that it tends to become alot of smaller changes and code re-factoring so the code doesn't tend to grow as fast.
I am currently involving in the development of a huge distributed systems project... I'm not sure of the line count, but it is easily three times the size of the 4+ million line project I was on before it.

Production codebases can be astonishing in size.

As far as personal applications, somewhere around the 5,000-10,000 line mark is where I just get sick of working on the same's tough to finish anything that large alone.
Well myself i've written a good 20,000 lines in some game programming i've done with c#. Now i'm mainly focused on c++ as i'm finishing my studies at the moment for my game programming certification with Atari :)
250 lines.

I suck.

I'm working on a new one in the area of 1000 lines, but that pales in comparison to, say, Zaita's 1,000,000+ line programs.


:S (I feel so mediocre...)

Oh, and will make? Gosh, for a hobby, that could be low. But if I ever use this as a job, maybe in the hundred thousands range.

EDIT: Fixed a few typos.
Last edited on
You will learn that with any business application you build that ALOT of code is allocated to validating input from users. You really have to idiot proof everything they can enter. Unfortunately, validation is tedious and requires significant amounts of code. More-so if your using a test-driven methodology.
Have to agree with Zaita there. The only program that I've done from scratch was a version of hangman which ran to 150 lines - much of which was making sure the input was valid.

I'm learning C++ though as parts of the flight simulators I work with are written in C++ and the rest is Fortran in C++ wrappers, the whole lot working under the control of a real time shell on Windows 2000 / XP. No idea how many lines but there are a couple of hundred modules, mostly well commented fortunately. It's not my main job on the site but knowing how to use the code is incredibly useful when fault finding.
Fortunately one thing Windows does allow you to do is use controls that limit the users ability to mess up - radio groups, fixed list combo boxes, etc. all allow you to control the options the user can input, and save a lot of user validation code.
If only it were as easy to control users requirements, and their ability to realise they must have 'just one other thing...' half way through the project!
I would like to see just for once the you're-an-idiot-so-screw-you UI design philosophy. It's the one where no user input is checked with anything, and if someone enters alphabetic characters where numbers are expected, the whole application crashes. If the app is ran from a server, it should also display in the server screen (assuming there's one) in big red letters the name of the idiot responsible.
On the other hand, if the user enters contextually invalid information, such as percentages that don't add up to 100%, instead of saying so, the application silently corrects the values and does the calculations with wrong data.
And no checkboxes, radial buttons or nothin'. Just input-the-index-of-the-choice-you-want menus and bit fields with no checks. For example: the choices are [0;6) (never start at one); input is trucated with mod 6. Another example: bit field "1012310"=="1010110".

This philosophy has the following up-sides:
* Users have to actually think before they type, thus forcing a use of higher brain functions and promoting self-sufficiency, thereby reducing calls to the help desk or whatever.
* It gives programmers a chance to focus on more important aspects, like testing and adding more functionality.
* It reduces code size.
* It makes users grateful when input is acutally checked (and only because invalid input could cause catastrophic effects. "Catastrophic" is anything above "invalid user input has just created a miniature black hole").
Last edited on
Many years ago a friend of mine added an internal user error count to some software he was working on.
As the user error count grew higher, the tone of the error messages grew less 'helpful', for example;
"Please enter a number between 1 and 10"
"12 is not between 1 and 10, please try again"
"Enter a number between 1 and 10!"
"NO! A number between 1 and 10, how hard can that be?"
"Are you reading these messages, between 1 and 10!!!"
"I give up, since you can't work it out I'll just use 5!"
Wow... helios... I'm impressed with the sarcasm there. Seriously. :-D

In all seriousness, it is unfortunate that people assume computers will think for them... But, I've learned to never assume anything -- I've given my share of bad input, on my own programs (unintentionally, I mean). So I'm pretty careful to bullet-proof stuff anymore.

The nice thing about UI, though, is often you can obviate a lot of bad input by leading the user. :-)

As to the OP's question, I think the largest program I ever wrote myself was just under 9 or 10 thousand lines of code (not counting auto-generated files and libraries other people wrote). I still plan to add some super-powers to it, so I suspect it will grow another couple thousand before it hits its final version...

Most programs I write though are pretty small. For example, one program I am pretty pleased with is mpath, a little Win32 command utility to manage and manipulate the PATH environment variable. (It isn't as easy as you'd think on Windows.) It is a pretty complete and powerful little utility I use all the time. It is about 1500 lines.
I would really like to design a dialog like that one day, at least one that was in the least used part of the software and would force the user to read the manual. Any user who {asks in a forum about that dialog will be automatically banned|calls the support line about that dialog will be hanged up on}.

Anyway, I was so amused at the idea of users struggling with the computer that I forgot to answer the question.
The biggest program I wrote is a game engine. Specifically, a visual novel engine. You know those "choose you own adventure" books? Kind of like that but on a computer screen and with graphics and sound.
It's kinda hard to measure, since I decided to put every class in a file of its own, but It's more than 7500 LOC, counting comments, of which there are few. And it's not even complete: it's a complete rewrite of an older engine, and 45% of the language commands are unimplemented.

The previous record-holder was a very simplified Sims clone I wrote as a final project for Lab I (I was almost a year ahead of everyone). 3000 LOC in QBASIC. BASIC lines are worth less than C++ lines, so the interpreted machine code was very short.
It got me a 7. A 7?! Mother fucker. It even had pseudo-threading (I manually simulated context switches from inside a loop). That teacher was a bitch.

Duoas: Does your program update PATH without having to reboot? If so, I'd be interested in it.
The context loop itself should have got you a better grade...

Yes, mpath updates (and cleans) the path without reboot. I've recently lost all my webspace, so it isn't currently available online. But if you like I can email it to you.

I first wrote it in C++, but rewrote it in Delphi because D5 produced a significantly smaller executable. The full source is Boost-licenced. (You get both C++ and Delphi/FPC sources and complete documentation.) I can also bundle the 130K EXE if you like (93K without the icon).

Back in the days of MS DOS, you could follow the PSP chain back to the shell, and modify the shell's environment variables directly. Windows forbids that kind of thing. (Plus, PSPs are no longer linked in a chain, and are pretty much obsolete anyway.) So to do it means injecting code into the command shell's process and manipulating the variables that way. It is an interesting exercise.

Mpath only modifies (potentially) two variables, but the code can be adapted to do other things too. PM me where you want me to send it if you want it. I think you'll like it.

I don't know if it will work under Vista. While it was designed for Win32, Vista has made some significant modifications to the Windows API.
If we wish to count lines of code, we should not regard them as lines produced but as lines spent. (Edsger Dijkstra).

In this spirit: my biggest achievement was a two-line shell command doing what was supposed to take me two weeks.
/me interest piqued

Care to share?
Pages: 12