Why are transactions separate in a block? I'm just getting started looking at bitcoin and it's protocol, so this might be an incredibly stupid question. Why does bitcoin have a separate concept of transactions? Wouldn't it be better for each block to have a bunch of inputs and a bunch of outputs without separating them as individual transactions? This way it's more anonymous and private, since anyone trying to track an public key is stopped since their transactions are mixed with hundreds of others?

I guess technically, you could do that right now, by making one transaction with hundreds of inputs and outputs and mining that. I'm not asking why transactions are propagated by the nodes, I'm asking why are they stored separately in the final blocks?
An interesting idea, but I don't think it technically works out. 


Transactions include a digital signature of the set of inputs and outputs in a transaction. This signature could not be validated if the inputs and outputs where not linked. 
Since signatures wouldn't be tied to specific outputs/inputs, what would stop a greedy miner from including your inputs but not your outputs? 
Outputs can be created and spent in the same block. So you can't list all inputs, and then list all outputs, because some of those inputs depends on those outputs being known first. (There may be a work around for this, but it complicates things)