|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Котаны-братаны! Здесь я буду ворчать и бухтеть про Rust. Впрочем иногда и буду хвалить. Даже больше буду хвалить. Возможно в части ООП и типобезопасности. Какие вопросы хотелост проговорить (Primary Goals). - Типы данных. Строгость. ООП. - Строки - Коллекции - Управление памятью (самая вкуснятина) - Мультипоточка Secondary Goals - Репликатор. Если дойдут руки. - Дрова к БД ORA/PG/Mysql/MSSQL/SQLite. - Cargo. Репозитарии. Сообщества. Инфо-каналы. Топики тематически связные (ИМХО). https://www.sql.ru/forum/1173809/tyapnichnyy-benchmark-cpu-part-1 (здесь впервые потрогали его руками в сравнении) https://www.sql.ru/forum/1303834/tyapnichnaya-budushhaya-multipotochnost Просто линки по теме. https://rust-lang.org https://github.com/rust-lang Что мы говорить не будем. Мы не будем обсуждать мою персону. Это понятно. Нарушение правил как-бе. Меня тут вообще нету. Я просто как говорящее радио. Мы не будем обсуждать причины возникновения этого топика. Он возник и возник. И хрен с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 19:01 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Ворчалка типо-данных. Примитивы. Целые i8, i16, i32, i64, i128 знаковые. Тоже самое с буквочкой u - знаковые. Строки - почему-то инициализируются через спец-метод. Самодостаточный код который собирается и работает. Такой себе сферический ордер на покупку 15 акций IBM. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Я завтыкал восклицательный знаке после format (!) и получил ошибку сборки. Что-то с макросами надо почитать про его роль. Интересно что туловище объекта существует отдельно от декларации его методов. В этом есть как-бы и ООП и одновременно не-ООП. Дуализм. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 23:30 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
После let - идут константы. Если нужна перменная - добавляют mut. Код: java 1. 2. 3.
Хм.. интересно как они поступают со ссылками на данные которые мутируют. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 23:35 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
А вот еще интереснее. Shadowing. Не могу перевести. Затенение что-ли. Код: sql 1. 2. 3.
Здесь получается декларируются 3 константы x каждая последующая из которых "затеняет" предыдущую. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 23:38 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
А вот интересная штучка. Tuples. Я всегда переводил как "кортежи". Не знаю правильно или нет. Rust различает скалярные и compound типы. Вот кортеж относится ко вторым. Инициализация кортежа. По нашему это анонимный класс из (int, double, byte) типов. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 23:42 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
С массивами вобщем ничего интересного. Код: sql 1.
Но контроль за вылет за границы - присутствует. Даже в режиме релиза. Я собрал cargo build --release и получил стандартную ошибку проверки диапазона массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 23:47 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
А вот штука похожая на тернарную операцию C++/Java Код: javascript 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 23:56 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
А вот еще интересная тема. Функция возвращает "пару" Код: sql 1. 2. 3.
Удобная штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 00:04 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Далее. Пойдет Borrowing and Ownership. Относится к контролю за памятью и ссылками. Наверное отложу на завтра. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 00:09 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
mayton, В Rust главное понять работу с памятью (владение, заимствование,...), остальное не существенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 00:11 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Надеюсь что это будет наиболее мясная часть меню. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 09:38 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
mayton, А там больше ничего и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 12:16 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
mayton , ты же знаешь C/C++, чем он тебя не устраивает? зачем плодить зоопарк языков в голове? mayton Но контроль за вылет за границы - присутствует. не бесплатно же. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 16:04 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Есть интерес посмотреть на модель памяти Rust. Принять к сведению best practices. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 16:37 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
полудух, по поводу выхода за границы массива. Да. Думаю есть такой пункт. Не бесплатно. Но высокий перформанс работы с массивами бывает редко. Я помню я разрабатывал в студенчестве алгортмы машинной графики. Например заштриховать полигон из пикселов в SVGA-режиме. Там я использовал прямой доступ к памяти. Это всё - достаточно low-level функций и таковые обычно в прикладном коде не используются. В прикладно (бизнес-коде) обычно мы не работаем с байтами или словами или двойными словами а с сущностями (Entity). Они - довольно крупные. И редко лежат в массивах. Чаще под покрытием итератора или стрима или еще бох знает каких абстракций. Вобщем .. индексый доступ - это достаточно low-level. А Rust насколько я понимаю создавался как язык безопасный - поэтому его поведение при выскакивании за границы array предсказуемо. В данном примере - у меня код не собрался. Компиллятор доказал что он - неработоспособен. Как глубоко (насколько ходов вперед) видит компиллятор - мы в топике проверим. Код: sql 1. 2. 3. 4.
Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 16:53 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
кому нужны эти массивы, когда есть <vector> и <array> (модуль, где всё учтено) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 18:05 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
mayton Но высокий перформанс работы с массивами бывает редко. по-моему ты неправильно относишься к массивам. это же map-to-hardware массив = ячейки памяти, 1 в 1 в C/C++, а вот в остальных языках - нет в ПХП там вообще дикие абстракции, такие, что массив занимает в X раз больше размер там и int = 40 байт а вот в C/C++ это именно память и есть, и какой такой "высокий перформанс" может быть выше этого - загадка. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 18:10 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
полудух кому нужны эти массивы, когда есть <vector> и <array> (модуль, где всё учтено) Ценное замечание. До классов коллекций я еще не дошел. Дойдем здесь https://doc.rust-lang.org/book/ch08-01-vectors.html Но я хочу закрыть тему работы с массивами тем что UB не удалось получить. Либо не будет компилляции. Либо будет зафиксирована ошибка. Об ошибках - тоже чуть позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 18:34 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
На сегодня - тема Ownership, Borrowing. Я попробую перевести как Владение и Одалживание в рамках данной технической доки Но ради чистоты терминологии я их оставлю as is. https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html Насколько я понял. Владение (Ownership) - это наиболее уникальная фича Rust, которая позволяет создавать гарантии безопасности памяти без необходимости Garbage Collector. Поэтому очень важно понять как ownership работает в Rust. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 18:48 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Далее по тексту. Я двигаюсь длинными прыжками и буду постить только наиболе значимые фрагменты КМК. Правила Ownership .
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 18:57 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Работа со scope знакома всем по C++. Я не буду пересказывать. Просто фрагмент кода с каментами. Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 19:00 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Хм.. забавно crate - переводится как клетка или деревянный ящик. Смысловой паревод я пока не улавливаю. Есть варианты. Модуль. Пакет. Зависимость. Единица публикации. Пока не определился. Впервые вроде как здесь упоминается https://doc.rust-lang.org/cargo/reference/publishing.html ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 20:25 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Щас на пару часиков вернёмся в родительскую задачу. https://www.sql.ru/forum/1173809/tyapnichnyy-benchmark-cpu-part-1 Там как раз сборщик упал по причине каких-то эволюций пакетов. Код: javascript 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. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Хм... тут надо понять что это за пакет. И зачем он нужен. Предположительно - это генератор случайных чисел. Попробую пофиксить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 20:48 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
Просто позакоментарил и компиляция прошла. Код: sql 1. 2. 3. 4. 5. 6. 7.
15 секунд на рендеринг картинки на стареньком Intel Core i3. Это в 1 поток. Шикарно. Щас переползу на рабочую станцию посмотрю как сработает в AMD/Ryzen-5. Заодно обновим статистику по бенчмаркам. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 21:15 |
|
Тяпничная ворчалка и бухтелка по поводу Rust и ООП и типобезопасности
|
|||
---|---|---|---|
#18+
8 секунд на AMD. Я ничего не понимаю. Мы перегнали "C" в 2 раза. Я щас просто сиду перепроверяю цифры. Конфигурация не менялась с год. Патчился Линукс и патчился сам Rust c зависимостями. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 22:09 |
|
|
start [/forum/topic.php?fid=16&msg=39926942&tid=1339580]: |
0ms |
get settings: |
21ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
504ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 944ms |
0 / 0 |