Это короткая статья, которая пытается охватить краткий обзор упомянутых языков и предназначена для начинающих.
Javascript
- Динамический
// hello.js var a = ‘hello’; console.log(a);
- интерпретируется
$ node hello.js hello
- Выполняется на движке Javascript (обычно имеет два компонента кучи памяти и стека вызовов), он может быть в браузере (SpiderMonkey) или на бэкэнде (движок Chrome V8).
- Он однопоточный и имеет модель параллелизма, основанную на «цикле событий».
- Объектно-ориентированное программирование (с использованием наследования прототипов)
let animal = {
eats: true,
walk() {
alert("Animal walk");
}
};
let rabbit = {
jumps: true,
__proto__: animal
};
// walk is taken from the prototype
rabbit.walk(); // Animal walk
- Автоматическое управление памятью
- Известен своим простым и процедурным программированием, легковесностью
- Печально известен своим дизайном и некоторыми ошибками
// true console.log(0=="0") // returns as expected return { 'ok': false }; // returns undefined return { 'ok': false };
- Полезно для интерфейсных приложений (веб-приложений и мобильных приложений)
- Полезно для внутренних приложений (приложений с интенсивным вводом-выводом) из-за его параллельной модели.
Ресурсы для изучения JS
https://www.udemy.com/share/10008CA0UZdl9UTHg=/
Питон
- Динамический
#!/usr/bin/env python3
# hello.py
message = 'hello'
print(hello)
- интерпретируется
$ python hello.py hello
- CPython — интерпретатор по умолчанию.
- Использует частную кучу для хранения всех объектов и структур данных.
- Вы можете писать модули расширения на таких языках, как C, C++
- Поддерживает многопоточность, но не параллельное выполнение из-за GIL
- Известен своим чистым синтаксисом, идиоматическим подходом и элегантными функциями, такими как модули, декораторы, включения, генераторы, магические методы
- Печально известный своей производительностью, GIL
- Полезно для сценариев и инструментов
- Полезно для создания поддерживаемых приложений
- Полезно для проектов по науке о данных (доступно множество библиотек, таких как numpy, pandas, scipy, matplotlib, scikit-learn)
- Полезно для прототипирования
Ресурсы для изучения Python
Голанг
- Статически типизированный
// hello.go package main import "fmt" func main(){ var msg string = "hello" fmt.Println(msg); }
- Скомпилировано (компилятор работает быстро)
$ go build hello.go $ ./hello hello
- Встроенное управление памятью
- C-подобный синтаксис
- Не поддерживает объектно-ориентированное программирование.
- Известен своей простотой, параллелизмом и облегченной системой типов.
- Печально известен отсутствием многих функций современного языка.
- Полезно для системного программирования, ресурсоемких приложений, небольших микросервисов.
- Низкое использование ЦП и памяти
Ресурсы для изучения Go
C++
- Статически типизированный
// hello.cpp #include <iostream> using namespace std; // main() is where program execution begins. int main() { char msg[] = "hello"; cout << msg << endl; return 0; }
- Скомпилировано
$ g++ hello.cpp $ ./a.out hello
- Нет автоматического управления памятью, используется стек и куча для хранения различных сущностей.
- Объектно-ориентированный
// Base class class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // Derived class class Rectangle: public Shape { public: int getArea() { return (width * height); } };
- Известен производительностью и широко используемым языком
- Печально известный из-за времени разработки, отсутствия автоматического управления памятью или сборки мусора, требует много предварительных знаний и опыта, чтобы делать вещи оптимальным образом.
- Полезно для создания ресурсоемких приложений
- Полезно для программирования игр
- Низкое использование ЦП и памяти
Ресурсы для изучения C++
Основы C++
Контекст Добро пожаловать в раздел «Введение в C++. Меня зовут Кейт Грегори, и я хотела бы представиться, рассказав людям…www.pluralsight.com»
Вывод
Каждый из этих языков программирования широко используется для разных целей. Я бы порекомендовал вам пройти их все.
Изучение разных языков может помочь вам лучше понять программирование.
Удачного кодирования и отладки :)