powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
25 сообщений из 474, страница 17 из 19
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39498910
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)это ожидание асинхронной операции, а не "чистая ленивость" - её можно сделать только на уровне языка, как тернарный оператор, например.
C++ позволяет реализовать это на уровне библиотеки.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39498970
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Библиотечные возможности это кмк другой уровень. Не уровень языка.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499043
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБиблиотечные возможности это кмк другой уровень. Не уровень языка.
Не в С++, где есть шаблоны и перегрузка операторов. И лямбды конечно )))
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499145
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе важно как называет этот сахар старина Бьярне. А важно другое.
Соответствует ли это современным критериям ФП или нет.Было бы странно, если бы макроассемблер процессоров общего назначения, коим является C++, являлся полноценным функциональным языком.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499214
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonБиблиотечные возможности это кмк другой уровень. Не уровень языка.
Не в С++, где есть шаблоны и перегрузка операторов. И лямбды конечно )))
ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбирать
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499277
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбирать
Нет. Если немного подумать и разработать нотацию в пределах синтаксиса С++.
Например см.
https://bartoszmilewski.com/2014/04/21/getting-lazy-with-c/
https://github.com/jscheiny/Streams
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499298
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то вы все усложнили... редукция.. немцы какие-то.. конгрессы.

Eсть пример. На гипотетическом языке X. Фрагмент.

Код: php
1.
2.
logger.level = INFO;
logger.trace("Dump of object : " + obj.toJsonString());



Если этот язык - классический императивный (С/C++/Delphi/Java) то расчет выражения в скобках будет начат с вычисления метода ::toJSonString().
После этого отрабатывает метод trace который проверяет что он в режиме INFO и соотв ничего логать не надо,
но объем работ по ненужной сериализации состояния объекта уже выполнен.

В языке функциональном расчет метода ::toJsonString() не будет выполнен в силу ленивости вычислений и возврата
по ссылке результата. Согласитесь, ценное приобретение. Оптимизация из коробки.

Как эту ленивость можно реализовать для императивного (последовательного) языка список
которых я привел выше?

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

Не в С++, где есть шаблоны и перегрузка операторов. И лямбды конечно )))
ИМХО для реализации "чистой ленивости", упоришься редукцию графов на макросах разбиратьПример, в данном случае, а зачем она тут нужна?

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

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

Eсть пример. На гипотетическом языке X. Фрагмент.

Код: php
1.
2.
logger.level = INFO;
logger.trace("Dump of object : " + obj.toJsonString());



Если этот язык - классический императивный (С/C++/Delphi/Java) то расчет выражения в скобках будет начат с вычисления метода ::toJSonString().
После этого отрабатывает метод trace который проверяет что он в режиме INFO и соотв ничего логать не надо,
но объем работ по ненужной сериализации состояния объекта уже выполнен.

В языке функциональном расчет метода ::toJsonString() не будет выполнен в силу ленивости вычислений и возврата
по ссылке результата. Согласитесь, ценное приобретение. Оптимизация из коробки.

Как эту ленивость можно реализовать для императивного (последовательного) языка список
которых я привел выше?

P.S. Ссылки, которые привел Анатолий я еще не читал.Бред.
Будет так.

IF logger.level > INFO
THEN
STRING += obj.toJsonString();
END;

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

Как-то вы все усложнили. (C)

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

Но кое какие идеи могу подкинуть.
Например в логгер передавать не значение а лямбду.
Код: sql
1.
logger.trace( () -> "Dump of object : " + obj.toJsonString());
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499304
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, вывод

пока вы пишете на простом языке - вы однозначно понимаете, во что в итоге ваши инструкции разворачиваются.

Иначе, вы пляшете с бубном, пытаясь угадать. (пляски начинаются конечно только когда наступила ЗИМА)

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

IF logger.level > INFO
THEN
STRING += obj.toJsonString();
END;

фсе
Этот код у вас будет где? В API логгера? Или в вашем прикладном коде?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499311
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

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

ну посмотри в исходники логгера, да
Зям. Я тебя не узнаю. Ну что за брюзжание? Куда мне посмотреть?

