The OpenNET Project / Index page

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



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

Оглавление

Рассматривается возможность перевода NTPsec на язык Rust или Go, opennews (ok), 10-Янв-17, (0) [смотреть все]

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


60. "Рассматривается возможность перевода NTPsec на язык Rust или..."  –1 +/
Сообщение от Аноним (-), 10-Янв-17, 15:57 
> http://blog.llvm.org/2011/05/what-every-c-programmer-should-...
> Такие откровения от разработчиков современных компиляторов, наводят на мысли, что C имеет
> фатальные недостатки, которые невозможно устранить, не ломая конкретно совместимость
> с существующей базой кода на C.
> И именно такие мысли, я подозреваю, сделали неотвратимым появление всяких там rust
> и Go.

Разработчики современных компиляторов сами себя в эту ситуацию загнали, некоторые оптимизации которые они используют и их реализация вообще спорны. И к языку как таковому это по моему не совсем относится, C всегда был "ассемблером с человеческим лицом".

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

64. "Рассматривается возможность перевода NTPsec на язык Rust или..."  –2 +/
Сообщение от Аноним (-), 10-Янв-17, 16:14 
клоун: описанные оптимизации невозможны без ОЧЕНЬ несбалансированных настроек компилятора.

Взять первую описанную проблему - удаление строки dead = *p. Даже если переменная dead не используется, разыменование является значащей операцией и компилятор до проверки на NULL эту строчку никогда не удалит.

Однажды автора подобных статей поймали на прямой лжи и он заявил что просто выдумал свои примеры.

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

72. "Рассматривается возможность перевода NTPsec на язык Rust или..."  +/
Сообщение от Orduemail (ok), 10-Янв-17, 17:52 
> разыменование является значащей операцией

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

А чтобы не быть голословным, вот результат компиляции
$ cat tmp.c
void fn(int *p)
{
    int dead = *p;
    if(!p)
        return;
    *p = 4;
}
$ gcc -v
...
gcc version 4.9.4 (Gentoo 4.9.4 p1.0, pie-0.6.4)
$ gcc -Wall -O2 -S tmp.c
tmp.c: In function 'fn':
tmp.c:3:6: warning: unused variable 'dead' [-Wunused-variable]
  int dead = *p;
      ^
$ cat tmp.s
    .file    "tmp.c"
    .section    .text.unlikely,"ax",@progbits
.LCOLDB0:
    .text
.LHOTB0:
    .p2align 4,,15
    .globl    fn
    .type    fn, @function
fn:                                        ; <--- точка входа функции
.LFB0:
    .cfi_startproc
    testq    %rdi, %rdi         ; проверка на нуль
    je    .L1                           ; если нуль, то го на выход
    movl    $4, (%rdi)         ; иначе: *p = 4
.L1:
    rep ret                            ; собственно выход
    .cfi_endproc
.LFE0:
    .size    fn, .-fn
    .section    .text.unlikely
.LCOLDE0:
    .text
.LHOTE0:
    .ident    "GCC: (Gentoo 4.9.4 p1.0, pie-0.6.4) 4.9.4"
    .section    .note.GNU-stack,"",@progbits

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

73. "Рассматривается возможность перевода NTPsec на язык Rust или..."  –2 +/
Сообщение от Аноним (-), 10-Янв-17, 17:57 
клоун: именно потому, что она может повлиять на логику выполнения программы, эта операция является значащей.

То, компилятор не учитывает это простое правило, многое говорит о его качестве.

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

75. "Рассматривается возможность перевода NTPsec на язык Rust или..."  +/
Сообщение от Аноним84701 (ok), 10-Янв-17, 18:07 
> клоун: именно потому, что она может повлиять на логику выполнения программы, эта
> операция является значащей.
> То, компилятор не учитывает это простое правило, многое говорит о его качестве.

Оно?
clang (3.9.1) -O3 -S -masm=intel test.c


contains_null_check:                    # @contains_null_check
        .cfi_startproc
# BB#0:                                 # %entry
        push    rbp
.Ltmp0:
        .cfi_def_cfa_offset 16
.Ltmp1:
        .cfi_offset rbp, -16
        mov     rbp, rsp
.Ltmp2:
        .cfi_def_cfa_register rbp
        test    rdi, rdi
        je      .LBB0_2
# BB#1:                                 # %if.end
        mov     dword ptr [rdi], 4
.LBB0_2:                                # %cleanup
        pop     rbp
        ret


Современного интелькомпилятора не имею, есть МСшный (VS 2010), но доставать хард с образом виртуалки, честно говоря, влом.

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

79. "Рассматривается возможность перевода NTPsec на язык Rust или..."  +/
Сообщение от Аноним (-), 10-Янв-17, 18:41 
Напишите, пожалуйста, название книги (если она вообще есть в электронном варианте)
Ответить | Правка | Наверх | Cообщить модератору

90. "Рассматривается возможность перевода NTPsec на язык Rust или..."  +/
Сообщение от жабабыдлокодер (ok), 10-Янв-17, 20:22 
А потом ставим этот самый Автокад на нормальный компьютер, на котором громадные карты МапИнфо и ИнГео летают - и, вуаля! Шевелится еле-еле, тормоза во всем страшные. Алгоритмы, может, и оптимизированы, а вот память жрет как не в себя. Результат - что оптимизируй, что не оптимизируй, а микрософтовские индусы только одну субстанцию и производить умеют.
Ответить | Правка | Наверх | Cообщить модератору

91. "Рассматривается возможность перевода NTPsec на язык Rust или..."  –1 +/
Сообщение от Тот_Самый_Анонимус (?), 10-Янв-17, 20:29 
>Они написали 90 алгоритмов для каждого из углов и оптимизировали их все

То, что углов больше 90, почему-то не рассматривается. Может это просто гонево?

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

101. "Рассматривается возможность перевода NTPsec на язык Rust или..."  +2 +/
Сообщение от Аноним (-), 11-Янв-17, 00:24 
> Может это просто гонево?

Его фраза "для компании AutoCAD" прекрасно демонстрирует, что он даже название программы от названия компании-разработчика отличить не может. В сочетании с остальным текстом комментария получается, что с вероятностью, стремящейся к 100%, это была всего-лишь попытка потешить своё клоунское ЧСВ.

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

105. "Рассматривается возможность перевода NTPsec на язык Rust или..."  –1 +/
Сообщение от Аноним (-), 11-Янв-17, 01:53 
клоун: Эта история мне нравится по двум причинам. Во-первых, она мотивирует. А во-вторых она написана в одной из таких книг, про которую все знают и говорят, но которую никто никогда не читал. Как библия у христиан. А для программистов это...

Что-то уже многовато спойлеров :).

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

106. "Рассматривается возможность перевода NTPsec на язык Rust или..."  –1 +/
Сообщение от Тот_Самый_Анонимус (?), 11-Янв-17, 05:28 
> Что-то уже многовато спойлеров :).

Ты красиво обошёл замечание, что углы не ограничиваются градусами. Видать эта информация оказалась тебе не по зубам.

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

108. "Рассматривается возможность перевода NTPsec на язык Rust или..."  +/
Сообщение от . (?), 11-Янв-17, 06:14 
Он клован, а не математик (\программист\ботаник\Ынженер) ...
Зачем кловану радианы? Оне не смешные :)
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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