Ok, so if you're not going to do damage types (or even more complicated things like weapon versus armor type tables) then how should you go about meaningful weapon differentiation?
Well, first off, why would you want to? Isn't that a pretty finicky idea?
Yes, it kind of is. And it's entirely possible (and reasonable) even, to create game with no weapon differentiation, or with nothing more complicated than light, medium and heavy weapons. This totally works, and it allows for dramatic differences in color without slowing down the mechanics. You have a longsword and I have a mace and he has a katana and she has something from a Star trek episode that only she can pronounce, but we all just roll 1d8 for damage, so it all works out.
But sometimes people like differentiation to have teeth. Sometimes it's a sense of 'realism' but more often it just the general desire to have system reinforce and support our choices.
If you're going to do that, you need to make sure that the difference between weapons exist on more than one axis. Now, damage will almost always be one axis, but the other might be speed, accuracy or something else. As an example, one of the baseline weapon choices you can make in 4e is whether you want a weapon that's +2 to hit and 1d10 damage or +3 to hit and 1d8 damage. Deep math nerds can tell you a lot of details about that tradeoff, but to jo reader, that seems about right.
Two axes (axis, plural, not the chopping thing) helps, but it still produces a pretty straightforward curve of tradeoffs that gets easy to calculate on. The obvious solution is to add more axes - speed and penetration and, yes, even damage type. Provide enough differentiators and choices become inobvious, which is desirable.
But that is, frankly, a pain in the ass. It makes weapon stat blocks complicated and unreadable, and virtually guarantees that some number cruncher will find some specific weapon that is just unbalancingly badass if used just so. The rewards of complexity are quickly bogged down by the drawbacks.
A good compromise is to use an exception-based system. That is to say, some weapons may have keywords which grant them special rules. Now, this may seem fancy pants, but this idea has existed for as long as there have been bastard swords. The introduction of a special rule (you can use it in one OR two hands!) made the weapon interesting and appealing in a way that was difficult to precisely measure against. You can add these special rules individually (as was the case with the bastard sword) but it's often easier to come up with a set of keywords for frequently occurring effects.
The joy of this method is that because these are exceptions, they don't introduce any more than the bare minimum of necessary complexity. Now, yes, this can spin out of hand - it would be easy to conceive of a system where EVERY weapon has multiple keywords (the longsword is "Versatile, Stabbing, Slashing" while the dagger is "Stabbing, slashing, nimble, concealable") but at that point you're just recreating the axes problem all over again.
Now, if that complexity is what you want, then totally go for it. My aversion to it is at least partially a taste thing (albeit a taste thing that the larger part of the market seems to bear out). But otherwise, look at creating simple differentiation with 2 axes, then layer just enough keywords on top to spice up the mix.
At least that's how I'd do it.