LINUX.ORG.RU
ФорумTalks

Встречайте очередную замену Си

 ,


0

8

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

https://drewdevault.com/2021/03/19/A-new-systems-language.html

use io;

export fn main() void = {
	const greetings = [
		"Hello, world!",
		"¡Hola Mundo!",
		"Γειά σου Κόσμε!",
		"Привет мир!",
		"こんにちは世界!",
	];
	for (let i = 0z; i < len(greetings); i += 1) {
		io::println(greetings[i]);
	};
};

По сравнению с Си:

  • More robust error handling via tagged unions
  • Improved, Unicode-aware string support
  • Memory safe array, slice, and pointer types (and unsafe versions, if needed)
  • Direct compatibility with the C ABI for trivial C interop
  • A simpler, context-free, expression-oriented syntax
  • A standard library free of the constraints of POSIX or the C standard
★★★

Последнее исправление: dadd (всего исправлений: 1)

Почему бы просто не пойти другим путём и сделать мощный метапроцессор для С. Так чтобы можно было реализовать с его помощью любые языковые конструкции, любой сахар.

Зачем для этого делать отдельный язык? Тем более зачем делать С подобный язык с не С подобным синтаксисом - это какая странная хрень.

ixrws ★★★
()

Давно пора не плодить зоопарк языков для универсальных процессоров, а создавать зоопарк языково-ориентированных процессоров с аппаратной реализацией конструкций языка

vaddd ★☆
()

Не взлетит.

Сейчас им нужна помощь в написании стандартной библиотеки.

Смешные какие.

sparkie ★★★★★
()

use io;

export fn main() void = {

io::println(greetings[i]);

Есть полноценная модульность как в Обероне, одобряю. Правда на уровне бинарников её скорее всего нет, т.к. формат ELF не поддерживает полноценную модульность без специальных трюков. Полноценная модульность (two-level namespace symbol resolution) есть в PE (EXE, DLL), Mach-O (Mac OS) и исполняемых форматах Оберона.

Our language currently supports Linux on x86_64 or aarch64, and we plan on expanding this to the BSDs, Haiku, and Plan 9; as well as i686, riscv64 and riscv32, and ppc64 before the release.

Haiku поддерживать собираются. Можно будет посмотреть…

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от Siborgium

Надеюсь, хотя бы не на LLVM.

А что с ним не так? Конкурировать с GCC и LLVM в генерации эффективного кода очень трудно. Свой кодогенератор будет генерировать медленный код. Хотя опционально иметь свой кодогенератор желательно чтобы быть самодостаточным языком.

X512 ★★★★★
()
Ответ на: комментарий от ixrws

Подобный с подобным

зачем делать С подобный язык с не С подобным синтаксисом - это какая странная хрень.

А делать C-подобный с C-подобным синтаксисом не странная хрень?

Camel ★★★★★
()
Ответ на: Подобный с подобным от Camel

Нет, если конструкции похожи и желательно даже идентичны, то это позволяет например копипастить код. Когда у вас есть простейший код, куски какие-нибудь, которые можно просто копипастить вместо того, чтобы всё это с нуля переизобретать - это то ещё извращение.

Притом что большинство таких языков не переизобретают семантику. А если и переизобретают, то нет никакой сложности прикрыть всё сахарочком так, что обычное void func(char *str){} всё равно будут работать, даже если в языке нет указателей в помине. Можно даже пойти дальше, и добавить поддержку арифметики указателей, хотя сам язык её может не иметь равно как и указателей. Ну в общем вы поняли смысл думаю, тот же C без проблем компилируется в javascript и работает.

ixrws ★★★
()
Ответ на: комментарий от vaddd

А может просто не плодить зоопарк? Например всем процессорным разработчикам объединиться и сделать универсальный многоядерный процессор, который будет способен решать любые текущие задачи и в качестве языка взять С, добавить туда чего не хватает и жить спокойно ещё лет 50?

ixrws ★★★
()
Ответ на: комментарий от ixrws

обычное void func(char *str){} всё равно будут работать, даже если в языке нет указателей в помине.

Не нужно. В Си самый ужасный синтаксис объявлений указателей, массивов, функций и структур. Каждый раз приходится вспоминать какое заклинание надо написать чтобы объявить указатель на функцию или привести значение к указателю на функцию.

X512 ★★★★★
()
Ответ на: комментарий от ixrws

Например всем процессорным разработчикам объединиться и сделать универсальный многоядерный процессор, который будет способен решать любые текущие задачи

Уже есть: RISC-V.

и в качестве языка взять С, добавить туда чего не хватает и жить спокойно ещё лет 50?

Уже есть: C++.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Но он устоялся и применяется широко. Это примерно как виды розеток подключения приборов для переменного тока. У каждой розетки есть свои преимущества и недостатки, но никто не плодит новые виды розеток. Хотя конечно подобное ещё не устаканилось в компьютерном мире, но возможно когда-нибудь очередной usb-type-номер миллион станет таки стандартом навсегда.

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

ixrws ★★★
()
Ответ на: комментарий от ixrws

Это примерно как виды розеток подключения приборов для переменного тока.

Их довольно много.

но никто не плодит новые виды розеток.

Ещё как плодят. Например сделали розетки powerCON которые защищены от вибраций и случайного выдёргивания. И у них уже есть много несовместимых версий. В промышленности вообще полно разных розеток.

X512 ★★★★★
()
Ответ на: комментарий от X512

Потому что от всех наколеночных недоязыков он будет отличаться только именем Дрю ДеВолта на нем. Никому не нужен вторичный язык.

Siborgium ★★★★★
()

Но зачем? В сишечку для полного счастья достаточно добавить сахар для работы со строками и endianness-independent типы и сахар для структур к ним. А все эти пляски вокруг замены мозгов программиста фичами и ограничениями языка - исключительно для неосиляторов, которые зачем-то лезут в сишечку вместо того, чтобы на каком-нибудь JS свой говнокод писать.

Stanson ★★★★★
()
Ответ на: комментарий от vaddd

Лисп процессоры не взлетели. Jazelle в арм тоже никто не использует сто лет как, и только олдфаги помнят, что он вообще есть.

ncrmnt ★★★★★
()

Сейчас им нужна помощь в написании стандартной библиотеки.

На лорчике можем максимум название придумать) С+- )

