473,394 Members | 1,887 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

Let's write a c program, without knowing what it does...

Let's write a c program, without knowing what it does...

Some of you may recall Jim Roger's excellent series of posts (on
comp.programming) exploring the implementation of common software
activities in different languages by requesting small working programs
as source.

Well, having thought & read about the benefits of teamwork, oss,
extreme programming etc i thought, instead of writing software that
has a known purpose - why not do the opposite, write a program the
purpose of which isn't known until it's done!

Kinda like the write a line and pass it along game of storytelling.

Now, i'm not sure if this will register as fun to anyone, or if it
will work out, but.....

I'd like some volunteers to write the functions that's aren't detailed
in the standard C program below.

I chose standard C because it's well known and cross posted to c.l.c
because clc residents can help pick out code issues, and perhaps have
some fun too - or just question the pointlessness of this exercise!
Hope this doesn't offend the purpose of clc.

Just pick one function, whatever you like, and write the function in
any way you see fit so that it will robustly fit into the simple
program below, the more imaginative it is, the more it will stretch
robustness and (hopefully) demonstrate the value of standards and
structured programming, or something..:

#include <stdio.h>

/* function definitions missing! */

int main()
{
int num1,num2,num3;

num1=GetAnInteger();
num2=GetAnInteger();

num3=DoAnOperation(num1, num2);

DisplayResult(num3);

return 0;
}

Note that anything that returns an integer must return a valid integer
whatever the size of int on the target platform. So the person who
chooses 'DoAnOperation' has an extra challenge, in designing something
interesting that produces a meaningful return (though it doesn't
*have* to be meaningful!). The other two functions might be easier,
but who knows what you may come up with.....

Regardless of the content of the functions, we should all be able to
compile any combination using the above on an iso standard compliant c
compiler and get a working program, even though we never planned what
it should do in detail!
Nov 13 '05 #1
24 3203
gs****@mailcity.com (gswork) wrote:
<snip>
What the heck.
#include <stdio.h>

/* function definitions missing! */
int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}
int main()
{
int num1,num2,num3;

num1=GetAnInteger();
num2=GetAnInteger();

num3=DoAnOperation(num1, num2);

DisplayResult(num3);

return 0;
}
whatever the size of int on the target platform. So the person who
chooses 'DoAnOperation' has an extra challenge, in designing something


I'll let someone else do that part.

Bill, fun fun fun fun fun!

--
The address in the reply to header is correct, but I'll
read it quicker if you drop the word "usenet".
Nov 13 '05 #2
On Fri, 10 Oct 2003 12:25:31 +0000, Bill Godfrey wrote:
#include <stdio.h>

/* function definitions missing! */
int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}


int GetAnInteger()
{
if (CheckSomething()) {
return AskUserForANumber();
}
if (CheckSomethingElse()) {
return DoAnotherOperation(AskUserForANumber());
}
return DoAnotherOperation(42);
}
int main()
{
int num1,num2,num3;

num1=GetAnInteger();
num2=GetAnInteger();

num3=DoAnOperation(num1, num2);

DisplayResult(num3);

return 0;
}


--
NPV

"the large print giveth, and the small print taketh away"
Tom Waits - Step right up

Nov 13 '05 #3
bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote:
gs****@mailcity.com (gswork) wrote:
<snip>
What the heck. Yep; why not.
#include <stdio.h>

/* function definitions missing! */


#include <stdlib.h>

void PrepareResultForDisplay( int *qezcoatl )
{
if ( qezcoatl == NULL )
{
fprintf( stderr,
"PrepareResultForDisplay choked on NULL pointer.\n" );
exit( EXIT_FAILURE );
}
*qezcoatl = Clip( *qezcoatl, LowerLimit(), UpperLimit() );
return;
}
int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}
int main()
{
int num1,num2,num3;

num1=GetAnInteger();
num2=GetAnInteger();

num3=DoAnOperation(num1, num2);

DisplayResult(num3);

return 0;
}


whatever the size of int on the target platform. So the person who
chooses 'DoAnOperation' has an extra challenge, in designing something


I'll let someone else do that part.

Bill, fun fun fun fun fun!


Irrwahn, no riks no fnu.
--
Close your eyes and press escape three times.
Nov 13 '05 #4
Nils Petter Vaskinn wrote:

int GetAnInteger()
{
if (CheckSomething()) {
return AskUserForANumber();
}
if (CheckSomethingElse()) {
return DoAnotherOperation(AskUserForANumber());
}
return DoAnotherOperation(42);
}


