The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.42, opennews (ok), 13-Мрт-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


27. "Выпуск языка программирования Rust 1.42"  +2 +/
Сообщение от leap42 (ok), 13-Мрт-20, 12:08 
> при этом обходясь без использования сборщика мусора и runtime

даже у Си есть рантайм (он при вообще пустом main обработает argc, argv например), но не у сказочных эльфов, которые в своих манямирках скачут к светлому будущему на единорогах...

Ответить | Правка | Наверх | Cообщить модератору

30. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (30), 13-Мрт-20, 12:25 
А в линкс ядре у си тот же рантайм? Или как они там arc, argv и main обрабатывают?
Ответить | Правка | Наверх | Cообщить модератору

135. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (-), 14-Мрт-20, 03:41 
> А в линкс ядре у си тот же рантайм? Или как они там arc, argv и main обрабатывают?

Конечно нет. В сях если рантайм не надо, его можно нафиг оборвать. Весь. Просто в ноль, я проверял.

p.s. и да, вернуться в микроконтроллере из программы тоже некуда :).

Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от proninyaroslavemail (ok), 13-Мрт-20, 12:58 
Вы сильно путаете рантайм внутри языка (например, эксепшены C++ или сборщик мусора Go) и main() как ассемблерную точку запуска кода откуда-то извне, например, из ОС или самописным ассемблерным прелоадером или бутлоадером
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

75. "Выпуск языка программирования Rust 1.42"  +3 +/
Сообщение от Аноним (75), 13-Мрт-20, 17:05 
main() не запускается из OS.
OS про main() ничего не знает.
Ответить | Правка | Наверх | Cообщить модератору

79. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от proninyaroslavemail (ok), 13-Мрт-20, 17:37 
Понятно что не напрямую, а с помощью кода из слинкованной libc (__libc_start_main или любая другая), но сути это не меняет. В любом случае это не рантайм языка, а просто процедура запуска процесса и передача управления коду
Ответить | Правка | Наверх | Cообщить модератору

89. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (89), 13-Мрт-20, 20:19 
ld.so знает. Правда не про main, а про _start. А мейн запускает crt*.a(с-рантайм) что идет в комплекте с компилятором, например. Перед этим запуская конструкторы :)
Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

77. "Выпуск языка программирования Rust 1.42"  +1 +/
Сообщение от Аноним84701 (ok), 13-Мрт-20, 17:28 
>> при этом обходясь без использования сборщика мусора и runtime
> даже у Си есть рантайм (он при вообще пустом main обработает argc, argv например),

Хм, точно?


#include <sys/syscall.h>
#include <unistd.h>

long write_(long fp, char* ptr, long size) {
    long result;
    __asm__ volatile (
        "syscall"
        : "=a"(result)
        : "a"(SYS_write), "D"(fp),"S"(ptr), "d"(size)
    );
    return result;
}

void exit_(long arg)
{
    long result;
    __asm__ volatile (
        "syscall"
        : "=a"(result)
        : "a"(SYS_exit), "D"(arg)
    );
}

void _start(void) {
  write_(1,"hello",sizeof("hello"));
  exit_(0);
}


gcc -nostartfiles -static -nostdlib min.c -O2 -s
objcopy -R .eh_frame -R .comment a.out
objdump -D a.out

a.out:     file format elf64-x86-64
Disassembly of section .text:
00000000004000b0 <.text>:
  4000b0:    b8 01 00 00 00           mov    $0x1,Йx
  4000b5:    0f 05                    syscall
  4000b7:    c3                       retq  
  4000b8:    0f 1f 84 00 00 00 00     nopl   0x0(%rax,%rax,1)
  4000bf:    00
  4000c0:    b8 3c 00 00 00           mov    $0x3c,Йx
  4000c5:    0f 05                    syscall
  4000c7:    c3                       retq  
  4000c8:    0f 1f 84 00 00 00 00     nopl   0x0(%rax,%rax,1)
  4000cf:    00
  4000d0:    b8 01 00 00 00           mov    $0x1,Йx
  4000d5:    bf 01 00 00 00           mov    $0x1,Мi
  4000da:    be f0 00 40 00           mov    $0x4000f0,%esi
  4000df:    ba 06 00 00 00           mov    $0x6,Мx
  4000e4:    0f 05                    syscall
  4000e6:    b8 3c 00 00 00           mov    $0x3c,Йx
  4000eb:    31 ff                    xor    Мi,Мi
  4000ed:    0f 05                    syscall
  4000ef:    c3                       retq  
