Czy c++ to język niskiego poziomu ?

0

Tak jak w temacie czy c++ to język niskiego poziomu ?

2

To już jest kwestia tego, kto jak definiuje języki niskopoziomowe/wysokopoziomowe. Generalnie ani C ani C++ nie są niskopoziomowymi językami, posiadają natomiast niskopoziomowe konstrukcje. Ale to dalej abstrakcja, która pozwala na mniej lub bardziej wygodną pracę. Pewnie C czy C++ są na niższym poziomie niż Java czy C#, ale czy to czyni ich językami niskopoziomowymi? Moim zdaniem nie.

Niskopoziomowy jest z pewnością assembler.

1

Niskopoziomowy znaczy blisko kodu maszyny, to będą assemblery, kod maszynowy, czyli języki nie dające w ogóle, lub bardzo mało abstrakcji od instrukcji danej architektury komputera. W tym sensie, C, C++ są językami wysokiego poziomu (nie przypominają kodu maszynowego, abstrachują od niego). Ale, w odróżnieniu od Javy, C#, czy Pythona, w C++ można "ręcznie" manewrować pamięcią (wskaźniki) - daje nam więcej możliwości bycia bliżej maszyny, ale też więcej okazji do strzelenia sobie w stopę:). Kończąc, C, C++ językami niskopoziomowymi nie są.

0

Pojęcie stało się bardzo subiektywnym, zwłaszcza po pojawianiu się macro assemblerów.

0

Jeśli za kryterium przyjmiemy to, jak kod przekłada się na instrukcje procesora, to asembler jest językiem niskopoziomowym a C i C++ - nie, instrukcje są tłumaczone. Z drugiej strony w asemblerach są rozkazy złożone typu call czy scasb , które można zastąpić prostszymi. Poza tym C i C++ dają możliwość np. tworzenia pól bitowych, co jest bezpośrednią organizacją danych w pamięci. Kolejna sprawa to "furtka" w C w postaci funkcji asm.

1

Tak jak powiedzieli przedmówcy to zależy jak zdefiniujemy "niski" i "wysoki" poziom. Niektórzy jeszcze definiują "średni" poziom by oddzielić języki, które pozwalają na bardziej bezpośredni dostęp do pamięci i rozkazów maszyny. Trzeba tu też rozróżnić to, że "procesor" w językach niskiego poziomu niekoniecznie oznacza fizyczny procesor, a jedynie zbiór podstawowych instrukcji jaki dana maszyna obsługuje (taka maszyna może również być wirtualna).

1

Is it true that C++ is low-level? No. C++ offers both low-level and high-level features. C++ has low-level parts, such as pointers, arrays, and casts. These facilities are (almost identical to what C offers) are essential (in some form or other) for close-to-the-hardware work. So, if you want low-level language facilities, yes C++ provides a well-tried set of facilities for you. However, when you don't want to use low-level features, you don't need to use the C++ facilities (directly). Instead, you can rely on higher-level facilities, including libraries. For example, if you don't want to use arrays and pointers, standard library strings and containers are (better) alternatives in many cases. If you use only low-level facilities, you are almost certainly wasting time and complicating maintenance without performance advantages (see Learning Standard C++ as a New Language). You may also be laying your systems open to attacks (e.g. buffer overflows).

Źródło: Bjarne Stroustrup's FAQ

1 użytkowników online, w tym zalogowanych: 0, gości: 1