The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.54, opennews (??), 29-Июл-21, (0) [смотреть все]

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


22. "Выпуск языка программирования Rust 1.54"  –8 +/
Сообщение от Кир (?), 29-Июл-21, 22:52 
> макросов, напоминающих функции (процедурные макросы и макросы, созданные при помощи макроса "macro_rules!"). От функций подобные макросы отличаются символом "!" после имени (macro!(...)) и подстановкой исходного текста макроса вместо генерирования вызова функции

Они наконец изобрели inline-функции? %D

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

24. "Выпуск языка программирования Rust 1.54"  +2 +/
Сообщение от Аноним (24), 29-Июл-21, 22:54 
В каком смысле? Инлайн давно есть
Ответить | Правка | Наверх | Cообщить модератору

29. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Кир (?), 29-Июл-21, 22:56 
Или, слава ржавчине, они изобрели #define? Непонятненько...
Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

32. "Выпуск языка программирования Rust 1.54"  +13 +/
Сообщение от Аноним (24), 29-Июл-21, 22:58 
Макросы C - худшие макросы ever, не надо их тут вспоминать, пожалуйста
Ответить | Правка | Наверх | Cообщить модератору

75. "Выпуск языка программирования Rust 1.54"  –5 +/
Сообщение от Хан (?), 29-Июл-21, 23:46 
Макрос это не часть языка это препроцессор компилятора и чем же макросы rust лучше чем си?
Ответить | Правка | Наверх | Cообщить модератору

86. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Аноним (46), 30-Июл-21, 00:01 
Действительно, наверное и в стандартах языков С и С++ ничего нет про макросы?

А про разницу можно легко найти в гугле.

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

88. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Хан (?), 30-Июл-21, 00:08 
Спецификация C или C++ описывает не только сам язык, а еще например язык макросов для компилятора

А спецификация Java или C# описывает байткод, но ты же не пишешь на байткоде?

Есть технические особенности реализации того или иного ЯП которые отражены в стандарте ЯП, имеющие коственное отношение к ЯП и прямое к его компиляции или интерпритации, тобишь исполнению

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

104. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 30-Июл-21, 01:05 
Кажется, что тебе нужно прочитать секцию Scope стандарта.
Ответить | Правка | Наверх | Cообщить модератору

113. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Хан (?), 30-Июл-21, 01:25 
Помню был тут один поехавший который мне доказывал что язык Си это ООП язык только по тому чтт в стандарте Си имеется слово "обьект трансляции" то есть всмысле раздельная компиляция, но слово же "обьект" есть в стандарте Си значит ООП? И ты туда же? А логику как? Включить не пробывал?
Ответить | Правка | Наверх | Cообщить модератору

119. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от adolfus (ok), 30-Июл-21, 01:50 
Нет в стандарте С никакого "объекта трансляции", но есть "единица трансляции" -- это то, что получается в результате работы препроцессора.
Ответить | Правка | Наверх | Cообщить модератору

149. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 02:45 
Был он меня задолбал этим слово, вроде в C89 его нашел... хз погугли
Ответить | Правка | Наверх | Cообщить модератору

90. "Выпуск языка программирования Rust 1.54"  –3 +/
Сообщение от Хан (?), 30-Июл-21, 00:12 
Стандартная библиотека тоже отношения не имеет к синтаксису ЯП, она лишь описывает API для взаимодействия с окружением внутри ОС, но это же не мешает ей быть в стандарте

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

105. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (46), 30-Июл-21, 01:06 
Синтаксис языка != язык.
Ответить | Правка | Наверх | Cообщить модератору

108. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Хан (?), 30-Июл-21, 01:16 
Хм, ЯП может считаться то что компилируется напрямую в машинный код(неважно как статически, через jit или интерпритатор)

Макрос транслируется в C/C++ код, какое отношение он имеет к ЯП?

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

114. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Хан (?), 30-Июл-21, 01:27 
Синтаксис ЯП так или иначе имеет машинное отображение в виде исполняемого файла с инструкциями процессора... макросы этого не имеют
Ответить | Правка | К родителю #105 | Наверх | Cообщить модератору

111. "Выпуск языка программирования Rust 1.54"  +4 +/
Сообщение от Аноним (-), 30-Июл-21, 01:19 
> Макрос это не часть языка это препроцессор компилятора и чем же макросы rust лучше чем си?


// Wrong!
#define SWAP(x, y) \
  tmp = x; \
  x = y; \
  y = tmp

