LINUX.ORG.RU

С чего начать изучение C?


1

0

Здравствуйте. Простите если не туда написал.

Хочется потихонечку начать изучать программирование. Долго думал с чего же начать, остановился на С и Scheme. Сейчас хочу попытаться разобраться с С. Подскажите хороший самоучитель. Сам, конечно, искал, много нашёл, но хотелось бы спросить профессионалов )

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

Спасибо заранее.

★★★★

Re: С чего начать изучение C?

Пожалуйста, начни с K&R.

Sphinx ★★☆☆ ()

Re: С чего начать изучение C?

Традиционно рекомендуют книгу Кернигана и Ритчи. Но кроме K&R ещё есть комменты в стиле С++, инлайн функции, _Bool и проч. вещи из стандарта C99. Но я перед С обязательно попрограммировал бы что-нибудь на асме. По крайней мере, надо понимать, как работает процессор на уровне машинных инструкций, что происходит со стеком во время выполнения программы, activation record, основы работы линкера. Это всё технические аспекты, но они очень важны при программировании.

seiken ★★★★★ ()

Re: С чего начать изучение C?

книга imho не может являться хорошим самоучителем сама по себе.
Основой самообучения может быть только практическая задача по программированию.

А как дополнение можно и Кернигана-Ричи почитать, там всё есть, врядли найдешь у кого-то более простое и понятное изложение.

Dblmok ()

Re: С чего начать изучение C?

Отвечу сразу, по одному заголовку:

Керниган и Ритчи "Язык программирования С".

anonymous ()

Re: С чего начать изучение C?

Недавно сам задавал этот вопрос. Хотя и традиционно рекомендуют К&Р, советую сначала взять Prata, C primer plus 5 edition(в торрентах легко найти). Все сложные темы, а именно работа с указателями, расшифровка сишных определений типов и другие тонкости у него изложены просто и понятно. K&R можно использовать как дополнение к нему.

Но на этом все только начинается. Дальше уже стоит брать книжку по программированию под Linux/Unix и учить библиотеки и применение всего что ты возьмешь из базовых книжек. Вот тогда ты уже сможешь реально применять Си.

anonymous ()

Re: С чего начать изучение C?

K&R неповторимы

xTERM ★★ ()
Ответ на: Re: С чего начать изучение C? от imp

Re: С чего начать изучение C?

>Программирование не изучать, испортит мозг.

Компьютер не включать, испортит мозг.

anonymous ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

черпать информацию из libastral'а..

а вообще берешь "хорошие" сырцы и пошел штудировать. иначе никак

anonymous ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

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

что касается книг - то начинать можно и нужно именно в данном порядке :

1. The C programming Language
Авторы - Brian W. Kernighan and Dennis M. Ritchie.
2. Data Structures Demystified
Авторы - Jim Keogh and Ken Davidson
3. "Memory Management: Algorithms and Implementation in C/C++"
Автор - Bill Blunden
4. C++ FAQs, Second Edition
Авторы - Marshall Cline, Greg Lomow, Mike Girou
5. C++ Templates: The Complete Guide
Авторы - David Vandevoorde, Nicolai M. Josuttis
6. C++ : Generic Programming and Design Patterns Applied
Автор - Andrei Alexandrescu

kto_tama ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от anonymous

Re: С чего начать изучение C?

> решил, что будешь изучать C и Scheme, то начни с чтения SICP, а уже потом K&R.

ИМХО, ровно наоборот. А начать нужно вообще с процессорных архитектур :) Так сказать, снизу вверх.

tailgunner ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от tailgunner

Re: С чего начать изучение C?

Гм, почему ты так настаиваешь на этом? Вряд ли это будет моим способом заработка. Учить хочу не потому, что тру, а потому что чувствую иногда необходимость в этом. А почему именно такой выбор - наверное, тут сказалась специфика ЛОРа и моего дистрибутива. Вот мне и непонятно - действительно ли так нужно недавнему ГСМу изучать процессорные архитектуры? Снизу ыыерх - это тру, конечно, но оправдано ли? Химию, к примеру не так изучают ) Вернее, мы не так учили.

GreyDoom ★★★★ ()
Ответ на: Re: С чего начать изучение C? от kto_tama

Re: С чего начать изучение C?

Спасибо огромное за список. Буду учить потихонечку. )

