|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Привет друзья. Илья. Дима. Сова. Зимаргл. И все остальные кодеры и сочуствующие. Чтоб не флудить спецификой. В продолжение топика 21703023 . А также в продолжение пятничной IP-географии 17380387 Есть графическая кривая заполняющая пространство. Называется кривая Гильберта. Она - рекурсивна. Ну... по крайней мере известные мне реализации. Выглядит так. Необходимо реализовать генератор координат этой кривой в виде Iterator<Point> в различных языках программирования - C++, - C# - Python - Go - D - Kotlin - Rust - и другие...яп в различных библиотеках и посмотреть на фактическую эффективность. Бенчмарки. Пример Код: plaintext 1. 2. 3. 4.
Разваливание рекурсии в автомат со стеком нас не будет интересовать в данном топике. Мы ищем "коробочное" решение в виде co-routine. Забегая вперед я скажу что в некоторых языках coroutine не реализована как элемент языка. А существует в виде библиотек. Пост-процессинга кода или различных особенностей рантаймов. Оригинальный (не итеративный) алгоритм на сях опубликован мной здесь 17384728 . Его можно взять за основу. Спасибо всем за участие. P.S. Сишное решение на сях реализовано в традициях unit-утилит и вобщем-то исполняет свои функции. Я перехитрил сам себя ограничившись выводом результата в stdout и ответная утилита должна была читать соотв. stdin. Это не корутин а просто взаимодействие двух unix-процессов. Тоже рабочее решение. Но сегодня я побуду перфекционистом и поищу решение в виде одного процесса. На разных ЯП. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 22:00 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
mayton, А как рекурсия соотносится с распараллеливанием ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 22:20 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Это не про параллелизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 22:39 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
python будете сравнивать с C++ ? смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 05:28 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
полудух, для большинства четверговых и тяпничных топиков (которые являются по большей части потоком сознания) не ставится вопрос "зачем". Я просто предлагаю тему. Сообщество реагирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 08:26 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
maytonОригинальный (не итеративный) алгоритм на сях опубликован мной здесь 17384728 . Его можно взять за основу. Портировал в лоб на C#Выглядит не очень, но работает Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 09:49 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Немного отрефакторил С вариант от mayton 17384728 так проще выворачивать в итератор Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 12:58 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Dima T, круть Thnx. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 14:20 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Вот, откопал давнишнее на скалевских ленивых коллекциях, даже с отрисовкой. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 21:46 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
fixxer, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 21:49 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Dima Tтак проще выворачивать в итератор Так суть корутин как раз в том что не надо ничего выворачивать, код берется как есть :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 00:31 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Друзья. Я поднял песочницу здесь . Так что если у вас есть мысли прошу делать пул-реквесты. Я каюсь. Не успеваю пока даже просмотреть и осмыслить видео-материалы которые приаттачены в родительском топике. Там аж на 3 часа видео. И кроме того я смотрю такие материалы с бумажкой и карандашом. Спасибо полудуху конечно но это осилить непросто. Но могу отвечать быстро в рамках этого топика. Здесь-же надо придумать как оценить стоимость реализации разных корутин в разных ЯП. Грубо говоря ответить на вопрос как дорого стоит корутина. По Java к примеру коробочной реализации я не видел. И хотя в потоке есть метод yield() - его назначение немного другое. Саму реализацию Гильбертова итератора я уже делал на Java. На BlockingQueue. И она скорее годится в качестве контр-примера. Или примера того как не надо делать. Надеюсь чуть позже я ее улучшу с более быстрой очередью. И это не корутин а просто двух-потоковый итератор. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 16:29 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
maytonТам аж на 3 часа видео. И кроме того я смотрю такие материалы с бумажкой и карандашом. Спасибо полудуху конечно но это осилить непросто. я в файлы скидываю все заметки, так гораздо удобнее уже 500mb текстов + книжки + картинки = 1.5гб что касается корутин, то они есть не везде, а кое-где они даже и не нужны (Haskell) надо сравнивать саму асинхронную многопоточность ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 18:19 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Данный топик - про co-routines. Но если вы сможете поставить вопрос в теме "самой асинхронной многопоточности" - welcome! Попробуйте с нового топика. Это не так просто на самом деле. Найти тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 18:29 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Scala вариант зарефакторил в sbt сборщик. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 19:01 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyDima Tтак проще выворачивать в итератор Так суть корутин как раз в том что не надо ничего выворачивать, код берется как есть :) Да, тема для меня новая, может я отстал и недопонимаю, но интересно как тут 17384728 printf() в самой глубине превратится в итератор без переписывания кода. Ответ желательно кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 19:05 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Dima TAnatoly Moskovskyпропущено... Так суть корутин как раз в том что не надо ничего выворачивать, код берется как есть :) Да, тема для меня новая, может я отстал и недопонимаю, но интересно как тут 17384728 printf() в самой глубине превратится в итератор без переписывания кода. Ответ желательно кодом. 4 функции были заменены функцией с таблицей. Вроде нормально. Не было попытки иммитации рекурсии. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 19:22 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Почитал про Go-Lang. Забавно. У него вообще нет уступчивого return среди ключевых слов языка. Но есть концепция канала channel который связывает го-рутины. https://golang.org/ref/spec#Keywords https://gobyexample.com/channels Channels are the pipes that connect concurrent goroutines. You can send values into channels from one goroutine and receive those values into another goroutine. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2018, 22:24 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Dima TДа, тема для меня новая, может я отстал и недопонимаю, но интересно как тут 17384728 printf() в самой глубине превратится в итератор без переписывания кода. Ответ желательно кодом. См. начиная с private тот самый код один в один. Только в каждую функцию добавлен параметр push_type& result, через который в глубине вызовов и передаются значения в вызывающую корутину. В принципе т.к. это класс, то можно было не добавлять параметр, а хранить его в классе, но я привел код для общего случая который годится и для свободных функций. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2018, 00:11 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Хм... непонятно в го-шке есть 2 формы объявления каналов. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2018, 01:42 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
maytonХм... непонятно в го-шке есть 2 формы объявления каналов. out - это не ключевое слово, это название переменной. В первом случае у тебя переменная - это аргумент функции типа chan Pos, а во втором функция возвращает chan Pos, а стрелка означает только для чтения. Никакие это не две формы, это вообще о разном ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2018, 11:47 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Go он такой... в стиле Microsoft... "а давайте мы вот тут ВСЕ стандарты поменяем!" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2018, 12:07 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Лысый дядькаmaytonХм... непонятно в го-шке есть 2 формы объявления каналов. out - это не ключевое слово, это название переменной. В первом случае у тебя переменная - это аргумент функции типа chan Pos, а во втором функция возвращает chan Pos, а стрелка означает только для чтения. Никакие это не две формы, это вообще о разном Ок. Thnx. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2018, 12:44 |
|
Четверговый корутин с Гилбертом
|
|||
---|---|---|---|
#18+
Название темы показалось мне неприличным и я заглянул в неё, чтобы узнать, не делается ли в ней какое-нибудь непристрйное предложение . Но оказалось, что "корутин" это всего лишь сопрограмма. Всё равно в корутине участвовать не буду: он если и не непристойный, то бессмысленный. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2018, 09:38 |
|
|
start [/forum/topic.php?fid=16&fpage=12&tid=1340040]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 187ms |
0 / 0 |