]> Sergey Matveev's repositories - stargrave-blog.git/commit
Начал программировать на C
authorSergey Matveev <stargrave@stargrave.org>
Wed, 1 Apr 2020 14:33:29 +0000 (17:33 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 1 Apr 2020 14:33:29 +0000 (17:33 +0300)
commita3c691e50ec8b2e540ebd1ec234d47c424eed3e7
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent6f346f3fa4c2c80803f89b6e4efc7addf05378d2
Начал программировать на C

Прежде я только читал его и суммарно написал наверное 150 строк за всю
жизнь на нём. В отличии от Rust, меня особо нигде не воротит в нём. Да и
вообще не воротит. Но удручает после Go. Всякие мелочи типа "name *int"
vs "int *name" -- ну почему придумали добавлять звёздочку к имени? Не,
наверное причина есть, но в Go же в итоге сделали гораздо более
читабельно. Да и то, что вначале идёт типизация, потом имя (к которому
всякие звёздочки могут быть добавлены), потом возможно инициализация --
имя, получается, находится где-то в середине строки, что неудобно же. В
Go имя чётко находится вначале, всегда, детерминировано. Внимательно
просмотрел книгу Кернигана и Ричи -- вижу как много способов выстрелить
себе в ногу имеется и как же их много убрали в Go. Воситину, Go это C
каким он должен был быть!

Но в целом всё ожидаемо мною и мне нравится. Почитал про разные стили
написания C кода и... большинство меня отталкивают, особенно после
привычек в Python/Go. Ладно, как минимум, хотелось бы инструмент
автоматизирующий форматирование кода, аналогично go fmt. Попробовал
indent -- из коробки он сделал ужас (лично по мне), а man по нему
большой. А вот clang-format сделал всё очень даже ничего, только
величину отступа пришлось поправить. Я был шокирован, увидев что в C
нельзя оставлять запятую в конце последнего аргумента!

Высокоуровневые привычки (даже из Go) конечно терзают, но ничего. В C
реально прям много интересных подходов у K&R увидел, хотя большинство из
них мог бы отнести к yet another way to shoot your leg. C *гораздо*
сложнее и богаче возможностями самовыражения чем Go.