The OpenNET Project / Index page

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



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

Оглавление

Доступен язык программирования Rust 1.19 , opennews (??), 23-Июл-17, (0) [смотреть все]

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


14. "Доступен язык программирования Rust 1.19 "  +/
Сообщение от Comdiv (ok), 23-Июл-17, 16:59 
Ну да, внедрив одну не самую прекрасную возможность из Algol68, они не могут остановиться и  комбинируют её с другой не лучшей чертой - подчёркнутой неструктурностью потока выполнения. Авторы языка, пытаясь решить одни проблемы кодирования, возводят в стандарт вещи, приводящие к другим проблемам кодирования.
Ответить | Правка | Наверх | Cообщить модератору

15. "Доступен язык программирования Rust 1.19 "  +/
Сообщение от nobody (??), 23-Июл-17, 20:08 
Ну какие тут конкретно "проблемы кодирования"? В том же С++ это делается так:

auto x = []{ for(...) return 7; }();

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

18. "Доступен язык программирования Rust 1.19 "  –1 +/
Сообщение от Comdiv (ok), 24-Июл-17, 01:19 
> Ну какие тут конкретно "проблемы кодирования"?

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

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

23. "Доступен язык программирования Rust 1.19 "  +3 +/
Сообщение от Аноним (-), 24-Июл-17, 13:06 
Это нововведение никак не нарушает структурность кода. Это простой ретурн из выражения, которого раньше почему-то не было во отличие от тех же ифов.

В MISRA C запрещены goto и неявная рекурсия, а не возвращения значения из цикла.

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

26. "Доступен язык программирования Rust 1.19 "  –1 +/
Сообщение от Comdiv (ok), 24-Июл-17, 13:55 
> Это нововведение никак не нарушает структурность

Нарушает, так как струтктурность подразумевает три вида переходов: последовательное, ветвление, цикл по условию. Никаких прыжков из середины цикла не предусмотрено в том числе.

> В MISRA C запрещены goto и неявная рекурсия,  а не возвращения значения из цикла

Кроме этого там запрещены continue и return из середины функции. Один(не больше) break, хотя и нарушает структурность, но дозволен из соображений оптимальности. Возвращение значения из цикла в MISRA C не запрещено, потому что его нет в самом C, если только Вы не имеете ввиду return, так он, как раз, запрещён.

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

31. "Доступен язык программирования Rust 1.19 "  +1 +/
Сообщение от Анонимо (?), 24-Июл-17, 18:01 
> Нарушает, так как струтктурность подразумевает три вида переходов: последовательное,
> ветвление, цикл по условию.

Вы так говорите, как будто:


int foo(const char *arg1, int arg2, ... arg5) {
  if (!arg1) return INVALID_ARG1;
  if (arg2 < 42) return INVALID_ARG2;
..
  return result;

от нечистого, зато

int foo(const char *arg1, int arg2, ... arg5) {
  if(arg1) {
    if(arg2 >=42) {
      ...
    } else {
      result = INVALID_ARG2;
    }
  } else {
    result = INVALID_ARG1;
  }
  return result;
}

return result;
}


Прям образец читаемости и вникаемости.

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

33. "Доступен язык программирования Rust 1.19 "  –2 +/
Сообщение от Comdiv (ok), 24-Июл-17, 20:45 

if (NULL == arg1) result = INVALID_ARG1;
else if (arg2 < 42) result = INVALID_ARG2;
else {
....
}
end_code(context);
return result;

При неструктурном программировании проблемы с end_code случаются регулярно, в том числе и критические, а "образец читаемости и вникаемости" (с) получается, как правило, от низкой культуры кодирования, которая, в свою очередь, прививается при использовании неструктурного подхода.
Ответить | Правка | Наверх | Cообщить модератору

28. "Доступен язык программирования Rust 1.19 "  –3 +/
Сообщение от Аноним (-), 24-Июл-17, 15:06 
проблемы начинаются когда внутрь цикла начинают пихать десять выходов в разных "местах", по сути оптимальным было бы отсутствие операции выхода из цикла(оставить только окончание итерации и переход к условию)
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

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

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




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

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