1.3, Анонин (?), 11:21, 25/08/2023 [ответить] [﹢﹢﹢] [ · · · ]
| –8 +/– |
О... дыряшка и ее дефективные нультерминированные строки будет еще годами портить жизнь людям...
| |
|
2.5, Аноним (5), 11:49, 25/08/2023 [^] [^^] [^^^] [ответить]
| +4 +/– |
Зато все ненавидят Паскаль и его строки с явно указанной длинной и даже не вспоминают, что мода на нультерминирование пошла в какие-то древние времена ДОСа, когда модно было писать программы в стиле "Пока не ноль посылать символ в консоль", а сейчас это наоборот тупая трата времени, т.к. каждый раз приходится сначала считать длину строки, а только потом ее обрабатывать.
| |
|
3.6, Анонин (?), 11:58, 25/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
Какой дос? Это пошло еще с PDP-10/11, а это на минуточку 1970е!
| |
|
4.7, Аноним (5), 12:04, 25/08/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Сорян, я не застал PDP, я помню только ДОС с его бакстерминатед строками. Смысл в том, что тот, кто придумывал Си, очень сильно заморачивался по поводу оптимизации, но проблема в том, что в итоге оказалось, что в среднем это приводило только к ухудшению производительности, т.к. например на один случай, когда оставленные в стеке параметры действительно оказывались нужны, приходилось 10 случаев, когда операция "sub [e|r]sp, n" оказывалась тупо лишней.
| |
|
3.17, анон (?), 14:43, 25/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
кроме строк с терминатором в виде нуля во всех языках, наверно, есть функции читающие строку, где эта функция ждет символ новой строки.
| |
|
4.20, Анонин (?), 14:59, 25/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
Конечно есть. В с++ есть std::getline, в расте stdin().read_line.
Только наличие таких функций не значит, что строки в этих языках null-terminated.
getline возвращает нормальный std::string, read_line изменяет String.
Да, и там, и там есть null-terminated.
И по странному стечению обстоятельств они называются CString или как-то похоже.
| |
|
5.39, Аноним (39), 13:28, 26/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
Раст и С++, это языки с слишком сложной реализацией, в этом их недостаток. Язык программирования с нуль-терминированной строкой - единственно правильный путь.
| |
|
6.59, Аноним (59), 17:29, 08/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Паскаль - язык с очень простой реализацией, но в нём есть нормальные строки
| |
|
|
|
|
2.8, User (??), 12:08, 25/08/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну да, дьявол явно довольно потирал руки в тот момент, когда предлагал отцам-основателям сиё техническое решение. По масштабу порожденных проблем не знаешь, с чем и сравнить - разве что с идеей использовать "=" для присваивания...
| |
|
3.14, Аноним (14), 14:27, 25/08/2023 [^] [^^] [^^^] [ответить]
| –1 +/– |
А чем не естесственно использовать "=" для присваивания? Это же соответсвует написанию математических формул.
| |
|
4.16, Анонимусс (?), 14:34, 25/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
Да, но в математике оно не приводит к непредсказуемым результатам.
А в программировании if (myNumber = 42) может отстрелить ногу. Yoda conditions придумали не просто так.
И по хорошему эти понятия нужно было максимально визуально оделить.
| |
|
5.18, анон (?), 14:46, 25/08/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
Тут скорее тогда проблема не с символом присвоения, а с символом сравнения. И на этот счет есть правило - переменная всегда должна быть справа при сравнении. В яп с неизменяемыми данными это проблема стоит менее просто.
| |
|
6.19, Анонимусс (?), 14:50, 25/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
> переменная всегда должна быть справа при сравнении
но оно работает только с константами
если у тебя сравниваются A и B, то все будет так же плохо))
| |
|
5.47, Аноним (47), 03:58, 28/08/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
> А в программировании if (myNumber = 42) может отстрелить ногу. Yoda conditions
> придумали не просто так.
Ну да. Антибаг. if (42 = myNumber) как минимум в сишке провалится с треском. Стандартная практика там где это важно. Впрочем сейчас как минимум в сях на вон то компилеры норовят варнинг кинуть и без этого. Чтоб неповадно так делать было.
> И по хорошему эти понятия нужно было максимально визуально оделить.
Это не то чтобы визуально должно быть, а на уровне синтаксис чекера. Питону это есс ноне грозит, у него почти все факапы в рантайм вылезают и ему это мертвому припарка.
| |
|
4.21, Аноньимъ (ok), 15:39, 25/08/2023 [^] [^^] [^^^] [ответить]
| +7 +/– |
Не соответствует.
В математике а = в + с не означает (взять значения в и с, сложить их, и записать результат а)
= в математике утверждение, а не последовательность действий.
| |
4.56, Котофалк (?), 15:39, 04/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
Не соответствует по большей части.
a = 1; a = 2; a = b; совершенно корректная запись в программировании и по большей части бессмыслица с т.з. математики. a = f(x) в математике прекрасно существует при неопределённом x, в программировании - по большей части нет. 42 = а и a = 42 в математике эквивалентны, в программировании сразу встаёт вопрос это про сравнение или про присвоение. Короче, паскалевское := больше не кажется глупостью. Ещё внезапно понимаешь зачем в некоторых языках let, но решая идеологическую проблему, let создаёт не сильно-то оправданную многословность и некрасив чисто технически. Да и в целом - изрядная часть математики это про преобразования с сохранением равенства (или в более общем смысле - условия), программирование это про вычисление значений.
| |
|
|
2.36, Аноним (36), 07:40, 26/08/2023 [^] [^^] [^^^] [ответить]
| +1 +/– |
А при чём тут сам язык? Ведь это просто набор функций из библиотеки. Возьмите другую библиотеку и строка уже выглядит так
typedef struct
{
gchar *str; // Pointer to the actual string data
gsize len; // Current length of the string
gsize allocated_len; // Total allocated memory for the string
} GString;
| |
|
3.43, Вы забыли заполнить поле Name (?), 20:57, 26/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
> А при чём тут сам язык? Ведь это просто набор функций из
> библиотеки. Возьмите другую библиотеку и строка уже выглядит так
Ну вот в каждой библиотеке будет своя строка. Разве это хорошо?
| |
|
4.45, Аноним (36), 10:18, 27/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
таки да хорошо. С - это низкоуровневый язык. где-то нужны тяжелые строки где-то достаточно нул-терминированных. какие надо такими и пользуетесь. А если не надо то берете тот же питон или ноду и вперёд ))
| |
|
3.46, Аноним (47), 01:54, 28/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
А два разных размера там зачем? Чтобы можно было по неинициализированой памяти при случае покататься, как раз устроив HeartBleed какой лишний раз? :)
| |
|
4.50, anonymous (??), 10:10, 29/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
чтобы не перевыделять память при каждом добавлении символа в строку. в с++ строки выглядят примерно так же.
| |
|
|
|
1.37, Аноним (37), 08:37, 26/08/2023 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Беда конечно в Python c шифрованием столько развели библиотек и все они то устаревают то обновляют их чем-то ... ошущещние какого-то бардака...
| |
|
2.48, User (??), 07:41, 28/08/2023 [^] [^^] [^^^] [ответить]
| +2 +/– |
openssl, boringssl, libressl, wolfssl, polarssl(mbedtls?), gnutls - это конечно же другое :)
| |
|
3.52, Аноним (52), 14:34, 30/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
А что не так делай:
'''
import openssl as ssl
'''
и всего делов, но вот зоопарк в виде
PyCrypt, PyAesCrypt, Crypt, Cryptodome и т.д. вот что на самом деле раздражает,
так как нет понимания что и куда уходит корнями.
Все эти пристроечки, которые даже непонятно куда идут в какую библиотеку или даже сами
реализуют полторы функции.
И не было бы проблемы если бы все это худо бедно работало, но проблема не в этом,
а в том что авторы просто забивают и ты берешь программу, а в ней используеться брошенная
библиотека и все тебя устраивает, но нужно искать замену и патчить программу и все это на уровне
чуть ли не пеереписать все.
| |
|
4.54, User (??), 16:25, 30/08/2023 [^] [^^] [^^^] [ответить]
| +/– |
>[оверквотинг удален]
> Все эти пристроечки, которые даже непонятно куда идут в какую библиотеку или
> даже сами
> реализуют полторы функции.
> И не было бы проблемы если бы все это худо бедно работало,
> но проблема не в этом,
> а в том что авторы просто забивают и ты берешь программу, а
> в ней используеться брошенная
> библиотека и все тебя устраивает, но нужно искать замену и патчить программу
> и все это на уровне
> чуть ли не пеереписать все.
Да хрен там плавал. openssl в базовой библиотеке нет - вместо него есть crypt, который deprecated и будет removed, переписывайте код под hashlib, aesчего-тотам с чем-то там и ваще. И да, под винду pyopenssl не то, чтобы везде-и-всюду нормально протащить можно. Г*но, г*но, ничего кроме г*на(Ц)
| |
|
|
2.55, Аноним (55), 10:16, 04/09/2023 [^] [^^] [^^^] [ответить]
| +/– |
> Беда конечно в Python c шифрованием столько развели библиотек и все они то устаревают то обновляют их чем-то ... ошущещние какого-то бардака...
Так и название репозитория намекает. Можно Конду взамен пробовать, может там коллекционеры более адекватные. Не довелось понять.
А сам язык получился хороший.
| |
|
|