LINUX.ORG.RU

ansi c с чего начать

 ,


0

1

Есть мечта продвинуться в изучении C. У меня есть 3-е издание K&R, на русском. Первые главы я в принципе проходил, упражнения делал. Но наверное нужна ещё среда, в виде какой то IDE и компилятора. Я в принципе планирую использовать VIM+GCC. Вим я худо-бедно применяю. Но в K&R материал даётся без привязки к конкретной среде. Похоже что там не будет принципов работы Makefile, скриптов конфигурации, принципов сборки программы. По этому, периодически я поглядываю на другие учебники. Из того что наметил себе к прочтению - Крупник, «Изучаем С» и вот такой вариант: https://youngcoder.ru/map.php В книге Крупника упоминается среда Борланд, для варианта по ссылке выше можно поставить Pelles C IDE. Связываться с Pelles C IDE можно, из уважения к составителю курса, я себе поставил. Крупника наверное можно читать в отрыве от Борланд))) Хотелось бы услышать ваши советы - что почитать, на какие, может быть платные/бесплатные курсы пойти. Какое хорошее пособие вы можете посоветовать. Лучше может быть даже и на английском полностью языке. Куда можно будет устроиться, если удастся чему то научиться. Я бы в принципе подумал о втором образовании. Программирование меня увлекает. Немного есть положительного опыта с автолисп, наверное я человек не совсем бесталанный. Рядом со мной есть пример перехода из строительной области в бигдата. Но наверное C не очень хороший и возможный вариант в качестве второго образования. Какие бывают дипломы в этой области, что бы быть трудоустройенным? Извините за столь пространную формулировку, мне, в первую очередь, интересно хорошее онлайн-пособие с привязкой к UNIX, POSIX и современной практике. Если просто почитывать, потыкивать время от времени - я никуда не сдвинусь. Если пойти на платные курсы, шансов сдвинуться с мёртвой точки больше, может быть и поняв что я это не потяну ни при каких обстоятельствах. Спасибо.

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

Это задача научной лингвистики.

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

А начинают изучать основы лингвистик и законы склонения дети ближе к концу начальной школы.

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

Это связано с процессом развития мозга. Сначала мы учимся благодаря функции зеркалирования в ЦНС, это чуть ли не базовая функция нашей нервной системы. Можно сказать почти bios. Заложена хардварно.

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

Я не думаю, что в программировании имеет смысл использовать функцию уровня base-system ЦНС, зеркалирование. Можно сразу сознательно обучаться, мозг же уже готов.

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

strcpy (memcpy) точно так же работает, а тут называют имплементацию glibc чем-то плохим

Дизасемблируйте и посмотрите что glibc делает - там вот этим вот наивным лупчиком и не пахнет.

Что может вернуться, если ты объявил возврат int и не вернул int? Ошибка компиляции.

Попробуйте. В C это warning, но не error.

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

Так Си ж не изменился.

Да ладно. До сих пор локальные переменные в начале функции объявляем?

а что, во времена K&R переменные надо было обязательно объявлять в начале функции?

Ладно бы только локальные переменные. Погуглите «K&R style function definition» - это вообще жесть.

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

Это упрощённый (потому что и сам язык проще) синтаксис по мотивам описания параметров процедур Algol-60

vM ★★
()

ansi c с чего начать

Если всерьёз, то с разработки процессора языка ANSI Си для любимой платформы.

Если в качестве хобби, то с минилиспа на Си.

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

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

Мне кажется лучше обучение по спирали. То есть, сначала дать минимум (тут кусь, там хвать) только, чтобы можно было побыстрее начать что-то практическое делать. Потом после некоторого опыта давать уже теорию.

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

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

Да ну, чтобы собрать его просто хэлловорд и понять, как компилятор это делает, достаточно консоли и gcc. А уже потом можно и магию практиковать.

Для хэлловорда не нужно конечно, но в Си нет раздельной компиляции, нет модулей и на практике поэтому многое зависит от линковщика и опций компилятора. Статическая компиляция, динамическа - это все по сути тоже нужно давать.

Вообще, я сейчас подумал, получается, что K&R все же пожалуй устарели. И дело не в стандартах даже, а в самом подходе к работе. Проблема в том, что чего-то лучше не особо есть.

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

в Си нет раздельной компиляции

В Си есть понятие единицы трансляции.

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

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

Между прочим, система физтеха. На первом курсе студентам дают в очень сжатом виде практически ВЕСЬ материал по специальности.

