Главная » Статьи » Альтернативы JavaScript

Альтернативы JavaScript

Альтернативы JavaScript

От автора: в 2019 году у нас есть две альтернативы запуска скриптов в веб-браузере: JavaScript и WebAssembly. Но представьте себе программиста Java, Haskell или даже LISP… где чистая объектно-ориентированная парадигма? А где функциональная? А как насчет знаменитого синтаксиса LISP?

Конечно, JavaScript предоставляет как объектно-ориентированную, так и функциональную парадигмы, но когда дело доходит до синтаксиса, у некоторых разработчиков просто есть предпочтения. Статическая типизация, сопоставление с образцом, интерфейсы… JavaScript не соответствует потребностям всех (пока!).

Как мы уже говорили, в 2019 году у нас было только две альтернативы для запуска скриптов в веб-браузере. Но подождите… мы можем ориентироваться на JavaScript при компиляции других языков!

Предисловие

Мы не будем говорить об истории каждого языка, который компилируется в JavaScript. JS является настолько важным языком, что практически любой другой язык программирования может быть скомпилирован в него.

Вместо этого мы рассмотрим некоторые реальные или определяющие языки программирования, которые вы можете использовать прямо сейчас в производстве или за которыми вы должны следить в будущем. Итак, начнем!

Kotlin

Kotlin — это молодой и мощный язык программирования, который изначально ориентирован как на виртуальную машину Java, так и на JavaScript. Самое замечательное в Kotlin — это то, что у вас будет доступ ко всем великолепным и проверенным библиотекам Java! Если вы Java-разработчик, вы должны обязательно взглянуть на него!

fun main(args: Array<String>) { println("Hello world from Kotlin!)
}

Scala

Еще один замечательный язык JVM, родившийся в 2003 году в Женеве. Он берет лучшее из парадигм объектно-ориентированного и функционального программирования и изначально ориентирован как на байт-код Java, так и на JavaScript! Как и Kotlin, у вас будет доступ ко всем библиотекам Java, но вы также сможете создавать сложные алгоритмы, используя преимущества функционального языка программирования!

object HelloWorld extends App { println("Hello world from Scala!")
}

Clojure

Хорошо, это последний язык JVM, о котором мы поговорим. Clojure — это удивительный язык программирования LISP, который компилирует байт-код Java. Он может компилироваться в JavaScript с использованием ClojureScript!

Если вы пришли из Common Lisp, Racket, Scheme или любого другого языка программирования LISP, это, безусловно, подходящее решение для вас.

(ns hello-world.core)
(println "Hello world from ClojureScript!")

TypeScript

TypeScript не нуждается ни в каком представлении. На сегодняшний день это наиболее широко используемый язык компиляции в JavaScript. Он добавляет в JavaScript сигнатуру типов и другие замечательные функции. Его также можно скомпилировать в WebAssembly с помощью ** WebAssemblyScript **!

Просто чтобы узнать, насколько широко он используется, имейте в виду, что Angular.js, **Vue.js (v3), Rx.js, Firebase SDK ** и VSCode написаны на TypeScript! Вы должны обязательно рассмотреть его!

const greet: string = "Hello world from TypeScript!";
console.log(greet);

OCaml

** Objective Caml (OCaml) — отличная реализация языка программирования Caml, происходящая из семейства ML. Известно, что это невероятно быстрый язык программирования (некоторые тесты говорят, что такой же быстрый, как C).

В наши дни он интенсивно используется в Facebook (только подумайте о Flow , написанном на OCaml) и известен как сильный и проверенный язык программирования.

Его можно скомпилировать в JavaScript с помощью ** BuckleScript, компилятора, который переводит код OCaml в JavaScript!

print_string "Hello world from OCaml!";;

ReasonML

Если OCaml — это слишком для вас, то есть ReasonML! Это просто новый синтаксис для языка программирования OCaml, который черпает вдохновение из JavaScript. ReasonML был разработан инженером Facebook, который также изобрел React.js!

Фактически, сначала React.js был разработан для написания на StandardML (язык программирования ML), так что вы можете представить, насколько близки эти два проекта!

ReasonML использует под капотом BuckleScript для переноса кода ReasonML в OCaml, а затем в JavaScript. Судя по всему, будущее как веб-разработки, так и нативной разработки в этом!

print_string("Hello world from ReasonML!");

F #

F # — это удивительный язык программирования из семейства ML, который компилирует ** Microsoft .NET ** байт-код.
Наибольшим преимуществом F # является то, что вы можете иметь доступ ко всем библиотекам .NET, от C # до VB! Разве это не удивительно?

Вы можете скомпилировать код F # в JavaScript, используя ** Fable **, «компилятор, производящий JavaScript, которым вы можете гордиться»!

open System [<EntryPoint]
let main argv = printfn "Hello world from F#!" 0

Elm

Elm — популярный язык программирования, вдохновленный Haskell. Он был специально разработан для создания высокопроизводительных веб-приложений и высоко оптимизированного кода JavaScript.

Он также обещает избежать каких-либо исключений во время выполнения благодаря потрясающей системе сильных типов (вдохновленной Haskell). Вы знали, что Redux был вдохновлен Elm Architecture, которая отлично подходит для активных веб-приложений!

module HelloWorld exposing(..)
import Html exposing (text) main = text "Hello world from Elm!"

PureScript

PureScript — это **строго типизированный ** и чисто функциональный язык программирования, вдохновленный Haskell. В PureScript вы можете повторно использовать любую существующую библиотеку JavaScript, поэтому вам не нужно каждый раз изобретать велосипед!

Если вы пришли из функционального программирования, PureScript — это отличный способ для создания надежных веб-приложений!

import Prelude
import Effect.Console (log) greet :: String -> String
greet name = "Hello, " <> name <> " from PureScript!" main = log (greet "world")

Dart

Dart — это язык программирования, ориентированный на Objet, разработанный Google, который стремится стать лучшей альтернативой JavaScript для веб-сайтов и нативных разработок.

Google недавно выпустили написанный на Dart Flutter для разработки наитвных приложений. Если вы пришли из Java, вам будет удобно писать на Dart!

main() { print('Hello world from Dart!');
}

C / C ++

Это на самом деле невероятно: вы можете конвертировать существующий код C / C ++ в JavaScript, используя ** Emscripten!

Конечно, вы никогда не достигнете исполнения C / C ++ с помощью JavaScript, но есть определенные проекты, которые было бы действительно трудно реализовать с нуля. ** Tesseract.js — это замечательный пример проекта C ++ Tesseract OCR! Я лично использовал его, и вы даже не поймете, что исходный код был скомпилирован из C ++!

#include <stdio.h> int main()
{ printf("Hello world from C!"); return 0;
}

Clio

Clio — это чисто функциональный язык программирования с отложенной оценкой, предназначенный для децентрализованных и распределенных систем.

Он компилирует высококачественный код JavaScript, который может быть выполнен как в браузере, так и на сервере (используя Node.js).

В то время как ** Clio ** все еще находится в стадии активной разработки, он предлагает несколько замечательных и инновационных идей. Я уверен в отличном будущем этого проекта!

'Hello world from Clio!' -> print

LiveScript

LiveScript — это удивительный язык программирования, который компилируется в JavaScript. Он был создан Джереми Ашкенасом, создателем CoffeeScript.

На самом деле LiveScript — это эволюция CoffeeScript, охватывающая как функциональную, так и объектно-ориентированную парадигмы программирования.

Если вы используете функциональный язык, такой как Elixir или OCaml, вы найдете отличное решение для написания высококачественных приложений JavaScript!

"Hello world from LiveScript!" |> console.log

Заключение

Мы рассмотрели 13 языков, которые компилируются в JavaScript. Понятно, что счастье разработчиков — это главное направление в наши дни, но также ясно, что JavaScript — невероятно важный язык, и сообщество постоянно работает над улучшением экосистемы. Будущее JavaScript стало ярче, чем когда-либо!

Автор: Michele Riva

Источник: https://www.jsmonday.dev

Редакция: Команда webformyself.