А знание именно с не принципиально. Принципиально знание "хоть чего нибудь" для решения своих редко возникающих проблем. Если я сильно ошибаюсь, на ваш взгляд, поправьте и аргументируйте, если не сложно. )

GreyDoom ★★★★ ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

> Гм, почему ты так настаиваешь на этом?

Настаиваю? Да упаси ТНБ.

> Вряд ли это будет моим способом заработка. Учить хочу не потому, что тру, а потому что чувствую иногда необходимость в этом.

Тогда тебе лучше учить что-нибудь вроде Питона, ИМХО.

> А почему именно такой выбор - наверное, тут сказалась специфика ЛОРа и моего дистрибутива

Не знаю насчет твоего дистра, но на ЛОРе SICP и Си обычно поминаются в топиках, где идет речь об обучении профессиональных прогеров. Книги, которые тебе посоветовал kto_tama - тоже из этого разряда.

> Снизу ыыерх - это тру, конечно, но оправдано ли? Химию, к примеру не так изучают )

Ну почему же, теорию электролитической диссоциации вы разве не проходили? С нее начинался курс химии старших классов советской школы :) Так же и Си - перед его изучением полезно знать какую-нибудь "среднестатистическую" процессорную архитектуру, двоичную арифметику, представление данных и прочие полезные вещи.

tailgunner ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от tailgunner

Re: С чего начать изучение C?

>Так же и Си - перед его изучением полезно знать какую-нибудь "среднестатистическую" процессорную архитектуру, двоичную арифметику, представление данных и прочие полезные вещи.

А вот об этом какую литературу почитать? Что такое "среднестатистическая" процессорная архитектура? Ведь если я изучу, например, ассемблер х86, то я буду знать только ассемблер х86...

Извините, что вмешиваюсь, тоже хочу стать Ъ С-кодером :)

anonymous ()

Re: С чего начать изучение C?

sicp

gln0fate ★★ ()
Ответ на: Re: С чего начать изучение C? от anonymous

Re: С чего начать изучение C?

>> Так же и Си - перед его изучением полезно знать какую-нибудь "среднестатистическую" процессорную архитектуру, двоичную арифметику, представление данных и прочие полезные вещи.

> А вот об этом какую литературу почитать?

Конкретных книг посоветовать не могу (я давно не студент), но любой учебник по ассемблеру любой распространенной архитектуры (x86, ARM, MIPS, PowerPC) содержит вводные главы, объясняющие, как представляются данные в памяти, какие узлы содержит процессор, режимы адресации, назначение регистров и прочее. Ты должен примерно представлять, в какие команды компилируется твой Си-код при отсуствии оптимизации.

> Что такое "среднестатистическая" процессорная архитектура?

Это значит 1) не лезть в дебри типа регистровых окон, управления виртуальной памятью, вещей вроде SSE/Altivec, конкретного формата команд; 2) не использовать выморочные архитектуры типа микроконтроллерных или VM.

> хочу стать Ъ С-кодером :)

Ну тогда тебе совершенно точно нужно знать и что-то за пределами Си - ту же Схему, например, что-то из семейства ML, да хотя бы Питон :)

tailgunner ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от tailgunner

Re: С чего начать изучение C?

>> кернигана-ричи *не* читать. испортит мозг.

>Фигассе. Раскроешь тему?

Тут и раскрывать нечего. K&R не учат _программировать_, они исключительно учат _языку_. О чем абсолютно честно предупреждают еще в предисловии.

ЗЫ. Сам наступил на эту грабли - пошел по пути васик, асм, С, С++.

LamerOk ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от tailgunner

Re: С чего начать изучение C?

>>> Так же и Си - перед его изучением полезно знать какую-нибудь "среднестатистическую" процессорную архитектуру, двоичную арифметику, представление данных и прочие полезные вещи.

>> А вот об этом какую литературу почитать?

>Конкретных книг посоветовать не могу

Н. Вирт. Систематическое программирование. Введение.

Начинать нужнее и полезнее всего с него. И не надо бояться упоминаемых в тексте перфокарт ))

LamerOk ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

> А знание именно с не принципиально. Принципиально знание "хоть чего нибудь" для решения своих редко возникающих проблем.

Учи Java! ;) Или Python.

naryl ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от tailgunner

Re: С чего начать изучение C?

