Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2023, 09:29   #1
iXNomad
Пользователь
 
Регистрация: 06.01.2021
Сообщений: 45
Сообщение Что дальше по чистому С после Стивена Прата?

Книга огонь. Что читать дальше после неё? Именно по С, без плюсов.
Чтобы было уже не для новичков, а ещё более полезно и интересно.
В каком лучше порядке?

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

Керниган и Ритчи?

Крч поделитесь своим опытом пожалуйста, спасибо

P.S. Язык либо русский, либо английский, не важно.

Последний раз редактировалось iXNomad; 26.07.2023 в 09:33.
iXNomad вне форума Ответить с цитированием
Старый 26.07.2023, 09:53   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от iXNomad Посмотреть сообщение
Хочется двигаться
Свой опыт получить не желаете? программируйте теперь.

Цитата:
на отработку и закрепление
Вы не в школе, это реал лайф

Никому ваши отработки закрепления задачки выводы не нужны. Система образования вас обманывает, просто заматывая ваше время.

Цитата:
P.S. Язык либо русский, либо английский, не важно.
А это никому не нужные понты.

Читайте на сишном.
Alar вне форума Ответить с цитированием
Старый 26.07.2023, 16:39   #3
Steelcraft
Форумчанин
 
Регистрация: 13.03.2023
Сообщений: 111
По умолчанию

Цитата:
Сообщение от iXNomad Посмотреть сообщение
Чтобы было уже не для новичков, а ещё более полезно и интересно.
...
Керниган и Ритчи?

Не рекомендую. Это букварь начального уровня, плюс еще изрядно устаревший. Ничего нового не почерпнете.

Если реально хотите развиваться, то лучше изучить:

1. Стандарт языка C, желательно посвежее (последняя официальная версия от 2018 года).
2. Что-нибудь по тестированию кода на C. Программист, не умеющий тестировать собственный код, из новичков никогда не выйдет.
Steelcraft вне форума Ответить с цитированием
Старый 26.07.2023, 20:53   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Так он же, похоже, в профи не стремится. А так могу согласиться с вышесказанным: прочитай хоть всю библиотеку, а не практикуясь, пишучи свой код - результат = 0. Прочитав первые главы: переменные, константы, оператор присваивания и печать (знаменитый "Hello, world!")- уже можно накидать первую программу. И дальше по мере освоения новых разделов...
digitalis вне форума Ответить с цитированием
Старый 27.07.2023, 09:25   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 965
По умолчанию

Цитата:
Сообщение от iXNomad Посмотреть сообщение
Именно по С, без плюсов.
чего там в чистом Си учить то? Именно, что надо уже на плюсы переходить, вот, где движуха
Детство кончилось.
Алексей1153 вне форума Ответить с цитированием
Старый 27.07.2023, 18:04   #6
Steelcraft
Форумчанин
 
Регистрация: 13.03.2023
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
чего там в чистом Си учить то?
Не так много, как в плюсах, конечно, но есть. Стандарт всего полторы сотни страниц, но реально на собеседованиях очень мало кто даже до миддла доползает с натяжкой.

Ну и тестировать чистый C мало кто умеет.
Steelcraft вне форума Ответить с цитированием
Старый 28.07.2023, 17:20   #7
iXNomad
Пользователь
 
Регистрация: 06.01.2021
Сообщений: 45
По умолчанию

Я её ещё не закончил, но просто уже думаю, что дальше потом делать. Потому что везде всё в принципе одно и тоже. До С++ пока рано, я ещё даже на вышку не поступил.

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

Но когда пишешь свою программу, и попутно открыто миллион вкладок со StackOverflow, потому что изучаешь, как справляться с огромным количеством проблем - это сильно двигает. Там не в синтаксисе и не в языке самом сложность. А в том, чтобы писать на нём аккуратно (на довольно низком уровне я бы сказал, по сравнению с Java или каким-нибудь Python), учитывая огромное количество неочевидных для новичка нюансов. Хотя архитектуру эвм немного изучаю, как процессор-шина-озу - основные принципы понимаю, неглубоко пока естественно.

Я так и понял, что язык довольно простой и компактный.
НО
Просто нереальное количество подводных камней, тонкостей и т.д. не с позиции самого языка, а того, как оно всё потом работает.

