The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз языка программирования Rust 1.24, opennews (??), 16-Фев-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 12:46 
Как оно по сравнению с Vala ?
Ответить | Правка | Наверх | Cообщить модератору

2. "Релиз языка программирования Rust 1.24"  +9 +/
Сообщение от Аноним (-), 16-Фев-18, 12:59 
Что такое Vala? Вы откуда к нам приехали? У нас только го, раст, питон, си, ява и тп.
Ответить | Правка | Наверх | Cообщить модератору

3. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Хипстер и смузихлеб (?), 16-Фев-18, 13:08 
В Solus Linux используют Vala, Go, C.
Ответить | Правка | Наверх | Cообщить модератору

8. "Релиз языка программирования Rust 1.24"  +3 +/
Сообщение от Аноним (-), 16-Фев-18, 13:22 
Ясно откуда, из GNOME, конечно же
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

9. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Nexmean (?), 16-Фев-18, 13:22 
Гибкий, быстрый, строгий. Пожалуй самый строгий из императивных языков программирования. При это присутствует возможность построения абстракций (~нулевой стоимости) практически любой сложности, но ради справедливости стоит отметить, что не любой. Например HKT ещё не завезли и не факт что вообще завезут.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

56. "Релиз языка программирования Rust 1.24"  –1 +/
Сообщение от angra (ok), 16-Фев-18, 16:31 
> Пожалуй самый строгий из императивных языков программирования

Ты забыл добавить самое важное ", которые я знаю".
Например go более строгий.

Ответить | Правка | Наверх | Cообщить модератору

70. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Nexmean (?), 16-Фев-18, 17:52 
Ага, строгость уровня interface{} и передачи в горутины не thread-safety типов.
Ответить | Правка | Наверх | Cообщить модератору

74. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 18:05 
Гагага, есть наблюдательные. У нас строго типизированный язык, но мы тут сделаем хак... оп, и у нас interface{} по функциям гуляет
Ответить | Правка | Наверх | Cообщить модератору

78. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от angra (ok), 16-Фев-18, 18:24 
Смысл строгой типизации не в том, чтобы не дать программисту возможности сделать желаемое, а в том, чтобы не дать ему случайно сделать то, чего он не хотел. Использование interface{} это явный выбор программиста, а вот преобразования типов компилятором в выражениях без соответсвующего прямого указания это неявное действие.
Ну и отдельно отмечу, что interface{} это совсем не синоним произвольного типа. Без _явного_ преобразования в конкретный тип единственное, что можно с таким объектом сделать, это сохранить и передать куда-либо еще. К примеру такой код работать не будет:
func add ( a,b interface{} ) interface{} {
    return a+b
}
Ответить | Правка | Наверх | Cообщить модератору

84. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Аноним (-), 16-Фев-18, 19:31 
> не в том, чтобы не дать программисту возможности сделать желаемое, а в том, чтобы не дать ему случайно сделать то, чего он не хотел

всё так.

> Ну и отдельно отмечу, что interface{} это совсем не синоним произвольного типа.

Да.

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

Да вот

func some(a interface{}) {
    b := a.(MyType)
}

при некотором стечении обстоятельств упадёт только в рантайме.

Но тут да, первое снова верно:
> не в том, чтобы не дать программисту возможности сделать желаемое, а в том, чтобы не дать ему случайно сделать то, чего он не хотел

"Если очень хочется, то пожалуйста, мочи". В go, однако, эти interface{} на каждом шагу расплодились

Ответить | Правка | Наверх | Cообщить модератору

116. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 16-Фев-18, 22:27 
> Да вот
> func some(a interface{}) {
>     b := a.(MyType)
> }
> при некотором стечении обстоятельств упадёт только в рантайме.

Конечно. Потому оно и называется type assertion, а не type cast. У него есть вторая форма, которая позволяет проверить, действительно ли переменная этого типа:
b,ok:=a.(MyType)
В случае если "a" окажется другого типа, то в "ok" будет false, а переменная "b" будет инициализированна нулевым значением типа MyType. И никакой паники в рантайме.

Ответить | Правка | Наверх | Cообщить модератору

181. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 19-Фев-18, 13:17 
Да вот беда, вот вам пример:
http://mobile.opennet.ru/opennews/art.shtml?num=48096#30
Ответить | Правка | Наверх | Cообщить модератору

85. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 19:33 
А вот вопрос: interface{} можно ли считать более безопасным аналогом указателя на void?)
Ответить | Правка | К родителю #78 | Наверх | Cообщить модератору

117. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 16-Фев-18, 22:39 
В общем-то да. Интерфейсная переменная в go являет собой структуру из двух полей, первое является указателем на структуру, описывающую тип текущего хранимого значения, второе является как раз указателем на void.
Ответить | Правка | Наверх | Cообщить модератору

18. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 13:43 
У вас это у кого? Леммингов?
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

19. "Релиз языка программирования Rust 1.24"  +/
Сообщение от AKR (ok), 16-Фев-18, 13:49 
Elementary OS - https://ru.wikipedia.org/wiki/Elementary_OS (7-ой в списке https://distrowatch.com)
Большая часть окружения написана на языке Vala, что позволяет достигнуть производительности, сравнимой с языком C.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

53. "Релиз языка программирования Rust 1.24"  +4 +/
Сообщение от Аноним (-), 16-Фев-18, 16:10 
> Большая часть окружения написана на языке Vala, что позволяет достигнуть производительности,
> сравнимой с языком C.

А гнум написман прямо на С, что не мешает ему безбожно тормозить. Что сказать то хотел?

Ответить | Правка | Наверх | Cообщить модератору

79. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от AKR (ok), 16-Фев-18, 18:24 
>> Большая часть окружения написана на языке Vala, что позволяет достигнуть производительности,
>> сравнимой с языком C.
> А гнум написман прямо на С, что не мешает ему безбожно тормозить.
> Что сказать то хотел?

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

Ответить | Правка | Наверх | Cообщить модератору

89. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Аноним (-), 16-Фев-18, 20:11 
> А гнум написман прямо на С, что не мешает ему безбожно тормозить.

Когда он был написан на C и Vala, он не тормозил. Тормозить стал, когда хипстота напихала туда JS.

Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

66. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 17:22 
> Elementary OS - https://ru.wikipedia.org/wiki/Elementary_OS (7-ой в списке https://distrowatch.com)
> Большая часть окружения написана на языке Vala, что позволяет достигнуть производительности, сравнимой с языком C.

Транслирование в сишку не дает автоматически сишной скорости. Да и завязка на GTK и glib слишком сильна. Нишевой ЯП, в общем.

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

55. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Онаним (?), 16-Фев-18, 16:30 
Валя - это транспайлер урезанной старой версии C# в C. В целом достаточно приятная и полезная штука.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

135. "Релиз языка программирования Rust 1.24"  +/
Сообщение от neAnonim (?), 17-Фев-18, 01:20 
только коммерческие проекты на ней писать нельзя так как она гном библиотеки линкует by design.
Ответить | Правка | Наверх | Cообщить модератору

177. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Нет ты (?), 18-Фев-18, 14:21 
Под desktop легко, там LGPL как в Qt. Но если конечно же, кто-то сделал независимую реализацию GLib/GObject под zLib/MIT/Boost/BSD тогда внимания Vala приобрела намного больше. Чудесный язык, но перешел на сторону D с C++, доволен, особенно после того как добрали interop с C++ (что не мало важно, есть много хороших вещей на нем, а изобретать велосипед не охота).
Ответить | Правка | Наверх | Cообщить модератору

178. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Нет ты (?), 18-Фев-18, 15:45 
И да, GNOME & GTK там не обязательны, только GLib/GObject.
Ответить | Правка | Наверх | Cообщить модератору

179. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 18-Фев-18, 17:08 
> Что такое Vala? Вы откуда к нам приехали? У нас только го,
> раст, питон, си, ява и тп.

Си у вас нету, не пользуются хипстеры сями.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

4. "Релиз языка программирования Rust 1.24"  +/
Сообщение от TormoZilla (?), 16-Фев-18, 13:15 
Это стиральный порошок?
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

5. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 13:18 
Подобно Objective-C но для GTK

https://en.wikipedia.org/wiki/Vala_%28programming_langu...

Ответить | Правка | Наверх | Cообщить модератору

7. "Релиз языка программирования Rust 1.24"  +/
Сообщение от evkogan (?), 16-Фев-18, 13:22 
Vala это обертка над Си да еще и заточенная исключительно на GTK.
Гораздо интереснее сравнение с Go. При том что тут нет сборщиков мусора и т.п, но есть защита по работе с памятью. К сожалению ощущение что кроме как внутри Мозилы его никто серьезно не пользует. То ли есть объективные недостатки, то ли просто не пробовали не ясно.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

13. "Релиз языка программирования Rust 1.24"  +3 +/
Сообщение от Nexmean (?), 16-Фев-18, 13:27 
Объективный недостаток - Rust слишком не похож на мейнстримные языки. Соответственно подавляющая масса программистов чтобы вкатиться должна потратить много времени и усилий, многие просто бросят это дело в самом начале, скажут, мол язык фекалия с инопланетными синтаксисом и/или семантикой и пойдут дальше кодить на Java/C/C++/C#/Go/JavaScript/Python.
Ответить | Правка | Наверх | Cообщить модератору

33. "Релиз языка программирования Rust 1.24"  –2 +/
Сообщение от Аноним (-), 16-Фев-18, 15:09 
Вот только не надо. У го тоже вполне инопланетный синтаксис как бы его не называли C-подобным, а многое вообще схоже с растом.
Ответить | Правка | Наверх | Cообщить модератору

42. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 15:38 
У Go вполне читабельный и понятный синтаксис. А главное, - он примитивный. Есть, конечно, бредовые моменты, как например, методы с большой буквы, или массивы с квадратными скобками впереди. Но в целом, идеи интересные.
Ответить | Правка | Наверх | Cообщить модератору

57. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от angra (ok), 16-Фев-18, 16:37 
> Есть, конечно, бредовые моменты, как например, методы с большой буквы

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


Ответить | Правка | Наверх | Cообщить модератору

67. "Релиз языка программирования Rust 1.24"  +2 +/
Сообщение от Аноним (-), 16-Фев-18, 17:28 
Любой язык, который навязывает оформление кода (в т.ч. и выбор имен) - broken by design.
Ответить | Правка | Наверх | Cообщить модератору

71. "Релиз языка программирования Rust 1.24"  +4 +/
Сообщение от Аноним (-), 16-Фев-18, 17:52 
> Любой язык, который навязывает оформление кода (в т.ч. и выбор имен) -  broken by design.

В смысле, заставляет расставлять везде скобочки и ;, не разрешает начинать имена с цифр или того же $, не дает на практике (т.к. implementation defined) использовать кириллицу?


Ответить | Правка | Наверх | Cообщить модератору

86. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Аноним (-), 16-Фев-18, 20:05 
Нет. Любое утверждение можно довести до абсурда. Но когда программа ломается и меняет поведение в зависимости от того, какой пробел ты поставил или с какой буквы начал имя метода, то что-то неладно в королевстве датском.

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

Ответить | Правка | Наверх | Cообщить модератору

104. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Аноним (-), 16-Фев-18, 21:13 
> Но когда программа ломается и меняет поведение в зависимости от того, какой пробел ты поставил
> Нет. Любое утверждение можно довести до абсурда.

this
Ведь если заменить "пробелы" на "скобочки" (довольно частая категория ошибок кстати, см. знаменитый goto fail), то смысл почему-то останется тот же.

Просто пробелы используются не только как банальный разделитель между идентификаторами, ключевыми словами и прочим. Это позволяет выкинуть бесконечные лесенки скобочек, не теряя в читаемости.

> с какой буквы начал имя метода, то что-то неладно в королевстве датском.

Пролог, фортран ... не, не слышали? Ну ладно фортран, но мне интересно, как в прологе будет выглядеть альтернативное, компактное и элегантное решение решение, заменяющее Myvar|myatom.

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

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


Ответить | Правка | Наверх | Cообщить модератору

105. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 21:27 
> Ведь если заменить "пробелы" на "скобочки" (довольно частая категория ошибок кстати, см. знаменитый goto fail), то смысл почему-то останется тот же.

Да, тот же. В C, к примеру, как код ни оформляй, на какой строке и сколькими пробелами ни окружай скобки, смысл не изменится. goto fail, ЕМНИП, вообще был о другом - там метка fail не там стояла.

> Пролог, фортран ... не, не слышали?

Слышал давно и благополучно забыл. Остаюсь при своём утверждении.

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

Как я уже сказал, любое утверждение можно довести до абсурда. Если требование "использовать ASCII" - навязывание, то я за такой уровень "навязывания". Хотите считать это двойными стандартами - ваше право. Я предпочитаю считать это здравым смыслом.

Ответить | Правка | Наверх | Cообщить модератору

108. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 21:51 
>> Ведь если заменить "пробелы" на "скобочки" (довольно частая категория ошибок кстати, см. знаменитый goto fail), то смысл почему-то останется тот же.
> Да, тот же. В C, к примеру, как код ни оформляй, на какой строке и сколькими пробелами ни окружай скобки, смысл не изменится.

Ох уж это выборочное восприятие. А если недоставить пару скобок? Или поставить не там? Cмысл не изменится? А из оформления, обычно что-то отличное от


{
  a
  {
  }
}

или

a{
  b{
  }
}

т.е. несоблюдение иерархии скобок, не считается уже дурным тоном?

> goto fail, ЕМНИП, вообще был о другом - там метка fail не там стояла.

Ага, не там. Вне скобочек. Опциональных в if.


if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
    goto fail;
    goto fail;  


Ответить | Правка | Наверх | Cообщить модератору

115. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 22:18 
> Ох уж это выборочное восприятие. А если недоставить пару скобок? Или поставить
> не там? Cмысл не изменится?

Изменится. Но в отличие от эта ошибка будет видна вполне себе невооруженным глазом.

> т.е. несоблюдение иерархии скобок, не считается уже дурным тоном?

Нет, не всегда.

  std::find_if(v.begin(), v.end(), [](int val) { return val == 42; });

  class foo
  {
    int m_n;

  public:
    int get_n() const { return m_n; }
    void bar(std::optional< int > x = {});
  };

  std::array< int, 3 > arr = {{ 1, 2, 3 }};

Вообще не вижу проблем, всё компактно и понятно.

>> goto fail, ЕМНИП, вообще был о другом - там метка fail не там стояла.
> Ага, не там. Вне скобочек. Опциональных в if.
>

 
> if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
>     goto fail;
>     goto fail;  

Гм, мне эта ошибка помнилась по-другому, ну да ладно. В чём ваш поинт? В том, что этой ошибки бы не было, если бы не скобки?

Ответить | Правка | Наверх | Cообщить модератору

118. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 22:48 
> Изменится. Но в отличие от эта ошибка будет видна вполне себе невооруженным глазом.

В отличие от чего? Вы продолжайте, не стесяйтесь. А то, как оно "отлично" видно было, показал gotofail. Отсутствие пробела, понимаешь, будет незаметно, то ли дело "излюбленное" if(x) a();b(); в одной строке.


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


{
  a
  {
  }
}

> Вообще не вижу проблем, всё компактно и понятно.

Яснопонятно. Идеи для вбросов закончились или вам действительно не видно за деревьями леса?
Намекну: почему не


class foo
  {
    int m_n;

  public:
    int get_n() const {
      return m_n; }
    void bar(std::optional< int > x = {});
      };


Кстати, не понял, зачем еще и скобочки вот тут:

void bar(std::optional< int > x = {});
std::array< int, 3 > arr = {{ 1, 2, 3 }};

cмотрится круто, но cемантичекски, как бы, совсем не о том.

> Гм, мне эта ошибка помнилась по-другому, ну да ладно. В чём ваш
> поинт? В том, что этой ошибки бы не было, если бы не скобки?

Трактоваине и вангвание причин - были у каждого свои.
А пойнт в том, что если бы {} не были не опциональными, то выглядело бы оно скорее всего вот так:


if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) {
    goto fail;
}
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) {
    goto fail;
    goto fail;
}

if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) {
    goto fail;
}


Убрали скобочки и оп-па, кое-где в коде изменился смысл.


Ответить | Правка | К родителю #115 | Наверх | Cообщить модератору

126. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 23:15 
>> Изменится. Но в отличие от эта ошибка будет видна вполне себе невооруженным глазом.
> В отличие от чего?

В отличие от пробелов, имеющих семантику (отличную от "тупо разделитель"), например. Или от Unicode в именах. Выбирайте сами на свой вкус.

>[оверквотинг удален]
>

 
>  class foo
>   {
>     int m_n;
>   public:
>     int get_n() const {
>       return m_n; }
>     void bar(std::optional< int > x = {});
>       };
>

Потому что это банально неудобно. Для меня, во всяком случае, для вас - не знаю. Но заметьте, семантика этого кода осталась прежней.

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

> Кстати, не понял, зачем еще и скобочки вот тут:
>

 
> void bar(std::optional< int > x = {});
> std::array< int, 3 > arr = {{ 1, 2, 3 }};
>

> cмотрится круто, но cемантичекски, как бы, совсем не о том.

Вы писали об "иерархии скобочек", что я понял как "соответствие отступов уровням вложенности скобочек". В соответствии с этим, этот код мог быть написан по-другому:

 
void bar
(
  std::optional< int > x =
  {
  }
);
std::array< int, 3 > arr =
{
  {
    1, 2, 3
  }
};

Это вы имели ввиду или нет - не знаю, разбирайтесь сами.

> Убрали скобочки и оп-па, кое-где в коде изменился смысл.

Охренеть, вот неожиданность, да?

Ответить | Правка | К родителю #118 | Наверх | Cообщить модератору

159. "Релиз языка программирования Rust 1.24"  +/
Сообщение от anomymous (?), 17-Фев-18, 13:55 
> А пойнт в том, что если бы {} не были не опциональными,

Пойнт в том, что считать табулированный блок одним куском кода в этом примере будет только заядлый питонист. Любой мало-мальски вменяемый кодер (да хоть зелёный джуниор, блин) сразу же обратит внимание на отсутствие блока.

