Jeśli to niewłaściwe miejsce do zadawania tego pytania, daj mi znać.
Z zawodu jestem programistą Python. Bardzo chciałbym nauczyć się C. Rzeczywiście, próbowałem wiele razy, ale zawsze mnie zniechęcają. W Pythonie piszesz kilka wierszy, a program robi cuda. W C nie mogę zrobić nic przydatnego.
Połączenie z Internetem wydaje się bardzo skomplikowane.
Czy masz jakieś sugestie dotyczące tego, co mogę zrobić, aby nauczyć się języka C? Czy są jakieś dobre strony internetowe? Jakieś fajne projekty?
Dzięki
Odpowiedzi:
Nie zniechęcaj się.
Python jest językiem programowania wysokiego poziomu. W porównaniu do C potrafi tworzyć cuda w niewielkiej ilości kodu. Nie zaczynaj od próby naśladowania wyników Pythona w C - natychmiast zostaniesz zniechęcony. Programowanie w C wymaga innego stylu myślenia i zrozumienia, ponieważ podczas interakcji z komputerem na bardziej intymnym poziomie. Oto dobry punkt wyjścia do nauki C:
Książki
Materiał online
źródło
Jeśli chcesz nauczyć się języka C, nie zaczynaj od połączenia z Internetem. Możesz to zrobić w dowolnym innym języku. To nie jest najważniejsze w C.
Zamiast spojrzeć na wskaźniki, tablic, referencje, w tym elemencie C Tutorial . Pomoże Ci to zrozumieć zarządzanie pamięcią i wiele funkcji, które „przybliżają cię do maszyny”.
Jeśli możesz nauczyć się i zrozumieć ten materiał, przyjrzyj się, jak rozwinąć się w możliwy projekt. Te koncepcje są podstawą każdego profesjonalnego programowania w języku C.
Ten samouczek ze wskaźnikami również wydaje się pomocny.
źródło
C_Tutorial
link jest uszkodzony ...To jest bardzo skomplikowane, aby połączyć się z internetem! Pomyśl o tym:
Komputer może mieć wiele sposobów łączenia - WLAN, Bluetooth, Ethernet itp. Każde z nich ma własne ustawienia, które należy ustawić. Masz szczęście, że istnieją już standardy i sterowniki dla tych ... korzystanie z nich może być o wiele trudniejsze niż jest teraz.
Adresami IP mogą być IPv4 lub IPv6 i musisz być w stanie obsłużyć oba.
W systemie mogą być skonfigurowane serwery proxy.
Musisz obsługiwać FTP, HTTP lub inny protokół.
Może być konieczne użycie połączenia dial-up, więc musisz podać książkę telefoniczną z hasłami i numerami telefonów, jeśli nie masz jeszcze połączenia. To samo dotyczy nazw użytkowników / haseł WLAN.
Być może będziesz musiał pracować z plikami cookie.
System może buforować niektóre dane, więc chcesz użyć pamięci podręcznej, czy nie?
A lista jest długa.
Tak więc fakt, że łatwo to zrobić za pomocą Pythona, oznacza, że wiele z nich jest przed tobą ukrytych (lub trudnych do ustawienia), więc zamieniasz prostotę na moc. Biblioteka C jest odwrotna: ma całą moc, której potrzebujesz (możesz łatwo wykonywać wywołania systemowe), ale nie ma żadnych ustawień domyślnych (ani, w rzeczywistości, żadnych funkcji łączenia się z Internetem).
Zamiast myśleć o C jako nużącym, pomyśl o tym, że jest potężny. Ale w każdym razie nie próbuj się z nim łączyć z Internetem - to cholernie trudne zadanie. Zamiast rozpocząć uczenie się, jak korzystać z biblioteki do bardziej podstawowych zadań (np plik I / O), dowiedzieć się, jak wskaźniki i tablice naprawdę działa, a gdy nauczysz się tych wszystkich, następnie spróbuj rozwiązywaniu dużych projektów. W ten sposób docenisz także Python. :)
Edytuj :
Osobiście sugeruję, że jeśli masz wolny czas, najpierw naucz się języka C #. Gdy tylko poczujesz się komfortowo, zacznij uczyć się o tym
unsafe
słowie kluczowym i jak korzystać ze wskaźników i przeprowadzać marshaling w C #. Nadal będziesz mieć naprawdę dużą bibliotekę do pracy, tak jak w Pythonie, ale będziesz mógł robić wiele rzeczy, które możesz zrobić w C. Następnie przejdź do ręcznego wywoływania API systemu (np. InternetOpen ) i naucz się jak sprawić, by działały. Nadal będziesz mieć dużą elastyczność, ale otrzymasz świetne wprowadzenie do koncepcji niższego poziomu. Po wykonaniu tych, następnie rozpocznij naukę C - wtedy okaże się, że to bułka z masłem, a zobaczysz (C? rozumiesz?) zalety i wady języków wysokiego i niskiego poziomu, i będziesz w stanie znaleźć ten, który odpowiada Twoim potrzebom.To powiedziawszy, myślę, że A Crash Course w C może być przydatny jako punkt wyjścia do skoku do
morzaC.źródło
Nie czytaj kodu jądra podczas nauki C. Jest pełen sztuczek, aby wycisnąć z niego każdą ostatnią wydajność. Niektóre z nich są bardzo niestandardowe. Doprowadzi cię to do szaleństwa.
Zamiast tego spójrz na kilka małych projektów o wysokiej jakości kodu:
źródło
Jednym z celów języka wyższego poziomu jest ukrywanie skomplikowanych rzeczy. Jeśli chcesz nauczyć się języka „niższego” poziomu i nie chcesz zaczynać od naprawdę skomplikowanych rzeczy (które wcześniej były głównie przed tobą ukryte); spróbuj rozpocząć od prostszych projektów edukacyjnych, sortuj tablicę liczb lub odwróć ciąg znaków lub kilka takich ...
Łatwiej jest wspiąć się na strome wzgórze, stawiając małe kroki.
źródło
Jeśli chodzi o fajne projekty do obejrzenia: jądra uniksowe są napisane w C.
źródło
Naucz się gramatyki C najpierw, a następnie użyj jej do napisania struktury danych i algorytmu. Oczywiście możesz czytać jądro Linuksa jako ekspert języka C.
źródło