The OpenNET Project / Index page

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



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

Оглавление

Линус Торвальдс не исключил возможность интеграции поддержки Rust в ядро Linux 5.20, opennews (ok), 22-Июн-22, (0) [смотреть все]

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


232. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +3 +/
Сообщение от _kp (ok), 23-Июн-22, 02:42 
А смысл? По проблемам человечкого фактора с Си он одинаков.
А синтаксис, помимо многословности, деревянный, логика исполнения неоднозначная.
Помимо begin end, в исходнике ещё круглых скобок требуется заметно больше чем на Си.

За одно объявление переменных,там, далеко, где то вначале, неплохо бы автору по пальцам настучать.

Во времена Delphi приходилось переписывать с Си на Паскаль. В итоге получали, более многословный и менее читаемый код, с проблемами из за неоднозначной логики его исполнения. Битовые поля и работа с указателями зерез задницу, плюс куча костыльных пременных.
В общем, выходит только хуже.

В принципе, если хочется, драйвер возможно написать и на Паскале и на Си++, но он будет в таком виде никому не нужен.

И... если человек утвержает, что на Паскале __поприятнее__ писать "дрова", то именно драйвера он точно не писал.

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

267. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +2 +/
Сообщение от Аноним (138), 23-Июн-22, 13:23 
Как же вам печёт от begin end и объявления переменных, любо дорого посмотреть. Видимо си правда оказывает какое-то влияние на мышление.

>круглых скобок требуется заметно больше чем на Си

Медитируй:

if (!((ch >= 0x0FF10) && (ch <= 0x0FF19)) ||
     ((ch >= 0x0FF21) && (ch <= 0x0FF3A)) ||
     ((ch >= 0x0FF41) && (ch <= 0x0FF5A)))

Код на паскале сам осилишь.

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

271. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +1 +/
Сообщение от n00by (ok), 23-Июн-22, 13:38 
В С89 объявление переменных было как в Паскале. При этом вложенных процедур там не было, потому и сняли ограничение. И речь тут про ядро, а не холивар языков. В Виндосе некоторые писали драйвера на Дельфи, потом, как правило, переписывали.
Ответить | Правка | Наверх | Cообщить модератору

275. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +/
Сообщение от Аноним (138), 23-Июн-22, 13:57 
Про С89 интересно.

Как это не холивар? А что тогда?

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

490. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +/
Сообщение от Аноним (-), 27-Июн-22, 17:40 
У гну кстати прикольное расширение есть для switch-case, с диапазонами. Но, увы, это не стандарт.
Ответить | Правка | К родителю #271 | Наверх | Cообщить модератору

308. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +/
Сообщение от _kp (ok), 23-Июн-22, 18:16 
>>круглых скобок требуется заметно больше чем на Си
> Код на паскале сам осилишь.

Конечно, я знаю про паскалевский case c диапазонами. В данном случае жирный плюс.

Но когда надо перенести батарею подобных и хуже конструкций:
chk_rec( get_iRec() + (i>=1 && i <= 4 ? (const uint32_t[]){ 1500, 600, 65, 8 }[i-1] : 1), skip);

То плодятся временные переменные и константы, и раскидываются в разных местах, что от case блока элегантнее не становится.

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

309. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +1 +/
Сообщение от Аноним (138), 23-Июн-22, 18:39 
В том примере прямой перевод if (без всяких case) убирает половину сишных скобок.

>подобных и хуже конструкций

Почему-то не удивлён увидеть именно сишный код.

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

505. "Линус Торвальдс не исключил возможность интеграции поддержки..."  +/
Сообщение от Аноним (505), 28-Июн-22, 12:11 
> Медитируй:
>
> if (!(ch >= 0x0FF10 && ch <= 0x0FF19 ||
>       ch >= 0x0FF21 && ch <= 0x0FF3A ||
>       ch >= 0x0FF41 && ch <= 0x0FF5A))

Починил. У автора вашего варианта проблемы с приоритетами операторов, причём явные, раз уж он даже не знает, чей приоритет выше: логического умножения или логического сложения.

А в Паскале, да, надо везде ставить скобки, как вы и написали. Да ещё и вместо &&/|| использовать and/or.

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

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

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




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

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