لایه های زبان

هی هابر!

ترجمه ای از مقاله را مورد توجه شما قرار می دهملایه های زبان» نوشته رابرت سی مارتین (عمو باب).

لایه های زبان
من وقتم را صرف بازی قدیمی به نام Lunar Lander از سال 1969 می کنم. توسط جیم استور، دانش آموز دبیرستانی نوشته شده است. او آن را روی PDP-8 در FOCAL نوشت. این چیزی است که برنامه به نظر می رسد:

لایه های زبان

و کد منبع FOCAL اینجاست:

لایه های زبان

جیم استور یک دانش آموز دبیرستانی نسبتاً با استعداد بود. به این کد نگاهی بیندازید. او عبارات تیلور بسیار جالبی دارد.

اساسا، من یک جستجوی دودویی برای تعیین مقدار K انجام می‌دهم که در صورت استفاده مداوم، کشتی را کاملاً فرود می‌آورد. بنابراین برنامه را طوری تغییر دادم که فقط یک مقدار را بپذیرد و سپس آن را چندین بار اعمال کنم تا زمانی که کشتی فرود بیاید یا سقوط کند. همانطور که من این را می نویسم می دانم که پاسخ بین 76.40625 و 76.4453125 نهفته است و من 76.4257813 را امتحان خواهم کرد. من کم کم دارم فکر می کنم قبل از اینکه جوابی پیدا کنم وقتم تمام می شود.

در ضمن به ذهنم رسید که این برنامه رو روی شبیه ساز اجرا کردم PDP-8، که در Lua برای 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 و هر چیز دیگری را فراموش کنید. چرا این همه زبان وجود دارد؟

##چرا این همه زبان وجود دارد؟

در مورد آن فکر کنید! چند زبان برنامه نویسی می توانید نام ببرید؟ در اینجا، اجازه دهید یک لیست کوچک به شما بدهم:

  • فرترن
  • الگول
  • COBOL
  • اسنوبول
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • SMALLTALK
  • ایفل
  • ++C
  • جاوا
  • C#
  • پایتون
  • روبی
  • LOGO
  • LUA
  • BASIC
  • PL/1
  • جاوا اسکریپت
  • GO
  • DART
  • پرولوگ
  • به پیش
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • الیکسیر
  • محلی

البته می توانید به دیگرانی که من اشاره نکرده ام فکر کنید. سوال این است که چرا تعداد آنها زیاد است؟ واقعا فقط یک پاسخ برای این سوال می تواند وجود داشته باشد. دلیل وجود این همه زبان کامپیوتری:

ما آنها را دوست نداریم.

خب، شاید این بیانیه خیلی قوی باشد. شاید باید بگویم:

ما در هالیوود بودیم.
ما در ردوود بودیم.
ما برای رمز طلایی از اقیانوس عبور کردیم.
ما از عقل خارج شده بودیم
خیلی خط خوبیه
این ما را به دنبال کد طلایی می کند.

و داریم پیر میشیم

باشه، شاید من باید از طرف خودم صحبت کنم... نمی خواهی فقط سر نیل یانگ داد بزنی که دست از شکایت بردارد و دختر خوبی پیدا کند و با او زندگی کند؟ نمی خواستی به او بگویی که جستجوی قلب طلا بیهوده است؟ به من بگو اگر آن را پیدا کند با آن چه می کند؟

و اگر یک زبان ایده آل را پیدا کنیم چه می کنیم؟

ما شبیه سازهای PDP-8 و FOCAL را برای بازی "Lunar Lander" که توسط یک دانش آموز دبیرستانی در سال 1969 نوشته شده بود ایجاد کردیم!

این چیزی است که من فکر می کنم.

با آن مقابله کنید. جستجو را متوقف کنید. هیچ زبان کاملی وجود ندارد. همه جا را نگاه کردیم. از بالا و پایین نگاه کردیم. به داخل و خارج نگاه کردیم.

ما از هر دو طرف به زبان ها نگاه کردیم.
در داخل و خارج
و هنوز هم انجام می دهند، به هر حال.
به یاد داشته باشیم که اینها توهمات زبانی هستند.

ما واقعاً از زبان ها چیزی نمی فهمیم ...
… اصلا

بله، امروز یک روز غیرعادی است.

اما با این وجود نکته اینجاست:

ما به زبان دیگری نیاز نداریم.
ما نیازی به دانستن راه خانه نداریم.
تنها چیزی که می خواهیم این است که فراتر از زندگی برویم.
SQL

آره روز عجیبیه

بنابراین در اینجا یک فکر وجود دارد. شاید لازم باشد از ایجاد زبان های جدید دست برداریم و فقط آرام باشیم و یکی دو زبان را انتخاب کنیم که واقعاً خوب هستند. این زندگی را بسیار آسان تر می کند، اینطور نیست؟

و اگر تعجب می کنید، 76.43844461 یک فرود بسیار خوب 2.23 مایل در ساعت را برای شما به ارمغان می آورد.

منبع: www.habr.com

اضافه کردن نظر