Π―Π·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ слои

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€!

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Language LayersΒ» Π°Π²Ρ‚ΠΎΡ€Π° Robert C. Martin (Uncle Bob).

Π―Π·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ слои
Π― ΠΏΡ€ΠΎΠ²ΠΎΠΆΡƒ врСмя, играя Π² ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Β«Lunar LanderΒ» 1969 Π³ΠΎΠ΄Π°. Она Π±Ρ‹Π»Π° написана Π”ΠΆΠΈΠΌΠΎΠΌ Π‘Ρ‚ΠΎΡ€Π΅Ρ€ΠΎΠΌ, ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠΌ срСднСй ΡˆΠΊΠΎΠ»Ρ‹. Он написал Π΅Π΅ Π½Π° PDP-8 Π½Π° языкС FOCAL. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

Π―Π·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ слои

А Π²ΠΎΡ‚ исходный ΠΊΠΎΠ΄ Π½Π° FOCAL:

Π―Π·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ слои

Π”ΠΆΠΈΠΌ Π‘Ρ‚ΠΎΡ€Π΅Ρ€ Π±Ρ‹Π» довольно Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹ΠΌ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠΌ срСднСй ΡˆΠΊΠΎΠ»Ρ‹. Взгляни Π½Π° этот ΠΊΠΎΠ΄. Π£ Π½Π΅Π³ΠΎ Ρ‚Π°ΠΌ довольно интСрСсныС выраТСния Π’Π΅ΠΉΠ»ΠΎΡ€Π°.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, я ΠΏΡ€ΠΎΠ²ΠΎΠΆΡƒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ К, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ использовании идСально посадит ΠΊΠΎΡ€Π°Π±Π»ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ примСняла Π΅Π³ΠΎ нСсколько Ρ€Π°Π·, ΠΏΠΎΠΊΠ° ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π½Π΅ призСмлится ΠΈΠ»ΠΈ Π½Π΅ Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅Ρ‚ΡΡ. Пока я ΠΏΠΈΡˆΡƒ это, я знаю, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ Π»Π΅ΠΆΠΈΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ 76.40625 ΠΈ 76.4453125, ΠΈ я ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ 76.4257813. Π― Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ мСня закончится врСмя, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ я Π½Π°ΠΉΠ΄Ρƒ ΠΎΡ‚Π²Π΅Ρ‚.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, Ρ‡Ρ‚ΠΎ я запустил эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° эмуляторС PDP-8, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ написал Π½Π° Lua для iPad.

Π’Π°ΠΊ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ поразмыслим Π½Π°Π΄ этим.

  • iPad ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡ΠΈΠΏ A8X, с трСмя ядрами, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ Π½Π° частотС Π³ΠΈΠ³Π°Π³Π΅Ρ€Ρ† ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ Ρ‚ΠΎΠ³ΠΎ.
  • Lua написан Π½Π° C ΠΈ компилируСтся Π² A8X.
  • Мой эмулятор PDP8 написан Π½Π° языкС Lua, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°ΠΊΠ΅Ρ‚ CODEA ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Two Lives Left.
  • FOCAL Π±Ρ‹Π» написан Π² ΠΊΠΎΠ½Ρ†Π΅ 1960-Ρ… Π³ΠΎΠ΄ΠΎΠ² Π½Π° PDP8.
  • Lunar Lander Π±Ρ‹Π» написан Π½Π° FOCAL.

Π—Π½Π°Ρ‡ΠΈΡ‚, это A8X, C, Lua, PDP8 ΠΈ FOCAL. Π­Ρ‚ΠΎ ΠΏΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… языков. ΠŸΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… машинС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ; всС ΠΎΠ½ΠΈ ΡƒΠ»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°!

Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ языков? На самом Π΄Π΅Π»Π΅, Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΎ iPad, PDP-8, C, Lua ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ языков?

##ΠŸΠΎΡ‡Π΅ΠΌΡƒ сущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ языков?

ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉ ΠΎΠ± этом! Бколько языков программирования Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ? Π’ΠΎΡ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ нСбольшой список:

  • FORTRAN
  • ALGOL
  • COBOL
  • SNOBOL
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • SMALLTALK
  • EIFFEL
  • C++
  • JAVA
  • C#
  • PYTHON
  • RUBY
  • LOGO
  • LUA
  • BASIC
  • PL/1
  • JAVASCRIPT
  • GO
  • DART
  • PROLOG
  • FORTH
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOCAL

Π’Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, моТСшь Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π΅ упомянул. Вопрос Π² Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡ… Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ? На этот вопрос Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π²Π΅Ρ‚. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков:

Они Π½Π°ΠΌ Π½Π΅ нравятся.

Ну, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, это слишком сильноС заявлСниС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ:

ΠœΡ‹ Π±Ρ‹Π»ΠΈ Π² Π“ΠΎΠ»Π»ΠΈΠ²ΡƒΠ΄Π΅.
ΠœΡ‹ Π±Ρ‹Π»ΠΈ Π² Π Π΅Π΄Π²ΡƒΠ΄Π΅.
ΠœΡ‹ пСрСсСкли ΠΎΠΊΠ΅Π°Π½ Ρ€Π°Π΄ΠΈ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠœΡ‹ Π±Ρ‹Π»ΠΈ Π² своСм ΡƒΠΌΠ΅,
Π­Ρ‚ΠΎ такая тонкая Π³Ρ€Π°Π½ΡŒ.
Π­Ρ‚ΠΎ заставляСт нас ΠΈΡΠΊΠ°Ρ‚ΡŒ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ ΠΊΠΎΠ΄.

А ΠΌΡ‹ старССм.

Π›Π°Π΄Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΌΠ½Π΅ стоит Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π·Π° сСбя… НСуТСли Ρ‚Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» просто Π½Π°ΠΎΡ€Π°Ρ‚ΡŒ Π½Π° Нила Π―Π½Π³Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ пСрСстал ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ, нашСл ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΌΠΈΠ»ΡƒΡŽ Π΄Π΅Π²ΡƒΡˆΠΊΡƒ ΠΈ ΠΆΠΈΠ» с Π½Π΅ΠΉ? Π Π°Π·Π²Π΅ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎ поиски Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСрдца Π±Ρ‹Π»ΠΈ бСсполСзны? Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ½ с Π½ΠΈΠΌ сдСлал, Ссли Π±Ρ‹ нашСл Π΅Π³ΠΎ?

И Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΡ‹ сдСлали с ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ языком, Ссли Π±Ρ‹ нашли Π΅Π³ΠΎ?

ΠœΡ‹ создали эмуляторы PDP-8 ΠΈ FOCAL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Β» Lunar LanderΒ», Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠΌ срСднСй ΡˆΠΊΠΎΠ»Ρ‹ Π² 1969 Π³ΠΎΠ΄Ρƒ!

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ.

Π‘ΠΌΠΈΡ€ΠΈΡ‚Π΅ΡΡŒ с этим. ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚Π΅ поиски. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ идСального языка. ΠœΡ‹ искали Π²Π΅Π·Π΄Π΅. ΠœΡ‹ смотрСли свСрху ΠΈ снизу. ΠœΡ‹ смотрСли Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΈ снаруТи.

ΠœΡ‹ посмотрСли Π½Π° языки с ΠΎΠ±Π΅ΠΈΡ… сторон.
Π˜Π·Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ снаруТи
ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅.
ВспоминаСм, Ρ‡Ρ‚ΠΎ это языковыС иллюзии.

ΠœΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Π² языках…
… совсСм.

Π”Π°, сСгодня Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ дСнь.

Но, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ:

Нам Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык.
Нам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π΄ΠΎΡ€ΠΎΠ³Ρƒ Π΄ΠΎΠΌΠΎΠΉ.
ВсС, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ β€” это Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΆΠΈΠ·Π½ΠΈ.
S.Q.L.

Π”Π°, странный дСнь.

Π˜Ρ‚Π°ΠΊ, Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ΠΌΡ‹ΡΠ»ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ языки ΠΈ просто ΡƒΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈ. Π­Ρ‚ΠΎ сдСлаСт Тизнь Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?

И, Ссли Π²Π°ΠΌ интСрСсно, 76.43844461 Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ довольно Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ посадку Π½Π° 2.23 MPH.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

author avatar
ProHoster ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚, ВСхничСский спСциалист
A technical specialist at ProHoster with over six years of experience in server administration, VPN solutions, and network security. I manage infrastructure setup and support, monitor service stability, and implement solutions to protect client data. I also contribute to performance optimization and compliance with modern security and privacy requirements.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