LINUX.ORG.RU
решено ФорумTalks

K&R как лучше изучать

 , ,


1

2

Вечер добрый!

Читаю сабж, вроде примеры простые, как глянешь в ответы («Язык Си.Книга ответов» К. Тондо, С. Гимпел), кода мининум — все понятно.

А самому решать эти простенькие задачи, мозг именно «не стартует» — тяжело именно начать, вникнуть в суть задачи.

Как с этим можно бороться? Вдоль не предлагать :-)

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

Что скажет народ?

★★★★★

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

Stahl ★★☆
()

Я просто 3 раза прочел K&R. Ни одной задачи даже по-диагонали не читал (для меня вообще открытие, что там задачи были). А вот по коду читал раз 5 Богатырева.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от bekon33

Алгебра, анализ, пределы, производные, интегралы, если нужно что-то вспомнить идут значительно лучше сабжа.

Почему и запостил эту тему.

Видимо, придется по совету Stahl работать.

Код на бумаге, потом все остальное.

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

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

Ну, бери задачу которая идёт лучше сабжа и решай её на сабже.

bekon33
()

Кстати, вот похожая тема:

K&R exercises

Скажу я вам об одном жалею, что лет эдак 8 назад по памяти со школы штудировал Delphi вместо сабжа. Сколько времени было потеряно зря :-(

Нет, конечно, базовые элементы структурного программирования одинаковы во всех языках, но Си все-таки ближе к «реальному status quo».

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

Я лет эдак 23 назад васиком с машкодами помышлял; лет эдак 17 назад паскуалия изучал (информатика на первокурсе проститута, мать ее); лет эдак 14 назад изучал фортран (курсовик — надо было обертку написать для одной хрени, сделал обертку на фортране и фронтэнд на паскуалии); лет эдак 13 назад начал С изучать; лет эдак 11 назад изучал С++ и даже пописывал на выжуалстудии ынтырфейс управления телескопом. Потом у меня мозги встали на место, и я благополучно забыл все говно, кроме С. Правда, пару лет назад маленько пришлось поверхностно пхытона посмотреть, чтобы написать пару-тройку скриптов для фрикада. Забыл это говно, как страшный сон.

Да, параллельно с С я еще более полезный язык изучал — ТеХ. Хоть юридически это и язык разметки, фактически он Тьюринг-полный, т.е. на техе можно и сам тех написать ☺.

Что имею на сегодня: я нихрена не знаю, но при этом немножко своим быдлокодом наполнил гуглокод, сосфорж и гитхаб. Ну и на ЛОРе сильно подзасрал все (но до анонима мне далеко, да). А фактически же, как я был чмом поганым лет 20 назад, так этим самым чмом и остался. Нихрена ни знаний, ни умений, ни судьбы.

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

Философии пост. :-D

Самокритика и скромность — признаки ума :-)

Twissel ★★★★★
() автор топика

тяжело именно начать, вникнуть в суть задачи.

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

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

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

Вначале «думание» занимает много - порядка дней, например. Потом со временем становится чуточку быстрее.

Ну да, это как Ньютон: «Я решал проблемы постоянным размышлением о них».

Просто психологически тут подкупает (или подводит) другое: у большинства гуру (да хоть бы и на этом ресурсе) многие задачи в конкурсах просто от зубов отскакивают.

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

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

И да, скачал Богатырёва в pdf, вроде оно)

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

золотые слова, распечатывать на золотых табличках и вешать на стены! Про жизнь!

nerfur ★★★
()

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

необязательно «задачник». пошерсти исходники проектов, форумы почитай, вообще поинтересуйся, над чем люди думают, ты ж не новичок 2х2 выучивать, в конце-концов.. ну, держа книжку под рукой, конечно.

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

Конечно, просто иногда вспоминаю поговорку: «Повторение мать учения.»

И берусь за классику, вроде K&R.

А в остальном верно, иногда нужна мотивация, азарт и ясная цель.

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

«Повторение - мать учения и отрада дураков». Так еще этот афоризм может звучать.

Но это просто к слову =).

conalex ★★★
()

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

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

быдлокодил для MCU AVR

Хреновый совет. Уж на этом шлаке точно ты ни знания в кошерненькой сишечке, ни знания в железячках не отточишь!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Twissel

у большинства гуру (да хоть бы и на этом ресурсе) многие задачи в конкурсах просто от зубов отскакивают.

Это следствие многолетней ежедневной работы. Не надо мучаться по этому поводу.

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

Хороший совет. То, что ты его неверно понял твои проблемы. Спойлер: совет заключался в том, что нужно решать реальные проблемы, а не выдуманные (и довольно нудные) задачки из книги. И Atmel тут ни при чём.

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

Ну до этих этюдов я как бы и не дошел :-)

А все потому, что столкнулся с «искуственностью» 1.20, например.

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

Ну и второй раз не стартовал на битовых операциях, но это, скорее всего из-за плохой подготовки по данному вопросу.

Как то так...

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

И Atmel тут ни при чём.

Очень даже при чем! Ты еще скажи, что можно С выучить, занимаясь рукоблудием на ардуйне!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от aedeph_

Не знаю.

Вот именно, что для меня эти моменты не были такими очевидными как для авторов. Все-таки мне кажется, что текст некоторых задач, подобной выше не переписывался с конца 70-х.

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

Самые лучшие задачки — это попробовать попсовые алгоритмы реализовать. И сравнить с готовьем.

Кстати, некоторые вещи таки придется самому писать, т.к. готового либо нет, либо оно запихано в какие-нибудь мегажирные ненужные библиотеки. Скажем, для обработки изображений ничего универсального нет. Мне, например, пришлось все эти эрозии, диляции, выделение связных областей реализовать самому: в лептонике оно как-то по-тормознутому сделано, а от OpenCV у меня вообще рвотные позывы...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Twissel

Конечно, если был какой-то древний терминал на 8 знакомест, тогда в то время программа имела практический смысл.

Но указания об этом не было.

И еще полезная ссылка: http://clc-wiki.net/wiki/K&R2_solutions

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

Просто и emacs, и vim табуляцию (хоть на шаг в 8, хоть на шаг в 30) визуализируют именно таким образом, половины ide тоже. Практический смысл задачи вполне очевиден и реализован везде, где только можно.

Но если «не стартует», так не стартует, то ничего не поделаешь, я думаю.

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

Чтобы научиться писать что-то полезное на сях, нужно писать компутерные приложения. Прошивки для железяк не научат в сях разбираться, т.к. уж больно там все специфичное.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Twissel

Аналогичным выхлопу

detab that replaces tabs in the input with the proper number of blanks to space to the next tab stop. Assume a fixed set of tab stops, say every n columns.

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

О да, этот рассадник быдлокодинга. Ещё и на другие платформы тащат. Хотя ARM не сильно лучше в этом плане. Под них уже всякие питоны с коффескриптами есть.

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

Да, вы таки правы.

Никогда не замечал того,

что величина табуляции уменьшается на величину уже введенного текста.

Открытие века, блин! :-)

Значит это меня нужно в биореактор, гы)

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

Да. Сишка и тех/латех. Ну и для вспомогательных целей — баш (но это не ЯП) и жабкоскрипт (приходится немного использовать, т.к. веб-морду с клиентской стороны на сях не напишешь ☹)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Twissel

Не обязательно в биореактор, есть же ещё множество полезных на данном историческом этапе направлений жизнедеятельности, например, дворы мести.

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