int AskUserForANumber() {
char buffer[10];

printf("On a scale of 1 to 10, how much do you like this program?");
fgets(buffer, sizeof(buffer), stdin);

/* Ignore user, they're probably wrong. */
return 10;
}
Nov 13 '05 #5
bd
Tom Evans wrote:
Nils Petter Vaskinn wrote:

int GetAnInteger()
{
if (CheckSomething()) {
return AskUserForANumber();
}
if (CheckSomethingElse()) {
return DoAnotherOperation(AskUserForANumber());
}
return DoAnotherOperation(42);
}
int AskUserForANumber() {
char buffer[10];

printf("On a scale of 1 to 10, how much do you like this program?");


fflush(stdout);
fgets(buffer, sizeof(buffer), stdin);

/* Ignore user, they're probably wrong. */
return 10;
}


--
I never did it that way before.

Nov 13 '05 #6
bd wrote:

Tom Evans wrote:
Nils Petter Vaskinn wrote:

int GetAnInteger()
{
if (CheckSomething()) {
return AskUserForANumber();
}
if (CheckSomethingElse()) {
return DoAnotherOperation(AskUserForANumber());
}
return DoAnotherOperation(42);
}


int AskUserForANumber() {
char buffer[10];

printf("On a scale of 1 to 10, how much do you like this program?");


fflush(stdout);


doh.
(I'm used to c++, where cin and cout are tied so it wouldn't be a problem)
Knew I shouldn't have got involved in this..
Nov 13 '05 #7
bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote in message news:<20*******************@newsreader.com>...
gs****@mailcity.com (gswork) wrote:
<snip>
What the heck.
#include <stdio.h>

/* function definitions missing! */


int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}


Ah, I think i've been somewhat ambiguous!

I'd envisioned many version of the three 'missing' functions that,
regardless of what they do, or how imaginatively, would yield a
coherent working portable c program at the end, however you mixed the
various entrant's entries!

I quite like this idea of a second layer of functions though. perhaps
it should not go too deep or i fear we'd end up with something we
could never compile!
Nov 13 '05 #8
gswork wrote:
bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote in
message news:<20*******************@newsreader.com>...
gs****@mailcity.com (gswork) wrote:
<snip>
What the heck.
#include <stdio.h>

/* function definitions missing! */


int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}


Ah, I think i've been somewhat ambiguous!

I'd envisioned many version of the three 'missing' functions that,
regardless of what they do, or how imaginatively, would yield a
coherent working portable c program at the end, however you mixed
the various entrant's entries!

I quite like this idea of a second layer of functions though.
perhaps it should not go too deep or i fear we'd end up with
something we could never compile!


The whole problem with this thread is that it strikes too close to
home. Most of my specs are hazy and targets are shifting in real time.
The code I write typically starts out with big charcoal gray areas
that look like the nested functions we're seeing here. Sometimes it
seems that it will never get out of that stage. You know, like this
thread.

--
rzed
Nov 13 '05 #9
"rzed" <Di*********@lexisnexis.com> wrote in message news:<bm**********@mailgate2.lexis-nexis.com>...
gswork wrote:
bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote in
message news:<20*******************@newsreader.com>...
gs****@mailcity.com (gswork) wrote:
<snip>
What the heck.

#include <stdio.h>

/* function definitions missing! */

int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}
Ah, I think i've been somewhat ambiguous!

I'd envisioned many version of the three 'missing' functions that,
regardless of what they do, or how imaginatively, would yield a
coherent working portable c program at the end, however you mixed
the various entrant's entries!

I quite like this idea of a second layer of functions though.
perhaps it should not go too deep or i fear we'd end up with
something we could never compile!


The whole problem with this thread is that it strikes too close to
home.


As i write it's less that 24 hours old! You made it sound like some
many-months old thread that's been dragging you down!
Most of my specs are hazy and targets are shifting in real time.
The code I write typically starts out with big charcoal gray areas
that look like the nested functions we're seeing here. Sometimes it
seems that it will never get out of that stage. You know, like this
thread.


That's the reason to curtail it. You never know.....
Nov 13 '05 #10
gs****@mailcity.com (gswork) wrote in message news:<81**************************@posting.google. com>...

ho hum....something silly...

#include <stdio.h>

/* function definitions missing! */
int DoAnOperation(int num1, int num2)
{
return ((num1 & num2) & (num1 | num2));
}


