169 похожих чатов

Снова этот оффтоп про С... В чате С не говорят

столько про ассемблер, сколько в чате по ассемблеру говорят про С. Не стыдно?

45 ответов

71 просмотр

Я бы с удовольствием поговорил про макросы фасма

Си это почти ассемблер.

КТ315- Автор вопроса
КТ315
Нет.

Сказали два человека подряд, оба не знают Си.

s54820
Сказали два человека подряд, оба не знают Си.

Не то чтобы я совсем его не знаю, но я знаю достаточно, чтобы сказать, что это и близко не асм

КТ315- Автор вопроса
s54820
Сказали два человека подряд, оба не знают Си.

Я лично знаю С достаточно, чтобы писать на нём код. В нём нет ничего сложного, просто какой-то кривоватый С. Я буквально вчера на нём писал, иногда гуглил некоторые моменты, с трудом, но в итоге спокойно написал код. Мнение никогда не изменится - кривой и ограниченный синтаксис с кучами ненужных наворотов. Ненужный язык.

КТ315
Я лично знаю С достаточно, чтобы писать на нём код...

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

КТ315- Автор вопроса
s54820
На Си нельзя писать код, если тебе приходится «гуг...

На ассемблере я максимум могу прогуглить только функции API самой ОС. На С у меня возникали ошибки в синтаксисе иногда (допустим, я писал шифрование структуры, и во время передачи данных, этот идиотский С жаловался на то, что я передаю адрес на структуру, а не (const char*), который я прописал в аргументах функции, пришлось дописать (const char*) - чем не лишние движения?). Так что нет, я могу спокойно писать на С, и не буду даже вникать в какие-то там его стандарты, мне на многие его вещи вообще без разницы, С это по большей части тупо копирование кода, там вообще ничего вникать не надо, все проекты на С это просто тяп-ляп из кусков чужого кода. Вот на ассемблере я уже буду переписывать код из С или другого языка, и буду вникать в нюансы. На С - нет.

КТ315- Автор вопроса
The Bird of Hermes
А вот первый абзац про типизацию

Это вообще идиотизм, там даже бы void* не помог, он просто не может понять, что в функцию нужен только адрес, там шифруются БАЙТИКИ...

КТ315- Автор вопроса
КТ315
Это вообще идиотизм, там даже бы void* не помог, о...

Вот поэтому пока какой-то С-шник пишет касты, и дописывает в каждую функцию (const char*) - я уже проект сто раз на ассемблере перепишу 😁

КТ315
Вот поэтому пока какой-то С-шник пишет касты, и до...

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

КТ315- Автор вопроса
s54820
Пока ты сто раз переписываешь проект на ассемблере...

Чтобы понять ошибку, надо скомпилировать, чтобы компилятор сказал, что ему не нравится твой код? На ассемблере вообще синтаксис учить не надо, все ошибки будут только в рантайме, а отлаживаются они постановкой в int3, за 5 минут. А значит код пишется намного быстрее.

КТ315
Чтобы понять ошибку, надо скомпилировать, чтобы ко...

Все ошибки будут в рантайме, после деплоя, у юзера. Иногда на железке, которую перепрошить нельзя, с партией в N миллионов. Есть у меня такая, с ошибкой в бутроме.

КТ315
Чтобы понять ошибку, надо скомпилировать, чтобы ко...

Ну не скажи... Ассемблеры разные бывают... Есть вот АТ&Т...

КТ315- Автор вопроса
s54820
Все ошибки будут в рантайме, после деплоя, у юзера...

А у С-шников нет уязвимостей в коде? 😁 Вспоминаем снова великие функции C - strcpy, strcat и др. Или любой софт (даже самый маленький на С), в котором в очередной раз либо переполнение, либо RCE, либо ещё что-то.

КТ315
А у С-шников нет уязвимостей в коде? 😁 Вспоминаем ...

Да, и хотя бы часть этих ошибок я могу отловить.

КТ315- Автор вопроса
s54820
Да, и хотя бы часть этих ошибок я могу отловить.

На ассемблере, допустим, это тоже будет. Обязательно у человека, который про это не знал. Только вот код он напишет быстрее за счёт отсутствия типизации и минималистичного синтаксиса, у которого всё только "по делу". На С же человек сначала пусть разберётся с 1000 ошибок по синтаксису, которые "чинишь одну - вываливается ещё 1000 в каком-нибудь windows.h" 😂 а только потом поговорим про ошибки во время исполнения.

КТ315
А у С-шников нет уязвимостей в коде? 😁 Вспоминаем ...

К тому же проблема лёгкого синтаксиса в Асме - необходимость постоянно расписывать однообразные операции, если мы не используем макросы

КТ315
На ассемблере, допустим, это тоже будет. Обязатель...

foo.c: In function ‘main’: foo.c:5:5: warning: ‘__builtin_memcpy’ writing 13 bytes into a region of size 6 overflows the destination [-Wstringop-overflow=] 5 | strcpy(buffer, "hello, world"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foo.c:4:10: note: destination object ‘buffer’ of size 6 4 | char buffer[6]; | ^~~~~~ Жду подобную диагностику от фасма для rep movsb.

КТ315- Автор вопроса
The Bird of Hermes
К тому же проблема лёгкого синтаксиса в Асме - нео...

Это только плюс. Вот смотри, гениальный пример. На С ты написал формулу вычисления данных структуры, всё в одну строку, с кучей скобок. Как отладишь, где именно неправильно вычисление прошло? На ассемблере же ты сразу видишь построчно каждую операцию, и можешь точно сказать: "ага, вот тут ненужный add, указатель не туда смещается".

КТ315
Это только плюс. Вот смотри, гениальный пример. Н...

А на ассемблере ты видишь кучу fadd fmul и начинаешь рисовать на бумажке FPU-стек, вместо того, чтобы решать проблему.

КТ315- Автор вопроса
s54820
foo.c: In function ‘main’: foo.c:5:5: warning: ‘__...

😂 Иногда так смешно с этих аргументов. Плюс С в том, что он отлавливает такие глупые ошибки? Я правильно понял?

КТ315
😂 Иногда так смешно с этих аргументов. Плюс С в то...

Да, ты правильно понял. Плюс в том, чтобы машина, которая железная, и которую не жалко, выполняла те действия, которые можно автоматизировать, чтобы ты потратил своё время на то, что автоматизировать нельзя. И нет, это не глупая ошибка. Тут разница огого, а вот на один символ ошибиться несложно.

КТ315
Это только плюс. Вот смотри, гениальный пример. Н...

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

КТ315- Автор вопроса
s54820
Да, ты правильно понял. Плюс в том, чтобы машина, ...

Да как раз сложно. Я вообще при работе со строками: 1. Выделяю памяти с запасом 2. При копировании или манипуляциях, всегда думаю о том, чтобы всё влезло - strlen + проверки на максимальный размер буфера, если не то - обрезать, либо выделить память больше 3. Даже если что-то проскользнуло банальное - во время отладки легко протестировать всё и обнаружить Но да, для С-шника нужны такие предупреждения, как я выше уже сказал. Они не додумаются до таких вещей, потому и strcpy кривой, и программы с уязвимостями - компилятор пока не может уязвимости все подсказать :(

КТ315- Автор вопроса
КТ315
Да как раз сложно. Я вообще при работе со строками...

Надеюсь, в компилятор С очень скоро подвезут ChatGPT, чтобы он предсказывал вообще все CVE. Авось нормальные программы хоть писать начнут.

КТ315- Автор вопроса
The Bird of Hermes
Формула это ладно. А вот вызов каких-нибудь функци...

Макросы есть. Мне лично это вообще не рутинно, я довольно быстро печатаю. Заодно пока печатаю push - думаю об аргументах функции, и что в этот раз нужно положить.

КТ315- Автор вопроса

Стикер

«Назло маме я взял сишную либу и весь обляпался».

КТ315- Автор вопроса
s54820
«Назло маме я взял сишную либу и весь обляпался».

Так-то всего 3, и серьёзное было только одно - 3, которое использовали. Первое через 2 года только могло возникнуть, и в итоге так и не возникло - раньше обнаружил и исправил. Второе тоже не возникло - раньше времени исправил, %1024s, %128s... Это ещё учитывая, что полная версия была написана за 3-4 дня, а самая начальная версия - за день. 😎

КТ315
Так-то всего 3, и серьёзное было только одно - 3, ...

Я уже не помню, там ещё потоки вроде друг друга перезаписывали, не? Но в любом случае, всего 3 на боте, который принимает 1 пользовательский ввод. Что касается Си, то нужно просто выбирать правильный инструмент, а не пытаться пользоваться единственным, который у тебя есть. Правильный инструмент в данном случае питон (для начала) или го.

КТ315- Автор вопроса
s54820
Я уже не помню, там ещё потоки вроде друг друга пе...

Это алгоритмическая ошибка вообще, потому что такое я писал впервые (!), а ты что-то там мне предъявлял, что я пишу только то, что уже писал.

КТ315
На ассемблере, допустим, это тоже будет. Обязатель...

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

Mixail Frolov
писать нормально надо, а не от балды. Если писать ...

Так ты саму структуру не передашь, если она слишком большая, тебе надо постараться ещё, чтобы её в стек кинуть

КТ315- Автор вопроса

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта