LINUX.ORG.RU

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


0

1

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

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

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

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

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

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

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



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

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

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

Кстати про память, важно понимать разницу между переменными на стеке и переменными в других областях памяти. Перекидывание туда сюда указателем, смотрящим на стек, может привести к занятным эффектам.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от PolarFox

Прочувствуй. В памяти, рядышком лежат 4 байта (в куче или на стеке, да), в big или little endian, которые трактуются как 32-битное число.

Да-да-да, все С-программисты исключительно только об этом и думают 24 часа в сутки. Прочувствывают, так сказать, ага.

Если я правильно помню, у тебя отношение к С отрицательное. Не следствие ли это описываемого тобой подхода?

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

Если я правильно помню, у тебя отношение к С отрицательное.

Это к крестам и рнр у меня плохое отношение, а к С нейтральное. Я не говорил, что об этом надо думать, но об следует знать.

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

указателем, смотрящим на стек

Честно говоря, не могу вспомнить, чтобы когда-нибудь так делал.

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

указателем, смотрящим на стек

Честно говоря, не могу вспомнить, чтобы когда-нибудь так делал.

Для подпрограмм с переменным числом аргументов используется va_arg или типо того. Обычно это макрос, работающий со стеком.

ziemin ★★
()

Тебе будет выгодней заказывать разработку программ за деньги у компетентных лиц.

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

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

Нуб, только начавший писать на Си, уже оценивает архитектуру компилятора.

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

Но ведь он до этого писал на питоне, откуда тебе знать, что он не может в архитектуру?!

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

У тебя это сидит в подкорке,и ты даже не чувствуешь как она шевелится от мысли .. )

yeans
()

Товарищи Керниган и Риччи давно написали отличное 200страничное руководство. Читай!

nanoolinux ★★★★
()
Последнее исправление: nanoolinux (всего исправлений: 1)

Пиши тетрис и походу читай что надо )

refig
()

изучи ассемблер какой-нибудь сначала, потом за С принимайся

Harald ★★★★★
()

Не надо учить Си

Блин, не надо. Я охренел от такого кода

if (something_goins_wrong) {
    system("This_is_the_cool_script_man_It_will_save_us &");
    breake;
}

Орфография сохранена!

Dennis7
()

Стандарт прочитай.

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

с другой стороны полезно знать хотябы общий принцип той библиотеки

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

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

Чтобы «знать Си» этого не достаточно, но пол-пути до озвученной цели будет реально пройдено :)

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

Тут нужно заметить, что занятные эффекты наблюдаются только тогда, когда нет грамотной политики владения объектами, сами по себе указатели на стек тут ни при чем.

anonymous
()

Пока не начнешь что-нибудь серьезнее "хелловорлда" писать, хрен что выучишь.

Eddy_Em ☆☆☆☆☆
()

Чтобы сразу развеять сомнения по поводу своего выбора, попробуй написать какую-нибудь небольшую программку. Например окошко-документ, в котором слева двухколоночная таблица, куда можно добавлять записи с помощью кнопки «+». А справа два редактируемых поля, которые отображают из текущей записи два числа и кнопка "!", которая по первому полю рассчитывает факториал и кладет его во второе. Второе можно заполнять вручную, но если значение не совпадает с расчетным, выводи курсивом, ну или ставь к-л значок в поле. Старайся делать amazing look-n-feel. Старайся, чтобы не было ограничений — ни на количество строк в таблице, ни на длину чисел. Избыточные расчеты оптимизируй. Реализуй undo-stack. Да, так как это «документ», то все это нужно сохранять в файл, чтобы рассчитанные значения не терялись между запусками.

В качестве GUI возьми, скажем, GTK. В качестве базы данных — backend'ы на BDB, SQLite, XML, JSON и свой велосипед.

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

Вот представь себе ситуацию встречаешся ты с друзьями и спрашивают они:
-Как дела?
А ты им на это отвечаешь:
-Behavior is described in terms of an abstract machine to underscore, once again, that the Standard mandates results
as if certain mechanisms are used, without requiring those actual
mechanisms in the implementation. The Standard specifies agreement points at which the value of an object or class of objects in an implementation must agree with the value ascribed by the abstract semantics.
И кто после этого посмеет сказать что ты не знаеш языка Си?

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