From 4c87b74e930876461379b859cf3e3a229c8f48bd Mon Sep 17 00:00:00 2001 From: ov7a Date: Wed, 3 Apr 2024 21:20:46 +0400 Subject: [PATCH] thoughts on C --- _posts/2024-04-03-thoughts-on-c.md | 66 ++++++++++++++++++ .../c_and_other_programming_languages.jpg | Bin 0 -> 49871 bytes 2 files changed, 66 insertions(+) create mode 100644 _posts/2024-04-03-thoughts-on-c.md create mode 100644 assets/images/c_and_other_programming_languages.jpg diff --git a/_posts/2024-04-03-thoughts-on-c.md b/_posts/2024-04-03-thoughts-on-c.md new file mode 100644 index 0000000..150176a --- /dev/null +++ b/_posts/2024-04-03-thoughts-on-c.md @@ -0,0 +1,66 @@ +--- +layout: post +title: Профдеформация и C +tags: [c, мысли, фп] +hidden: true +--- +C/C++ (именно в таком сочетании) я в базовом варианте изучил за пару летних месяцев перед универом. Тогда для меня он был просто заменой паскалю, и уровень задач был соответствующий — всякая мелочевка для развлечения и разнообразные числодробилки. Универ со своими лабами не сильно что изменил (я получил автомат по программированию в те времена, когда по всем предметам надо было сдавать экзамены и не было балльной системы); Python, JavaScript и даже Java мимо пробегали, но всякие тесты булевой функции на монотонность проще писались на C/C++. + +На первых двух работах мне даже платили за то, что я писал на C++, но я тогда был джуном и это все сейчас кажется несерьезным (хотя уже будучи зрелым специалистом написал на C++ модуль ядра для BSD, это был прикольный, но мимолетный опыт). Тем более что потом переключился на Python, оттуда на Scala и понеслось... + +В общем, получается, что всерьез, профессионально, на Си я и не писал никогда. А вот в последние несколько месяцев я как раз этим и занимался в рамках научного проекта. И (вполне закономерно) оказалось, что процесс не сильно-то отличается от других языков. + +Все стандартные паттерны в наличии, например: +* разделение интерфейса (`.h`) и реализации (`.c`) +* своего рода полиморфизм можно построить на структурах и указателях на функции +* [разделение](https://docs.gradle.org/8.7/userguide/java_library_plugin.html#sec:java_library_separation) `api` и `impementation` в зависимостях (где включать заголовок — в `.c` или `.h`) +* всякие билдеры, стратегии и фасады — это вообще легко +* `typedef` — one love ❤️ +* даже шаблоны можно сделать, правда макросами +* и т.п. + +При этом возникает понимание многих конструкций, которые казались "лишними": `extern`, `static`, макросы (увы, некоторые прикольные штуки только ими и получается делать), префиксы для функций из разных модулей (даже в не очень большом проекте словил коллизию имен, неймспейсов не хватает), `#ifdef DEBUG` и отдельная сборка под `valgrind` или санитайзеры (потому что без отладочного `-g` особо и не отладишь утечки памяти, а еще `valgrind` не знает всех инструкций из `-march=native` и может даже врать про номера строк на `-03`). Более того, `-Wall` выдает все замечания по делу! Хотя `inline` с его приколами все еще невнятный какой-то :/ + +В более высокоуровневых языках обычно многие вещи делаются гораздо проще (но не во всех конечно \*выразительно смотрит на java\*), да и "мыслишь" после них более абстрактно. Часто себя ловил на мысли, что вот тут лямбду надо бы, а их особо и нет (только указатели на функции), а вот тут хотелось бы иметь возможность тип менять (вместо `void *`), а вот тут частичное применение функции прям зашло бы... Не хватает простых вещей типа `Option`, а указатели уже не хочешь использовать, потому что дешевле структуру передать. + +Увы, инструменты разработки — не сильная сторона Си. `Makefile` еще можно потерпеть, `autoconf` сотоварищи — просто жесть, пакетный менеджер — мимо, VS Code [опять](/2021/05/30/fsharp.html#section) выбесил по какой-то фигне, а добил меня [миллион настроек](https://clang.llvm.org/docs/ClangFormatStyleOptions.html) `clang-format`, после которых я "обманываю" форматтер пустым комментарием, чтобы не совсем отвратно выдавал список аргументов функции. Впрочем, [ничего нового](https://forum.ubuntu.ru/index.php?topic=4700.msg85003#msg85003) (осторожно, по ссылке кринж). После космических технологий вроде IntelliJ Idea или Gradle — все очень грустно. + +При этом язык все еще развивается. Например, весьма пригодились составные литералы: +``` +return (some_struct_t){ + .field1 = value1, + .field2 = .value2, // trailing comma FTW! +} +``` +Сейчас есть стандарт `c17`, а еще грядет `c23` — и там есть [много прикольных штук](https://thephd.dev/c23-is-coming-here-is-what-is-on-the-menu), про многие из которых я могу сказать: да, такая фича пригодилась бы! Даже лямбды маячат на далеком горизонте, но добавить их — [непростая задача](https://thephd.dev/lambdas-nested-functions-block-expressions-oh-my). + +В общем, писать что-то на низкоуровневом языке достаточно интересно (если это не [Zig](/2024/02/01/zig.html) :)). Это полезное упражнение, чтобы понять, как много делают всякие хорошие инструменты и библиотеки, да и собственный прогресс оценить. "Вернуться к истокам" тоже прикольно. Когда писал пост, откопал в папке со своей универской фигней вот такую хрень, которая датируется 2010 годом: +```cpp +#include +class foo +{ +friend bool operator < ( bool left, const foo& right ); +friend int operator ^ ( int left, const foo& right ); +}; + +bool operator < ( bool left, const foo& right ) { return left; } +int operator ^ ( int left, const foo& right ) { return left; } + +int main() +{ +int O_o = 0, _ = 0, baka = 0; foo o_O, neko; + +bool XD = O_o >_< o_O; +int nya = baka ^_^ neko; + +//printf("%d ",nya); +printf("%d ",XD); +return 0; +} +``` +Очевидно, все вышеизложенное хорошо так субъективизировано связанными воспоминаниями из тех времен :) Но даже с учетом этого впечатления останутся положительными. + +Что бы там не [пророчили](https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf), кажется, что Си пока рано умирать. + +![](/assets/images/c_and_other_programming_languages.jpg) + diff --git a/assets/images/c_and_other_programming_languages.jpg b/assets/images/c_and_other_programming_languages.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28956c204af58ffe532ece0eb6a781611358951c GIT binary patch literal 49871 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%0D%vRR>loBH>;4bdU#gg7Y@HWCIY=P~QDpAh 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