Cechy programowania C, które czynią go wyjątkowym (i lepszym)

  • Michael Fisher
  • 0
  • 4958
  • 654
Reklama

Język programowania C jest matką wszystkich współczesnych języków programowania 10 języków programowania, których prawdopodobnie nigdy nie słyszałeś 10 języków programowania, których prawdopodobnie nigdy nie słyszałeś Istnieją pewne bardzo dziwne i dziwne języki programowania, które zmieniły logikę na głowie i nadal zdołały zostać zgodne z nauką o komunikacji z komputerem. Idziesz do… . Prawie każdy używany język zawiera kilka funkcji, które po raz pierwszy pojawiły się w języku C. Jest szeroko stosowany do pisania oprogramowania dla najmniejszych wbudowanych mikrokomputerów na największych komputerach mainframe i superkomputerach.

Aplikacje napisane w zakresie C w szerokiej gamie - od oprogramowania systemowego, oprogramowania komputerowego, oprogramowania korporacyjnego, baz danych itp. Bardzo dobrze byłoby rozpocząć karierę programistyczną 10 zadań związanych z programowaniem komputerowym, które są na żądanie 10 zadań związanych z programowaniem komputerowym, które są obecnie Popyt w tej chwili Ponieważ znalezienie pracy programistycznej może być trudne w obecnym krajobrazie, rozważ skupienie się na jednej z poniższych koncentracji, aby zwiększyć swoje szanse na sukces. ze znajomością podstaw języka C..

Krótka historia C.

Rozwój języka C jest bardzo ściśle związany z Uniksem. Został opracowany około 1972 roku, a kolejne uzupełnienia wprowadzono w późniejszych latach.

Przed opracowaniem C opracowano system operacyjny Unix dla komputera PDP-7 przy użyciu jego języka asemblera. Później kompilator dla C został zbudowany na tej platformie, ponownie przy użyciu języka asemblera. W tym czasie C został zaprojektowany, aby ułatwić rozwój samego Uniksa. Za pomocą tego kompilatora Unix został całkowicie przepisany w C dla komputera PDP-11. I znowu, kompilator języka C został przepisany w C (pomógł oczywiście znakomity) leksykon i Yacc narzędzia), tym samym kończąc proces ładowania początkowego C / Unix.

Głównym powodem, dla którego Unix został przepisany w C, była przenośność. Ponieważ języki asemblera dla różnych architektur procesorów Krótki przewodnik po fantastycznym procesorze AMD Threadripper Krótki przewodnik po fantastycznym procesorze AMD Threadripper AMD był na pustkowiu CPU przez kilka lat, ale powrócił z ogromnym hukiem. AMD Threadripper to jeden z najpotężniejszych procesorów konsumenckich na rynku, ale czy jest dla Ciebie odpowiedni? są różne, przeniesienie systemu operacyjnego Unix do każdego z nich byłoby dużym wysiłkiem. Opracowując język systemów takich jak C i przepisywanie uniksowego systemu operacyjnego w C, wysiłek ten został zmniejszony o kilka rzędów wielkości.

Po opracowaniu języka uznano, że można go pisać znacznie więcej niż oprogramowanie systemowe. I tak, C zaczął być używany do pisania oprogramowania, takiego jak serwery plików, serwery baz danych, stosy sieciowe, oprogramowanie komputerowe (i nowsze) serwery sieciowe Jak zamienić urządzenie z Androidem w serwer WWW Jak zamienić urządzenie z Androidem w Internet Serwer Chcesz hostować prostą stronę internetową bez drogiego planu hostingowego? Oto jak hostować witrynę na telefonie lub tablecie z Androidem. itp.

W 1978 roku Brian Kernighan i Dennis Ritchie opublikowali książkę Język programowania C.. Ta książka służyła jako nieformalna C Specyfikacja języka przez wiele lat do 1989 r., kiedy C został formalnie ustandaryzowany przez ANSI. Najnowsza wersja C to C11, opublikowana w 2011 roku.

Przyjrzyjmy się teraz niektórym cechom C, które czynią go wyjątkowym.

