1.53, solardiz (ok), 02:14, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +10 +/– |
Спросил автора Fil-C об отличиях проектов, вот его ответы:
https://x.com/solardiz/status/1856433226849628551
Filip Jerzy Pizło @filpizlo
The presentation is light on hardcore details and only has super simple examples, while Fil-C can run real big stuff (CPython, OpenSSH, etc). So, it’s not clear how it compares. Worth noting Fil-C is freely available today rather than sometime in the future!
The article says it’s a fork of the language and for example doesn’t allow unions at all. So, I think the biggest difference is that TrapC really is a different language. Fil-C, on the other hand, is just C (and unions are allowed, and they’re made safe).
| |
|
2.81, Аноним (-), 08:16, 13/11/2024 [^] [^^] [^^^] [ответить] | +3 +/– | А можете еще спросить 1 Не хочет ли он нормальные типы с конкретными битност... большой текст свёрнут, показать | |
|
3.92, Жироватт (ok), 09:06, 13/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Тогда уж для всех платформ унифицировать примитивные типы по длине А не как в с... большой текст свёрнут, показать | |
|
4.107, Аноним (-), 10:16, 13/11/2024 [^] [^^] [^^^] [ответить] | +/– | Ну так uint8_t из C99 и аналогичных плюсов - везде и должен быть 8 битов ак... большой текст свёрнут, показать | |
|
5.116, Жироватт (ok), 11:02, 13/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
А, понял. Ты про статическую проверку выборки индекса поля в enum'е. Ну, попутал с union, бывает, давно не работал. Ну тогда да.
| |
|
6.121, Аноним (121), 11:41, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> А, понял. Ты про статическую проверку выборки индекса поля в enum'е. Ну,
> попутал с union, бывает, давно не работал. Ну тогда да.
Это как в том анекдоте - "и упаси тебя перепутать хиппи с толкиенистом". В случае сишника - ну я б еще понял struct и union перепутать (весьма чревато, как в анекдоте), но вот с enum - как?!
| |
|
7.132, Жироватт (ok), 14:57, 13/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Это как в том анекдоте - "и упаси тебя перепутать хиппи с толкиенистом".
Утро, кофе еще не до конца пошло по венам, разнося живительные молекулы по организму
| |
|
|
5.195, Аноним (195), 02:31, 18/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
У вас какие то придирки причём к основам Сей...
трешу вроже "bool my_var2 = 255 + 1;" - мето на помойке и язык тут не причём,
- пишите с "bool my_var2 = (255 + 1)!=0;" и сразу видно что делает код.
"enum" это константы для типа int, их (пусть не такой как вам бы хотелось)смысл - быть заменой #define'ам которые типчино именуются заглавными что не всегда наглядно хоть и терпимо, но как и те - знанения должны суммироваться для применения в качестве битмасок.
Если этого не будет это уже будет не Си.
Впрочем, раз выкинуты free в subj'е - всёравно лже-Си....
| |
|
|
|
4.108, Аноним (-), 10:21, 13/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Вроде с типом enum в C23 решили вопрос, можно задавать его базовый
> тип:
> enum E1 : short { m11, m12 };
Это уже чуть лучше чем было - но...
> или Вы про другое?
... я таки про - несколько другое. См выше пример с функцией получающей на вход enum, но реально можно вызвать something(10) коего в enum нет.
При том в сорце ЕСТЬ все аннотации намерений. И _можно_ определить в компилтайме что something(10) это нечто совершенно левое. Но нет. В лучшем случае это отловит какой-нибудь сильно отдельный статический анализатор.
| |
|
5.142, Совершенно другой аноним (?), 17:17, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> См выше пример с функцией получающей на вход enum, но реально можно вызвать something(10) коего в enum нет.
Да, согласен с Вами этого сильно не хватает. В C++ попытались решить эту проблему введя enum class, но в C, пока, на эту тему подвижек нет.
| |
|
6.169, Аноним (-), 07:52, 14/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Да, согласен с Вами этого сильно не хватает. В C++ попытались решить
> эту проблему введя enum class, но в C, пока, на эту
> тему подвижек нет.
Ну я и не понимаю - в чем прикол сделать перечисляемый тип, но вообще совсем никаких проверок не сделать, никак и нигде как mandatory в стандарте? Ведь 90% фичи - как бы есть. Но без остальных 10% толку то с нее такой? Гряблями по морде получить лишний раз? :)
| |
|
|
|
9.181, Аноним (-), 21:52, 14/11/2024 [^] [^^] [^^^] [ответить] | +/– | Это он сейчас может, а когда C разрабатывался, const переменная означала статиче... большой текст свёрнут, показать | |
|
10.186, Аноним (-), 18:26, 15/11/2024 [^] [^^] [^^^] [ответить] | +/– | Это опять же нигде жестко не требуется в стандарте, насколько я понимаю И если ... большой текст свёрнут, показать | |
|
|
|
7.182, Аноним (-), 22:03, 14/11/2024 [^] [^^] [^^^] [ответить] | +/– | Та эта довольно просто Если ты задумаешься как можно сделать не 90 фичи, а 100... большой текст свёрнут, показать | |
|
8.183, Аноним (-), 01:38, 15/11/2024 [^] [^^] [^^^] [ответить] | +/– | Но это не значит что не нужно делать ничего Это как с дорогой - сделали ровный... большой текст свёрнут, показать | |
|
9.187, Аноним (-), 18:36, 15/11/2024 [^] [^^] [^^^] [ответить] | +/– | И это глупо Ибо на разные enum можно даже разные typedef навесить - но даже это... большой текст свёрнут, показать | |
|
|
|
|
|
|
|
|
1.2, nc (ok), 23:01, 12/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Самое главное непонятно - в чем именно заключается "фундаментально иной способ работы с указателями и специальный механизм обработки ошибок". Жирные указатели как в Cyclone?
| |
1.4, Аноним Анонимович Анонимов (?), 23:07, 12/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +10 +/– |
На моей памяти это уже не первая попытка исправить, «оберткой», чужой, прямо скажем, говнокод.
Челику бы вместо разработки очередного диалекта направить потуги в сторону будущего стандарта С, судя по новости он что-то в этом понимает.
| |
|
2.70, Bottle (?), 06:09, 13/11/2024 [^] [^^] [^^^] [ответить]
| +9 +/– |
Зная говноделов в комитете, этот стандарт будут внедрять ещё один десяток лет, а софт нужно писать уже сейчас.
К тому же, обязательно напишут про implementation-defined behaviour. Т.е. стандарт опять окажется нерабочим дерьмом из разряда "А вот тут как хотите так и делайте. Кроссплатформенная арифметика? Нет, не слышали".
| |
|
1.6, Аноним (6), 23:12, 12/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> Вместо malloc в TrapC используется похожий на C++ вызов new. Вызовы free и delete отсутствуют, так как за освобождение памяти отвечает компилятор, что защищает от ошибок, приводящих к утечке памяти.
И каким образом? Линейными типами? Ну я бы посмотрел, как они в С их добавят. ГЦ? Даже произносить смешно. Автофри, а-ля как в Vlang? Ну так он и работает только для примитивных случаев. Что-то сложнее уже сделать не получится (я пытался), разве что уговаривать компилятор, что ты мамой клянёшься, что освободишь память в конце. Ну, то есть, как ансейф в расте. Собственно, вопрос: а зачем тогда, а главное, на кой?
| |
|
2.20, Аноним (20), 23:57, 12/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
В свифте сделали же автоматическое управление памятью без гц. И никаких боровов чекать не надо.
| |
|
3.30, Аноним (30), 00:29, 13/11/2024 [^] [^^] [^^^] [ответить] | +1 +/– | Сделали, ага Просто поменяли терминологию и громко, во всех форумах и теле-инс... большой текст свёрнут, показать | |
|
4.49, Аноним (49), 01:48, 13/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Ну так в C++ тоже есть shared_ptr который делает то же самое. И никто не говорит что это GC. В р@сте тот же самый подход есть, аналог плюсовых shared_ptr и unique_ptr.
| |
|
5.161, Аноним (30), 22:21, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Ну так в C++ тоже есть shared_ptr который делает то же самое.
> И никто не говорит что это GC.
Как же вы, неучи-фанаты-ябла с альтернативной терминологией, надоели:
https://cplusplus.com/reference/memory/shared_ptr/
> Manages the storage of a pointer, providing a limited garbage-collection facility, possibly sharing that management with other objects.
> | |
|
4.79, Пользователь (?), 07:59, 13/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Как выше указали, ARC это подобие shared_ptr от Apple, в целом никакой магии.
Стоит отметить что в Swift активно агитируют использовать структуры везде где только можно
| |
4.88, Аноним (-), 08:59, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> В свифте сделали же автоматическое управление памятью без гц.
> Сделали, ага. Просто поменяли терминологию и (громко, во всех форумах и теле-инстаграмчиках)
> объявили "ARC - это не GC, вот!"
Зашибись, а оверхед и непредсказуемость они под ковер как сныкали? :)
| |
|
5.162, Аноним (30), 22:26, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Зашибись, а оверхед и непредсказуемость они под ковер как сныкали? :)
Оверхед - никак (у них там компилятор вставляет Inc_Ref(X)/Dec_Ref(X)), а вот с предсказуемостью у RC-сборщиков как раз все в полном порядке - вполне пригодны для RT-задач.
| |
|
|
|
|
|
2.66, Аноним (66), 04:48, 13/11/2024 [^] [^^] [^^^] [ответить]
| +13 +/– |
initializer_list([T; dyn]^/a data) noexcept safe
using F4 = void/(a, b where a : b, b : a)(int^/a, int^/b) safe;
struct Pair/(T0.0.0, T1.0.0)<string_view/T0.0.0, string_view/T1.0.0>
П/ож/алуйст/а, не н/ад^о^
| |
|
3.89, Аноним (-), 09:01, 13/11/2024 [^] [^^] [^^^] [ответить]
| +10 +/– |
>
initializer_list([T; dyn]^/a data) noexcept safe
> using F4 = void/(a, b where a : b, b : a)(int^/a,
> int^/b) safe;
> struct Pair/(T0.0.0, T1.0.0)<string_view/T0.0.0, string_view/T1.0.0>
> П/ож/алуйст/а, не н/ад^о^
Они, кажется, всерьез решили зарубиться с хрустиками на тему кто получит почетный титул брейнфак-2.0 :)
| |
|
2.194, nc (ok), 12:16, 17/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Горшочек не вари, я еще доки по Carbon и Circle до конца не дочитал а тут еще и это
| |
|
|
2.134, Аноним (133), 15:10, 13/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Совместимый по памяти и рантайму без этих всяких жужжаний про safe не safe
| |
|
1.32, Аноним (32), 00:32, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +6 +/– |
"Answers the call from NSA, white house, fbi..."
Яснопонятно. Это кого надо инициатива, дед тут как Линус с Столманом - для ширмы
| |
|
|
3.87, Аноним (84), 08:58, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Сапоги от NSA - лучше сапоги!
PS А от отечественного тащ майора ещё лучше.
| |
|
|
1.36, Аноним (36), 00:38, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Будет смешно, если из-за академичности и известности автора все эти zig и им подобные выставят на мороз и будут забыты.
| |
|
2.37, Вы забыли заполнить поле Name (?), 00:41, 13/11/2024 [^] [^^] [^^^] [ответить]
| +4 +/– |
> академичности
Aкадемка обычно к успеху обычно не приходит. Из более-менее используемого ocaml. Всякие си, питоны и жс простите не из академки ни разу.
> и известности
Настолько известный, что пришлось писать кто он и чем занимался.
| |
|
3.60, HyC (?), 03:16, 13/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Aкадемка обычно к успеху обычно не приходит. Из более-менее используемого ocaml. Всякие си, питоны и жс простите не из академки ни разу.
И все как на подбор кривые как турецкий ятаган.
| |
|
4.67, Вы забыли заполнить поле Name (?), 04:53, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> Aкадемка обычно к успеху обычно не приходит. Из более-менее используемого ocaml. Всякие си, питоны и жс простите не из академки ни разу.
> И все как на подбор кривые как турецкий ятаган.
Чтож поделать. Взлетает почему-то именно такое.
| |
|
5.91, Аноним (-), 09:04, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Чтож поделать. Взлетает почему-то именно такое.
Потому что делать что-то практическое на академхрености получается где-то в интервале от неудобно до жутко назойливо.
| |
5.95, Анониссимус (?), 09:13, 13/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
Во-первых, миллионы мух. А во-вторых, уж очень велик соблазн взять что-то из пары костылей, скреплённых дерьмом, но которое работает здесь и сейчас, вместо того чтобы доделывать более качественное решение.
| |
|
|
|
2.51, Вася Пупкин (?), 01:51, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
В языке сейчас важно сообщество и экосистема, не считая корневой идеи где он может быть удобно применен. Синтаксис и имя автора лишь могут немного поспособсвовать их становлению.
| |
|
3.97, Анониссимус (?), 09:16, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Самое важое в любом языке -- это количество библиотек, которые можно использовать. Если там действительно можно использовать си-либы без всяких проблем, то пользоваться этим можно будет и с минимальным сообществом и экосистемой.
| |
|
2.73, Аноним (73), 07:17, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Ну если предположить, что Си не из академки, то впоследствии стал использоваться академкой и много чего академического на нем было написано. Так что можно считать, что Си - академка.
| |
|
3.124, Аноним (124), 12:20, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Так что можно считать, что Си - академка.
Т.е. C взял академический отпуск... от академиков.
| |
|
|
3.136, Аноним (133), 15:13, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Carbon нихрена не собрать не затаoив половину Google к себе на домашний серверный шкаф из 40 серверов с дисковым массивом - шутка про Java и Gradle артефакты доставаемые гигабайтами какое-то невероятное зависимое говны.
Пока они не освоят хотя бы CMake не о чем говорить
| |
|
|
1.52, htmldevelob (?), 01:51, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
а вообще по теме мне кто то может пояснить что за вечная проблема с памятью ? в си и си++ и наверно в ассемблере нету такой проблемы ? а если есть может кто то тогда ассемблер сделает получше?
| |
|
2.58, Йцукенг (?), 03:00, 13/11/2024 [^] [^^] [^^^] [ответить] | +4 +/– | Просто прочитайте, что такое переполнение буфера, висячие указатели, переполнени... большой текст свёрнут, показать | |
|
3.78, Аноним (78), 07:39, 13/11/2024 [^] [^^] [^^^] [ответить]
| –4 +/– |
> В других языках такие проверки и работу с памятью обеспечивают компиляторы.
Вы давно не программировали? Я пользуюсь g++. Он многие из таких ошибок отслеживает.
> Но тогда, обычно, эти языки ограничивают программиста в работе на низком уровне и плохо подходят для написания системных программ, в которых нужно работать напрямую с ячейками памяти.
Это верно.
| |
|
2.119, Аноним (-), 11:20, 13/11/2024 [^] [^^] [^^^] [ответить] | +5 +/– | Основная проблема с памятью, что тебе надо дёрнуть free delete на кусок памяти т... большой текст свёрнут, показать | |
2.171, Анониматор (?), 08:02, 14/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Никакой проблемы насамом деле нет. Сын учится в вышке, учат кондовый С на указателях и маллоках, причём всего за пару месяцев уже сильно далеко за пределами моего понимания. Любые утечки которые сдают студенты препод сразу видит. Дело в квалификации мне кажется.
| |
|
|
2.83, Жироватт (ok), 08:29, 13/11/2024 [^] [^^] [^^^] [ответить]
| +2 +/– |
Помнишь такого вот кривого доцента с кафедры АСУП, САПР или ВТ? Который в жизни не написал ничего реально применимого, но очень гордящегося своим алгоритмом подсчёта синуса от количества усов на морде среднестатистического кота? Такое же, только англоязычное.
| |
|
3.101, eugene_martein (ok), 09:36, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Типа, как Зуев, который один год писал синтаксическое AST-дерево для несостоявшегося отечественного компилятора C++ в 90-ых, но получил такую психотравму, что по сей день орёт, что отечественный компилятор есть.
| |
|
4.115, Жироватт (ok), 10:57, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Таких у нас вагон и полная тележка сверху.
Не пониманию я этого наяривания на "академичность". Хотя зубров, вроде Кнута, стоит исключить, там где серьёзный стык высшей математики и алгоритмов - от них и от их изысканий есть реальная польза, но вот остальное...
| |
|
5.138, Аноним (138), 15:49, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Не пониманию я этого наяривания на "академичность".
Она нужна тем кто хочет быть "услышен", а за других говорят их "дела".
> Хотя зубров, вроде Кнута, стоит исключить
Говорят, математика это язык природы, просто словарь этого языка переполнен "словами паразитами" ввиде имен всяких "профессоров".
| |
|
|
|
|
|
2.80, КО (?), 08:11, 13/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
Пока сыро - это всё состояние опенсорса, так что вполне подходит
| |
|
3.105, Аноним (78), 09:59, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> Пока сыро - это всё состояние опенсорса, так что вполне подходит
Неочевидно. GCC - опенсорс, но не сыро.
| |
|
2.140, Аноним (140), 16:11, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Как говорится, ничто не вечно, ничто не закончено и ничто не совершенно.
| |
|
3.145, Аноним (145), 17:37, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
А я бы стал утверждать, что программа достигает совершенства к ... концу развития. После чего выбрасывается, и всё начинается сначала. Потребуются примеры? Ну, NC и NU под MS-DOS, да и сама MS-DOS.
| |
|
4.164, arisu (ok), 23:25, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
NC достиг совершенства в VC. ;-)
к сожалению, Волков не дал исходников. не то чтобы груда асм-кода была сейчас сильно нужна, но чисто для исторического интересу было бы неплохо.
| |
|
5.172, Incorporated (?), 08:05, 14/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
NC достиг совершенства в MC. ;-)
Cтаричок до сих пор живее всех живых с далекой середины 90-x!
И продолжает активно сопровождаться, в отличии от того же FAR
есть еще TC - но это оффтопик
Так что даже в деле классических файловых менеджеров семейства NC движуха идет и они показали свою востребованность сообществом
| |
|
6.173, arisu (ok), 08:35, 14/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
а MC не надо сопровождать никуда. последнее хорошее, что с ним случилось — это mc^2. который, естественно, в апстрим не взяли, и продолжают там заниматься ерундой. я этот самый mc^2 спокойно использую, и за восемь лет отсутствия очень необходимых сопровождений и обновлений весьма доволен.
была ещё, кстати, очень крутая штука — x northen captain. уже иксовая, но ещё приличная. жаль, что померла. я как-то думал её оживить, но традиционно заленился.
| |
|
|
|
|
|
1.99, Аноним (-), 09:32, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ] | +4 +/– | Ой не верится, что это возможно Например Чтобы это работало бы, компилятор дол... большой текст свёрнут, показать | |
1.102, Данные в так называемом поле Name (?), 09:39, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Я когда был маленький, мне казалось что мир информационных технологий огромен. Казалось, что на каждую, даже самую бредовую репу найдётся орда энтузиастов. Сейчас мнение поменял на прямо противоположное. Индустрия едет по рельсам, которые прокладывают некоторые сверх богатые компании. Смотрю как Oracle пыхтит пытаясь жабу тащить и как ему не хватает силёнок, чего уж говорить об энтузиастах? Короче, не знаю на что рассчитывает "бывший профессор", но безумству храбрых поём мы славу!
| |
|
2.111, Аноним55 (?), 10:26, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Увидел иронию в словах "бывший профессор". Но с другой стороны, когда в новом сезоне шоу под названием "университет", видимо для экономии средств, мне предложили из доцентов перейти в старшие преподаватели, наши пути в науке разошлись. Кто его знает, что там произошло.
| |
|
3.170, Аноним (-), 07:55, 14/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Увидел иронию в словах "бывший профессор". Но с другой стороны, когда в
> новом сезоне шоу под названием "университет", видимо для экономии средств, мне
> предложили из доцентов перейти в старшие преподаватели, наши пути в науке
> разошлись. Кто его знает, что там произошло.
В смысле - что? По сторонам посмотри, прфоессор. Увидишь куда идут ломовые выплаты.
| |
|
2.157, Аноним (156), 21:13, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Смотрю как Oracle пыхтит пытаясь жабу тащить и как ему не хватает силёнок, чего уж говорить об энтузиастах?
Можно подробнее?
| |
|
1.103, Аноним (103), 09:53, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
А зачем тогда вообще Си? Открою секрет. Си изобрели, чтобы на ассемблере не писать. Еще тогда если вы хотели не скорости и компактности, а надежности и безопасности - могли писать на басике или паскале.
| |
|
2.141, Аноним (141), 16:28, 13/11/2024 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Си изобрели, чтобы на ассемблере не писать
Your computer is not a fast PDP-11
| |
|
3.155, нах. (?), 20:28, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>> Си изобрели, чтобы на ассемблере не писать
> Your computer is not a fast PDP-11
А гораздо, гораздо хуже. На 11й можно не то что на ассемблере, а прямо в машинных кодах писать (и да, они специально сделаны удобочитаемыми)
На современной интеловской архитектуре - это рожать ежа против шерсти. Получится мало того что с нечеловеческими усилиями, так запросто еще и медленнее чем у компилятора (потому что тот умеет в execution reordering а ты парные команды подбирал-подбирал, а потом при отладке пришлось вставить еще одну и все пошло по п-де).
| |
|
|
1.106, Додо (ok), 10:13, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Глядя на примеры использования кажется, что их писал человек, который не понимает принципы работы с памятью вообще - но вместо того, чтобы учиться, он надеется на "безопасный" компилятор. На крайняк можно использовать любой статический анализатор - он подсветит нужные места и даст советы по исправлению.
// darpa_tractor.c
int main(int argc,char* argv[])
{
const size_t buff_size = 8; // Зададим размер буфера тут, чисто чтобы не пользоваться sizeof(buff) везде.
char buff[buff_size];
int success = 0;
strncpy(buff, argv[1], buff_size); // Тут используем strncpy вместо strcpy.
// Тут проверим последний элемент буфера.
// Если при вызове strncpy исходная строка поместилась в буфер целиком,
// то буфер будет заполнен нулями до конца. Если нет - то последний элемент будет не 0.
// А вообще тут strcmp никогда не вернёт 0, потому что размер сравниваемой строки
// больше размера буфера (если учитывать нулевой байт на конце).
if(buff[buff_size - 1] == 0 && !strcmp(buff,"s3cr8tpw"))
{
success = 1;
}
if(success) // TrapC blocked strcpy overwrite, success good
{
printf("Welcome!\n");
}
return !success;
}
// trapc_ptr.c
int main()
{
const char* ptr = "Hello World";
// Тут просто меняем while на for (хотя лучше завести отдельную переменную для итерирования).
for(; *ptr; ptr++)
{
printf("%c",*ptr);
}
return 0;
}
// trapc_array.c
int score[10];
for (int i = 0; ; i++) {
printf("%d", i);
if (i == INT_MAX) break; // Переписываем цикл, вынося условие сюда.
}
| |
|
2.168, Ivan_83 (ok), 02:31, 14/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> const size_t buff_size = 8; // Зададим размер буфера тут, чисто чтобы не пользоваться sizeof(buff) везде.
По мне sizeof(buff) удобнее константы.
Хотя вероятно машинный код будет идентичный.
> strncpy(buff, argv[1], buff_size);
А кто будет проверять что argc >= 1?)
| |
|
3.188, Аноним (-), 18:42, 15/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> По мне sizeof(buff) удобнее константы.
> Хотя вероятно машинный код будет идентичный.
sizeof(buff) лучше приучиться просто не юзать - грабельная конструкция, и если там не char был, на этом можно налететь при случае. Даже если вот конкретно тут оно и катит.
>> strncpy(buff, argv[1], buff_size);
> А кто будет проверять что argc >= 1?)
Да, дорогой Додо, если вам такой втык делает Ivan_83 известный своим пофигизмом на все, вы таки - конкретно облажались.
| |
|
4.190, Ivan_83 (ok), 23:37, 15/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Мой пофигизм обычно кончается после того как PoC начал работать :)
И на самом деле в моём коде скорее наоборот избыточно много проверок входных аргументов.
В этом плане я не согласен с теми же гномерами которые предпочитают падать по раньше на ошибках.
Насчёт sizeof() - с ней всё нормально пока в объявлении переменной не добавят * или не уберут.
Я в целом считаю что это не проблема, потому что заменяя тип переменной пограмит должен убедится что оно не только собирается но и что переменная везде корректно используется.
И на самом деле я просто не люблю объявлять константы в функциях, у меня как правильно и без этого там куча переменных.
| |
|
5.191, arisu (ok), 23:40, 15/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> И на самом деле я просто не люблю объявлять константы в функциях,
> у меня как правильно и без этого там куча переменных.
ой вэй!
| |
|
|
|
|
1.120, X86 (ok), 11:26, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Это все пустое. Еще пара лет и нейронки смогут сделать простой и более безопасный язык программирования, взяв лучшее из Питонов и Си, разработать к нему понятную документацию и т.д.
Возможно, даже готовые бинари сразу из чатгпт можно будет скачивать)
| |
|
2.126, Аноним (124), 12:36, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
>Возможно, даже готовые бинари сразу из чатгпт можно будет скачивать)
Да, такие бинари, что всякие NSA курят в сторонке.
| |
|
1.127, Алексей (??), 12:40, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Проект конечно странный. Какие цели он проследует не понятно. По итогу это новый язык программирования с максимально похожим синтаксисом к C. И созданием данного языка они якобы решают проблему с памятью. Но в таком случае почему бы не пойти дальше улучшить в C еще что нибудь (и получить новый Zig, GO, V lang и тд и тп)?! Ведь по сути я не смогу взять TrapC и скомпилировать (без пердолинга) на нем кучу кода C получив при этом безопасные программы (а вот Fil-C вполне себе позволить это сделать хоть и в ущерб скорости)! Отсюда возникает вопрос: какая аудитория будет пользовался данным языком?! Трушные C/C++?! Так они не боятся утечек памяти и переполнения буфера и не будут переходить на TrapC. Всякие кому нравится C подобный синтаксис?! Так есть же 100500 C подобных языков без проблем с памятью (всякие Zig, Swift и тд и тп). Получается что они создают язык для себя чисто по фану. Ну, может конечно еще кто обзарится! Можно только пожелать им удачи в их трудном но интересном занятии.
| |
|
2.146, anonimous (?), 17:54, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Цель понятная и они не не скрывают - найти инвесторов. Спрос есть? Будет и предложение!
| |
|
|
2.137, Аноним (133), 15:16, 13/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
Вы свои проблемы из Java не тащите.
Всем давно известно корреляция обратная.
| |
|
1.151, Аноним (-), 18:22, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Есть безопасный диалект чистого Си, называется Cyclone. Последний стабильный релиз вышел в 2006 году. Диалект разрабатывали в стенах AT&T labs.
Разработчики TrapC велосипедят? Если уж на то пошло, взяли бы готовые наработки "Циклона".
| |
1.159, Аноним (156), 21:18, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>Как именно достигается подобная защита не поясняется.
Можно расходится, чуда не будет
| |
1.160, Аноним (156), 21:19, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Сколько уже языков изобретено, например тот же ATS? Осталось дело за малым - убедить погромистов на них писать.
| |
1.166, _kp (ok), 23:42, 13/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>>Вместо malloc .. new.. за освобождение памяти отвечает компилятор
Не понял шутку, типа еще на этапе компиляции виднее когда объект не будет нужен.
Тут, или не будет работать, или не освобождается память.
Более иого,даже со сборщиком мусора, ну не верится что оно будет предвидеть возникающие события, при которых надо освободить объект ;)
В остальном все хорошо.
Да, понятно, что рантайм должен быть напичкан проверками, ибо на этапе компиляции все не проверить.
Но ведь и не обязательно всё писать на этом.
И изюминка на торте...
А зачем Си, почему не С++?
Что то низкоуровневое или высокопроизводительное все равно писать на обычных C и С++, а для более высокоуровнего кода С++ удобней.
| |
|
2.178, Аноним (-), 17:57, 14/11/2024 [^] [^^] [^^^] [ответить]
| +1 +/– |
>А зачем Си, почему не С++?
Ну так ты сам пиши на плюсах! Зачем других агитируешь-то?
| |
|
1.167, Ivan_83 (ok), 02:28, 14/11/2024 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> Все создаваемые переменные и буферы явно инициализируются или заполняются нулями компилятором.
Уже минус производительности.
Дебажные сборки С такое же делают, и кажется флаг для этого есть отдельный компелятору.
> Вызовы free и delete отсутствуют, а за освобождение памяти отвечает компилятор, что защищает от ошибок, приводящих к утечке памяти.
И откуда компелятору знать нужна мне эта память или уже нет?
Типа ссылки по указателям посчитать? - так а мне потом бегать всё занулять чтобы он память освободил?
Странное в общем оно.
| |
|
2.189, Аноним (-), 18:46, 15/11/2024 [^] [^^] [^^^] [ответить]
| +/– |
> И откуда компелятору знать нужна мне эта память или уже нет?
А посмотри как боров-чекер например работает. Некоторые плюсеры смогли посмотрев на это все и довольно сравнимую логику и на плюсах местами захреначить.
> Странное в общем оно.
В этом мире есть много странного. Это не значит что оно непременно плохое.
| |
|
|