ФлеймФорумПрограммирование

Давайте поговорим о примерах, с точки зрения программирования. (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
6:05, 11 авг 2025

ronniko
> Чтобы компьютер решил этот пример его надо парсить, что не удобно и не быстро.

+ chatgpt
#31
9:14, 11 авг 2025

какой ужас :)

#32
9:27, 11 авг 2025

NicoAZ ты пишешь не по делу. И вместо ответов по теме, ты решил пообсуждать мой возраст.
Помоему ты неадекват.

https://gamedev.ru/flame/forum/?id=291510&page=2&m=6084031#m29

#33
10:31, 11 авг 2025

ronniko
> ты пишешь не по делу

Так никто ж так и не знает, что за дело такое, в котором парсить выражение нельзя.

#34
(Правка: 11:37) 11:31, 11 авг 2025

Зато вот возраст прям надо обязательно обсудить.

Так никто ж так и не знает, что за дело такое, в котором парсить выражение нельзя.

хочется без парсинга делать. И оформить , так чтобы быстро и просто считать.
Будет скрипт для звуковых фильтров.
Типа такого.

    float resonance = 0.1;
    float Q = 0.707;
    float theta = PI * 2.0f * cutoff;
    float alpha = sin(theta) / (2.0f * resonance)+Q/4;
    float cosw  = cos(theta);
    float beta  = (1.0f - cosw) * 0.5f;
    float a0inv = 1.0f / (1.0f + alpha);
    float b0 = a0inv * beta;
    float b1 = a0inv * 2.0f * beta;
    float b2 = a0inv * beta;
    float a1 = a0inv * -2.0f * cosw;
    float a2 = a0inv * (1.0f - alpha);
#35
11:44, 11 авг 2025

ronniko
> хочется без парсинга делать

Зачем, если с парсингом легко, удобно и приятно?

И ничуть не медленнее, если парсинг происходит на этапе "компиляции" скрипта. Просто в таком случае вместо сразу вычисления строится дерево операторов.

ronniko
> какой ужас

Никакого ужаса, просто надо правильно смотреть:

ВЫРАЖЕНИЕ: [ "-" ] ПРОИЗВЕДЕНИЕ [ АДДИТИВНЫЙ_ОПЕРАТОР ПРОИЗВЕДЕНИЕ  [ АДДИТИВНЫЙ_ОПЕРАТОР  ПРОИЗВЕДЕНИЕ [...] ] ]

АДДИТИВНЫЙ_ОПЕРАТОР: "+" | "-"

ПРОИЗВЕДЕНИЕ: ТЕРМ [ МУЛЬТИПЛИКАТИВНЫЙ_ОПЕРАТОР ТЕРМ [ МУЛЬТИПЛИКАТИВНЫЙ_ОПЕРАТОР ТЕРМ [...] ] ]

МУЛЬТИПЛИКАТИВНЫЙ_ОПЕРАТОР: "*" | "/"

ТЕРМ: ЧИСЛО | ФУНКЦИЯ | ПЕРЕМЕННАЯ | СКОБКИ

ФУНКЦИЯ: ИМЯ_ФУНКЦИИ "(" АРГУМЕНТЫ ")"

АРГУМЕНТЫ: ВЫРАЖЕНИЕ [ "," ВЫРАЖЕНИЕ [ "," ВЫРАЖЕНИЕ [...] ] ]

СКОБКИ: "(" ВЫРАЖЕНИЕ ")"

здесь квадратные скобки обозначают необязательную часть, вертикальная черта - альтернативы.

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

Реализуй уже парсер выражений на асме и закрой гештальт.

#36
(Правка: 12:24) 12:06, 11 авг 2025

Dmitry_Milk

Реализуй уже парсер выражений на асме и закрой гештальт.

у меня есть уже и причем года три назад сделал.
fasm поделка на 3 500 байт. Писал для скриптов.

     
Я Мастера пугал им :)
https://gamedev.ru/flame/forum/?id=285850

А хочется чего-то более интересного и простого и изящно-элегантного.
Считаю, что нынче парсить примеры не модно :)
Изображение

#37
12:24, 11 авг 2025

ronniko
> А хочется чего-то более интересного и простого и изящно-элегантного.

Максимально простое - фортоподобный синаксис. Те самые польские нотации прямые или обратные. Прям проще некуда. Парсер только для лексем нужен.
Чуть сложнее - лиспоподобный синтаксис. В добавление к парсеру лексем пишется еще 10 строк разбора скобок.
Операторный синтаксис реально в десятки раз сложнее последнего, но если не делал такого еще, то рекомендую просто для разминки мозгов, программисту пристойно иметь такую задачу за плечами решенной.

#38
15:37, 11 авг 2025

ronniko
> Зато вот возраст прям надо обязательно обсудить.
Естественно, надо возраст обсудить. Ещё уровень компетенций и академическую степень неплохо было бы обсудить, помимо возраста. Вы реально предполагаете, что всем поголовно интересно обсуждать тригонометрические функции и арифметические выражения (они же "примеры"), с ребенком, который значения этих слов только-только нагуглил, при чем ещё не всех?

ronniko
> ты пишешь не по делу
Вот по делу. Гуглится за 5 секунд. Но Вас не аналитическая форма информации интересует, вы создание тему на форуме в поиске общения и называете ее "Давайте поговорим о...", после чего называете неадекватными тех, кто приходит с Вами поговорить.

#39
18:10, 11 авг 2025

NicoAZ
> Естественно, надо возраст обсудить. Ещё уровень компетенций и академическую степень неплохо было бы обсудить, помимо возраста.

Я вас попрошу птичку нашу не обижать

Роннико за последние недели похоже единственный во флейме, кто спрашивает про программирование, а не про квантово-механический оккультизм, содержанок, политоту, тачки и прочую херомантию.

#40
3:21, 12 авг 2025

Dmitry_Milk
> Роннико за последние недели похоже единственный во флейме, кто спрашивает про программирование, а не про квантово-механический оккультизм, содержанок, политоту, тачки и прочую херомантию.
Вот тут вынужден с Вами согласиться... Учитывая качество и содержание среднего сообщения на форуме, вопросы о том, как написать Хеллоувоплд на Пайтоне тут скоро за счастье будут...

#41
5:13, 12 авг 2025

ronniko
> и мы моглибы сразу решать каждую часть параллельно.

Это вообще идея-фикс функциональных языков.
Выражение 77-2+8*(5-х)/2+у*x можно записать на лиспоподобном синтаксисе так:
(+ (- 77 2) (/ (* 8 (- 5 x)) 2) (* y x))

Синтаксис экстремально простой - скобка открывает операцию первая лексема в скобке - это сама операция, все остальные написанные через пробел - это аргументы операции и каждый аргумент может снова быть операцией.
Таким образом у корневой операции + 3 аргумента которые тоже являются операциями:
(- 77 2)
(/ (* 8 (- 5 x)) 2)
(* y x)
Так вот идея простая - операции на одном уровне вложенности могут теоретически быть запущены параллельно - таким образом лиспоподобный синтаксис явным образом прописывает возможности параллелизма.
Однако операция не может завершиться раньше, чем завершатся (пока не будем вспоминать про ленивые вычисления) все её аргументы - таким образом лиспоподобный синтаксис явно прописывает последовательность операций.
Получающееся дерево по сути в ширину описывает параллелизм, а в глубину - последовательность.
(/ (* 8 (- 5 x)) 2) самая глубокая операция и в ней умножение на 8 не сможет завершится пока не дождётся выполнения (- 5 x), хотя вся эта цепочка может выполняться параллельно выполнению соседней ветки с (* y x).
Какие выводы из этого можно сделать для тебя лично? А хрен его знает.

#42
5:17, 12 авг 2025

=A=L=X=
> можно записать на лиспоподобном синтаксисе так
kipar её и предложил. не?

#43
5:46, 12 авг 2025

skalogryz
> kipar её и предложил. не?

Он вскользь упомянул, а я расписал.
Вообще прикольно как ФЯ сперва очень рекламирует себя широкими возможностями для параллелизма, а потом когда до практики доходит, то оказывается, что в реальной программе повсюду начинают торчать уши "сковывающих последовательностей", которые как раз ограничивают параллелизм как выше описано.
Хотя тоже прикольно, что получается, что в программе их можно чётко выделять и они по сути явно прописаны. Интересный взгляд на мир. Просто хочешь не хочешь, но если надо получить программу реагирующую на инпут - инпут придётся прошивать явной последовательностью которая в том числе запретит параллелизм и гонку разных потоков за ввод.
По сути "как ни крутись, но в реальных программах леща параллелизма придётся урезать, ибо иначе они не заработают по дизайну".

#44
(Правка: 20:35) 20:28, 23 авг 2025

Выражение 77-2+8*(5-х)/2+у*x можно записать так
Выражение 77-2++8*(5-х)/2++у*x

решаем до -- или ++

1)77-2
2)8*(5-х)/2
3)у*x
4) три ответа сложить.

либо пробел заюзать 77-2+ 8*(5-х)/2+ у*x

Страницы: 1 2 3 4 Следующая »
ФлеймФорумПрограммирование