Я привел обычный (энтерпрайзный) паттерн. Логгирование с уровнями.
Ты предложил обернуть это проверкой. Я говорю - не вариант. Это конечно
вариант но не вариант. Ибо осточертело.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499316
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

да оно внутри обернуто.

я и говорю - не веришь, так сам посмотри )
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499318
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как это влияет на сериализацию obj?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499324
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

20696357
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499325
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блн, след.сообщение
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499326
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно. Не хочешь - как хочешь.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499327
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Код: sql
1.
logger.trace( () -> "Dump of object : " + obj.toJsonString());


Спасибо Анатолий. Я это проверию на 2-3 ЯП. А потом попробую придумать найти более комплексный пример lazy-comp.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНет. Работа java gc базируется на предположении что 99% аллокаций в eden space не переживут первую эпоху.
Они будут удалены. Оставшийся процент выживших копируются в survival. Поскольку очистка eden это лёгкая
Операция. По сути это обрушение счётчика. То мы считаем что здесь мы выиграли и дефрагментация eden нам не нужна.

Сам себя откомментарю.

1) Я вспомнил где я это читал. Это гипотеза имеет вполне себе конкретное название. Я цитирую документацию
C4: The Continuously Concurrent Compacting CollectorGenerational collectors are basedon the Weak generational hypothesis [18] i.e. most objects die young.


2) Я написал "обрушение" счетчка. Ох уж этот Android с его авто-заменой. Разумеется я имел в виду "обнуление".
Я хотел-было внутренне возмутиться и пофиксить опечатку .. но пускай будет так. Термин обрушение мне
уже нравится и я оставлю его как метафору которая описывает процесс очистки Эдемского сада (Eden space).
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499368
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЯ могу представить себе пользу футурей в абстрактных примерах, но в реальных задачах....Асинхронный I/O. Task / JQueryPromise и т. п. часто использовать удобнее чем "голые" лямбды с замыканиями.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499371
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЯ могу представить себе пользу футурей в абстрактных примерах, но в реальных задачах...Симуляторы со взаимодействием, к примеру. Есть у вас большая сетка, бОльшая часть её узлов может считаться тупыми циклами, глядя только на ячейки с "соседними" номерами. Небольшая часть узлов зависит от ячеек, которые в пространстве являются "соседними", а вот в нумерации --- нет. К примеру, конец балки, описываемой ячейками с 0 по 100000 лежит на середине балки из ячеек 500000--600000, стык у нас "общего" вида. Это статически предопределённая неоднородность, её можно заранее учесть при построении плана вычислений. Но есть другая беда --- ваша четырёхугольная конструкция стоит на четырёх неидеальных опорах. Вернее, сначала её вес приходится на случайно оказавшуюся более высокой диагональ, плюс дисбаланс приходится на третью опору, а четвёртый угол висит в воздухе. Потом в зависимости от нагрузки и деформаций либо четвёртый угол просто ляжет на опору, либо "табуретка качнётся", либо всё останется, как было. Вкорячивать в каждый шаг вычислений "если табуретка качнётся, то", и все другие особые случаи --- убить производительность. Куда практичнее, скажем, попросить модель каждые десять тысяч шагов копировать себя в футурь-бэкап. Если задним числом ничего интересного не обнаружилось, то бэкап выбрасывается. Если обнаружилось, что среди этих 10000 шагов должен был произойти особый случай, то запускаем бэкап, попросив его делать свои бэкапы каждые 100 шагов, а потом медленно и печально прошагать нужный бэкап по отдельным шагам, вовремя отработать особый случай, и с этого момента вернуться к оптимистичному прогону по 10000 шагов от бэкапа до бэкапа.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499393
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAnatoly Moskovsky
Код: sql
1.
logger.trace( () -> "Dump of object : " + obj.toJsonString());


Спасибо Анатолий. Я это проверию на 2-3 ЯП. А потом попробую придумать найти более комплексный пример lazy-comp.Можно посмотреть на KnockoutJS: Computed Observables и How dependency tracking works .
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39499454
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglkealon(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-ки тыщ строк в кучах модификаций (копипаст и правка - они так привыкли)
...
Рейтинг: 0 / 0
25 сообщений из 474, страница 17 из 19
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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