Ответить | Правка | К родителю #118 | Наверх | Cообщить модератору

162. "Релиз языка программирования Rust 1.24"  –1 +/
Сообщение от Аноним (-), 17-Фев-18, 14:47 
>> А пойнт в том, что если бы {} не были не опциональными,
> Пойнт в том, что считать табулированный блок одним куском кода в этом
> примере будет только заядлый питонист. Любой мало-мальски вменяемый кодер (да хоть
> зелёный джуниор, блин) сразу же обратит внимание на отсутствие блока.

Сам придумал что-то, сам же опроверг.
Пойнт в том, что передерг и спрыг с темы, он такой передерг и спрыг с темы, что почти заменяет конкретику (которую в этой ветке никто из ярых защитников "свободного форматировани" так и не привел).


Ответить | Правка | К родителю #159 | Наверх | Cообщить модератору

158. "Релиз языка программирования Rust 1.24"  +/
Сообщение от anomymous (?), 17-Фев-18, 13:53 
Ключевое слово тут - "пару". Скобки парные, и это несколько страхует от ошибок. Кроме того, скобка - это легко наблюдаемый значащий символ - и приведённый пример goto fail вообще странен, в здравом уме он читается "на раз". А вот значимые пробелы в коде - это идиотизм в чистом виде.
Ответить | Правка | Наверх | Cообщить модератору

164. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 17-Фев-18, 15:16 
Если тебе выделить небольшой фрагмент кода и сказать, что в нем есть ошибка, то конечно ты ее "на раз" прочтешь. Но вот без этих дополнительных подсказок "очевидную" ошибку упустили весьма опытные программисты и получили уязвимость.  


Ответить | Правка | К родителю #158 | Наверх | Cообщить модератору

120. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 16-Фев-18, 22:56 
> Нет. Любое утверждение можно довести до абсурда. Но когда программа ломается и  меняет поведение в зависимости от того, какой пробел ты поставил или  с какой буквы начал имя метода, то что-то неладно в королевстве  датском.

Сейчас я тебе скажу страшное, приготовься. В любом ЯП, например С, в котором идентификаторы являются чувствительными к регистру, замена большой буквы на маленькую или наоборот в идентификаторе поломает программу, причем независимо от позиции этой буквы. Ужас, правда?
А еще, представь себе, ANSI C накладывал ограничение значимости только первых 6 символов на внешние идентификаторы и только в C99 его расширили до 31. Поэтому ты не мог дать внешним функциям имена типа coollib_func1 и coollib_func2, приходилось делать что-то вроде cl_f1 и cl_f2. Теперь видишь, насколько же сильно он был broken by design по твоему определению?

Ответить | Правка | К родителю #86 | Наверх | Cообщить модератору

127. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 23:26 
> Сейчас я тебе скажу страшное, приготовься. В любом ЯП, например С, в
> котором идентификаторы являются чувствительными к регистру, замена большой буквы на маленькую
> или наоборот в идентификаторе поломает программу, причем независимо от позиции этой
> буквы. Ужас, правда?

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

> А еще, представь себе, ANSI C накладывал ограничение значимости только первых 6
> символов на внешние идентификаторы и только в C99 его расширили до
> 31. Поэтому ты не мог дать внешним функциям имена типа coollib_func1
> и coollib_func2, приходилось делать что-то вроде cl_f1 и cl_f2. Теперь видишь,
> насколько же сильно он был broken by design по твоему определению?

Ничто не совершенно. Но надо заметить, что (а) реальные комипляторы кроме, может быть, совсем замшелых считали значимыми больше 6 и даже 31 символа и (б) для C 31 символа вполне достаточно. Не знаю, как вы, но я как-то не привык в качестве имен функций набивать второй том Войны и мира.

Ответить | Правка | Наверх | Cообщить модератору

132. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 17-Фев-18, 00:21 
До тех пор, пока ты не создаешь отдельный пакет, ты можешь начинать идентификаторы с любой буквы. Даже в случае пакета тебе ничего не мешает всё начинать с заглавной. Единственное ограничение состоит в том, что ты не можешь начинать с маленькой буквы то, что хочешь экспортировать. Это просто ничтожно по сравнению с требованием уникальности первых шести символов или требованием использовать только [A-z_]. Но ты в упор не хочешь этого видеть, ведь к таким ограничениям ты уже привык. Так что остается диагностировать у тебя двойные стандарты вкупе с синдромом утенка.
Ответить | Правка | Наверх | Cообщить модератору

134. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 01:03 
> Единственное ограничение состоит в том, что ты не можешь начинать с маленькой буквы
> то, что хочешь экспортировать.
> Это просто ничтожно по сравнению с требованием уникальности первых шести символов
> или требованием использовать только [A-z_].

У нас с вами разные представления о том, какое из этих ограничений более существенно. (Про первые 6 символов я уже писал - по факту нету этого ограничения.)

Ответить | Правка | Наверх | Cообщить модератору

139. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 17-Фев-18, 01:42 
Это не просто разные представления, это синдром утенка во всей красе.
Интересно, а как ты относишься к очень распространенным требованиям/практикам/стилям начинать приватные идентификаторы с одного подчеркивания, имена классов писать всегда с большой буквы, переменные всегда с маленькой, а макросы и только их всеми большими? Скорее всего, тебе это кажется нормальными, так как ты к этому уже привык. Возможно даже считаешь такие соглашения удобными. И если не дурак, то даже следуешь принятым в коллективе соглашениям такого рода, когда пишешь код не лично для себя. Так почему же тебя так коробит подобное правило, введенное в стандарт языка?
Ответить | Правка | К родителю #134 | Наверх | Cообщить модератору

140. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 02:49 
Про синдром утёнка - это мимо. Во всяком случае, в том, что касается выбора имён.

> Интересно, а как ты относишься к очень распространенным требованиям/практикам/стилям начинать приватные идентификаторы с одного подчеркивания, имена классов писать всегда с большой буквы, переменные всегда с маленькой, а макросы и только их всеми большими?

Первый символ подчеркивания (и второй - подчеркивание либо заглавная буква) зарезервирован для реализации языка. В остальном - вполне типичные соглашения. Одни из многих.

> Так почему же тебя так коробит подобное правило, введенное в стандарт языка?

Потому что я поработал в разных проектах, и во многих соглашения были разные. И в каждом случае они были вполне себе осмысленные и местами даже обоснованные. К примеру, сейчас я работаю в проекте, где приняты соглашения имен в стиле_стандартной_библиотеки_c++ - для классов, функций и переменных. Раньше работал в ПроектеВСтилеMicrosoft, а местами приходилось и в проектахВСтилеJava ковыряться.

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

Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

161. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 14:42 
> Вам, вероятно, это кажется допустимым, потому что вы подстроились
> под это ограничение и возможно даже подогнали свой стиль, если регулярно
> пишите на Rust. Возможно, вам даже хотелось бы, чтобы все писали
> код так, как вы.

Казалось бы, причем тут ржавчина ...

Ответить | Правка | К родителю #140 | Наверх | Cообщить модератору

168. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Другой Аноним (?), 17-Фев-18, 16:50 
ну, как-бы тема называется "Релиз языка программирования Rust 1.24", так-что ржавчина очень причём.
Ответить | Правка | К родителю #161 | Наверх | Cообщить модератору

170. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 17:05 
> ну, как-бы тема называется "Релиз языка программирования Rust 1.24", так-что ржавчина очень  причём.

А, ну да. Обсуждали синтактическую особенность гошных экспортов. В теме о ржавчине. Поэтому "подстроились под это ограничение, если вы пишите на расте" сойдет за аргумент. Логично.


Ответить | Правка | К родителю #168 | Наверх | Cообщить модератору

172. "Релиз языка программирования Rust 1.24"  +/
Сообщение от angra (ok), 17-Фев-18, 17:54 
Конечно, никакого синдрома утенка. Ведь всем понятно, что смена регистра одной буквы, не выходя из исходника, это в разы более сложная операция, чем открытие файла заголовка, копирование туда полного определения функции и добавление к нему слова extern.
Ответить | Правка | К родителю #140 | Наверх | Cообщить модератору

175. "Релиз языка программирования Rust 1.24"  +/
Сообщение от анон (?), 18-Фев-18, 05:20 
> К примеру, чтобы экспортировать метод из библиотеки на C мне не нужно его переименовывать и искать по всему коду его вызовы.

уж лучше один раз переименовать, чем при использовании держать в уме, стиль идентификаторов в каждой либе.

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

Ответить | Правка | К родителю #140 | Наверх | Cообщить модератору

183. "Релиз языка программирования Rust 1.24"  +/
Сообщение от adolfus (ok), 19-Фев-18, 14:31 
> До тех пор, пока ты не создаешь отдельный пакет, ты можешь начинать
> идентификаторы с любой буквы. Даже в случае пакета тебе ничего не
> мешает всё начинать с заглавной. Единственное ограничение состоит в том, что
> ты не можешь начинать с маленькой буквы то, что хочешь экспортировать.

А пацаны, которые писали стандарты C/С++ и те, кто их реализовывал на практике, об этом не знали и понаписали все с маленькой. Вот же дятлы -- в libc все с маленькой буквы, pthreads ...
То ли дело FindFirst() и FindNext(), или WinAllocMem() и WinSubAllocMem() -- вот как надо.