Disassembly of section .rodata:

00000000004000f0 <.rodata>:
  4000f0:    68 65 6c 6c 6f           pushq  $0x6f6c6c65

*О, единорожек! Цып-цып-цып!*

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

126. "Выпуск языка программирования Rust 1.42"  –3 +/
Сообщение от Аноним (126), 14-Мрт-20, 02:06 
1) Нормальные люди(~95% программистов всей Земли) - не пишут на GCC. А, в других компиляторах есть, как же строка (C)...
2) До чего же (прям таки козловски-)извратский и GNU ассемблер...
3) Всегда знал про ассемблер, как главное отталкивающее меня вообще от программирования под *линукс или на MinGW,
но как погляжу - у них до сих пор и дизассемлер - хуже чем сможет слабать любой школьнег, похоже этому специально где то учат...
Ответить | Правка | Наверх | Cообщить модератору

137. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (-), 14-Мрт-20, 03:45 
> 1) Нормальные люди(~95% программистов всей Земли) - не пишут на GCC.

Чего бы это ради? У него весьма приличная кодогенерация и он поддерживает кучу процов. Я вот на нем cortex M прогаю, допустим. Впрочем можно и linux на ARM/.

> 2) До чего же (прям таки козловски-)извратский и GNU ассемблер...

Ну хорошо, на cortex M можно и по сути без ассемблера. Прям с места в карьер си на бареметал, без прослоек для его запуска.

> 3) Всегда знал про ассемблер, как главное отталкивающее меня вообще от программирования

Ну правильно, понимать как машина работает эт не модно. Сразу видно кто растом пользуется, вебманки всякие.

Ответить | Правка | Наверх | Cообщить модератору

165. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от Аноним (165), 14-Мрт-20, 11:11 
Из-за таких "адекватов" как вы приходится вот отвечать - тратя драгоценное время... :(

>> 1) Нормальные люди(~95% программистов всей Земли) - не пишут на GCC.
> Чего бы это ради? У него весьма приличная кодогенерация и он поддерживает кучу процов. ...

Про (реально исторически паршивую сравнительно, т.е.даже условно немаксимальную)кодогенерацию и  поддержку процессоров - никто и не говорил, а речь тут везде и вовсе - была именно про синтаксис. Диагональный-чтец?...

>> 2) До чего же (прям таки козловски-)извратский и GNU ассемблер...
> Ну хорошо, на cortex M можно и по сути без ассемблера. Прям с места в карьер си на бареметал, без прослоек для его запуска.

- Вы тогда всёравно какой то отсталый: люди вон микроконтроллеры на БАСИКах ваяют, тоже без ассемблера...

>> 3) Всегда знал про ассемблер, как главное отталкивающее меня вообще от программирования
> Ну правильно, понимать как машина работает эт не модно. Сразу видно кто растом пользуется, вебманки всякие.

- Плохо видно. Я писал именно про кривущее баго-говно-поделие - солянку GCC.
Другие все компиляторы С/С++/Asm - куда вменяемей... Даже такие как (даже непереносимый) С--, (непонятно для чего существующий).

Ответить | Правка | Наверх | Cообщить модератору

220. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (-), 15-Мрт-20, 04:43 
> Про (реально исторически паршивую сравнительно, т.е.даже условно
> немаксимальную)кодогенерацию и  поддержку процессоров - никто и не говорил,

Пардон, я уж не знаю какие там у кого истории, зато знаю что Yan Collett хвалил gcc в своем суперскоростном LZ4. Он генерил очень быстрый код по дефолту, с минимумом приседаний. В отличие от остальных. Так что красивая сказка, но автору LZ4 я как-то больше верю, он эксперт в создании быстрых штук на си.

> а речь тут везде и вовсе - была именно про синтаксис. Диагональный-чтец?...

Не понимаю каким вообще фигом рантайм относится к синтаксису. В сях это довольно ортогональные вещи.

> - Вы тогда всёравно какой то отсталый: люди вон микроконтроллеры на БАСИКах
> ваяют, тоже без ассемблера...

Есть фундаментальное отличие: чтобы запустить бэйсик, должен быть интерпретатор бэйсика, как правило писаный на чем-то ином как правило. Чтобы си с места в карьер втопил на cortex - не надо вообще совсем ничего. И этот же си может уже врубившись создать себе arena'у более соответствующую формальному стандарту (до этого момента просто есть некие ограничения на языковые конструкции). И вот тут простота си как раз очень в кассу.

