The OpenNET Project / Index page

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



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

Оглавление

Релиз языка программирования Rust 1.20, opennews (??), 01-Сен-17, (0) [смотреть все]

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


1. "Релиз языка программирования Rust 1.20"  –20 +/
Сообщение от Аноним (-), 01-Сен-17, 12:41 
чего только не придумают, лишь бы не писать на си-89.
Ответить | Правка | Наверх | Cообщить модератору

10. "Релиз языка программирования Rust 1.20"  +9 +/
Сообщение от A.Stahl (ok), 01-Сен-17, 13:38 
89?
Ты точно знаешь как выглядит код на С89? Даже во времена борландовского турбо-си все смеялись над С89.
Ответить | Правка | Наверх | Cообщить модератору

28. "Релиз языка программирования Rust 1.20"  +3 +/
Сообщение от dq0s4y71 (ok), 01-Сен-17, 16:39 
Ты сам, похоже, не знаешь, как выглядит код на С89. На нём, вообще-то, чуть менее чем полностью ядро написано. А смеялись вы, наверное, над K&R C. Ну и к слову, Турбо си появился когда никакого С89 ещё в помине не было.
Ответить | Правка | Наверх | Cообщить модератору

33. "Релиз языка программирования Rust 1.20"  +6 +/
Сообщение от Orduemail (ok), 01-Сен-17, 17:41 
> На нём, вообще-то, чуть менее чем полностью ядро написано.

Это в том смысле, что если попытаться его скомпилировать с --std=c99, то компилятор будет ругаться менее чем на 5% строк? С тем же успехом можно для любой C'шной программы и любого C'шного стандарта начиная с K&R, сказать, что эта программа написана чуть менее чем полностью в рамках выбранного стандарта.

В ядре, мы видим, например, множество inline функций, мы видим, например, активное использование членов структур с неопределённым размером, то есть что-то в стиле:
    struct dynarr {
        size_t size;
        uint8_t data[];
    }

Ядро активно использует фичи C99, и поэтому не надо натягивать сову на глобус и заявлять, что оно "чуть менее чем полностью написано на C89".

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

38. "Релиз языка программирования Rust 1.20"  +/
Сообщение от dq0s4y71 (ok), 01-Сен-17, 18:32 
> Это в том смысле, что если попытаться его скомпилировать с --std=c99, то
> компилятор будет ругаться менее чем на 5% строк? С тем же
> успехом можно для любой C'шной программы и любого C'шного стандарта начиная
> с K&R, сказать, что эта программа написана чуть менее чем полностью
> в рамках выбранного стандарта.

Чот не понял. Если взять любой стандарт и написать в нём программу, то она будет написана в этом стандарте чуть менее чем полностью, не вопрос :) Или ты хочешь сказать, что каждый предыдущий стандарт является подмножеством следующего?

> В ядре, мы видим, например, множество inline функций, мы видим, например, активное
> использование членов структур с неопределённым размером, то есть что-то в стиле:
>     struct dynarr {
>         size_t size;
>         uint8_t data[];
>     }

Тогда это расширения GNU были. -std=gnu89 называется.

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

43. "Релиз языка программирования Rust 1.20"  +/
Сообщение от Orduemail (ok), 01-Сен-17, 19:10 
>> Это в том смысле, что если попытаться его скомпилировать с --std=c99, то
>> компилятор будет ругаться менее чем на 5% строк? С тем же
>> успехом можно для любой C'шной программы и любого C'шного стандарта начиная
>> с K&R, сказать, что эта программа написана чуть менее чем полностью
>> в рамках выбранного стандарта.
> Чот не понял. Если взять любой стандарт и написать в нём программу,
> то она будет написана в этом стандарте чуть менее чем полностью,
> не вопрос :) Или ты хочешь сказать, что каждый предыдущий стандарт
> является подмножеством следующего?