По поводу химии - сначала учат как, зная валентность элементов, расставлять коэффициенты в формулах, а только потом, через год-два (не помню уже) проходим электроотрицательность, электронные облака итп. По крайней мере нас учили так. Учились по [РГ]удзитису-Фельдману. Советскому, естессно.

>Питона

Да, я думал об этом. Но есть какое-то субъективное ощущение.. неполноценности, что ли. В смысле уверен, что если осилю С, то 100% осилю и питон/перл, а обратное, ИМХО, неверно. Просто хочется выучить что-то хорошее, как бы иронично не звучало - олдскульное, т.е., как было отмечено, поуичиться скорее программированию, чем конкретному языку. Создалось ощущение, что это проще сделать изучая С/Scheme/Лисп (я понимаю, что объединение не совсем корректно), чем вышеназванные языки.

GreyDoom ★★★★ ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

> >Питона

> Да, я думал об этом. Но есть какое-то субъективное ощущение.. неполноценности, что ли.

Начни с руби. Он прост, входной порог - только умение думать. Синтаксис достаточно естественный. Очень хорошая и полная документация на базовые классы. Вместе с тем, есть базовый набор необходимых струтур "искаропки". Начни с Programming Ruby (The Pragmatic Programmer's Guide). Единственный минус - почти все на английском, хотя перевод то ли этой книги, то ли док к руби на русский я где-то видел в инете.

LamerOk ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от LamerOk

Re: С чего начать изучение C?

>>> кернигана-ричи *не* читать. испортит мозг.

>> Фигассе. Раскроешь тему?

> Тут и раскрывать нечего. K&R не учат _программировать_, они исключительно учат _языку_

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

tailgunner ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

> С/Scheme/Лисп (я понимаю, что объединение не совсем корректно)

Оно корректно, но это программа обучения профессионалов. ИМХО, если у тебя нет желания стать таким, отдача от связки Си/Схема не стоит усилий. ЕМНИП, в том же МИТ Си и Схема оставлена только для CS и SE, EE перевели на Питон.

tailgunner ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от tailgunner

Re: С чего начать изучение C?

> Как обучение языку _портит_ мозг, т.е. где активная вредность?

Оно "портит мозг" не само по себе, а в определенных условиях. В данном конкретном случае, если нет некой базовой подготвки, и модель K&R ложится на чистый лист.

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

2. Нет понимания, что K&R - это практически абстрактный мета-язык, и в любой внешней библиотеке будет свой собственный набор типов.

LamerOk ★★★★★ ()

Re: С чего начать изучение C?

>Хочется потихонечку начать изучать программирование. Долго думал с чего же начать, остановился на С и Scheme. Сейчас хочу попытаться разобраться с С. Подскажите хороший самоучитель. Сам, конечно, искал, много нашёл, но хотелось бы спросить профессионалов )

Если хочеш изучить программирование, то(сюрприз) тебе нужно читать учебники по программированию. K&R2 - замечательная книга по языку С. Но если ты не можеш отреверсить строку или посортировать масив, то что ты будеш на С писать? Тут уже тебе правельно сказали, читай SICP, потом что-то по алгоритмам. А потом уже будеж всякие С и Питоны учить.

Sidrian ()
Ответ на: Re: С чего начать изучение C? от kto_tama

Re: С чего начать изучение C?

Топикстартер вроде как хочет изучить С. А вы ему собираетесь голову морочить компайл-тайм факториалами на крестах...

Sidrian ()

Re: С чего начать изучение C?

Гм, простите, а нет ли у кого SICP на русском? Шибко уж неохота на англ читать (

GreyDoom ★★★★ ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

> Гм, простите, а нет ли у кого SICP на русском? Шибко уж неохота на англ читать (

В флейме "Фраза о Лиспе" давали ссылки. И не только там, поищи по сайту.

tailgunner ★★★★★ ()
Ответ на: Re: С чего начать изучение C? от GreyDoom

Re: С чего начать изучение C?

>Гм, простите, а нет ли у кого SICP на русском? Шибко уж неохота на англ читать (

Лучше пересильте себя. Быть програмистом не зная английского тяжко...

Sidrian ()

Re: С чего начать изучение C?

> кернигана-ричи *не* читать. испортит мозг.

> C не изучать. испортит мозг.

> Программирование не изучать, испортит мозг.

> Компьютер не включать, испортит мозг.

На LOR не сидеть, испортит мозг.

Nihilist ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.