ago와 before의 차이를 알려면 우선 이 두가지의 개념을 이해할 필요가 있습니다. ago와 before는 둘 다 "~전에"라는 뜻을 나타내 그 의미가 비슷하긴 하지만 기준 시점이 다릅니다.
ago는 부사로서 현재시점을 기준으로 "지금부터 ~전에"라는 뜻을 나타내므로 항상 과거시제와 함께 쓰입니다. "~"에 해당되는 부분, 즉 '얼마나 오래'에 해당되는 부분은 2 weeks, 3 years, a long time 등과 같은 기간이 ago 앞에 주어집니다. ago 바로 뒤에 from now (지금으로부터)가 생략되어 있습니다.
(a) I came here 10 months ago.
(나는 여기에 왔다 / 지금으로부터10달 전에)
Ago는 과거의 특정 시점을 나타내므로 "~ 동안 내내"를 나타내는 for와 함께 쓰일 수 없고, "과거 특정 시점이래 현재까지"를 나타내는 since와 함께 쓰일 수 있습니다.
(b) I have been here for 10 months ago. [틀림]
→ I have been here since 10 months ago.
(나는 여기에 있어 왔다 / 10달 전 이래로 현재까지)
before는 "~보다 이전에"라는 뜻으로 전치사, 부사, 접속사로 쓰입니다. before의 기준 시점은 before 다음에 나타나므로 '기준 시점이 언제인가'에 따라 시제는 현재(완료)시제, 과거(완료)시제, 미래(완료)시제가 쓰일 수 있습니다.
(c) The accident happened the day before yesterday. [전치사]
(그 사고는 일어났다 / 어제 전날에 (=그저께))
(d) I have seen that movie before. [부사] {before 뒤에 now 생략}
(나는 그 영화를 본 적이 있다 / 전에 (= 현재 이전에))
(e) I will take a trip around the world before I die. [접속사]
(나는 세계 여행을 취할 것이다 / 내가 죽기 전에)
그러면, 다음 두 문장 중 어느 것이 맞는 것일까요?
(f) Eyeglasses were invented as long ago as the 1300s.
(안경들은 발명됐다 / 그 만큼 (지금으로부터) 오래 전에 / 1300년대 만큼)
(g) Eyeglasses were invented as long before as the 1300s.
(f)에서 ago의 기준 시점이 생략된 from now이므로 (f)의 의미는 맞습니다. 또한, 시제도 과거로서 맞습니다.
(g)에서 before의 기준 시점이 그 뒤에 나와 있지 않아서 의미가 어색합니다. (d)에서처럼 before 뒤에 now가 생략된 거라면 long before now (지금 전 오래동안)이 어색합니다. 또한, 시제도 과거가 아니라 현재완료라야 합니다.