М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 7 сентября 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

23 Кб, 209x208

Rust 19 мар, 14:48 #956909 В конец треда | Веб

Язык, который существует уже не один год. Язык, который заинтересовал меня из-за скорости выполнения, кроссплатформа, безопасности и возможности делать вещи как в высокоуровневых языках (ООП, мощные макросы, даже не знаю, как сказать). И вот у меня к вам вопрос: как думаете, он сможет вытеснить жаву? Почему?
Также открываем здесь его обсуждение, с возможностью отвечать на ответы.

Ответы9569129569319569419572579576099640289721999934541041669

Dmitry 19 мар, 14:54 #2 #956912

>>956909 (OP)
Что можно сделать на расте чего нельзя на С?

Ответы956932957308

19 мар, 15:05 #3 #956915

Эмм, а с какого-такого он должен вытеснить Яву ?

Ответы956916956937961111

Dmitry 19 мар, 15:06 #4 #956916

>>956915
А нахуй она нужна? Создавать яву было плохой идеейю

Ответы956921956922956967

270 Кб, 1024x768

19 мар, 15:13 #5 #956921

>>956916
Два чаю, надо было продвигать Smalltalk.

Ответы958607

19 мар, 15:22 #6 #956922

>>956916
Слишком толсто

19 мар, 15:40 #7 #956931

>>956909 (OP)
D - пизже.

Ответы1020838

4 Кб, 361x193

19 мар, 15:40 #8 #956932

>>956912
Писать без сегфолтов например

Ответы956969957444

19 мар, 15:43 #9 #956937

>>956915
Наверное, только потому, что мне идеология компиляции нравится больше, чем какая-то виртуальная машина, хоть она в конечном счете имеет нехилую оптимизацию. LLVM уже не мало так платформ покрыл. Еще, жава много памяти ест, если сравнить с аналогичной программой на C/C++/Rust/томуподобное

513 Кб, 657x516

19 мар, 15:51 #10 #956941

>>956909 (OP)
>язык без наследования
>сможет ли вытеснить жаву

Ответы956946957357

19 мар, 15:57 #11 #956946

>>956941
А чем наследование на столько важно? Где например оно очень нужно?

Ответы956954957078

19 мар, 16:13 #12 #956954

>>956946
Везде кроме laba1.exe

Ответы956962

19 мар, 16:40 #13 #956962

>>956954
Посмотрите на этого эксперта сделавшего laba10.exe
В реальности от наследования больше проблем чем пользы.

Ответы956977

19 мар, 16:49 #14 #956967

>>956916
Слишком много заебств в расте с видами указателей и механизмом владения. На джаве писать намного проще и как следствие намного легче найти людей, которые её знают. Там где используется джава производительность всех устраивает и получаем, что раст нахуй там не нужен. Проблемы создает, а бонусы преподносит слишком маленькие. Нет, я очень рад этому языку. Наконец-то появилась альтернатива мерзким плюсам, но вот только с ними он и может конкурировать. Более высокоуровневые языки он не потеснит никогда.

Ответы956978957260

19 мар, 16:50 #15 #956969

>>956932
На Сишечке тоже можно писать без них

Ответы956976957064

19 мар, 17:09 #16 #956976

>>956969
В Си надо быть крайне внимательным, работая с памятью, указателями и т.п. Так и стараются. Тем не менее, человеческий фактор всегда допускал там ошибки. Здесь (в расте) ты либо будешь послан нахуй компилятором, либо при работе программы будет так называемая паника, которая убивает работающую программу или просто один из ее потоков

Ответы957112

19 мар, 17:13 #17 #956977

>>956962
В реальности люди комбинируют несколько подходов исходя из задачи.

19 мар, 17:13 #18 #956978

>>956967
А если через пару годиков под раст будет множество либ под любые нужды? Примерно как сейчас в жаве... В конце концов, там свои фичи, тут свои и время изучения не сильно разное

Ответы956982

28 Кб, 500x369

19 мар, 17:17 #19 #956982

>>956978
>А если через пару годиков под раст будет множество либ под любые нужды?

19 мар, 18:57 #20 #957014

bamp

19 мар, 20:53 #21 #957064

>>956969
Многа букаф получится.

Ответы957076

19 мар, 21:08 #22 #957076

>>957064
Как будто в пидарасте от кривого кода программа нормально работать будет.

Ответы957093

19 мар, 21:10 #23 #957078

>>956946
ООП местячковый мем в снг.

19 мар, 21:14 #24 #957085

Наследование - ничто, миксины - всё.

19 мар, 21:19 #25 #957093

>>957076
Меньше кода - легче рефакторить.

Ответы976842

19 мар, 21:55 #26 #957112

>>956976
> либо при работе программы будет так называемая паника, которая убивает работающую программу или просто один из ее потоков
И чем это лучше сегфолта? Исключения хоть можно обрабатывать?

Ответы958165

533 Кб, 1600x1200

19 мар, 22:45 #27 #957136

На самом деле рыночку действительно нужен инструмент который позволит создавать кросплатформенные решения с низким оверхедом по производительности/памяти и без сборщика мусора, но на котором смогут писать миллионы лемингов за дёшево.

Что нового предлагает Rust, для решения этих проблем?
Сущесвтуют ли реальные тесты производительности, сравнения сложности разработки, etc?
Без этих метрик нет смысла что-то обсуждать?

Я уверен, что раст тоже найдёт свою нишу, но однозначно это будет на Ынтерпрайз или web бэкэнд. Возмно, системщина и узкопрофильная прикладуха,возможно ембед, но не ололо контроллеры, а линукс борды. Но для эмбеда нужна спрос и поддержка корпораций, что врядли

Ответы957139957174957363957944965801972199

19 мар, 22:47 #28 #957139

>>957136
>fix
>не ентерпрайз и не web back-end

19 мар, 23:44 #29 #957174

>>957136
>Сущесвтуют ли реальные тесты производительности, сравнения сложности разработки, etc?
Реальные тесты производительности? Ну это уже по каждой конкретной задаче. Вот тут видим, что на бенчмарках( не отображают реальный мир), раст выигрывает c++ в 6/9 тестов
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=rust&lang2=gpp. Не забывай, что для раста не написано много ключевых оптимизаций, что есть у крестов, но вот растовская система типов позволит в будущем реализовать более агрессивные оптимизации, которые не возможны на c/c++, да и с каждым обновлением LLVM раст становится всё лучше.
>сравнения сложности разработки,
Таких точно нет, всё же на расте никто не пишет, лол. Позволю себе с дивана предположить, что раст в этом лучше т.к. большинство ошибок с++, которые приходится постоянно дебажить, находятся в расте на этапе компиляции. Возможно, если ты йоба-сеньйор с 20+ годами опыта плюсов, то ты не заметишь разницы в скорости разработки, но вот во всех остальных случаях, полагаю, раст сделает c/c++

Ответы957194976849

Dmitry 20 мар, 00:07 #30 #957194

>>957174
На расте операционную систему написали.

Ответы957548

20 мар, 02:06 #31 #957257

>>956909 (OP)
>кроссплатформа
Компилятор не поддерживает Windows XP (хотя вроде может исполняться, но с какими-то ключами), хотя поддержка "Embedded Industry" (в ваших банкоматах и прочих) есть до 2019 года.

>скорости выполнения
Анон кидал ссылки на веб-серверы, крайне там что-то все уныло.
Мне интересно, в такой модели памяти - память в долгоживущем приложение не будет фрагментироваться?

>вытеснить жаву? Почему?
Нет. Тут даже Го не смог. Джава это сформировавшиеся индустрия, ее даже засахаренные скала и котлины потеснить не могут, хотя те на jvm.

20 мар, 02:10 #32 #957260

>>956967
Помоему, они сделали язык сложнее чем С++

Ответы957310

20 мар, 08:02 #33 #957308

>>956912
На С в теории можно все, не зря же в нее компилятся большинство скриптовых языков. Другое дело что создать что-то большее чем драйвер на одном только С врятли получится, а даже если и получится то поддерживать это будет пиздецово. А в расте главная фишка что он безопасен и он строг к синтаксису - т.е. у всех будет более менее одинаковый код и при том гарантированно безопасный, что поможет избежать обсеров как с OpenSSL, когда выяснилось что весь мир годами пользовался дырявым софтом.

Ответы957944976852

20 мар, 08:14 #34 #957310

>>957260
Сложнее C++ в принципе сложно сделать. В язык накидали фич не для решения конкретных проблем, а выбрали их рандомно, что вылилось в плохой дизайн языка.

Ответы957501957510

20 мар, 11:15 #35 #957357

>>956941
Там есть множественное наследование поведения — не реализации. То есть интерфейсов — не классов.

20 мар, 11:25 #36 #957363

>>957136
>Что нового предлагает Rust, для решения этих проблем?
Ну уж точно не "миллионы леммингов и дешево". Rust сложнее С++, там как раз фишка в том, что сложность разменивается на стабильность.

sage 20 мар, 12:47 #37 #957444

>>956932
пример притянут за яйца. любой школьник знает, что эта строка лежит в read-only секции. да и компилятор будет ругаться на каст сonst char к char
короче иди нахуй. сажи треду

Ответы976399

20 мар, 14:33 #38 #957501

>>957310
два чая

20 мар, 14:47 #39 #957510

>>957310
>а выбрали их рандомно
Не рандомно. Каждое решение там вполне осознанное и обдуманное. Другое дело, что их вообще не надо было принимать. Или делать минималистичную сишку с классами или пилить новый язык.

Ответы957522

20 мар, 15:01 #40 #957522

>>957510
Так сделали десятки ебанатов, но взлетел почему-то С++. А теперь поучи датчанина делать языки.

Ответы957544957602

17 Кб, 300x257

20 мар, 15:34 #41 #957544

>>957522
>взлетел
>почему-то

Ответы957578

20 мар, 15:43 #42 #957548

>>957194
Proof?

Ответы957551

20 мар, 15:46 #43 #957551

>>957548
http://redox-os.org

Ответы957553

20 мар, 15:49 #44 #957553

>>957551
Мда очередная UNIX-like говнина, сколько их можно пилить...

Ответы957585957587992990

20 мар, 16:33 #45 #957578

>>957544
Винда написана на си, ебанутый.

Ответы957585

20 мар, 16:35 #46 #957585

>>957553
А какие ещё есть варианты? Либо юникс-говнина, либо NT-сперма.
>>957578
Это к тому было, что и палка раз в год стреляет.

Ответы957610

20 мар, 16:41 #47 #957587

>>957553
Да блять просто очередная перделка на гихабе, как laba.exe студентов.
А преподносят как готовый продукт.
Насколько я знаю, они его переписывают потому, что архитектура стала не поддерживаемая (казалось бы причем тут гибкость раст).

Ответы976861

20 мар, 17:18 #48 #957602

>>957522
>но взлетел почему-то С++
Популярность продукта ни разу не гарантирует его высокое качество.

Ответы957631

20 мар, 17:34 #49 #957609

>>956909 (OP)
Дрявая хуета с утечками как и С++
https://github.com/redox-os/redox/issues/855

Ответы957819

20 мар, 17:34 #50 #957610

>>957585
>А какие ещё есть варианты? Либо юникс-говнина, либо NT-сперма.
Да дохуя на самом деле, но к сегодняшнему дню это всё либо осталось в музеях, либо пилится на коленке каким-нибудь Куртисом Ярвином или Терри Дэвисом. Хотя впрочем IBM всё ещё поддерживает z/OS.

Ответы957611957621

20 мар, 17:38 #51 #957611

>>957610
GNU/Linux идеальная ОСь, BSD годная альтернатива. Остальное просто ненужно.

Ответы957616957623

20 мар, 17:43 #52 #957616

>>957611
>Остальное просто ненужно.
Нужно, просто ты об этом не знаешь: http://www.loper-os.org/?p=284

Ответы957628

20 мар, 17:52 #53 #957621

>>957610
>но к сегодняшнему дню это всё либо осталось в музеях
Потому что надо дрова из ОС выкинуть нахуй. Пусть железячники все хардварно реализуют с простым интерфейсом. Все равно и так блобы везде. Так пусть тот блоб на железе крутиться с простым стандартным интерфейсом наружу. Тогда можно будет для кучи устройств использовать один драйвер по спецификации.

Ответы957627957632

20 мар, 17:53 #54 #957623

>>957611
>Windows идеальная ОСь, macOS годная альтернатива. Остальное просто ненужно.

20 мар, 17:57 #55 #957627

>>957621
Годная идея. PostScript в принтерах был шагом в правильном направлении.

Dmitry 20 мар, 17:58 #56 #957628

>>957616
зачем нужен виндоус у которого нет экосистемы? На котором до сих пор мертвым грузом лежит дохуя (50%) легаси? Единственное за что их можно уважать за то что форсят переход на новые железки.
Видео драйвер интела из-за легаси пидарастии раздут с 1 мб до 200, в 200 раз больше необходимого, пиздец.
МакОСь хоть и для пидарасов, но сбалансирована, имеет нормальную щель, работает без бсодов.

Ответы957647

20 мар, 18:01 #57 #957631

>>957602
Популярность С++ гарантирует, что с твоим подходом что-то не то. И довольно банальное - обратно-совместимое решение победило. Из тех времен живо 3 языка, это С, С++ и Objective C. Угадай, почему.

Ответы957684

Dmitry 20 мар, 18:01 #58 #957632

>>957621
>блобы везде
Не везде
>простой интерфейс
Они его и сделали, можешь в обход всех либ юзать.

20 мар, 18:16 #59 #957647

>>957628
легаси и есть экосистема, тупой ты уебок
и да, это оскорбление
иди нахуй заодно

Ответы957657

Dmitry 20 мар, 18:27 #60 #957657

>>957647
>легаси и есть экосистема, тупой ты уебок
>и да, это оскорбление
В голос с дауна.
Экосистема это когда в системе не дублируется одно и то-же и четко разделено что за что отвечает.
Виндовс 20 лет не чистилось от говна, вместо того чтобы это сделать добавляют %фичи% и велосипеды чтобы они работали.
Одинаковые названия программ, драйвера по 300 метров для звуковух и видео, три встроеных браузера и двое меню настроек на покушать.

Ответы957660

20 мар, 18:31 #61 #957660

>>957657
Ты бредишь, Митя. Экосистема - это экологическая система, почитай, что такое экология. Это когда куча животных, едят друг друга и срут, но система при этом стабильна, потому что все в балансе.

Ответы957663

20 мар, 18:37 #62 #957663

>>957660
> друга и срут, но система при этом стабильна, потому что все в балансе.
А шиндовс не стабильна и не нужна согласно http://www.loper-os.org/?p=284
шиндовс обсирается на первом же правиле, так что хватит за них топить Пыня.

20 мар, 19:14 #63 #957684

>>957631
Популярность продукта в массах — это показатель только его доступности для широкой аудитории.

Это как сравнить айфоны с кучей говна на андроиде — первые по статистике занимают всего-то 10-15% рынка. Только вот незадача, из этих 85-90% только треть превышают отметку в 200$, а отметку в 500$ ещё треть от этой трети.

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

Ответы957770

20 мар, 20:23 #64 #957770

>>957684
Ты сам довольно тупорылый, если мобильные ос в принципе занимают какое-то место в твоей голове. А языка лучше С++ в своей нише объективно нет. Вообще. Никак. Ни разу. Поэтому умнейшие люди планеты пишут свои продукты на нем, с нуля и до сих пор.

Ответы957792

20 мар, 20:34 #65 #957792

>>957770
Ты домен какаой-та толе на плюсах писали раньше потому что небыли альтернативы. От слова совсем. Либо Ява, либо говно вроде D со сборщиком.

Ответы957813

93 Кб, 1111x597

20 мар, 21:09 #66 #957813

>>957792
ДЦП

20 мар, 21:30 #67 #957819

>>957609
Они получается unsafe юзали?

Ответы9578399586021018493

20 мар, 22:02 #68 #957839

>>957819
>unsafe юзали
Пиздец.

Ответы958050

20 мар, 22:37 #69 #957873

Есть у кого-нибудь опыт использования Rust в production? Часто занимаюсь "узкими" местами в веб приложениях, сейчас все на плюсах, но давно посматриваю в сторону Rust, хотелось бы узнать о опыте использования в реальных проектах?

Ответы957883957886

20 мар, 22:48 #70 #957883

>>957873
Что ты там увидеть ожидаешь-то? Плюсовикам (как и вообще всем, кто не занимался каким нибудь хачкеллем, в котором компилятор так же ебет за попытки сделать хуйню) переучиваться очень больно. Иде уровня студии нет, но хуитка для редакторов с нормальным (не уровня тегов из вима и прочей еле работающей хуйни) автокомплитом и подсветкой ошибок из компилятора есть, хотя и альфа, которая собирается только через три анальных кольца. Можешь почитать истории от челиков из дропбокса - https://www.reddit.com/r/rust/comments/4adabk/the_epic_story_of_dropboxs_exodus_from_the_amazon/

20 мар, 22:51 #71 #957886

>>957873
>production
То есть все остальное ты написал по-русски, а это слово перевести не смог?

Ответы957892

20 мар, 22:57 #72 #957892

>>957886
продакшен.

21 мар, 00:13 #73 #957944

>>957136
>оверхедом по производительности/памяти и без сборщика мусора, но на котором смогут писать миллионы лемингов за дёшево
Go, у них даже символ языка похож на лемминга.
>>957308
Как же тогда оставлять закладки для спец служб?

21 мар, 08:34 #74 #958050

>>957839
Я к тому откуда могут быть утечки, если это раст. Значит unsafe. Хотя я помню что в каких то версиях раста все таки могли происходить утечки даже без ансейфа, когда паника запускалась другой в панике, но я посчитал что это прям обосраться какое исключение.

Ответы958149

21 мар, 10:15 #75 #958080

В расте же даже не зависимые типы. Как им пользоваться?

Ответы958129958132

21 мар, 12:02 #76 #958129

>>958080
>даже не зависимые типы
А что нужно, чтобы запилить в расте зависимые типы?

