Språklager

Hej Habr!

Jag uppmärksammar dig på en översättning av artikeln "Språklager» av Robert C. Martin (farbror Bob).

Språklager
Jag ägnar min tid åt att spela ett gammalt spel som heter Lunar Lander från 1969. Den skrevs av Jim Storer, en gymnasieelev. Han skrev det på en PDP-8 i FOCAL. Så här ser programmet ut:

Språklager

Och här är källkoden för FOCAL:

Språklager

Jim Storer var en ganska begåvad gymnasieelev. Ta en titt på den här koden. Han har några ganska intressanta Taylor-uttryck där.

I grund och botten gör jag en binär sökning för att bestämma värdet på K som, när den används konsekvent, kommer att landa skeppet perfekt. Så jag modifierade programmet så att det bara accepterade ett värde och använde det sedan flera gånger tills skeppet landade eller kraschade. När jag skriver detta vet jag att svaret ligger mellan 76.40625 och 76.4453125 och jag ska försöka 76.4257813. Jag börjar tro att jag kommer få ont om tid innan jag hittar svaret.

Under tiden föll det mig att jag körde det här programmet på en emulator PDP-8, som skrev i Lua för iPad.

Så, okej, låt oss tänka på det här.

  • iPad har ett chip A8X, med tre kärnor som körs på gigahertz eller så.
  • Lua är skriven i C och kompileras till A8X.
  • Min PDP8-emulator är skriven i Lua med paketet CODEA från avsnittet Två liv kvar.
  • FOCAL skrevs i slutet av 1960-talet på en PDP8.
  • Lunar Lander skrevs i FOCAL.

Så dessa är A8X, C, Lua, PDP8 och FOCAL. Det är fem olika språk. Fem olika mekanismer som talar om för maskinen vad den ska göra; de är alla staplade ovanpå varandra!

Vad det är? Varför finns det så många språk? Glöm faktiskt iPad, PDP-8, C, Lua och allt annat. Varför finns det så många språk?

##Varför finns det så många språk?

Tänk på det! Hur många programmeringsspråk kan du nämna? Här, låt mig ge dig en liten lista:

  • FORTRAN
  • NÅGOT
  • COBOL
  • SNOBOL
  • LÄSPA
  • BCPL
  • B
  • C
  • SIMULA
  • SMÅPRAT
  • EIFFEL
  • C + +
  • JAVA
  • C#
  • PYTONORM
  • RUBIN
  • LOGOTYP
  • LUA
  • GRUNDLÄGGANDE
  • PL/1
  • JavaScript
  • GO
  • PIL
  • PROLOG
  • VIDARE
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOKAL

Du kan naturligtvis tänka på andra som jag inte har nämnt. Frågan är varför det finns så många av dem? Det kan egentligen bara finnas ett svar på denna fråga. Anledningen till att det finns så många datorspråk:

Vi gillar dem inte.

Tja, det kanske är ett för starkt uttalande. Jag kanske borde säga:

Vi var i Hollywood.
Vi var i Redwood.
Vi korsade havet för den gyllene koden.
Vi var ur våra sinnen
Det är en så fin linje.
Detta får oss att leta efter den gyllene koden.

Och vi börjar bli gamla.

Okej, jag kanske borde tala för mig själv... Vill du inte bara skrika på Neil Young att han ska sluta klaga och hitta en trevlig tjej och bo med henne? Ville du inte berätta för honom att sökandet efter ett hjärta av guld var meningslöst? Säg mig, vad skulle han göra med den om han hittade den?

Och vad skulle vi göra med ett idealiskt språk om vi hittade det?

Vi skapade PDP-8 och FOCAL-emulatorer för att spela "Lunar Lander", skriven av en gymnasieelev 1969!

Det är vad jag tror.

Hantera det. Sluta leta. Det finns inget perfekt språk. Vi tittade överallt. Vi tittade uppifrån och under. Vi tittade in och ut.

Vi tittade på språken från båda sidor.
Inifrån och ut
och gör det fortfarande, på ett eller annat sätt.
Låt oss komma ihåg att detta är språkliga illusioner.

Vi förstår verkligen ingenting om språk...
… alls.

Ja, idag är en ovanlig dag.

Men poängen är ändå:

Vi behöver inget annat språk.
Vi behöver inte veta vägen hem.
Allt vi vill är att gå bortom livet.
S.Q.L.

Ja, konstig dag.

Så här är en tanke. Kanske måste vi sluta skapa nya språk och bara lugna ner oss och välja ett eller två som är riktigt bra. Detta kommer att göra livet mycket lättare, eller hur?

Och om du undrade, 76.43844461 ger dig en ganska bra landning på 2.23 MPH.

Källa: will.com

Lägg en kommentar