Ответить | Правка | Наверх | Cообщить модератору

92. "Релиз языка программирования Rust 1.24"  +1 +/
Сообщение от Аноним (-), 16-Фев-18, 20:15 
> Любой язык, который навязывает оформление кода (в т.ч. и выбор имен) -
> broken by design.

ПРАВИЛЬНО, КакХочуТакПишу, не_надо_мне_ничего_навязывать.

Ответить | Правка | К родителю #67 | Наверх | Cообщить модератору

160. "Релиз языка программирования Rust 1.24"  +/
Сообщение от anomymous (?), 17-Фев-18, 13:57 
> ПРАВИЛЬНО, КакХочуТакПишу, не_надо_мне_ничего_навязывать.

Именно так. Code style выбирается в рамках проекта и под проект. Попытка зачесать оформление всех проектов под единственно правильное (с) истинное (с) верование авторов языка - это overburden.

Ответить | Правка | Наверх | Cообщить модератору

165. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 15:23 
>> ПРАВИЛЬНО, КакХочуТакПишу, не_надо_мне_ничего_навязывать.
> Именно так. Code style выбирается в рамках проекта и под проект. Попытка
> зачесать оформление всех проектов под единственно правильное (с) истинное (с) верование
> авторов языка - это overburden.

rustfmt может настраиваться под ваш стиль.

Ответить | Правка | Наверх | Cообщить модератору

102. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Orduemail (ok), 16-Фев-18, 20:43 
> Объективный недостаток - Rust слишком не похож на мейнстримные языки. Соответственно подавляющая масса программистов чтобы вкатиться должна потратить много времени и усилий

Ой, да ладно.

https://www.rust-lang.org/pdfs/Rust-Tilde-Whitepaper.pdf

Стартап, и в нём веб-программеры на ходу переучиваются с ruby на rust, переписывая код с ruby на rust. Достигая при этом 100% успеха, ссутся кипятком от сокращения расхода памяти на 92%, и не могут нарадоваться на то, что баги теперь проявляются не во время выполнения, а на этапе компиляции.

Веб-программисты, Карл!

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

143. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 06:24 
Пусть играются, рубистов не жалко.
Ответить | Правка | Наверх | Cообщить модератору

151. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Orduemail (ok), 17-Фев-18, 07:59 
> Пусть играются, рубистов не жалко.

Это я "играюсь" с rust'ом. Они зарабатывают денег на нём.

Ответить | Правка | Наверх | Cообщить модератору

17. "Релиз языка программирования Rust 1.24"  –1 +/
Сообщение от Аноним (-), 16-Фев-18, 13:40 
>  Vala это обертка над Си да еще и заточенная исключительно на GTK.

Не вводите людей в заблуждение, это не так: vala - это не обертка над Си, его компилятор транслирует код написанный на vala с си-сорцы. Заточена она не под GTK, а использует GObject - объектную систему построенную на glib и libc (больше зависимостей нет). Про нужность той же glib если даже писать на си рассказывать думаю не нужно. Связь между glib и GTK для самых маленьких в картинках: https://en.wikipedia.org/wiki/GLib
Vala - штука довольно мощная, гибкая и точно должна понравится сишникам. А что rust? Я сишник, мне должен понравиться rust?

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

20. "Релиз языка программирования Rust 1.24"  +2 +/
Сообщение от yet another anonymous (?), 16-Фев-18, 13:50 
> .. Про нужность
> той же glib если даже писать на си рассказывать думаю не
> нужно.

По мне, "нужность" glib --- очень спорный момент.

Ответить | Правка | Наверх | Cообщить модератору

21. "Релиз языка программирования Rust 1.24"  –1 +/
Сообщение от Аноним (-), 16-Фев-18, 13:58 
> Про нужность той же glib если даже писать на си рассказывать думаю не нужно.

Вот и предлагается не писать на си, а писать на Rust.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

24. "Релиз языка программирования Rust 1.24"  –5 +/
Сообщение от Анончик (?), 16-Фев-18, 14:32 
Тот самый случай, когда даже си лучше чем это.
Ответить | Правка | Наверх | Cообщить модератору

25. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 14:43 
> Тот самый случай, когда даже си лучше чем это.

Чем лучше?

Ответить | Правка | Наверх | Cообщить модератору

27. "Релиз языка программирования Rust 1.24"  –3 +/
Сообщение от Анончик (?), 16-Фев-18, 14:59 
Чем это.
Ответить | Правка | Наверх | Cообщить модератору

26. "Релиз языка программирования Rust 1.24"  –3 +/
Сообщение от Хряк (?), 16-Фев-18, 14:53 
> Заточена она не под GTK

А на чем кроме gtk можно писать гуи-приложения?

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

31. "Релиз языка программирования Rust 1.24"  –2 +/
Сообщение от Аноним (-), 16-Фев-18, 15:08 
Я пишу на MFC. Рекомендую.
Ответить | Правка | Наверх | Cообщить модератору

35. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Хряк (?), 16-Фев-18, 15:18 
Можно подробнее? Есть биндинг?
Ответить | Правка | Наверх | Cообщить модератору

145. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 06:48 
А для Erlang нет биндинга к MFC?
Ну так чисто поржать.
Ответить | Правка | Наверх | Cообщить модератору

76. "Релиз языка программирования Rust 1.24"  +3 +/
Сообщение от Аноним (-), 16-Фев-18, 18:16 
>>  Vala это обертка над Си да еще и заточенная исключительно на GTK.
> Не вводите людей в заблуждение, это не так: vala - это не обертка над Си, его компилятор транслирует код написанный на vala с

Это и есть "обертка над си". Не пойму, чего в этом особенного.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

169. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Другой Аноним (?), 17-Фев-18, 16:52 
Тогда и rust можно назвать обёртка над llvm, ведь по факту это так.
Ответить | Правка | Наверх | Cообщить модератору

171. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 17-Фев-18, 17:13 
> Тогда и rust можно назвать обёртка над llvm, ведь по факту это так.

Можно. Разрешаю. Такая же обертка, как и шланг.
А если уж не различать "по факту" между компилятором высокоуровневого ЯП и низкоуровневым бэкэндом-инфраструктурой для компилирования, то тогда и питоны с жабаскриптами тоже считай почти нативщина,  ведь там же есть JIT, которые суть обертка ...

Ответить | Правка | Наверх | Cообщить модератору

94. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Аноним (-), 16-Фев-18, 20:17 
> Vala - штука довольно мощная, гибкая и точно должна понравится сишникам. А
> что rust? Я сишник, мне должен понравиться rust?

Rust должен нравиться плюсовикам, но никак не сишникам.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

103. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Orduemail (ok), 16-Фев-18, 20:51 
> Vala - штука довольно мощная, гибкая и точно должна понравится сишникам.

Нет. Мне Vala совершенно не нравится. ООП -- sucks. Все эти вызовы через виртуальные таблицы методов -- замечательный способ оттормозить процессор в самую крайность. То есть, во-первых, вообще не очень ясно зачем C'шнику нужен ООП, и какой он к чертям C'шник, если ему ООП нужен. А во-вторых, если всё же нужен, то лучше уж C++: тот даёт больше контроля над тем, что будет вызываться через vtable, а что нет, да и оптимизирует он виртуальные вызовы, я полагаю, лучше, чем если их сначала компилять в C, а затем из C куда-то ещё. Чтобы соптимизировать виртуальный вызов, оптимизатор должен работать в абстракциях типов с виртуальными методами, C'шный оптимизатор так не умеет.

Vala -- это неплохая замена для Python'а. Может быть. По идее должно быть быстрее, и вообще менее требовательно по ресурсам. Но для C -- это не замена нисколько.

> что rust? Я сишник, мне должен понравиться rust?

Нет, не должен. Но я бы рекомендовал глянуть.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

39. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Крутой аноним (?), 16-Фев-18, 15:31 
> Как оно по сравнению с Vala ?

Вроде разработчикам Gnome очень нравиться Rust и они работают над его интеграцией,
пока что наравне с Vala, а потом кто знает, много было постов на https://www.reddit.com/r/rust/ об этом.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

46. "Релиз языка программирования Rust 1.24"  –1 +/
Сообщение от Хряк (?), 16-Фев-18, 16:01 
В gnome-builder в меню выбора языка есть: С, С++, С#, Vala, Python, JavaScript и все.
Rust отсутствует. Считаю, это показатель.
Ответить | Правка | Наверх | Cообщить модератору

152. "Релиз языка программирования Rust 1.24"  +/
Сообщение от Крутой аноним (?), 17-Фев-18, 11:41 
> В gnome-builder в меню выбора языка есть: С, С++, С#, Vala, Python, JavaScript и все.

Rust отсутствует. Считаю, это показатель.

https://medium.com/@alex285/rust-rls-on-gnome-builder-g...

Ответить | Правка | Наверх | Cообщить модератору

88. "Релиз языка программирования Rust 1.24"  +/
Сообщение от smuzihleb (?), 16-Фев-18, 20:09 
это тем патлатым придуркам на скутерах, что испоганили гном? не мудрено - их патлатые друзья уже испоганили файрфокс
Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру