Taal lagen

Hé Habr!

Ik breng onder uw aandacht een vertaling van het artikel “Taallagen»door Robert C. Martin (oom Bob).

Taal lagen
Ik breng mijn tijd door met het spelen van een oud spel genaamd Lunar Lander uit 1969. Het is geschreven door Jim Storer, een middelbare scholier. Hij schreef het op een PDP-8 in FOCAL. Zo ziet het programma eruit:

Taal lagen

En hier is de broncode voor FOCAL:

Taal lagen

Jim Storer was een redelijk getalenteerde middelbare scholier. Kijk eens naar deze code. Hij heeft daar een aantal behoorlijk interessante Taylor-uitdrukkingen.

Kortom, ik voer een binaire zoekopdracht uit om de waarde van K te bepalen die, bij consistent gebruik, het schip perfect zal laten landen. Dus heb ik het programma zo aangepast dat het slechts één waarde accepteert en deze vervolgens meerdere keren toepast totdat het schip landt of neerstort. Terwijl ik dit schrijf, weet ik dat het antwoord tussen 76.40625 en 76.4453125 ligt en ik zal 76.4257813 proberen. Ik begin te denken dat ik geen tijd meer heb voordat ik het antwoord vind.

Ondertussen viel het me op dat ik dit programma op een emulator draaide PDP-8, die in Lua voor de iPad schreef.

Dus, oké, laten we hierover nadenken.

  • iPad heeft een chip A8X, met drie kernen die op gigahertz of zo draaien.
  • Lua is geschreven in C en compileert naar A8X.
  • Mijn PDP8-emulator is met behulp van het pakket in Lua geschreven CODEA uit de sectie Twee levens links.
  • FOCAL is eind jaren zestig geschreven op een PDP1960.
  • Maanlander is geschreven in FOCAL.

Dit zijn dus A8X, C, Lua, PDP8 en FOCAL. Dit zijn vijf verschillende talen. Vijf verschillende mechanismen die de machine vertellen wat ze moet doen; ze zijn allemaal op elkaar gestapeld!

Wat het is? Waarom zijn er zoveel talen? Vergeet iPad, PDP-8, C, Lua en al het andere. Waarom zijn er zoveel talen?

##Waarom zijn er zoveel talen?

Denk er over na! Hoeveel programmeertalen kun jij opnoemen? Hier, laat me je een klein lijstje geven:

  • FORTRAN
  • IETS
  • COBOL
  • SNOBOL
  • LISPELEN
  • BCPL
  • B
  • C
  • SIMULA
  • KOETJES EN KALFJES
  • EIFFEL
  • C + +
  • JAVA
  • C#
  • PYTHON
  • ROBIJN
  • LOGO
  • LUA
  • BASIC
  • PL/1
  • JAVASCRIPT
  • GO
  • DART
  • PROLOG
  • VOORT
  • SWIFT
  • ML
  • OCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOCAAL

Je kunt natuurlijk ook anderen bedenken die ik nog niet heb genoemd. De vraag is: waarom zijn het er zo veel? Op deze vraag kan eigenlijk maar één antwoord bestaan. De reden waarom er zoveel computertalen zijn:

Wij vinden ze niet leuk.

Nou ja, misschien is dat een te sterke uitspraak. Misschien moet ik zeggen:

We waren in Hollywood.
Wij waren in Redwood.
We staken de oceaan over voor de gouden code.
We waren gek geworden
Het is zo'n dunne lijn.
Hierdoor gaan we op zoek naar de gouden code.

En wij worden oud.

Oké, misschien moet ik voor mezelf spreken... Wil je niet gewoon tegen Neil Young schreeuwen dat hij moet stoppen met klagen en een leuke meid moet zoeken en bij haar moet gaan wonen? Wilde je hem niet vertellen dat de zoektocht naar een hart van goud zinloos was? Vertel eens, wat zou hij ermee doen als hij het vond?

En wat zouden we doen met een ideale taal als we die zouden vinden?

We hebben PDP-8- en FOCAL-emulators gemaakt om "Lunar Lander" te spelen, geschreven door een middelbare scholier in 1969!

Dat is wat ik denk.

Ga ermee om. Stop met zoeken. Er bestaat geen perfecte taal. We hebben overal gezocht. We keken van boven en van beneden. We keken in en uit.

We hebben de talen van beide kanten bekeken.
Binnen en buiten
en dat doen ze op de een of andere manier nog steeds.
Laten we niet vergeten dat dit taalkundige illusies zijn.

Wij begrijpen werkelijk niets van talen...
… helemaal niet.

Ja, vandaag is een ongewone dag.

Maar toch is het punt:

We hebben geen andere taal nodig.
We hoeven de weg naar huis niet te weten.
Het enige wat we willen is verder gaan dan het leven.
S.Q.L.

Ja, vreemde dag.

Dus hier is één gedachte. Misschien moeten we stoppen met het creëren van nieuwe talen en gewoon kalmeren en er een of twee uitkiezen die echt goed zijn. Dit zal het leven een stuk makkelijker maken, nietwaar?

En voor het geval je het je afvroeg: 76.43844461 zorgt voor een behoorlijk goede landing van 2.23 MPH.

Bron: www.habr.com

Voeg een reactie