Про true-сишников
От: Shmj Ниоткуда  
Дата: 12.02.25 16:49
Оценка:
Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/

Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.

Интересно же — существуют true-сишники, особый стиль жизни даже — которые гневно не одобряют всякие излишества в языках, приравнивая их к джинсам и жвачке времен СССР. При этом знают тонкости системы, железа на глубочайшем уровне и знают как сделать проще или вообще не делать. Наслышан о таких, но, к сожалению, познакомиться не довелось.

Встречали ли вы таких? Как относитесь?
=сначала спроси у GPT=
Отредактировано 12.02.2025 17:54 Shmj . Предыдущая версия .
Re: Про true-сишников
От: rudzuk  
Дата: 12.02.25 18:48
Оценка: +2 :))) :))) :))) :))) :))) :))) :)
Здравствуйте, Shmj, Вы писали:

S> Интересно же — существуют true-сишники

S> ...
S> Встречали ли вы таких? Как относитесь?

Трусишники Теперь буду ржать, как встречу.
avalon/3.0.2
Re: Про true-сишников
От: vsb Казахстан  
Дата: 12.02.25 19:11
Оценка: +1
У меня такое мировоззрение. Хотя я и Си не одобряю, но из доступного-популярного он ближе остальных к "идеалу". C и Go, в зависимости от уместности GC.
Отредактировано 12.02.2025 19:11 vsb . Предыдущая версия .
Re: Про true-сишников
От: Anton Batenev Россия https://github.com/abbat
Дата: 12.02.25 19:32
Оценка: 1 (1) +6
Здравствуйте, Shmj, Вы писали:

S> Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c


По стилистике это писал "бородатый физик в свитере с оленями". Хотя в своей области он может быть весьма ученым мужем, к разработке его лучше не допускать.
Re[2]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 12.02.25 21:07
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>По стилистике это писал "бородатый физик в свитере с оленями". Хотя в своей области он может быть весьма ученым мужем, к разработке его лучше не допускать.


Но он может достаточно ясно выразить в коде идею. Пусть оно будет и не оптимально, без соблюдения Code Conventions и пр. Но будет работать и идея будет сохранена. Потом уже не так сложно привести к нормальному виду и оптимизировать.
=сначала спроси у GPT=
Re: Про true-сишников
От: AleksandrN Россия  
Дата: 12.02.25 21:35
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Интересно же — существуют true-сишники, особый стиль жизни даже — которые гневно не одобряют всякие излишества в языках, приравнивая их к джинсам и жвачке времен СССР. При этом знают тонкости системы, железа на глубочайшем уровне и знают как сделать проще или вообще не делать.


Напомнило Лурк

Бородатые олдфаги, единственные, кто умеет писать ядра операционок, драйвера и системные службы, демонстративно отказываются учить что-то ещё. На самом деле, любой уважающий себя сишник знает не только С++, но и ещё с десяток других языков, главным образом для того, чтобы их обсирать. А на Си они любят писать потому, что код в таком случае получается короче и прямее.

Re[2]: Про true-сишников
От: opfor  
Дата: 13.02.25 01:05
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN>

AN>Бородатые олдфаги, единственные, кто умеет писать ядра операционок, драйвера и системные службы, демонстративно отказываются учить что-то ещё. На самом деле, любой уважающий себя сишник знает не только С++, но и ещё с десяток других языков, главным образом для того, чтобы их обсирать. А на Си они любят писать потому, что код в таком случае получается короче и прямее.


Да уж, Си прост, как калоша. Не то что эти ваши Swift'ы с какими-то guard'ами, reference cycle'ами и async'ами — пока разберешься, проще на сях свой компилятор написать.
Отредактировано 13.02.2025 1:06 opfor . Предыдущая версия .
Re: Про true-сишников
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.02.25 01:06
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными?

Смотря какие проекты. Как я уже говорил — если у вас стоит задача сделать портабельную библиотеку для использования из разных языков, то C будет одним из наилучших вариантов выбора.
А вот, к примеру, какой-нибудь более-менее современный компилятор писать на C — это боль и страдания.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Про true-сишников
От: amironov79  
Дата: 13.02.25 02:43
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


Проблема в том, что код на Си выглядит просто и компактно, но в каждой строчки возможна проблема работы с памятью, и без многолетнего опыта объективно оценить качество кода практически невозможно.
Re: Про true-сишников
От: Нomunculus Россия  
Дата: 13.02.25 03:43
Оценка: +8 :)
Здравствуйте, Shmj, Вы писали:

Ох уж эти оптимизаторы писанины хреновы. Любители макросов обдолбанные