C vs C ++: czy są powiązane?

Ponieważ w C opracowano bardziej złożone oprogramowanie, uznano, że koncepcje obiektowe, w tym enkapsulacja, polimorfizm itp., Pomogą w zarządzaniu złożonością. Doprowadziło to do opracowania C ++ jako superset C.

C ++ został zbudowany przez dodanie pewnych funkcji do pisania oprogramowania zorientowanego obiektowo, przy jednoczesnym zachowaniu zgodności z C. Został opracowany z myślą o progresywne ulepszanie - wprowadzanie zgodnych zmian w języku C, aby moduły C i C ++ mogły być łączone w tym samym programie i kompilowane z tym samym kompilatorem. Umożliwiło to ponowne użycie starszych modułów opartych na języku C z minimalnymi zmianami w większym programie napisanym przy użyciu koncepcji obiektowych.

Program w języku C może teoretycznie zostać skompilowany przez kompilator C ++ bez konieczności wprowadzania jakichkolwiek zmian. W praktyce jednak bardziej rygorystyczne sprawdzanie typu wymuszone przez C ++ powoduje błędy, wymagające pewnych zmian w kodzie.

Mała liczba słów kluczowych

Język C, pomimo swojej mocy, był małym językiem. Jest tak, ponieważ deklaruje tylko 32 słowa jako słowa kluczowe o określonym znaczeniu. Natomiast C ++ deklaruje 82 słowa kluczowe, java ma 50 zarezerwowanych słów kluczowych, a javascript ma 63. A COBOL deklaruje aż 357 słów kluczowych. Wyobraź sobie ból głowy związany z pamięcią i unikaniem tak dużej liczby słów kluczowych!

Brak jawnego typu ciągu

W przeciwieństwie do większości innych współczesnych języków Aby zbudować aplikację na Androida, musisz nauczyć się tych 7 języków programowania Aby zbudować aplikację na Androida, musisz nauczyć się tych 7 języków programowania Który język programowania jest odpowiedni do tworzenia aplikacji na Androida? Wszystko zależy od historii programowania i języków, w których czujesz się najlepiej. Na szczęście masz opcje. takich jak Java, C ++ i JavaScript, C nie zapewnia osobnego typu dla ciągów. Ciąg jest uważany za tablicę znaków zakończoną znakiem 0 znaków (oznaczony “\ 0”). Długość łańcucha jest oznaczona konwencją: liczba znaków do 0 znaków. Możesz go zignorować i policzyć lub przechować obok “\ 0”. Ten brak odpowiedniego typu łańcucha i konwencji spowodował niezliczone błędy w ciągu lat, znane jako Przepełnienie bufora.

W rzeczywistości pierwszy robak, który kiedykolwiek trafił do Internetu, robak Morris Internet, był wynikiem takiego błędu w kluczowym oprogramowaniu systemowym znanym jako demon palca.

Oto przykład takiego błędu. Pokazuje, jak łatwo wprowadzić takie błędy w programie. Program kompiluje się poprawnie, ale ulega awarii z powodu przepełnienia bufora.

# include main () char * buf = "hello world"; buf [12] = „a”; printf ("% s \ n", buf);  

Natomiast większość współczesnych języków zapewnia wyraźny typ łańcucha, który uniemożliwia takie shenanigany. Nawet C ++, który dobrze kompiluje powyższy kod, zapewnia wyraźne std :: string rodzaj.

Manipulacja wskaźnikiem

Wskaźnik to odniesienie do lokalizacji w pamięci. C jest całkowicie elastyczny, jeśli chodzi o odczyt i zapis dowolnych lokalizacji pamięci. Ta elastyczność wiąże się z dużymi kosztami i była przyczyną wielu błędów w całym spektrum oprogramowania. Najbardziej godne uwagi i wpływające na cały Internet obejmują takie błędy w serwerach sieciowych, serwerach pocztowych i serwerach ftp. Nawet dzisiaj czasami pojawiają się wiadomości o błędach spowodowanych odniesieniami i aktualizacją nieprawidłowych lokalizacji pamięci.

Niesławny SSL HeartBleed błąd bezpieczeństwa wykryty w 2014 r. był wynikiem niewłaściwego zarządzania lokalizacjami wskaźników i ilustruje kluczowe znaczenie prawidłowego zarządzania wskaźnikami w C.

Nawet sporadyczne BSOD (“niebieski ekran śmierci”) błędy widoczne w systemach Windows są również prawdopodobnie spowodowane nieprawidłową obsługą wskaźnika.

Języki inne niż C ++ nie pozwalają na manipulowanie wskaźnikami, a zatem nie są podatne na błędy tej klasy.

Tablice i wskaźniki są wymienne

W tablicy C odniesienia i wskaźniki są wymienne. Język zezwala na użycie odwołania do tablicy. Jak korzystać z tablicy Java ArrayList Jak korzystać z tablicy Java ArrayList Arraylist Java jest uniwersalną tablicą o zmiennym rozmiarze. Zapewnia większość udogodnień ogólnie oczekiwanych od tablic w innych językach. W tym artykule nauczysz się konfigurować i korzystać z tablicy arraylist. gdzie wymagany jest wskaźnik i odwrotnie. Chociaż pozwala to na potężną manipulację, spowodowało również wiele niesławnych błędów.

Szerokie zastosowanie “definiować” Makra

Makra są używane do zastąpienia nazwy innym rozszerzeniem. Można ich użyć do zmiany definicji nazwy w czasie kompilacji lub do zastąpienia dłuższego rozwinięcia prostą nazwą. Obsługuje system makr C. ifdef warunkowe, które umożliwiają kompilację warunkową. Jest to jeden ze sposobów przenoszenia oprogramowania na różne architektury i systemy operacyjne. Nazwy ogólne są definiowane i zastępowane w czasie kompilacji różnymi rozszerzeniami dla różnych warunków.

Możliwe jest także włączenie lub wyeliminowanie kompilacji całych sekcji kodu za pomocą tych makr. Czy klawiatura Razer? Nagrywanie makr jest łatwe dzięki Synapse Masz klawiaturę Razer? Nagrywanie makr jest łatwe dzięki Synapse Jeśli korzystasz z urządzeń peryferyjnych Razer, ale nie korzystasz z oprogramowania Synapse, nie możesz tego zrobić. Oto, jak efektywnie korzystać z makr i jak mogą one doładować Twoją grę. .

Są przestarzałe, ale dostępne w C ++. Inne języki, takie jak Java, JavaScript, python itp., Nie zapewniają podobnej funkcji.

Moduły zamknięte w plikach

C nie ma pojęcia klasy, a zatem nie popiera pojęcia odrębnej widoczności publicznej, prywatnej i chronionej. Jedynym enkapsulacją zapewnianą przez C jest enkapsulacja plików. Funkcje, zmienne globalne i typy zdefiniowane w pliku źródłowym są widoczne w tym pliku tylko, jeśli nazwy nie zostaną wyeksportowane. Słowa kluczowe statyczny i zewnętrzny są dostarczane w celu kontrolowania widoczności nazw zmiennych i funkcji.

Natomiast inne języki, takie jak C ++, Java i Python, ogólnie obsługują klasy oraz enkapsulację związaną z klasami.

Biblioteki zewnętrzne

Inne niż podstawowe konstrukcje językowe, bardziej złożone funkcje w C są delegowane do bibliotek zewnętrznych. Biblioteki zewnętrzne zapewniają manipulację ciągami, matematykę, dane wejściowe-wyjściowe, tworzenie sieci itp. W przeciwieństwie do innych języków, zwykle ma dobrze wyposażoną bibliotekę modułów z samym językiem.

Obejmuje to niektóre podstawowe cechy języka C, szczególnie te, które odróżniają go od innych języków.

Czy pracowałeś z C? Podobało ci się, czy wolałbyś pracować z innym językiem? Proszę wyjaśnić w komentarzach poniżej.




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.