int main()
{
int num1,num2,num3;

num1=GetAnInteger();
num2=GetAnInteger();

num3=DoAnOperation(num1, num2);

DisplayResult(num3);

return 0;
}

Nov 13 '05 #11
----- Original Message -----
From: "Irrwahn Grausewitz" <ir*******@freenet.de>
Newsgroups: comp.programming,comp.lang.c
Sent: Friday, October 10, 2003 3:50 PM
Subject: Re: Let's write a c program, without knowing what it does...

bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote:
gs****@mailcity.com (gswork) wrote:
<snip>
What the heck. Yep; why not.
#include <stdio.h>

/* function definitions missing! */


#include <stdlib.h>


int LowerLimit(void)
{
int how_much_darling;
int ret = 0;
int i = sizeof(int);
unsigned char *p = (unsigned char *)&how_much_darling;

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret -= p[i];
}
return ret >> 3;
}

int UpperLimit(void)
{
static int how_much_darling;
int *pi = &how_much_darling;
int ret = 0;
int i = sizeof(int *);
unsigned char *p = (unsigned char *)&pi;

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret += p[i];
}
return ret << (sizeof(int) - 1);
}

void PrepareResultForDisplay( int *qezcoatl )
{
if ( qezcoatl == NULL )
{
fprintf( stderr,
"PrepareResultForDisplay choked on NULL pointer.\n" );
exit( EXIT_FAILURE );
}
*qezcoatl = Clip( *qezcoatl, LowerLimit(), UpperLimit() );
return;
}
int DisplayResult(int num3)
{
PrepareResultForDisplay(&num3);
printf(FormatString(num3),num3);
}
int main()
{
int num1,num2,num3;

num1=GetAnInteger();
num2=GetAnInteger();

num3=DoAnOperation(num1, num2);

DisplayResult(num3);

return 0;
}


whatever the size of int on the target platform. So the person who
chooses 'DoAnOperation' has an extra challenge, in designing something


I'll let someone else do that part.

Bill, fun fun fun fun fun!


Irrwahn, no riks no fnu.
--
Close your eyes and press escape three times.

Nov 13 '05 #12
"Robert Stankowic" <pc******@netway.at> wrote:
int LowerLimit(void)
{
int how_much_darling;
int ret = 0;
int i = sizeof(int);
unsigned char *p = (unsigned char *)&how_much_darling;
Warning: unsigned char* and int* may have different representations.

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret -= p[i];
Possible undefined behaviour here.
}
return ret >> 3;
Possible undefined behaviour here, see ISO/IEC 9899:1999 6.5#4.
}

int UpperLimit(void)
{
static int how_much_darling;
int *pi = &how_much_darling;
int ret = 0;
int i = sizeof(int *);
unsigned char *p = (unsigned char *)&pi;
See above.

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret += p[i];
See above.
}
return ret << (sizeof(int) - 1);
See above.
}


Sorry, I just couldn't resist... :-)

Regards
--
Irrwahn
(ir*******@freenet.de)
Nov 13 '05 #13

"Irrwahn Grausewitz" <ir*******@freenet.de> schrieb im Newsbeitrag
news:vn********************************@4ax.com...
"Robert Stankowic" <pc******@netway.at> wrote:
int LowerLimit(void)
{
int how_much_darling;
int ret = 0;
int i = sizeof(int);
unsigned char *p = (unsigned char *)&how_much_darling;


Warning: unsigned char* and int* may have different representations.

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret -= p[i];


Possible undefined behaviour here.
}
return ret >> 3;


Possible undefined behaviour here, see ISO/IEC 9899:1999 6.5#4.
}

int UpperLimit(void)
{
static int how_much_darling;
int *pi = &how_much_darling;
int ret = 0;
int i = sizeof(int *);
unsigned char *p = (unsigned char *)&pi;


See above.

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret += p[i];


See above.
}
return ret << (sizeof(int) - 1);


See above.
}


Sorry, I just couldn't resist... :-)


*g*
OK what about:

int LowerLimit(void)
{
int how_much_darling;
unsigned char h_m_repr[sizeof how_much_darling];
int ret = 0;
int i = sizeof how_much_darling;

memcpy(h_m_repr, &how_much_darling, sizeof how_much_darling);
/*This should be OK according to N869 6.2.6 verse 4*/

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret -= h_m_repr[i];
/*If I don't misunderstand N869 6.3.1.3 this is implementation defined
behavior, which was my intention here :) -should work on all
implementations, but give different results*/
}
return ret >> 3;
/*same as above*/
}

