Skip to content

Instantly share code, notes, and snippets.

@Minoru
Created October 3, 2016 11:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Minoru/1f20725edc35da1aa5cb55d5f89ff756 to your computer and use it in GitHub Desktop.
Save Minoru/1f20725edc35da1aa5cb55d5f89ff756 to your computer and use it in GitHub Desktop.
У каждой платформы есть дно
Это логи чата, а не протокол какого-то собрания, так что просьба шуточки про JS
близко к сердцу не принимать. Кроме того, речь идёт о JVM, Erlang VM, браузерах,
native, поэтому слово «абстракция» следует понимать как «платформа». —Minoru
Из codingteam@conference.jabber.ru:
<ForNeVeR> ɹǝɟılʍǝu: смотри что. У JS есть своя семантика (модель памяти,
выполнения, и проч.). Прямых маппингов на машинную модель у неё нету.
JS не зависит от машины. Поэтому, чтобы писать на JS, тебе нужно
знать только JS. Нету слоя ниже.
<ForNeVeR> ɹǝɟılʍǝu: а вот если ты пишешь на Elixir, то у него своей модели нет.
Он делегирует всё машине Erlang. Чтобы писать на Elixir — ты вынужден
знать и учитывать квирксы Erlang.
<ForNeVeR> ɹǝɟılʍǝu: точно так же и C/C++. На самом деле C определяет модель
поведения программы полностью (за пределами UB, конечно; но в случае
UB знание низлежащей модели тебе не поможет). Поэтому можно писать на
C, не зная машинной модели, ассемблера, и т.п. Что мы и наблюдаем.
<ForNeVeR> ɹǝɟılʍǝu: а вот, например, Scala в большой степени полагается на
поведение Java (и её модель памяти, перегрузок, да даже именование
вложенных классов). Поэтому ты не найдёшь эффективных
Scala-программистов, которые Java не знают досконально.
<ForNeVeR> Мой поинт в том, что у каждой современной абстракции есть некое дно,
на котором она самодостаточна в большей степени. И вот до этого дна
тебе нужно доставать ногами, чтобы твёрдо на них стоять.
<ForNeVeR> В случае с TypeScript дном является JS :)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment