1.2, Аноним (-), 23:01, 11/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –7 +/– |
>Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п.
>избавляет
>защищает
Почему-то в этой хвалебной оде языку Rust скромно умалчивается слово:
>опускает
производительность.
| |
|
|
3.37, Аноним (-), 09:45, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Тут говорится про отличие от предыдущей версии. Но для утешения можете приврать чтонить.
| |
|
2.5, Аноним (-), 00:21, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Тише едешь - дальше будешь. Поэтому тырпрайз предпочтет неторопливую, но надежную яву высокопроизводительным крестам, -- крестам, которые будут нести разрабы, получая и закрывая ежедневно пачки тикетов, связанных со stack overflow.
| |
|
3.7, A.Stahl (ok), 00:39, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
И где ты был, когда всем делали прививки от Изенболы? Бесплатно, между прочим...
| |
|
4.25, Аноним (-), 05:04, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Судя по твоей обиженной речи, сам Изя тебе и сделал прививку.
| |
|
|
2.8, Аноним (-), 00:40, 12/11/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
>> защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п.
>>избавляет
>>защищает
> Почему-то в этой хвалебной оде языку Rust скромно умалчивается слово:
>>опускает
> производительность.
А можно поподробнее -- как именно вы повышаете производительность обращением к областям освобожденной памяти и выходами за границы буфера?
| |
|
3.14, Андрей (??), 02:58, 12/11/2016 [^] [^^] [^^^] [ответить]
| –4 +/– |
Убирая проверки из рантайма. И по возможности реализуя их для debug сборки.
| |
|
4.17, Аноним (-), 03:09, 12/11/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Убирая проверки из рантайма. И по возможности реализуя их для debug сборки.
C каких это пор вдруг компайлтайм == рантайм?
| |
|
5.22, Андрей (??), 04:28, 12/11/2016 [^] [^^] [^^^] [ответить]
| –3 +/– |
А Раст может узнать все размеры не выполняя программу? Чудеса. А если не все, то такое и для C/C++ есть: статический анализатор.
| |
|
6.58, Аноним (-), 14:56, 12/11/2016 [^] [^^] [^^^] [ответить]
| +8 +/– |
> А Раст может узнать все размеры не выполняя программу?
А чего это вы перескочили на "все размеры"? Естественно, не все. И что? Отказаться от возможности сделать что-то во время компилирования из таких вот религиозных соображений?
>Чудеса.
Конечно чудеса, когда при проектировании языка учитывают современные возможности компиляторов и наработки в этой сфере. Только вот называются эти "Чудеса" -- 'владения', 'временные указатели' и 'время жизни', которые полностью контролируются програмистом и которые как раз и позволяют сделать "автоматическое" управление памятью и действительно убрать таким макаром целый ряд ошибок.
> А если не все, то такое и для C/C++ есть: статический анализатор.
И это, конечно же, заслуга структуры языка, особенно у слаботипизированного Си! Ви таки делаете мне смешно! А скажите-ка любезные, каким образом вы сможете проверить анализатором в сишной программе время жизни чего-либо или владения, если это не предусмотренно самим языком?
Кстати, походу мало кто из ярых "защитников истинного Си" понимает, какую титаническую работу проделали в гцц по части анализа кода и варнингов-рекомендаций. Запустили бы для сравнения какой нибудь Turbo/Borland C(++)/Watcom C -- а то привыкли к хорошему и воспринимают, как само собой разумеющееся ... да еще и на сторонние статистические анализаторы, которые появились *рен знает сколько лет после компиляторов кивают, типа "мы ежики, тоже летать умеем!" :).
| |
|
|
4.30, Аноним (-), 06:29, 12/11/2016 [^] [^^] [^^^] [ответить]
| +8 +/– |
Во-первых стандартный способ обхода массивов в rust - через итераторы, никаких проверок там нет.
Во-вторых, если без обращения по индексу все-таки не обойтись и компилятор не может оптимизировать это место (как показывают тесты, очень большое "если"), можно поставить ключевое слово "unsafe" и применить арифметику указателей. В будущем с первого взгляда будет понятно, где искать баг, при этом все остальные преимущества rust (модули, cargo, и т.п.) сохранятся.
| |
|
5.51, Аноним (-), 13:24, 12/11/2016 [^] [^^] [^^^] [ответить]
| –4 +/– |
И в итоге любой нетривиальный алгоритм будет состоять из unsafe'ов чуть менее чем полностью.
| |
|
6.83, 5kbps (ok), 00:06, 13/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
> И в итоге любой нетривиальный алгоритм будет состоять из unsafe'ов чуть менее
> чем полностью.
Нет. Просто нужно использовать соответствующие парадигме программирования техники.
| |
|
|
|
9.100, Аноним (-), 02:58, 14/11/2016 [^] [^^] [^^^] [ответить] | –1 +/– | На benchmarksgame ссылаться - как на дистроватч Синтетика, подкреплённая неадек... текст свёрнут, показать | |
|
|
|
|
|
|
5.99, Аноним (-), 22:01, 13/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Покажите реализацию SSL на божественном русте и без hearthbleed'a
| |
|
|
|
|
1.6, Аноним (-), 00:28, 12/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +8 +/– |
> и модель акторов
Доколе это будет кочевать из новости в новость о rust?
| |
1.9, neon1ks (ok), 01:01, 12/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Я бы назвал это новостью об компиляторе Rust, чем о самом языке.
Отличие между C++ и Rust: в C++ в начале разрабатывается стандарт, а уже потом пишутся компиляторы. В Rust же в начале пишется компилятор, а уже в будущем возможно будет стандарт.
| |
|
2.11, Аноним (-), 01:55, 12/11/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
Языковс формальным процессом стандартизации мало. В этом плане с++ скорее исключение.
> в C++ в начале разрабатывается стандарт, а уже потом пишутся компиляторы
Нет. Во-первых, обычно первая реализация фичи появляется вместе с пропозалом. Иначе фичу скорее всего не примут в стандарт. Во-вторых, компиляторы реализуют будущий стандарт в процессе разработки. Да, на полную реализацию с++11 у компиляторов ушло значительное время уже после выхода стандарта. Но это потому что релиз был более чем мажорный. К моменту выхода с++14 и гцц, и шланг его практически уже реализовали.
| |
2.31, Аноним (-), 06:34, 12/11/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
в rust в начале пишется RFC. Но, в отличие от C++, RFC тут рассматриваются и принимаются непрерывно, а не раз в пару лет. Отсюда и гораздо более быстрый прогресс.
| |
2.33, Ordu (ok), 08:36, 12/11/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Отличие между C++ и Rust: в C++ в начале разрабатывается стандарт, а уже потом пишутся компиляторы.
Ха-ха. Сначала был Страуструп, который писал компиляторы. И написав очередную версию компилятора он переиздавал свою книженцию. Сначала он релизил компилятор, потом переиздавал книженцию. А первый стандарт появился в 1998 году, то есть лет через пятнадцать после Си с классами.
Поэтому не надо тут сказок рассказывать о великом C++. Его десятилетиями вгоняли в сколько-нибудь вменяемую модель развития. Ему скорее стыдиться надо этого, и гордиться там нечем.
| |
|
3.40, QuAzI (ok), 10:37, 12/11/2016 [^] [^^] [^^^] [ответить] | +1 +/– | Если первопроходцам надо стыдиться, то вы вообще должны были от стыда умереть ещ... большой текст свёрнут, показать | |
|
4.43, Алексей (??), 11:18, 12/11/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Ну с сей никто не уйдет как минимум потому что у него весьма обширная кодовая база. Ни один адекватный разработчик не станет переписывать быстрый отлаженный код, на менее эффективном Rust, тем белее в большом проекте. Ну а комментарии местных анонимов вообще не стоит принимать во внимание, их юношеский максимализм в связи с отсутствием серьезных проектов за плечами, позволяет им переписывать свои хелловорды на модные языки хоть каждый день...
| |
|
5.48, Аноним (-), 11:44, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну в дропбоксе, мозилле, фейсбуке и даже в самсунге конечно работают только школьники, у которых единственная цель — покрасоваться в новостях. Особенно учитывая что двое из перечисленных переводят свои главные проекты на раст — вот выпердрёжники-то! Тормозить же будет от проверки при обращении по индексу массива! И ведь сохранисть старую кодобазу и писать на расте только новые хэловорды нельзя.
Ме кажется не стоит своё низкое культурное развитие приравнивать к сложности/нечитаемости/ненужности языка.
| |
|
6.49, DG94 (ok), 12:27, 12/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Это крупные игроки они располагают приличным финансовым капиталом и могут позволить себе экспериментировать, MS вообще все подряд скупает и закапывает, просто потому что может.
Так что твой аргумент, не аргумент, вот когда linux kernel перепишут на Rust тогда и расскажешь мне о серьезном применении ржавого. Ну а насчет низкого культурного развития, это похоже на неудачный вброс импульсивного анона, ибо необоснованно вообще никак. Ну и о школьниках я ничего не писал, ибо не привык мыслить стереотипами.
| |
|
7.53, Аноним (-), 13:42, 12/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Что за мания переписывания? Кто-то предлагает завтра же выкинуть старый код из-за нового языка в проекте или что? Кто и зачем будет переписывать десятилетние нагромождения линукса?
Та же мозилла внедряет его частично — см. quantum. Но нет, видимо пока на нём не перепишут всё легаси двадцатилетней давности, это так, игрушка не для сириус продакшена.
| |
|
6.61, freehck (ok), 15:22, 12/11/2016 [^] [^^] [^^^] [ответить] | +1 +/– | В крупных коммерческих компаниях всё не так Они вкладывают деньги в новые идеи,... большой текст свёрнут, показать | |
|
7.69, . (?), 20:42, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
А хороший блин пост получился! Это ж блин в гранит надо! :)
Молдца freehck!
| |
7.72, 5kbps (ok), 21:19, 12/11/2016 [^] [^^] [^^^] [ответить] | +4 +/– | Это тупо Ведь входные данные будут другими, следовательно никаких гарантий со с... большой текст свёрнут, показать | |
|
8.78, freehck (ok), 23:43, 12/11/2016 [^] [^^] [^^^] [ответить] | +1 +/– | Ну не совсем Бывают случаи, когда уместно сделать именно так Например, Вы пише... большой текст свёрнут, показать | |
|
9.82, 5kbps (ok), 00:02, 13/11/2016 [^] [^^] [^^^] [ответить] | +1 +/– | Ты не уловил посыл В общем случае, если ты отключил проверки, то ошибки не искл... текст свёрнут, показать | |
|
10.88, freehck (ok), 01:44, 13/11/2016 [^] [^^] [^^^] [ответить] | +/– | Да, совсем не исключаются Это уже только детальным анализом алгоритма Но и мой... большой текст свёрнут, показать | |
|
11.91, 5kbps (ok), 02:01, 13/11/2016 [^] [^^] [^^^] [ответить] | +/– | См последний пример в Examples у них на сайте Копипастой переводом не занимаюс... текст свёрнут, показать | |
11.92, 5kbps (ok), 02:49, 13/11/2016 [^] [^^] [^^^] [ответить] | +/– | А в чём проблема Любой класс типов можно рассматривать как обобщающий тип Разн... текст свёрнут, показать | |
|
|
9.86, Аноним (-), 01:38, 13/11/2016 [^] [^^] [^^^] [ответить] | +1 +/– | Если уж прям так припёрло обращаться к массивам па значению, можно либо пойти по... текст свёрнут, показать | |
|
|
|
|
5.57, freehck (ok), 14:55, 12/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ну с сей никто не уйдет как минимум потому что у него
> весьма обширная кодовая база. Ни один адекватный разработчик не станет переписывать
> быстрый отлаженный код, на менее эффективном Rust, тем белее в большом
> проекте.
Кстати, в связи с этим есть мнение, что хороший язык, который хочет пойти в продакшен, должен реализовывать хорошую поддержку cffi с простым и понятным синтаксисом.
| |
|
6.60, Аноним (-), 15:09, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Сишный ABI прост как палка и просто прикручивается куда угодно.
Другое дело что чтобы комфортно работать с ним из другого языка со своими концепциями и стилем уже требуются дополнительные телодвижения.
| |
|
|
4.56, freehck (ok), 14:50, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
> try!(try!(try!(foo()).bar()).baz())
> зачем такая вложенность?
> зачем повторно бросать уже брошенное исключение?
Кстати да, это интересный вопрос.
Обычно это делается так (пример на Ocaml)
try foo () |> bar |> baz
with exn -> exn_handler_code
И какая бы из функций конвеера ни бросила отсключение, его обработает exn_handler_code.
Поясните кто-нибудь, зачем тут вложенные try?
| |
|
5.59, Аноним (-), 15:05, 12/11/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
Потому что в расте и нету исключений. try! — это макрос для тех, кому лень на каждый вызов возвращающий Option/Result писать unwrap/unwrap_or или матчить руками. Для того оператор ? и ввели.
| |
|
6.80, freehck (ok), 23:49, 12/11/2016 [^] [^^] [^^^] [ответить]
| –3 +/– |
> Потому что в расте и нету исключений. try! — это макрос для
> тех, кому лень на каждый вызов возвращающий Option/Result писать unwrap/unwrap_or или
> матчить руками. Для того оператор ? и ввели.
О. Это несколько неудобно. Исключения, конечно, механизм медленный, но при большой глубине стека они сильно выигрывают как по выразительной силе, так и по скорости.
| |
|
|
|
|
|
|
2.12, doom (ok), 02:26, 12/11/2016 [^] [^^] [^^^] [ответить]
| +7 +/– |
> Синтаксис ужаснейший просто.
Согласен, налепили уже столько говна, что С++ кажется не таким и страшным.
| |
2.13, imprtat (ok), 02:44, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Так кажется только до тех пор пока не попробуешь. Ну а некоторые ограничения быстро отбрасывают "горе-девов", которые рвутся имплементить что-либо после просмотра хеллоу-ворлда, вместо того что бы прочитать спецификацию.
| |
|
3.16, Андрей (??), 03:00, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
А спецификация у языка Раст не на 1500 страниц, как у С++? Единственная известная мне спецификация, которую при желании реально прочесть за раз от корки до корки - это у Go. Буквально несколько дюжин страниц.
| |
|
4.18, angra (ok), 03:38, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Может ты просто мало языков знаешь? Посмотри на Component Pascal.
Спецификация на Go 25.5k слов, 3k строк
Спецификация на CP 1.5k слов, 0.3k строк
Разница на порядок и не в пользу go.
И это мы еще не берем эзотерику вроде brainfuck.
| |
|
5.21, Андрей (??), 04:26, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Эзотерику мы не берём и правильно. А Component Pascal где-то также распространён как и Go? Если бы да, то и я бы о нём знал. Но теперь буду знать, спасибо. Ведь интересно сравнить те языки, которые по тем или иным причинам пробились.
> Спецификация на Go 25.5k слов, 3k строк
> Спецификация на CP 1.5k слов, 0.3k строк
Так, Go: https://golang.org/ref/spec и CP: http://www.oberon.ch/pdf/CP-Lang.pdf
В CP-Lang.pdf 32 страницы - так что никак ни 300 строк, а
$ pdftotext CP-Lang.pdf - | wc
2321 11097 70094
2.3k строк.
| |
|
6.23, angra (ok), 04:37, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Да, у меня в прошлом посте неверные цифры. Скорее всего из-за копирования текста с неотрендеренного полностью pdf. Тем не менее спецификация его действительно короче чем у go.
Неужто о семействе языков pascal ни разу слышать не приходилось?
| |
|
7.26, Андрей (??), 05:05, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Именно Component не помню. Об Обероне, конечно, да. А на VHDL и писать время от времени приходится. Аду как минимум читать, т.к. свободный симулятор GHDL на ней написан.
| |
|
|
|
|
|
2.15, Леха (?), 03:00, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Мне кажется, что в последнее время создатели новыхнедоязыков, употребив наркотические средства, придумывают синтаксис, который читаем и понятен только им. Такими темпами скоро будет: f a &t *f = | &a ^ !g | .. : str -> { ok(a?) }
| |
|
3.19, angra (ok), 03:44, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
И ты тоже мало языков знаешь. Вот тебе реальный пример кода на J, одном из потомков APL:
>([:{: ]#~ (=|.&.>)) <@":"0 /:~(0:-.~[:,>:/**/)~(i.100)-.~i.1000
Посмотри в какие годы появились эти два языка.
| |
|
|
5.24, angra (ok), 04:44, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Дело привычки и знания синтаксиса. Мне после perl крайне неудобно работать с идентификаторами без сигилов, которые сразу указывают на тип. А у тех, кто не знаком с такой удобной штукой, обилие $ @ & % вызывает отвращение, им привычней добавлять к идентификатору короткие слова вроде array, list, map. При этом те же {} вместо begin end им почему-то кажутся нормальными, хотя это тоже "наркоманские" символы, но к ним привыкли и их значение известно.
| |
|
6.27, Андрей (??), 05:17, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Есть ещё язык, на котором уже давно (с конца 60-ых) и всё ещё реально программируют. В основном, в области здравоохранения - MUMPS (в том числе диалект в бывшем СССР - Диамс). Но есть и игровые примеры. Читается на первый взгляд не очень просто:
https://github.com/pkoper/mumtris.git
write(s,y,x)
n i,j,l,c,d
d pos(y,x)
s l=$l(s) f i=1:1:l d
. s c=$e(s,i)
. i c?1N d
.. i 'c s y=y+1 d pos(y,x) q
.. s d=$e(s,i+1) f j=1:1:c w d
.. s i=i+1
. e w c
d pos(0,0)
q
| |
6.41, QuAzI (ok), 10:45, 12/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Зачем привыкать к плохому? Работа программиста - разрабатывать новый функционал и исправлять старые ошибки, а не одолевать бессонными сутками планку очередного одноразового выноса мозга. Ошибки зачастую вылазят именно из-за неоднозначности кода. Т.е. ты считаешь что он во всех ситуациях будет вести себя как тебе надо, а он в 99 отработал так, а в 1 иначе. И без 10000 часов зубрения этого ЯП ты всё равно будешь ошибаться, ошибаться и ошибаться (людям свойственно). И твой волшебный код обсыпанный "сахаром" и обмазанный известными только тебе типсами и триксами никому не нужен, потому что он несопровождаем. И Security through obscurity в исходниках не нужно.
| |
|
7.68, angra (ok), 18:56, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Еще раз для танкистов. Почему {} вместо begin end или вообще пробелов/табов это читаемо, сопровождаемо итд, а тот же % вместо map, dict или как еще фантазия подскажет конкретному програмисту - уже нет? А с неоднозначностью вообще мимо. Сигил @ означает список(массив) для любого программиста на перл, в отличии от скажем прилепленой к имени буковки L или A, которые расшифровываются в List или Array только для автора кода.
| |
|
8.96, Ordu (ok), 11:23, 13/11/2016 [^] [^^] [^^^] [ответить] | +2 +/– | Потому что человек с трудом осилил синтаксис C, и теперь мысль об освоении новог... большой текст свёрнут, показать | |
|
9.104, Аноним (-), 11:55, 14/11/2016 [^] [^^] [^^^] [ответить] | +/– | клоун Сначала по поводу Фрейда Мозг работает в условиях жесточайшего дефицита ... большой текст свёрнут, показать | |
|
|
|
12.109, Аноним (-), 15:46, 14/11/2016 [^] [^^] [^^^] [ответить] | +/– | Только как-то проверить это заявление никак не получится Да и кому интересны м... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
4.73, 5kbps (ok), 21:26, 12/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
>>([:{: ]#~ (=|.&.>)) <@":"0 /:~(0:-.~[:,>:/**/)~(i.100)-.~i.1000
Не имею понятия, что здесь написано, но вставлю свои пять копеек.
Иногда ценность имеет возможность писать максимально компактно, так, чтобы как можно большая часть программы влезла в один экран. Подозреваю, что это тот случай.
Никто ж не возмущается что люди используют регулярки вместо кучи вложенных циклов.
| |
|
3.34, Ordu (ok), 08:57, 12/11/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Мне кажется, что в последнее время создатели новыхнедоязыков, употребив наркотические
> средства, придумывают синтаксис, который читаем и понятен только им.
Это как раз и есть одна из причин, зачем программисту нужна математика. Программист должен уметь справляться с символической записью. Одолевая курс матана, беря интегралы, решая дифуры или доказывая, что их невозможно решить аналитически, или размахивая расширениями полей, доказывая что данный многочлен имеет один корень в радикалах и ещё три трансцендентных, причём два из них равны -- занимаясь всей этой, казалось бы бессмысленной деятельностью, будущий программист учится пользоваться символическими языками, он учится мыслить на символических языках -- не на максимально обобщённом и неопределённом русском матерном, а на символических языках, которые максимально заточены на конкретную задачу.
Синтаксис нового языка должен быть понятен только посвящённым, иначе это не новый язык, а очередной недоклон сишечки. Ну или алгола, хотя сегодня это уже не столь актуально.
| |
|
4.39, Аноним (-), 10:26, 12/11/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
Бред.
Языки программирования придумывались, чтобы упростить работу программисту (большинство). ЯП - транслятор человеческой логики в машинную. Для развлекушек с символами есть свои местечковые ЯП и нефиг переносить это в общий тренд.
| |
|
5.54, антончик (?), 14:23, 12/11/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
НЕ бред, Haskell богат всяческими сахарными операторами и прочими особенностями, повышая тем порог вхождения новичков, он достаточно сильно абстрагирован от машины (сильнее чем си или rust), то-есть он по-сути "человечнее", и рождён этот сахар был не для того, чтобы прогнуться под особенности машины, а чтобы реализовать потребности человеческой логики, просто этот язык и его тонкости нужно знать, чтобы использовать это эффективно, и по факту это и есть упрощение переноса человеческой логики в машинную, удалясь от деталей реализации машины так далеко, как это возможно, чтобы не потерять эффективность, при этом кратко и лаконично выражая идеи человеческой логики.
Позовите Васю с улицы, который никогда не программировал, или из компьютеров видел только смартфон, и покажите код, который по вашему понятен и прост, для него это будет ни чуть ни меньшей магией, которая ни с какого ракурса не выглядит просто, потому что Вася не знает языка, у него нет образных паттернов и ассоциаций, которые помогут ему понять что всё это значит.
Самый простой язык по вашему - это Forth.
PEN APPLE UGH!
И получаем на вершине стека APPLEPEN.
| |
5.81, Ordu (ok), 23:56, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Для развлекушек с символами есть свои местечковые ЯП и нефиг переносить это в общий тренд.
Окей. Нефиг, так нефиг. Мозилла идёт своим трендом, а общий тренд пускай катится куда ему угодно. Меня такое положение дел вполне устраивает.
| |
5.89, angra (ok), 01:55, 13/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ты в силу отстутсвия опыта конечно не поверишь, но использование неалфавитноцифровых символов(или просто [^\w]) таки упрощает работу программиста, причем как по написанию, так и по чтению кода. Точно также как они упрощают запись и чтение выражений в математике. Например, вместо громоздкой фразы "необходимо и достаточно" или "тогда и только тогда" можно написать просто "<=>" и каждый математик это поймет, точно также как ты понимаешь, когда вместо "2 плюс 2 равно четыре" пишут "2+2=4".
| |
|
6.105, Аноним (-), 13:43, 14/11/2016 [^] [^^] [^^^] [ответить] | –3 +/– | клоун Ты действительно считаешь, что if JumpStm j dynamic_cast JumpStm st... большой текст свёрнут, показать | |
|
7.115, 0xd34df00d (??), 22:26, 14/11/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Взять напр. математику, в ней нет необходимости добавлять проверку на ноль или
> исключение всякий раз когда встречается деление.
Вообще-то есть. На нулевые и вырожденные случаи постоянно проверять надо. Вы не можете сказать, что ab = cb ⇔ a = c, вы должны сказать ab = cb ⇔ a = c ∨ b = 0. Вы не можете сказать, что в комплексном векторном пространстве у оператора существует собственное значение, вы должны сказать, что в ненулевом комплексном пространстве у оператора существует собственное значение.
> И вопрос как это сделать
> в программировании быстро и удобно.
Завернуть вычисление в Either-подобную монаду и писать везде >>= (ну или do).
| |
|
|
|
|
|
2.50, Аноним (-), 13:06, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Согласен. Лично меня из с++ заменителей больше всего привлекает D, хотя бы своим вменяемым синтаксисом, на котором приятно писать.
| |
|
3.52, Аноним (-), 13:42, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
>Лично меня из с++ заменителей больше всего привлекает D
А меня вот ничего не привлекает, останусь на C++.
| |
|
|
1.28, Вареник (?), 05:48, 12/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
>> замена макроса "try!", например, вместо "try!(try!(try!(foo()).bar()).baz())" можно написать "foo()?.bar()?.baz()?";
- Это называется "безопасный язык"? В нем логических ошибок будет по три на строчку, учитывая контингент (школота), наложенную на уверенность в "безопасности".
| |
|
2.35, Ан (??), 09:41, 12/11/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
Контингент "школота" его либо обойдёт либо будет поднимать уровень знаний. Иначе они просто будут бороться с компилятором ибо он будет больно бить по рукам за тот шит который они делают. А борьба с компилятором быстро утомит порывистого юнца если он решил что он умнее книг.
| |
|
3.38, Аноним (-), 09:59, 12/11/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
Пока что данный язык школотой используется только в комментах, потому как если б она столкнулась с ним на практике, внезапно б выяснилось, что язык этот сильно плох и вообще виновен во всём и сразу, включая залёт одноклассницы, двойку по физике и повестку из военкомата (да-да, программа ж сама не написалась так правильно, как хотел заказчик, программист тут ни при чём). Такими свойствами форумные интеллектуалы уже наделили PHP и C.
| |
|
|
|
2.46, Аноним (-), 11:35, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
В отличие от скалы у него очень строгий синтаксис, не имеющий даже половины фичей скалы.
Но опять же — из подобных комментариев становится видно, как хорошо человек знаком с обсуждаемым языком, или с его аналогами с трёхэтажными макросами/шаблонами на наследованием которым не уступает жаве (причём множественным) и прочими вкусностями.
| |
|
1.45, Аноним (-), 11:35, 12/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Rust поддерживает смесь императивных, процедурных и объектно-ориентированных методов
Наследование не завезли
| |
|
2.47, Аноним (-), 11:38, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
А формальное определение ООП с которым бы все согласились уже завезли?
Пока эта парадигма у каждого своя — глупо ждать какой-то конкретики от языков с этим кейвордом в описании.
| |
|
3.62, Аноним (-), 15:48, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Покажи мне компактную реализацию наследования в ржавчине. Не 100500 строк как в оттранслированном коде с vala на c.
| |
|
4.84, ащщифк (?), 00:14, 13/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
>> ...наследование
пока идиоматическое наследование в Rust это только - композиция.
| |
4.103, Аноним (-), 08:39, 14/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
>жаба
>инкапсуляция, наследование, полиморфизм.
Нет формального определения ООП. Указанное выше справедливо для жабы, но не для всех языков.
| |
|
|
2.74, 5kbps (ok), 21:37, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Rust поддерживает смесь императивных, процедурных и объектно-ориентированных
> методов
> Наследование не завезли
Наследование "дорогое". Для системного языка не подходит.
| |
|
3.85, Аноним (-), 01:30, 13/11/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Что-то я не увидел особо желающих писать на расте для микроконтроллеров. А вот как замена крестам - многие. Кроме того никто же не заставляет везде совать классы, достаточно всего-лишь добавть немного синтаксического сахара и программисты сами разберутся где использовать наследование а где нет.
| |
3.94, Линукс еще не готов (?), 08:42, 13/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
С практической точки зрения, достаточно "расширения" структур. Условно
struct Foo{
int a;
}
struct Bar extend Foo{
int b;
}
| |
|
|
1.67, Аноним (-), 18:32, 12/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Перевести нововведение на человечий язык можно так: теперь вместо саркастичного "Да!Да!Да!Такяиповерил()" можно просто сказать "Дану?", что гораздо удобнее.
| |
|
2.75, . (?), 22:01, 12/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
Улыбнул! :) Паря - тебе надо ЯП писать а не посты в уютненький :)
| |
|
3.101, Аноним (-), 05:55, 14/11/2016 [^] [^^] [^^^] [ответить]
| +/– |
>уютненький
>посты
Ты вообще понимаешь, что пишешь? Кроме улыбашек что-то есть в голове?
Семён просто незаметен.
| |
|
|
1.76, Аноним (-), 23:16, 12/11/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –12 +/– |
Rust украл часть нового синтаксиса нового у Swift 3.0
Выглядит как ужаснищий костыль сравнимый с началами Brainfuck.
| |
|
2.77, ащщифк (?), 23:38, 12/11/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это стабильный релиз с "?" - а так этот сахар уже более полугода живет в коде живет.
| |
|
3.122, QM (?), 13:37, 16/11/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
А вот в вопросе "и кстати, с чего это костыль?" знак вопроса собственно обозначает вопрос, в С/С++ знак вопроса тоже обозначает вопрос Условие ? Да : Нет, но я не очень понял чего конкретно означает знак вопроса в Rust. При этом вариант ответа "Да" существует и объявлен явно, а вариант "Нет" тоже существует, но явно не объявлен. А уж в примерах с try!(.....) try! куда более информативен.
| |
|
|
|
2.123, Аноним (-), 16:16, 16/11/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Не осилили C++, придумали Rust.
...
> А вот при том, что тут похоже, кто-то не осилил C++, и
> начал городить огороды. Получился новый Perl, простите, Rust...
И правда, куда уж всяким Грейдонам Хорам https://github.com/graydon до Ыкспертов опеннета ...
| |
|
|