Warstwy językowe

Hej Habra!

Zwracam uwagę na tłumaczenie artykułu „Warstwy językowe» Robert C. Martin (Wujek Bob).

Warstwy językowe
Spędzam czas grając w starą grę o nazwie Lunar Lander z 1969 roku. Został napisany przez Jima Storera, ucznia szkoły średniej. Napisał to na PDP-8 w FOCAL. Tak wygląda program:

Warstwy językowe

A oto kod źródłowy FOCAL:

Warstwy językowe

Jim Storer był dość utalentowanym uczniem szkoły średniej. Spójrz na ten kod. Ma tam kilka całkiem interesujących wyrażeń Taylora.

Zasadniczo wykonuję wyszukiwanie binarne, aby określić wartość K, która przy konsekwentnym użyciu zapewni idealne wylądowanie statku. Zmodyfikowałem więc program tak, aby akceptował tylko jedną wartość, a następnie stosował ją wiele razy, aż statek wylądował lub rozbił się. Pisząc to, wiem, że odpowiedź leży między 76.40625 a 76.4453125, a spróbuję 76.4257813. Zaczynam myśleć, że zabraknie mi czasu, zanim znajdę odpowiedź.

Tymczasem przyszło mi do głowy, że uruchomiłem ten program na emulatorze PDP-8, który napisał w Lua na iPada.

Więc OK, pomyślmy o tym.

  • iPad ma chip A8X, z trzema rdzeniami pracującymi z częstotliwością mniej więcej gigaherców.
  • Lua jest napisana w C i kompilowana do A8X.
  • Mój emulator PDP8 jest napisany w Lua przy użyciu pakietu KODEA z sekcji Dwa życia po lewej stronie.
  • FOCAL został napisany pod koniec lat 1960. na PDP8.
  • Lądownik Księżycowy został napisany w FOCAL.

Są to więc A8X, C, Lua, PDP8 i FOCAL. To pięć różnych języków. Pięć różnych mechanizmów mówiących maszynie, co ma robić; wszystkie są ułożone jeden na drugim!

Co to jest? Dlaczego jest tak wiele języków? Tak naprawdę zapomnij o iPadzie, PDP-8, C, Lua i wszystkim innym. Dlaczego jest tak wiele języków?

##Dlaczego jest tak wiele języków?

Pomyśl o tym! Ile języków programowania potrafisz wymienić? Oto mała lista:

  • FORTRAN
  • COŚ
  • COBOL
  • SNOBOL
  • SEPLENIENIE
  • BCPL
  • B
  • C
  • SYMULA
  • POGAWĘDKA
  • EIFFEL
  • C + +
  • JAVA
  • C#
  • PYTON
  • RUBIN
  • LOGO
  • LUA
  • BASIC
  • PL/1
  • JAVASCRIPT
  • GO
  • DART
  • PROLOG
  • NAPRZÓD
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERANG
  • ELIKSIR
  • OGNISKOWY

Możesz oczywiście pomyśleć o innych, o których nie wspomniałem. Pytanie brzmi: dlaczego jest ich tak dużo? Na to pytanie tak naprawdę odpowiedź może być tylko jedna. Powód, dla którego istnieje tak wiele języków komputerowych:

Nie lubimy ich.

No cóż, może to zbyt mocne stwierdzenie. Może powinienem powiedzieć:

Byliśmy w Hollywood.
Byliśmy w Redwood.
Przepłynęliśmy ocean po złoty kod.
Straciliśmy rozum
To taka cienka linia.
To każe nam szukać złotego kodu.

A my się starzejemy.

OK, może powinienem mówić za siebie... Nie chcesz po prostu nakrzyczeć na Neila Younga, żeby przestał narzekać, znalazł jakąś miłą dziewczynę i zamieszkał z nią? Nie chciałeś mu powiedzieć, że poszukiwania złotego serca były daremne? Powiedz mi, co by z tym zrobił, gdyby to znalazł?

A co byśmy zrobili z idealnym językiem, gdybyśmy go znaleźli?

Stworzyliśmy emulatory PDP-8 i FOCAL do gry w „Lunar Lander”, napisanej przez ucznia szkoły średniej w 1969 roku!

Tak myślę.

Sobie z tym poradzić. Przestań szukać. Nie ma idealnego języka. Szukaliśmy wszędzie. Patrzyliśmy z góry i z dołu. Zajrzeliśmy do środka i na zewnątrz.

Przyjrzeliśmy się językom z obu stron.
Wewnątrz i na zewnątrz
i nadal to robię, w ten czy inny sposób.
Pamiętajmy, że są to złudzenia językowe.

Naprawdę nic nie rozumiemy z języków...
… w ogóle.

Tak, dzisiaj jest niezwykły dzień.

Niemniej jednak chodzi o to, że:

Nie potrzebujemy kolejnego języka.
Nie musimy znać drogi do domu.
Jedyne, czego pragniemy, to wyjść poza życie.
SQL-a

Tak, dziwny dzień.

Oto jedna myśl. Może powinniśmy przestać tworzyć nowe języki i po prostu uspokoić się i wybrać jeden lub dwa, które są naprawdę dobre. To znacznie ułatwi życie, prawda?

A jeśli się zastanawiasz, 76.43844461 zapewnia całkiem niezłe lądowanie z prędkością 2.23 mil na godzinę.

Źródło: www.habr.com

Dodaj komentarz