21 мар, 12:06 #77 #958132

>>958080
Хотя подожди. Проверка типов в языке с зависимыми типами может быть неразрешимой. Тогда нахуя оно надо?
А вот типы высшего порядка (да-да, те самые родненькие аппликативные функторы, стрелки и монады) были бы полезнее. Я правильно понимаю, что их можно эмулировать трейтами с ассоциированными типами?

21 мар, 12:30 #78 #958149

>>958050
Да, утечки есть, но я про то что ты как дауненок написал.
>unsafe юзали
Кто так пишет? Это пиздец просто.

Ответы958210

21 мар, 13:08 #79 #958165

>>957112
Там нет исключений, но есть особая система типов. Т.е. функция всегда что-то возвращает. Но это может быть что-то (Some), а может быть ничто (None). Или например может быть некий результат или некая ошибка, что уже как бы является аналогом исключения

21 мар, 14:58 #80 #958210

>>958149
А как надо было?

Ответы958273

Dmitry 21 мар, 16:38 #81 #958273

>>958210
На С надо писать а не выебыватся.

Ответы958329

21 мар, 17:50 #82 #958329

>>958273
У АНБ и без твоего корявого сишного говна забитого 0-day cve хватает.

Ответы958335

Dmitry 21 мар, 17:56 #83 #958335

>>958329
Правильно писать NSA.
Ты еще скажи что у раста уязвимостей нет, только что говорили что нет утечек, теперь это.

Ответы958337958359

21 мар, 17:59 #84 #958337

>>958335
Если код пишет не си-обезьяна на ансейфах — то ни одной сишной точно не будет. Ты кстати забыл главный опус растотредов — memory leaks is memory safe, пидар.

21 мар, 18:32 #85 #958359

>>958335
Если руки кривые то ты утечку и в языке с GC сможешь сделать. От утечек тебя ни один язык полностью не убережет, так что думать головой все равно придется. Зато память в расте безопасная, без уязвимостей.

21 мар, 23:32 #86 #958602

>>957819
А как по-твоему писать ОСь, которая должна взаимодействовать с железом без unsafe'ов?

Ответы9586831019290

21 мар, 23:38 #87 #958607

>>956921
Smalltalk тоже использует виртуальную машину, школота.

Ответы958680

22 мар, 01:08 #88 #958680

>>958607
Я знаю, первокурсник. Это не меняет того, что я написал.

Ответы958756964001

22 мар, 01:11 #89 #958683

>>958602
Например, так же, как в некоторых ОС давно зделоли.
А именно, написан препроцессор для Сишки, который на каждом шаге проверяет, не собрался ли драйвер поделить, скажем, на ноль.
У драйвера своя область стека, все данные он видит только на чтение.
Собрался поделить на ноль - ну тогда значит KernExitThread(-1) и едем дальше.

Ответы958694

22 мар, 01:24 #90 #958694

>>958683
Я в работе современных (да и старых) ОСей не шарю, но на днях читал про прерывания. Что например если была попытка поделить на ноль, что будет вызвано такое-то прерывание. Где-то в памяти есть таблица (с адресами функций?), которые должны обрабатывать подобные случаи. И не всегда же надо тупо выходить. По крайней мере, родительский процесс должен знать, за что убили ребенка

Ответы958815

22 мар, 03:47 #91 #958756

>>958680
Второкурсник ворвался в тред.

22 мар, 09:33 #92 #958815

>>958694
Да, это для обыкновенных процессов.
А в ядре ОС возникнет неисправимая ошибка во время выполнения, синий экранчик, у продвинутых чёрный.
Но в общем, не забивай себе этим голову, в роиссе на эти знания (очень ценные, ахаха) спроса всё равно нет.

25 мар, 13:10 #93 #960575

Будущее за языками с HoTT.

Ответы960918961320961504

25 мар, 20:04 #94 #960918

>>960575
С чем?

Ответы960919

25 мар, 20:11 #95 #960919

>>960918
С гомотопиями.

Ответы960926

25 мар, 20:25 #96 #960926

>>960919
Звучит неприлично.

26 мар, 08:09 #97 #961111

>>956915
он и не должен вытеснить джаву. это конкурент плюсам, алё

Ответы9611421020983

26 мар, 10:46 #98 #961142

>>961111
> это конкурент плюсам
Жава с плюсами местами конкуренты.

26 мар, 10:58 #99 #961147

Очередной долбоёбский тред где эксперты уровня laba2 спорят обо всём, до чего дотянутся.

26 мар, 15:47 #100 #961320

>>960575
Ты таких много знаешь?

Ответы961476

26 мар, 21:17 #101 #961476

>>961320
Есть в виде модулей к не очень популярным языкам. Я же говорю будущее, а не настоящее.

26 мар, 21:59 #102 #961504

>>960575
Лет через 10 так, причём в совсем другом виде, а не то говно сейчас. Посмотри на циклон и раст - такая же разница.

31 мар, 01:45 #103 #963997

Посоны, а где писать программы на русте?
Там IDe кокая? Есть?

Ответы964000964005986603

31 мар, 01:53 #104 #964000

>>963997
Emacs самая лучшая IDE для любого языка.

31 мар, 01:55 #105 #964001

>>958680
Ну и к чему тогда твой вскукарек, различия жабы и смоллтока незначительны. Во втором только рефлексия продвинутей.

31 мар, 02:10 #106 #964005

>>963997
JetBrains + Rust plugin
Visual Studio Code + Rust plugin

Ответы986603

31 мар, 07:08 #107 #964028

>>956909 (OP)
Друзья, я пытаюсь разобраться в возможностях языка.

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

Ответы964118964219

31 мар, 12:12 #108 #964118

>>964028
> она же ничего про либу с фьючерами не знает
Знает.

31 мар, 14:35 #109 #964219

>>964028
>и как тогда это общение в код с фьючерами инкорпорировать?
Пишешь обычный код, только с типажами из futures на выходе @ спавнишь свою хуйню в готовом ивентлупе из tokio или своём самописном @ утилизируешь все ядра, пьёшь смуззи в старбаксе и ссышь на гоферов.

Ответы964409

31 мар, 18:50 #110 #964409

>>964219
>Пишешь обычный код, только с типажами из futures на выходе @ спавнишь свою хуйню в готовом ивентлупе из tokio или своём самописном @ утилизируешь все ядра, пьёшь смуззи в старбаксе и ссышь на гоферов.

А это законно вообще?

Ответы964464

31 мар, 20:13 #111 #964464

>>964409
В манямирке

Ответы964586

31 мар, 20:40 #112 #964473

Если раст пилят как более безопасную замену C++, значит в нем не должно быть проблем при написании гуишного софта?

Ответы964520964536964541

31 мар, 22:09 #113 #964520

>>964473
На расте нет никаких проблем с гуи, т.к. нет гуи

31 мар, 22:27 #114 #964536

>>964473
>2к17
>геи
Новые гуевины шлепают только на мобилках со своими хост-языками, а десктопное легаси и без того вроде работает (хотя тот же гном вроде как по кусочкам, как и новый движок лисы переписывают на растяпу? но это неточно).

Ответы964537964539

31 мар, 22:27 #115 #964537

>>964536
>геи
Ммм, а мой автокомплит в курсе трендов этого года.
Гуи, конечно жи.

31 мар, 22:28 #116 #964539

>>964536
>растяпу?
Это тоже интересный автокомплит, лол.

31 мар, 22:29 #117 #964541

>>964473
Есть разные биндинги под существующие либы
Например, https://www.youtube.com/watch?v=hLR8R0Zl0yY

1 апр, 00:29 #118 #964586

>>964464
>В манямирке
Значит на попытке написать scgi приложение я сосну?
Вроде tokio позволяет оче просто писать асинхронный сервер.

Ответы964587

1 апр, 00:37 #119 #964587

>>964586
Я вообще мимо проходил(из го треда), сорян, помочь не могу.

3 апр, 00:55 #120 #965801

>>957136
Существуют
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext&l=3vu6m7

Ответы965804965807

3 апр, 00:56 #121 #965804

>>965801
Раст чуть быстрее джанги на питоне

Ответы965824

3 апр, 00:57 #122 #965807

>>965801
И обрати внимание что многие с ошибками сыпяться (очень стабильный язык)

Ответы965824

1,3 Мб, 1920x1080

3 апр, 01:36 #123 #965824

>>965804
>>965807
Полгода для раста это много. Сейчас как-то так.
https://www.techempower.com/benchmarks/previews/round14/#section=data-r14&hw=ph&test=plaintext

Ответы965838

3 апр, 04:04 #124 #965838

>>965824
Они допилили асинхронный сервер (он полноценный или какая-то заглушка еще)?

7 апр, 09:29 #125 #968631

https://twitter.com/chasinglogic/status/850115493923086336

7 апр, 16:18 #126 #968788

bump

112 Кб, 800x755

11 апр, 16:58 #127 #971901

Поясните за racer. Хуй с ним он не может в макросы. Но какого хуя он даже обычные крейты не может нормально обработать?
Взял kiss3d и рейсеру вообще похуй. Он ничего не дополняет.

Ответы971905

11 апр, 17:15 #128 #971905

>>971901
RLS натяни, работает через тот же рейсер, только с ошибками из компилятора на лету и анализирует крейты.

Плагин для intellij кстати, уже даже с макросами работает — криво и косо, но навигирует уже около них (в дислокации +- 10-20 строк, лул).

568 Кб, 2880x1800

11 апр, 17:26 #129 #971909

Апну скрином с пруфцом работы RLS, кстати.

Ответы9723541005490

12 апр, 00:56 #130 #972199

>>956909 (OP)
>Rust
Не взлетит.

>>957136
>без сборщика мусора
>миллионы макак
Последнее не подрузамевает мозг, а равно ручной гарбейжинг, а значит без певрого не возможно второе.

Ответы972205972252

12 апр, 01:14 #131 #972205

>>972199
>Не взлетит.
Покаместь что взлетает.
Не так сильно как хотелось бы конечно.

Ответы972282

12 апр, 06:09 #132 #972252

>>972199
>а равно ручной гарбейжинг
Не так, габейджинг вообще не потребуется, потому что код будет написан безопасно либо не скомпилится.

Ответы972282

12 апр, 09:15 #133 #972282

>>972252
>либо не скомпилится.
this. Так что без автосборщика мусора никуда.

>>972205
Ну и дохуя тырпрайза перекатилось на него?

Ответы972310972312972360972459

12 апр, 09:20 #134 #972284

Че там с книжками? Кроме официальной сухой доки есть еще что-нибудь?

Ответы972360

12 апр, 10:49 #135 #972310

>>972282
>this. Так что без автосборщика мусора никуда.
Ну так прочитай книжку и пойми как надо делать что бы компилилось.

12 апр, 11:01 #136 #972312

>>972282
> дохуя
А это сколько в цифрах?

12 апр, 11:05 #137 #972314

Вообще конечно расту нужны нормальные средства разработки. И вроде как они активно пилятся. Подождем, посмотрим, потому что сейчас, все что связано с растом находится в "earliest alpha stage of development".

Ответы972351972354

12 Кб, 798x122

12 апр, 11:39 #138 #972329

Так и живем.

12 апр, 11:45 #139 #972330

бамп

12 апр, 13:06 #140 #972351

>>972314
> нормальные средства разработки
автокомплит и навигация в emacs уже давно работает

12 апр, 13:09 #141 #972354

>>972314
Питушок, ты что-то упкстил?
>>971909

12 апр, 13:29 #142 #972360

>>972282
>Ну и дохуя тырпрайза перекатилось на него?
А нахуя на расте json в xml перегонять, если для таких задач есть ява?
>>972284
Rust by example, rustonomicon, rust essentials.

12 апр, 16:46 #143 #972459

>>972282
>Ну и дохуя тырпрайза перекатилось на него?
Ну как бы Rust не позиционируется как замена для джавы.
Хотя, мне кажется это возможно, если создать правильные годные абстракции.

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

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

Ответы9724649728331018496

12 апр, 16:56 #144 #972464

>>972459
Мне кажется раст будет ультрагоден для создания осей и низкоуровенего софта, т.е. там, где сейчас С и С++.

Ответы972485974065

12 апр, 17:48 #145 #972485

>>972464
Уже же какую-то ось на расте запилили

Ответы972499972583972736

12 апр, 18:15 #146 #972499

>>972485
Несколько.

Ответы972558972736

12 апр, 19:13 #147 #972558

>>972499
>Несколько
Что-то кроме редокс есть?

Ответы972568

12 апр, 19:24 #148 #972563

Да похуй на эти ваши ос. Лучше расскажите, кто-нибудь щупал аметист?

Ответы972568

12 апр, 19:36 #149 #972568

>>972558
https://github.com/flosse/rust-os-comparison
>>972563
А ПИСТОН чем не устраивает?

Ответы972575

12 апр, 19:45 #150 #972575

>>972568
Пистон это набор либ, а не движок. Если верить описанию с https://github.com/amethyst/amethyst/wiki/Other-Game-Engines-in-Rust

12 апр, 20:07 #151 #972583

>>972485
Но оно говно пока что. Что-то годное сделают когда раст станет массовым.

12 апр, 22:08 #152 #972679

Как же он пиздецки медлено компилится.

Ответы972725972844

13 апр, 00:02 #153 #972725

>>972679
Быстрее плюсов.

Хотя ирл однохуйственно перекомпиливается только 1 модуль, и на минимальной конфигурации мбп 2016 весь цикл компиляции-тестов проходит быстро, если ты не меняешь весь проект и зависимости вместе взятые за раз. И в отличие от го с быстрой компиляцией, тут при отсутствии ансейфа дебаггер действительно нинужин.

Ответы972728972739

13 апр, 00:05 #154 #972728

>>972725
Дебагер не нужен? Быстрая конпеляция не нужна? Ты всю хуйню пишешь без ошибок с первого раза?

Ответы972731

13 апр, 00:13 #155 #972731

>>972728
Ты даун который мой пост не прочитал.

Но да, с его системой типов и статическим анализом он в своём каноническом юзкейсе рили не нужен. Разве что с пошаговой поддержкой IDE для изучения чужого кода прикольно было бы.

Ответы972733972737

13 апр, 00:16 #156 #972733

>>972731
Даун тут только ты, если думаешь что система типов спасает от ошибок.

Ответы972741

13 апр, 00:22 #157 #972736

>>972485
>>972499
А как можно пилить ось на языке с кучей экстерн депендов?

Ответы972802

13 апр, 00:23 #158 #972737

>>972731
http://paste.org.ru/?57pxj7
Как быть если случится примерно такая история? Как раст меня от этого защищает?

Ответы972741

13 апр, 00:28 #159 #972739

>>972725
Да и в го дебаггер особо не нужен, во всяком случае мало кто им пользуется ибо его нет

Ответы972740

13 апр, 00:36 #160 #972740

>>972739
В го дебагер не нужен потому что
1) Быстрее въебать принт и переконпелить
2) Если ты поймаешь панику ты получишь четкий стектрейс

Ответы972743

13 апр, 00:40 #161 #972741

>>972737
Не стрелять себе в ногу специально. А так в нём есть специальная деректива компилятора, ограничивающая рекурсию, если ты настолько больной.
>>972733
А ты походу считаешь что система типов это "инты, поинтеры и структуры".

Ответы972744

13 апр, 00:42 #162 #972743

>>972740
В расте он не нужен потому что:
а) Если не пытаться руками завалить код — он не разыминует висячий указатель/нульпоинтер/итд.
б) Стектрейс в дебаг-билде в любом языке избыточен, вась.

Ответы972746

13 апр, 00:42 #163 #972744

>>972741
По твоему кто-то специально стреляет себе в ногу? Нет, блять, это говно всплывает в проде когда ты этого меньше всего ожидаешь. Система типов никогда в жизни не научит тебя не совершать ошибок, которые вызовут у твоих клиентов жопную боль. Может ты и не сможешь поделить попугаев на тараканов, но вот вместо одного бесплатного попугая выдать чуть более 9000 - легко.

Ответы972748

13 апр, 00:43 #164 #972746

>>972743
Кукаретик, еще раз тебе повторяю, что 99% ошибок это ошибки бизнес логики, а не разыменования указателей.

Ответы972747

13 апр, 00:46 #165 #972747

>>972746
В высокоуровенных языках вроде явы, где их и нет. А так, открой свежий список CVE, посмотри как там дела с 1%.

13 апр, 00:48 #166 #972748

>>972744
Она поможет мне ковыряться в говне из байтов без стрельбы в анал и гонок данных. Давай заводи демагогию по новой.

13 апр, 06:42 #167 #972802

>>972736
Ты о чём?

413 Кб, 1060x700

13 апр, 10:12 #168 #972833

>>972459
>если создать правильные годные абстракции
А вот тут, кстати, у меня вопрос возник. Где почитать именно про приемы проектирования на Rust - с примерами неудачных решений, разбором полетов и т.д. По классическому ООП такой литературы завались, а тут куда копать? Ну или хотя бы исходники какого-нибудь годного проекта средней сложности посоветуйте.

Ответы972849972856

13 апр, 10:44 #169 #972844

>>972679
cargo check

13 апр, 10:50 #170 #972849

>>972833
>Где почитать именно про приемы проектирования на Rust
Предположу, что скорее всего нигде, кроме исходников чужих проектов. Советую сначала погуглить, а если найдешь- вбросить сюда.

Ответы972856

13 апр, 11:23 #171 #972856

>>972849
>>972833
https://github.com/rust-unofficial/patterns
От авторов знаменитой "learn rust by writing too many lists". Хотя там большинство контента всё ещё только TODO без описания (:

Проекты смотри где нибудь на https://github.com/kud1ing/awesome-rust
Где-то кстати видел компилятор хаскеля на расте, тоже можешь глянуть, лул.

А вообще, вся кор-тима раста работает над серво, и половина над токио — посмотри на них если хочешь кода из первых рук.

Ответы975583

15 апр, 16:33 #172 #974065

>>972464
1)Примеры ымбыдеда на вашем расте есть?
2)Почему "один из самых динамично развивающихся языков современности" в зыкаче имеет тред, который мертвее треда полувекового С?

Ответы974726975592976329

17 апр, 02:46 #173 #974726

>>974065
1) Гугол открой;
2) Потому что растотреды уже перекатов так 5 находятся под атакой жеманного, который просто топит спамом все адекватные посты. Сравни на том же реддите активность доски раста с досками плюсов и си вместе взятыми.

Ответы974730

17 апр, 03:16 #174 #974730

>>974726
>2) Потому что растотреды уже перекатов так 5 находятся под атакой жеманного, который просто топит спамом все адекватные посты.
А не тот ли это шизик, что срет в го треде?

Ответы974731

17 апр, 03:30 #175 #974731

>>974730
Это ты у него узнавай.

18 апр, 15:44 #176 #975583

>>972856
>компилятор хаскеля на расте
нихуя ж себе
language-rust на хаскеле помню, а такого не видел

Ответы975590

18 апр, 15:47 #177 #975590

>>975583
https://github.com/Marwes/haskell-compiler

18 апр, 15:49 #178 #975592

>>974065
>тред, который мертвее треда полувекового С
Патамушто с неадекватами неохота разговаривать, норм чуваки все в гиттере да ирц пасутся

19 апр, 11:39 #179 #976237

Оправдывайтесь почему нужно писать println! вместо println

Ответы976239976259

19 апр, 11:48 #180 #976239

>>976237
Потому что в языке нету поддержки varargs, очевидно.

Ответы976245

19 апр, 11:56 #181 #976245

>>976239
Надо было делать print << ln
Присутствие ! ассоциируется с мутабельностью которая вообще не при чём здесь как оказывается

Ответы976250976257

85 Кб, 1457x981

19 апр, 12:04 #182 #976250

>>976245
>print << ln

19 апр, 12:10 #183 #976257

>>976245
>Надо было делать print << ln
Иди нахуй за этим ублюдским говном в плюсы. Я реально рад, что сделали человеческое printf-like форматирование.
>Присутствие ! ассоциируется с мутабельностью которая вообще не при чём здесь как оказывается
Так это и не окамл, дружок. Тут восклицательный знак (тем более справа от идентификатора, хз с чего ты про мутабельность рот открыл — мутабельно передать что-то можно только явно с mut) означает макрос, местный синтаксис разыменования указателей от си был унаследован, если ты не заметил.

19 апр, 12:10 #184 #976259

>>976237
Зачем оправдываться? Тут два стула - либо используй макросы, либо зависимые типы. Причем раст, похоже, будет видеть на обоих.
Ладно-ладно, есть третий стул - разбирать строку формата в рантайме и обрабатывать ошибку. Но для этого есть runtime-fmt

Ответы976260976294

19 апр, 12:11 #185 #976260

>>976259
>сидеть

19 апр, 13:43 #186 #976294

>>976259
Я раньше думал, что вывод имеет отношения к монадам, а тут вон че. Поясни, пожалуйста.

71 Кб, 481x857

19 апр, 14:21 #187 #976317

Всё правильно сделал? Как-то печально это всё

Ответы976318976321976555

19 апр, 14:24 #188 #976318

>>976317
Надо было просто println!("14");

Ответы976320

19 апр, 14:28 #189 #976320

>>976318
Но я хочу чтобы было AbstractSingletonProxyFactoryBean чтобы объединять данные с функциями

19 апр, 14:29 #190 #976321

>>976317
Похоже на go лол

19 апр, 14:42 #191 #976329

>>974065
>2)Почему "один из самых динамично развивающихся языков современности" в зыкаче имеет тред, который мертвее треда полувекового С?
Проблемы /pr
Потому что абсолютное большинство тредов языкача - это холивары и баттхерты, например есть го тред, но там куча неадеквата.

19 апр, 15:45 #192 #976345

В общем не вижу никакой разницы с С++ кроме примитивного ооп, конструкции match и опущенных {} (вау), да ещё уебанцкие сокращения ключевых слов и имён в стандартой библиотеке
Выглядит как язык от васяна где вся логика построена по желанию его левой пятки
Для деклоративного петушения со статической типизацией лучше взять Haskell, для навороченного синтаксиса Perl 6

Ответы976363976511

19 апр, 16:34 #193 #976363

>>976345
Что-то ты забыл про главное отличие - систему типов Rust. Я и про lifetimes/borrowing, и про гарантированную на уровне системы типов потокобезопасность (вне unsafe), и про проверку типов в дженериках на этапе их создания а не на этапе инициализации. А в обозримом будущем надеюсь появятся зависимые типы, HKT и прочие вкусности.
И да, модули. В 2к17 инклудить хедеры вместо нормального импорта модулей - очень странно если честно. Это по сравнению с прочим мелочь, но всё-таки.

Ответы976366

19 апр, 16:41 #194 #976366

>>976363
>А в обозримом будущем надеюсь появятся зависимые типы, HKT и прочие вкусности.
Вот только не надо это сложное для понимания уг тащить в Rust.
Сейчас это нормальный язык, Haskell к услугам тех, кто желает дрочить на монады/теоркат и теорию типов.

Ответы976388

19 апр, 17:41 #195 #976388

>>976366
Ты хоть знаешь что такое HKT или просто знаешь что это "что-то сложное из Haskell"?

Ответы976505976511

19 апр, 18:11 #196 #976399

>>957444
>пример притянут за яйца. любой школьник знает
Схрена ли оно компилируется тогда?

ЛЮБОЙ ШКОЛЬНИК ЗНАЕТ
@
РАЗРАБОТЧИКИ КОМПИЛЯТОРА НЕ ЗНАЮТ

19 апр, 21:04 #197 #976505

>>976388
>Ты хоть знаешь что такое HKT или просто знаешь что это "что-то сложное из Haskell"?
Представь себе, прежде чем ответить, я загуглил и честно попытался понять. Не смог сделать этого даже на интуитивном уровне, т.е. не уловил идею. Разумеется, дело может быть во мне, но для себя я сделал вывод, что это достаточно сложно для понимания программиста, привыкшего к императивным языкам, к числу которых относится Rust. Для таких вещей есть Haskell и незачем засирать другой язык.

просто хаскеллисты хуеют от своего рантайма и хотят свои убер-абстракции, которые и сами не понимают, но при этом хотят efficiency раста

Ответы976573

19 апр, 21:11 #198 #976511

>>976345
>опущенных {} (вау)
Ты сам только что показал что опущен только ты, лол. В расте много где опускаются обычные скобки, но все выражения (кроме однострочных результатов паттерн матчинга) делятся фигурными.
>стандартой библиотеке
Жеманный, не не пались, не знаешь же. После си и плюсов с atoi(), ftol() ntohl() и друзьями в расте просто AbstractSingletonProxyFactoryBean-ы какие-то
>>976388
Братан, вот поясни мне за эти функторы — а нахуя?
Я мб тупой слишком, но из пояснений в гугле понял столько же, сколько про монады — что это моноид в категории эндофункторов, ахуенно.
Сейчас у нас есть что-то между плюсами и сишкой — с композицией и tagget-unions вместо наследования, простым синтаксисом (дада), все очень явно, модули и так далее.

Короче, качественный кусок инженерного говна, если цитировать одного йоба-математика. На нем с некоторой сноровкой, конечно могут спокойно писать васяны вроде меня у которых никогда не было пар теорката или они нихуя не понели, в общем-то, примерно 95% программистов на си и плюсах.
А еще есть тот же ATS, в котором зависимые типы где-то даже видел коммент в стиле "правильно сделанный раст" и все прочее, на котором с комментария того же йоба-математика скорость написания кода в лучшем случае "400 строк за неделю". Карл, вот что такого дадут эти зависимые типы практичному языку, а не йобе от епонца, у которого в культуре высшее просветление — аутировать смотря на сакуру?

Ответы976529976538976573

19 апр, 21:46 #199 #976529

>>976511
А мне еще можете пояснить что такое линейные типы.

Ответы976543

19 апр, 22:02 #200 #976538

>>976511
Cи делали 100 лет назад, в С++ этого уже нет за редким исключением, писать fn вместо function даже не каждая обоссанная обёртка для JS себе позволит. Можно было использовать define или вообще function x = x раз уж match влепили. Для серьёзного языка с ориентацией на безопасность это абсолютно неприемлимо, даже переменные так называть нельзя.

Ответы976539976543

19 апр, 22:04 #201 #976539

>>976538
двачую, тоже это резануло, есть же нормальные def, func

Ответы976543

19 апр, 22:25 #202 #976543

>>976538
>>976539
Ебать жеманного бомбонуло.
>>976529
Дык их и нет в расте, здеся у нас аффинные типы.
Линейные типы (по моему скромному пониманию, хз чо там по математической правильности) позволяют использовать объект только из одного места и запрещают копировать на него ссылки. В расте это называется владением.
В аффинной типизации есть возможность использовать объект не только из одного места. В сухом остатке, это грубо говоря есть заимствование.

71 Кб, 396x732

19 апр, 22:55 #203 #976555

>>976317
Вектор объектов, компилится
Подсветку не настроил ещё

Ответы976576

19 апр, 23:11 #204 #976573

Ёпт, на сколько всего отвечать придётся

>>976505
>Представь себе, прежде чем ответить, я загуглил и честно попытался понять. Не смог сделать этого даже на интуитивном уровне, т.е. не уловил идею.

Как-то странно на людей влияет всё что хоть как-то связано с функциональщиной. Абстракций, которые за пять минут в гугле не особо-то поймёшь, хватает и в ООП, но как только пациент видит слово "монада", "функциональный", "Haskell", он заранее готовится к чему-то охуенно сложному, и если за 5 минут в гугле не понял суть, то мнение это лишь подкрепляется.

На самом деле в HKT нет вообще ничего сложного. Если очень грубо, HKT - это просто способ выразит общее свойство (интерфейс) не любого типа, а параметрического. То есть если тип имеет поряок (kind) -> , то у него обязательно должен быть параметр (другими словами, это обязательно должен быть generic-тип). Если порядок -> -> *, то параметра должно быть два, и так далее. Разве это настолько сложно?

> я сделал вывод, что это достаточно сложно для понимания программиста, привыкшего к императивным языкам, к числу которых относится Rust

Опять-таки, так уж исторически сложилось, что функциональные языки опережают императивные в использовании более мощных систем типов. Но по факту, те же HKT к самой функциональщине не имеют прямого отношения и могут спокойно применяться в императивных языках.

> Для таких вещей есть Haskell и незачем засирать другой язык

Тут у вас на глазах происходят крутейшие вещи - высокоуровневые абстракции, которые раньше ассоциировались с очень высокоуровневыми языками, теперь можно (или скоро можно будет использовать) в системной разработке, причём вся "магия" происходит на этапе компиляции, т. е. никакого ущерба производительности нет. А вы включаете режим утёнка, мол, с этим я не знаком, не надо этим засирать язык. Как прогресс-то двигать, не пробуя новые абстракции?

>>976511
>Братан, вот поясни мне за эти функторы — а нахуя?

На самом деле определение функторов из ТК вообще не особо-то важно когда речь идёт об их применении в программировании. Функторы используют в программировании не из-за их значения в ТК, а потому что так уж случайно вышло, что под определение функтора совершенно естественным образом подпадают такие нужные в программировании вещи как списки и optional-значения (с монадами также). Так что функтор/монада - это с одной стороны интерфейс (набор признаков типа), с другой - паттерн (набор приёмов работы со _всеми_ типами которые реализуют данный интерфейс). Основная идея в том, что выделяя все эти функторы и монады как отдельную сущность, можно писать допустим какие-то функции-хелперы которые не знают ничего о конкретном типе, а знают лишь что этот тип реализует нужный интерфейс. Это позволяет местами писать более обобщённый, универсальный, абстрактный код.

Собственно, важно понимать, что в Rust уже используются техники, характерные для ФПшных монадок и функторов. Все вот этим методы типа or_else и прочее - это как раз оно. Суть в том, что сейчас в Rust всё это реализуется отдельно для каждого типа. А если выделить монады/функторы как отдельную сущность, то многие из этих методов можно будет реализовать один раз, обобщённо, для всех таких типов сразу.

> Карл, вот что такого дадут эти зависимые типы практичному языку

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

19 апр, 23:11 #204 #976573

Ёпт, на сколько всего отвечать придётся

>>976505
>Представь себе, прежде чем ответить, я загуглил и честно попытался понять. Не смог сделать этого даже на интуитивном уровне, т.е. не уловил идею.

Как-то странно на людей влияет всё что хоть как-то связано с функциональщиной. Абстракций, которые за пять минут в гугле не особо-то поймёшь, хватает и в ООП, но как только пациент видит слово "монада", "функциональный", "Haskell", он заранее готовится к чему-то охуенно сложному, и если за 5 минут в гугле не понял суть, то мнение это лишь подкрепляется.

На самом деле в HKT нет вообще ничего сложного. Если очень грубо, HKT - это просто способ выразит общее свойство (интерфейс) не любого типа, а параметрического. То есть если тип имеет поряок (kind) -> , то у него обязательно должен быть параметр (другими словами, это обязательно должен быть generic-тип). Если порядок -> -> *, то параметра должно быть два, и так далее. Разве это настолько сложно?

> я сделал вывод, что это достаточно сложно для понимания программиста, привыкшего к императивным языкам, к числу которых относится Rust

Опять-таки, так уж исторически сложилось, что функциональные языки опережают императивные в использовании более мощных систем типов. Но по факту, те же HKT к самой функциональщине не имеют прямого отношения и могут спокойно применяться в императивных языках.

> Для таких вещей есть Haskell и незачем засирать другой язык

Тут у вас на глазах происходят крутейшие вещи - высокоуровневые абстракции, которые раньше ассоциировались с очень высокоуровневыми языками, теперь можно (или скоро можно будет использовать) в системной разработке, причём вся "магия" происходит на этапе компиляции, т. е. никакого ущерба производительности нет. А вы включаете режим утёнка, мол, с этим я не знаком, не надо этим засирать язык. Как прогресс-то двигать, не пробуя новые абстракции?

>>976511
>Братан, вот поясни мне за эти функторы — а нахуя?

На самом деле определение функторов из ТК вообще не особо-то важно когда речь идёт об их применении в программировании. Функторы используют в программировании не из-за их значения в ТК, а потому что так уж случайно вышло, что под определение функтора совершенно естественным образом подпадают такие нужные в программировании вещи как списки и optional-значения (с монадами также). Так что функтор/монада - это с одной стороны интерфейс (набор признаков типа), с другой - паттерн (набор приёмов работы со _всеми_ типами которые реализуют данный интерфейс). Основная идея в том, что выделяя все эти функторы и монады как отдельную сущность, можно писать допустим какие-то функции-хелперы которые не знают ничего о конкретном типе, а знают лишь что этот тип реализует нужный интерфейс. Это позволяет местами писать более обобщённый, универсальный, абстрактный код.

Собственно, важно понимать, что в Rust уже используются техники, характерные для ФПшных монадок и функторов. Все вот этим методы типа or_else и прочее - это как раз оно. Суть в том, что сейчас в Rust всё это реализуется отдельно для каждого типа. А если выделить монады/функторы как отдельную сущность, то многие из этих методов можно будет реализовать один раз, обобщённо, для всех таких типов сразу.

> Карл, вот что такого дадут эти зависимые типы практичному языку

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

Показать весь текст
Ответы9765759765779765889766029766071033011

19 апр, 23:15 #205 #976575

>>976573
блять, оно потёрло мои звёздочки
там должно быть в одном месте &#42; -> &#42;
в другом: &#42; -> &#42; -> &#42;

Ответы976577976588976602

19 апр, 23:16 #206 #976576

>>976555
Братан, можно было просто:
а) Сделать impl Display for Vec<Box<Yoba>> и всё;
б) Использовать дебажную форматировку в println (которая :?).

Ответы976608

19 апр, 23:17 #207 #976577

>>976573
>>976575

блядь, а это сложнее чем монады ебашить
пробую ещё раз
&#38;#42; -> &#38;#42; в одном месте
&#38;#42; -> &#38;#42; -> &#38;#42; в другом

Ответы976588976602

19 апр, 23:36 #208 #976588

>>976573
>>976575
>>976577

так, ладно: https://pastebin.com/DKCvJDP0

Ответы976602

19 апр, 23:53 #209 #976602

>>976573
>На самом деле в HKT нет вообще ничего сложного. Если очень грубо, HKT - это просто способ выразит общее свойство (интерфейс) не любого типа, а параметрического. То есть если тип имеет поряок (kind) -> , то у него обязательно должен быть параметр (другими словами, это обязательно должен быть generic-тип). Если порядок -> -> , то параметра должно быть два, и так далее. Разве это настолько сложно?
Ну я вот щас ничего не понял. Ты точно не стебешься? ->, -> -> - это что?

>Как-то странно на людей влияет всё что хоть как-то связано с функциональщиной. Абстракций, которые за пять минут в гугле не особо-то поймёшь, хватает и в ООП, но как только пациент видит слово "монада", "функциональный", "Haskell", он заранее готовится к чему-то охуенно сложному, и если за 5 минут в гугле не понял суть, то мнение это лишь подкрепляется.
1. ООП все, кто связан с программированием, знают
2. В начальном приближении большинство концепций ООП можно объяснить сравнительно просто, можно это как-то постепенно изучать, а, когда на тебя обрушивается ворох стрелок и звездочек, это кажется сложным.

Разумеется, сказывается императивный бэкграунд и стереотипы об ФП. Плюс не совсем понятно, а нахуя это нужно, я понимаю конечно, что ты в обратку можешь сказать, что так можно и на голом С или asm писать и вообще отказаться от прогресса, но, повторюсь, зачем эти кайнды нужны я так для себя и не уяснил. Наверное, это красиво, но для меня отдает дрочевом и излишней наукообразностью.

>>976588
>>976573
>>976575
>>976577
Чет проиграл если честно.

Ответы976614976615976626976908

19 апр, 23:55 #210 #976607

>>976573
>Тут у вас на глазах происходят крутейшие вещи - высокоуровневые абстракции, которые раньше ассоциировались с очень высокоуровневыми языками, теперь можно (или скоро можно будет использовать) в системной разработке, причём вся "магия" происходит на этапе компиляции, т. е. никакого ущерба производительности нет. А вы включаете режим утёнка, мол, с этим я не знаком, не надо этим засирать язык. Как прогресс-то двигать, не пробуя новые абстракции?
Ну если смогут норм внедрить эти кайнды в язык и объяснить так, чтобы понял человек, который на хаскелле только факториалы писал, то я ничего против не имею, возможно это годная вещь действительно.

19 апр, 23:57 #211 #976608

>>976576
>fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
Нихуя себе просто

20 апр, 00:07 #212 #976614

>>976602
> ->, -> -> - это что?

Это парсер съел звёздочки. Смотри короче ссылку на pastebin, я не ебу как эти звёздочки вставлять сюда.

20 апр, 00:08 #213 #976615

>>976602
>Плюс не совсем понятно, а нахуя это нужно

Те же монады и функторы нормально без кайндов не реализовать. Зачем нужны монады и функторы и попытался вкратце объяснить выше. В общем всё сводится к тому чтобы писать более обобщённый код.

20 апр, 00:22 #214 #976626

>>976602

Ну можно конечно какой-то другой синтаксис придумать, без стрелочек со звёздочками. Стрелочки здесь потому что те самые дженерики которыми мы каждый день пользуемся с точки зрения того же Haskell - функция над типом. Ну то есть когда мы пишем тип вроде List<Int> мы как бы вызваем (в compile-time, разумеется) функцию List с параметром Int.

20 апр, 13:15 #215 #976821

Я не понял насчёт параллелизма, он что реальные потоки создаёт? А корутины где?
В http://rurust.github.io/rust_book_ru полно примеров где предлагают создавать по 10 тредов для вычислений, довольно странная практика

Ответы976827976858

20 апр, 13:20 #216 #976827

>>976821
>полно примеров где предлагают создавать по 10 тредов для вычислений, довольно странная практика
И что в ней странного?
Все так всегда делают.

>Я не понял насчёт параллелизма, он что реальные потоки создаёт?
Ты что реально слабоумный дебил?

>А корутины где?
Не завезли, ибо сложно и нужон сложный рантайм.
Заместо есть tokio и фьючерзы.

Ответы976834976851

20 апр, 13:37 #217 #976834

>>976827
А как без корутин например 100 одновременных HTTP запросов послать и обрабатывать?

Ответы976836

20 апр, 13:43 #218 #976836

>>976834
>А как без корутин например 100 одновременных HTTP запросов послать и обрабатывать?
Асинхронно.
Через tokio либу.

Но с такими вопросами, лично тебе, никак.

Прежде чем вкатываться в раст, нужно возыметь базовые знания вначале.
Архитектура ПК - ассемблер - си.
Да и не для раста то-же нужно.

Ответы976851

20 апр, 13:58 #219 #976842

>>957093
Схуяли его меньше?
Там выразительность на уровне С++ или хуже.

Ответы976851

20 апр, 14:04 #220 #976849

>>957174
Не в 6/9 а в 3/9, при этом сливает Си в 8/9,
что какбы говорит нам о качестве кода на плюсах в этих бенчмарках.

20 апр, 14:06 #221 #976851

>>976827
>И что в ней странного?
>Все так всегда делают.
Да просто любой дурак знает, что плодить больше потоков, чем ядер, нет смысла, особенно для вычислений. То, что все так делают не говорит о том, что это правильно.

>>976836
>
>Прежде чем вкатываться в раст, нужно возыметь базовые знания вначале.
>Архитектура ПК - ассемблер - си.
Сразу видно теоретика.

>>976842
>Там выразительность на уровне С++
Так с++ довольно выразителен, если сравнивать с джавой или го.

Ответы976859

20 апр, 14:06 #222 #976852

>>957308
А теперь приведи пруфы того, что Rust делает гарантированно безопасный код.

20 апр, 14:13 #223 #976858

>>976821
Он не слышали про количество ядер прост

20 апр, 14:13 #224 #976859

>>976851
>Да просто любой дурак знает, что плодить больше потоков, чем ядер, нет смысла, особенно для вычислений. То, что все так делают не говорит о том, что это правильно.
Любой недурак, знает, что плодить потоков больше чем ядер ЕСТЬ смысл в определенных задачах.
И потому проводит тесты производительности в разных конфигурациях.

>Сразу видно теоретика.
Пожалуй, шел бы ты нахуй, безмозглый шизик-тралль.

Ответы976860

20 апр, 14:14 #225 #976860

>>976859
>Пожалуй, шел бы ты нахуй, безмозглый шизик-тралль.
Хотя нет.
Оставайся тут пока.

20 апр, 14:15 #226 #976861

>>957587
>А преподносят как готовый продукт.
Галоперидону выпей. СРОЧНО!

20 апр, 15:56 #227 #976908

>>976602
>ООП все, кто связан с программированием, знают
Сижу на програмаче, следовательно я связан с программированием. я не знаю ООП (ни единой секунды не писал на объектно-ориентрированном языке, только процедурные и фукнциональные), следовательно это твое утверждение ложно.

Ответы976931976975977017

20 апр, 16:37 #228 #976931

>>976908
Первая посылка ложна, ты не связан с программированием. Ты хлебаешь борщи и участвуешь в срачах.

Ответы977030

20 апр, 18:11 #229 #976975

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

Ответы977030

20 апр, 19:37 #230 #977017

>>976908
>я не знаю ООП (ни единой секунды не писал на объектно-ориентрированном языке, только процедурные и фукнциональные)
То, что ты не писал с ООП подходом, что кстати сомнительно, еще не означает, что ты не знаешь ООП.
Тем более, что ты
>Сижу на програмаче
И минимум что-то читал тут о ООП.

>следовательно это твое утверждение ложно
Увы, но твои аргументы инвалид, и логический вывод мягко говоря сломан.
Что косвенно свидетельствует о твоей недалекости в целом, и в отношении процедурных\функциональных языков в частности.

Ответы977030

20 апр, 20:24 #231 #977030

>>976931
>>976975
>>977017
)))

25 Кб, 1173x878

20 апр, 21:26 #232 #977055

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

Ответы977090977098977208

20 апр, 23:21 #233 #977090

>>977055
Это издержки любой централизованной иuild системы.
Я как вижу эти зеленые надписи про downloading-compiling, так сразу чувство, что сейчас начнется какая-то мясорубка с кишками и кровью, больно это напоминает руби, а я в свое время наебался с последним, когда для запуска одного скрипта нужна тысяча гемов ну или хз сколько и что-то всегда ломается. При этом я был не разработчиком, но конечным пользователем тех скриптов и с того времени руби для меня - ругательство.

Ответы977091

20 апр, 23:21 #234 #977091

>>977090
не build системы а системы управления пакетами, сорри тупанул.

Ответы1041667

20 апр, 23:49 #235 #977098

>>977055
Лучше, конечно, тащить все зависимости в проект и устраивать кровь с кишками с помощью вендоринга, а потом сидеть по 5 лет на старой версии библиотеки, которая течет и работает хромая.

Ответы977106977204

21 апр, 00:02 #236 #977106

>>977098
Карго безальтернативно устанавливается в $HOME/.cargo, так пускай складывает либы в ./cargo/lib как rlib.so.1.2.1, а не компилит для каждого проекта по 200 мб

Ответы977110977223

21 апр, 00:12 #237 #977110

>>977106
Это растц релейтед проблема.

21 апр, 11:28 #238 #977204

>>977098
Вообще-то практика показывает, что лучше, т.к. это гарантирует сборку и запуск. Обновление либ - дело мейнтейнера проекта, если проект поддерживается, либы будут обновляться.
А иначе твой проект завязывается на нечто от тебя не зависящее, либа может изменить интерфейс без обратной совместимости и твой проект сломается или просто со временем что-то перестанет собираться.

Ответы977211977221978213

21 апр, 11:39 #239 #977208

>>977055
https://github.com/AngryLawyer/rust-sdl2
Вот это получилось собрать на
cargo-0.17.0-nightly (f9e5481 2017-03-03)
rustc 1.16.0 (30cf806ef 2017-03-10)

Ну хотя бы SDL работает, можно попробовать что-то сложнее факториала сделать

21 апр, 11:46 #240 #977211

>>977204
>Вообще-то практика показывает, что лучше, т.к. это гарантирует сборку и запуск. Обновление либ - дело мейнтейнера проекта, если проект поддерживается, либы будут обновляться.
>А иначе твой проект завязывается на нечто от тебя не зависящее, либа может изменить интерфейс без обратной совместимости и твой проект сломается или просто со временем что-то перестанет собираться.

Стократно плюсую.
Жаль, линуксоидам застрявшим во временах 2мб винчестеров, этого не понять.

Ответы977221

21 апр, 12:54 #241 #977221

>>977204
>>977211
Написал хуйню @ сам себе приплюсовал.
В нём можно указывать тянуть только определённую мажорную версии с минорными апдейтами, ничего не ломающими, либо вообще захардкодить одну.
Но гоферу не понять.

Хотя гау то же делает с своей GOPATH, у явы каждый пакетный менеджер тащит миллиард зависимостей для себя, в дотнете как в расте, а у динамикопитушков вообще каждый проект — своё хранилище зависимостей.

Ответы977222977247

21 апр, 13:00 #242 #977222

>>977221
Растц может зафейлиться если ему подсунут rlib'у с той же версией что надо, но скомпилированную растц недельной давности.

Ответы977225

21 апр, 13:00 #243 #977223

>>977106
Я вот уже представляю себе: собрал такой пару десятков проектов, и вместо того, чтобы иметь возможность просто удалить папочки с билдовым мусором сидишь и рыскаешь в ~/.cargo/lib, где каждой библиотеки по 4-12 штук (разной битности, версии релиза, вида линковки, всякой упоротой жуйни вроде pgo и тд).

Ответы977226977248

21 апр, 13:06 #244 #977225

>>977222
Ну, в том же окамле такая же хуйня — но всё сделано в одном хранилище, как предлагает анон выше. Просто попробуй попользоваться такой хуйнёй.

21 апр, 13:08 #245 #977226

>>977223
Эти проблемы вроде решает guix

21 апр, 13:56 #246 #977247

>>977221
>Но гоферу не понять.
Это ты себя имеешь ввиду, или что?
Речь о rust е идет вообще-то.

>В нём можно указывать тянуть только определённую мажорную версии с минорными апдейтами, ничего не ломающими, либо вообще захардкодить одну.
Тогда все ок.

21 апр, 13:59 #247 #977248

>>977223
>Я вот уже представляю себе: собрал такой пару десятков проектов, и вместо того, чтобы иметь возможность просто удалить папочки с билдовым мусором сидишь и рыскаешь в ~/.cargo/lib, где каждой библиотеки по 4-12 штук (разной битности, версии релиза, вида линковки, всякой упоротой жуйни вроде pgo и тд).

А это не норм нефига.
Нафуфик оно так сделано?
Зависимости должны лежать рядом с конкретным проектом.

Ответы977260

21 апр, 14:14 #248 #977253

У меня вопрос, а можно ли на винде да, да сделать так, чтобы все устанавливалось не в юзерскую директорию, а куда скажешь, например, в c:\rust.

Ответы977259

21 апр, 14:24 #249 #977259

>>977253
https://github.com/rust-lang-nursery/rustup.rs/#working-with-custom-toolchains-and-local-builds

Ну ещё посмотри первый пункт в разделе про переменные среды.

21 апр, 14:25 #250 #977260

>>977248
Ну так они и лежат.

Ответы977416

21 апр, 17:46 #251 #977378

Какой тип принимает Vec::index?

Ответы977389

21 апр, 18:18 #252 #977389

>>977378
Все индексы (массивов, векторов, хуекторов) в насте только в usize.

Ответы977390

21 апр, 18:19 #253 #977390

>>977389
>насте
В расте, лул, простите меня, Насти.

21 апр, 18:45 #254 #977416

>>977260
>Ну так они и лежат.
И в чем тогда проблема?

Ответы977420

21 апр, 18:54 #255 #977420

>>977416
В том что какой-то петушок лезет из своего говно-свинарника с ахуительными советами по архитектуре.

Ответы977606

37 Кб, 524x483

21 апр, 22:22 #256 #977504

Почему элемент енума в match не компилится без &?
Говорит
Item::A => 'A',
^^^^^^^ expected &Item, found enum `Item`
= note: expected type `&Item`
found type `Item`

Ответы977511

21 апр, 22:49 #257 #977511

>>977504
Наверно потому что &self.world?

22 апр, 06:37 #258 #977606

>>977420
Тебе уже всюду гоферы чудятся, параноик.
К врачу сходи.

24 Кб, 497x334

23 апр, 01:04 #259 #978136

Так надо структуры в енуме хранить или есть способ покруче?

Ответы978212978996

23 апр, 04:37 #260 #978212

>>978136
Мне вообще вся твоя затея с Enum-ом тут не нравится.

Может лучше сделать trait Cell с методом test() и передавать туда разные реализации этих cell?

https://doc.rust-lang.org/1.0.0-beta/book/static-and-dynamic-dispatch.html#dynamic-dispatch

23 апр, 04:49 #261 #978213

>>977204
Это одна из проблем хаскеля. Там уже и stackage завезли из-за этого, но выглядит это как снепшоты hackage периодические. Как если бы crates.io снепшотили весь целиком и проекты переезжали с одного снепшота на другой. Без этого вообще ад, сегодня компилируется, а завтра майнтайнер мелколибы сломал совместимость на какой-нибудь FreeBSD и сам не заметил.

С cargo есть гарантия, что любой снепшот проекта с какого-нибудь github можно собрать, причем любую его версию, именно с теми библиотеками, с которыми он разрабатывался.

cargo это вообще самое лучшее, что есть в расте вообще, и лучший из менеджеров зависимостей.

Ответы978251

23 апр, 04:55 #262 #978214

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

ИМХО, эту проблему нужно решать по аналогии с ccache. Пусть все остается как есть, но еще будет незаметный для юзера кеш, куда будет все собранное складироваться, если нужно линковаться в местный билд симлинком. Малоиспользуемые библиотеки пусть вычищаются. Если симлинк из-за этого сломался, можно и пересобрать. В Rust же пилят инкрементальную компиляцию, у нее кеш будет не глобальный ли случайно?

23 апр, 10:59 #263 #978251

>>978213
>если бы crates.io снепшотили весь целиком
Принцип иммутабельности as is, чтобы что-то добавить, надо удалить и пересоздать. Все правильно.

23 апр, 23:31 #264 #978789

MUTABLE BORROW
@
MUTABLE MORE THAN ONCE

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

Ответы978961978998

24 апр, 09:41 #265 #978961

>>978789
Для больше чем 1 мутабельной ссылки есть синхронизационные примитивы, или ансейф, если ты самый умный.

Ответы979224

24 апр, 10:48 #266 #978996

>>978136
>способ покруче
необязательно именовать поля, можно просто Player(PlayerData), доставать данные - как из кортежа (х.0)

Ответы979227

24 апр, 10:50 #267 #978998

>>978789
>ничего написать на этом языке не представляется возможным
На Х-ле есть даже специальный блог пост для тех, кто язык как бы осилил, но вообще не вдупляет как написать приложение. Может и для раста такой завезли, поищи.
Хотя самый нормальный совет - читай исходники других проектов.

82 Кб, 815x859

24 апр, 17:50 #268 #979224

>>978961
Как сделать swap или хотя бы заставить set() работать в одной функции с get() чтобы можно было клонировать?

Ответы979263

24 апр, 17:55 #269 #979227

>>978996
Не похоже на хорошую практику, даже Pos(i32,i32) с 0,1 вместо x,y как-то стрёмно смотрится

24 апр, 19:23 #270 #979263

>>979224
>Как сделать swap
fn swap<T>(a: T, b: T) -> (Pos, Pos) { (b, a) }
Использовать так:
let (src, dst) = swap(src, dst);
Работать будет с чем угодно. Не благодари.
>или хотя бы заставить set() работать в одной функции с get() чтобы можно было клонировать?
Клонировать и так можно через .clone().
А так — просто вынеси self.get() из матча в переменную.

Вообще, нужно сделать руководство для нюфагов на картинках — я хз как еще заимствование объяснять.

Ответы979264979273

24 апр, 19:24 #271 #979264

>>979263
>Pos, Pos)
Тоже на T заменить "для всего".

24 апр, 19:40 #272 #979273

>>979263
Не отвечай этому уебку пока он код не скинет нормально (энивэй твой свап это пиздос в его случае).

28 апр, 22:58 #273 #981701

Sup, аноны, решил на расте чего-нибудь пописать. Очередной калькулятор не хочется, можете подкинуть идейку с гитхаба? Не прочь буду и покомиттить в рабочий проект

29 апр, 00:05 #274 #981727

>What’s in 1.17.0 stable
>The story of Rust 1.17.0 is mostly one of small, quality of life improvements.

Дебилы блядь. Нет чтобы сразу сделать по нормальному как раньше было, до прихода багзиллы и крестоебов.

Глядишь, к 2.0 может и нормальный синтаксис запилят и HKT завезут.

Ответы981734

29 апр, 00:08 #275 #981729

Нет, все же сказочные долбоебы
>some unnecessary run-time parsing
some unnecessary run-time parsing блядь срать не снимая свитра

SocketAddr and IpAddr have some new conversions as well. Previously, you may have written code like this:

"127.0.0.1:3000".parse().unwrap()
Now, you can write

SocketAddr::from(([127, 0, 0, 1], 3000))
// or even
([127, 0, 0, 1], 3000).into()
This removes some unnecessary run-time parsing, and is roughly as readable, depending on your preferences.

Ответы981734

29 апр, 00:15 #276 #981734

>>981729
Что тебя смущает?
>>981727
До багзиллы и крестов и хкт не было. а синтаксис в любом случае лучше чем в жачкелях

Ответы981738981747981748

29 апр, 00:19 #277 #981738

>>981734
>лучше чем в жачкелях
niet вкусовщина

Ответы981743

29 апр, 00:26 #278 #981743

>>981738
>вкусовщина
Ну вот сам себе ответил. Не сделают.
Хотя ты всегда можешь сделать язык компилирующийся в раст (или хотя бы бэкэнд к хаскелю).

29 апр, 00:42 #279 #981747

>>981734
Плез, в божественном синтаксис охуенен.

29 апр, 00:46 #280 #981748

>>981734
Ах да, меня смущает эта задротская зацикленность не неважных вещах.
>some unnecessary run-time parsing
как будто код только и занимается этим и небо и Аллах и тепловая смерть Вселенной зависят от этой оптимизации, в которой говорится в комментариях к релизу.

Ответы981835

29 апр, 10:22 #281 #981835

>>981748
А ты хотел чтобы они тебе каждые 6 недель ахуенные релизы выкатывали? Такой цикл разработки нужен для вылизвания существующего кода.

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

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

29 апр, 14:05 #282 #981914

Раст когда-нибудь обгонит С?

Ответы982031

29 апр, 17:18 #283 #982031

>>981914
Он транслируется в LLVM байткод и обогнать C не может по определению.

Ответы982070982135

29 апр, 18:20 #284 #982070

>>982031
C тоже в него компилится. А в гнутом компилире компилится в их GIMPLE.

29 апр, 20:08 #285 #982135

>>982031
Ходят слухи, что благодаря своей охуенной системе типов Rust теоретически может предоставлять LLVM информацию, которая позволит производить всякие продвинутые оптимизации. Так что с развитием и Rust, и LLVM вполне возможно, что Rust станет в местами быстрее сишечки/крестов.

Ответы982202

29 апр, 20:58 #286 #982151

LLVM - это хайпнутое г и он никогда не будет быстрее гцц или даже Borland C++
Может, за счет убер-системы (которая просто хитро переносит часть рантайма на время компиляции) он будет где-то быстрее С или плюсов, но это лишь частные случаи, где-то и Hsakell быстрее С, такие кейсы любят находить фанбои того или иного языка, но общая картина всегда будет такой, что языки более высокого уровня медленнее С/С++.

Ответы982152982205982283

29 апр, 21:01 #287 #982152

>>982151
> никогда не будет быстрее
Почему?

Ответы982155

29 апр, 21:07 #288 #982155

>>982152
Потому что высокоуровневость и скорость разработки всегда меняется на скорость выполнения.
На пыхе ты можешь за 20 минут что-то высрать даже будучи учеником пятого класса, но скорость будет меньше, чем у правильно написанного кода на С, решающего аналогичную задачу.

Ответы982157

29 апр, 21:14 #289 #982157

>>982155
Причем тут пхп? Я думал мы ллвм и гцц сравниваем. И гцц далеко не везде обгоняет ллвм/цланг.

> высокоуровневость
Что-то мешает компилятору высокоуровневого языка высрать такой же машинный код который высирает гцц?

Ответы982218

29 апр, 22:43 #290 #982179

А нахуй нужны эти кланги, ЛЛВМ?
Есть гцц, уже довольно давно. Какой смысл в этой херне?

Ответы982180982181

29 апр, 22:47 #291 #982180

>>982179
Для нового языка проще запилить фронт для llvm, чем пилить новый компилятор с нуля

29 апр, 22:47 #292 #982181

>>982179
Подальше от Штульмана.

29 апр, 23:21 #293 #982202

>>982135
Ну он уже местами быстрее судя по базовым тестам.

29 апр, 23:27 #294 #982205

>>982151
Тогда почему кланг уже разъебывает гцц?
http://www.phoronix.com/scan.php?page=article&item=gcc7-clang4-jan&num=1

Ответы982343

29 апр, 23:45 #295 #982218

>>982157
Если говорить про php подобные, машинный код можно сделать только если вставить в бинарник интерпретатор целиком

30 апр, 09:41 #296 #982283

>>982151
Ору с тебя. LLVM IR не высокоуровневее чем IR GCC (не помню как там он называется). Вся разница в том что инфраструктура LLVM более современная, универсальная и лишённая некоторых легаси-косяков GCC.
Ещё раз, для тупеньких: LLVM IR - не высокоуровневый язык. Изначально вся инфраструктура Clang + LLVM вообще создавалась для компиляции C, и уже потом LLVM стали использовать как бэкенд для других языков.

Ответы982343

30 апр, 13:04 #297 #982343

>>982205
>Тогда почему кланг уже разъебывает гцц?
Найти пример, где кто-то кого-то разъебывает всегда можно.
Например, самый быстрый сервер статических файлов написан вроде на D или Haskell, но это не значит, что в целом эти языки быстрее С (язык с GC в принципе не может быть быстрее языка с ручным управлением памятью).

>>982283
Высокоуровневый язык - это Rust.
LLVM - это просто высер. Для хипстеров штучка, понимаешь? Поигрался, м.б. написал свой компилятор для своей джавы, где вместо слова class будет хуй и тип не перед, а после идентификатора.

Ответы982357982385982498982509

30 апр, 13:06 #298 #982345

Да кстати Rust - это тоже высер для хипстеров, что видно даже по лого. Это для тех, кто хочет почувствовать себя ололо-инжинером, который манипулирует байтиками и управляет памятью через ансейф, но который при этом не осилил C/C++.

Ответы982362982501

30 апр, 13:26 #299 #982357

>>982343
Охуеть, какой - то чухан мало того, что несёт какой-то бред, да еще использует слово "хипстер", как оскорбление. Ты, блядь, и хипстера поди не видел в своём залупинске, а туда же. Аргументации 0 (ноль), компетенции 0 (ноль), а лозунгов и пафоса на серьезных щщах на весь тред хватит.

Ответы982360982424

30 апр, 13:31 #300 #982360

>>982357
А какая тебе нужна аргументация, если весь механизм владения-заимствования - это подпорка для скорбных умом, у которых на языках с ручным управлением памятью будут утечки. Этим товарищам на джаве бы писать, но они хотят ощутить себя системными архитекторами и вот для них придумали эту игрушку.

Ответы982388982432982495

30 апр, 13:36 #301 #982362

>>982345
Никакой хипстер не осилит раст, это вообще язык не для людей. С++ немного проще из-за мутабельности и слабой типизации, пока не дойдёшь до шаблонов, которые тоже не для людей и никто их не понимает полностью.

Ответы982363982492

30 апр, 13:39 #302 #982363

>>982362
>это вообще язык не для людей
Что в нем сложного?
Понял заимствование, смарт-указатели и все.
Проще, чем ловить секфолты.

> С++ немного проще из-за мутабельности
Так сложно вставить слово mut, да?

>слабой типизации
Слабая типизация создает только проблемы.

Ответы982371

30 апр, 14:12 #303 #982371

>>982363
>Что в нем сложного?
Правила видимости непостижимы, например.

Ответы982395

30 апр, 14:26 #304 #982377

В расте синтаксис ебанутый и отягощенный и совсем не однородный. Да и разве не было языков с линейными типами уже? Чем раст лучше них?

Ответы982554982563

30 апр, 14:58 #305 #982385

>>982343
Но там не один пример, а целая кипа примеров, где гцц сосет. Так что уж просто это скорее тенденция, чем исключение.

Ответы982424

30 апр, 15:01 #306 #982388

>>982360
>вот для них придумали эту игрушку.
Эта игрушка по скорости ни чем не уступает крестам, но при этом меморисейф, что является ключевой килер фичей.

Ответы982424

30 апр, 15:11 #307 #982395

>>982371
Блять, додик, что ты вообще делаешь в программировании? Это тоже самое , что shared, unique и weak указатели.

Ответы982463

30 апр, 15:51 #308 #982424

>>982357
Хипстер - это как раз тот, кто с умным видом втыкает в "современные технологии". Примеры говна, которое любит хипстота - это Scala (и обязательно с экстенсивным использованием scalaz), кложа и т.д. При этом ладно бы они действительно что-то в этом понимали, а то большей частью скидывают друг другу статьи на хабре "как функциональное программирование помогло нашей компании".
И Rust примерно для таких, кто хочет играться с байтиками, но на сях без секфолтов не может hello world написать.

>>982388
>Эта игрушка по скорости ни чем не уступает крестам
Ахахаха.

>>982385
Так можно взять почти любой яп с толстым рантаймом и сказать, что он пижже, потому что в некоторых случаях он будет оптимизировать решение. Обычно в таких примерах просто специально оставляют простор для оптимизации и потом говорят, что их (язык, компилятор) быстрее.

Ответы982491982497982675

30 апр, 16:15 #309 #982432

>>982360
>Динамикодриснявая вебмакака не палится

30 апр, 17:15 #310 #982463

>>982395
>Это тоже самое , что shared, unique и weak указатели.
Мы придумали проблему а теперь будем с ней бороться.

Ответы982498

30 апр, 18:09 #311 #982491

>>982424
Ты где толстый рантайм у раста увидел-то?

30 апр, 18:11 #312 #982492

>>982362
Ну ты-то явно ни Rust и C++ дальше хелловорода не знаешь. Как будто в Rust нет мутабельности, лол.

30 апр, 18:16 #313 #982495

>>982360
Ох уж это раздутое чсв. Все такие охуенные, код сразу без ошибок пишут. Статическая типизация им не нужна, потому что зачем нам типобезопасность, мы и так код правильный пишем. Система владений-заимствований нам не нужна, потому что зачем нам безопасность работы с памятью, мы и так код правильный пишем. Охуеть просто, иди подойди к зеркалу и подрочи на себя, раз ты такой охуенный кодер.

Ответы982499

30 апр, 18:18 #314 #982497

>>982424
>Ахахаха.
Так и есть. У тебя врети что ли?
>>982424
>Так можно взять почти любой яп с толстым рантаймом и сказать, что он пижже, потому что в некоторых случаях он будет оптимизировать решение.
Повторюсь тут в 80% случаев ллвм нагибает гц.

30 апр, 18:19 #315 #982498

>>982343
>и тип не перед, а после идентификатора.
Я тебе сейчас секрет открою, но везде так делают потому что:
а) Компактнее записывать модификаторы (вместо всяких const out int hui просто var hui);
б) Легче и быстрее парить;
в) Лаконичнее живёт с выводом типов.
Даже в твоём говне так это работает.
>>982463
>в говнище вообще нет возможности контролировать указатели, нету и проблемы, кококо

Жеманный опять трет топит, луль.

Ответы982500

30 апр, 18:19 #316 #982499

>>982495
Ага, а потом годами выскребают зеродеи.

30 апр, 18:20 #317 #982500

>>982498
>парить
парсить
ох уж эти хипсторские вэйперы

Ответы982514

30 апр, 18:20 #318 #982501

>>982345
Дело не в осилил или не осилил C/C++, а в том что работать с Rust тупо приятнее (не говоря уже о том что безопаснее). Это касается как самого языка (клёвая система типов, нормальный match, if/match as expression, модули, гигиенические макросы и т. д.), так и инфраструктуры (нормальный пакетный менеджер, например). Если есть возможность использовать инструмент который использовать приятнее, то что в этом плохого, м?

30 апр, 18:28 #319 #982509

>>982343
LLVM - это охуенно мощная инфраструктура, в разработку которой было положено дохуища человекочасов. И сейчас LLVM гораздо более зрелая и удобная в использовании система, чем GCC. Начиная с того что LLVM легче расширяется и имеет более внятный дизайн и заканчивая тем что у LLVM в принципе есть внятная документация.
Скажем если кому-то нужен компилятор той же сишки для кастомного процессора (и это не выдуманная мной задача), то самый адекватный вариант - скачать сорцы LLVM, открыть документацию по написанию бэкендов к LLVM и сесть писать бэкенд. Документация вполне ок, хотя информации конечно меньше чем для написания фронтендов.

Ответы982512

30 апр, 18:31 #320 #982512

>>982509
Ты самое главное забыл — LLVM лицензирована MIT, а не ЖоПаеЛью, и Шульман со своими юристами не придёт к тебе если ты решишь продавать и распространять свой софт не открывая исходников.

Ответы982515

30 апр, 18:32 #321 #982514

>>982500
ставлю тип после идентификатора, законом не запрещено, парсить на 95% быстрее и легче

Ответы982517

20 Кб, 250x252

30 апр, 18:33 #322 #982515

>>982512
>Шульман
Штульман* конешно

30 апр, 18:36 #323 #982517

>>982514
Иди лучше к жавадаунам, они до сих пор пишут AbstractSingletonProxyFactoryBean<Hui, Zalupa> kek = AbstractSingletonProxyFactoryBean<Hui, Zalupa>(new AbstractSingletonProxyFactoryBean<Hui, Zalupa>(), new AbstractSingletonProxyFactoryBean<Hui, Zalupa>());

Скоро у пайка начнется деменция и в говне настанут такие же темные времена.

Ответы982525982527982622

30 апр, 18:43 #324 #982525

>>982517
>AbstractSingletonProxyFactoryBean<Hui, Zalupa> kek = AbstractSingletonProxyFactoryBean<Hui, Zalupa>(new AbstractSingletonProxyFactoryBean<Hui, Zalupa>(), new AbstractSingletonProxyFactoryBean<Hui, Zalupa>());
Охуенно же.

30 апр, 18:51 #325 #982527

>>982517
даже у жавадаунов уже var kek = ..., разве нет?

Ответы982533982551

30 апр, 18:58 #326 #982533

>>982527
Так меньше символов и меньше оплата

30 апр, 19:18 #327 #982551

>>982527
Нет, и в ближайшие 3-4 года до жявы 10 не предвидится.

30 апр, 19:19 #328 #982554

>>982377
Двачую этого.

30 апр, 19:29 #329 #982563

>>982377
Ну был и есть ATS. Официальный саппорт и форум на епонском, доков 0, только примеры факториалов, на языке писать без выдрачивания теорката нереально (он куда сложнее хачкеля, больше похож на теоремпрувер чем на яп) — тайная военная разработка страны восходящего солнца. Теперь как сам думаешь, чем?

Ответы982624

30 апр, 20:31 #330 #982622

>>982517
Тебе видать какие-то нехорошие жабисты попались, когда еще маленьким был, вот и осталась фобия хотя если судить по тому что пишешь, тот еще джуниор. Можешь показать на проекте в гитхабе, за какие места тебя трогало?

30 апр, 20:35 #331 #982624

>>982563
Помню помню, этот язык с нескушными идентификаторами вроде viewt@ype и с различным цветовым кодированием разных категорий кода.

Даже порывался учить, но по модулю ебанутости автора не дотянул.

30 апр, 23:28 #332 #982675

>>982424
Каночные хипстеры пишут на Ruby и Java(coffe)script в Sublime Text/VIM.

Ответы982681982732

30 апр, 23:43 #333 #982681

>>982675
Каноничные - да, но надо же орать, что не хипстор и что твоя технологие неебаться инжынерная и ты прямо байтики ксоришь и у тебя все на указателях, естественно, умных, а еще иммутабельность и вообще.

1 мая, 02:13 #334 #982732

>>982675
Я скажу больше, у каждого свои представления о каноничных хипстерах. Границы определяемого расширяются с изменением определяющего. Вот у нас в компании, уж настолько настолько хипстерский народ (разной временной градации от протохипстеров с зеркалками до постхипстеров с подворотами итп, а все туда же - нет, да всплывет жалоба на хипстеров. Хоть ультрафильтр заводи.

48 Кб, 1699x484

6 мая, 16:46 #335 #985871

Не могу понять, как вернуть введенный с клавиатуры код в срез и вернуть его из функции mesinput. Лучший ли это способ вообще - возвращать ввод с клавиатуры в качестве среза, чтобы потом отправить его через tcp? Код пикрелейтед.

Ответы986142986286

3,6 Мб, webm, 480x360

7 мая, 00:07 #336 #986142

>>985871
>Этот код
Пиздец, я думал раст лучшая замена крестам, а тут та-же ебанная лапша.

Ответы986144

7 мая, 00:13 #337 #986144

>>986142
Этой какой-то цпп с синтаксисом раста. С кучей ошибок и, как результат, даже не скомпилируется.

Ответы986286

20 Кб, 835x107

7 мая, 13:25 #338 #986286

>>986144
>>985871
Додик, ошибки читай хоть.

Ответы986460

7 мая, 18:44 #339 #986460

>>986286
Это новый стиль жеманного, постить код в скриншоте и не реагировать на ответы, выше посмотри.

У нас тут вместо треда какая-то игра в мафию, только вместо мафии жеманный, лул.

Ответы986607986667

7 мая, 23:28 #340 #986603

>>963997
>>964005
Нахрена вам IDE, долбоёбы? Код пишут с помощью рук и мозга в первую очередь. Если проект насколько запутан, что в нём нельзя ориентироваться без IDE - это говнокод, который надо выкинуть нахуй. Собирать нужно в консоли, текстовых редакторов с подсветкой для раста предостаточно, во многих даже автокомплит и линтинг есть.

Ответы986606986607

7 мая, 23:37 #341 #986606

>>986603
Ебать жеманного прорвало.
У говна иде того же качества, что сейчас у раста. а плагин для жидеи кстате лучше гогланда, или как минимум его билда месячной давности

7 мая, 23:42 #342 #986607

>>986460
>и не реагировать на ответы
Такие только со своим ЭКСПЕРТНЫМ мнением вкатываются, и с хуями в ротешнике молча выкатываются.

>>986603
>с помощью рук и мозга
Как ты тогда его пишешь, если не обладаешь ни тем ни другим.

Ответы986608

7 мая, 23:52 #343 #986608

>>986607
>Уряря толстую жопку порвало

Ответы986609

5 Кб, 400x314

7 мая, 23:58 #344 #986609

>>986608

Ответы986611

8 мая, 00:00 #345 #986611

>>986609
Типа маскот гау 2.0 — сусли-циклоп?
Тонка

8 мая, 03:25 #346 #986667

>>986460
Да тут пол-треда, если не больше - "жеманные". Как мимо пройти и не зайти, поглумиться.

10 мая, 21:10 #347 #988399

rust. sql embedded. sqlite. what?

Ответы988404

10 мая, 21:20 #348 #988404

>>988399
Ты долбич?

12 мая, 13:36 #349 #989218

Кто-нибудь может пояснить за обработку ошибок в Rust? Пытаюсь я к примеру открыть файл:

let mut p = File::open("dat.txt");

И пытаюсь обработать результат, чтобы при ошибке программа не прекращалась, а началась заново.

match p {
Ok(pa) => println!("{:?}",pa),
Err(_) => main(),
}

И дальше я пытаюсь открыть файл и прочесть его

let mut buffer = String::new();
p.read_to_string(& mut buffer).expect("No reading");

Но компилятор пишет:
main.rs:34:10: 34:38 error: no method named `read_to_string` found for type `core::result::Result<std::fs::File, std::io::error::Error>` in the current scope

Вопрос: match каким-либо образом преобразует тип переменной p? Если использовать unwrap(), то такой ошибки не возникает. Или я ошибся с самим применением match? В офф. документации, не объяснен доступным языком этот момент.

Ответы989233989339

12 мая, 14:13 #350 #989233

>>989218
Читай файл в успешной ветке матча, и замени p на pa, тебе же компилятор прямо написал.

Ответы989321

12 мая, 16:12 #351 #989321

>>989233
match p {
Ok(pa) => pa.read_to_string(& mut buffer),
Err(_) => main(),
}
Теперь такая ошибка:
main.rs:27:2: 30:3 error: match arms have incompatible types:
Насколько я понял match при этом должен возвращать одинаковые по типу значения, но как это сделать, я не знаю.

Ответы989712

12 мая, 16:35 #352 #989339

>>989218
https://play.rust-lang.org/?gist=a61a2ab8d483ed120b9ff4bd6298f885&version=stable&backtrace=1

Ответы989345

12 мая, 16:42 #353 #989345

>>989339
Спасибо за помощь.

Ответы989396

12 мая, 18:35 #354 #989396

>>989345
https://play.rust-lang.org/?gist=78cdf63a1d850b61ea2a5c909547c065&version=stable&backtrace=1 match версия. Ветки match обрабатываются без проблем, потому что обе возвращают нихуя.

https://doc.rust-lang.org/book/if-let.html тут подробнее про if let

Ответы989494989496

12 мая, 20:01 #355 #989494

>>989396
Так даже лучше. Спасибо, что разъяснил.

12 мая, 20:07 #356 #989496

>>989396
>thread 'main' has overflowed its stack
>fatal runtime error: stack overflow
Мало того что код говняный (из-за ублюдского синтаксиста, твоей вины нет), так ещё падучий.

Ответы989716

13 мая, 00:03 #357 #989709

Добрейший вечерочек, уважаемые. Как там у вас с IDE в 2017 году?

Ответы989714989722

13 мая, 00:07 #358 #989712

>>989321
> Err(_) => main()
Ты что больной?
Запускай свою хуйню в цикле и выходи в ветке ok, а в альтернативной выводи сообщение об ошибке.
Иначе ты просто уйдешь в рекурсию. И вообще, какой придурок может рекурсивно вызывать main, сколько живу а такого наверное не видел.

Ответы990074

13 мая, 00:08 #359 #989714

>>989709
Юзаю плагин для eclipse, все вполне нормально автокомплитится.

13 мая, 00:09 #360 #989716

>>989496
>челик пытается открыть файл которого нет
>потом вызывает эту функцию (причём точку взода) бесконечно
Ору бля.
В говне такое тоже не сложно делается, расслабься.

Ответы989810

13 мая, 00:13 #361 #989722

>>989709
Плагин для идеи уже в отличном состоянии — всё, от рефакторингов до автокомплита и линтинга с отслеживанием лайфтаймов уже есть (только вложенные макросы парсить не умеет), скоро даже дебуггер даже будет.
Алсо, есть RLS если не хочешь жаваподелий, с примерно тем же функционалом (но вообще не работает с макросами и анализов, нужно поебаться с настройкой и у линтера явно меньше).

13 мая, 02:17 #362 #989810

>>989716
>В говне такое тоже не сложно делается, расслабься.
Такое можно сделать почти на любом языке, нужны только кривые руки, ничего более.

13 мая, 19:51 #363 #990074

>>989712
Я знаю, что использовать рекурсивный вызов функции является злом, но никак не могу понять как сделать так, чтобы при неверном вводе предлагалось ввести текст заново, а не делать panic.

Ответы990116990136

13 мая, 20:58 #364 #990116

>>990074
https://doc.rust-lang.org/book/guessing-game.html самый древний туториал по расту как раз это и объясняет.

13 мая, 22:16 #365 #990136

>>990074
Я же вроде написал - делай это в цикле и выходи с него при успехе.

281 Кб, 1312x585

18 мая, 21:54 #366 #992960

Помогите с TOML. Пытаюсь выполнить cargo build и выдает couldn`t parse as TOML. Насколько я понял файл TOML сгенерирован самим cargo для одной из зависимостей. В чем проблема? В cargo самой программы в [dependencies] только строка hyper="*".

Ответы992973992991993001

18 мая, 22:11 #367 #992973

>>992960
Да нет, долбоёб, он твоим больным мозгом генерируется. Сначала ты стёк переполнял рекурсией входной точки, теперь в заголовки конфигово томла пихашь куски кода.

Ответы992978

18 мая, 22:18 #368 #992978

>>992973
Шизик! Шизик!

Ответы992998

18 мая, 22:42 #369 #992990

>>957553
иди нахуй со своим NT-говном и миниксом с овердохуя сисколлов. в редоксе ровно 31 сисколла, там даже сокеты через open создаются, как файлы. больше не нужно.

18 мая, 22:44 #370 #992991

>>992960
rm -rf ~/.cargo/registry сделай

Ответы993001

18 мая, 22:50 #371 #992998

>>992978
Ну так это ты и есть, лол.
Минутка грамотности: генерируются .lock файлы, а не томлы, ti obosralsya.

18 мая, 22:52 #372 #993001

>>992960
>>992991
так стоп падажи ебана, ты что либу time пытаешься установить?

Ответы993197

19 мая, 10:46 #373 #993197

>>993001
Да

Ответы993323993449

19 мая, 15:46 #374 #993323

>>993197
И зачем нам помогать тебе заниматься фистингом?

72 Кб, 768x596

19 мая, 19:49 #375 #993449

>>993197
зависимости на библиотеки нужно добавлять в Cargo.toml своего проекта, cargo install ставит некоторые програмки типа rustfmt и плагинов под cargo, но не либы

19 мая, 20:04 #376 #993454

>>956909 (OP)
Друзья, раст мертв при рождении , переходите лучше в Golang тред, пока не поздно!

Ответы993486993872

19 мая, 21:09 #377 #993486

>>993454
golang
>gc
>дженериков нет
>мутексы не связаны с данными, которые они охраняют
>проброс ошибок по стеку анальная мука
>неюзабелен для написания драйверов
>нет паттерн матчинга
>система типов какая-то параша
>компилятор не может доказать отсутствие одновременного доступа к не-атомным данным
>код сложнее хеловорлда на голанге похож на вырвиглазный кал
>...
идеальный язык для вебмакак. что в голанге хорошего, это то, что он простой и что в нем искоробки forkjoin

19 мая, 21:48 #378 #993505

Не так уж много языков со столь уродским синтаксисом. Такой-то перл 21 века.

Ответы993598

20 мая, 00:53 #379 #993598

>>993505
Ваше мнение очень важно для нас

5 Кб, 400x314

20 мая, 18:21 #380 #993872

>>993454

21 мая, 17:45 #381 #994322

От раста будет профит, если мне хочется ради фана васянить свою 2D rpg на нём, а не на сях?

Ответы994326

21 мая, 17:49 #382 #994326

>>994322
На питоне или жсе нахуячь. В расте ты будешь трахаться с заимствованием и всякой низкоуровенной отрисовкой (которая очень нужна в твоей 2д залупе). а вообще, иди ешь торты.

Ответы994340

80 Кб, 1920x1080

21 мая, 18:08 #383 #994340

>>994326
>В расте ты будешь трахаться с заимствованием и всякой низкоуровенной отрисовкой
То, что мне и нужно.
HelloWorld готов, теперь можно и изъёбствами языка обмазаться.

Ответы994357

21 мая, 18:40 #384 #994357

>>994340
пишу в свободное время игрушку поигратся на вулкане на расте, раст таки заебись, советую

22 мая, 00:17 #385 #994514

Аноны, кто учит раст, радуйтесь, у вас есть cargo - сама охуенная система сборки и управления зависимостями, сеьёзно. Я тут вкатываюсь в кложу, язык для своих целей ящитаю годный, писать на нём приятно, но вот сборка это ад, по сравнению с растаманским cargo и даже питонячьим setuptools. У меня всё.

Ответы994516994593994603994656

22 мая, 00:25 #386 #994516

>>994514
gradle для кого сделали?

Ответы994656

22 мая, 05:33 #387 #994593

>>994514
И чем он лучше lein?

22 мая, 08:10 #388 #994603

>>994514
На большинстве статически типизированых языков сборка это ад. Либо у тебя длиннющие и неудобные makefile.am, либо cmakefiles.txt, где забываешь уже через полгода что для чего инклудил. В мире java это хотя бы имеет более человеческое лицо, спасибо jetbrains за труды.

Ответы994656994687

22 мая, 11:21 #389 #994656

>>994516
Жява-энтерпрайз-оверинжиниред-говнище.

>>994514
Ты как нибудь с окамлом поиграйся. Поверь, это пожалуй самый ахуительно собирающийся язык.

>>994603
При чём тут статика-то, долбоёб? Это у всех компилируемых языков с легасиговном вместо системы сборки такая проблема.

В тех же плюсах (священное поприще легасиговна) дохуя билд систем вроде Qbs и meson, которые по большому счёту не сильно-то и уступают cargo.

Ответы994688

22 мая, 13:17 #390 #994687

>>994603
Ну я пока для упражнений из K&R накатал скрипт на петоне который генерирует ниндзя-файл. Очень удобно и прозрачно, вообще в последнее время часто вместо систем сборки использую самописные скрипты, потому что мне нравится полностью контроллировать процесс сборки. Вот в leiningen я не чувствую что я вообще что-то контроллирую, какая-то непонятная медленная не работающая так как мне нужно магия. Попробую в Boot вкатиться, говорят, он получше.

22 мая, 13:21 #391 #994688

>>994656
Вот огромная проблема всех этих крестовых билд-систем в том, что нет какого-то единого репозитория пакетов, как в расте. Так что или клади зависимости в git submodules, или довольствуйся теми пакетами, которые есть в репозитории используемой билд-системы, или сам упаковывай пакеты, или я не знаю что ещё. В расте же сделали сразу по-человечески, и это охуенно.

Ответы994712

22 мая, 14:08 #392 #994712

>>994688
Дык я не спорю, я это говорил к тому, что жто не статики проблема.
Есть же кроме этого тягатели зависимостей с гитхаба по тегам и версиям.
Скоро ещё мб осилят подход как в том же гредле — указывать источники зависимостей.

26 мая, 06:02 #393 #996456

Бомбану во имя Аллаха.

3 июня, 01:44 #394 #1000296

Есть способ получше найти самое большое число из тех же цифр?

let number: u64 = 9875543221;
let mut chars = number.to_string().chars().collect::<Vec<char>>();
chars.sort_by(|a, b| b.cmp(a));
chars.into_iter().collect::<String>().parse::<u64>().unwrap()

Ответы1000343

3 июня, 10:39 #395 #1000343

>>1000296
Определенно есть способ быстрее.

Ты критерий лучшести задай.

5 Кб, 527x47

6 июня, 00:04 #396 #1001734

Что это за хрень получается? Компилятор говорил, что для &&{integer} нет оператора ==, добавил две звёздочки - работает. Ничего не понял.

Ответы10019031002203

6 июня, 12:27 #397 #1001903

>>1001734
Мудило с картинками, ты опять на связь выходишь?
>что для &&{integer} нет оператора ==, добавил две звёздочки - работает
Наверно потому что звездочка перед идентификатором означает разыменование указателя/ссылки.

6 июня, 20:43 #398 #1002203

>>1001734
https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.filter

7 июня, 19:21 #399 #1002746

Компилятор раста написан на С++?
Фу, блять, какой позор.

Ответы10027961003231

7 июня, 20:23 #400 #1002796

>>1002746
ллвм на цпп. растц на расте

8 июня, 18:34 #401 #1003231

>>1002746
Первая версия была на окамле, потом все на нем самом же.

Ответы1003334

8 июня, 22:09 #402 #1003334

>>1003231
Зачем тогда раст требует установленного MSVC++ ?

Ответы1003376

9 июня, 00:27 #403 #1003376

>>1003334
Потому что ты - спермовор у спермы свой особенный и единственный линкер и набор библиотек (всякая символы для системных вызовов, динамические библиотеки и прочая хуйня без которой ты буквально хэловорд не соберешь).

Он собственно требуется всеми известными мне компиляторами (врде д, пони, окамла). Разве что го-велосипедисты написали свой, который срет бинарями хэловордов по 10 мб на которых любой дизасемблер падает с ООМ.

Ответы10034361003502

9 июня, 09:19 #404 #1003436

>>1003376
>го-велосипедисты написали свой
Вот это мне нравится.

Ответы1003502

9 июня, 12:09 #405 #1003502

>>1003436
>>1003376
>который срёт бинарями хэловордов по 10 мб
>и хуй тебе а не нормальный dead code elimination, будем бить по рукам за неиспользованные импорты
>хуй тебе а не link time optimization, profile guided optimization, межпроцедурный анализ и всё остальное, прямо или косвенно требующее поддержки линкера
Да мне это тоже нравится, братишка.

Ответы1004970

12 июня, 03:19 #406 #1004765

Поржал с вас.

Мимо эйфеле-господин

12 июня, 13:52 #407 #1004857

Поржал с эйфеле-го-раст борщехлёбов.
Мимо-цпп-боярен

12 июня, 17:58 #408 #1004970

>>1003502
Лучше жрать говно, чем обмазываться сишным дерьмом.

Ответы1005115

12 июня, 22:37 #409 #1005115

>>1004970
Суть в том, что сишный линкер как раз таки заебись.

Ответы1005400

165 Кб, 512x512

13 июня, 17:25 #410 #1005400

>>1005115
>сишный линкер как раз таки заебись

Ответы1005492

13 июня, 23:31 #411 #1005490

>>971909
snake_case, CamelCase, всё в куче, что за пиздец.

Ответы10057531005760

sage 13 июня, 23:33 #412 #1005492

>>1005400
Ну да, не то что в расте. Можно пельмени сварить там, или чай заварить, пока всё линукется - разработчик никогда не останется голодным

Ответы1005753

14 июня, 13:57 #413 #1005753

>>1005492
Да в настах и сих дело не в линкере. И всякие gccgo от наличия нормального компоновщика е сильно проседает в скорости компиляции.

>>1005490
snake_case для имен функций и переменных и CamelCase для типов и структур — самое лучшее сочетание евер.

Ответы1005760

14 июня, 14:26 #414 #1005760

>>1005753
>И всякие gccgo от наличия нормального компоновщика е сильно проседает в скорости компиляции.
Ты бы ещё рассказал ему что си имеет текстовый препроцессор, каждый раз заново парсит все инклуды и просто не укладывается в какой нибудь LL(1) с лукапом в 1 символ как его говно, а расту для чека каждого лайфтайма нужно обходить графы всех затронутых функций и объектов для каждой хуитки и заниматься прочим статическим анализом.

>>1005490
Тем временем, в говне из модуля функции, структуры и (!) переменные (!) импортируются по регистру первой, сука, буквы. Повар, какого хуя ты вообще рот открываешь?

18 июня, 20:27 #415 #1008074

Бляя, растоблядки, объясните мне, в чём разница между immutable variable и const?
Всякие пидоры на стэковерфлоу пишут "НУ ТИП ЭТ ТЫ ПРИВЫК К С++!!!))) В РАСТЕ ВСЁ ПО-ДРУГОМУ!))) ПЕРЕМЕННЫЕ ТИПА НЕ МЕНЯЮТСЯ))"
Какого хуя, если variable - переводится как ПЕРЕМЕННАЯ, и дословно обозначает какие-то изменения во времени. Какого хуя всё так тупо?

Ответы100810810081281016135

18 июня, 21:36 #416 #1008108

>>1008074
Если бы Страуструп стал женщиной и его отымел Милнер, то вместо C++ появился бы Rust.
В общем, я что сказать хотел... Если тебе нужен ML, то юзай ML. Если нужен C++, то юзай D.

Ответы1008130

18 июня, 22:32 #417 #1008128

>>1008074
const в расте — это как дефайн в сях, просто подставляемое значение.
И var в русте нет, здесь только let, шо как бы намекает дебилам как ты.

18 июня, 22:35 #418 #1008130

>>1008108
>Если тебе нужен ML, то юзай ML. Если нужен C++, то юзай D.
Все ML-и дохлые, к сожалению, даже окамл, который хз сколько лет развивают. Он сейчас только с точки зрения научного интереса тыканья палочкой.

Д — я надеюсь когда нибудь его зотя бы до состояния раста допилят, языку десять лет а он сырой как твоя мать на концерте Маликова.

Ответы1008134

18 июня, 22:45 #419 #1008134

>>1008130
>Все ML-и дохлые
PolyML недавно релизнулся. Правда, Юникод так и не завезли.

Ответы10081661008169

19 июня, 00:18 #420 #1008166

>>1008134
Он релизнулся раньше чем ты родился, так с того времни никуда не сдвинувшись с SML 97, куда там.

Если хочется ML-я — тут есть окамл который хотя бы развивается, и куча трупов.

19 июня, 00:19 #421 #1008169

>>1008134
Ну кроме окамла ещё F#, но там больше шарпа в смысле парадигмы (хотя сексуальные хачкель операторы вида <><[][——€•^`>> на месте).

4 июля, 13:28 #422 #1016135

>>1008074
> variable - переводится как ПЕРЕМЕННАЯ, и дословно обозначает какие-то изменения во времени
> во времени

Распространённое заблуждение. Слово "переменная" пришло из математики, где никакого изменения во времени оно не означает. Оно означает что значение может меняться в зависимости от исходных данных (то есть, по-нашему, от запуска к запуску). А вот "константа" в математике - это то, что не меняется вообще никогда, с любыми исходными данными. Собственно, const в Rust это как раз значение известное на этапе компиляции, тогда как значение переменной вычисляется уже в рантайме.

Ответы1016139

4 июля, 13:36 #423 #1016139

>>1016135
Вот да. А меняться во времени это уже к реактивному программированию.

7 июля, 00:16 #424 #1017796

Пока хуйтеры срут, оракл выкатил новую залупу на расте в опенсорс.

Ответы1017832

7 июля, 01:12 #425 #1017832

>>1017796
Что конкретно?

Ответы1017854

7 июля, 02:56 #426 #1017854

>>1017832
https://blogs.oracle.com/developers/three-new-open-source-container-utilities

Ответы1018061

7 июля, 15:46 #427 #1018061

>>1017854
Нормально.

8 июля, 04:11 #428 #1018493

>>957819
Но как же, господа, ведь математически докококазана безопасность.

8 июля, 04:14 #429 #1018496

>>972459
У тебя какой-то галлерный руснявый тырпрайз.

Ответы1019277

9 июля, 13:41 #430 #1019277

>>1018496
>У тебя какой-то галлерный руснявый тырпрайз.
Нет никакого другого тырпрайза.

Ты бы пообщался с тырпрайз работниками из штатов.
Поголовно всем на все посрать. Свиноматки в декрете работающие(системным аналитоком) из дома и нехреа непонимающие в происходящем.
Жрущие во время митинга по скайпу и успокаивающие там же ребенка.
Индусы (настоящие американцы).
И прочие прелести.

Здоровому человеку в этом всем говне делать нечего.

Ответы1019384

9 июля, 13:51 #431 #1019290

>>958602
Можно поместить себя в клетку и так прятаться от собаки, а можно собаку поместить в клетку.

9 июля, 14:39 #432 #1019384

>>1019277
Не знаю, занимаемся промышленной разработкой небольшой командой и ус не дуем. Решения выбираем прагматично, код пишем рационально, не полагаясь на карго-макакинг.

Ответы1020115

10 июля, 04:35 #433 #1020115

>>1019384
>занимаемся промышленной разработкой небольшой командой
И причем тут энтерпрайз?

>занимаемся
Доход поровну делите?

Ответы1020240

10 июля, 11:40 #434 #1020240

>>1020115
Тому що предназначение софта - аэрокосмическая промышленность.

Ни.

Ответы10204351020631

10 июля, 16:00 #435 #1020435

>>1020240

10 июля, 19:03 #436 #1020631

>>1020240
>Тому що
Свиней давно в космос запускать начали?

Ответы1020638

10 июля, 19:09 #437 #1020638

>>1020631
Не, я конечно допускал, что две буквы могут к подрыву привести, но всё же, рассматривал больше как теоретическую возможность, всё же /зк.

Приятно удивлён

10 июля, 23:11 #438 #1020838

>>956931
>пизже
>GC
обкекался

11 июля, 03:11 #439 #1020983

>>961111
Не совсем, Rust объединяет в себе положительные черты плюсов (контроль) и джавы (безопасность). Как бы Rust не старался, плюсы еще долгое время будут жить, а вот Джава со своей виртуальной машиной и огромной прожорливостью, возможно, когда-то пойдет нахуй. Но, на данный момент, язык дико молодой и, как следствие, сырой.

Ответы102122510216321021847

11 июля, 15:15 #440 #1021225

>>1020983
Раст уже поржавел.

Ответы1021466

11 июля, 20:00 #441 #1021466

>>1021225
Ты чё сука ты чё. Раст популярнее и популярнее с каждым днем: вот новость недавняя, даже оракл выпустил приблуды для изолированных контейнеров:

https://github.com/oracle/crashcart
https://github.com/oracle/railcar

Глянуть в код, увидеть - та еще параша, а я зык выбран из соображений - поиграться

11 июля, 22:42 #442 #1021632

>>1020983
>Rust объединяет в себе положительные черты плюсов (контроль) и джавы (безопасность)
Не осилил лайфтаймы. Есть по ним вменяемый тутор?

Ответы1022032

12 июля, 12:46 #443 #1021847

>>1020983
>а вот Джава со своей виртуальной машиной и огромной прожорливостью, возможно, когда-то пойдет нахуй

Давно бы уже пошла, если это было бы проблемой.

12 июля, 18:47 #444 #1022032

>>1021632
Есть. Называется практика и ебля в жопу с компилером.

14 июля, 00:00 #445 #1024575

Есть такой теоретический вопрос. Посмотрел стандартную библиотеку раста, а там нет даже либ для http. Вопрос, как реализуют такие библиотеки, в теории. Используют какие то либы операционной системы, или как то по другому?

Ответы1024577

14 июля, 00:04 #446 #1024577

>>1024575
Говорят системе открыть сокет пишут туда

14 июля, 09:44 #447 #1024721

Заебала долгая компиляция. Как я понял, в расте нет аналогов объектных файлов из цепепе, когда вношу любое изменение - проект пересобирается полностью. У меня 17к строк в проекте (большая часть - сгенированные биндинги opengl), компиляция занимает секунд 15.
Похоже, придется перекатываться на кресты.

Ответы1024771102518210353371035358

14 июля, 11:24 #448 #1024771

>>1024721
Охуеть теперь. Я и по 2 минуты ждал постоянно потому что в движке было много объектых файлов и пека слабый.

14 июля, 22:18 #449 #1025182

>>1024721
Че ты понял? Че ты понял сука,тебе вьебать, а?

Ответы1025507

112 Кб, 200x440

15 июля, 19:29 #450 #1025507

>>1025182
Ржавый?

28 июля, 01:08 #451 #1033011

>>976573
Фп-кун, ты еще тут?

Ответы1035334

30 июля, 09:11 #452 #1034290

Чому на расте так мало проектов пилятся? С одной стороны он второй год подряд является самым "любимым" языком по версии StackOverflow, а с другой стороны работы на нём нет и положительных тенденций нет

Ответы103429110344391034753

30 июля, 09:34 #453 #1034291

>>1034290
Очень недружелюбный язык для вкатывания, поэтому просто нет тонны всяких "бот для телеграма на %языкнэйм%"

30 июля, 17:48 #454 #1034439

>>1034290
>С одной стороны он второй год подряд является самым "любимым" языком по версии StackOverflow
Это значит только то, что он вызывает больше всего вопросов.

>так мало проектов
Завезли бы корутины.

Ответы1034577

30 июля, 21:17 #455 #1034577

>>1034439
> Это значит только то, что он вызывает больше всего вопросов.
Нет, это они опрос проводили. https://insights.stackoverflow.com/survey/2017

> Завезли бы корутины.
Стекфул корутин, как в Го, не-бу-дет. Копают в сторону стеклесс и асунк/ашаит.

Ответы1034748

31 июля, 07:42 #456 #1034748

>>1034577
>Нет, это они опрос проводили.
Ах лол.
Любимый в смысле на нем не программируют, но что-то слышали.

Ответы1034766

31 июля, 08:16 #457 #1034753

>>1034290
Каких это проектов там мало? Каждый Вася Жопин не пилит свой веб фреймворк и бот для телеграма умеющие нихуя?

Ответы1034757

31 июля, 08:31 #458 #1034757

>>1034753
Как раз веб фреймворки по-моему и пилят. Не совсем понимаю зачем они нужны.

Ответы1035050

31 июля, 09:42 #459 #1034766

>>1034748
Болезный?
> For the second year in a row, Rust was the most loved programming language. This means that proportionally, more developers wanted to continue working with it than any other language.

Ответы1035038

31 июля, 19:46 #460 #1035038

>>1034766
>Болезный?
>> For the second year in a row, Rust was the most loved programming language. This means that proportionally, more developers wanted to continue working with it than any other language.

Ну, это замечательно.
Учитывая, что в категории Programming Languages в том же опросе, раста нет вообще.
То есть им не пользуются от слова совсем.
А кучка шизиков на нем кодящих хочет кодить и дальше, что как бы закономерно.

31 июля, 20:31 #461 #1035050

>>1034757
Нативных альтернатив нет, но бизнесу всё равно выгоднее использовать асп.нет, а большинству и пхп сойдёт, так что задач нет.

1 авг, 04:41 #462 #1035334

>>1033011
Давно не заходил, теперь тут

1 авг, 06:02 #463 #1035337

>>1024721
> компиляция занимает секунд 15.
Так тебе программы писать или лабу2 конпелировать?
мимо скала-боярин

Ответы10353551035947

1 авг, 08:41 #464 #1035355

>>1035337
Напейсание лаб ныне кличут TDD.

1 авг, 09:10 #465 #1035358

>>1024721
В анус себе перекатись, блять, начинают кодить на Visual Studio и начинаются ебаться в жопу и думать, что компилятор сам по себе выполняет функционал makefile

Ответы1035947

2 авг, 10:10 #466 #1035947

>>1035337
Причем тут лаба, долбоёб?
На крестах есть инкрементальная сборка, крупный проект первый раз может собираться несколько минут, а потом, когда вносишь изменение в несколько файлов, проект пересобирается уже за пару секунд, т.к. собираются только затронутые объектные файлы. А в расте такого нет, если у тебя в проекте 1000 файлов, а ты изменил 2, при сборке будет собираться полностью.
>>1035358
Какая visual studio, какие makefile, ты чем там объебался?
Я так-то под линуксом сижу и юзаю cmake/clang.

Ответы10359581036282

2 авг, 10:29 #467 #1035958

>>1035947
Да, действительно ебу дал, на rust нет инкрементной сборки.

Охуеть, это какой-нибудь проект уровня хрома после каждого патча целый день собирать? Как жить-то?

Ответы1036281

2 авг, 20:07 #468 #1036281

>>1035958
Делить проект на крейты и жить как белый человек с модульной архитектурой кода, а не заниматься напейсанием индусских монолитных кусков говна на миллионы строк, как это помогли делать миллионам макакусов K&R. Открой исходники серво и посмотри как это делается.

Вообще, ты даже до гугла похоже не добрался — там есть инкрементальная компиляция https://internals.rust-lang.org/t/incremental-compilation-beta/4721 , другое дело что это не плюсы в которых её 2 десятилетия пейсали (и которая точно так же как раньше не работает при изменении предкомпилированных или просто везде используемых заголовков), и пока по умолчанию она не включается.

2 авг, 20:13 #469 #1036282

>>1035947
>Я так-то под линуксом сижу и юзаю cmake/clang.
У тебя там цмейк сам собирать научился, без бэкэнда, поешавший?
>под линуксом
>clang
Вот с этого особо орнул. Ты там как, пользуешься сборками трехлетней давности, или сам собираешь? Я вот представляю уже, как ты после каждого релиза тащишь себе релизную ветку и билдишь ллвм со шлангом по 12 часов с ИНКРЕМЕНТАЛЬНОЙ компеляцией, и ору

Ответы1036538

3 авг, 04:47 #470 #1036538

>>1036282
Поцчему трехлетней давности?
мимо clang-5.0-господин под дебианом

5 авг, 12:56 #471 #1038409

Платиновый вопрос. Что за лафтаймы такие?

Ответы1038418

5 авг, 13:16 #472 #1038418

>>1038409
Платиновый ответ: доку открой.

Ответы1038496

5 авг, 14:52 #473 #1038496

>>1038418
Сложно.

9 авг, 23:39 #474 #1041667

>>977091
А как без системы управления пакетами? Это показатель современного языка. Без этого, это какой-то каменный век.

9 авг, 23:42 #475 #1041669

>>956909 (OP)
>как думаете, он сможет вытеснить жаву? Почему?

А нахрена? Rust он крут. Я не думаю, что нужно ставить вопрос именно так. Java все равно будет жить ещё долго, как и сраное php. Ведь его куча говнокода в Ынтерпрайзе. Ну и пусть варятся в собственном соку.

Ответы10418131043546

86 Кб, 326x413

10 авг, 10:52 #476 #1041813

>>1041669
Да, Rust ОСОБЕННЫЙ.

Как и ты, судя по тому, что и как пишешь.

13 авг, 08:00 #477 #1043540

Ананасы кто-нибудь работает над ии?
Стоит подучивать что-нибудь по этому параллельно с веб макакетством или все тщетно, если конкретно этим не занимаешься?

Ответы1043574

sage 13 авг, 09:33 #478 #1043546

>>1041669
t.безработный студент

13 авг, 11:06 #479 #1043574

>>1043540
Все работают над ИИ.

19 авг, 17:59 #480 #1046993

1. ООП в расте не нужен
2. Он вытеснит не джаву, а C++

Ответы10469941047013

19 авг, 18:04 #481 #1046994

>>1046993
Но там ведь есть своеобразное ООП

Ответы1046996

19 авг, 18:06 #482 #1046996

>>1046994
> своеобразное ООП

Потому что это не ООП, люди подгоняют возможности Rust под тугое воображение ооп-ретрограда.

sage 19 авг, 18:56 #483 #1047013

>>1046993
1) Нужен
2) Вытеснит разве что из своей щеки

Ответы1047113

19 авг, 23:53 #484 #1047113

>>1047013
Что ты подразумеваешь под ООП? Если первым словом в ответе на этот вопрос будет "наследование", то сразу иди нахуй.

Ответы10475411047561

20 авг, 19:29 #485 #1047541

>>1047113
Ну ты и лох, какое наследование, все знают что ООП - это когда можно методы через точечку вызывать и ИДЕ тебе автодополнение предлагает.

Ответы1047779

20 авг, 19:54 #486 #1047561

>>1047113
Абстрактную фабрику абстрактных фабрик энтерпрайз фасолин.

21 авг, 06:14 #487 #1047779

>>1047541
Ну вообще говоря так и есть. ООП это всего лишь паттерн управления стейтом, когда стейт лежит рядом с функциями для их обработки в одном контейнере, а программа состоит из кучи таких контейнеров.

Ответы10478291049417

21 авг, 11:25 #488 #1047829

>>1047779
> ООП это всего лишь паттерн управления стейтом
Нет, ООП и императивное программирование это ортогональные понятия.

Ответы10478551047896

21 авг, 13:21 #489 #1047855

>>1047829
Любишь смоллтолк?

Ответы1047909

21 авг, 14:46 #490 #1047896

>>1047829
Тогда что же такое ООП? И как оно соотносится с императивщиной и фп?

Ответы104790910480661048620

21 авг, 15:07 #491 #1047909

>>1047855
Незнаком с ним. Да и моё утверждение верно для любого мейнстримного языка, будь то Java или C#.

>>1047896
Замени в своей фразе "стейт" на "данные" и получишь более-менее точное определение.
На практике это означает, что если у тебя в Java все поля - final, и ты присваиваешь их только в конструкторе, то это всё еще ООП, несмотря на отсутствие стейта.

Ответы10479721048073

21 авг, 17:15 #492 #1047972

>>1047909
> На практике это означает, что если у тебя в Java все поля - final, и ты присваиваешь их только в конструкторе, то это всё еще ООП, несмотря на отсутствие стейта

Я что-то тебя не понял.

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

Мимопрохожий.

Ответы1048019

21 авг, 17:50 #493 #1048019

>>1047972
Иммутабельность.

Ответы1048030

21 авг, 17:59 #494 #1048030

>>1048019

ок, стейт ≠ иммутабельность, а ооп с фп имеют больше одной точки пересечения.

21 авг, 19:15 #495 #1048066

>>1047896
>Тогда что же такое ООП? И как оно соотносится с императивщиной и фп?
ООП это подход при котором отправитель сообщения и адресат никак несвязанны и независят друг от друга, а оба зависят от сообщения.
Суть в переносе связи между модулями на сообщения.
В c# это происходит через интерфейсы.
В с++ через абстрактные классы. (система типов плюсов/джавы превращают ООП в скотское безумие)

21 авг, 19:40 #496 #1048073

>>1047909
стейт === данные

Ответы1048088

1,5 Мб, 356x200

21 авг, 20:04 #497 #1048088

>>1048073
> стейт === данные

22 авг, 13:00 #498 #1048620

>>1047896
ООП - НЕ парадигма программирования. Парадигм программирования всего три. Подробнее здесь: http://wiki.c2.com/?ThereAreExactlyThreeParadigms.

То что подразумевают под ООП в современном мейнстримном виде (как в плюсах, джаве, питоне и т.д.) - не более чем тривиальная надстройка над старыми добрыми структурами, процедурами и указателями на процедуры. Об этом Вирт, Кей и другие говорили еще в 80-е, наверное.

ООП - определенный способ представления программы в голове, а следовательно и способ её структурирования в тексте. Именно его имел в виду Кей, в нем, как ни странно, суть Actor Model, а значит Эрланга и Акки, и во многом именно о нем пишет небезызвестный Егор Бугаенко (http://www.yegor256.com/tag/oop.html) с чьими тезисами можно быть более или менее согласным, но как минимум познакомиться стоит. Можно сказать что такой подход это гуманитарщина, и быть при этом правым, но не нужно забывать что программы в первую очередь пишутся для людей, а значит способ их изложения и понимания имеет значение. Насколько легко представлять программу как множество объектов, взаимодействующих друг с другом - другой вопрос. Возможно другие способы эффективнее, возможно это вообще индивидуально.

По моему опыту ООП это способ структурирования именно императивных программ. Дело в том что я видел ОО-код на С, видел процедурный код на питоне с джавой, но никогда не видел ОО-ориентрованых програм на функциональных языках. Наверное это из-за того что объекты почти всегда инкапсулируют какое-то мутабельное состояние, иначе они превращаются просто в (параметризируемые) модули, а состояние в ФЯ обычно скрывается и обрабатывается не так, как и императивных.

Ответы1048624104941210494141049419

22 авг, 13:19 #499 #1048624

>>1048620

Боб Мартин залогинься.

23 авг, 13:49 #500 #1049412

>>1048620
>ООП - определенный способ представления программы в голове, а следовательно и способ её структурирования в тексте. Именно его имел в виду Кей, в нем, как ни странно, суть Actor Model, а значит Эрланга и Акки

>>1048620
>но никогда не видел ОО-ориентрованых програм на функциональных языках

Определись наконец, Эрланг ООП или нет?

Ответы1049689

23 авг, 13:56 #501 #1049414

>>1048620
Всего 2, фунциональное и логическое это частный случай декларативного программирования.

Ответы1049689

23 авг, 14:00 #502 #1049417

>>1047779
Да хуйня какая-то, всё время прошу показать мне пример и объяснить почему это "ООП" а не сахар для процедурщины (я про вызов через точку). Вон в D можно обычные функции через точку вызывать, ну типа foo(a, b) и a.foo(b) - одно и то же. И шо, резко стало ООП? Да нет, нихуя. Вот объясните мне, где в вызове foo(a, b) стейт, а где не стейт. И почему оба аргумента не могут быть "стейтами".

Ответы1049526

23 авг, 14:03 #503 #1049419

>>1048620
> ООП в современном виде - не более чем тривиальная надстройка над старыми добрыми структурами, процедурами и указателями на процедуры
Два чая этому господину

Ответы1049454

23 авг, 14:36 #504 #1049454

>>1049419
Рукалицо.
Как концепция, может быть надстройкой над синтаксисом конкретного языка?

Ответы1049480

23 авг, 15:16 #505 #1049480

>>1049454
Хватит разговаривать с голосами в голове. О каком "синтаксисе конкретного языка" ты говоришь?

23 авг, 17:01 #506 #1049526

>>1049417
> foo(a, b) и a.foo(b)
Полиморфизм.

Ответы1049542

23 авг, 17:21 #507 #1049542

>>1049526
что?

Ответы1049565

23 авг, 17:41 #508 #1049565

>>1049542
Во втором случае метод может быть переопределен.

Ответы1049606

23 авг, 18:47 #509 #1049606

>>1049565
Ага, то есть всё-таки пришли к тому, что суть не в "записи с точкой" и тем что "данные лежат рядом с функциями", а в полиморфизме? Что ж, полиморфизм подтипов - ненужная хуйня (по той причине что завязан на наследование, а наследование - ненужная хуйня). В расте есть куда более адекватный способ переопределения поведения - ad-hoc полиморфизм. Собственно говоря, он есть и в Haskell. Значит ли это, что программисты на Haskell постоянно используют ОО-подход?

Ответы10496161050038

23 авг, 19:20 #510 #1049616

>>1049606
> Ага, то есть всё-таки пришли к тому, что суть не в "записи с точкой" и тем что "данные лежат рядом с функциями", а в полиморфизме?
Суть ооп - полиморфизм, инкапсуляция, наследование.

> Что ж,
> ненужная хуйня (по той причине что
> ненужная хуйня)
Ясно.

Ответы1049638

23 авг, 19:58 #511 #1049638

>>1049616
>Суть ооп - полиморфизм, инкапсуляция, наследование.
Ну вот и получается, неследование не нужно, полиморфизм в классических ОО-языках опирается на наследование и потому не нужен.
Что касается инкапсуляции, то её можно рассматривать как сокрытие данных (такая трактовка описывается как неверная в русскоязычной и как одна из допустимых в англоязычной) - и тогда это довольно скучно, полно языков не поддерживающих сокрытие данных, но при это считающихся вполне пригодных для написания ОО-кода; или же можно трактовать инкапсуляцию как механизм "упаковывания" данных и кода, с ним работающего. Тогда опять-таки вопрос, во-первых, о чём речь идёт когда говорят об ОО-подходе в C (где ни наследования, ни полиморфизма, ни полноценной инкапсуляции); во-вторых, что делать с пресловутой проблемой бумаги и пера - paper.write(pen) или pen.write(paper)? Ну и в любом случае инкапсуляция (в смысле "упаковки") выглядит именно как незначительная надстройка над процедурщиной, сопровождающаяся как правило соответствующим сахарком.

23 авг, 20:52 #512 #1049689

>>1049412
Эрланг это язык программирования. Возможно это сложно понять, но язык и "парадигма" - не одно и то же. Если честно, я не знаю какую часть Эрланга занимают акторы, никогда с ним не работал. Но, например, тот код что я видел и писал на Акке (именно работу с акторами), функциональным назвать невозможно, а вот ОО - вполне.
>>1049414
Ты прочитай документ по ссылке, не ленись, ума наберись.

24 авг, 12:44 #513 #1050038

>>1049606
>полиморфизм подтипов - ненужная хуйня (по той причине что завязан на наследование, а наследование - ненужная хуйня).

Полиморфизм подтипов - частный случай полиформизма. Доказывать, что общее не нужно из-за частного - маняврирование.

> адекватный способ переопределения поведения - ad-hoc полиморфизм.

ad-hoc полиформизм - не true полиформизм. True - параметрический.

> почему это "ООП" а не сахар для процедурщины

Потому что через сахар нельзя ввести инверсию flow of control, нужны новые определения, ООП - это и есть то определение.

> Значит ли это, что программисты на Haskell постоянно используют ОО-подход?

Это значит лишь то, что элементы ООП проникли в функциональщину, ОО языки несут в себе примесь функциональщины, при этом никто не считает их функциональными.

> что делать с пресловутой проблемой бумаги и пера

Доябываться до заказчика, пока не будет ясно какая система должна получится в итоге. Получив представление строишь наиболее очевидную (предсказуемую, скучную) систему.

Ответы1050670

24 авг, 13:00 #514 #1050047

> наследование - ненужная хуйня

Бтв, с этим не согласен. Наследование было ненужной хуйней из-за diamond inheritance; как проблему решили - стало годным инструментом. Только не надо пихать во все поля наследование. Это скальпель для построения иерархии типов, yj в жизни обычно хватает молотка в виде пары десятков заезженных паттернов.

Ответы10506701050672

25 авг, 12:06 #515 #1050670

>>1050038
> Полиморфизм подтипов - частный случай полиформизма. Доказывать, что общее не нужно из-за частного - маняврирование.
Я и не говорил, что полиморфизм не нужен. Я лишь сказал, что тот полиморфизм, о котором обычно идёт речь в котексте ООП (т.е. полиморфизм подтипов) и который завязан на другой "столп" ООП - наследование - не нужен. Против ad-hoc и параметрического полиморфизма ничего не имею, даже наоборот, считаю что это очень нужные концепции. Только вот когда говорят о полиморфизме в контексте ООП обычно имеют ввиду не дженерики и не трейты/тайпклассы.

> ad-hoc полиформизм - не true полиформизм. True - параметрический.
Я же говорил про способ переопределения поведения для разных типов. Параметрический полиморфизм позволяет лишь определить одно поведение для разных типов, а не разные поведения для разных типов.

> Потому что через сахар нельзя ввести инверсию flow of control, нужны новые определения, ООП - это и есть то определение.
Так, а вот это уже интересно. До сих пор в треде никто inversion of control не упоминал. В таком случае, на мой взгляд, правильнее было бы, для ясности, не говорить об абстрактном ООП для которого у каждого своё определение (от "данные радом с функциями" и вызова через точку до обмена сообщениями между объектами), а использовать более чётко определённые термины - например, inversion of control. Тогда никаких разночтений не возникает.

>>1050047
>Наследование было ненужной хуйней из-за diamond inheritance; как проблему решили - стало годным инструментом.
И как же её решили (если мы всё-таки говорим про наследование реализации, а не наследование поведения через интерфейсы/трейты/тайпклассы)?

> Это скальпель для построения иерархии типов
И зачем оно в реальной жизни может понадобиться? Точнее, в каких ситуациях оно может быть удобнее, чем подход того же Rust?

Ответы1051235

25 авг, 12:09 #516 #1050672

>>1050047
И да, diamon inheritance - не единственная проблема наследования. Другая проблема состоит в железобетонности иерархий типов, построенных наследовании, другими словами - в том что они очень плохо расширяемы.

26 авг, 13:55 #517 #1051235

>>1050670

> И как же её решили (если мы всё-таки говорим про наследование реализации, а не наследование поведения через интерфейсы/трейты/тайпклассы)?

Взяли и выпилили множественное наследование, лол. Если мы говорим о java и его клонах типа c# <hidden_tags=trollface, sarcasm> :)</hidden_tags>.

> иерархии типов
> И зачем оно в реальной жизни может понадобиться?

Кейсы по liskov substitution principle: приходит множество объектов и нужно выбрать такие что гарантируют implementation интерфейсов родителя. При этом у каждого объекта есть свое уникальное поведение.

В реальной матрице это может быть игра-стратегия: пользователь выбирает ХуйПятьсот Unit'ов. Не снимая выделение, User нажимает ПКМ. Кавалеристы, пыхота начинают движение, реализовывая интерфейсы Human (Human < Unit). Выборка Human из Unit возможна из-за наличия иерархии типов, делая удобной фильтрацию ненужных выделенных инстансов, например инстансов Building (Building < Unit).

> Другая проблема состоит в железобетонности иерархий типов, построенных наследовании, другими словами - в том что они очень плохо расширяемы.

Я бы не сказал, что это проблема, это trade-off - выбор наиболее удобной реализации. Если класс предполагается расширять, то не надо наследоваться, давай воспользуемся Open/closed principle - это позволит избежать переписывания старого кода и заняться расширением.

> В таком случае, на мой взгляд, правильнее было бы, для ясности, не говорить об абстрактном ООП для которого у каждого своё определение (от "данные радом с функциями" и вызова через точку до обмена сообщениями между объектами), а использовать более чётко определённые термины - например, inversion of control. Тогда никаких разночтений не возникает.

Именно так. На мой взгляд, разночтения происходят из-за двух вещей:

1. Маркетологи учат программистов как нужно жить. ООП - это не про объектно-ориентированного кота, но про менеджмент зависимостей (модулей) в программе.

2. Реализуются идеи ООП по-разному. Мы уже выяснили, даже в функциональных языках есть формы полиформизма, но эти языки прежде всего остаются функциональными. А еще мы любим поговорить об особенностях реализации ООП на своем языке, но это не то, что отличает ООП от модульного программирования.

> Параметрический полиморфизм позволяет лишь определить одно поведение для разных типов, а не разные поведения для разных типов.

Чисто технически это не так, параметрический полиформизм можно выродить в ad-hoc полиформизм, т.е. смотрим что за тип пришел и даем ему своё, уникальное поведение. Впрочем, делать так скорее всего не надо. Излишние сложности с неочевидной выгодой.

26 авг, 13:55 #517 #1051235

>>1050670

> И как же её решили (если мы всё-таки говорим про наследование реализации, а не наследование поведения через интерфейсы/трейты/тайпклассы)?

Взяли и выпилили множественное наследование, лол. Если мы говорим о java и его клонах типа c# <hidden_tags=trollface, sarcasm> :)</hidden_tags>.

> иерархии типов
> И зачем оно в реальной жизни может понадобиться?

Кейсы по liskov substitution principle: приходит множество объектов и нужно выбрать такие что гарантируют implementation интерфейсов родителя. При этом у каждого объекта есть свое уникальное поведение.

В реальной матрице это может быть игра-стратегия: пользователь выбирает ХуйПятьсот Unit'ов. Не снимая выделение, User нажимает ПКМ. Кавалеристы, пыхота начинают движение, реализовывая интерфейсы Human (Human < Unit). Выборка Human из Unit возможна из-за наличия иерархии типов, делая удобной фильтрацию ненужных выделенных инстансов, например инстансов Building (Building < Unit).

> Другая проблема состоит в железобетонности иерархий типов, построенных наследовании, другими словами - в том что они очень плохо расширяемы.

Я бы не сказал, что это проблема, это trade-off - выбор наиболее удобной реализации. Если класс предполагается расширять, то не надо наследоваться, давай воспользуемся Open/closed principle - это позволит избежать переписывания старого кода и заняться расширением.

> В таком случае, на мой взгляд, правильнее было бы, для ясности, не говорить об абстрактном ООП для которого у каждого своё определение (от "данные радом с функциями" и вызова через точку до обмена сообщениями между объектами), а использовать более чётко определённые термины - например, inversion of control. Тогда никаких разночтений не возникает.

Именно так. На мой взгляд, разночтения происходят из-за двух вещей:

1. Маркетологи учат программистов как нужно жить. ООП - это не про объектно-ориентированного кота, но про менеджмент зависимостей (модулей) в программе.

2. Реализуются идеи ООП по-разному. Мы уже выяснили, даже в функциональных языках есть формы полиформизма, но эти языки прежде всего остаются функциональными. А еще мы любим поговорить об особенностях реализации ООП на своем языке, но это не то, что отличает ООП от модульного программирования.

> Параметрический полиморфизм позволяет лишь определить одно поведение для разных типов, а не разные поведения для разных типов.

Чисто технически это не так, параметрический полиформизм можно выродить в ad-hoc полиформизм, т.е. смотрим что за тип пришел и даем ему своё, уникальное поведение. Впрочем, делать так скорее всего не надо. Излишние сложности с неочевидной выгодой.

Показать весь текст
Ответы1052018

27 авг, 15:33 #518 #1052018

>>1051235
> Взяли и выпилили множественное наследование, лол
Так отлично, а что делать когда одиночным наследованием не обойтись, когда связи в системе сложнее?

> Выборка Human из Unit возможна из-за наличия иерархии типов
Ну, всё то же самое можно сделать с помощью trait objects. Ну то есть принцип тот же, только без наследования реализации, только наследование поведения.

> Чисто технически это не так, параметрический полиформизм можно выродить в ad-hoc полиформизм, т.е. смотрим что за тип пришел и даем ему своё, уникальное поведение.
Ну для этого нужна поддержка рантайм-рефлексии, это хак)

Ответы1052064

27 авг, 16:30 #519 #1052064

>>1052018

> что делать когда одиночным наследованием не обойтись, когда связи в системе сложнее?

Я непойму, ты хочешь чтобы я тебе википедию перерассказал, или что???

https://ru.wikipedia.org/wiki/Ромбовидное_наследование#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D1.8F

> всё то же самое можно сделать с помощью trait objects

Ок, давай тогда будем говорить что наследование не нужно в расте. А если ты не растаман, и у тебя нет trait objects, тогда что? Речь явно о наследовании в ООП в целом. Бтв, согласен с тобой, что наследование не столп, или точнее 'столп' в кавычках. Но это не значит, что оно концептуально ненужно.

> Ну для этого нужна поддержка рантайм-рефлексии, это хак)

Хак, это или фича - вопрос, конечно, интересный. Однако, параметрический полиформизм - true именно потому что включает, но не ограничивается ad-hoc полиформизмом. ad-hoc полиформизм не true по той же самой причине.

Ответы10521421052159

27 авг, 18:00 #520 #1052142

>>1052064

>> что делать когда одиночным наследованием не обойтись, когда связи в системе сложнее?

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

Ответы1052159

27 авг, 18:24 #521 #1052159

>>1052142
Ну так я о том и говорю, что интерфейсами/трейтами/тайпклассами удобнее описывать связи в системе, так что наследование реализации не нужно.

>>1052064
Так ты то говоришь что проблему diamond inheritance решили, выпилив множественное наследование, то кидаешь ссылку на список хаков которые кое-как решают эту проблему, и все равно непонятно в каких ситуациях это лучше чем отказаться от наследования вообще и вместо этого использовать интерфейсы/трейты/тайпклассы.

> А если ты не растаман, и у тебя нет trait objects, тогда что?
Ну мне кроме сишки в голову не приходит языков без поддержки динамического диспатчинга. Никто не мешает сделать всё тоже самое на тех же Java и C#. Ну да, кое-где нет интерфейсов как отдельной сущности (в C++ например) и там придётся использовать "наследование" как механизм языка, но при этом по-хорошему все равно надо наследовать не реализацию, а только поведение (как это у крестовиков, pure virtual inheritance?).

Ответы1052198

27 авг, 19:32 #522 #1052198

>>1052159

> По-хорошему все равно надо наследовать не реализацию, а только поведение

А что делать с интерпретируемыми языками, опирающимися на duck typing, такими как ruby, в которых, в mixin'ах, реализация не отделяется от поведения?

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

По моему скромному мнению, множественное наследование не нужно. Однако, есть языки где ситуацию с что делать когда одиночным наследованием не обойтись решили вот так, через 'хаки', если угодно. Этот ответ показался мне неполным, т.к. есть и другая категория языков - где мн. наследование выпилили, там я допонил чуть-чуть.

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

---
> Ну так я о том и говорю, что интерфейсами/трейтами/тайпклассами удобнее описывать связи в системе, так что наследование реализации не нужно.

Я с тобой согласен в том, что связи удобнее описывать не через наследование. С другой стороны, по Барбаре Лисков иерархия классов упрощает проверку наличия этих связей, и в этом и есть ценность наследования.

31 авг, 22:30 #523 #1055130

А вот и внезапный бамп растотреду!

Объясните мне, аноны:
https://github.com/sfackler/rust-postgres/blob/d374641ecb584bb668fa8e7a10d0f593a5c35ca2/src/io.rs#L24

Строки 29-36, почему в match не указаны неймспейсы? Почему не MaybeSslStream::SslStream? Там ведь нет use.

Ответы1055216

1 сен, 00:03 #524 #1055216

>>1055130
А нахуя ты смотришь какой-то коммит трёхлетней давности? Сейчас такое не скомпилируется.

Ответы1056011

2 сен, 09:53 #525 #1056011

>>1055216
Наткнулся на код и даже не заметил, что это древний коммит, лол.

3 сен, 23:12 #526 #1056839

То, что полиморфизм — один из столпов ООПа, еще не значит что сам полиморфизм имеет какое-то отношение к ООП. В функциональных языках полиморфизма таки больше.

Тред утонул или удален.
Это копия, сохраненная 7 сентября 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion