LINUX.ORG.RU

Как неиллюзорно выучить C


0

1

Привет господа.

Всегда невообразно ненавидЕл C и писал на Питончике. (перехожу на Groovy). В универе понадобилось сдать какой-то зачет на C.

Вместо адового GCC, заюзал CLang: и я не знаю кто прекраснее CLang или новый улучшенный я, но впервые я смог нормально писать на C. (Писать на C, это когда ты пишешь очевидный код и он работает, а не крашится непонятным образом, если что)

Вы не поверите, но я писал код в редакторе, компилил его и получившийся результат работал!

Так вот. Возникло желание узнать его получше, благо он довольно простой (в плане синтаксиса а не использования, естественно). Знаю только основы.

Вопрос к Ъ-программистам. Что прочитать про: знаменитую работу с памятью, потоки, стандартные проблемы, ошибки и сложности. Какие есть либы? Для нормальной работы с данными, например.

Заранее спасибо.



Последнее исправление: mono (всего исправлений: 6)

K&R, «The Shit Programming Language», например.

anonymous
()

неиллюзорно
невозбранно

Луркмор есть силы почитать, а в гугл зайти и поискать самую главную и основную книгу по C не может.
Что за народ пошел.

Reinar
()

Писать на C, это когда ты пишешь очевидный код и он работает, а не крашится непонятным образом, если что

скорее всего регрессия в clang, надо написать багрепорт.

x0r ★★★★★
()
Ответ на: комментарий от derlafff

0. Отвратный стиль кода 1. Много буков 2. Много ненужной инфы 3. Старая

Нужно было сразу написать, да. И думаю, что гораздо полезней читать статьи, особенно Ъ-юзеров, в них гораздо больше смысла. Есть какой-нибудь читаемый английский источник?

uhbif19
() автор топика
Ответ на: комментарий от PolarFox

Вы мне?

Мата не вижу вроде. Не очень понял, почему вы ко мне обращаетесь «нашла», наверное вы опечатались.

Да этого можно не стеснятся. Юзать нужно то ПО, которое нормально работает, а не то которое более идеологически верное. У CLang потрясающий вывод ошибок, сравнимый только с питончиком. Кроме того гениальная архитектура.

uhbif19
() автор топика

Что прочитать про: знаменитую работу с памятью, потоки, стандартные проблемы, ошибки и сложности

Специфика C такова, что:

  • работу с памятью

    ты организуешь сам;
  • потоки

    ты организуешь сам;
  • стандартные проблемы

    ты организуешь сам;
  • ошибки и сложности

    ... Ну ты понял, да?
ziemin ★★
()

Писать на C, это когда ты пишешь очевидный код и он работает

Да, кто бы мог подумать, что писать на $LANG_NAME - это когда ты пишешь очевидный код и он работает.

Kindly_Cat
()
Ответ на: комментарий от uhbif19

Кроме того гениальная архитектура.

Как отыгрывать роль человека, интеллект которого значительно превышает твой? Как определить гениально ли что-то, если сам далеко не гений?

anonymous
()
Ответ на: комментарий от uhbif19

Мата не вижу вроде

Третий абзац.

Не очень понял, почему вы ко мне обращаетесь «нашла», наверное вы опечатались.

Отсылка к анекдоту.

Да этого можно не стеснятся. Юзать нужно то ПО, которое нормально работает, а не то которое более идеологически верное. У CLang потрясающий вывод ошибок, сравнимый только с питончиком. Кроме того гениальная архитектура.

Я не говорил, что шланг — это что-то плохое, просто интересно увидеть пример кода, который переваривает clang и не переваривает gcc.

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

Ну, есть же поговорка «не нужно быть Цезарем, чтобы понимать Цезаря».

Kindly_Cat
()
Ответ на: комментарий от anonymous

Если ты имеешь в виду способность локализировать баг и исправить его, не прибегая к методу тыка, то да, только понятным образом.

schizoid ★★★
()
Ответ на: комментарий от uhbif19