// Correct!
#define SWAP(x, y) \
  do { \
    tmp = (x); \
    (x) = (y); \
    (y) = tmp; } \
  while (0)


И правда, чем же макросы, которые часть языка и "умеют" в AST, лучше примотанного на синюю изоленту независимого текстового препроцессора, которому неведомы ни имена переменных, ни области видимости, ни прочее "ненужно"?


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

116. "Выпуск языка программирования Rust 1.54"  –4 +/
Сообщение от Хан (?), 30-Июл-21, 01:38 
Макросы это тупо подстановка кода из макросов в код программы, иначе говоря шаблонизатор... какое нафиг AST причем здесь оно?

Функциональный макрос это шаблон заполнения кода внутри него до этапа компиляции

Вышеприведенный тобой дефайн вычисляется только один раз на этапе компиляции после чего в место вызова дефайна просто подставляется вычисленное значение и все, то есть никакой не о какой динамической вычислимости дефайнов в процессе работы программы и речи быть не может

Ну и классическое, раз дефайн это тупо шаблонизатор подставляющих значения никакой проверки типов входящих значений в нем нет

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

126. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (-), 30-Июл-21, 02:15 
> Макросы это тупо подстановка кода из макросов в код программы, иначе говоря шаблонизатор... какое нафиг AST причем здесь оно?

"новое определение макроса бай опеннетный аноним"

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

"Папа, где море?!" (c)


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

132. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 02:24 
Ответь умник где найти код дефайна в обьектном файле? Ах да я ж забыл что он существует лишь в памяти компилятора на момент компиляции...или ты не согласен?
Ответить | Правка | Наверх | Cообщить модератору

148. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (-), 30-Июл-21, 02:44 
> Ответь умник где найти код дефайна в обьектном файле?

Зачем мне отвечать на твои бредовые фантазии, невежда, у которого "дефайн вычисляется только один раз на этапе компиляции"?
> Ах да я ж забыл что он существует лишь в памяти компилятора на момент компиляции...или ты не согласен?

На момент компиляции никаких "дефайнов" уже нет, компилятор работает с результатом препроцессора.
man cpp, man gcc -E, man что_такое_препроцессор (да хоть man gcc вводная часть).

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

133. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Хан (?), 30-Июл-21, 02:25 
И не трави за подстановки дефайна, ты скажи где он как машинный код в обьектном файле?
Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

617. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от anonymous (??), 02-Авг-21, 11:39 
Он не говорил, что define-ы улетают в машинный код. Он говорил, что макросы как часть AST-а языка -- это лучше чем отдельный препроцессор.
Ответить | Правка | Наверх | Cообщить модератору

117. "Выпуск языка программирования Rust 1.54"  –2 +/
Сообщение от Хан (?), 30-Июл-21, 01:40 
Короче разберись что такое макросы, инлайн функции и обычные функции чем они отличаются, а то у тебя венегрет какой то в голове

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

138. "Выпуск языка программирования Rust 1.54"  +/
Сообщение от Аноним (-), 30-Июл-21, 02:30 
>> макросы, которые часть языка и "умеют" в AST
>> ... ни имена переменных, ни области видимости,
> какое нафиг AST причем здесь оно
> Функциональный макрос это шаблон заполнения кода внутри него до этапа компиляции
> Короче разберись что такое макросы, инлайн функции и обычные функции чем они отличаются, а то у тебя венегрет какой то в голове

Подсказка: для начала подтяни базовые (в смысле ВУЗа, а не школьных уроков информатики) знания по ЯП -- и многое перестанет быть "венегретом".

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

128. "Выпуск языка программирования Rust 1.54"  –1 +/
Сообщение от Хан (?), 30-Июл-21, 02:20 
Хотя вычисление макроса на этапе компиляции вроде нигде не прописано, поэтому в старых компиляторах применяется обычный копипаст

Ну и не все макросы можно вычислить, тот же printf например который работает со стандартным потоком ОС

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

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

272. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от n00by (ok), 30-Июл-21, 08:44 
Смотрите раздел Translation phases. Препроцессор это отдельная фаза трансляции, семантический анализ и трансляция (компиляция) идут несколько позже, после чего происходит связывание (линковка).
Ответить | Правка | Наверх | Cообщить модератору

234. "Выпуск языка программирования Rust 1.54"  +1 +/
Сообщение от Аноним (246), 30-Июл-21, 05:41 
Макросы раста - это конструкции языка, а не препроцессора. Уместнее сравнение с темплейтами в плюсах.
Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

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

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




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

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