Просто его знать мало, нужно понимать, что происходит на низком уровне, что делает процессор.

P.S. Самый кошмар - это когда стоит задача где надо прочитать ввод пользователя)))) я пока сложнее не натыкался. (В плане именно трудоёмкости и затраченного времени). Нужно буквально проверять, что он вводит, соответствует ли это ожидаемому (а чего он только может не написать, например буквы вместо цифр, несколько слов когда scanf переваривает только одно, слишком больших цифр=переполнение типа, и до в принципе переполнения буфера).
Крч строки, ввод-вывод это самая жесть.

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

Код:
#include <stddef.h>

char *reverse_words (const char *words, size_t length, char *reversed)
{
  for(size_t i = 0; i < length; i++) {
    reversed[i] = words[length - i - 1];
  }
	reversed[length] = '\0';
  char *p0 = &reversed[0];
  char *p1 = p0;
  while(1) {
    if(*p0 == ' ' || *p0 == '\0') {
      for(int i = 0; i < (p0 - p1 + 1) / 2; i++) {
        char tmp = *(p1 + i);
        *(p1 + i) = *(p0 - 1 - i);
        *(p0 - 1 - i) = tmp;
      }
      if(*p0 == '\0') break;
      p0++;
      p1 = p0;
    }
    p0++;
  }
	return reversed;
}
Для тех, кто уже владеет С нормально это может быть и изи, но для такого новичка как я это было трудно.

Последний раз редактировалось BDA; 04.04.2024 в 19:40.
iXNomad вне форума Ответить с цитированием
Старый 28.07.2023, 17:28   #8
iXNomad
Пользователь
 
Регистрация: 06.01.2021
Сообщений: 45
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
чего там в чистом Си учить то? Именно, что надо уже на плюсы переходить, вот, где движуха
Детство кончилось.
В этом и проблема, как я понял, что сам по себе язык довольно компактный. Но вот чтобы научиться на нём свободно, грамотно писать, не ошибаясь на каждом шагу - это сложно.
Я бы сказал, C - это как "easy to learn, hard to master".
iXNomad вне форума Ответить с цитированием
Старый 28.07.2023, 17:32   #9
iXNomad
Пользователь
 
Регистрация: 06.01.2021
Сообщений: 45
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Так он же, похоже, в профи не стремится. А так могу согласиться с вышесказанным: прочитай хоть всю библиотеку, а не практикуясь, пишучи свой код - результат = 0. Прочитав первые главы: переменные, константы, оператор присваивания и печать (знаменитый "Hello, world!")- уже можно накидать первую программу. И дальше по мере освоения новых разделов...
Я вот пока чисто так, ради опыта, пытаюсь написать программу, которой бы сам попользовался, на своём ПК.
Получается пока кривовато, но хочу чисто из принципа довести до конца.

https://github.com/nomadrussian/PSW
iXNomad вне форума Ответить с цитированием
Старый 31.07.2023, 20:45   #10
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от iXNomad Посмотреть сообщение
не ошибаясь на каждом шагу
ошибайтесь, раз скомипиловалось, значит всё правильно )

Цитата:
"easy to learn, hard to master".
не цитируйте детские сопли, подобное устрарело сразу после появления статусов во вконтактике.

Цитата:
кривовато
кривовато не программерский термин, тут всё бинарно

либо работает, либо не работает

либо выполняет функция либо не выполняет.

врят ли то что вы сделали будет вешать систему или вас будет беспокоить кросплатформенность, но это совсем другие термины

После си, может быть, перл, освоите.

Цитата:
StackOverflow
А тут стало обидно, и сразу потерял интерес и к теме и к общению с автором

вопрос почему не вкладыки с programmersforum.ru, задавать не буду.
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МГУ или куда идти дальше...(после колледжа) Алексей_2012 Свободное общение 9 20.01.2014 16:12
куда идти дальше после базового курса ? Gradus Свободное общение 4 28.01.2012 10:41
Какую купить версию книги Стивена Прата. Запутался. spamer Свободное общение 0 26.01.2010 03:01
Почему после выполнения do-while, вложенного в if, инструкции дальше не выполняются? Chewing_dog Помощь студентам 3 09.06.2009 06:44
После ошибки продолжить работу дальше Shouldercannon Общие вопросы Delphi 2 21.04.2009 11:23