Lapisan bahasa

Hai Habr!

Saya membawa kepada perhatian anda terjemahan artikel "Lapisan BahasaΒ» oleh Robert C. Martin (Uncle Bob).

Lapisan bahasa
Saya menghabiskan masa saya bermain permainan lama yang dipanggil Lunar Lander dari tahun 1969. Ia ditulis oleh Jim Storer, seorang pelajar sekolah menengah. Dia menulisnya pada PDP-8 dalam FOCAL. Inilah rupa program tersebut:

Lapisan bahasa

Dan inilah kod sumber untuk FOCAL:

Lapisan bahasa

Jim Storer adalah pelajar sekolah menengah yang agak berbakat. Lihat kod ini. Dia mempunyai beberapa ekspresi Taylor yang cukup menarik di sana.

Pada asasnya, saya melakukan carian binari untuk menentukan nilai K yang, apabila digunakan secara konsisten, akan mendaratkan kapal dengan sempurna. Jadi saya mengubah suai program supaya ia hanya menerima satu nilai dan kemudian menggunakannya beberapa kali sehingga kapal mendarat atau terhempas. Semasa saya menulis ini, saya tahu jawapannya terletak di antara 76.40625 dan 76.4453125 dan saya akan mencuba 76.4257813. Saya mula fikir saya akan kesuntukan masa sebelum saya menemui jawapannya.

Sementara itu, saya terfikir bahawa saya menjalankan program ini pada emulator PDP-8, yang menulis dalam Lua untuk iPad.

Jadi, okey, mari kita fikirkan perkara ini.

  • iPad mempunyai cip A8X, dengan tiga teras berjalan pada gigahertz atau lebih.
  • Lua ditulis dalam C dan disusun kepada A8X.
  • Emulator PDP8 saya ditulis dalam Lua menggunakan pakej CODEA daripada bahagian Two Lives Left.
  • FOCAL ditulis pada akhir 1960-an pada PDP8.
  • Lunar Lander ditulis dalam FOCAL.

Jadi ini ialah A8X, C, Lua, PDP8 dan FOCAL. Ini adalah lima bahasa yang berbeza. Lima mekanisme berbeza memberitahu mesin apa yang perlu dilakukan; mereka semua disusun di atas satu sama lain!

Apa ini? Mengapa terdapat begitu banyak bahasa? Malah, lupakan iPad, PDP-8, C, Lua dan segala-galanya. Mengapa terdapat begitu banyak bahasa?

##Mengapa terdapat begitu banyak bahasa?

Cuba pertimbangkan! Berapa banyak bahasa pengaturcaraan yang boleh anda namakan? Di sini, izinkan saya memberikan anda sedikit senarai:

  • FORTRAN
  • SESUATU
  • COBOL
  • SNOBOL
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • KECIL
  • EIFFEL
  • C + +
  • Jawa
  • C#
  • PYTHON
  • RUBY
  • LOGO
  • LUA
  • ASAS
  • PL/1
  • JAWATANKUASA
  • GO
  • DART
  • PROLOG
  • KEUTAMAAN
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOKAL

Anda tentu boleh memikirkan orang lain yang saya tidak sebutkan. Persoalannya, mengapa terdapat begitu banyak daripada mereka? Hanya ada satu jawapan untuk soalan ini. Sebab mengapa terdapat begitu banyak bahasa komputer:

Kami tidak suka mereka.

Nah, mungkin itu kenyataan yang terlalu kuat. Mungkin saya harus berkata:

Kami berada di Hollywood.
Kami berada di Redwood.
Kami menyeberangi lautan untuk mendapatkan kod emas.
Kami hilang akal
Ia adalah satu garis halus.
Ini membuatkan kami mencari kod emas.

Dan kita semakin tua.

Baiklah, mungkin saya patut bercakap untuk diri saya sendiri... Tidakkah awak hanya mahu menjerit kepada Neil Young supaya berhenti merungut dan mencari gadis yang baik dan tinggal bersamanya? Bukankah anda ingin memberitahunya bahawa pencarian hati emas adalah sia-sia? Beritahu saya, apa yang dia akan lakukan dengannya jika dia menemuinya?

Dan apakah yang akan kita lakukan dengan bahasa yang ideal jika kita menemuinya?

Kami mencipta emulator PDP-8 dan FOCAL untuk memainkan "Lunar Lander", yang ditulis oleh pelajar sekolah menengah pada tahun 1969!

Itu yang saya fikir.

Berurusan dengannya. Berhenti mencari. Tiada bahasa yang sempurna. Kami mencari di mana-mana. Kami melihat dari atas dan bawah. Kami melihat keluar masuk.

Kami melihat bahasa dari kedua-dua belah pihak.
Di dalam dan di luar
dan masih lakukan, satu cara atau yang lain.
Mari kita ingat bahawa ini adalah ilusi linguistik.

Kami benar-benar tidak faham apa-apa tentang bahasa...
… sama sekali.

Ya, hari ini adalah hari yang luar biasa.

Namun begitu, intinya ialah:

Kami tidak memerlukan bahasa lain.
Kita tidak perlu tahu jalan pulang.
Apa yang kita mahukan ialah melangkaui kehidupan.
SQL

Ya, hari yang pelik.

Jadi inilah satu pemikiran. Mungkin kita perlu berhenti mencipta bahasa baharu dan bertenang dan pilih satu atau dua bahasa yang betul-betul bagus. Ini akan menjadikan hidup lebih mudah, bukan?

Dan, sekiranya anda tertanya-tanya, 76.43844461 memberi anda pendaratan 2.23 MPH yang cukup baik.

Sumber: www.habr.com

Tambah komen