Я вот не уверен - можно растом поднять окружение расту? Или крутые инноваторы пойдут стартап на асме корябать? :)

> - Плохо видно. Я писал именно про кривущее баго-говно-поделие - солянку GCC.

GCC не хуже и не лучше остальных. И уж не растовикам с LLVMным багодромом про баги вещать, уж LLVM забагован что пц. Потому что огроменная мегалиба.

> Другие все компиляторы С/С++/Asm - куда вменяемей...

Мечтать не вредно.

> Даже такие как (даже непереносимый) С--, (непонятно для чего существующий).

Вот это я тоже не знаю. Наверное авторы колибри заманались переписывать 32-битный асм на 64 бита и до них постепенно стало доползать какого дьявола системщина на сях последнюю этак четверть века, если не больше. Ну чтож, ручник они конечно медленно отпускают, годков через 10 они еще сравнят кодогенерацию gcc с своим нечто и если не хряпнут яду с горя, глядишь си разучат наконец :). Но они выбрали какой-то очень медленный и мучительный способ узнать эти вещи :)

Ответить | Правка | Наверх | Cообщить модератору

238. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (-), 15-Мрт-20, 14:21 
> Чтобы си с места в карьер втопил на cortex - не надо вообще совсем ничего.
> Я вот не уверен - можно растом поднять окружение расту? Или крутые инноваторы пойдут стартап на асме корябать? :)

Ну-ка, втопи с места в карьер, на чистом си, классический x86 - т.е. с BIOS и MBR.

Ответить | Правка | Наверх | Cообщить модератору

261. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (-), 16-Мрт-20, 02:06 
> Ну-ка, втопи с места в карьер, на чистом си, классический x86 - т.е. с BIOS и MBR.

Я не настолько некрофил-извращенец, и кроме всего прочего знаю штук пять асмов зело поприятнее, так что "радость" кодинга на x86-realmode asm достанется кому-нибудь другому.

Алсо я говорил про takeoff bare metal'а, как вообще самое первое что там врубается. То что тебе глюкобиос такой convention втулил вовсе не означает что ты первый кто на проце вообще работает. Собссно возможность пнуть камень одними сями лично я рассматриваю за годную фичу тех cortex'ов, это означает что фирмварь С САМОГО НАЧАЛА достаточно читабельная.

Ответить | Правка | Наверх | Cообщить модератору

140. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от deeaitch (ok), 14-Мрт-20, 03:50 
О, открой тайну покрытую мрагом. на чем же пишут 95% "нормальных" людей
Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

166. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от Аноним (166), 14-Мрт-20, 11:30 
В общем то - на разном... статистика - не секрет же, ищите.
Но да, забыл уточнить что считаю "веб-программистов" - просто некорретно считать програмистами, максимум программистами-скриптерами - что сооовсем иное (а иначе и например авторов бульварных фельетонов - можно считать програмистами, они же тоже реально програмируют своими текстами мозги людей... даже тоже вполне по шаблонам), и потому их всех - я не внёс в эти 95%, как просто непрограммистов, как иную группу. Как и фанатов Java с C# с визуал-бейсиковцами - из той же группы скриптеров фактически(даже несмотря на AOT/JIT - который ныне даже в калькляторы пихают, так что это не показатель ещё). Так что кроме Сяшников и С++шников - остаются как то так по распространённости: делфисты, фортранщики, ассемблерщики, паскальщики, (даже и неуверен что сюда стоит отнести скриптовых модных бейсиковцев в микроконтроллерах и уж точно во всяких 3D-engine) боюсь я преувеличил даже - в этой группе нативных языков прогармирования, растовцев то - даже куда меньше 5%... Так что 99.(9)%.
Ответить | Правка | Наверх | Cообщить модератору

197. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от deeaitch (ok), 14-Мрт-20, 20:00 
>[оверквотинг удален]
> их всех - я не внёс в эти 95%, как просто
> непрограммистов, как иную группу. Как и фанатов Java с C# с
> визуал-бейсиковцами - из той же группы скриптеров фактически(даже несмотря на AOT/JIT
> - который ныне даже в калькляторы пихают, так что это не
> показатель ещё). Так что кроме Сяшников и С++шников - остаются как
> то так по распространённости: делфисты, фортранщики, ассемблерщики, паскальщики, (даже
> и неуверен что сюда стоит отнести скриптовых модных бейсиковцев в микроконтроллерах
> и уж точно во всяких 3D-engine) боюсь я преувеличил даже -
> в этой группе нативных языков прогармирования, растовцев то - даже куда
> меньше 5%... Так что 99.(9)%.

Автор дочитай до конца.

Я не хочу никого обидеть. Но, правда, о статистике, учите матчасть. Извиняюсь если это кого обидело. И так. Статистика это выборка и по сути срез состояния. Статистика не скажет ничего без её анализа. А правильно сделать анализ надо уметь.

Пример. Статистика ГАИ, цвет машины попавшей в аварию, большинство ярких цветов. Вывод - яркие машины чаще попадают в аварию. НЕТ не верно. Диванные мамины гонщики обсмотревшиеся фильмов и решившие быть такими крутыми покупают тачки, красят в яркие цвета и попадают в аварии.

Так что да, в целом калькуляция верная. Респект.

Ответить | Правка | Наверх | Cообщить модератору

262. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (-), 16-Мрт-20, 02:08 
> О, открой тайну покрытую мрагом. на чем же пишут 95% "нормальных" людей

На ватсаппе и прочих телеграмах :)

Ответить | Правка | К родителю #140 | Наверх | Cообщить модератору

280. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от deeaitch (ok), 18-Мрт-20, 02:31 
А ещё на партах и заборах.
Ответить | Правка | Наверх | Cообщить модератору

173. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним84701 (ok), 14-Мрт-20, 13:11 
> 1) Нормальные люди(~95% программистов всей Земли) - не пишут на GCC. А, в других компиляторах есть, как же строка (C)...

clang -Wall -nostartfiles -static -nostdlib -Wl,--gc-sections min.c -O2 -s

> но как погляжу - у них до сих пор и дизассемлер - хуже чем сможет слабать любой школьнег, похоже этому специально где то учат...

Ну если аноним из нормальных людей так авторитетно заявляет, то наверное так оно и есть 🙄

Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

80. "Выпуск языка программирования Rust 1.42"  –2 +/
Сообщение от Аноним (80), 13-Мрт-20, 17:52 
Это на рантайм, рантайм — это то, что линкуется огромным ненужным блобом к коду, и вызывается из него в процессе работы. Но, скажем, при динамической кодогенерации, других вариантов и нет. Как результат, все языки с рантаймом имеют высокий оверхэд и очень значительный футпринт, а также пониженную эффективность (которую пытаются выправлять ресурсоёмкими динамическими оптимизациями).
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

103. "Выпуск языка программирования Rust 1.42"  –2 +/
Сообщение от коржик (?), 13-Мрт-20, 23:59 
в оверпринт с футхэтом перепутали
Ответить | Правка | Наверх | Cообщить модератору

127. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от Аноним (127), 14-Мрт-20, 02:09 
Про блоб это очень метко...
Ответить | Правка | К родителю #80 | Наверх | Cообщить модератору

81. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от Аноним (80), 13-Мрт-20, 17:57 
ps вот glib можно считать рантаймом в некоторой мере (хотя это больше коллекция подпрограмм), glibc уже нет, но не glib, ни glibc, ни упаси бже boehm-gc не являются "си".
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

95. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от segesg (?), 13-Мрт-20, 22:30 
Ну, на расте пишут прошивки микро-контроллеров.
Там нет ОС вообще.
Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

128. "Выпуск языка программирования Rust 1.42"  +2 +/
Сообщение от Аноним (128), 14-Мрт-20, 02:12 
Ну, и на Си и даже BASIC пишут прошивки микро-контроллеров. И что это разве нормально тут?...
Ответить | Правка | Наверх | Cообщить модератору

145. "Выпуск языка программирования Rust 1.42"  +/
Сообщение от АнтонимАнтоним (?), 14-Мрт-20, 05:13 
И? На Go тоже пишут прошивки микро-контроллеров.
Там тоже нет ОС вообще.

https://github.com/f-secure-foundry/tamago-example

Ответить | Правка | К родителю #95 | Наверх | Cообщить модератору

97. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от Ordu (ok), 13-Мрт-20, 23:14 
> даже у Си есть рантайм (он при вообще пустом main обработает argc, argv например)

Это рантайм не C, а libc.

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

134. "Выпуск языка программирования Rust 1.42"  –1 +/
Сообщение от Аноним (-), 14-Мрт-20, 03:38 
> даже у Си есть рантайм

Не является чем-то неотъемлимым - начиная с C99 регламентирован "freestanding".

> (он при вообще пустом main обработает argc, argv например)

Интересно, кто бы это мне на, допустим, микроконтроллере argc и argv заполнит, например, ежели моя фирмвара и стартует этот чип? :)

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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