Навчання програмуванню на C (приходить від Python) [закрито]


22

Якщо це неправильне місце, щоб задати це питання, будь ласка, дайте мені знати.

Я програвач Python за професією. Мені б хотілося навчитися C. Дійсно, я багато разів намагався, але завжди знемагаю. У Python ви пишете кілька рядків, і програма творить чудеса. У С я не можу зробити щось корисне.

Здається, дуже навіть складно підключитися до Інтернету.

Чи є у вас якісь пропозиції щодо того, що я можу зробити, щоб вивчити C? Чи є хороші веб-сайти? Якісь круті проекти?

Спасибі


4
Приємно вміти стояти на плечах генія, чи не так. Перекладач Python написаний на C. Тепер ви по-справжньому вдячні за те, що насправді зробили дизайнери. Це досить fing дивовижно.
Пемдас

@Pemdas C зазвичай використовується для створення системних програм.
Моррок

Можливо, я б рекомендував почати з читання вмісту файлу та, можливо, зробити базове перетворення в інший файл? Приклад: візьміть CSV та розберіть його у файлі з обмеженими вкладками. Крім того, ви можете дізнатися, як читати інформацію заголовка з BMP-файлу зображення JPEG.
Джошуа Бернс

Я спізнююсь додати відповідь, але є це онлайн- буклет C для програм Python Programs . Також виробники програми "Навчіться програмувати важкий шлях" складають книгу під назвою " Learn C the Hard Way ", яка спрямована на людей, які вже знають трохи пітона або подібного.
naught101

Відповіді:


31

Не відволікайтеся.

Python - мова програмування високого рівня. Порівняно з C, він може творити чудеса в невеликій кількості коду. Не починайте намагатися імітувати результати Python в C - ви будете негайно знемагати. Програмування на C вимагає іншого стилю мислення та розуміння, оскільки ви взаємодієте з комп'ютером на більш інтимному рівні. Ось хороша відправна точка для вивчення C:

Книги

Інтернет-матеріал


1
Чи можете ви запропонувати вправу програмування? Щось корисне бажано. Спасибі.
Honza Pokorny

12

Якщо ви хочете вивчити C, не починайте з'єднання з Інтернетом. Це можна зробити будь-якою іншою мовою. Це не те, що найважливіше в C.

Замість цього подивіться вказівники, масиви, посилання, структури в цьому навчальному посібнику . Це допоможе вам зрозуміти управління пам’яттю та багато функцій, які «наближають вас до машини».

Якщо ви можете навчитися та зрозуміти цей матеріал, то погляньте на розширення можливого проекту. Ці концепції є основними для будь-якого реального професійного програмування на С.

Цей підручник з покажчиком також виглядає корисним.


C_Tutorialпосилання зламана ...
user3768495

11

Це буде дуже складно підключитися до інтернету! Подумай над цим:

  • На вашому комп'ютері може бути декілька способів підключення - WLAN, Bluetooth, Ethernet і т. Д. Кожен із них має власні налаштування, які потрібно встановити. Вам пощастило, що для них вже є стандарти та драйвери ... використовувати їх може бути набагато складніше, ніж це вже зараз.

  • IP-адреси можуть бути IPv4 або IPv6, і вам потрібно вміти обробляти обидва.

  • Для проксі можуть бути налаштовані проксі-сервери.

  • Ви повинні підтримувати FTP, HTTP або якийсь інший протокол.

  • Можливо, вам доведеться скористатися набором доступу, тому вам доведеться вказати телефонну книгу з паролями та номерами телефону, якщо ви ще не підключені. Діто з іменами / паролями WLAN.

  • Можливо, вам доведеться працювати з файлами cookie.

  • Система може кешувати деякі дані, тому ви хочете використовувати кеш чи ні?

і список продовжується і продовжується.

Тож факт, що це легко зробити з Python, обов'язково означає, що багато цього приховано від вас (або важко встановити), тому ви торгуєте простотою для влади. Бібліотека C - навпаки: вона має всю необхідну потужність (ви можете легко виконувати системні дзвінки), але не має за замовчуванням (або, власне, жодних функцій для підключення до Інтернету).

Замість того, щоб вважати С як нудним, подумайте про це як про сильний. Але в будь-якому випадку не намагайтеся підключитися до Інтернету з цим - це досить чортово важко. Натомість почніть вивчати, як використовувати бібліотеку для більш основних завдань (наприклад, введення / виводу файлів), дізнайтеся про те, як реально працюють покажчики та масиви, а коли ви навчитесь усім цим, то спробуйте вирішити великі проекти. Ви ще більше оціните Python. :)


Редагувати :

Я особисто пропоную, якщо у вас є вільний час, навчіться замість C # спершу. Як тільки вам стане комфортно, почніть дізнаватися про unsafeключове слово та як користуватися покажчиками та виконувати маршалінг на C #. У вас все ще буде дійсно велика бібліотека, з якою можна працювати, як, наприклад, з Python, але ви зможете зробити багато речей, які ви можете зробити в C. Потім перехід до виклику системного API вручну (наприклад, InternetOpen ), і вчитися як змусити тих працювати. У вас ще буде велика гнучкість, але ви отримаєте чудове ознайомлення з поняттями нижчого рівня. Після того, як ви зробили це, то почніть вивчати C - тоді ви виявите, що це шматок пирога, і ви побачите (C? дістаєте?) переваги та недоліки мов високого та низького рівня, і ви зможете щоб знайти той, який відповідає вашим потребам.

З цього приводу , я думаю, що курс на аварію на C може бути корисним як відправна точка для стрибка в море С.


8

Не читайте код ядра, коли ви вивчаєте C. Повно хитрощів видавити з нього кожен останній шматочок продуктивності. Деякі з них дуже нестандартні. Це вас зведе з розуму.

Натомість погляньте на кілька невеликих проектів високої якості:

  • Lua - Якщо вас не цікавлять мови програмування, ви можете пропустити цю. В іншому випадку це дійсно красивий код і дивовижно бачити, наскільки вони досягають за так мало (те, що вам здається розчарованим, оскільки ви родом з Python).
  • ZeroMQ - Я люблю цей проект. Це легка, надшвидка черга з повідомленнями. Знову ж таки, якісні речі.
  • DarkHttpd - лінійний веб-сервер 2700 в C. Розкриває кілька цікавих тем, таких як програмування сокетів, розбір та робота з протоколами.

0

Одна мета мови вищого рівня - приховати складні речі. Якщо ви хочете вивчити мову "нижчого" рівня, і не хочете починати з дійсно складних речей (які раніше в основному були приховані від вас); спробуйте почати з декількох простіших навчальних проектів, сортування масиву чисел, або перетворення рядка символів, або деяких таких ...

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



-3

Спочатку вивчіть граматику C, а потім використовуйте її для запису структури даних та алгоритму. Звичайно, ви можете читати Linux ядро, як ви знаєте мову.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.