/*Same notes apply to the modified UpperLimit()*/
int UpperLimit(void)
{
static int how_much_darling;
int *pi = &how_much_darling;
int ret = 0;
int i = sizeof(int *);
unsigned char pi_repr[sizeof pi];

memcpy(pi_repr, &pi, sizeof pi);

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret += pi_repr[i];
}
return ret << (sizeof(int) - 1);
}

If I did not misunderstand the OP, some surprising/unexpected results are
wanted, bur no UB
Don't resist, strike :))
Robert
Nov 13 '05 #14
"Robert Stankowic" <pc******@netway.at> wrote:

<SNIP>

*g*
OK what about:

int LowerLimit(void)
{
int how_much_darling;
unsigned char h_m_repr[sizeof how_much_darling];
int ret = 0;
int i = sizeof how_much_darling;

memcpy(h_m_repr, &how_much_darling, sizeof how_much_darling);
/*This should be OK according to N869 6.2.6 verse 4*/

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret -= h_m_repr[i];
/*If I don't misunderstand N869 6.3.1.3 this is implementation defined
behavior, which was my intention here :) -should work on all
implementations, but give different results*/
}
return ret >> 3;
/*same as above*/
But still there is ISO/IEC 9899:1999 6.5#4 (same wording in N869):

Some operators (the unary operator ~, and the binary operators <<, >>,
&, ^, and |, collectively described as bitwise operators) are required
to have operands that have integer type. These operators return values
that depend on the internal representations of integers, and have
implementation-defined and undefined aspects for signed types.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

<SNIP>
If I did not misunderstand the OP, some surprising/unexpected results are
wanted, bur no UB
Don't resist, strike :))


Didn't resist, stroke. :)))

--
Irrwahn
(ir*******@freenet.de)
Nov 13 '05 #15
Irrwahn Grausewitz <ir*******@freenet.de> scribbled the following:
"Robert Stankowic" <pc******@netway.at> wrote:
If I did not misunderstand the OP, some surprising/unexpected results are
wanted, bur no UB
Don't resist, strike :))
Didn't resist, stroke. :)))


Grammar nitpick: ITYM "struck".

--
/-- Joona Palaste (pa*****@cc.helsinki.fi) ---------------------------\
| Kingpriest of "The Flying Lemon Tree" G++ FR FW+ M- #108 D+ ADA N+++|
| http://www.helsinki.fi/~palaste W++ B OP+ |
\----------------------------------------- Finland rules! ------------/
"Last year he disrespected me - and then he showed lack of respect."
- Anthony Mason
Nov 13 '05 #16
Joona I Palaste <pa*****@cc.helsinki.fi> wrote:
Irrwahn Grausewitz <ir*******@freenet.de> scribbled the following:
"Robert Stankowic" <pc******@netway.at> wrote:
Don't resist, strike :))


Didn't resist, stroke. :)))


Grammar nitpick: ITYM "struck".


Silly me. 'Struck', of course.
--
Irrwahn
(ir*******@freenet.de)
Nov 13 '05 #17
Irrwahn Grausewitz <ir*******@freenet.de> writes:
"Robert Stankowic" <pc******@netway.at> wrote:
int LowerLimit(void)
{
int how_much_darling;
int ret = 0;
int i = sizeof(int);
unsigned char *p = (unsigned char *)&how_much_darling;
Warning: unsigned char* and int* may have different representations.


The fact that they may have different representations is
completely uninteresting. The result is well-defined for
conversion from any one pointer type to any other, including
those requiring casts. It is only the subsequent reading of that
value that can be dangerous: however, such is not the case for a
pointer-to-unsigned-char. This is *explicitly* sanctioned by the
standard.

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret -= p[i];
Possible undefined behaviour here.


Implementation-defined result or signal, in the case of
underflow; but except in the case of the implementation-defined
signal invoking undefined behavior, I don't see it.
return ret >> 3;


Possible undefined behaviour here, see ISO/IEC 9899:1999 6.5#4.
}

int UpperLimit(void)
{
static int how_much_darling;
int *pi = &how_much_darling;
int ret = 0;
int i = sizeof(int *);
unsigned char *p = (unsigned char *)&pi;


See above.


As before, no problems here.

if(i < 2)
{
return 42;
}
for(i = 0; i < sizeof(int); i++)
{
ret += p[i];


See above.
}
return ret << (sizeof(int) - 1);


See above.
}


