Осваиваем Си по-быстрому

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
c0dER
Интересующийся
Сообщения: 3
Зарегистрирован: 20 фев 2020, 18:29
Контактная информация:

Осваиваем Си по-быстрому

Непрочитанное сообщение c0dER » 21 фев 2020, 09:54

Добрый день!
Что бы вы могли порекомендовать чтобы начать быстро осваивать Си с прицелом на системное программирование под Linux?

Например:
Какие из ваших книг и в какой последовательности?
Какие книгу других авторов на эту тему почитать и в какой последовательности?
Возможно какие-то видео или каналы на youtube есть на эту тему?

Ну и вообще как наиболее эффективно организовать свое обучение в данной теме?

Аватара пользователя
Olej
Писатель
Сообщения: 13903
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Си по-быстрому

Непрочитанное сообщение Olej » 21 фев 2020, 17:45

c0dER писал(а):
21 фев 2020, 09:54
Ну и вообще как наиболее эффективно организовать свое обучение в данной т
Отвечаю по порядку ... как я это понимаю:
c0dER писал(а):
21 фев 2020, 09:54
Что бы вы могли порекомендовать чтобы начать быстро осваивать Си с прицелом на системное программирование под Linux?
С одной стороны, не зная C - нельзя толком знать и понимать Linux/UNIX, его API, библиотеки. (Я уже не говорю о ядре Linux, которое пишется и анализируется исключительно на C ... но ядра - это особая песня, и это всем не нужно.)
Т.е. понимать C, и глубоко, нужно обязательно!
С другой стороны, C - не лучший выбор на сегодня, даже для системного программирования в Linux. Почему? Потому что а). трудоёмкость разработки низкая, б). скорость разработки медленная, в). огромное количество ошибок и масса тестироваия и отладки.
Вопрос: а на чём же тогда писать системные утилиты Linux?
Ответ: во многих случаях это - Python. Иногда, и в некоторых областях это может быть Java. Из новых языков для этого - Go, как продолжение развития линии C/C++.

Аватара пользователя
Olej
Писатель
Сообщения: 13903
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Си по-быстрому

Непрочитанное сообщение Olej » 21 фев 2020, 17:56

c0dER писал(а):
21 фев 2020, 09:54
Какие книгу других авторов на эту тему почитать и в какой последовательности?
Вообще то, для "крутого" программирования на C в Linux вам нужна одна-единственная книжка, вот она:
Изображение
(я даже некоторым образом, в малой части текста, был научным редактором издания в издательстве "Символ-Плююс")

Есть более свежее издание (но я его в руках не держал - книга весьма дорогая):
Изображение
У. Ричард Стивенс Стивен Раго
UNIX. Профессиональное программирование, 3-е издание
ISBN: 978-5-93286-216-2
1104 страницы
декабрь 2013
Символ-Плюс, С.-Петербург
Может быть ещё дополнительно книги того же автора:
Изображение

Изображение

Больше вам по API Linux/UNIX/POSIX ничего не нужно, всё остальное будет попусту потраченное время!

P.S. Все эти книги можно свободно скачать по Интернет. Если не найдёте ссылок - спросите, я вам найду. ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 13903
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Си по-быстрому

Непрочитанное сообщение Olej » 21 фев 2020, 18:25

c0dER писал(а):
21 фев 2020, 09:54
Какие из ваших книг и в какой последовательности?
Из того, что я написал - это не принципиально для изучения программирования C... не по этому нужно изучать язык.

Но там есть вещи, c которыми нужно ознакомиться для шлифовки своих представлений о C (тексты в формате .odt LibreOffice, и число страниц указано в этом формате A4):

- Язык C: заметки на полях, 115 стр. - дело в том, что все учебники описывают старый C (переписывают классический учебник K&R), но после этого были стандарты C89 и C99 (годы, соответственно), которые сильно расширяют возможности синтаксиса C. И наш компилятор GCC поддерживает эти новые возможности без дополнительных усилий!

- Языковая локализация C/C++, стр. 22 + Регулярные выражения C/C++, стр. 13 - это о русском языке с литералах C, то о чём иностранные авторы ничего не пишут + о обработке тестовой информации на C. Я не видел внятных описаний на этот счёт, поэтому пришлось сделать собственное исследование на этот счёт.

И большой помощью, для проверки, может стать: Задачи по программированию на языке C, часть 1, стр. 106:
Задач с примерами на сегодня представлено 102
P.S. Мне иногда пишут с вопросом: "Это часть 1. А где же часть 2?". Ответ: часть 2 - это такой же задачник но по языку C++.
Я много участвовал в реальных внедрённых проектах и на C и на C++ ... и моё личное мнение, что это не 2 разных языка, а C++ это естественное, объектное развитие C (Б.Страуструп, автор, первоначально и называл язык не C++ а "C с классами").

Аватара пользователя
c0dER
Интересующийся
Сообщения: 3
Зарегистрирован: 20 фев 2020, 18:29
Контактная информация:

Re: Осваиваем Си по-быстрому

Непрочитанное сообщение c0dER » 25 фев 2020, 12:21

Спасибо большое за обстоятельный ответ.
Olej писал(а):
21 фев 2020, 17:45
С другой стороны, C - не лучший выбор на сегодня, даже для системного программирования в Linux. Почему? Потому что а). трудоёмкость разработки низкая
Возможно вы имели в виду что трудоемкость разработки высокая?

Книгу "UNIX. разработка сетевых приложений" нашел только 2007 года. Были новее издания?

Аватара пользователя
c0dER
Интересующийся
Сообщения: 3
Зарегистрирован: 20 фев 2020, 18:29
Контактная информация:

Re: Осваиваем Си по-быстрому

Непрочитанное сообщение c0dER » 25 фев 2020, 12:32

Спасибо большое за обстоятельный ответ.
Olej писал(а):
21 фев 2020, 17:45
С другой стороны, C - не лучший выбор на сегодня, даже для системного программирования в Linux. Почему? Потому что а). трудоёмкость разработки низкая
Возможно вы имели в виду что трудоемкость разработки высокая?

Книгу "UNIX. разработка сетевых приложений" нашел только 2007 года. Были новее издания?

А что вы скажете по поводу языка Rust для системного программирования?

Аватара пользователя
Olej
Писатель
Сообщения: 13903
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Осваиваем Си по-быстрому

Непрочитанное сообщение Olej » 25 фев 2020, 17:46

c0dER писал(а):
25 фев 2020, 12:32
Возможно вы имели в виду что трудоемкость разработки высокая?
Да, я хотел сказать что скорость разработки низкая. Скорость разработки эквивалентных программ на Python, например, может быть до 10 раз выше! То что потребует на Python написать за час, на C потребует полтора дня работы. :-?
c0dER писал(а):
25 фев 2020, 12:32
Книгу "UNIX. разработка сетевых приложений" нашел только 2007 года. Были новее издания?
Книги Стивенса написаны во 2-й половине 90-х, сам Стивенс умер в молодом возрасте, в 96-м, кажется, году, но книги актуальности не потеряли. Поэтому перевод 2007 гола - самое то.
c0dER писал(а):
25 фев 2020, 12:32
А что вы скажете по поводу языка Rust для системного программирования?
Хороший, новый язык, со строгой семантикой. См. код на Rust.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя