__proto__ vs prototype

After some research prototype seems to have existed for a long time before dynamic modification was added with __proto__ , and ecma just didn’t bother to modify prototype. But apparently there are actual differences, though this seems vague. The only differences I could find are

- prototype will be automatically inherited while __proto__ won’t

- prototype alone won’t do anything while __proto__ actually has the functionality of a proxy

On second thought this actually makes sense, but I’m not certain it’s correct…
Also are there any other differences?