goingUp ★★★★★
()

Anime recommendation: *Monogatari

Не взлетит, очередной хипстерок, в какой копроконторе работает, чтобы потом тыкать пальцем?

foror ★★★★★
()

Сейчас им нужна помощь в написании стандартной библиотеки

Может ему еще ключи от квартиры, где деньги лежат? Оракул за стандартную либу с гугла лярды тресёт, а этому на халяву еще напиши к его ненужно ЯП.

foror ★★★★★
()
Ответ на: комментарий от YogSagot

--(С++)

Эм…. С++?

C++ ни в коем случае не С-подобный. C – процедурный, а C++ – объектно-ориентированный. Синтаксис похож, но идеология совершенно различная.

Camel ★★★★★
()
Ответ на: комментарий от Siborgium

Миллион [s]макак[/s] хипстерков не напишут нужный в 21 веке ЯП, как минимум в этом десятилетии, даже если их бесплатно кормить на фултайм.

foror ★★★★★
()
Ответ на: комментарий от foror

Дрю умудрился собрать достаточно компетентных людей для написания wlroots, sway и aerc. Может и выгорит. Другой вопрос – зачем?

Siborgium ★★★★★
()
Ответ на: комментарий от Siborgium

Не выгорит. Упоротые деды и им подражающие ботаны в vi, продолжат упарываться сями и методами разработки из 70х. Как наглядный пример D. Для остальных напридумано 100500 новых ЯП с сахарком.

Другой вопрос – зачем?

Затем, что пора разрабатывать современную инфраструктуру для разработки системного и прикладного ПО, а не пользоваться костылями и наработками из 70х.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)

Да напишите вы уже MOC для Assemblera! Убьёт все языки в мире. Не буду помогать...

Почему бы просто не пойти другим путём и сделать мощный метапроцессор для С

Или так, хотя бы

xwicked ★★☆
()
Последнее исправление: xwicked (всего исправлений: 1)
Ответ на: комментарий от foror

А чтобы выкинуть всех дедов с их сями на мороз, нужен не очередной сахарок, а платформа на порядок ускоряющая разработку и тестирование системного ПО. Вот такая технология взлетит в момент.

foror ★★★★★
()

новый системный язык программирования

надо развивать аппаратные возможности процессоров для безопасности

https://www.cl.cam.ac.uk/research/security/ctsrd/

лучше С всё равно ничего не придумают

spbob
()
Ответ на: комментарий от lenin386

Попроси кого-нибудь объяснить разницу в ++i , i++ , i+=1

Psilocybe ★★★★
()

и если уж переделывать, то вместо

for (let i = 0z; i < len(greetings); i += 1){
   io::println(greetings[i]);
};

было бы неплохо что-то вроде

foreach (greetings as item)
{
   io::println(item);
};

как аналог

for (let item=greetings; item < greetings+len; item++)
{
   io::println(item);
};
Psilocybe ★★★★
()
Ответ на: комментарий от Psilocybe

foreach (greetings as item)

Не нужно. Во многих случаях надо не просто обойти весь массив. Это поощряет написание кода с break/continue и прочие костыли.

for (let item=greetings; item < greetings+len; item++)

Как диапазоны проверять?

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от commagray

Понятно, а на жизнь он чем зарабатывает? Из под полы ransomware распространяет или удачно биткоинов намайнил?

foror ★★★★★
()

очередную замену Си

Сейчас им нужна помощь в написании стандартной библиотеки.

Спасибо, посмеялся.

sT331h0rs3 ★★★★★
()
Ответ на: комментарий от xwicked

Метаобъектный компилятор как в Qt, который всё в C++ перегоняет.

И зачем этот убогий костыль, который написли сишные макропауки ещё в 90-ых, нужен в различных Assembler’ах?

К тому же, систему сигналов и слотов в Qt, для которой moc предназначен в первую очередь, часто критикуют за Goto-лапшевидный подход, запутывающий код и сильно замедляющий компиляцию.

Надеюсь, moc из Qt в скором будущем отправят на свалку.

EXL ★★★★★
()
Ответ на: комментарий от quickquest

а вроде неплохой такой бэйсик нью дженерэйшен. синтаксис приятный. интересно как он в сравнении например с lua. еще кросскомпиляция в си есть.

что нибудь о нем имеете рассказать? впечатления от использования?

interrupted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.