Вы наверное шутите - специализация начинается с 3го курса. Первые два - это общая база. На всякий случай - Вы сейчас с выпускником старой формации общаетесь…

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

Вообще, я сейчас подумал, получается, что K&R все же пожалуй устарели.

Не то слово.

И дело не в стандартах даже, а в самом подходе к работе.

Спорно.

Проблема в том, что чего-то лучше не особо есть.

Есть, но это флэймо-образующий subject. Развивать не буду.

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

Погуглите «K&R style function definition»

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

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

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

Но ведь от этого легче не становится, или есть что то очень важное что я пропускаю?

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

Посыла не понял. Предполагается что я должен стандарт знать «от и до» (не претендую, очевидно)? Или что-то ещё?

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

Неплохое решение. К тому же один из неутомимых соавторов написал книгу по этому языку http://www.williamspublishing.com/PDF/978-5-8459-2051-5/intro.pdf

Learn https://go.dev/tour/ and play https://go.dev/play/

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

На словах он Лев Толстой, а на деле хуй простой. Вы с джентельменами в карты играть даже не садитесь, если настолько доверчивы «чувакам на лоре».

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

Дизасемблируйте

Что и зачем дизассемблировать? Код глибс в открытом доступе.

Попробуйте

Попробовал на clang, получил error.

untitl3d
()

ansi c с чего начать

И? …

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

Эта история попахивает вульгарным безответственным пи… балабольством уровня «Остапа несло» (тм) Пьяными паравалильщиками в интернете из условных «Стокгольмов», вдруг осознается величие, к которому нет оснований – оно огромно, и с нами охотно делятся содержимым своего манямирка особы приближенные к императору, гиганты мысли, аццы русской демократии, оборонки… еще ряда плохо связанных областей знаний и умениЙ одновременно, мгновенными специалистами в которых становятся все в нужной кондиции, это я вам как астрофизик-социолог гинекологу-кибернетику, гарантирую.

anonymous
()

Есть мечта продвинуться в изучении C.

@baaba, МЕЧТА - МАНИЛОВЩИНА! …

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

Вы наверное шутите - специализация начинается с 3го курса. Первые два - это общая база. На всякий случай - Вы сейчас с выпускником старой формации общаетесь…

Может быть я с представителями еще более старой формации общался.

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

Что и зачем дизассемблировать?

Дизассемблировать надёжнее, и зачастую быстрее. И однозначно познавательно.

Код глибс в открытом доступе.

Ну хотя бы в сорсы гляньте прежде чем обвинять glibc maintainers в проф непригодности: судя по вот этому glibc’шная strcpy() реализована через strlen() + memcpy() (которые в свою очередь оптимизированы вусмерть с заворачиванием в ifunc), что в принципе оправдано для строк небольшой длины.

Попробовал на clang, получил error.

Это однозначно legit C89 и ошибка в C++/C99. Что там себе clang думает и какой там стандарт дефолтный - не знаю.

bugfixer ★★★★★
()
Ответ на: удаленный комментарий

Лечиться тебе надо, барин.

Не я заявлял что while(*s2++ = *s1++); является glibc имплементацией strcpy() вот здесь.

Не я плаваю в довольно элементарных C-шных вещах хотя на нём и не пишу каждый день: я не предлагал не возвращать ничего из int foo(), я спросил «что будет» и ответить вы не смогли (и стандарт C89 это таки позволяет).

Не у меня вызывает проблемы посмотреть что именно делает конкретная сборка glibc которая стоит в проде (а что там в «каких-то абстрактных сорсах» меня, мягко говоря, не волнует).

Учите мат часть, юноша. И человеку который боится/не умеет читать asm и не понимает как работает железо не местно в мире С/C++ разработки - задумайтесь о смене карьеры (если вы вообще себя как C/C++ программист позиционируете, конечно).

А пока в игноре посиди с пометкой «неадекват».

Чуть не прослезился от умиления…

bugfixer ★★★★★
()

Работают на busybox в перемешку с вордпресс и баш , а именуют себя как сишники с нев фреимворками лолаляндия и расп..дяндия

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

Аргументация 80лвл, бггг.

Ок, я Вам тоже повешу пометку «неадекват» - она Вам сильно больше подходит, судя по этому треду.

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

Учите мат часть, юноша. И человеку который боится/не умеет читать asm и не понимает как работает железо не местно в мире С/C++

asm – не матчасть.

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

Ок, я Вам тоже повешу пометку «неадекват» - она Вам сильно больше подходит, судя по этому треду.

Поддержу цепную реакцию.
Вы тоже неадекват …

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

IDE ускоряет не только разработку, но и обучение.

Нет, ИДЕ замедляет обучение. ИДЕ прячет от юзера базовые вещи которые новичок должен освоить в обязательном порядке.

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

Ок, я Вам тоже повешу пометку «неадекват» - она Вам сильно больше подходит, судя по этому треду.

На форуме то адеватных НЕТ.
Так что зря на нем меряются …

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

ОС и персонал ВЦ тоже много чего прячут от новичков. Что из спрятанного нужно освоить обязательно?

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

Новичок в ВЦ? Интересно…

ОС ничего не прячет. А Вы путаете базовые вещи которые необходимо освоить новичку и особенности реализации системных вызовов.

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

Новичок в ВЦ?

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

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

Студенты приносят колоды перфокарт с исходниками на Фортране и Паскале

Эммм… мы говорим о том что сейчас происходит в мире, а не о том что было полвека назад. Сейчас перфокарты (если Вы не в курсе) используют только как закладки, а в ВЦ студенты если и ходят то только по SSH. И те студенты которым дают туда доступ УЖЕ владеют командной строкой и пр. базовыми навыками, потому что в качестве IDE в ВЦ как правило vim.

А вот студент «учивший» язык в IDE в ВЦ ничего сделать не сможет.

А еще аналогия (с ВЦ и ОС) не является ни аргументом, ни доказательством, но может являться дидактическими приемом. И что Вы собственно хотите объяснить при помощи таких сравнений?

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

ansi c с чего начать

Шутка

Как вам помочь то.
С с счего бы начать? …
Пословица есть хорошая «не ссы в труссы» …

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

Я понятия не имею WTF CLion, но я регулярно вижу как студенты ВМК МГУ сидя в IDE не в состоянии запустить из командной строки gcc (вообще испытывают сложности с командной строкой) и не в состоянии нормально отладиться.

Это в разных тредах обсуждалось уже 100500 раз, я не буду повторяться.

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

а в ВЦ студенты если и ходят то только по SSH.

В том числе из таких IDE, как Microsoft Visual Studio.

студент «учивший» язык в IDE в ВЦ ничего сделать не сможет.

Только посидеть на форуме через Web-интерфейс.

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

В том числе из таких IDE, как Microsoft Visual Studio

Угу. Код из MVS прямо вот афигенно переносится на линуксовые машины ВЦ! Даже не смешно.

Только посидеть на форуме через Web-интерфейс.

Как посиделки студента работающего в MVS на форуме связаны с работой в ВЦ? Вы с каждым комментарием становитесь все загадочнее и загадочнее…

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

Я понятия не имею WTF CLion, но я регулярно вижу как студенты ВМК МГУ сидя в IDE не в состоянии запустить из командной строки gcc (вообще испытывают сложности с командной строкой) и не в состоянии нормально отладиться.

А что в IDE нет пункта меню типа «Command Line» /как например в Visual Studio/, который показывает строку параметров, выбранных в IDE.
Copy/paste и

Широка страна моя родная.  
Много в ней полей и ДУРАКОВ ...

Владимир

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

А разве MVS уже разучилась отлаживать код, выполняющийся на удалённой или встроенной linux-машине? По SSH. Или с CMake’ом не пытается дружить?

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

Я понятия не имею WTF CLion, но я регулярно вижу как студенты ВМК МГУ сидя в IDE не в состоянии запустить из командной строки gcc (вообще испытывают сложности с командной строкой) и не в состоянии нормально отладиться.

Легко решаемый вопрос.
Тупым давайте задание написать мини IDE и тогда

ОБЯЗАТЕЛЬНО ПОЙМУТ! ...

PS: Но больше это похоже на ШЛАНГОВАНИЕ …

Владимир

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

Может и пытается. И наверное даже есть люди которые так делают. Но Вы опять уходите в сторону.

Еще раз, мое утверждение выглядит следующим образом - «IDE вредны для ОБУЧЕНИЯ потому что скрывают от новичка базовые вещи, которыми новичок должен овладеть в обязательном порядке.»

Да, можно наверное в IDE например юзать командную строку для сборки - тока непонятно зачем если там есть одна кнопка «make and run» (или как то так)?

Что Вы пытаетесь сказать я пока что так и не понял.

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