It was always my understanding that all plants produce flowers. This is something that my grandmother told me. I recently was told about how conifers produce spores, and so grandma was wrong.
Further research tells me that only ‘flowering plants’ produce flowers. I guess this makes sense, but the distinction between flowering and non flowering plants is curious to me. The distinction breaks all plants into two categories: the angeosperms (flowering plants) and gymnosperms (cone bearers).
Technically, all plants reproduce but not all use flowers.
All plants that have flowers produce seeds surrounded by a fleshy outside. We call apples fruit as well as pears, oranges, and pineapples.
My understanding is that fruit is good to eat because the plant puts the brightly colored flesh around the seeds in order for a herbivore to be attracted to it and then deposit the seeds away from the parent plant.
Tomatoes are a fruit. Vegetable is a title given to things that are vegetative growth such as the tasty root of a carrot plant. There are no seeds in a carrot root. Likewise, the stem leaf of the rhubarb plant is a vegetable. Broccoli, cauliflower, Brussel sprouts, and asparagus are vegetables. No seeds within the eaten portion of these.
This begs the question: why do we call them vegetables? The answer is an excellent example of the peculiarity of humans. Since we put them on a salad, they are veggies.
Well, this is silly.
I really would like to see a list of toppings at a pizza place broken into categories of vegetables (spinach, asparagus) fruit (olives, tomato, peppers) and fungus (mushrooms). It seems that we just associate veggies with pizza toppings and never associate fungus or fruit with pizzas unless it is a fruit pizza.
These pizza distinctions are far from botanically correct but are used commonly. The absolute answer is that if we want to call tomato a fruit or vegetable, first we must come to an agreement on the definitions of these words: fruit and vegetable which seems impossible because they mean two different things to different people.