The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск языка программирования Rust 1.70 "
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Выпуск языка программирования Rust 1.70 " +/
Сообщение от Срыватель покровов (?), 04-Июн-23, 00:35 
Отвечаю в общем, как обыватель. Прошу местных экспертов присоединиться и помочь с объективностью. Мне кажется, Раст решает сразу несколько Сишных проблем.
1. Стандарты Си и C++ изначально подразумевают своеволие, начиная от такого уродства как типы НЕ фиксированной ширины (ммм, в кайф писать вычислительные программы, которые на разных процессорах выдадут разные результаты, ловить кучу неожиданных багов после компиляции очень приятно), заканчивая кучей "мелочей" вроде знаковости типа char. Да, для предсказуемости вычислений есть int_t, но то же самое нельзя сказать про float. Фиксированные float ввели в C++23, но надо ждать их поддержки в компиляторах. А кодить надо уже сейчас. Можно свой велосипед вкорячить, но это опять приведёт к раздуванию кода, т.к. каждый обязательно напишет свою либу.
2. Исходя из неопределённости стандарта, мы получаем разные компиляторы. А под и разные анализаторы, учитывающие разные нюансы. Под конкретный компилятор может и не быть. А при этом анализатор может оказаться платным и несвободным. А может оказаться кривым нечто, еле-еле включающимся в твоём любимом IDE.
3. Благодаря разным реализациям компилятора то же ядро Линукса смогли собрать Клангом через несколько лет.
4. У Раста нет хедеров, это уже большой плюс. Благодаря запутанным хедерам время компиляции Линукса было заметно увеличено (ирония судьбы, с чем боролся Деннис Ритчи (время компиляции), на то напоролся Линус Торвальдс).
5. Плюсы в некотором смысле это уродство, так как они тянут за собой совместимость с Си, но делают это очень криво (в C++ нет variable length arrays, как пример). У нас есть страшно кривой printf(), который требует каждый раз при печати указывать тип переменной (А что, если я потом захочу поменять тип переменной? Снова ломать глаза и тратить время в поисках нужного процента с правильным типом и форматированием?), а есть страшно уродливый брат-близнец cout с упоротым синтаксисом из двойных знаков сравнения. У нас есть и амперсенды (&), и стрелочки (->), и точки для выполнения семантически одинаковых действий (взятие значения по ссылке). Мы продолжим тянуть кривое г. из Си, поэтому все проекты будут пользоваться кривым г. вместо новых, более адекватных имплементаций. У нас есть 14 видов инициализации, поэтому каждый компилятор обязан из поддерживать вместо внедрения действительно нужных фич. У нас есть структуры и классы, отчасти дублирующие друг друга (напоминаю, что методы и наследование работают и для структур).
Мне кажется, уже этих пунктов хватит для того, чтобы начать новый проект не на C/C++. Паскаль неплох, но он не в мейнстриме. Пожелаем Расту и Зиг удачи.
Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Rust 1.70 , opennews, 02-Июн-23, 09:16  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру