Źródło obrazu: pixabay.com
Napisałem tego bloga, biorąc pod uwagę, że osoby, które to przeczytają, są absolutnie początkującymi. Ludzie, którzy mają takie doświadczenie, to znaczy niezupełnie zaplecze technologiczne, naprawdę nie mogliby zacząć uczyć się programowania, gdy nie ma nikogo, kto by ich prowadził. Dlatego napisałem ten blog jako uprzejmość. Mówiąc o językach, czym jest dokładnie język wysokiego poziomu i język niskiego poziomu? Dlaczego oni to tak nazywają? A jak bardzo się od siebie różnią?
Nie trzeba dodawać, że opisałem je wszystkie na tym blogu.
Infografiki języków wysokiego poziomu a języków niskiego poziomu
Co to są języki wysokiego poziomu?
Musisz być rzeczą Czym jest język wysokiego poziomu? ale powiedz mi, że są łatwiejsze do zrozumienia i przyjazne dla użytkownika. Za pomocą tych języków można pisać aplikacje, które są przenośne na różnych platformach (takich jak Linux lub Windows) i są niezależne od jakiejkolwiek architektury (takiej jak ARM non-intel lub niesławny Intel). Język wysokiego poziomu Przykład, pisanie programu w Pythonie, który domyślnie działa w dowolnym systemie Linux, a następnie po prostu kompilowanie go do dowolnego pliku exe przy użyciu py2exe, a następnie uruchomienie go w systemie Windows.
Podobne przykłady to Python, C, Fortran lub Pascal. Takie języki są uważane za język wysokiego poziomu, ponieważ są bliżej języków ludzkich i znacznie dalej od języków maszynowych. Kiedy mówię ludzkim językiem, nie mam na myśli tego, o czym rozmawiamy w naszym codziennym życiu. Oznacza to, że kod jest czymś, co możemy zrozumieć, znając podstawy programowania. Napisany kod jest prawie czytelny dla ludzi, co można odczytać i wymówić.
Poniżej podano kilka przykładów języka maszynowego do drukowania prostego programu na ekranie w Fortran i C.
W Fortran:
program NewProgramF90
write(*, *) "This is a printed program"
end program NewProgramF90
Teraz możesz go skompilować za pomocą:
gfortran newprogram.f90 -o newprogram -f90-gcc
A potem po prostu uruchom.
Podobny program w C:
#include
main()
(
printf("This is a printed program");
)
Dla początkujących jest to najłatwiejszy sposób.
Ponieważ jednak mówimy o komputerach, trudno jest zrozumieć komputer. Aby uczynić to sensownym dla komputerów i uruchomić program utworzony w języku wysokiego poziomu, należy go skompilować w języku maszynowym.
Źródło obrazu: github.com
I tu właśnie pojawia się język niskiego poziomu. W przeciwieństwie do wcześniejszych, gdzie było tylko kilka języków wysokiego poziomu, dziś jest n wielu języków wysokiego poziomu, takich jak C, Cobol, FORTRAN, Pascal, Java, Perl, Python, PHP, Ruby, C ++, BASIC i Visual Basic .
Co to są języki niskiego poziomu?
Języki niskiego poziomu to języki, które są bardzo zbliżone do języka maszynowego. Są one również znane jako języki asemblera. Językami najbliższymi po montażu do języka maszynowego są C i C ++. Niektóre osoby nazywają nawet C i C ++ jako języki niskiego poziomu. Kod maszynowy jest znany jako niski poziom, ponieważ w przeciwieństwie do języków programowania wysokiego poziomu, nie potrzebuje niczego innego, jak kompilatorów lub czegoś takiego. Działa bezpośrednio na procesorze i są one bardzo specyficzne dla architektury.
Języki niskiego poziomu są bardziej odpowiednie do opracowywania nowych systemów operacyjnych lub pisania kodów oprogramowania układowego dla mikrokontrolerów. Mogą zrobić wszystko przy odrobinie ciężkiej pracy (konkretnie dużo ciężkiej pracy, ale oczywiście nie będziesz chciał pisać w niej jakiejś dużej aplikacji). Podobnie jest w przypadku C (faktycznie nazywanego jako Cee). C to tak naprawdę bardzo szeroki język na początek. Pozwala na bezpośrednią rejestrację i daje natychmiastowy dostęp do różnych lokalizacji pamięci.
Ale jednocześnie ma wiele konstrukcji, które pozwalają sprzętowi ładować abstrakcję. Szczerze mówiąc, C i C ++ podwójnie reprezentują różnorodność języków, ponieważ większość języków wzięła od nich swoje biblioteki. W praktyce zarówno C, jak i C ++ są niskiego poziomu, jak już mówiłem, ponieważ pisanie aplikacji na poziomie przedsiębiorstwa jest dość trudne. Ale teoretycznie oba są językami wysokiego poziomu.
Polecane kursy
- Profesjonalny kurs bezpieczeństwa IT
- Pakiet szkoleniowy Ruby on Rails
- Profesjonalny kurs CSS
- Kurs online HTML5 i CSS3
Charakterystyka języków wysokiego i niskiego poziomu:
Chodzi o to, że co jakiś czas pytano mnie w różnych wywiadach i innych miejscach, które lubię najlepiej - programowanie na niskim lub wysokim poziomie. Wydaje mi się, że nie ma czegoś takiego jak najlepsze. Odpowiedź jest taka, że oba mają swoją specjalizację i nie można ich zastąpić drugą. Tak więc faktycznie lubię oba.
Programowanie na niskim poziomie jest trudne i wymaga dużego doświadczenia i wiedzy. Funkcje języków wysokiego poziomu mają miejsce tam, gdzie mają miejsce wszystkie kreatywne rzeczy, tj. Aplikacje, z których ludzie korzystają w codziennym życiu, i można je debugować w znacznie łatwiejszy sposób niż na niskim poziomie. Tutaj możesz rozpocząć pracę z niezwykle nowymi technologiami, ponieważ wiele z tych języków jest stale aktualizowanych dzięki wsparciu społeczności.
Jeśli zadasz to pytanie jakimkolwiek programistom języka wysokiego poziomu, co im się podoba, odpowiedź, którą otrzymasz, będzie daleka od tego, czego potrzebujesz. Nie powiedzą ci, co jest lepsze.
Prawdopodobnie powie, że bardziej pasjonują się konkretnym językiem wysokiego poziomu, a nie wszystkimi. Nie wiem, że tak się dzieje. Najbardziej znanymi przykładami są Python i Ruby, a jeśli pokażesz im niektóre programy napisane w asemblerze, prawdopodobnie przejdzie do hasta-la-vista.
Źródło obrazu: mathworks.com
To, co jest naprawdę wspaniałe w wielu językach wysokiego poziomu, to fakt, że należą one do kategorii hybrydowej. Na przykład Python jest niezwykle obiektowy, ale jednocześnie obsługuje również zamknięcia i funkcje pierwszej klasy. Chociaż nie jest tak potężny jak Scala, ale może reprezentować mniej więcej coś takiego, jak język czysto językowy.
Języki wysokiego poziomu są zwykle wolne w porównaniu do języków niskiego poziomu. Wynika to z faktu, że języki wysokiego poziomu mają wiele abstrakcji i warstw kodu, zanim dotrą do samego sprzętu, a ponieważ kod maszynowy jest bliżej, jego przetwarzanie i zwracanie danych wyjściowych jest szybkie. Jeden fragment kodu w Pythonie najprawdopodobniej zostanie przetłumaczony na tysiące wierszy słów maszynowych.
Oczywiście języki wysokiego poziomu są na takim samym poziomie, na którym nie wymaga się surowej wydajności, ponieważ nie można tworzyć tak stabilnych i dużych aplikacji na niskim poziomie, jak na wysokim poziomie. To jedna rzecz, o której warto pamiętać.
Programowanie C - zamieszanie na niskim poziomie / na wysokim poziomie
Chociaż C ma wiele cech podobnych do języka Pascal, czasami jest nadal uważany za język niskiego poziomu, ponieważ obsługuje operacje bitów, wskaźników i bezpośredni dostęp do pamięci. C to w istocie język wysokiego poziomu z włączonymi funkcjami niskiego poziomu. Jest to główny powód, dla którego programiści polegają na C ponad wszystko ze względu na jego niezrównane zalety.
Może wydawać się dziwne, że C, choć traktowany jako język niskiego poziomu, jest niezwykle przenośny. Fanatycznie rzecz biorąc, C jest tak naprawdę rozszerzony, aby używać sprzętu w jego ekstremalnych granicach, jak to możliwe.
Z drugiej strony język asemblera jest mało przenośny. Jednak próba osiągnięcia przenośności jest bardzo ważna w przypadku niskiego poziomu, szczególnie w przypadku Javy, która działa na JVM, czyli na maszynie wirtualnej. C lub Asembler działający na maszynie wirtualnej nigdy nie będzie miał czystego dostępu do sprzętu.
Mówiąc ściślej, język staje się niskim poziomem, jeśli jest specjalnie skonstruowany do działania bezpośrednio na sprzęcie. Języki niskiego poziomu mają bardzo mniej składni, w przeciwieństwie do języków wysokiego poziomu, które zawierają mnóstwo kodów.
Języki o niskim poziomie, które umożliwiają pełny dostęp do sprzętu, byłyby kiepskim wyborem do pisania projektów.
Kiedy używać niskiego poziomu?
Kod maszynowy wygląda mniej więcej tak: działa bardzo szybko, ponieważ jest bardzo blisko sprzętu.
8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD98B
C84AEBF1 5BC3
Powyżej znajduje się funkcja napisana dla architektury 32-bitowej, tj. Kod maszynowy x86 do obliczania liczby Fibonacciego.
Pisanie kodu maszynowego jest bezdyskusyjnie dość irytujące, ponieważ wymaga od czasu do czasu sprawdzania kodów numerycznych dla każdej innej uruchamianej instrukcji. Kto do cholery ma na to czas? I właśnie dlatego narodziło się programowanie niskiego poziomu.
Ale jeśli zapytasz programistów wysokiego poziomu o odpowiedź na pytanie dotyczące programowania niskiego poziomu, odpowiedź brzmi:
Źródło obrazu: pixabay.com
Wniosek
Języki niskiego poziomu mają dodatkową zaletę polegającą na utracie kontroli nad procesorem, ale ich kody są niezwykle trudne do zrozumienia i debugowania przez innych programistów. Każda inna rodzina architektury ma swój własny język asemblera, co oznacza, że kodu napisanego dla jednego z nich nie można uruchomić na drugim. Co w skrócie oznacza, że kod nie jest przenośny.
Zaletą języka wysokiego poziomu jest to, że języki wysokiego poziomu są niezwykle przenośne, a do tego najczęściej używane są do pisania oprogramowania, które może działać na wielu platformach i architekturach. Żadne z nich nie może się zastąpić, ponieważ są dwiema stronami tej samej monety.
Polecane artykuły
Oto kilka artykułów, które pomogą Ci uzyskać więcej informacji na temat języków wysokiego poziomu w porównaniu z językami niskiego poziomu, więc po prostu przejdź przez link.
- Najważniejsze wskazówki Język programowania Haskell
- HTML5 i Flash - Znajdź różnice
- Text Mining vs Natural Language Processing - 5 najlepszych porównań
- 12 najlepszych kroków do zainstalowania języka programowania R (Krótki przewodnik)
- 8 Najlepszy język programowania aplikacji mobilnych, który powinieneś znać
- Ważne informacje o języku programowania Haskell