RoadMap для системного программиста

Здарова форумчане. Учу Си уже 2 год. Инструмент на руках есть, а умение им пользоваться - нет. Писал недавно аналог команды cp. Не мог понять, почему он занял у меня пару строк, хотя в github репозитории coreutils там наплевано большое количество макросов, инклудов, и.т.д.

К чему я. Я хочу создавать утилиты для Linux и учавствовать в разработке модулей для него. Хочу в будуще учавствовать в создании веток репозитории ядра.

Какие знания я при себе имею? Ну например про архитектуру x86 (регистры, кеш, обращения, и.т.д.), как хранится информация в памяти (представление отрицательных чисел в памяти). да и базовый курс информатики отлично знаю. умею базово работать с компилятором.
У меня такое чувство, что я учил все вразброс. Люди добрые, поделитесь советом. Обоснуйте как сможете, как двигаться?

Если мой вопрос неккоректен, просьба к модераторам - переведите тему в /dev/null
@rchM@stUrb@t0r
Учу Си уже 2 год
Что там два года то учить? Тем более, что это ну не тупик, конечно, но только стартовая площадка к современному программированию.

В чём вопрос-то? Почему в coreutils макросы? Потому, что это взаимосвязанный пакет из многих утили, наверное, а не просто cp. Да и posix всякие требования накладывает.
Или вопрос как писать модули ядра?
такие дела.
cucullus
В чём вопрос-то?

Вопрос в том, как выйти из тупика? Я знаю Си, но написать утилиту не могу. Например аналог Vim или Gparted. Какие доп.знания я должен приобрести? Вот в чем вопрос
@rchM@stUrb@t0r
но написать утилиту не могу. Например аналог Vim или Gparted
это уже не утилиты

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

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

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

так же полезны будут специфические книги типа
The Linux Kernel Module Programming Guide
@rchM@stUrb@t0r
аналог Vim или Gparted
Вообще написать редактор текста или прямой доступ к жёсткому диску нужны знания не только программирования, но и устройство жёсткого диска, формат данных на нём, файловые системы. Система имеет свой API и может предоставлять функции. Например lsblk, blkid, inxi, df, fdisk могут вывести информацию, из них fdisk выводит адреса начала и конца дисков. Я даже писал fdiskGUI.

Чтобы написать движок редактора, тоже потребуются неимоверные усилия. К примеру возьми Scintilla, так только изучать готовый движок потребуется ещё 2 года. Более актуально сначала использовать чужой движок, чтобы понять как он работает, какие форматы поддерживает и как он с ними работает и только потом, если появится желание и понимание что можешь написать лучше, чем команда гениев в течении нескольких лет, тогда пиши своё.

Плюс к сказанному нужно учить GTK3, его API, чтобы создавать элементы окна.

Но это будет привязка к Linux, а например если напишешь на PureBasic, то можно компилировать и на Windows и на MacOS. Как сказал автор PureBasic язык Си это несколько низкоуровневых функций. С помощью которых не напишешь программу, нужны модули кем то написанные. К примеру в своём My_Notepad_Sci использовал 2 больших модуля - Scintilla и Модуль вкладок, также мелкий автораспознавание кодировки
мои программы
В общем нужно чтобы была необходимость или большой энтузиазм в создании чего-то конкретного да ещё и в обозримый срок.
А уж от учебников и примеров чего угодно и на любых языках интернет трескается.
такие дела.
AZJIO
Я даже писал fdiskGUI.
Стесняюсь спросить, зачем, когда есть давно cfdisk ?
Или это был, чисто спортивно-научный эксперимент?
https://t.me/arch_linuxru
grayich
так же полезны будут специфические книги типа
The Linux Kernel Module Programming Guide

https://ruvds.com/wp-content/uploads/2022/10/The-Linux-Kernel-Module-Programming-Guide-ru.pdf
этот норм?
дак ведь он @rchM@stUrb@t0r, и этим всё сказано, пускай определится сначала.
ThinkPad X390
@rchM@stUrb@t0r
этот норм?
норм
забей в яндекс "системное программирование linux pdf"

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