TGViewer
Организованное программирование | Кирилл Мокевнин Организованное программирование | Кирилл Мокевнин @orgprog · 14.3K subscribers
Post #346 11.4K
Почему одни транспилируемые языки выживают, а другие — исчезают.

TypeScript, Kotlin, Scala, ClojureScript, Elm, CoffeeScript, Elixir — все эти языки работают внутри чужих платформ: JavaScript, JVM или BEAM (виртуальная машина Erlang). Одни из них становятся массовыми и вытесняют оригинальные языки. Другие — остаются нишевыми или вымирают.

🔑 Один из ключевых факторов успеха — прозрачность интеропа. Важно не просто “можно ли вызывать код другой платформы”, а насколько это естественно:

- Совпадают ли типы данных
- Совпадают ли структуры: массивы, строки, объекты
- Совпадает ли модель исполнения: async, исключения, мутабельность

🟢 Когда интероп прозрачный, код из другого мира ощущается как “свой”, без лишнего контекста.
🔴 Когда интероп чужеродный, ты всё время чувствуешь стык: пишешь обёртки, преобразуешь данные, думаешь как бы “переехать” между языками.

Как только интероп становится непрозрачным — возникают обёртки: адаптеры поверх JS-библиотек (в ClojureScript, Elm, Scala.js), shim-функции и преобразователи структур, вспомогательные типы и интерфейсы. Это ведёт к дополнительной сложности, ошибкам и постоянной ментальной перегрузке.

📎 Пример: Elm → JavaScript

Даже чтобы вызвать console.log, нужна отдельная конструкция:


-- Elm
port module Main exposing (..)

port logToConsole : String -> Cmd msg

update msg model =
case msg of
TriggerLog ->
(model, logToConsole "Hello from Elm!")



// JavaScript
const app = Elm.Main.init()

app.ports.logToConsole.subscribe((msg) => {
console.log(msg)
})


Для любого взаимодействия с внешним миром (HTTP, localStorage, DOM) придётся городить такие конструкции.

📌 Примеры:

TypeScript — бесшовный интероп с JS. Код можно смешивать без усилий. Поэтому стал стандартом.
Kotlin — отлично встраивается в JVM и Java-проекты. Небольшие различия, но высокая совместимость.
Scala — технически совместим, но требует усилий: система типов сложнее, код не всегда читаем из Java. Интероп чувствуется.
ClojureScript — сильно отличается по структурам данных и синтаксису. Использовать JS-библиотеки можно, но неудобно.
Elm — намеренно изолирован от JS. Интероп возможен только через порты. Это безопасно, но очень ограниченно.
CoffeeScript — хорошо совпадал с JS. Был популярен, пока не появился TypeScript с типами и без сюрпризов.
Elixir — работает на BEAM и отлично сочетается с Erlang: одни структуры, общая модель исполнения. Пример максимально прозрачного интеропа.

Сам я все это хлебнул когда начал использовать ClojureScript. Классный язык, все приятно и красиво, но чтобы в нем нормально работать, нужны либы из js, а напрямую их вызывать нельзя, нужно выполнять трансформацию в персистентные структуры. В итоге над каждой либой рождалась обертка, которая естественно имела низкую популярность, забрасывалась и отставала от либы.

p.s. Пост эксперимент. Сгенерирован ИИ, но не в тупую, план поста мой и я буквально каждый абзац выверял минут 20, почти столько же сколько я пишу и обычные посты. Скажите как вам, если такой формат не пугает, то мне чуть проще будет иногда пилить контент, где тема требует чуть большего ресерча и я ее пропускаю из-за недостатка времени. Поставьте палец вверх если норм, палец вниз если не норм (и классно если поделитесь в комментах почему)

Ссылки: Телеграм | Youtube | VK
Telegram Организованное программирование | Кирилл Мокевнин Делюсь опытом и обучаю. И ИИ? И ИИ. Ютуб https://youtube.com/@mokevnin AI Клуб @hexletclub | Внедрение AI в SDLC https://praxor.ru/ Для предложений в личку канала
  • 👍 279
  • 👎 38
  • ❤ 21
  • 🔥 3
  • 🤡 3
  • 💩 2
More from @orgprog
  1. Oct 1, 2026Статистика по задачам. Как повлиял ии? Заметил интересный эффект. По мере внедрения агенто…
  2. Sep 29, 2026Плановое обслуживание кода Даже если вы настроили у себя процесс разработки, в котором все…
  3. Sep 27, 2026Выпуск опубликован, можно смотреть и слушать. Сегодня в подкасте создатель Вастрик Клуба В…
  4. Sep 26, 2026Костные наушники Под каждым видео коммент, что за наушники ты носишь? Это костные наушники…
  5. Sep 24, 2026Статистика участия в опенсорсе Активно разрабатывая я регулярно наыткаюсь на баги и не дор…
  6. Sep 21, 2026Банда четырех для эпохи агентов Количество паттернов по тому, как эффективно работать с ИИ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →