Fai una ricerca su Google: ci saranno migliaia di implementazioni diverse.