-Micah
Nov 13 '05 #18
Micah Cowan <mi***@cowan.name> wrote:
Irrwahn Grausewitz <ir*******@freenet.de> writes:
"Robert Stankowic" <pc******@netway.at> wrote:
>int LowerLimit(void)
>{
> int how_much_darling;
> int ret = 0;
> int i = sizeof(int);
> unsigned char *p = (unsigned char *)&how_much_darling;


Warning: unsigned char* and int* may have different representations.


The fact that they may have different representations is
completely uninteresting. The result is well-defined for
conversion from any one pointer type to any other, including
those requiring casts. It is only the subsequent reading of that
value that can be dangerous: however, such is not the case for a
pointer-to-unsigned-char. This is *explicitly* sanctioned by the
standard.


Yikes. I need some more coffee. =%]

BTW: Are you referring to ISO/IEC 9899:1999 6.3.2.3#7 or is there
any other section in the standard about this matter?
> if(i < 2)
> {
> return 42;
> }
> for(i = 0; i < sizeof(int); i++)
> {
> ret -= p[i];


Possible undefined behaviour here.


Implementation-defined result or signal, in the case of
underflow; but except in the case of the implementation-defined
signal invoking undefined behavior, I don't see it.


Right.

--
Irrwahn
(ir*******@freenet.de)
Nov 13 '05 #19
too many cooks....
Nov 13 '05 #20
Irrwahn Grausewitz <ir*******@freenet.de> writes:
Micah Cowan <mi***@cowan.name> wrote:
Irrwahn Grausewitz <ir*******@freenet.de> writes:
"Robert Stankowic" <pc******@netway.at> wrote:

>int LowerLimit(void)
>{
> int how_much_darling;
> int ret = 0;
> int i = sizeof(int);
> unsigned char *p = (unsigned char *)&how_much_darling;

Warning: unsigned char* and int* may have different representations.


The fact that they may have different representations is
completely uninteresting. The result is well-defined for
conversion from any one pointer type to any other, including
those requiring casts. It is only the subsequent reading of that
value that can be dangerous: however, such is not the case for a
pointer-to-unsigned-char. This is *explicitly* sanctioned by the
standard.


Yikes. I need some more coffee. =%]

BTW: Are you referring to ISO/IEC 9899:1999 6.3.2.3#7 or is there
any other section in the standard about this matter?


I'm referring to 6.3.2.3#7 for conversions between pointer types;
6.5#7 for reading as a character array.

(Of course, alignment problems are nonexistent for the character types,
so actually evaluating the pointer without dereferencing it would
be okay without 6.5#7).

-Micah
Nov 13 '05 #21
Micah Cowan <mi***@cowan.name> wrote:
Irrwahn Grausewitz <ir*******@freenet.de> writes:
Micah Cowan <mi***@cowan.name> wrote:
>Irrwahn Grausewitz <ir*******@freenet.de> writes:
>
>> "Robert Stankowic" <pc******@netway.at> wrote:
>>
>> >int LowerLimit(void)
>> >{
>> > int how_much_darling;
>> > int ret = 0;
>> > int i = sizeof(int);
>> > unsigned char *p = (unsigned char *)&how_much_darling;
>>
>> Warning: unsigned char* and int* may have different representations.
>
>The fact that they may have different representations is
>completely uninteresting. The result is well-defined for
>conversion from any one pointer type to any other, including
>those requiring casts. It is only the subsequent reading of that
>value that can be dangerous: however, such is not the case for a
>pointer-to-unsigned-char. This is *explicitly* sanctioned by the
>standard.
Yikes. I need some more coffee. =%]

BTW: Are you referring to ISO/IEC 9899:1999 6.3.2.3#7 or is there
any other section in the standard about this matter?


I'm referring to 6.3.2.3#7 for conversions between pointer types;
6.5#7 for reading as a character array.

^^^^^
Ah, yes, that's what I was looking for. Thank you.
(Of course, alignment problems are nonexistent for the character types,
so actually evaluating the pointer without dereferencing it would
be okay without 6.5#7).


Regards
--
Irrwahn
(ir*******@freenet.de)
Nov 13 '05 #22
"machine99" <co****@delite.dk> wrote:
too many cooks....


Up to the point where this thread ran out of steam, it did remind me of the
team-based project I had to do for my degree.

On my own, I could have done a half-reasonable job over a weekend. But, we
had to work in a team and we were given the whole year to finish it.

It rather floundered, until one of us spent a weekend on it and came up
with something half-reasonable.

Bill, 'twas not I.

(Sorry, that post had very little point.)

--
The address in the reply to header is correct, but I'll
read it quicker if you drop the word "usenet".
Nov 13 '05 #23
bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote in message news:<20*******************@newsreader.com>...
"machine99" <co****@delite.dk> wrote:
too many cooks....


Up to the point where this thread ran out of steam, it did remind me of the
team-based project I had to do for my degree.

On my own, I could have done a half-reasonable job over a weekend. But, we
had to work in a team and we were given the whole year to finish it.

It rather floundered, until one of us spent a weekend on it and came up
with something half-reasonable.

Bill, 'twas not I.

(Sorry, that post had very little point.)


Never really got steam, but that's ok.

rzed's "The whole problem with this thread " is a great way to ensure
no more contributions, but really it was just a little fun - and too
ambiguous from me.

If you look at sourceforge, or any set of open source open team
projects, an overwhelming number just taxi around and never take off.
In the most successful projects, as in your example, things happen
when someone or some closely knit team, plan the project and work to
deadlines.
Nov 13 '05 #24
gswork wrote:
bi**********@bacchae.f9.co.uk.invalid (Bill Godfrey) wrote in
message news:<20*******************@newsreader.com>...
"machine99" <co****@delite.dk> wrote:
too many cooks....


Up to the point where this thread ran out of steam, it did remind
me of the team-based project I had to do for my degree.

On my own, I could have done a half-reasonable job over a weekend.
But, we had to work in a team and we were given the whole year to
finish it.

It rather floundered, until one of us spent a weekend on it and
came up with something half-reasonable.

Bill, 'twas not I.

(Sorry, that post had very little point.)


Never really got steam, but that's ok.

rzed's "The whole problem with this thread " is a great way to
ensure no more contributions, but really it was just a little fun -
and too ambiguous from me.

If you look at sourceforge, or any set of open source open team
projects, an overwhelming number just taxi around and never take
off. In the most successful projects, as in your example, things
happen when someone or some closely knit team, plan the project and
work to deadlines.


Jeez, I didn't really mean to toss a wet blanket on it. I was just
getting the shakes, that's all. It was only a matter of time until
there was a steering committee and mandatory naming standards and code
reviews and another layer of management and budget overruns and ...
and ... migod, they're starting again!

--
rzed
Nov 13 '05 #25

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Rob Hunter | last post by:
Is there an equivalent to Scheme's LET in Python? LET creates a new binding in the current environment. For example, here's some Scheme code: (let ((x 3)) (let ((f (lambda (arg) (* arg x))))...
14
by: Jay O'Connor | last post by:
Is there a good way to import python files without executing their content? I'm trying some relfection based stuff and I want to be able to import a module dynamically to check it's contents...
77
by: nospam | last post by:
Reasons for a 3-tier achitecture for the WEB? (NOTE: I said, WEB, NOT WINDOWS. DON'T shoot your mouth off if you don't understand the difference.) I hear only one reason and that's to switch a...
13
by: Bob Greschke | last post by:
We have some equipment that communicates at 57600 baud RS232. The path from the PC is USB to a Phillips USB hub, then off of that a TUSB3410 USB/Serial converter. The driver for the 3410 chip...
7
by: Randy Yates | last post by:
Hi, I work in an embedded environment in which we often use a mix of C and assembly code. Thus a recurring requirement is to be able to take a C header file with structure definitions as input...
4
by: petermichaux | last post by:
Hi, I'm hoping for a reason I'm wrong or an alternate solution... I'd like to be able to dynamically include some javascript files. This is like scriptaculous.js library but their solution is...
2
by: Ilkka | last post by:
I have created an C++ application with Windows Forms, ADO and SQL server 2005. Now I need to change something and started debugging the code. Then suddenly I receive an error. "An unhandled...
4
by: bagkalyan | last post by:
please help me.. Yes it is possible to write a program in c without using main. Here is the code: /* prog_without_main.c */ _start() { _exit(my_main()); } int my_main(void)
69
by: raylopez99 | last post by:
They usually don't teach you in most textbooks I've seen that delegates can be used to call class methods from classes that are 'unaware' of the delegate, so long as the class has the same...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.