Очень смешно. Почему вы хотите показать что вы умнее топикпастера? Обряд такой?

Что смешного? По твоему поведению сложилось впечатление, что эта книга - как раз для тебя. Если это не так, извиняюсь.

schizoid ★★★
()

Так что, пример кода покажешь?

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Звучит заманчиво (: Посмотрим. Правда непонятно что там делают «an odd quote from pussy riot». Мой английский не дает ответ на этот вопрос.

пример кода, который переваривает clang и не переваривает gcc

Я имел в виду не то, что он не крашиться (мне до написания такого кода далеко), я имел в виду что понятно по чему. У GCC очень непонятный вывод ошибок. Из того что я смотрел наверное самый непонятный.

uhbif19
() автор топика
Ответ на: комментарий от anonymous

Не везде уместно ими спамить.

Ну и чтобы совсем уж не оффтопить:
uhbif19, если K&R кажется сильно старым и унылым, то есть книга помоднее: c programming a modern approach

Reinar
()
Ответ на: комментарий от uhbif19

Ты, если совета спрашиваешь - маши головой и говори «спасибо», а не мели чепуху и спорь. Если хочешь в высерахстатьях рандомных юзернеймов копаться - копайся, но тогда нет смысла сюда писать.

gear ★★★
()

Если ты задаешь этот вопрос на ЛОРе, то у тебя нет шансов.

ttnl ★★★★★
()
Ответ на: комментарий от schizoid

У меня ни на одном компиляторе, включая богомерзкий майкрософтовский, «непонятным образом» код не крашился.

gear ★★★
()

Я один не понимаю разницы между CLang и GCC для обучения?

ilgoo
()
Ответ на: комментарий от schizoid

Ок, извини. Такие вещи я конечно знаю. Вообще учить язык по сайтам где рядом учебники по HTML, Basic и C я бы не стал.

Больнее менее освоил: простые массивы, scan/printf-ы, файлы, импорты. Пока больше ничего.

uhbif19
() автор топика
Ответ на: комментарий от ziemin

Да ладно. Указатели есть, на ассемблере писать не надо. Потоки вроде даже какие-то приличные в новой версии припилили.

uhbif19
() автор топика

Спасибо большое ! Много годных ответов, даже не ожидал честно говоря. Пойду смотреть.

uhbif19
() автор топика

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

mm3 ★★★
()
Ответ на: комментарий от uhbif19

В си надо знать не только сам си, но и примерно представлять устройство машины. Что int это не просто число в определённом диапазоне, а 4 байта, лежащие в памяти. 4 байта (на большинстве архитектур). Прочувствуй. В памяти, рядышком лежат 4 байта (в куче или на стеке, да), в big или little endian, которые трактуются как 32-битное число. Или как-то иначе, если что-то пошло не так (или используется какой-нибудь преднамеренный хак).

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

а 4 байта, лежащие в памяти. 4 байта (на большинстве архитектур). Прочувствуй. В памяти, рядышком лежат 4 байта (в куче или на стеке, да)

И как часто об этом нужно задумываться? Желательно с примерами кода, где эти мысли полезны.

anonymous
()
Ответ на: комментарий от anonymous

Например при работе с сетью, записи данных в файл (BE/LE, в основном везде сейчас LE, но не стоит лепить быдлокод, да).

PolarFox ★★★★★
()
Ответ на: комментарий от uhbif19

ну ты индеец - я балдею. с луркоморья нуб зелёный?

punya ★★
()
Ответ на: комментарий от PolarFox

Например при работе с сетью, записи данных в файл

То есть один раз для написания оберток, учитывающих LE/BE.

anonymous
()

Какие есть либы?

C++

Для нормальной работы с данными, например

Qt

quiet_readonly ★★★★
()
Ответ на: комментарий от anonymous
#define bufcout 3213
...
int buffer[bufcout];
...
write(fd, buffer, size_of(int) * bufcout);
ziemin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.