You are on page 1of 6

9.Назвіть три мови, які транспілюються у JS?

Dart
Dart – класична, об’єктно-орієнтована мова програмування, де все є об’єктом
і будь-який об’єкт є класом (об’єкт також може діяти як функція). Мова Dart
була спеціально розроблена, щоб створювати застосунки для браузерів,
серверів та мобільних пристроїв. Вона підтримується Google та є мовою
програмування наступного покоління AdWords UI– найважливішого та
найприбутковішого продукту Google, що є доказом її важливості.
Мова програмування може «перекладатися» на JavaScript, щоб
використовуватись у браузері, чи безпосередньо інтерпретуватися до
віртуальної машини Dart VM, завдяки чому можна створювати серверні
застосунки. Мобільні програми можна розробляти за допомогою Flutter SDK.

Розробка складних застосунків може потребувати повного набору бібліотек


та особливостей мов програмування спеціально спроектованих для
вирішення подібних завдань. І Dart це все має в собі. Як приклад можна
навести бібліотеку AngularDart – версію Angular для Dart.
Це дозволяє вам писати безпечний код, який не є інтрузивним. В Dart типи
даних можуть бути успадкованими. Також є можливість створювати нові.
Завдяки цьому перед розробником відкриваються можливості для швидкого
прототипування без нудного та надмірного занурення в деталі.

Dart може мати тільки один потік, а можливість конкурентного


програмування у віртуальній машині реалізовано у вигляді ізолятів (Isolates),
які при цьому мають свій хіп пам'яті. Обмін даними між ізолятами
відбувається за участю повідомлень (Messages). В браузері трохи інша
історія. Замість створення нових ізолятів, необхідно створювати нові
Воркери (Workers).

// Приклад взято з dartlang.org

import 'dart:async';
import 'dart:math' show Random;

main() async {
print('Compute π using the Monte Carlo method.');
await for (var estimate in computePi()) {
print('π ≅ $estimate');
}
}

/// Генерує потік більш точного оцінювання значення числа π.


Stream<double> computePi({int batch: 1000000}) async* {
var total = 0;
var count = 0;
while (true) {
var points = generateRandom().take(batch);
var inside = points.where((p) => p.isInsideUnitCircle);
total += batch;
count += inside.length;
var ratio = count / total;
// Площа кола A = π⋅r², тому π = A/r².
// Таким чином, коли задаються випадкові точки з x ∈ <0,1>,
// y ∈ <0,1>, співвідношення в одиночному колі
// має бути π / 4. Тому, значення π
// має бути:
yield ratio * 4;
}
}

Iterable<Point> generateRandom([int seed]) sync* {


final random = new Random(seed);
while (true) {
yield new Point(random.nextDouble(), random.nextDouble());
}
}

class Point {
final double x, y;
const Point(this.x, this.y);
bool get isInsideUnitCircle => x * x + y * y <= 1;
}
TypeScript
TypeScript є надбудовою над JavaScript. Програма, що написана на JavaScript
також буде працювати і у TypeScript середовищі, але за умови додавання
статичної типізації. Компілятор TypeScript може працювати як
транскомпілятор для різних версій JavaScript (починаючи з ES2015+ і
закінчуючи поточними). Саме тому ви будете мати завжди останні
нововведення.
На відміну від інших мов програмування, TypeScript зберігає дух JavaScript
та має необхідні властивості, що забезпечують більшу надійність коду. Опис
типів даних та інша діяльність, що пов’язана з їх визначенням, – все це
робить процес написання коду більш приємним, завдяки використанню
спеціалізованих засобів (наприклад, статичні аналізатори), які є корисними
під час рефакторингу. Крім того, можливість додавання типів може
покращити взаємодію між різними компонентами ваших програм.

Успадкування типів тут також підтримується, а отже вам не доведеться


розробляти всі необхідні типи даних із самого початку. Ви можете
нашвидкуруч писати рішення, а вже потім додавати всі необхідні типи для
створення надійного коду.

TypeScript також підтримує розширені типи даних: типи перетинів, типи


об’єднання, типи псевдонімів, дискриміновані об’єднання та guard-типи. Ці
типи можна легко знайти на сторінці присвяченій розширеним типам даних,
яка знаходиться на сайті документації TypeScript.
Крім того, підтримується JSX після додавання типів даних React.

class Person {
private name: string;
private age: number;
private salary: number;

constructor(name: string, age: number, salary: number) {


this.name = name;
this.age = age;
this.salary = salary;
}

toString(): string {
return `${this.name} (${this.age}) (${this.salary})`;
}
}
Elm
Elm повністю функціональна мова програмування, що компілюється до JS,
HTML, CSS. Ви можете створити повноцінний сайт, використовуючи лише
Elm. І це робить її чудовою альтернативою для JavaScript фреймворків типу
React. Програми, які ви будете писати будуть автоматично використовувати
віртуальну бібліотеку DOM, що пришвидшить роботу. Ще одним плюсом є
вбудована архітектура, що дозволить вам забути про потоки даних та
сконцентруватися натомість над декларуванням даних та над логікою.

В Elm всі функції чисті. Це означає, що вони повертають той самий вивід для
заданого вводу. Вони не можуть робити нічого більше, якщо ви не визначите
щось додатково. Наприклад, для доступу до віддаленого API ви можете
створити командну функцію для обміну із зовнішнім світом та «підписку»
для очікування на відповідь. Інша сторона чистоти це те, що дані
незмінювані: коли вам потрібно щось, ви створюєте нові значення, замість
того, щоб модифікувати їх.

Сприйняття Elm може бути поступовим; можливий обмін даними з JavaScript


та іншими бібліотеками за допомогою портів. І, хоча Elm ще не досягла
версії 1, її вже використовують для складних і великих програм.
Однією з найбільш привабливих особливостей Elm є її дружність для
новачків, яка замість продукування складних повідомлень про помилки,
генерує код, що допомагає виправляти ваш власний код. Якщо ви вивчаєте
мову програмування, то такий компілятор буде корисним.

12. Як вивести декілька рядків у командний рядок?


Для виведення кількох рядків у командний рядок можна використовувати
спеціальні символи перенесення рядка. Ось кілька способівВикористання
символу нового рядка (\n):
Використання різних дзвінків команди echo:

Використання команди printf із символом нового рядка:

15. Чому розробники віддають перевагу в використанні


окремого файлу для роботи з JS?
Розробники нерідко віддають перевагу використанню окремих файлів для
роботи з JavaScript з декількох причин:Організація коду: Використання
окремих файлів допомагає впорядковувати і структурувати код. Розділення
функціональності на окремі файли дозволяє легше орієнтуватися у проекті і
швидше знаходити потрібний код.Перевикористання: Окремі файли
дозволяють перевикористовувати код. Якщо вам потрібно використати певну
функціональність в іншому проекті або на сторінці, вам достатньо просто
підключити відповідний файл.Керованість залежностями: Окремі файли
дозволяють краще керувати залежностями між модулями. Ви можете явно
вказати, які файли потрібно підключити перед іншими, щоб забезпечити
правильний порядок виконання коду.Кешування: Браузери можуть кешувати
окремі файли JavaScript, що дозволяє зменшити завантаження сторінки при
повторних відвідуваннях. Якщо скрипти розміщені в окремих файлах,
браузер може кешувати їх окремо, що сприяє покращенню швидкодії
сторінки.Командна робота: Використання окремих файлів полегшує спільну
роботу декількох розробників над проектом. Кожен може працювати з
окремим файлом, що зменшує конфлікти при злитті змін в один загальний
файл.Використання окремих файлів для роботи з JavaScript сприяє
покращенню організації, керованості і перевикористання коду, а також
спрощує спільну роботу над проектом.

18. Як працює метод .forEach?


Метод forEach() в JavaScript використовується для ітерації (перебору)
елементів масиву і виклику функції з заданою логікою для кожного
елемента.Синтаксис методу forEach() виглядає наступним
чином:javascriptCopy codearray.forEach(callback(currentValue, index, array),
thisArg);Де:array - масив, який буде перебиратись.callback - функція, яка буде
викликатись для кожного елемента масиву.currentValue - поточний
оброблюваний елемент масиву.index (необов'язковий) - індекс поточного
елемента масиву.array (необов'язковий) - масив, по якому виконується
ітерація.thisArg (необов'язковий) - значення, яке використовується як this під
час виклику функції callback.Приклад використання методу
forEach():javascriptCopy codeconst numbers = [1, 2, 3, 4,
5];numbers.forEach(function(number) {console.log(number);});В цьому прикладі
для кожного елемента масиву numbers виконується функція
console.log(number), де number є поточним значенням елемента масиву. Це
виведе числа 1, 2, 3, 4, 5 в консоль.Метод forEach() можна використовувати
для виконання певних дій з кожним елементом масиву без необхідності
власноручно писати цикл for для ітерації по масиву.

You might also like