|
|
|
|
|
6.40, Аноним (40), 15:13, 20/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Даже больше... поверь старому гнентушнику. Часа два (если у тебя не 8-ядерный ксеон конеш)
| |
6.57, letsmac (ok), 00:47, 21/09/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Когда у меня был первый пень - все говорили - о всего за час :-)
| |
|
|
|
|
|
1.6, Anonymoustus (ok), 11:58, 20/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> Добавлена реализация специфичного для GCC выражения "asm goto", которое позволяет выполнить переход из ассемблерного inline-блока к метке в коде на языке Си.
Вот это правильно! Даёшь ещё более запутанный код!
| |
|
2.9, Аноним (9), 12:09, 20/09/2019 [^] [^^] [^^^] [ответить]
| +7 +/– |
В ассемблере нет ни while, ни for, если ты не в курсе. Только goto (jmp* в x86, b* в arm).
| |
2.11, Аноним (10), 12:16, 20/09/2019 [^] [^^] [^^^] [ответить]
| +10 +/– |
goto-фобам среди нормальных программистов делать нечего, это мощный инструмент, который имеет свое применение к примеру для выхода из вложенных циклов, при чем читаемость гораздо выше, чем при использовании разных флагов. Это мощный инструмент, но который надо использовать с умом
| |
|
3.13, commiethebeastie (ok), 12:20, 20/09/2019 [^] [^^] [^^^] [ответить]
| –5 +/– |
Из вложенных циклов надо выходить выносом оных в отдельные функции, а не созданием говнолапши с goto и флагами.
| |
|
4.15, A.Stahl (ok), 12:40, 20/09/2019 [^] [^^] [^^^] [ответить]
| +21 +/– |
А я-то думал что хорошим тоном является вынос в функции логически законченных блоков, а оказывается функции нужны для выхода из вложенных циклов. Век живи -- век учись...
| |
|
5.25, Аноним (25), 13:17, 20/09/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
> является вынос в функции логически законченных блоков
Как бы и да, и нет. Смотря что и где. Для повышения читаемости и поддерживаемости кода иногда лучше просто куски убрать в отдельные функции. А потом и станет очевидным, на какие логические блоки разделить можно. И вот в таком случае как пример вынос цикла или куска цикла в отдельную функцию - вполне ок, вместо лапши goto или каких-нибудь break. Если нет каких-то особых требований по стилю, производительности, чему-то ещё... Но, судя по вашим утверждениям выше, вы будете упираться и настаивать на своём. А ведь конкретных подход оч. сильно зависит от проекта.
| |
|
6.55, Sw00p aka Jerom (?), 22:54, 20/09/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
>Для повышения читаемости и поддерживаемости кода иногда лучше просто куски убрать в отдельные функции.
и срать в стек
>А ведь конкретных подход оч. сильно зависит от проекта.
бред, все должно сводиться к оптимальному набору инструкций.
| |
|
7.65, Аноним (65), 15:36, 21/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
>>Для повышения читаемости и поддерживаемости кода иногда лучше просто куски убрать в отдельные функции.
> и срать в стек
"Преждевременная оптимизация есть корень всех зол" (с)
System V AMD64 ABI для первых 6-ти параметров использует регистры процессора. Это в случае, если не будет произведена подстановка (inline) функции.
>>А ведь конкретных подход оч. сильно зависит от проекта.
> бред, все должно сводиться к оптимальному набору инструкций. | |
|
|
9.87, Аноним (87), 11:29, 22/09/2019 [^] [^^] [^^^] [ответить] | +/– | В самом деле, давайте, наконец, почитаем Цитату из System V AMD64 ABI приводить... текст свёрнут, показать | |
|
|
11.101, Аноним (101), 13:02, 23/09/2019 [^] [^^] [^^^] [ответить] | +1 +/– | Ой, ой, полегче на поворотах с экзаменационный и индивидуальным подходом на публ... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
4.22, НяшМяш (ok), 13:15, 20/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Лейблы даже в javascript есть для выхода из вложенных циклов. Это мощный инструмент, особенно когда ты не можешь сказать компилятору, что эта функция должна быть заинлайнена.
| |
4.123, КО (?), 10:04, 24/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Ага это сразу сделает все понятным. :)
Ну даже в случае тривиальнейшего поиска элемента по n-мерной матрице.
| |
|
3.27, Аноним (27), 13:35, 20/09/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Это мощный инструмент для убогих языков. В нормальных языках брейку можно сказать, куда именно выходить.
| |
|
|
5.32, None (??), 14:10, 20/09/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Тем, что break прикончит всё сам, а после goto нужно убирать.
| |
5.34, Илья (??), 14:27, 20/09/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Давайте вы покажете, как вы используете своё гото на примере? Только, пожалуйста, больше контекста. Хотя бы строк 200
| |
|
6.46, Аноним (65), 17:03, 20/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Давайте вы покажете, как вы используете своё гото на примере? Только, пожалуйста,
> больше контекста. Хотя бы строк 200
Смотрите #26 и прекращайте выдумывать новые контексты.
| |
|
7.80, Аноним (78), 03:30, 22/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Example:
'''
struct some_t *some(const void *const args) {
const int err;
struct some_t *result;
result = malloc(...);
if (result == nullptr) {
err = enomem;
goto out;
}
for (iterator i = c.first(); i++; i != nullptr) {
if (...) {
err = 2;
goto out;
} else {
result ...
}
}
err = 0;
out:
if (err != 0) {
some_free(result);
rsult = nullptr;
}
return result;
}
'''
| |
|
|
|
|
3.53, Аноним (53), 19:54, 20/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Настоящие программисты используют продолжения, а на ваше гоуту смотрят как на детскую игрушку.
| |
|
4.64, Аноним (65), 15:34, 21/09/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Настоящие программисты используют продолжения, а на ваше гоуту смотрят как на детскую
> игрушку.
а кто-то понимает, что goto суть рекурсивный вызов.
| |
|
|
2.26, Аноним (65), 13:26, 20/09/2019 [^] [^^] [^^^] [ответить] | –4 +/– | Упрощай Для тебя ведь код не запутан, не так ли code static __always_inline ... большой текст свёрнут, показать | |
|
|
4.63, Аноним (65), 15:32, 21/09/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Скажи ещё, что это я жаловался на запутанность, которую якобы даст goto, а не ты. ;)
| |
|
5.67, Anonymoustus (ok), 17:48, 21/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Скажи ещё, что это я жаловался на запутанность, которую якобы даст goto,
> а не ты. ;)
Разве я жаловался? Наоборот же, анон, я горячо приветствую каждое прогрессивное начинание. Выпрыгивание из ассемблерной вставки куда-нибудь в сишечный код подальше очень и очень улучшит понятность и управляемость программы. Я ни секунды не сомневаюсь в этом. Я за прогресс!
| |
|
6.86, Аноним (87), 11:24, 22/09/2019 [^] [^^] [^^^] [ответить]
| –5 +/– |
>> Скажи ещё, что это я жаловался на запутанность, которую якобы даст goto,
>> а не ты. ;)
> Разве я жаловался? Наоборот же, анон, я горячо приветствую каждое прогрессивное
> начинание.
То есть вообще не понимаешь, о чём в идёт речь новости. Объясняю. Код с таким goto существует давно. Добавили возможность трансляции имеющегося кода.
| |
|
|
|
|
|
1.14, Аноним (14), 12:29, 20/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
> Обеспечено преобразование вызовов memcmp в bcmp в некоторых ситуациях.
Зачем?
> функций с типом void
Функция не может иметь тип void. Функция может возвращать void.
| |
|
2.56, Sw00p aka Jerom (?), 23:22, 20/09/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
>Функция не может иметь тип void.
как и вообще типы, ибо функция - не данные (получаемые, возвращаемые и т.д.), а набор инструкций. Про функции высшего порядка промолчу.
| |
|
1.16, Аноним (16), 12:45, 20/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>В компоновщик LLD добавлена экспериментальная возможность партицирования, позволяющая разделить одну программу на несколько частей, каждая из которых размещается в отдельном ELF-файле. Указанная возможность позволяет запускать основную часть программы, которая по мере необходимости в процессе работы будет подгружать остальные компоненты
DOS overlay?!
Всё новое - хорошо забытое старое…
| |
|
2.41, Ordu (ok), 15:54, 20/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Почему же забытое? Ты мог это делать через dlopen/dlclose сколько угодно.
| |
|
3.81, Аноним (78), 03:33, 22/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Мог прилагать усилия, а теперь оно само но вопрос про оверлеи они были сами или их надо было деать
| |
|
|
|
|
3.36, Аноним (36), 14:41, 20/09/2019 [^] [^^] [^^^] [ответить]
| +4 +/– |
Может еще смузи не пить? Читать новости давно не в тренде (чиатать надо только заголовки не более 140 символов).
| |
|
|
|
2.29, Аноним (28), 13:49, 20/09/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
"The LLVM Project is a collection of modular and reusable compiler and toolchain technologies."
Ну да, не совсем точный перевод
| |
|
1.30, anonymuous (?), 13:53, 20/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Товарищь админ, не используйте пожалуйста расшифровку (Low Level Virtual Machine). На сегодняшний день это уже не так, и LLVM просто бренд, который никак ни расшифровывается:
"The name "LLVM" was once an acronym, but is now just a brand for the umbrella project"
цитата взята от: http://www.aosabook.org/en/llvm.html
на эту книгу есть ссылка из официальной документации: http://llvm.org/docs/ (Intro to LLVM)
| |
1.33, Аноним (33), 14:15, 20/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Во FreeBSD 12 кое-что начало компилироваться с -flto=full. Но надо использовать егойный /usr/local/llvm90/bin/ld.lld. Firefox/Thunderbird у мну не получилось :(
| |
|
|
3.73, meantraitor (?), 22:24, 21/09/2019 [^] [^^] [^^^] [ответить]
| +2 +/– |
Во время линк-тайм оптимизаций нет никаких языков и границ между ними.
Есть кривые руки авторов компилятора rust.
| |
|
4.74, Ordu (ok), 22:50, 21/09/2019 [^] [^^] [^^^] [ответить] | –1 +/– | Теоретически Все такие заявления теоретичны по своей сути, и большинство попыто... большой текст свёрнут, показать | |
|
5.103, meantraitor (?), 14:54, 23/09/2019 [^] [^^] [^^^] [ответить]
| +1 +/– |
Я-то эту статью прочитал. И, в отличие от тебя, понял, что там написано.
И как компиляторы работают я знаю получше тебя, так что не надо меня поучать.
| |
|
6.104, Ordu (ok), 18:44, 23/09/2019 [^] [^^] [^^^] [ответить] | –1 +/– | Это видно, просто на лбу написано Что ж ты глупости такие говоришь тогда У мен... большой текст свёрнут, показать | |
|
7.125, meantraitor (?), 16:04, 24/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Ну хорошо, допустим, я тупица, теоретик и не видел ни одного компилятора.
Просвети же меня, о мудрейший, какие такие свойства раста мешали использованию Rust+C LTO?
Я еще, видимо, и английский не понимаю. Может твои объяснения по-русски пойму?
| |
|
8.128, Ordu (ok), 17:02, 24/09/2019 [^] [^^] [^^^] [ответить] | +/– | Я где-то говорил, что свойства раста мешали использованию Rust C Ты продолжаешь... большой текст свёрнут, показать | |
|
|
10.132, Ordu (ok), 18:02, 24/09/2019 [^] [^^] [^^^] [ответить] | +/– | Да, естественно, я начал возражать, заявив, буквально следующее Теоретически н... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
|
|
3.47, Аноним (65), 17:05, 20/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
> Если зарелизили, то релиз. Если выпустили, выпуск. Если наваяли, ...
Не, наоборот. Релизят выпуск, а выпускают релиз. Иначе тавтология получается :)
| |
|
2.83, Аноним (78), 03:36, 22/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Есть спринты (майлстоны) их результат это выпуск,
а есть функиональные требования от заказчика и их удовлетворяющий выпуск это релиз.
А может и на оборот
| |
|
|
2.61, Аноним (58), 11:47, 21/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Кто-нибудь собирал ядро клангом на х86_64 и может объяснить какой-то практический профит? Быстрее компиляция или это как-то отразилось на работе системы?
| |
|
3.84, Аноним (78), 03:37, 22/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Варнингов больше будет - выше шанс найти ощибок выхода за границы и тд
| |
|
2.136, Аноним (33), 16:31, 26/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
ни в чём. при компиляции сначала придётся включить игнор [не помню уже каких именно] ворнингов. а затем ловить корки ядра.
| |
|
1.59, Аноним (59), 08:44, 21/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
> компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.
Зачем мне это? Компилятор во время я компиляции должен давать сразу бинарник заточенный под мой проц.
Выполняют компиляцию один раз, во время установки с исходников, с максимальной заточькой под мой проц. Не хочу чтобы исполняемый код изменялся во время компиляции вирусной или каким-то JIT.
| |
|
2.60, Аноним (60), 09:49, 21/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Я хз зачем это в новости, LLVM _может_ использоваться так как описано, но в основном его используют как обычный компилятор под конкретную архитектуру (как GCC, он с ним почти полностью совместим).
Вам может не надо, кому-то JIT надо =)
| |
|
1.72, JL2001 (ok), 22:14, 21/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> проекты Android и ChromeOS уже переведены на использование Clang для сборки ядра и Google тестирует Clang в качестве основной платформы для сборки ядер для своих рабочих Linux-систем
в чём профит для гугла от этого?
| |
|
2.85, Аноним (78), 03:38, 22/09/2019 [^] [^^] [^^^] [ответить]
| +/– |
Лицензия у ГЦЦ требует лизать ботинки авторам а в кланге только писать что использовался шланг
| |
2.93, Ordu (ok), 21:16, 22/09/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
Уменьшение зоопарка инструментария. gcc крайне сложно использовать для чего-либо, кроме компиляции. llvm можно использовать для подсветки синтаксиса, для написания статических анализаторов, и для любых других задач требующих парсера языка. При желании можно использовать не только фронтенд llvm, но и бекенд. С gcc тоже так можно, но теоретически, потому что практически проще использовать llvm: какой бы убогой не была его документация, у gcc всё ещё хуже.
| |
2.95, Аноним (95), 21:31, 22/09/2019 [^] [^^] [^^^] [ответить]
| –1 +/– |
клэнг - это изначально кросс-компилятор, по определению. Ставишь клэнг из пакетов - и нужна только sysroot. GCC же нужно компилировать свой для каждой платформы - в нём пути жёстко захардкожены. В результате можно будет не поставлять компиляторы в составе ndk.
| |
|
1.124, Андрей (??), 15:37, 24/09/2019 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>В компоновщик LLD добавлена экспериментальная возможность партицирования, позволяющая разделить одну программу на несколько частей, каждая из которых размещается в отдельном ELF-файле. Указанная возможность позволяет запускать основную часть программы, которая по мере необходимости в процессе работы будет подгружать остальные компоненты (например, можно выделить встроенный PDF-просмотрщик в отдельный файл, который будет загружаться только когда пользователь открыл PDF-файл).
Это уже было в TurboPascal ещё в 90е... :)
| |
|