Какая альтернатива C++
Какой язык лучше всего подходит для замены C++ после 35 лет существования и миллионов крушений из-за его небезопасного синтаксиса?
Преемник C++ должен производить очень быстрые приложения и код, работающий на всех платформах. Но также можно говорить о преемственности для языка, который в точности повторяет синтаксис C, добавляет классы и приносит более эволюционирующие функции. Так что современный C++, даже если ему не суждено заменить его везде.
Вала (2002)
Доступен на сайте Gnome, выглядит как демонстрация GObject, написанная той же командой. Вала заменяет C++ на платформе Gnome.
Характеристики:
- Составлено в С.
- На основе GObect, который добавляет систему классов к C.
- Использует типы GType, которые позволяют использовать несколько языков.
- Автоматически управляемая память путем подсчета ссылок.
- Интерфейс с другими языками по файлам vapi.
- Совместим с ГТК.
Простой пример :
int main () {
print ("Hello World\n");
return 0;
}
Класс:
class Hello : Object {
void bye () {
stdout.printf ("Hello World\n");
}
}
var example = new Hello ();
example.bye();
Многие программы были написаны на Vala, но даже если он может использоваться вне среды Gnome, он по сути в сочетании с GTK. Leprojet по-прежнему работает в 2022 году с новым сайтом, vala.dev.
D (2001)
Разработан в качестве альтернативы C++ с упрощениями, включая динамические таблицы.
- Совместим с C (но не с C++).
- Простое и смешанное наследство.
- Конкуренция по актерам.
- Память, управляемая коллектором. Эту можно отключить, но мы теряем совместимость с библиотеками.
Простой пример:
import std.stdio;
void main() {
writeln("Hello World!);
}
Класс:
class Hello {
char[] content;
this(char[] str) { // constructeur
content = str;
}
void display() {
writeln(content);
}
}
Hello hello = new Hello("Hello World!");
C # (2000
)С платформы Roslyn, доступной на GitHub, C # может быть скомпилирован на машинном языке, а не в байтекоде, и она может получить доступ к системным ресурсам, поэтому даже если изначально это была альтернатива Java, она становится возможной заменой C++ для приложений или коллекторного гаража не является минусом.
Характеристики:
- Компилируется в байт-код или двоичный файл.
- Работает на всех операционных системах, включая мобильные.
- Может сочетаться с другими языками .NET. Совместим с C++ в управляемом режиме на .NET.
- Параллельное программирование.
- Память, управляемая коллектором.
Простой пример:
void Main() {
Console.WriteLine("Hello, World!");
}
Класс :
public Class Point : Shape {
public int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
public void move(int w, int h) {
this.x += x;
this.y += h;
}
}
Point p = new Point(0,0);
p.move(100,50);
Дарт (2013)
Разработанный в качестве альтернативы JavaScript с синтаксисом C, это не системный язык, но он заменяет C++ для создания скриптов на сервере или рабочем столе со скоростью выполнения, близкой к Asm.js.
- Работает на виртуальной машине, унаследованной от V8, Fletch .
- Классы и наследие.
- Статические или динамические переменные.
- Конкуренция с изолятами.
- Перегруженность операторов .
- Также может быть скомпилирован в JavaScript .
Простой пример :
void main() {
print('Hello World!');
}
Класс:
class Point {
num x, y;
Point(this.x, this.y); // constructeur
void move(num xo, num yo) {
x += xo;
y += yo;
}
}
var p = new Point(0, 0);
p.move(100, 50);
Другие языки
Другие языки также являются производными от C или имеют призвание заменить C++ в качестве системного языка.
- Иди. По крайней мере, он заменит C++ в Google, которая спроектировала его для этого. Его сфера - веб-сервисы, которые являются лишь дополнительным приложением от C++.
- Ява. Его синтаксис - модернизация С++, но принципы у него очень разные. Один файл по классу, работа на виртуальной машине. Он используется в основном для веб-приложений, что делает его более конкурентоспособным с Go.
- Руст. Язык Mozilla работает на виртуальной машине LLVM. и предназначен для мобильных приложений, он имеет другой синтаксис, но также для цели безопасности добавляет большие ограничения для программиста. С и С++ обязаны своим успехом тому, что программист может делать в этих языках все, что хочет. Несмотря на рекламу, которую делают их последователи Mozilla, язык очень плохо классифицирован в статистике популярности.
- Ним. Его синтаксис близок к Python, и в настоящее время его аудитория уменьшена. О нем говорят, потому что некоторые считают его преемником C++ как системного языка. Он компилируется в C как Vala, и использует коллекторский гараж, последний должен быть не блокирующим для использования в играх и системе.
- Asm.js. Это подмножество JavaScript почти так же быстро, как и родной код, такое же портативное, как и C, и его можно использовать для 3D-игр под WebGL. Сделав браузер альтернативой операционной системе, он действительно может заменить C++ для иммерсивных приложений, таких как игры (например, у Unreal Engine есть версия C++ и версия Asm.js).
В конце концов, что за преемник для C или C++? Если исходить из ранжирования языков по популярности, то ни одного на данный момент! Это остается самым часто используемым языком и C++ стоит на третьем месте, после Java и до C #.
Тенденция в том, что набор языков, каждый в определенном домене, игра, веб-приложение, скриптинг и т. Д. Могут очень хорошо вместе заменить C++, универсальный язык, который нельзя заменить везде одним языком. Это дает единственное реальное преимущество синтаксису, производному от C: программист может легче переключаться с одного языка на другой для реализации различных типов приложений.