#define LOOP(i, j) for (int i = 0; i < j; i++)


Вот сложно да, каждый раз «for” писать??? Неее. Будет вводить свои слова, что читающий каждый раз вспоминал, что ты там за слова напридумывал.
Придурки
Re: Про true-сишников
От: cppguard  
Дата: 13.02.25 06:01
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


Ага, примерно как на Perl — написать один раз можно, а вот отлаживать или разбираться в таком коде не очень хочется.
Re: Про true-сишников
От: Константин Б. Россия  
Дата: 13.02.25 06:12
Оценка: +3
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП


...не делать обработку ошибок и вообще по максимуму срезать углы. Тогда да всё компактно
Re[2]: Про true-сишников
От: rudzuk  
Дата: 13.02.25 06:21
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н> Будет вводить свои слова, что читающий каждый раз вспоминал, что ты там за слова напридумывал.


Кто сказал Nemerle?
avalon/3.0.2
Re: Про true-сишников
От: LaptevVV Россия  
Дата: 13.02.25 06:39
Оценка: -1 :)
S>Встречали ли вы таких? Как относитесь?
Не только встречал, но и в ресторане вместе обедали не один раз.
И, кстати, он на рсдн присутствует...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Про true-сишников
От: Doom100500 Израиль  
Дата: 13.02.25 06:44
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными?


Компактными и выразительными по сравеннию с чем? Можешь показать тоже самое на другом языке, менее или более компактно и выразительно?

Мне кажется, что ты клонишь в сторону излишней многословности плюсов, особенно всяких "компайлтаимовых штучек (C)". Ну так те штучки пишутся в библиотечном, а не в прикладном коде. Здесь же код прикладной. И на плюсах мог бы выглядеть и компактнее и выразительнее.

Был бы, например, std::ifstream, вместо fopen/fclose. Всякие макро, типа LOOP, UNARY, BINARY были бы записаны какими-нибудь лямбдами. Хотя LOOP тут — это пппц .

S> Но нужно уметь писать, не пытаться в ООП и пр. извраты.


А это что?

Matrix a = NewMatrix(rows, cols, 1);


Чем отличается от

Matrix* a = new Matrix(rows, cols, 1)  ?


А вон тот LOOP — это как раз к прочим извратам.
Спасибо за внимание
Re[2]: Про true-сишников
От: alpha21264 СССР  
Дата: 13.02.25 07:10
Оценка:
Здравствуйте, Нomunculus, Вы писали:



Н>Вот сложно да, каждый раз «for” писать??? Неее. Будет вводить свои слова, что читающий каждый раз вспоминал, что ты там за слова напридумывал.

Н>Придурки

linux gdb так написан. Поубивал бы.

Течёт вода Кубань-реки куда велят большевики.
Re[3]: Про true-сишников
От: Нomunculus Россия  
Дата: 13.02.25 07:13
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>linux gdb так написан. Поубивал бы.


Намучался я в одном проекте с одним любителем макросов. У него весь код был в макросах и это невозможно было дебажить. БЛИН!
Re: Про true-сишников
От: Privalov  
Дата: 13.02.25 07:30
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


Это что, чатгопота подсказала? В любом случае всё упирается в это "как бы". Какой-то особой выразительности в приведённом коде я не вижу.
Лично я использовал Си в качестве высокоуровневого ассемблера. Сделать вставку в фортрановской программе или JNI.
Re: Про true-сишников
От: wl. Россия  
Дата: 13.02.25 10:53
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


не замечал. Обычно какие-то огромные портянки функций на десяток страниц, с глобальными переменными и непонятно где определенными константами и прочими макросами.
Пытался как-то разобраться в одном из аспектов драйвера NVidia под linux — не смог, чисто WriteOnly код повсюду
Re: Про true-сишников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 13.02.25 11:12
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


Такие проекты начал писать чуть пораньше Андрей Карпаты: llm.c и llama2.c.

S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


И... бесполезны. Потому что на практике вылезает куча нюансов и разветвлений, которые не укладываются в первоначальную абстракцию и требуют расширения. А тут либо ООП, либо что-то ещё, чего в С особо и нет из коробки.

S>Встречали ли вы таких? Как относитесь?


Фабрис Беллар сразу всплывает в памяти, как яркий представитель и с чьим кодом в виде ffmpeg имел дело. Отношусь хорошо, для практического применения такого кода всегда приходится писать удобные обёртки. Но внутри он достаточно прост и читабелен, если им просто пользоваться, а не поддерживать.
Re: Про true-сишников
От: student__  
Дата: 13.02.25 12:13
Оценка: :)
Здравствуйте, Shmj, Вы писали:
S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.

А разве .NET не уделывает сишный компилятор по оптимизациям?
В оптимизацию JVM тоже вбухано большое количество средств, в т.ч. профессура со скубентами.
Отредактировано 13.02.2025 12:17 student__ . Предыдущая версия .
Re[2]: Про true-сишников
От: пффф  
Дата: 13.02.25 12:45
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>
D>Matrix a = NewMatrix(rows, cols, 1);
D>


D>Чем отличается от


D>
D>Matrix* a = new Matrix(rows, cols, 1)  ?
D>


В плюсах new будет не нужен, класс матрицы сам будет управлять памятью
Re[2]: Про true-сишников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 13.02.25 12:49
Оценка:
Здравствуйте, student__, Вы писали:

__>А разве .NET не уделывает сишный компилятор по оптимизациям?

__>В оптимизацию JVM тоже вбухано большое количество средств, в т.ч. профессура со скубентами.

Уверен, что в JavaScript вбухано ещё больше. Сейчас активно вбухивают в Питон.
Re[2]: Про true-сишников
От: wl. Россия  
Дата: 13.02.25 15:05
Оценка:
Здравствуйте, student__, Вы писали:

__>А разве .NET не уделывает сишный компилятор по оптимизациям?


Насколько я понимаю, там где С уместно применять, типа драйверы, подобные оптимизации могут быть вообще вредны, а С — ассемблер высокого уровня
Re: Про true-сишников
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.25 16:03
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Встречали ли вы таких? Как относитесь?


Ну, я сам так умею.

В этой программе чуть больше, чем 300 строк. Когда размер растет, требуется немного побольше архитектуры. А то подохнешь.
Re[2]: Про true-сишников
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.25 16:05
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>По стилистике это писал "бородатый физик в свитере с оленями". Хотя в своей области он может быть весьма ученым мужем, к разработке его лучше не допускать.


Если ты когда-нибудь видел стандарты про криптографию, там обычно приводятся в приложениях примеры кода. Как раз в стиле "с оленями". Этот код все же гораздо лучше
Re[3]: Про true-сишников
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.25 16:06
Оценка:
Здравствуйте, opfor, Вы писали:

O>Да уж, Си прост, как калоша. Не то что эти ваши Swift'ы с какими-то guard'ами, reference cycle'ами и async'ами — пока разберешься, проще на сях свой компилятор написать.


Коммитет по стандартизации упорно работает над тем, чтобы Си перестал быть простым, как калоша. И у них получается...
Re[2]: Про true-сишников
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.25 16:29
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>У меня такое мировоззрение. Хотя я и Си не одобряю, но из доступного-популярного он ближе остальных к "идеалу". C и Go, в зависимости от уместности GC.


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

        data := []byte("hello")
        data = append(data, []byte(", world!")...)
        hello := data
        data = append(data, []byte(" Oo")...)
        copy(data, []byte("12345"))
        fmt.Printf("%s\n", hello)


Что в итоге напечатается, зависит от количества байтов, которые добавляются в 4-й строке.

Для сишника это очевидно, а как это понимают люди, не умеющие в Си, ума не приложу...

Ну и не будем забывать, что bytes.Buffer.Bytes() возвращает "указатель" (вернее, слайс) на внутренний буфер...
Re[3]: Про true-сишников
От: student__  
Дата: 13.02.25 18:01
Оценка:
Pzz>Для сишника это очевидно, а как это понимают люди, не умеющие в Си, ума не приложу...

Для сишника здесь вообще ничего не очевидно, потому что он не знает семантики операций со слайсами. Откуда вот это обожествление сишников?
Re[4]: Про true-сишников
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.25 18:11
Оценка:
Здравствуйте, student__, Вы писали:

Pzz>>Для сишника это очевидно, а как это понимают люди, не умеющие в Си, ума не приложу...


__>Для сишника здесь вообще ничего не очевидно, потому что он не знает семантики операций со слайсами. Откуда вот это обожествление сишников?


Зато сишник совершенно свободно живет в мире, в котором разные указатели могут ссылаться на пересекающуюся память.
Re[2]: Про true-сишников
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.02.25 18:15
Оценка:
Здравствуйте, student__, Вы писали:

S>>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


__>А разве .NET не уделывает сишный компилятор по оптимизациям?


С чего бы ему его уделывать?
Re[3]: Про true-сишников
От: student__  
Дата: 13.02.25 18:36
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>С чего бы ему его уделывать?


Например, векторизация циклов с учётом самой мощной версии SIMD.
Re[4]: Про true-сишников
От: opfor  
Дата: 13.02.25 22:26
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Коммитет по стандартизации упорно работает над тем, чтобы Си перестал быть простым, как калоша. И у них получается...


и чем они его так усложнили, можно пример?
Re[4]: Про true-сишников
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.02.25 05:51
Оценка:
Здравствуйте, student__, Вы писали:
__>Например, векторизация циклов с учётом самой мощной версии SIMD.
А разве в CLR уже завезли векторизацию циклов?
Когда я смотрел на это в последний раз, фича была низко в списке приоритетов.
Авто-векторизация — очень хрупкий процесс, даже в AOT компиляторах, у которых нет ограничений по бюджету на оптимизацию.
Если у вас есть задача, которая может выиграть от векторизации, то в CLR вы делаете векторизацию руками, и у вас есть некоторая гарантия, что код останется векторизованным, даже если что-то вокруг него изменится.
В частности, некоторые конкретные идиому (вроде поиска элемента в массиве или арифметики с типами Vector<T>) векторизованы на уровне C#-кода, что позволяет получить преимущества от SIMD даже тем разработчикам, которые не интересуются интринсиками.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Про true-сишников
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.02.25 05:53
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В этой программе чуть больше, чем 300 строк. Когда размер растет, требуется немного побольше архитектуры. А то подохнешь.

Ну так в этой программе уже овердохрена архитектуры. В частности ФВП эмулируются макросами
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Про true-сишников
От: ononim  
Дата: 14.02.25 07:35
Оценка:
Pzz>>С чего бы ему его уделывать?
__>Например, векторизация циклов с учётом самой мощной версии SIMD.
а почему ты думаешь что в С этого нету?
https://stackoverflow.com/questions/409300/how-to-vectorize-with-gcc
Как много веселых ребят, и все делают велосипед...
Re[2]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 14.02.25 07:48
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Это что, чатгопота подсказала?


Уже не смешно.
=сначала спроси у GPT=
Re[2]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 14.02.25 07:53
Оценка:
Здравствуйте, student__, Вы писали:

__>А разве .NET не уделывает сишный компилятор по оптимизациям?

__>В оптимизацию JVM тоже вбухано большое количество средств, в т.ч. профессура со скубентами.

Возьмите консольное приложение на C и на .Net. Запустите. Просто пустое консольное. Заметите тормоза при запуске невооруженным глазом.
=сначала спроси у GPT=
Re[2]: Про true-сишников
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.02.25 08:06
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>Ох уж эти оптимизаторы писанины хреновы. Любители макросов обдолбанные


Н>

Н>#define LOOP(i, j) for (int i = 0; i < j; i++)


Н>Вот сложно да, каждый раз «for” писать??? Неее. Будет вводить свои слова, что читающий каждый раз вспоминал, что ты там за слова напридумывал.

Н>Придурки

Есть люди, которым сложно следить за тем, чтобы, например, в for (int i = 0; i < j; i++) все три раза упоминалась одна и та же переменная `i`, а не разные.

Для таких придумали foreach во всяких C#, for (var : range) в C++, ну а в C приходится макрить.

Не могу гарантировать, что у автора того кода именно эта проблема, но вероятность не ноль.
The God is real, unless declared integer.
Re[3]: Про true-сишников
От: Нomunculus Россия  
Дата: 14.02.25 08:12
Оценка:
Здравствуйте, netch80, Вы писали:

Ну обозвал бы хоть FOR_LOOP. Потому что LOOP(i, j) вполне можем значить while(i<j)
Re[4]: Про true-сишников
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.02.25 08:14
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>Ну обозвал бы хоть FOR_LOOP. Потому что LOOP(i, j) вполне можем значить while(i<j)


Если это автор 2-3 программ в одном стиле и ничего больше, он о таком не думает. И это вполне естественно — каждый ограничен своим опытом, и пока не наступит на новую форму граблей, не задумывается, что она в принципе может где-то быть.
The God is real, unless declared integer.
Re[3]: Про true-сишников
От: Privalov  
Дата: 14.02.25 10:03
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Уже не смешно.


Я разве утверждал что-то иное?
Re[3]: Про true-сишников
От: student__  
Дата: 14.02.25 14:24
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Возьмите консольное приложение на C и на .Net. Запустите. Просто пустое консольное. Заметите тормоза при запуске невооруженным глазом.


Запускаю .NET хелло ворлд в виртуалочке, никаких тормозов вообще. Ноль.
Отредактировано 14.02.2025 14:25 student__ . Предыдущая версия .
Re[4]: Про true-сишников
От: ononim  
Дата: 14.02.25 14:47
Оценка:
S>>Возьмите консольное приложение на C и на .Net. Запустите. Просто пустое консольное. Заметите тормоза при запуске невооруженным глазом.
__>Запускаю .NET хелло ворлд в виртуалочке, никаких тормозов вообще. Ноль.
Ноль целых ноль десятых?
Как много веселых ребят, и все делают велосипед...
Замечали, ага. Это круто.
От: pkl  
Дата: 14.02.25 14:49
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.


S>Интересно же — существуют true-сишники, особый стиль жизни даже — которые гневно не одобряют всякие излишества в языках, приравнивая их к джинсам и жвачке времен СССР. При этом знают тонкости системы, железа на глубочайшем уровне и знают как сделать проще или вообще не делать. Наслышан о таких, но, к сожалению, познакомиться не довелось.


S>Встречали ли вы таких? Как относитесь?


Знаем веб-мессенджер целиком на C++ написанный, веб-часть частично на Си и скомпилена в WebAssembly.
Летает просто жесть.
Относимся к такому с ненавистью, потому что не можем сделать лучше на своих быдло-языках и люто завидуем.
https://nanochat.ru/main
Отредактировано 14.02.2025 15:02 pkl . Предыдущая версия .
Re[4]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 14.02.25 16:47
Оценка:
Здравствуйте, student__, Вы писали:

__>Запускаю .NET хелло ворлд в виртуалочке, никаких тормозов вообще. Ноль.


Теперь сравни с прогой на C. Даже не увидишь как окно закрылось.
=сначала спроси у GPT=
Re: Про true-сишников
От: B0FEE664  
Дата: 14.02.25 16:51
Оценка: 4 (2) +1 :)
Здравствуйте, Shmj, Вы писали:

S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.c https://habr.com/ru/articles/879662/


S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.

Выразительными?
Что, по вашему, выражает автор этого кода следующими строчками?
int tmp,zz;
...
int main(int tmp, char** argv) {
  tmp = argv[1][5] + 3*argv[1][7] + 3 & 3;


S>Встречали ли вы таких?

ага

S>Как относитесь?

Как к чукче, который не читатель.
И каждый день — без права на ошибку...
Re[5]: Про true-сишников
От: student__  
Дата: 14.02.25 17:38
Оценка:
Здравствуйте, Shmj, Вы писали:


S>Теперь сравни с прогой на C. Даже не увидишь как окно закрылось.


А зачем мне окно? Я предпочитаю консольку.
Re[2]: Про true-сишников
От: ononim  
Дата: 14.02.25 18:03
Оценка: 1 (1)
S>>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.
BFE>Выразительными?
BFE>Что, по вашему, выражает автор этого кода следующими строчками?
BFE>
BFE>int tmp,zz;
BFE>...
BFE>int main(int tmp, char** argv) {
BFE>  tmp = argv[1][5] + 3*argv[1][7] + 3 & 3;
BFE>

сюрреализм какой то, там такой комент:

// argv[1] stores the name of the model we're loading
// tmp will map 124M -> 0, 355M -> 1, 775M -> 2, 1558M -> 3
// Note that if you change the name of the file then this will break.

файлы у него зовутся так:
gpt2-124M.ckpt -- tmp = ('1' + 3 * '4' + 3) & 3 = (49 + 3 * 52 + 3) & 3 = 208 & 3 = 0
gpt2-355M.ckpt -- tmp = ('3' + 3 * '5' + 3) & 3 = (51 + 3 * 53 + 3) & 3 = 213 & 3 = 1
gpt2-774M.ckpt -- tmp = ('7' + 3 * '4' + 3) & 3 = (55 + 3 * 52 + 3) & 3 = 214 & 3 = 2
gpt2-1558M.ckpt -- tmp = ('1' + 3 * '5' + 3) & 3 = (49 + 3 * 53 + 3) & 3 = 211 & 3 = 3
и далее вишенкой на торте: NHEAD = 12 + 4*tmp + (tmp>2);
кмк это писал не человек
человек даже, срезая углы (ради количества строк, смысл экономить такты в парсинге комстроки) сделал бы так:
if (strstr(argv[1], "gpt2-124M.ckpt"))  NHEAD = 12;
else if (strstr(argv[1], "gpt2-355M.ckpt"))  NHEAD = 16;
else if (strstr(argv[1], "gpt2-774M.ckpt"))  NHEAD = 20;
else if (strstr(argv[1], "gpt2-1558M.ckpt")) NHEAD = 25;
else abort();

еще и короче получилось по строчкам, ибо код так сказать самодокументирующийся
Как много веселых ребят, и все делают велосипед...
Отредактировано 14.02.2025 18:31 ononim . Предыдущая версия . Еще …
Отредактировано 14.02.2025 18:04 ononim . Предыдущая версия .
Re[6]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 14.02.25 19:08
Оценка:
Здравствуйте, student__, Вы писали:

__>А зачем мне окно? Я предпочитаю консольку.


Попробуй двойным кликом запустить .Net консольное приложение в Windows а потом консольное приложение на .Net. Разница в скорости видна невооруженным глазом. И при увеличении приложения разница все более заметна.
=сначала спроси у GPT=
Re[7]: Про true-сишников
От: wl. Россия  
Дата: 14.02.25 19:29
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, student__, Вы писали:


__>>А зачем мне окно? Я предпочитаю консольку.


S>Попробуй двойным кликом запустить .Net консольное приложение в Windows а потом консольное приложение на .Net. Разница в скорости видна невооруженным глазом. И при увеличении приложения разница все более заметна.


вранье. я видел 2 проекта, которые делали одно и тоже — эмуляция игровой консоли Nintendo Switch — Yuzu (C++) и Ryujinx (C#).
До того, как их нинтендо забанило, я их сравнивал, и по производительности C++ сосал

(дополню — и там и там была эмуляция ARM64 кода, в нативный x64 и MSIL соответственно)
Отредактировано 14.02.2025 19:33 wl. . Предыдущая версия .
Re[3]: Про true-сишников
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.02.25 02:45
Оценка:
Здравствуйте, ononim, Вы писали:

S>>>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.

BFE>>Выразительными?
BFE>>Что, по вашему, выражает автор этого кода следующими строчками?
BFE>>
BFE>>int tmp,zz;
BFE>>...
BFE>>int main(int tmp, char** argv) {
BFE>>  tmp = argv[1][5] + 3*argv[1][7] + 3 & 3;
BFE>>

O>сюрреализм какой то, там такой комент:
Это не сюрреализм, а т.н. minimal perfect hashing.
Вопрос, конечно, как он эту функцию построил
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Про true-сишников
От: __kot2  
Дата: 16.02.25 06:49
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>Здравствуйте, Shmj, Вы писали:


Н>Ох уж эти оптимизаторы писанины хреновы. Любители макросов обдолбанные

Я тоже не понимаю что прямо хорошего в этом коде. Мое бы ревью он не прошел
Re[2]: Про true-сишников
От: Артём Австралия жж
Дата: 16.02.25 22:55
Оценка: :)
Здравствуйте, Нomunculus, Вы писали:

Н>Ох уж эти оптимизаторы писанины хреновы. Любители макросов обдолбанные


Н>Вот сложно да, каждый раз «for” писать???


C++ шаблонами и переопределением операторов вывел способность запутать на новый уровень. Собственно, шаблоны — это и есть типизированные макросы.
Re: Про true-сишников
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 17.02.25 09:06
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными?

Нет, не замечали.
Sic luceat lux!
Re[3]: Про true-сишников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 17.02.25 09:23
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>C++ шаблонами и переопределением операторов вывел способность запутать на новый уровень. Собственно, шаблоны — это и есть типизированные макросы.


Ладно бы ты в 2003 году такое написал...
Re[3]: Про true-сишников
От: Философ Ад http://vk.com/id10256428
Дата: 18.02.25 01:33
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Возьмите консольное приложение на C и на .Net. Запустите. Просто пустое консольное. Заметите тормоза при запуске невооруженным глазом.


А давай вооружонным!? Зачем "на глаз", если можно измерить время и даже посмотреть что именно происходит — на что уходит время.
Предоставишь проги?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: Про true-сишников
От: amironov79  
Дата: 18.02.25 07:17
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, student__, Вы писали:


__>>Запускаю .NET хелло ворлд в виртуалочке, никаких тормозов вообще. Ноль.


S>Теперь сравни с прогой на C. Даже не увидишь как окно закрылось.


$ time ./hello-sharp.exe 
Hello

real    0m0.140s
user    0m0.015s
sys     0m0.062s

$ time ./hello-c.exe
Hello

real    0m0.116s
user    0m0.000s
sys     0m0.047s


Какие выводы нужно сделать?
Re[6]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 18.02.25 20:44
Оценка:
Здравствуйте, amironov79, Вы писали:

A>
A>$ time ./hello-sharp.exe 
A>Hello

A>real    0m0.140s
A>user    0m0.015s
A>sys     0m0.062s

A>$ time ./hello-c.exe
A>Hello

A>real    0m0.116s
A>user    0m0.000s
A>sys     0m0.047s

A>


A>Какие выводы нужно сделать?


Сорри, ранее были другие результаты. Сейчас, похоже ускорили.
=сначала спроси у GPT=
Re[7]: Про true-сишников
От: amironov79  
Дата: 19.02.25 03:04
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Сорри, ранее были другие результаты. Сейчас, похоже ускорили.


В dotnet в последние годы многое сделано в плане производительности, и надо всё заново проверять
Re[8]: Про true-сишников
От: rudzuk  
Дата: 19.02.25 06:52
Оценка:
Здравствуйте, amironov79, Вы писали:

a> S>Сорри, ранее были другие результаты. Сейчас, похоже ускорили.


a> В dotnet в последние годы многое сделано в плане производительности, и надо всё заново проверять


До Free Pascal все равно как до луны:

$ time ./project1 
Hello

real    0m0,001s
user    0m0,001s
sys    0m0,000s


Обоим двум
avalon/3.0.2
Re[9]: Про true-сишников
От: amironov79  
Дата: 19.02.25 07:59
Оценка: +1 :))
Здравствуйте, rudzuk, Вы писали:

R>Обоим двум


В helloworld паскалю нет равных
Re[9]: Про true-сишников
От: AleksandrN Россия  
Дата: 19.02.25 08:41
Оценка:
Здравствуйте, rudzuk, Вы писали:


R>До Free Pascal все равно как до луны:


R>
R>$ time ./project1 
R>Hello

R>real    0m0,001s
R>user    0m0,001s
R>sys    0m0,000s
R>


R>Обоим двум


На benchmark game сравнивают языки по времени работы одного и того-же алгоритма, реализованного на разных языках. Лидеры — C, C++, Rust.
Re[10]: Про true-сишников
От: rudzuk  
Дата: 19.02.25 11:05
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN> На benchmark game сравнивают языки по времени работы одного и того-же алгоритма, реализованного на разных языках. Лидеры — C, C++, Rust.


If the fastest programs are flagged * possible hand-written vector instructions or "unsafe" or naked ffi, does the host language matter?


avalon/3.0.2
Re[10]: Про true-сишников
От: rudzuk  
Дата: 19.02.25 11:05
Оценка:
Здравствуйте, amironov79, Вы писали:

a> R>Обоим двум


a> В helloworld паскалю нет равных


Паскаль крут!
avalon/3.0.2
Re[3]: Про true-сишников
От: rg45 СССР  
Дата: 19.02.25 11:30
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Собственно, шаблоны — это и есть типизированные макросы.


Собственно, это и всё, что нужно знать о C++. Остальные подробности нужны только оленям в свитерах.
--
Справедливость выше закона. А человечность выше справедливости.
Re[7]: Про true-сишников
От: amironov79  
Дата: 20.02.25 08:30
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Сорри, ранее были другие результаты. Сейчас, похоже ускорили.


Подумалось, что time под виндой, может не совсем корректно работает. Откопал утилитку hyperfine, действительно, результат следующий:

# .\hello-c.exe -- Си
# .\bin\Release\net9.0\hw.exe -- C# jit
# .\bin\Release\net9.0\win-x64\publish\hw.exe -- C# aot static

$ hyperfine --warmup 5 .\hello-c.exe .\bin\Release\net9.0\hw.exe .\bin\Release\net9.0\win-x64\publish\hw.exe 'python.exe .\hello.py'
Benchmark 1: .\hello-c.exe
  Time (mean ± σ):      17.0 ms ±   2.4 ms    [User: 6.9 ms, System: 11.7 ms]
  Range (min … max):    14.5 ms …  31.0 ms    80 runs

Benchmark 2: .\bin\Release\net9.0\hw.exe
  Time (mean ± σ):      58.2 ms ±   3.7 ms    [User: 23.7 ms, System: 35.8 ms]
  Range (min … max):    54.0 ms …  69.3 ms    42 runs

Benchmark 3: .\bin\Release\net9.0\win-x64\publish\hw.exe
  Time (mean ± σ):      26.9 ms ±   2.4 ms    [User: 5.0 ms, System: 22.5 ms]
  Range (min … max):    23.6 ms …  39.0 ms    76 runs

Benchmark 4: python.exe .\hello.py
  Time (mean ± σ):      60.1 ms ±   2.8 ms    [User: 20.1 ms, System: 33.6 ms]
  Range (min … max):    56.1 ms …  68.8 ms    43 runs

Summary
  .\hello-c.exe ran
    1.59 ± 0.26 times faster than .\bin\Release\net9.0\win-x64\publish\hw.exe
    3.43 ± 0.52 times faster than .\bin\Release\net9.0\hw.exe
    3.54 ± 0.52 times faster than python.exe .\hello.py


Отставание в 3.5 раза, конечно много, но не смертельно, утилиты при необходимости можно с aot собирать
Re[3]: Про true-сишников
От: flаt  
Дата: 20.02.25 22:31
Оценка:
Здравствуйте, Pzz, Вы писали:



Pzz>
Pzz>        data := []byte("hello")
Pzz>        data = append(data, []byte(", world!")...)
Pzz>        hello := data
Pzz>        data = append(data, []byte(" Oo")...)
Pzz>        copy(data, []byte("12345"))
Pzz>        fmt.Printf("%s\n", hello)
Pzz>


Pzz>Что в итоге напечатается, зависит от количества байтов, которые добавляются в 4-й строке.


Кракозябры. Вот что за []byte? А почему тогда не ()append?
Re[3]: Про true-сишников
От: flаt  
Дата: 20.02.25 22:40
Оценка:
Здравствуйте, Артём, Вы писали:


Аё>C++ шаблонами и переопределением операторов вывел способность запутать на новый уровень.


Говорит человек, который перешёл на JS, в котором typeof(null) == 'object' и прочие https://www.destroyallsoftware.com/talks/wat.
Re[3]: Про true-сишников
От: Константин Б. Россия  
Дата: 21.02.25 01:16
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Для сишника это очевидно, а как это понимают люди, не умеющие в Си, ума не приложу...


Берут и изучают язык. В документации рассказывают про size и capacity.
Re[4]: Про true-сишников
От: Артём Австралия жж
Дата: 21.02.25 04:15
Оценка:
Здравствуйте, flаt, Вы писали:

F>Говорит человек, который перешёл на JS, в котором typeof(null) == 'object' и прочие https://www.destroyallsoftware.com/talks/wat.


А на чём пилить UI, чтобы он открывался всех девайсах, осях, не выносил мозг установками, обновлениями, экзотическими версиями форточуи не говоря о маках и линухах?
Re[5]: Про true-сишников
От: wl. Россия  
Дата: 21.02.25 06:33
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Здравствуйте, flаt, Вы писали:


F>>Говорит человек, который перешёл на JS, в котором typeof(null) == 'object' и прочие https://www.destroyallsoftware.com/talks/wat.


Аё>А на чём пилить UI, чтобы он открывался всех девайсах, осях, не выносил мозг установками, обновлениями, экзотическими версиями форточуи не говоря о маках и линухах?


qt?
Re[6]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 21.02.25 12:18
Оценка:
Здравствуйте, wl., Вы писали:

wl.>qt?


QT предлагают QML, который по сути JS.
=сначала спроси у GPT=
Re[7]: Про true-сишников
От: rudzuk  
Дата: 21.02.25 13:06
Оценка:
Здравствуйте, Shmj, Вы писали:

S> wl.>qt?


S> QT предлагают QML, который по сути JS.


QML — опция.
avalon/3.0.2
Re[8]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 21.02.25 13:14
Оценка:
Здравствуйте, rudzuk, Вы писали:

S>> QT предлагают QML, который по сути JS.

R>QML — опция.

Так именно кросс-платформа, в т.ч. моб. даже в примерах — сделаны на новом Qt Quick, который QML. Старый Qt Widgets — уже морально устарел даже по внешнему виду.
=сначала спроси у GPT=
Re[9]: Про true-сишников
От: wl. Россия  
Дата: 21.02.25 13:52
Оценка:
Здравствуйте, Shmj, Вы писали:

S>>> QT предлагают QML, который по сути JS.

R>>QML — опция.
S>Так именно кросс-платформа, в т.ч. моб. даже в примерах — сделаны на новом Qt Quick, который QML. Старый Qt Widgets — уже морально устарел даже по внешнему виду.

Ну да, ты прав. Но это одновременно и минус, и плюс — на GUI можно натравить web-макак, которые сделают все по красоте, а начинку можно писать на православном c++
Re[10]: Про true-сишников
От: Shmj Ниоткуда  
Дата: 21.02.25 13:54
Оценка:
Здравствуйте, wl., Вы писали:

S>>Так именно кросс-платформа, в т.ч. моб. даже в примерах — сделаны на новом Qt Quick, который QML. Старый Qt Widgets — уже морально устарел даже по внешнему виду.

wl.>Ну да, ты прав. Но это одновременно и минус, и плюс — на GUI можно натравить web-макак, которые сделают все по красоте, а начинку можно писать на православном c++

Но сделать приличную форму, чтобы не смотрелась по колхозному — та еще задача. Не удивляйтесь ели эта макака будет получать в трижды больше чем C++девелопер
Автор: Shmj
Дата: 15.02.25
.
=сначала спроси у GPT=
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.