Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.
Интересно же — существуют true-сишники, особый стиль жизни даже — которые гневно не одобряют всякие излишества в языках, приравнивая их к джинсам и жвачке времен СССР. При этом знают тонкости системы, железа на глубочайшем уровне и знают как сделать проще или вообще не делать. Наслышан о таких, но, к сожалению, познакомиться не довелось.
У меня такое мировоззрение. Хотя я и Си не одобряю, но из доступного-популярного он ближе остальных к "идеалу". C и Go, в зависимости от уместности GC.
По стилистике это писал "бородатый физик в свитере с оленями". Хотя в своей области он может быть весьма ученым мужем, к разработке его лучше не допускать.
Здравствуйте, Anton Batenev, Вы писали:
AB>По стилистике это писал "бородатый физик в свитере с оленями". Хотя в своей области он может быть весьма ученым мужем, к разработке его лучше не допускать.
Но он может достаточно ясно выразить в коде идею. Пусть оно будет и не оптимально, без соблюдения Code Conventions и пр. Но будет работать и идея будет сохранена. Потом уже не так сложно привести к нормальному виду и оптимизировать.
Здравствуйте, Shmj, Вы писали:
S>Интересно же — существуют true-сишники, особый стиль жизни даже — которые гневно не одобряют всякие излишества в языках, приравнивая их к джинсам и жвачке времен СССР. При этом знают тонкости системы, железа на глубочайшем уровне и знают как сделать проще или вообще не делать.
Бородатые олдфаги, единственные, кто умеет писать ядра операционок, драйвера и системные службы, демонстративно отказываются учить что-то ещё. На самом деле, любой уважающий себя сишник знает не только С++, но и ещё с десяток других языков, главным образом для того, чтобы их обсирать. А на Си они любят писать потому, что код в таком случае получается короче и прямее.
AN>Бородатые олдфаги, единственные, кто умеет писать ядра операционок, драйвера и системные службы, демонстративно отказываются учить что-то ещё. На самом деле, любой уважающий себя сишник знает не только С++, но и ещё с десяток других языков, главным образом для того, чтобы их обсирать. А на Си они любят писать потому, что код в таком случае получается короче и прямее.
Да уж, Си прост, как калоша. Не то что эти ваши Swift'ы с какими-то guard'ами, reference cycle'ами и async'ами — пока разберешься, проще на сях свой компилятор написать.
Здравствуйте, Shmj, Вы писали:
S>Вот пример проекта: https://github.com/carlini/c-chat-gpt-2/blob/main/c_chat_gpt_2.chttps://habr.com/ru/articles/879662/
S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными?
Смотря какие проекты. Как я уже говорил — если у вас стоит задача сделать портабельную библиотеку для использования из разных языков, то C будет одним из наилучших вариантов выбора.
А вот, к примеру, какой-нибудь более-менее современный компилятор писать на C — это боль и страдания.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Shmj, Вы писали:
S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.
Проблема в том, что код на Си выглядит просто и компактно, но в каждой строчки возможна проблема работы с памятью, и без многолетнего опыта объективно оценить качество кода практически невозможно.
Ох уж эти оптимизаторы писанины хреновы. Любители макросов обдолбанные
#define LOOP(i, j) for (int i = 0; i < j; i++)
Вот сложно да, каждый раз «for” писать??? Неее. Будет вводить свои слова, что читающий каждый раз вспоминал, что ты там за слова напридумывал.
Придурки
Здравствуйте, Shmj, Вы писали:
S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.
Ага, примерно как на Perl — написать один раз можно, а вот отлаживать или разбираться в таком коде не очень хочется.
Компактными и выразительными по сравеннию с чем? Можешь показать тоже самое на другом языке, менее или более компактно и выразительно?
Мне кажется, что ты клонишь в сторону излишней многословности плюсов, особенно всяких "компайлтаимовых штучек (C)". Ну так те штучки пишутся в библиотечном, а не в прикладном коде. Здесь же код прикладной. И на плюсах мог бы выглядеть и компактнее и выразительнее.
Был бы, например, std::ifstream, вместо fopen/fclose. Всякие макро, типа LOOP, UNARY, BINARY были бы записаны какими-нибудь лямбдами. Хотя LOOP тут — это пппц .
S> Но нужно уметь писать, не пытаться в ООП и пр. извраты.
Н>Вот сложно да, каждый раз «for” писать??? Неее. Будет вводить свои слова, что читающий каждый раз вспоминал, что ты там за слова напридумывал. Н>Придурки
Это что, чатгопота подсказала? В любом случае всё упирается в это "как бы". Какой-то особой выразительности в приведённом коде я не вижу.
Лично я использовал Си в качестве высокоуровневого ассемблера. Сделать вставку в фортрановской программе или JNI.
не замечал. Обычно какие-то огромные портянки функций на десяток страниц, с глобальными переменными и непонятно где определенными константами и прочими макросами.
Пытался как-то разобраться в одном из аспектов драйвера NVidia под linux — не смог, чисто WriteOnly код повсюду
Такие проекты начал писать чуть пораньше Андрей Карпаты: llm.c и llama2.c.
S>Замечали ли вы, что на голом Си проекты получаются как бы более компактными и выразительными? Но нужно уметь писать, не пытаться в ООП и пр. извраты.
И... бесполезны. Потому что на практике вылезает куча нюансов и разветвлений, которые не укладываются в первоначальную абстракцию и требуют расширения. А тут либо ООП, либо что-то ещё, чего в С особо и нет из коробки.
S>Встречали ли вы таких? Как относитесь?
Фабрис Беллар сразу всплывает в памяти, как яркий представитель и с чьим кодом в виде ffmpeg имел дело. Отношусь хорошо, для практического применения такого кода всегда приходится писать удобные обёртки. Но внутри он достаточно прост и читабелен, если им просто пользоваться, а не поддерживать.