powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
25 сообщений из 474, страница 18 из 19
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499477
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов.Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :)
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499489
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу макросов в logger.

Не вариант. Т.к есть требование от заказчика. Уровни логгирования должны быть управляемые.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499556
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо поводу макросов в logger.

Не вариант. Т.к есть требование от заказчика. Уровни логгирования должны быть управляемые.Ну и пусть себе управляются переменной или переменными. В чём вопрос-то?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499580
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_rukealon(Ruslan)зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов.Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :)
ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499595
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)iv_an_ruпропущено...
Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :)
ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился...Эксель? 8:O
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499618
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_rukealon(Ruslan)пропущено...

ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился...Эксель? 8:O
нет, эксель конечно мощная программка, но такие объёмы и интерактивность не тянет, конкурирующий аналог . Собственно под него это решение тоже пойдёт.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499622
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)у меня был опыт написания вычислений для обработки массивов (инженерные расчёты у нефтяников)
обычная задача: на входе есть 10 и больше именованных массивов - части может не быть, части данных может в них не быть, на выходе должно получиться тоже какие-то массивы которые можно посчитать. В идеале ещё должна быть возможно посчитать только часть выходных
в общем виде расчёт можно описать вот так:
Код: python
1.
2.
3.
4.
5.
6.
7.
for i in Range 
  t1 = f1(i, x1,x2...);
  t2 = f1(i, x1,x2...);
  ...
  y1 = f1(i, x1,x2..., t1....);
  y2 = f1(i, x1,x2..., t1....);
  ...



в нём есть зависимости которые общие, есть зависимости которые привязаны к какой-то геопозиции, есть расчёты на основе лабораторных исследований для каких-то интервалов.
через год, сотня инженеров базовый код превращают в нечитаемую портянку на 10-ки тыщ строк в кучах модификаций (копипаст и правка - они так привыкли)
kealon(Ruslan)iv_an_ruпропущено...
Если зависимости стабильны, и не зависят, скажем, от модельного времени, только от структуры вычислений, то проще всего написать препроцессор, который будет сортировать формулы по порядку вычисления, и всё на том. Заодно выругается, если где цикл вылезет :)
ага, так и пришлось делать, только чуть хитрее, в итоге интерпретатор функционального языка получился

Здесь типичный пример over-engineering (в обоих предложенных решениях).
Если минуточку подумать, то что такое значение в функциональном языке и почему оно вычилсяется лениво? Потому что значений там нет, а все значения это функции вычисляющие эти значения.
Поэтому не надо придумывать никакой препроцессор или вообще другой язык.
Надо просто буквально заменить значения на лямбды их вычисляющие. Это автоматически построит зависимости средствами языка. А для редукции применяется например мемоизация и COW.
Ну и для неквалифицированных сотрудников написать пару макросов разворачивающих код вот в это все.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#define LAZY(x) [=]() { return x; }
#define EVAL(x) (x)()

for (auto i: range) {
  auto t1 = LAZY(f1(i, x1, x2...));
  auto t2 = LAZY(f1(i, x1,x2...));
  ...
  auto y1 = LAZY(f1(i, x1,x2..., EVAL(t1)....));
  auto y2 = LAZY(f1(i, x1,x2..., EVAL(t1)....));
  ...
  print (EVAL(y1)); // вычисляется только то от чего зависит y1
}
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499633
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНадо просто буквально заменить значения на лямбды их вычисляющие....если компилятор не сдохнет, и если вы вытерпите весь сопутсвующий оверхед времени исполнения.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499634
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя конечно в связи с тем что в С++ лямбд нет, то такой код невозможен
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499635
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ru.если компилятор не сдохнет, и если вы вытерпите весь сопутсвующий оверхед времени исполнения.
Чего вдруг и то и другое? Лямбды это обычные функции с т.з. компилятора. Они не вносят дополнительного оверхеда по скорости.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499656
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyiv_an_ru.если компилятор не сдохнет, и если вы вытерпите весь сопутсвующий оверхед времени исполнения.
Чего вдруг и то и другое? Лямбды это обычные функции с т.з. компилятора. Они не вносят дополнительного оверхеда по скорости.Как только компилятор не сможет заинлайнить какую-нибудь лямбду, у вас будет лишний вызов функции, с расходом регистров и ломкой конвейеров. Самое то, что нужно для длинного числогрызного цикла.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499669
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruКак только компилятор не сможет заинлайнить какую-нибудь лямбду, у вас будет лишний вызов функции, с расходом регистров и ломкой конвейеров. Самое то, что нужно для длинного числогрызного цикла.
Нет. Потому вызовов там от силы несколько десятков. Никакой инлайн там не нужен. Это подтверждается тем что интерпретатор не тормозил )))
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499673
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyiv_an_ruКак только компилятор не сможет заинлайнить какую-нибудь лямбду, у вас будет лишний вызов функции, с расходом регистров и ломкой конвейеров. Самое то, что нужно для длинного числогрызного цикла.
Нет. Потому вызовов там от силы несколько десятков. Никакой инлайн там не нужен. Это подтверждается тем что интерпретатор не тормозил )))Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;)
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499674
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyХотя конечно в связи с тем что в С++ лямбд нет, то такой код невозможен
Я акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом
свойств (чистота и частичная вычислимость) а в c++ это поскипали.

А эти свойства были для чего-то нужны...
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499679
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruAnatoly Moskovskyпропущено...

Нет. Потому вызовов там от силы несколько десятков. Никакой инлайн там не нужен. Это подтверждается тем что интерпретатор не тормозил )))Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;)
Коллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing....
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499681
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAnatoly MoskovskyХотя конечно в связи с тем что в С++ лямбд нет, то такой код невозможен
Я акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом
свойств (чистота и частичная вычислимость) а в c++ это поскипали.

А эти свойства были для чего-то нужны...Чистота нужна для mix(), для автоматического параллелизма, и для прочего автоматического вкорячивания троек Хоара. В макроассемблере это всё как-то странно выглядело бы :)
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499684
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytoniv_an_ruпропущено...
Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;)
Коллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing....Перефразируя старую молитву,
Боже, дай мне сил заинлайнить то, что можно заинлайнить, дай мне терпения заоткладывать то, что нельхзя заинлайнить, и дай мне мудрости, чтоб отличить первое от второго.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499692
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКоллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing....
Они ортогональны.
Если лямбды все находятся в одной функции, то они могут быть заинлайнены.
Просто в большинстве случаев это ни на что не влияет. Поскольку если речь про отложенные вычисления, значит то что могло быть заинлайнено настолько тяжелое что не имеет значения как его вызвать.
iv_an_ruЧистота нужна для mix(), для автоматического параллелизма, и для прочего автоматического вкорячивания троек Хоара. В макроассемблере это всё как-то странно выглядело бы :)
В моем примере вполне можно в макрос впихнуть параллельное выполнение не меняя юзерского кода.
Просто как я уже говорил выше, нужно приоткрыть глаза и увидеть очевидное.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499704
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом
свойств (чистота и частичная вычислимость) а в c++ это поскипали.
Поскипали только то, что реализуется средствами языка.
Посмотрите http://www.boost.org/doc/libs/1_64_0/libs/phoenix/doc/html/phoenix/starter_kit.html
Там все это есть.
Другое дело что в императивных языках почти все можно написать без всей этой математической суеты.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499841
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytoniv_an_ruпропущено...
Предположу, что интерпретатор тормозил, просто авторы не знали, с чем сравнивать ;)
Коллеги! А нет ли здесь борьбы противоположностей? Инлайнинг и lazy computing....
одно другому не мешает, ленивый код полностью раскладывается в равноценный императивный - другое дело, что его гораздо больше выходит
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499846
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonЯ акцентировал внимание на том что в ФП функцию и лямбда наделяют рядом
свойств (чистота и частичная вычислимость) а в c++ это поскипали.
Поскипали только то, что реализуется средствами языка.
Посмотрите http://www.boost.org/doc/libs/1_64_0/libs/phoenix/doc/html/phoenix/starter_kit.html
Там все это есть.
Другое дело что в императивных языках почти все можно написать без всей этой математической суеты.
можно, но вот заметил что обычный инженерный состав декларативное описание понимает гораздо лучше императивного

По коду, интерпретатор был написан на питоне (строчек 200+), так же как и исходный код. Работать он стал быстрее почти в два раза по сравнению с исходным.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39500012
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Anatoly Moskovskyпропущено...

Поскипали только то, что реализуется средствами языка.
Посмотрите http://www.boost.org/doc/libs/1_64_0/libs/phoenix/doc/html/phoenix/starter_kit.html
Там все это есть.
Другое дело что в императивных языках почти все можно написать без всей этой математической суеты.
можно, но вот заметил что обычный инженерный состав декларативное описание понимает гораздо лучше императивного

По коду, интерпретатор был написан на питоне (строчек 200+), так же как и исходный код. Работать он стал быстрее почти в два раза по сравнению с исходным.Помнится, на таких задачах питон проигрывал ровно в 100 раз сишному коду.
Кстати, недавно опубликовали, как ускорили ПХП7 тоже в два раза относительно прежних версий. Теперь всего в 50 раз медленнее.

Не шутка.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39500025
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglПомнится, на таких задачах питон проигрывал ровно в 100 раз сишному коду.
Кстати, недавно опубликовали, как ускорили ПХП7 тоже в два раза относительно прежних версий. Теперь всего в 50 раз медленнее.

Не шутка.Он всему проигрывает, вот только выбор не на моей стороне был, мне лишь пришлось с этой прогой жить.
Причём, больше всего тормозит в ней не расчёт, а пересылка данных приложение<-> питон и постоянные апдейты гуи, на каждый чих в данных, которые они так и не пофиксили.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39502234
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлынули воспоминания.

Наши эксперименты с рендерингом 3Д-графики на С++/Python/PyPy 18150763

Уж 2 года прошло. Мдя. Здесь Змей проиграл С++ где-то 1000-кратно. Видимо динамическая типизация
сожгла все полезные мегафлопы.

Пай-пай (PyPy) чуть лучше. Где-то в 30 раз отстал от С++. Но все равно в хвосте от трендовых Go/C#
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39502262
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

там не только динамическая типизация, там ещё и "динамические переменные" (чтение\запись по имени из\в словарь)
...
Рейтинг: 0 / 0
25 сообщений из 474, страница 18 из 19
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]