Я хочу сказать, что фраза "чуть менее чем полностью" по отношению к стандарту звучит очень неопределённо. Я предложил выше один из способов формализовать и проверить, и заявляю, что этот способ любую программу на C сможет отнести к любому стандарту. Это не значит, что твои слова бессмысленны вообще, но они бессмысленн без уточнения, что именно ты имеешь в виду под "чуть менее чем полностью".

>> В ядре, мы видим, например, множество inline функций, мы видим, например, активное
>> использование членов структур с неопределённым размером, то есть что-то в стиле:
>>     struct dynarr {
>>         size_t size;
>>         uint8_t data[];
>>     }
> Тогда это расширения GNU были. -std=gnu89 называется.

Так мы говорим о C89 или о GNU89? Мне казалось, что о первом, не?

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

51. "Релиз языка программирования Rust 1.20"  +/
Сообщение от dq0s4y71 (ok), 01-Сен-17, 19:38 
> Я хочу сказать, что фраза "чуть менее чем полностью" по отношению к
> стандарту звучит очень неопределённо. Я предложил выше один из способов формализовать
> и проверить, и заявляю, что этот способ любую программу на C
> сможет отнести к любому стандарту. Это не значит, что твои слова
> бессмысленны вообще, но они бессмысленн без уточнения, что именно ты имеешь
> в виду под "чуть менее чем полностью".

Ну ок, неудачно выразился. Я чо хотел сказать. Там чел выше пишет, типа, ты не знаешь, как С89 выглядит. А он выглядит как подавляющее большинство сишного кода, в т.ч. ядро. Редко когда С99 или K&R в исходниках встречаются.

> Так мы говорим о C89 или о GNU89? Мне казалось, что о
> первом, не?

Так GNU89 и есть C89 + расширения ГНУ. Эти расширения потом в стандарт перешли.

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

58. "Релиз языка программирования Rust 1.20"  +/
Сообщение от Orduemail (ok), 01-Сен-17, 20:27 
>> Я хочу сказать, что фраза "чуть менее чем полностью" по отношению к
>> стандарту звучит очень неопределённо. Я предложил выше один из способов формализовать
>> и проверить, и заявляю, что этот способ любую программу на C
>> сможет отнести к любому стандарту. Это не значит, что твои слова
>> бессмысленны вообще, но они бессмысленн без уточнения, что именно ты имеешь
>> в виду под "чуть менее чем полностью".
> Ну ок, неудачно выразился. Я чо хотел сказать. Там чел выше пишет,
> типа, ты не знаешь, как С89 выглядит. А он выглядит как
> подавляющее большинство сишного кода, в т.ч. ядро. Редко когда С99 или
> K&R в исходниках встречаются.

В ядре постоянно. Ты полистай хидеры. Не, ну ты прикинь, как писать на C без inline функций? Макросами их оформлять? Так и делали. Загляни в документацию к ncurses, где про 9 функций из 10 написано, что они могут быть макросами. Альтернатива -- писать вручную каждый раз.

Где-то в ядре я видел функцию типа memcpy, что ли, которая заточена на размеры областей памяти до 32 и константное значение для размера, и которая вся из себя inline, что сделано с мыслью о том, что компилятор заинлайнит код, развернёт циклы, и оптимизирует прочь параметр размера массива. В C++ такие штуки делаются через темплиты с целочисленным параметром, в C99 только вот таким вот образом, с надеждой на то, что пользователь этой функции будет понимать, что аргумент size должен быть вычислим на этапе компиляции, в C89 это сделать можно разве что заморочным макросом. То есть в C89 никто в здравом уме не будет заниматься такими оптимизациями, либо вручную скопирует, либо вызовет библиотечную универсальную реализацию memcpy.
Это разные стили написания программ, это разные стили проектирования API.

>> Так мы говорим о C89 или о GNU89? Мне казалось, что о
>> первом, не?
> Так GNU89 и есть C89 + расширения ГНУ. Эти расширения потом в
> стандарт перешли.

C89+расширения ГНУ -- это уже не C89. Это можно называть соответствием стандарту gnu89, можно называть соответствием c89+gnu-extensions, но называть это соответствием c89, значит, натягивать сову на глобус.

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

68. "Релиз языка программирования Rust 1.20"  +/
Сообщение от dq0s4y71 (??), 01-Сен-17, 22:03 
> Не, ну ты прикинь, как писать на C без inline функций? Макросами их оформлять? Так и делали.

Я не делал. Те С89-компиляторы, которыми я пользовался, всегда поддерживали какие-нибудь расширения, и там был inline в каком-нибудь виде, __inline или там #pragma inline...

> C89+расширения ГНУ -- это уже не C89. Это можно называть соответствием стандарту gnu89, можно называть соответствием c89+gnu-extensions, но называть это соответствием c89, значит, натягивать сову на глобус.

Ради бога. Я о том, что все видели, как выглядит С89, но не все об этом знают.

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

77. "Релиз языка программирования Rust 1.20"  +/
Сообщение от Orduemail (ok), 01-Сен-17, 22:38 
Угу. После чего мы заглядываем в код ncurses и видим как выглядит код на c89. Без использования десятка макросов даже функцию объявить невозможно.
Ответить | Правка | Наверх | Cообщить модератору

87. "Релиз языка программирования Rust 1.20"  –1 +/
Сообщение от Аноним (-), 02-Сен-17, 13:07 
Это ж до чего же гoвнокод там, раз уж такие проблемы.
Ответить | Правка | Наверх | Cообщить модератору

89. "Релиз языка программирования Rust 1.20"  –1 +/
Сообщение от лютый жабист__ (?), 02-Сен-17, 16:37 
dq0s4y71, я вижу, ты гуру не только в жабке, но и в сях 8)))
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

91. "Релиз языка программирования Rust 1.20"  +3 +/
Сообщение от Аноним (-), 02-Сен-17, 16:46 
> dq0s4y71, я вижу, ты гуру не только в жабке, но и в сях 8)))

Указателем, маллоком, фри и интринсиком, заклинаю:
изыди, зелененький!


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

49. "Релиз языка программирования Rust 1.20"  +1 +/
Сообщение от Аноним (-), 01-Сен-17, 19:34 
> Ядро активно использует фичи C99

Ядро использует gnu89/gnu90 без всяких "активно"/"пассивно".

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

52. "Релиз языка программирования Rust 1.20"  +/
Сообщение от Orduemail (ok), 01-Сен-17, 20:14 
>> Ядро активно использует фичи C99
> Ядро использует gnu89/gnu90 без всяких "активно"/"пассивно".

Ага. То есть ядро не написано в рамках стандарта C89, так?

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

34. "Релиз языка программирования Rust 1.20"  +1 +/
Сообщение от anonimbl (?), 01-Сен-17, 17:44 
Очевидно, что он не знает. Это же просто клоун, который срет в комментах под каждым постом.
Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

45. "Релиз языка программирования Rust 1.20"  +/
Сообщение от НяшМяш (ok), 01-Сен-17, 19:21 
Хотя казалось бы, уже вроде 1 сентября...
Ответить | Правка | Наверх | Cообщить модератору

61. "Релиз языка программирования Rust 1.20"  +1 +/
Сообщение от Аноним (-), 01-Сен-17, 20:58 
>> как выглядит код на С89. На нём, вообще-то, чуть менее чем полностью ядро написано

В ядре почти каждый драйвер использует инициализацию полей структур по-умолчанию, что появилось только в 99

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

23. "Релиз языка программирования Rust 1.20"  +6 +/
Сообщение от Крутой аноним (?), 01-Сен-17, 15:20 
> чего только не придумают, лишь бы не писать на си-89.

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

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

63. "Релиз языка программирования Rust 1.20"  +/
Сообщение от Аноним (-), 01-Сен-17, 21:02 
> чего только не придумают, лишь бы не писать на си-89.

Особенно, говоря о С89, современные разработчики "любят" декларировать все переменные сразу после начала функции... как в Паскале....

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

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

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




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

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