Peer Review of Buck Converter
It looks workable. 

What current?
What Vout? It's 3V3 based on zener but you should say.

First - an alternative:

Are you in the UK? If so, or anywhere else with OK access to components, you probably will never regret making the acquaintance of the MC34063 family of DC DC converter ICs. These are olde and slow by modern standards BUT ultra flexible, as cheap as any alternatives and very easy to use. One would fill this application 

Digikey in stock $US0.61 in 1's in DIP but much cheaper for a few sometimes if you look around. 

Datasheet here see fig16 for a buck converter that uses IC + 2 x resistor, 1 x diode,  x inductor plus filter capacitors for complete solution. Uses internal switch so no Q1. 

Second - comments:

The parts are certainly not optimum, alas.  

The TIP31 is run as an emitter follower so loses at least 0.6V - probably more. It is low beta - whether this matters depends on load current desired.
Swapping to a PNP transistor (or better still a P channel MOSFET) will reduce voltage drop across Q1 as it can be run fully on in common emitter mode. If you can only use what you have that is OK.

1N 4001 is not good above about 1 kHz. Better is eg 1N581x (1N5817 OK). Again, if 1N400-1 is all you have it will work at lower frequencies. As frequency rises losses will too but probably not a major issue here.



3. Better switching: 

Frequency depends on load, L1 and C2. This is a "hysteretic" converter and depends on ripple in C2 to provide hysteresis. This is "informal" but works OK. Output waveform is chaotic. You can make switching squarer and more regular if desired with a whiff of feedback from the Q1-L1-D2   junction back to op-amp R1-D1 reference input. Add say 1k from zener to OA- and a high value R - maybe 100k - from Q1 emitter to OA-. Call this Rfb = Rfeedback. What happens is when Q1 turns off Q1 e goes low and Rfb pulls OA- reference point slightly lower so OA+ has to fall that much more before Q1 turns on again. This provides regenerative on/off switching which helps square up switching waveform. 



4. Even cheaper:  

You can implement this cct without either a 555 or a 358 if desired using 3 transistors total. You would want to use a PNP high side switch though, so no good with TIP31. More on that if desired.  

Elliott Sound Products AN006 Ultra Simple 5V Switchmode Regulator 

This circuit works essentially the same as the original one in this question.
Q1 acts as a comparator and so replaces the 358.
Q2 acts as a driver for Q3 and so replaces the 555 (which was really only being used as a driver).  When the output voltage rises high enough zener  D2 conducts and turns on Q1. Q1 turns off Q2 which turns off Q3 and the polarity of L1 inverts and D1 conducts in the classic Buck Converter off phase. L1 discharging causes the voltage on C2 to rise SLIGHTLY and so keep Q1 on. When the energy in L1 is not adequate to maintain output current the voltage on C2 falls until Q1 turns off, Q2 on , Q3 on and inductor fed from Vin, until Vout rises high enough again and the cycle repeats.
Note he uses a very small resistor value for R1 (47 Ohms).  This means that to turn Q1 on even a little (at about 0.5V Vbe it needs a zener current of I = V/R = 0.5/47 ~= 2 mA. This is LESS than the current at which most zeners achieve rated voltage (often 10 mA - see spec sheets) but high enough that it is close to rated voltage. If R1 is say 1K then Q1 will turn on when the zener is somewhere on its "very soft turn on knee" and Vout will be much lower than may be expected. Assume that Vz is say 4.5V for a 4.7V zener. At turnon of Q1, Vout is ABOUT 0.5V + Vz1 = 0.5 + 4.5V say or about 5V.
To supply Iout Q3 needs a base current of Iout/Beta_Q3 so Q2 needs a base current of Iout/(BetaQ3 x Beta_Q2) and Q1 needs a base current of  Iout/(BetaQ3 x Beta_Q2 x Beta_Q1) = just about nothing, so this circuit tends to switch with a tiny smidgeon of current into Q1_base.
As with the original circuit, operation is hysteretic and relies on the ripple voltage on C2 to switch at all and not just become a linear regulator. (short L1 and it IS a linear regulator).  To make it somewhat more formal in switching a whiff of positive feed back can be provided (same as my comment on original circuit). Here probably a largish value R from Q3 base to Q1 base, OR Q3 collector to Q2 base (probably better)   would do it - the object is to find two points in the switching chain which swing in the same direction at turn on, or at turnoff, and feed some positive feedback signal from the one further along the chain back to earlier in the chain. Here the massively falling V_Q3_C when Q3 turns off provides an ideal source of feedback to Q2_b. The signal has to interact with the base pullup R4 so the resistor value and that of R2 affect degree of hysteresis. 

I built a circuit functionally identical to this in 2001 (I call it the "GSR" = God's Switching Regulator because that's where the circuit came from BUT that's another story (ask offlist if interested)). "My" GSR was the earliest version of this that I've seen (earlier than the Elliott one it seems) BUT I imagine it long predates my use.  



Adding the hysteresis path can usefully improve efficiency due to switching speedup and "squareness" of waveforms. 

Without the added hysteresis switching is "chaotic" and cannot be synced on a 'scope. This is a potential advantage in some applications as it nicely spreads the oscillator radiated energy and lowers the peak emissions.



"GSR" - 12-200V in, 200 V out single stage buck converter.

Here is a simplified version of 'my' GSR circuit.   This was the solution to a requirement for a low wide Vin range power supply for an exercise machine. Vin came from a user powered alternator which acted as the load. Vout was nominally 12v. 

Unknown 1,000s (maybe 10s of thousands) were made. I say unknown as I was meant to be paid royalties but 'things went wrong'. This was initially used in Taiwanese made exercise machines. Vin shown as V100 was usually in the 20-60V range but could reach 200V. Vout  is 12V. Note I uses a 10V zener working more on its soft knee than the Elliott version. . This works well as long as you know what to expect. I used a P ChannelMOSFET as high side switch (which helped minimise drive current needs - which matters when you MAY have almost 200V across RBUK3. The final version may have added (as far I recall after 14 years) a high side emitter follower to speed up the FET switching. Standard advice is that you cannot do wide range Vin switching with a single stage buck converter but this handled 12V-200V OK (16+:1). Efficiency was poor at 200 Volts in (maybe 50%) but that is still only about 6% of what a linear regulator would dissipate. Much better at lower Vin. 
[eg 1 Watt out. At 50% efficiency = 2 Watts in = 1 watt dissipation.
At 200 V in, 12 V out Pdissipated for 1 Watt out = = (200-12)/12 Watts = 15+ Watts!)



Here is an extensive 2004 discussion re the GSR and related matters. Lots of useful material there (if I do say so :-) myself).   . 

Related-ish: At trade shows (and probably in homes) children would set the load to zero and pedal these as fast as they could - pushing Vout to over 200 Volts. This was not a mode that serious users (or the client) valued. I programmed the controller to add load as required when the input voltage got too highy. Sorry kids.
[This used a Z8! which seemed like a good idea at the time.
It wasn't.
If they are anything like they were then,  Don't!].