CommUnion
@CommUnion
Начинающий разработчик

Стоит ли с C# временно перейти на чистый C?

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

Я изучаю C# , вник в ООП, могу писать простейшие программы, работаю в Visual Studio (разумеется). Читаю книгу ТРОЕЛСЕНА она мне очень нравится, но в ней нет задач...

В последнее время прям-таки загорелся созданием хаков для игр, вообщем работой с процессами, хуками нажатий клавиатуры и все в этом духе. Решил как-то на C# написать простейший макрос для Dota 2 , так там такой жесткий пример с хуками клавиш , что я понял - мне до этого еще далековато.

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

Нашел прекрасную книгу по C - "Язык программирования C. Лекции и упражнения , Стивен Прат" , пробежался по ней, там настоящие задачи после каждой главы, над которыми можно поломать голову.

Да много букв, если коротко: Си процедурный язык, но импонирует мне как маст-хэв настоящего программиста, хотя в C# ООП мне очень нравится и далось (хоть и с трудом, но далось) , есть ли смысл убегать из C# в C на долгий процесс обучения, ради моих целей "взлом процессов" (да простят меня гуру, за эту ужасную формулировку )?
  • Вопрос задан
  • 521 просмотр
Пригласить эксперта
Ответы на вопрос 2
@FreeDobby
Свободный Добби
Врятли стоит начинать изучение языка с написания макросов для игр. И, может со мной не все согласятся, но не учи языки по книгам - мне кажется это какой-то устаревший подход. В интернете есть масса хороших уроков, которые куда понятнее чем сухой текст книги. Например я бы очень советовал уроки на этом сайте. Мне кажется у автора очень понятный стиль изложения информации. Читать легко и описано почти все что есть в языке. Там есть уроки и по другим языкам.

P.S. Ну а что касается перехода на чистый Си, то имхо лучше попробуй все же вникнуть в C#. Чистый Си конечно проще, но он врятли тебе пригодится в жизни (опять же не все согласятся, но на практике C# намного востребованнее).
Ответ написан
kacToHbI4
@kacToHbI4
11 лет anykey - надоело, хочу в разработчики.
На случай если букв много, то просто по пунктам:
1. Начни читать Харви Дейтел, Пол Дейтел. КАК ПРОГРАММИРОВАТЬ НА С и делай оттуда все задачи.
2. Параллельно посмотри весь курс или частично на канале https://www.youtube.com/user/ANTGPRO
3. Постепенно смотри курс CS50 (https://javarush.ru/quests/QUEST_HARVARD_CS50) и делай оттуда задания, по возможности только со стандартными библиотеками Си, не с cs50.h.

Для выполнения задач:
1. Пиши в sublime-text
2. Компилируй если из под винды, то MinGW; если линуха, то gcc (и про 1 и про 2 в уроках GenaANTG есть подробно).

Если хочешь учить язык для какой-то конкретной цели, то это даже лучше и подстегнет, и простимулирует, и мотивирует, но надо трезво оценивать свои возможности, хотелки и расстояние до цели особенно! Не буду подталкивать тебя к какому-то конкретному шагу, но могу просто рассказать какова моя цель и какое расстояние я рассчитал до неё:
Точка отправки (кратко):
Работая в ИТ вот уже 6 лет, полтора года назад я в поисках очередной головоломки для себя абсолютно случайно зашёл на сайт electromost.com/index/soderzhanie_statej_po_raspbe... и меня понесло, причем рубил с плеча: купил сходу RaspberryPI 2, заказал по макетам автора по 5шт. плат радиомодуля и метестанции (потратил суммарно не меньше 15т.р. в течение 2 недель), даже вник в технологию пайки мелких smd компонентов, начал что-то делать по его мануалам и пришел к моменту где он использует Python, html, js - я мог бы пойти простым путем, просто копировать код и продолжать настраивать все по хаутушкам, но мне захотелось понимать код и я пришел на тостер с вопросом Как получить начальные знания HTML, JS и Python? . Здесь прерывается история настройки домашней автоматизации на RPI2.

Следующий этап.
Попав на сайт javarush.ru, я сначала смотрел лекции CS50 и параллельно решил поиграть в java на том же сайте, не помню до какого уровня дошел, но понял что мне много чего непонятно в работе программы, по сути я тупо переписывал код, как-то искал в интернете примеры решения задач и т.п. И сделал пару постов в вк, наподобие https://vk.com/photo2180429_429019262 . И тут вдруг мне пишет один из бывших коллег, он оказывается тоже увлекся программированием, но на СИ. Он меня убедил попробовать посмотреть курсы на youtube - GenaANTG Программирование на си и вообще начать изучение именно с СИ, поскольку там можно понять как работает комп, как работает память и как ей управлять и т.д. и т.п. На канале этого GenaANTG он очень доходчиво объясняет что к чему, очень интересно подходит к объяснению нюансов, но тоже для полноты картины чего-то не хватало.

Третий этап.
У меня неожиданно появилась четкая цель! Я не забил на систему домашней автоматизации, нет! Просто отложил и думал, вот погружусь глубже в программирование и буду разбираться лучше. Вот здесь то и появилась цель, я хочу написать на Си большой программный комплекс для домашней автоматизации с неким виртуальным помощником или ассистентом если хотите.
Я смотрю курсы CS50, вместе с ними канал GenaANTG и пытаюсь решать задачи с курса CS50, встал на этапе решения задачи https://javarush.ru/quests/lectures/questharvardcs... Там предлагается использовать их готовую библиотеку для решения определенного ряда задач по курсу, но я захотел пользоваться стандартными библиотеками и пошел на тостер с вопросом Плохо ли смотреть готовый код задач по СИ, чтобы понять как это работает? После этого я решил задачу используя только стандартные библиотеки си, даже по-моему одну stdio.h. И сейчас уже не вспомню как и где я увидел или услышал, а может случайно скачал - я наткнулся на книгу Харви Дейтел, Пол Дейтел. КАК ПРОГРАММИРОВАТЬ НА С. И вот же оно!!!
- Идеальная подача материала!
- Огромное количество задач в конце каждой главы!

Неожиданный момент:
Предложили по знакомству пойти работать стажером SAP. Задумался, задал вопрос на тостере Из support в developer? Остался работать в техподдержке и продолжаю активно учить СИ и английский по мере возможности.

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

P.S. Хоть сам ещё зеленый, но если нужны советы или помощь обращайся (https://vk.com/kactohbi4), возможно ты наступил на те грабли? на которых я хорошо потанцевал)))
Уже успел увидеть пару комментариев, сугубо мое личное мнение: советовать новичку начинать изучать программирование с C++ - это как положить асфальт сразу на газон, пропустив этап подготовки почвы песком, гравием и т.п. и возможно навсегда лишить человека желания обучаться программированию, к C++ на мой взгляд надо придти или перейти, по мне так это просто улучшенный Си, ну а раз так, то начинать надо с основы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы