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 и современной практике. Если просто почитывать, потыкивать время от времени - я никуда не сдвинусь. Если пойти на платные курсы, шансов сдвинуться с мёртвой точки больше, может быть и поняв что я это не потяну ни при каких обстоятельствах. Спасибо.

★★★

Но в K&R материал даётся без привязки к конкретной среде.

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

Похоже что там не будет принципов работы Makefile, скриптов конфигурации, принципов сборки программы.

Это все можно потом познать. А сначала все равно сам язык.

Zhbert ★★★★★
()

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

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

Zhbert ★★★★★
()

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

Linux используешь? 100% найдется приложение на чистом С в котором ты что то хочешь поменять, через git выкачиваешь исходники приложения, для начала научись его собирать, и корректно устанавливать в свой дистрибутив через .deb или .rpm, а потом открываешь его через JetBrains CLion и добавляешь то что ты хочешь.

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

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

Спасибо друзья, вы меня подбодрили. Линукс использую для души. Пакеты собирал, патчи накидывал когда была необходимость, разобраться можно. Но основная работа в офтопике с программами для строительной отрасли. Из прикладных задач - встречаются программы для работы с IFC. Но там быстрее можно нарваться на Питон и по уму начинать надо с него( Я разрываюсь. Да, у нас С не популярен, но хотелось бы продвинуться в нём. Тогда буду пытаться действовать по K&R.

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

Зачем тебе это? Я стал хакером лишь из-за дороговизны интернет услуг начала века. Теперь:

  1. На этом не заработаешь.
  2. Не создашь чего-то экстра. Что еще говорить? Зато:
  3. Получишь вред здоровью - это самое важное!
  • если тебя не остановило предупреждение, ищи книгу Тома Свана о Си у него есть книга о ассемблере - ее легко найти, оеа также полезна!
anonymous
()
Ответ на: комментарий от MOPKOBKA

Программирование это так же и нажимание кнопок в конкретной IDE.

Но изучать это следует уже после. По крайней мере хотя бы не делать поиск IDE первостепенной а задачей, тем более для С, где все компиляется в консоли на ура.

Zhbert ★★★★★
()

Куда потом идти. В РФ можно легко устроится с знаниями пуре С на любой военный завод, а также на завод, где делают что то самостоятельно, не отвёрточная сборка. Минусы военных заводов. 1. У вас будет гос тайна, что даёт вам плюс, вас не уволят, но и даёт минус, жизнь вы измените и уже не будете тем весёлым мальчиком, что сейчас. 2. Вы будете работать рядом с военными, что может быть плохо. На обычном российском заводе только плюсы, но не считая зарплаты, если её сравнить с дата сатанистом, работающим в сша, в крупной конторе в силиконовой долине. За рубеж, пытаться устроится можно, но много где будет аналог гос тайны, поэтому россиянина могут не взять. Как учить. Мне кажется, что учить надо ассемблер и общаться с компьютером на уровне байтов, а не строк. А код писать на С :) А не вот это всё, какая книга, да дайте линк. Писать можно консольные игры, например, или утилиты. Также можно посмотреть на микроконтролёры.

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

IDE ускоряет не только разработку, но и обучение. Не надо запускать компилятор что бы найти ошибку, IDE ее сама подсветит, встроенный анализатор до которому gcc -Wall далеко тоже есть. А еще графический отладчик, с возможностью навестись на имя переменной и узнать ее значения, без бесконечных:

printf("%d", val); 
system("pause");

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

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

Писать можно консольные игры, например, или утилиты.

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

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

А потом, когда под рукой не будет IDE, будешь прыгать как учительница с Альтом и кричать, что «Тут нет кнопки «ЗАПУСТИТЬ», че делать?». Ну окей.

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

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

Кстати, годная идея :)

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

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

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

Установить IDE — это одна простая команда.

И тем не менее, она нишмагла.

Zhbert ★★★★★
()

Книга Клеменса «C в XXI веке» по-своему хороша именно ориентацией в том числе на прикладное использование.

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

Я начинал с vi + gcc + gdb. Используя IDE всегда можно спустится до этого уровня. Вообще надо так - сначала узнаешь что кнопка в IDE конкретно делает, потом делаешь через IDE.

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

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

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

А я начинал с ассемблера под Picmicro в какой-то древней досовской софтине :) Чёрт, ну и ламповые же были времена…

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

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

Это не вяжется со всякими скрамами, говнайлами и «хренак, хренак и продакшн» :) Но я с тобой тут согласен, да.

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

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

Хотя может gdb придумали для плохих программистов, может опубликуешь тогда свой код на С?

MOPKOBKA ★★★★
()

Какие бывают дипломы в этой области, что бы быть трудоустройенным?

Дипломы/сертификаты это хорошо, но ты же понимаешь, что они всё же не гарантируют трудоустройство сами по себе. Что-то вроде «Talk is cheap. Show me the code».

PhysShell ★★
()
Ответ на: комментарий от MOPKOBKA
  1. Если не известно какой должна быть программа, то вообще то надо бежать, а не браться за дело. Но в любом случае не выбирать для такого проекта пуре С. Пых будет хорош для такой задачи.
  2. Именно потому, что люди часто ошибаются, а пуре С разрешает программисту слишком многое приходится писать первый и второй вариант кода. И в первом варианте кода каждая строчка оборачивается принтф, а тесты покрывают вообще всё. Конечно, пишется функция, а не целиком софт, в код программы добавляется уже рабочая функция. Ну или несколько ошибок и увольняют. Самолёты когда падают, там ещё люди умирают.
anonymous
()
Ответ на: комментарий от anonymous

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

Иногда что то принципиально новое только так и реализуется, потому что изначально продумать невозможно (времени уйдет больше чем на написание нескольких прототипов). Ну или нет времени, людей итд.

Но в любом случае не выбирать для такого проекта пуре С.

Не всегда позволяют условия задачи.

И в первом варианте кода каждая строчка оборачивается принтф, а тесты покрывают вообще всё.

За тесты лайк. Непонятно чем IDE с отладчиком хуже printf на каждую строку, телодвижений меньше, удобства больше.

MOPKOBKA ★★★★
()

У меня есть 3-е издание K&R

Уже проигрыш. Программирование это творческая профессия. Или дано Богом или нет. Если нужна книжка, то не нужна книжка.

может быть платные/бесплатные курсы пойти
Какие бывают дипломы в этой области

Это уже не просто проигрыш, это заявка на звание лоха. Заплатишь бабки, а на выходе получишь бумажку о прохождении курса. Больше ничего.

Запомни - все эти курсы «войти в айти» это разводка лохов на бабки. Айти стало модным вот мошенники и стригут овечек, которые думают потратить 30к на курсы, а потом рубить 300к в секунду во фронтенде. Так не бывает.

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

Программирование это творческая профессия.

В каком месте?

Или дано Богом или нет.

Дано всем кто без особо сильных отклонений, другое дело что не каждому это интересно.

это заявка на звание лоха.

+100500

MOPKOBKA ★★★★
()

Первым учебником по С я бы рекомендовал

Стивен Прата - Язык программирования C. Лекции и упражнения, 6-е издание

PDF легко найдешь в сети.

А вообще, программирование это ад и погибель. Не советую.

anonymous
()

Не надо ничего изучать, твое призвание - мести двор.

anonymous
()

Забудь про си и unix в контексте зарабатывания денег. Это технологии 80ых.

Сегодня если хочешь си, то это практически в 100% случаев embedded на bare metal и таких контор очень мало и к ним на пушечный выстрел не подпускают жуниоров без 20+ лет опыта и поручителей.

Еще можно быть linux/bsd кернел хакером, но тут даже у старперов могут быть проблемы, не то что у зеленого новичка, советую не лезть. В очень скором будущем ядра популярных ОС будут на C++ и знания именно си в ядре устареют как и сам си.

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

Когда вы собираетесь написать прототип, вы точно знаете, что вам надо написать. Под прототипом подразумевают часто просто большую вероятность, что перепишут логику работы, после того как увидят готовый продукт. И кстати по факту чаще оставляют рабочее решение, оставаясь на языке прототипа, так как зачем всё менять, если и так всё работает. Вот так паскаль часто начинал и выигрывал, пока дестоп был в моде. А сейчас это пых да пайтон. Принципиально неизвестно что надо писать обычно в вебе, там нормально ТЗ «хочу чтобы было как свободная касса, только на странице и пусть бабочки летают и пахнет хлебом». Или же «сделайте нам ИМ, но только мы пока ещё не знаем что мы будем продавать и какой функционал нужен, но вы начинайте». Если код на пуре С будет сбоить, если программисту надо будет в иде смотреть где какое значение у переменной, то такому программисту не будут платить зарплату. Не возьмут его писать реальный код. Всю жизнь будет беслатно на гитхабе пилить не нужный никому софт, с кучей жалоб, что это не компилится. Это не плохо, не хорошо, просто особенность для данного языка, для задач, которые на нём решают. И плохо, что в книгах для новичков об этом обычно не пишут. Есть множество других профессий и языко

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

У вас будет гос тайна

На лоре чувак писал, что ему в Швецию наши военные отдали дорабатывать АФАР для Су-57, с чем он успешно справился. Какая гостайна в Этой стране?

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

я согласен, что в современном мире границы государств, а также многие «тайны» это странные понятия. И логика часто подсказывает, что этого уже нет в эпоху интернета в каждом кармане и авиаперелётов. Но работая на заводе, через несколько лет осознаёшь, что гос тайна есть и некоторые люди целыми днями ходят и смотрят, чтобы ты не нарушал инструкций. Опять же, это не плохо, это просто особенность работы. У иностранцев нечто подобное также есть с такими же проблемами.

anonymous
()

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

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

Программирование это так же и нажимание кнопок в конкретной IDE.

С метапрогом только кнопки и останутся.

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

Я правильно понимаю что твой код это военная тайна?

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

PhysShell Дипломы/сертификаты это хорошо, но ты же понимаешь, что они всё же не гарантируют трудоустройство сами по себе. Что-то вроде «Talk is cheap. Show me the code».

Без диплома не возьмут на работу. Только фриланс, нет?

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

С форматирования.

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

Тогда вопрос, если рассматривать второе образование, какой ЯП лучше изучать так что бы это ближе всего было к C? Я так понимаю что это курсы C++, верно?

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

идиотам салам

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

с выбора другого языка, которым не пахнет калом

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

Есть fb2?

Мне еще и погуглить за тебя?

anonymous
()

Зачем вообще IDE? Так сложно что ли написать Makefile для простой проги? Не думаю, что у тебя там что-то сложное. Как писать легко гуглится.

Если Makefile страшно, начни с CMake. Но для простых примеров, по-моему, разницы нет.

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

ты чего не здороваешься, я ж тебе говорю, салам

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

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

Если про необходимость наличия какого-либо диплома в принципе и трудоустройстве в СНГ — не знаю. Максимум есть примеры среди знакомых программистов с неоконченным высшим.

Итог: судя исключительно ПМСМ, далеко не факт, что не возьмут.

P.S. тема о необходимости диплома для программистов не нова, в гугле точно есть.

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

У них нет возможности, сервер то на хостинге с линуксом.

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